├── .eslintrc.json ├── .gitignore ├── .prettierrc ├── LEARN.md ├── LICENSE ├── README.md ├── next.config.mjs ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── public ├── default-appAsset.png ├── default-avatar.png ├── favicon-dev.ico ├── favicon.ico └── lanyard-logo.png ├── src ├── app │ ├── globals.css │ ├── hooks │ │ └── useTime.ts │ ├── layout.tsx │ ├── not-found.tsx │ ├── page.tsx │ ├── profile │ │ └── [id] │ │ │ ├── error.tsx │ │ │ └── page.tsx │ └── template.tsx ├── components │ ├── activities.tsx │ ├── details.tsx │ ├── icons │ │ └── github.tsx │ ├── skeletons.tsx │ ├── social-links.tsx │ ├── timestamps.tsx │ └── ui │ │ ├── background-noise.tsx │ │ ├── evervault-card.tsx │ │ ├── input.tsx │ │ └── spotlight.tsx └── utils │ ├── activity.ts │ ├── cn.ts │ ├── discord-cdn.ts │ ├── lanyard.ts │ └── types.ts └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .vscode 21 | .DS_Store 22 | *.pem 23 | 24 | # debug 25 | npm-debug.log* 26 | yarn-debug.log* 27 | yarn-error.log* 28 | 29 | # local env files 30 | .env*.local 31 | 32 | # vercel 33 | .vercel 34 | 35 | # typescript 36 | *.tsbuildinfo 37 | next-env.d.ts 38 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["prettier-plugin-tailwindcss"] 3 | } 4 | -------------------------------------------------------------------------------- /LEARN.md: -------------------------------------------------------------------------------- 1 | # Learning resource 2 | 3 | - [Learn Next.js | Next.js by Vercel - The React Framework](https://nextjs.org/learn) 4 | - [Frontend Masters](https://frontendmasters.com/) 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Zai Santillan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |

Lanyard Visualizer

3 | An interactive example of how you could use Lanyard API to create amazing real-time Discord status related things! 4 |
5 | 6 |
7 | 8 |
9 | 10 | discord card profile 11 | 12 |
13 | 14 |
15 | 16 | ### Features 17 | 18 | - Spotify integration 19 | - It will display what you're listening, it'll show a progress bar just like the one on your Discord profile! 20 | - Every RPCs work! 21 | - If there's something visible on your status (only RPCs), it's visible here too! 22 | - Everything is real-time! 23 | - We use Lanyard's WebSocket so everything is updated in real-time! 24 | 25 | See [figma](https://www.figma.com/file/ShikDN3EN1uAajmu0yJsWi/lanyard-visualizer?type=design&node-id=0%3A1&mode=design&t=jUlkOCK9urCzOp39-1) file. 26 | 27 | ## Tech Stack & Tools 28 | 29 | - Next.js / TypeScript 30 | - TailwindCSS 31 | - Aceternity UI 32 | - Figma 33 | 34 | ## Libraries 35 | 36 | - [use-lanyard](https://github.com/alii/use-lanyard) 37 | - [framer/motion](https://github.com/framer/motion) 38 | 39 | ## API 40 | 41 | - [Phineas/lanyard](https://github.com/Phineas/lanyard) 42 | - [Discord Assets CDN/API](https://gist.github.com/dustinrouillard/04be36180ed80db144a4857408478854) 43 | 44 | ## Demo 45 | 46 | lanyard-visualizer 47 | 48 | 49 | https://github.com/plskz/lanyard-visualizer/assets/57343545/e3aa0547-d711-4442-8d73-7ee7ae3746bc 50 | 51 | ### Inspiration 52 | 53 | - [eggsy/lanyard-visualizer](https://github.com/eggsy/lanyard-visualizer) 54 | - [pxseu/lanyard-ui](https://github.com/pxseu/lanyard-ui) 55 | -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | images: { 4 | remotePatterns: [ 5 | { 6 | protocol: 'https', 7 | hostname: 'cdn.discordapp.com', 8 | }, 9 | { 10 | protocol: 'https', 11 | hostname: 'i.scdn.co', 12 | }, 13 | { 14 | protocol: 'https', 15 | hostname: 'dcdn.dstn.to', 16 | }, 17 | { 18 | protocol: 'https', 19 | hostname: 'i.imgur.com', 20 | }, 21 | { 22 | protocol: 'https', 23 | hostname: 'media.discordapp.net', 24 | }, 25 | ], 26 | }, 27 | logging: { 28 | fetches: { 29 | fullUrl: true, 30 | } 31 | } 32 | } 33 | 34 | export default nextConfig 35 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lanyard-visualizer", 3 | "author": "plskz", 4 | "version": "0.1.0", 5 | "private": true, 6 | "scripts": { 7 | "dev": "next dev", 8 | "build": "next build", 9 | "start": "next start", 10 | "lint": "next lint" 11 | }, 12 | "dependencies": { 13 | "@vercel/analytics": "^1.3.2", 14 | "@vercel/speed-insights": "^1.0.14", 15 | "clsx": "^2.1.1", 16 | "discord-markdown": "^2.5.1", 17 | "framer-motion": "^11.11.11", 18 | "next": "14.2.15", 19 | "react": "^18.3.1", 20 | "react-dom": "^18.3.1", 21 | "tailwind-merge": "^2.5.4", 22 | "tailwind-scrollbar-hide": "^1.1.7", 23 | "use-lanyard": "^1.5.2" 24 | }, 25 | "devDependencies": { 26 | "@tailwindcss/postcss": "^4.0.0", 27 | "@types/node": "^20.17.6", 28 | "@types/react": "^18.3.12", 29 | "@types/react-dom": "^18.3.1", 30 | "eslint": "^9.14.0", 31 | "eslint-config-next": "14.2.15", 32 | "postcss": "^8.4.47", 33 | "prettier": "^3.3.3", 34 | "prettier-plugin-tailwindcss": "^0.6.11", 35 | "tailwindcss": "^4.0.0", 36 | "typescript": "^5.6.3" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@vercel/analytics': 12 | specifier: ^1.3.2 13 | version: 1.3.2(next@14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) 14 | '@vercel/speed-insights': 15 | specifier: ^1.0.14 16 | version: 1.0.14(next@14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) 17 | clsx: 18 | specifier: ^2.1.1 19 | version: 2.1.1 20 | discord-markdown: 21 | specifier: ^2.5.1 22 | version: 2.5.1 23 | framer-motion: 24 | specifier: ^11.11.11 25 | version: 11.11.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 26 | next: 27 | specifier: 14.2.15 28 | version: 14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 29 | react: 30 | specifier: ^18.3.1 31 | version: 18.3.1 32 | react-dom: 33 | specifier: ^18.3.1 34 | version: 18.3.1(react@18.3.1) 35 | tailwind-merge: 36 | specifier: ^2.5.4 37 | version: 2.5.4 38 | tailwind-scrollbar-hide: 39 | specifier: ^1.1.7 40 | version: 1.1.7 41 | use-lanyard: 42 | specifier: ^1.5.2 43 | version: 1.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 44 | devDependencies: 45 | '@tailwindcss/postcss': 46 | specifier: ^4.0.0 47 | version: 4.0.0 48 | '@types/node': 49 | specifier: ^20.17.6 50 | version: 20.17.6 51 | '@types/react': 52 | specifier: ^18.3.12 53 | version: 18.3.12 54 | '@types/react-dom': 55 | specifier: ^18.3.1 56 | version: 18.3.1 57 | eslint: 58 | specifier: ^9.14.0 59 | version: 9.14.0(jiti@2.4.2) 60 | eslint-config-next: 61 | specifier: 14.2.15 62 | version: 14.2.15(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3) 63 | postcss: 64 | specifier: ^8.4.47 65 | version: 8.4.47 66 | prettier: 67 | specifier: ^3.3.3 68 | version: 3.3.3 69 | prettier-plugin-tailwindcss: 70 | specifier: ^0.6.11 71 | version: 0.6.11(prettier@3.3.3) 72 | tailwindcss: 73 | specifier: ^4.0.0 74 | version: 4.0.0 75 | typescript: 76 | specifier: ^5.6.3 77 | version: 5.6.3 78 | 79 | packages: 80 | 81 | '@aashutoshrathi/word-wrap@1.2.6': 82 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 83 | engines: {node: '>=0.10.0'} 84 | 85 | '@alloc/quick-lru@5.2.0': 86 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 87 | engines: {node: '>=10'} 88 | 89 | '@babel/runtime@7.24.5': 90 | resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} 91 | engines: {node: '>=6.9.0'} 92 | 93 | '@eslint-community/eslint-utils@4.4.0': 94 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 95 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 96 | peerDependencies: 97 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 98 | 99 | '@eslint-community/regexpp@4.11.0': 100 | resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} 101 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 102 | 103 | '@eslint-community/regexpp@4.12.1': 104 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 105 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 106 | 107 | '@eslint/config-array@0.18.0': 108 | resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} 109 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 110 | 111 | '@eslint/core@0.7.0': 112 | resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} 113 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 114 | 115 | '@eslint/eslintrc@3.1.0': 116 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 117 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 118 | 119 | '@eslint/js@9.14.0': 120 | resolution: {integrity: sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==} 121 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 122 | 123 | '@eslint/object-schema@2.1.4': 124 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 125 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 126 | 127 | '@eslint/plugin-kit@0.2.0': 128 | resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} 129 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 130 | 131 | '@humanfs/core@0.19.1': 132 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 133 | engines: {node: '>=18.18.0'} 134 | 135 | '@humanfs/node@0.16.6': 136 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 137 | engines: {node: '>=18.18.0'} 138 | 139 | '@humanwhocodes/module-importer@1.0.1': 140 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 141 | engines: {node: '>=12.22'} 142 | 143 | '@humanwhocodes/retry@0.3.1': 144 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 145 | engines: {node: '>=18.18'} 146 | 147 | '@humanwhocodes/retry@0.4.1': 148 | resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} 149 | engines: {node: '>=18.18'} 150 | 151 | '@isaacs/cliui@8.0.2': 152 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 153 | engines: {node: '>=12'} 154 | 155 | '@next/env@14.2.15': 156 | resolution: {integrity: sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==} 157 | 158 | '@next/eslint-plugin-next@14.2.15': 159 | resolution: {integrity: sha512-pKU0iqKRBlFB/ocOI1Ip2CkKePZpYpnw5bEItEkuZ/Nr9FQP1+p7VDWr4VfOdff4i9bFmrOaeaU1bFEyAcxiMQ==} 160 | 161 | '@next/swc-darwin-arm64@14.2.15': 162 | resolution: {integrity: sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==} 163 | engines: {node: '>= 10'} 164 | cpu: [arm64] 165 | os: [darwin] 166 | 167 | '@next/swc-darwin-x64@14.2.15': 168 | resolution: {integrity: sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==} 169 | engines: {node: '>= 10'} 170 | cpu: [x64] 171 | os: [darwin] 172 | 173 | '@next/swc-linux-arm64-gnu@14.2.15': 174 | resolution: {integrity: sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==} 175 | engines: {node: '>= 10'} 176 | cpu: [arm64] 177 | os: [linux] 178 | 179 | '@next/swc-linux-arm64-musl@14.2.15': 180 | resolution: {integrity: sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==} 181 | engines: {node: '>= 10'} 182 | cpu: [arm64] 183 | os: [linux] 184 | 185 | '@next/swc-linux-x64-gnu@14.2.15': 186 | resolution: {integrity: sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==} 187 | engines: {node: '>= 10'} 188 | cpu: [x64] 189 | os: [linux] 190 | 191 | '@next/swc-linux-x64-musl@14.2.15': 192 | resolution: {integrity: sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==} 193 | engines: {node: '>= 10'} 194 | cpu: [x64] 195 | os: [linux] 196 | 197 | '@next/swc-win32-arm64-msvc@14.2.15': 198 | resolution: {integrity: sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==} 199 | engines: {node: '>= 10'} 200 | cpu: [arm64] 201 | os: [win32] 202 | 203 | '@next/swc-win32-ia32-msvc@14.2.15': 204 | resolution: {integrity: sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==} 205 | engines: {node: '>= 10'} 206 | cpu: [ia32] 207 | os: [win32] 208 | 209 | '@next/swc-win32-x64-msvc@14.2.15': 210 | resolution: {integrity: sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==} 211 | engines: {node: '>= 10'} 212 | cpu: [x64] 213 | os: [win32] 214 | 215 | '@nodelib/fs.scandir@2.1.5': 216 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 217 | engines: {node: '>= 8'} 218 | 219 | '@nodelib/fs.stat@2.0.5': 220 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 221 | engines: {node: '>= 8'} 222 | 223 | '@nodelib/fs.walk@1.2.8': 224 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 225 | engines: {node: '>= 8'} 226 | 227 | '@pkgjs/parseargs@0.11.0': 228 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 229 | engines: {node: '>=14'} 230 | 231 | '@rushstack/eslint-patch@1.7.2': 232 | resolution: {integrity: sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==} 233 | 234 | '@swc/counter@0.1.3': 235 | resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} 236 | 237 | '@swc/helpers@0.5.5': 238 | resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} 239 | 240 | '@tailwindcss/node@4.0.4': 241 | resolution: {integrity: sha512-VLFq80IyoV1hsHPcCm1mmlyPyUT6NlovQLoO2y7PGm84mW94ZrNJ7ax5H6K4M7Aj/fdMfem5IX7Ka+LXWZpDGg==} 242 | 243 | '@tailwindcss/oxide-android-arm64@4.0.4': 244 | resolution: {integrity: sha512-hiGUA8d15ynH/LdurQNObnuTjri7i4ApAzhesusNxoz4br7vhZ6QO5CFgniYAYNZvf8Q8wCTBg0nj61RalBeVQ==} 245 | engines: {node: '>= 10'} 246 | cpu: [arm64] 247 | os: [android] 248 | 249 | '@tailwindcss/oxide-darwin-arm64@4.0.4': 250 | resolution: {integrity: sha512-vTca+ysNl8BYmYJTni9pLC+L3S4bvrj0ai1eUV3yYXYa5Cpugr5Fni6ylV0gcTZOyETm2RCCJ/0azU6MgqE6HA==} 251 | engines: {node: '>= 10'} 252 | cpu: [arm64] 253 | os: [darwin] 254 | 255 | '@tailwindcss/oxide-darwin-x64@4.0.4': 256 | resolution: {integrity: sha512-rxPWb5AQJ/aAM/5UDCjaQaMYIcrZHe/Dr9xZu9+P9nJf3WAweNsGi+e+SW9EYGRiF3hkBtP2dvxVNAkTiEbNQQ==} 257 | engines: {node: '>= 10'} 258 | cpu: [x64] 259 | os: [darwin] 260 | 261 | '@tailwindcss/oxide-freebsd-x64@4.0.4': 262 | resolution: {integrity: sha512-UOnRHzlS5V5cxaMgBo6rk1E92tTDUtO/falc9vOpNiRdWhNcofYNN9zvZP63Wuo5FC6/XCyAnJo6OXUm18TwrQ==} 263 | engines: {node: '>= 10'} 264 | cpu: [x64] 265 | os: [freebsd] 266 | 267 | '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.4': 268 | resolution: {integrity: sha512-0Ry9Qfnf22rmJwHxsCFmHQIl5RZw+yOUUGHaqNT42REL8r308cU/bi4UqdrjqVRfAlu51gOGxTRf2NRueczuIA==} 269 | engines: {node: '>= 10'} 270 | cpu: [arm] 271 | os: [linux] 272 | 273 | '@tailwindcss/oxide-linux-arm64-gnu@4.0.4': 274 | resolution: {integrity: sha512-5a7WD30nVdI7Rl1ohZ0Ojj9t5yRnZkJBizvh3uIW52h9UeNpon8TfoknF6rU/TwD32dQ0Cjo5CcCHtQ2wW9PCA==} 275 | engines: {node: '>= 10'} 276 | cpu: [arm64] 277 | os: [linux] 278 | 279 | '@tailwindcss/oxide-linux-arm64-musl@4.0.4': 280 | resolution: {integrity: sha512-m6s5jKSqos07l6NtHFd49Ljcaw4jIWHE7jq6eNPNz9SCzQqRzs4esP1t7jH8UljQ7JffKOl7yZPwK5Nf+irliw==} 281 | engines: {node: '>= 10'} 282 | cpu: [arm64] 283 | os: [linux] 284 | 285 | '@tailwindcss/oxide-linux-x64-gnu@4.0.4': 286 | resolution: {integrity: sha512-K5dBjGHzby9eyUBwy9YHFhKY+5i8fzIBZM1NBWp6L2xpM7OzW9WJDgNcgESkZami9g+EozkQLt3ZmMZHAieXkw==} 287 | engines: {node: '>= 10'} 288 | cpu: [x64] 289 | os: [linux] 290 | 291 | '@tailwindcss/oxide-linux-x64-musl@4.0.4': 292 | resolution: {integrity: sha512-J8sskt+fA5ooq+kxy0Tf4E2TRWZD9Y8j3K+pnBwp9zdilLmSd8OHrB3e0/rO78KveZ6BE9ae75cKOWrT6wONmw==} 293 | engines: {node: '>= 10'} 294 | cpu: [x64] 295 | os: [linux] 296 | 297 | '@tailwindcss/oxide-win32-arm64-msvc@4.0.4': 298 | resolution: {integrity: sha512-flFaaMc77NQbz0Fq73wBs9EH2lX1Oc2Z/3JuxoewpnGHpAGJ/j05tvBNMyTaGrKcHvf/+dk+mCDxb6+PmzGgnQ==} 299 | engines: {node: '>= 10'} 300 | cpu: [arm64] 301 | os: [win32] 302 | 303 | '@tailwindcss/oxide-win32-x64-msvc@4.0.4': 304 | resolution: {integrity: sha512-WzMA0aL/24/JyNrv2Yhr/Og24QGRPWJMjRyCJ4HRoGMs6/8svOQKrnnZ/9LUFwn56irAndFBjWWnlaqykH+g5Q==} 305 | engines: {node: '>= 10'} 306 | cpu: [x64] 307 | os: [win32] 308 | 309 | '@tailwindcss/oxide@4.0.4': 310 | resolution: {integrity: sha512-vPpu30KFLiGyPOoElkYt8WRvzGKVrrOz49KpfiGGtnQGmyUpL8VCbJzzEEcpKT5BpaaQidhFok+OXscf6hHjOQ==} 311 | engines: {node: '>= 10'} 312 | 313 | '@tailwindcss/postcss@4.0.0': 314 | resolution: {integrity: sha512-lI2bPk4TvwavHdehjr5WiC6HnZ59hacM6ySEo4RM/H7tsjWd8JpqiNW9ThH7rO/yKtrn4mGBoXshpvn8clXjPg==} 315 | 316 | '@types/estree@1.0.6': 317 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 318 | 319 | '@types/json-schema@7.0.15': 320 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 321 | 322 | '@types/json5@0.0.29': 323 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 324 | 325 | '@types/node@20.17.6': 326 | resolution: {integrity: sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==} 327 | 328 | '@types/prop-types@15.7.11': 329 | resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} 330 | 331 | '@types/react-dom@18.3.1': 332 | resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} 333 | 334 | '@types/react@18.3.12': 335 | resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} 336 | 337 | '@typescript-eslint/eslint-plugin@8.10.0': 338 | resolution: {integrity: sha512-phuB3hoP7FFKbRXxjl+DRlQDuJqhpOnm5MmtROXyWi3uS/Xg2ZXqiQfcG2BJHiN4QKyzdOJi3NEn/qTnjUlkmQ==} 339 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 340 | peerDependencies: 341 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 342 | eslint: ^8.57.0 || ^9.0.0 343 | typescript: '*' 344 | peerDependenciesMeta: 345 | typescript: 346 | optional: true 347 | 348 | '@typescript-eslint/parser@6.21.0': 349 | resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} 350 | engines: {node: ^16.0.0 || >=18.0.0} 351 | peerDependencies: 352 | eslint: ^7.0.0 || ^8.0.0 353 | typescript: '*' 354 | peerDependenciesMeta: 355 | typescript: 356 | optional: true 357 | 358 | '@typescript-eslint/scope-manager@6.21.0': 359 | resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} 360 | engines: {node: ^16.0.0 || >=18.0.0} 361 | 362 | '@typescript-eslint/scope-manager@8.10.0': 363 | resolution: {integrity: sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==} 364 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 365 | 366 | '@typescript-eslint/type-utils@8.10.0': 367 | resolution: {integrity: sha512-PCpUOpyQSpxBn230yIcK+LeCQaXuxrgCm2Zk1S+PTIRJsEfU6nJ0TtwyH8pIwPK/vJoA+7TZtzyAJSGBz+s/dg==} 368 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 369 | peerDependencies: 370 | typescript: '*' 371 | peerDependenciesMeta: 372 | typescript: 373 | optional: true 374 | 375 | '@typescript-eslint/types@6.21.0': 376 | resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} 377 | engines: {node: ^16.0.0 || >=18.0.0} 378 | 379 | '@typescript-eslint/types@8.10.0': 380 | resolution: {integrity: sha512-k/E48uzsfJCRRbGLapdZgrX52csmWJ2rcowwPvOZ8lwPUv3xW6CcFeJAXgx4uJm+Ge4+a4tFOkdYvSpxhRhg1w==} 381 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 382 | 383 | '@typescript-eslint/typescript-estree@6.21.0': 384 | resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} 385 | engines: {node: ^16.0.0 || >=18.0.0} 386 | peerDependencies: 387 | typescript: '*' 388 | peerDependenciesMeta: 389 | typescript: 390 | optional: true 391 | 392 | '@typescript-eslint/typescript-estree@8.10.0': 393 | resolution: {integrity: sha512-3OE0nlcOHaMvQ8Xu5gAfME3/tWVDpb/HxtpUZ1WeOAksZ/h/gwrBzCklaGzwZT97/lBbbxJ16dMA98JMEngW4w==} 394 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 395 | peerDependencies: 396 | typescript: '*' 397 | peerDependenciesMeta: 398 | typescript: 399 | optional: true 400 | 401 | '@typescript-eslint/utils@8.10.0': 402 | resolution: {integrity: sha512-Oq4uZ7JFr9d1ZunE/QKy5egcDRXT/FrS2z/nlxzPua2VHFtmMvFNDvpq1m/hq0ra+T52aUezfcjGRIB7vNJF9w==} 403 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 404 | peerDependencies: 405 | eslint: ^8.57.0 || ^9.0.0 406 | 407 | '@typescript-eslint/visitor-keys@6.21.0': 408 | resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} 409 | engines: {node: ^16.0.0 || >=18.0.0} 410 | 411 | '@typescript-eslint/visitor-keys@8.10.0': 412 | resolution: {integrity: sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==} 413 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 414 | 415 | '@vercel/analytics@1.3.2': 416 | resolution: {integrity: sha512-n/Ws7skBbW+fUBMeg+jrT30+GP00jTHvCcL4fuVrShuML0uveEV/4vVUdvqEVnDgXIGfLm0GXW5EID2mCcRXhg==} 417 | peerDependencies: 418 | next: '>= 13' 419 | react: ^18.0 || ^19.0 || ^19.0.0-rc 420 | peerDependenciesMeta: 421 | next: 422 | optional: true 423 | react: 424 | optional: true 425 | 426 | '@vercel/speed-insights@1.0.14': 427 | resolution: {integrity: sha512-env1BkPddz1UaEZwBL4GmfRksMi2LbiYaKuoxMQjfLk83aEh7kkWMukkUhpQVs717NE6nnD+1+KO85GZHOZ4nQ==} 428 | peerDependencies: 429 | '@sveltejs/kit': ^1 || ^2 430 | next: '>= 13' 431 | react: ^18 || ^19 || ^19.0.0-rc 432 | svelte: '>= 4' 433 | vue: ^3 434 | vue-router: ^4 435 | peerDependenciesMeta: 436 | '@sveltejs/kit': 437 | optional: true 438 | next: 439 | optional: true 440 | react: 441 | optional: true 442 | svelte: 443 | optional: true 444 | vue: 445 | optional: true 446 | vue-router: 447 | optional: true 448 | 449 | acorn-jsx@5.3.2: 450 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 451 | peerDependencies: 452 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 453 | 454 | acorn@8.14.0: 455 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 456 | engines: {node: '>=0.4.0'} 457 | hasBin: true 458 | 459 | ajv@6.12.6: 460 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 461 | 462 | ansi-regex@5.0.1: 463 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 464 | engines: {node: '>=8'} 465 | 466 | ansi-regex@6.0.1: 467 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 468 | engines: {node: '>=12'} 469 | 470 | ansi-styles@4.3.0: 471 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 472 | engines: {node: '>=8'} 473 | 474 | ansi-styles@6.2.1: 475 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 476 | engines: {node: '>=12'} 477 | 478 | argparse@2.0.1: 479 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 480 | 481 | aria-query@5.3.0: 482 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 483 | 484 | array-buffer-byte-length@1.0.1: 485 | resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} 486 | engines: {node: '>= 0.4'} 487 | 488 | array-includes@3.1.7: 489 | resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} 490 | engines: {node: '>= 0.4'} 491 | 492 | array-union@2.1.0: 493 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 494 | engines: {node: '>=8'} 495 | 496 | array.prototype.filter@1.0.3: 497 | resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} 498 | engines: {node: '>= 0.4'} 499 | 500 | array.prototype.findlastindex@1.2.4: 501 | resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} 502 | engines: {node: '>= 0.4'} 503 | 504 | array.prototype.flat@1.3.2: 505 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} 506 | engines: {node: '>= 0.4'} 507 | 508 | array.prototype.flatmap@1.3.2: 509 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 510 | engines: {node: '>= 0.4'} 511 | 512 | array.prototype.tosorted@1.1.3: 513 | resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} 514 | 515 | arraybuffer.prototype.slice@1.0.3: 516 | resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} 517 | engines: {node: '>= 0.4'} 518 | 519 | ast-types-flow@0.0.8: 520 | resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} 521 | 522 | asynciterator.prototype@1.0.0: 523 | resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} 524 | 525 | available-typed-arrays@1.0.7: 526 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} 527 | engines: {node: '>= 0.4'} 528 | 529 | axe-core@4.7.0: 530 | resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} 531 | engines: {node: '>=4'} 532 | 533 | axobject-query@3.2.1: 534 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 535 | 536 | balanced-match@1.0.2: 537 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 538 | 539 | brace-expansion@1.1.11: 540 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 541 | 542 | brace-expansion@2.0.1: 543 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 544 | 545 | braces@3.0.2: 546 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 547 | engines: {node: '>=8'} 548 | 549 | busboy@1.6.0: 550 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 551 | engines: {node: '>=10.16.0'} 552 | 553 | call-bind@1.0.7: 554 | resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} 555 | engines: {node: '>= 0.4'} 556 | 557 | callsites@3.1.0: 558 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 559 | engines: {node: '>=6'} 560 | 561 | caniuse-lite@1.0.30001655: 562 | resolution: {integrity: sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==} 563 | 564 | chalk@4.1.2: 565 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 566 | engines: {node: '>=10'} 567 | 568 | client-only@0.0.1: 569 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 570 | 571 | clsx@2.1.1: 572 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 573 | engines: {node: '>=6'} 574 | 575 | color-convert@2.0.1: 576 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 577 | engines: {node: '>=7.0.0'} 578 | 579 | color-name@1.1.4: 580 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 581 | 582 | concat-map@0.0.1: 583 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 584 | 585 | cross-spawn@7.0.3: 586 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 587 | engines: {node: '>= 8'} 588 | 589 | csstype@3.1.3: 590 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 591 | 592 | damerau-levenshtein@1.0.8: 593 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 594 | 595 | debug@3.2.7: 596 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 597 | peerDependencies: 598 | supports-color: '*' 599 | peerDependenciesMeta: 600 | supports-color: 601 | optional: true 602 | 603 | debug@4.3.4: 604 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 605 | engines: {node: '>=6.0'} 606 | peerDependencies: 607 | supports-color: '*' 608 | peerDependenciesMeta: 609 | supports-color: 610 | optional: true 611 | 612 | deep-is@0.1.4: 613 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 614 | 615 | define-data-property@1.1.4: 616 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 617 | engines: {node: '>= 0.4'} 618 | 619 | define-properties@1.2.1: 620 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 621 | engines: {node: '>= 0.4'} 622 | 623 | dequal@2.0.3: 624 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 625 | engines: {node: '>=6'} 626 | 627 | detect-libc@1.0.3: 628 | resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} 629 | engines: {node: '>=0.10'} 630 | hasBin: true 631 | 632 | dir-glob@3.0.1: 633 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 634 | engines: {node: '>=8'} 635 | 636 | discord-markdown@2.5.1: 637 | resolution: {integrity: sha512-SGNlL1Y8NYjY2MA5Vj1SI5+Ue5GUW2HkkDAq5jPQ6fI5j/rwOB814lFNhfs2AJMT72Jij8usTEqWZfdU8C3uag==} 638 | 639 | doctrine@2.1.0: 640 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 641 | engines: {node: '>=0.10.0'} 642 | 643 | eastasianwidth@0.2.0: 644 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 645 | 646 | emoji-regex@8.0.0: 647 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 648 | 649 | emoji-regex@9.2.2: 650 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 651 | 652 | enhanced-resolve@5.15.0: 653 | resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} 654 | engines: {node: '>=10.13.0'} 655 | 656 | enhanced-resolve@5.18.1: 657 | resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} 658 | engines: {node: '>=10.13.0'} 659 | 660 | es-abstract@1.22.4: 661 | resolution: {integrity: sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==} 662 | engines: {node: '>= 0.4'} 663 | 664 | es-array-method-boxes-properly@1.0.0: 665 | resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} 666 | 667 | es-define-property@1.0.0: 668 | resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} 669 | engines: {node: '>= 0.4'} 670 | 671 | es-errors@1.3.0: 672 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 673 | engines: {node: '>= 0.4'} 674 | 675 | es-iterator-helpers@1.0.17: 676 | resolution: {integrity: sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==} 677 | engines: {node: '>= 0.4'} 678 | 679 | es-set-tostringtag@2.0.2: 680 | resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} 681 | engines: {node: '>= 0.4'} 682 | 683 | es-shim-unscopables@1.0.2: 684 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 685 | 686 | es-to-primitive@1.2.1: 687 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 688 | engines: {node: '>= 0.4'} 689 | 690 | escape-string-regexp@4.0.0: 691 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 692 | engines: {node: '>=10'} 693 | 694 | eslint-config-next@14.2.15: 695 | resolution: {integrity: sha512-mKg+NC/8a4JKLZRIOBplxXNdStgxy7lzWuedUaCc8tev+Al9mwDUTujQH6W6qXDH9kycWiVo28tADWGvpBsZcQ==} 696 | peerDependencies: 697 | eslint: ^7.23.0 || ^8.0.0 698 | typescript: '>=3.3.1' 699 | peerDependenciesMeta: 700 | typescript: 701 | optional: true 702 | 703 | eslint-import-resolver-node@0.3.9: 704 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 705 | 706 | eslint-import-resolver-typescript@3.6.1: 707 | resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} 708 | engines: {node: ^14.18.0 || >=16.0.0} 709 | peerDependencies: 710 | eslint: '*' 711 | eslint-plugin-import: '*' 712 | 713 | eslint-module-utils@2.8.0: 714 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} 715 | engines: {node: '>=4'} 716 | peerDependencies: 717 | '@typescript-eslint/parser': '*' 718 | eslint: '*' 719 | eslint-import-resolver-node: '*' 720 | eslint-import-resolver-typescript: '*' 721 | eslint-import-resolver-webpack: '*' 722 | peerDependenciesMeta: 723 | '@typescript-eslint/parser': 724 | optional: true 725 | eslint: 726 | optional: true 727 | eslint-import-resolver-node: 728 | optional: true 729 | eslint-import-resolver-typescript: 730 | optional: true 731 | eslint-import-resolver-webpack: 732 | optional: true 733 | 734 | eslint-plugin-import@2.29.1: 735 | resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} 736 | engines: {node: '>=4'} 737 | peerDependencies: 738 | '@typescript-eslint/parser': '*' 739 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 740 | peerDependenciesMeta: 741 | '@typescript-eslint/parser': 742 | optional: true 743 | 744 | eslint-plugin-jsx-a11y@6.8.0: 745 | resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} 746 | engines: {node: '>=4.0'} 747 | peerDependencies: 748 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 749 | 750 | eslint-plugin-react-hooks@4.6.0: 751 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 752 | engines: {node: '>=10'} 753 | peerDependencies: 754 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 755 | 756 | eslint-plugin-react@7.33.2: 757 | resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} 758 | engines: {node: '>=4'} 759 | peerDependencies: 760 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 761 | 762 | eslint-scope@8.2.0: 763 | resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} 764 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 765 | 766 | eslint-visitor-keys@3.4.3: 767 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 768 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 769 | 770 | eslint-visitor-keys@4.2.0: 771 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 772 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 773 | 774 | eslint@9.14.0: 775 | resolution: {integrity: sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==} 776 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 777 | hasBin: true 778 | peerDependencies: 779 | jiti: '*' 780 | peerDependenciesMeta: 781 | jiti: 782 | optional: true 783 | 784 | espree@10.3.0: 785 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 786 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 787 | 788 | esquery@1.5.0: 789 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 790 | engines: {node: '>=0.10'} 791 | 792 | esrecurse@4.3.0: 793 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 794 | engines: {node: '>=4.0'} 795 | 796 | estraverse@5.3.0: 797 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 798 | engines: {node: '>=4.0'} 799 | 800 | esutils@2.0.3: 801 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 802 | engines: {node: '>=0.10.0'} 803 | 804 | fast-deep-equal@3.1.3: 805 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 806 | 807 | fast-glob@3.3.2: 808 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 809 | engines: {node: '>=8.6.0'} 810 | 811 | fast-json-stable-stringify@2.1.0: 812 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 813 | 814 | fast-levenshtein@2.0.6: 815 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 816 | 817 | fastq@1.17.1: 818 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 819 | 820 | file-entry-cache@8.0.0: 821 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 822 | engines: {node: '>=16.0.0'} 823 | 824 | fill-range@7.0.1: 825 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 826 | engines: {node: '>=8'} 827 | 828 | find-up@5.0.0: 829 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 830 | engines: {node: '>=10'} 831 | 832 | flat-cache@4.0.1: 833 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 834 | engines: {node: '>=16'} 835 | 836 | flatted@3.2.9: 837 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} 838 | 839 | for-each@0.3.3: 840 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 841 | 842 | foreground-child@3.1.1: 843 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 844 | engines: {node: '>=14'} 845 | 846 | framer-motion@11.11.11: 847 | resolution: {integrity: sha512-tuDH23ptJAKUHGydJQII9PhABNJBpB+z0P1bmgKK9QFIssHGlfPd6kxMq00LSKwE27WFsb2z0ovY0bpUyMvfRw==} 848 | peerDependencies: 849 | '@emotion/is-prop-valid': '*' 850 | react: ^18.0.0 851 | react-dom: ^18.0.0 852 | peerDependenciesMeta: 853 | '@emotion/is-prop-valid': 854 | optional: true 855 | react: 856 | optional: true 857 | react-dom: 858 | optional: true 859 | 860 | function-bind@1.1.2: 861 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 862 | 863 | function.prototype.name@1.1.6: 864 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} 865 | engines: {node: '>= 0.4'} 866 | 867 | functions-have-names@1.2.3: 868 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 869 | 870 | get-intrinsic@1.2.4: 871 | resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} 872 | engines: {node: '>= 0.4'} 873 | 874 | get-symbol-description@1.0.2: 875 | resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} 876 | engines: {node: '>= 0.4'} 877 | 878 | get-tsconfig@4.7.2: 879 | resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} 880 | 881 | glob-parent@5.1.2: 882 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 883 | engines: {node: '>= 6'} 884 | 885 | glob-parent@6.0.2: 886 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 887 | engines: {node: '>=10.13.0'} 888 | 889 | glob@10.3.10: 890 | resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} 891 | engines: {node: '>=16 || 14 >=14.17'} 892 | hasBin: true 893 | 894 | globals@14.0.0: 895 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 896 | engines: {node: '>=18'} 897 | 898 | globalthis@1.0.3: 899 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 900 | engines: {node: '>= 0.4'} 901 | 902 | globby@11.1.0: 903 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 904 | engines: {node: '>=10'} 905 | 906 | gopd@1.0.1: 907 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 908 | 909 | graceful-fs@4.2.11: 910 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 911 | 912 | graphemer@1.4.0: 913 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 914 | 915 | has-bigints@1.0.2: 916 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 917 | 918 | has-flag@4.0.0: 919 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 920 | engines: {node: '>=8'} 921 | 922 | has-property-descriptors@1.0.2: 923 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 924 | 925 | has-proto@1.0.3: 926 | resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} 927 | engines: {node: '>= 0.4'} 928 | 929 | has-symbols@1.0.3: 930 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 931 | engines: {node: '>= 0.4'} 932 | 933 | has-tostringtag@1.0.2: 934 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 935 | engines: {node: '>= 0.4'} 936 | 937 | hasown@2.0.1: 938 | resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} 939 | engines: {node: '>= 0.4'} 940 | 941 | highlight.js@11.9.0: 942 | resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==} 943 | engines: {node: '>=12.0.0'} 944 | 945 | ignore@5.3.1: 946 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} 947 | engines: {node: '>= 4'} 948 | 949 | import-fresh@3.3.0: 950 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 951 | engines: {node: '>=6'} 952 | 953 | imurmurhash@0.1.4: 954 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 955 | engines: {node: '>=0.8.19'} 956 | 957 | internal-slot@1.0.7: 958 | resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} 959 | engines: {node: '>= 0.4'} 960 | 961 | is-array-buffer@3.0.4: 962 | resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} 963 | engines: {node: '>= 0.4'} 964 | 965 | is-async-function@2.0.0: 966 | resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} 967 | engines: {node: '>= 0.4'} 968 | 969 | is-bigint@1.0.4: 970 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 971 | 972 | is-boolean-object@1.1.2: 973 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 974 | engines: {node: '>= 0.4'} 975 | 976 | is-callable@1.2.7: 977 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 978 | engines: {node: '>= 0.4'} 979 | 980 | is-core-module@2.13.1: 981 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 982 | 983 | is-date-object@1.0.5: 984 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 985 | engines: {node: '>= 0.4'} 986 | 987 | is-extglob@2.1.1: 988 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 989 | engines: {node: '>=0.10.0'} 990 | 991 | is-finalizationregistry@1.0.2: 992 | resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} 993 | 994 | is-fullwidth-code-point@3.0.0: 995 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 996 | engines: {node: '>=8'} 997 | 998 | is-generator-function@1.0.10: 999 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} 1000 | engines: {node: '>= 0.4'} 1001 | 1002 | is-glob@4.0.3: 1003 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1004 | engines: {node: '>=0.10.0'} 1005 | 1006 | is-map@2.0.2: 1007 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 1008 | 1009 | is-negative-zero@2.0.3: 1010 | resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} 1011 | engines: {node: '>= 0.4'} 1012 | 1013 | is-number-object@1.0.7: 1014 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1015 | engines: {node: '>= 0.4'} 1016 | 1017 | is-number@7.0.0: 1018 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1019 | engines: {node: '>=0.12.0'} 1020 | 1021 | is-regex@1.1.4: 1022 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1023 | engines: {node: '>= 0.4'} 1024 | 1025 | is-set@2.0.2: 1026 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 1027 | 1028 | is-shared-array-buffer@1.0.2: 1029 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1030 | 1031 | is-string@1.0.7: 1032 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1033 | engines: {node: '>= 0.4'} 1034 | 1035 | is-symbol@1.0.4: 1036 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1037 | engines: {node: '>= 0.4'} 1038 | 1039 | is-typed-array@1.1.13: 1040 | resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} 1041 | engines: {node: '>= 0.4'} 1042 | 1043 | is-weakmap@2.0.1: 1044 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 1045 | 1046 | is-weakref@1.0.2: 1047 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1048 | 1049 | is-weakset@2.0.2: 1050 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 1051 | 1052 | isarray@2.0.5: 1053 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1054 | 1055 | isexe@2.0.0: 1056 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1057 | 1058 | iterator.prototype@1.1.2: 1059 | resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} 1060 | 1061 | jackspeak@2.3.6: 1062 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} 1063 | engines: {node: '>=14'} 1064 | 1065 | jiti@2.4.2: 1066 | resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} 1067 | hasBin: true 1068 | 1069 | js-tokens@4.0.0: 1070 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1071 | 1072 | js-yaml@4.1.0: 1073 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1074 | hasBin: true 1075 | 1076 | json-buffer@3.0.1: 1077 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1078 | 1079 | json-schema-traverse@0.4.1: 1080 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1081 | 1082 | json-stable-stringify-without-jsonify@1.0.1: 1083 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1084 | 1085 | json5@1.0.2: 1086 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 1087 | hasBin: true 1088 | 1089 | jsx-ast-utils@3.3.5: 1090 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} 1091 | engines: {node: '>=4.0'} 1092 | 1093 | keyv@4.5.4: 1094 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1095 | 1096 | language-subtag-registry@0.3.22: 1097 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 1098 | 1099 | language-tags@1.0.9: 1100 | resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} 1101 | engines: {node: '>=0.10'} 1102 | 1103 | levn@0.4.1: 1104 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1105 | engines: {node: '>= 0.8.0'} 1106 | 1107 | lightningcss-darwin-arm64@1.29.1: 1108 | resolution: {integrity: sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==} 1109 | engines: {node: '>= 12.0.0'} 1110 | cpu: [arm64] 1111 | os: [darwin] 1112 | 1113 | lightningcss-darwin-x64@1.29.1: 1114 | resolution: {integrity: sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==} 1115 | engines: {node: '>= 12.0.0'} 1116 | cpu: [x64] 1117 | os: [darwin] 1118 | 1119 | lightningcss-freebsd-x64@1.29.1: 1120 | resolution: {integrity: sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==} 1121 | engines: {node: '>= 12.0.0'} 1122 | cpu: [x64] 1123 | os: [freebsd] 1124 | 1125 | lightningcss-linux-arm-gnueabihf@1.29.1: 1126 | resolution: {integrity: sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==} 1127 | engines: {node: '>= 12.0.0'} 1128 | cpu: [arm] 1129 | os: [linux] 1130 | 1131 | lightningcss-linux-arm64-gnu@1.29.1: 1132 | resolution: {integrity: sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==} 1133 | engines: {node: '>= 12.0.0'} 1134 | cpu: [arm64] 1135 | os: [linux] 1136 | 1137 | lightningcss-linux-arm64-musl@1.29.1: 1138 | resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==} 1139 | engines: {node: '>= 12.0.0'} 1140 | cpu: [arm64] 1141 | os: [linux] 1142 | 1143 | lightningcss-linux-x64-gnu@1.29.1: 1144 | resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==} 1145 | engines: {node: '>= 12.0.0'} 1146 | cpu: [x64] 1147 | os: [linux] 1148 | 1149 | lightningcss-linux-x64-musl@1.29.1: 1150 | resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==} 1151 | engines: {node: '>= 12.0.0'} 1152 | cpu: [x64] 1153 | os: [linux] 1154 | 1155 | lightningcss-win32-arm64-msvc@1.29.1: 1156 | resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==} 1157 | engines: {node: '>= 12.0.0'} 1158 | cpu: [arm64] 1159 | os: [win32] 1160 | 1161 | lightningcss-win32-x64-msvc@1.29.1: 1162 | resolution: {integrity: sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==} 1163 | engines: {node: '>= 12.0.0'} 1164 | cpu: [x64] 1165 | os: [win32] 1166 | 1167 | lightningcss@1.29.1: 1168 | resolution: {integrity: sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==} 1169 | engines: {node: '>= 12.0.0'} 1170 | 1171 | locate-path@6.0.0: 1172 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1173 | engines: {node: '>=10'} 1174 | 1175 | lodash.merge@4.6.2: 1176 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1177 | 1178 | loose-envify@1.4.0: 1179 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1180 | hasBin: true 1181 | 1182 | lru-cache@10.2.0: 1183 | resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} 1184 | engines: {node: 14 || >=16.14} 1185 | 1186 | lru-cache@6.0.0: 1187 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1188 | engines: {node: '>=10'} 1189 | 1190 | merge2@1.4.1: 1191 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1192 | engines: {node: '>= 8'} 1193 | 1194 | micromatch@4.0.5: 1195 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1196 | engines: {node: '>=8.6'} 1197 | 1198 | minimatch@3.1.2: 1199 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1200 | 1201 | minimatch@9.0.3: 1202 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 1203 | engines: {node: '>=16 || 14 >=14.17'} 1204 | 1205 | minimatch@9.0.5: 1206 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1207 | engines: {node: '>=16 || 14 >=14.17'} 1208 | 1209 | minimist@1.2.8: 1210 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1211 | 1212 | minipass@7.0.4: 1213 | resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} 1214 | engines: {node: '>=16 || 14 >=14.17'} 1215 | 1216 | ms@2.1.2: 1217 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1218 | 1219 | ms@2.1.3: 1220 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1221 | 1222 | nanoid@3.3.7: 1223 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1224 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1225 | hasBin: true 1226 | 1227 | natural-compare@1.4.0: 1228 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1229 | 1230 | next@14.2.15: 1231 | resolution: {integrity: sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==} 1232 | engines: {node: '>=18.17.0'} 1233 | hasBin: true 1234 | peerDependencies: 1235 | '@opentelemetry/api': ^1.1.0 1236 | '@playwright/test': ^1.41.2 1237 | react: ^18.2.0 1238 | react-dom: ^18.2.0 1239 | sass: ^1.3.0 1240 | peerDependenciesMeta: 1241 | '@opentelemetry/api': 1242 | optional: true 1243 | '@playwright/test': 1244 | optional: true 1245 | sass: 1246 | optional: true 1247 | 1248 | object-assign@4.1.1: 1249 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1250 | engines: {node: '>=0.10.0'} 1251 | 1252 | object-inspect@1.13.1: 1253 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} 1254 | 1255 | object-keys@1.1.1: 1256 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1257 | engines: {node: '>= 0.4'} 1258 | 1259 | object.assign@4.1.5: 1260 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} 1261 | engines: {node: '>= 0.4'} 1262 | 1263 | object.entries@1.1.7: 1264 | resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} 1265 | engines: {node: '>= 0.4'} 1266 | 1267 | object.fromentries@2.0.7: 1268 | resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} 1269 | engines: {node: '>= 0.4'} 1270 | 1271 | object.groupby@1.0.2: 1272 | resolution: {integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==} 1273 | 1274 | object.hasown@1.1.3: 1275 | resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} 1276 | 1277 | object.values@1.1.7: 1278 | resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} 1279 | engines: {node: '>= 0.4'} 1280 | 1281 | optionator@0.9.3: 1282 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 1283 | engines: {node: '>= 0.8.0'} 1284 | 1285 | p-limit@3.1.0: 1286 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1287 | engines: {node: '>=10'} 1288 | 1289 | p-locate@5.0.0: 1290 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1291 | engines: {node: '>=10'} 1292 | 1293 | parent-module@1.0.1: 1294 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1295 | engines: {node: '>=6'} 1296 | 1297 | path-exists@4.0.0: 1298 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1299 | engines: {node: '>=8'} 1300 | 1301 | path-key@3.1.1: 1302 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1303 | engines: {node: '>=8'} 1304 | 1305 | path-parse@1.0.7: 1306 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1307 | 1308 | path-scurry@1.10.1: 1309 | resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} 1310 | engines: {node: '>=16 || 14 >=14.17'} 1311 | 1312 | path-type@4.0.0: 1313 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1314 | engines: {node: '>=8'} 1315 | 1316 | picocolors@1.1.0: 1317 | resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} 1318 | 1319 | picomatch@2.3.1: 1320 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1321 | engines: {node: '>=8.6'} 1322 | 1323 | possible-typed-array-names@1.0.0: 1324 | resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} 1325 | engines: {node: '>= 0.4'} 1326 | 1327 | postcss@8.4.31: 1328 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 1329 | engines: {node: ^10 || ^12 || >=14} 1330 | 1331 | postcss@8.4.47: 1332 | resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} 1333 | engines: {node: ^10 || ^12 || >=14} 1334 | 1335 | prelude-ls@1.2.1: 1336 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1337 | engines: {node: '>= 0.8.0'} 1338 | 1339 | prettier-plugin-tailwindcss@0.6.11: 1340 | resolution: {integrity: sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==} 1341 | engines: {node: '>=14.21.3'} 1342 | peerDependencies: 1343 | '@ianvs/prettier-plugin-sort-imports': '*' 1344 | '@prettier/plugin-pug': '*' 1345 | '@shopify/prettier-plugin-liquid': '*' 1346 | '@trivago/prettier-plugin-sort-imports': '*' 1347 | '@zackad/prettier-plugin-twig': '*' 1348 | prettier: ^3.0 1349 | prettier-plugin-astro: '*' 1350 | prettier-plugin-css-order: '*' 1351 | prettier-plugin-import-sort: '*' 1352 | prettier-plugin-jsdoc: '*' 1353 | prettier-plugin-marko: '*' 1354 | prettier-plugin-multiline-arrays: '*' 1355 | prettier-plugin-organize-attributes: '*' 1356 | prettier-plugin-organize-imports: '*' 1357 | prettier-plugin-sort-imports: '*' 1358 | prettier-plugin-style-order: '*' 1359 | prettier-plugin-svelte: '*' 1360 | peerDependenciesMeta: 1361 | '@ianvs/prettier-plugin-sort-imports': 1362 | optional: true 1363 | '@prettier/plugin-pug': 1364 | optional: true 1365 | '@shopify/prettier-plugin-liquid': 1366 | optional: true 1367 | '@trivago/prettier-plugin-sort-imports': 1368 | optional: true 1369 | '@zackad/prettier-plugin-twig': 1370 | optional: true 1371 | prettier-plugin-astro: 1372 | optional: true 1373 | prettier-plugin-css-order: 1374 | optional: true 1375 | prettier-plugin-import-sort: 1376 | optional: true 1377 | prettier-plugin-jsdoc: 1378 | optional: true 1379 | prettier-plugin-marko: 1380 | optional: true 1381 | prettier-plugin-multiline-arrays: 1382 | optional: true 1383 | prettier-plugin-organize-attributes: 1384 | optional: true 1385 | prettier-plugin-organize-imports: 1386 | optional: true 1387 | prettier-plugin-sort-imports: 1388 | optional: true 1389 | prettier-plugin-style-order: 1390 | optional: true 1391 | prettier-plugin-svelte: 1392 | optional: true 1393 | 1394 | prettier@3.3.3: 1395 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 1396 | engines: {node: '>=14'} 1397 | hasBin: true 1398 | 1399 | prop-types@15.8.1: 1400 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 1401 | 1402 | punycode@2.3.1: 1403 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1404 | engines: {node: '>=6'} 1405 | 1406 | queue-microtask@1.2.3: 1407 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1408 | 1409 | react-dom@18.3.1: 1410 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} 1411 | peerDependencies: 1412 | react: ^18.3.1 1413 | 1414 | react-is@16.13.1: 1415 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 1416 | 1417 | react@18.3.1: 1418 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} 1419 | engines: {node: '>=0.10.0'} 1420 | 1421 | reflect.getprototypeof@1.0.5: 1422 | resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} 1423 | engines: {node: '>= 0.4'} 1424 | 1425 | regenerator-runtime@0.14.1: 1426 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 1427 | 1428 | regexp.prototype.flags@1.5.2: 1429 | resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} 1430 | engines: {node: '>= 0.4'} 1431 | 1432 | resolve-from@4.0.0: 1433 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1434 | engines: {node: '>=4'} 1435 | 1436 | resolve-pkg-maps@1.0.0: 1437 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1438 | 1439 | resolve@1.22.8: 1440 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 1441 | hasBin: true 1442 | 1443 | resolve@2.0.0-next.5: 1444 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} 1445 | hasBin: true 1446 | 1447 | reusify@1.0.4: 1448 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1449 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1450 | 1451 | run-parallel@1.2.0: 1452 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1453 | 1454 | safe-array-concat@1.1.0: 1455 | resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} 1456 | engines: {node: '>=0.4'} 1457 | 1458 | safe-regex-test@1.0.3: 1459 | resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} 1460 | engines: {node: '>= 0.4'} 1461 | 1462 | scheduler@0.23.2: 1463 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} 1464 | 1465 | semver@6.3.1: 1466 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1467 | hasBin: true 1468 | 1469 | semver@7.6.0: 1470 | resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} 1471 | engines: {node: '>=10'} 1472 | hasBin: true 1473 | 1474 | server-only@0.0.1: 1475 | resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} 1476 | 1477 | set-function-length@1.2.1: 1478 | resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} 1479 | engines: {node: '>= 0.4'} 1480 | 1481 | set-function-name@2.0.2: 1482 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} 1483 | engines: {node: '>= 0.4'} 1484 | 1485 | shebang-command@2.0.0: 1486 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1487 | engines: {node: '>=8'} 1488 | 1489 | shebang-regex@3.0.0: 1490 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1491 | engines: {node: '>=8'} 1492 | 1493 | side-channel@1.0.5: 1494 | resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} 1495 | engines: {node: '>= 0.4'} 1496 | 1497 | signal-exit@4.1.0: 1498 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1499 | engines: {node: '>=14'} 1500 | 1501 | simple-markdown@0.7.3: 1502 | resolution: {integrity: sha512-uGXIc13NGpqfPeFJIt/7SHHxd6HekEJYtsdoCM06mEBPL9fQH/pSD7LRM6PZ7CKchpSvxKL4tvwMamqAaNDAyg==} 1503 | 1504 | slash@3.0.0: 1505 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1506 | engines: {node: '>=8'} 1507 | 1508 | source-map-js@1.2.1: 1509 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1510 | engines: {node: '>=0.10.0'} 1511 | 1512 | streamsearch@1.1.0: 1513 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1514 | engines: {node: '>=10.0.0'} 1515 | 1516 | string-width@4.2.3: 1517 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1518 | engines: {node: '>=8'} 1519 | 1520 | string-width@5.1.2: 1521 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1522 | engines: {node: '>=12'} 1523 | 1524 | string.prototype.matchall@4.0.10: 1525 | resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} 1526 | 1527 | string.prototype.trim@1.2.8: 1528 | resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} 1529 | engines: {node: '>= 0.4'} 1530 | 1531 | string.prototype.trimend@1.0.7: 1532 | resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} 1533 | 1534 | string.prototype.trimstart@1.0.7: 1535 | resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} 1536 | 1537 | strip-ansi@6.0.1: 1538 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1539 | engines: {node: '>=8'} 1540 | 1541 | strip-ansi@7.1.0: 1542 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1543 | engines: {node: '>=12'} 1544 | 1545 | strip-bom@3.0.0: 1546 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1547 | engines: {node: '>=4'} 1548 | 1549 | strip-json-comments@3.1.1: 1550 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1551 | engines: {node: '>=8'} 1552 | 1553 | styled-jsx@5.1.1: 1554 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 1555 | engines: {node: '>= 12.0.0'} 1556 | peerDependencies: 1557 | '@babel/core': '*' 1558 | babel-plugin-macros: '*' 1559 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 1560 | peerDependenciesMeta: 1561 | '@babel/core': 1562 | optional: true 1563 | babel-plugin-macros: 1564 | optional: true 1565 | 1566 | supports-color@7.2.0: 1567 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1568 | engines: {node: '>=8'} 1569 | 1570 | supports-preserve-symlinks-flag@1.0.0: 1571 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1572 | engines: {node: '>= 0.4'} 1573 | 1574 | tailwind-merge@2.5.4: 1575 | resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==} 1576 | 1577 | tailwind-scrollbar-hide@1.1.7: 1578 | resolution: {integrity: sha512-X324n9OtpTmOMqEgDUEA/RgLrNfBF/jwJdctaPZDzB3mppxJk7TLIDmOreEDm1Bq4R9LSPu4Epf8VSdovNU+iA==} 1579 | 1580 | tailwindcss@4.0.0: 1581 | resolution: {integrity: sha512-ULRPI3A+e39T7pSaf1xoi58AqqJxVCLg8F/uM5A3FadUbnyDTgltVnXJvdkTjwCOGA6NazqHVcwPJC5h2vRYVQ==} 1582 | 1583 | tailwindcss@4.0.4: 1584 | resolution: {integrity: sha512-/ezDLEkOLf1lXkr9F2iI5BHJbexJpty5zkV2B8bGHCqAdbc9vk85Jgdkq+ZOvNkNPa3yAaqJ8DjRt584Bc84kw==} 1585 | 1586 | tapable@2.2.1: 1587 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 1588 | engines: {node: '>=6'} 1589 | 1590 | text-table@0.2.0: 1591 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1592 | 1593 | to-regex-range@5.0.1: 1594 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1595 | engines: {node: '>=8.0'} 1596 | 1597 | ts-api-utils@1.2.1: 1598 | resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} 1599 | engines: {node: '>=16'} 1600 | peerDependencies: 1601 | typescript: '>=4.2.0' 1602 | 1603 | ts-api-utils@1.3.0: 1604 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} 1605 | engines: {node: '>=16'} 1606 | peerDependencies: 1607 | typescript: '>=4.2.0' 1608 | 1609 | tsconfig-paths@3.15.0: 1610 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 1611 | 1612 | tslib@2.6.2: 1613 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 1614 | 1615 | type-check@0.4.0: 1616 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1617 | engines: {node: '>= 0.8.0'} 1618 | 1619 | typed-array-buffer@1.0.2: 1620 | resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} 1621 | engines: {node: '>= 0.4'} 1622 | 1623 | typed-array-byte-length@1.0.0: 1624 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} 1625 | engines: {node: '>= 0.4'} 1626 | 1627 | typed-array-byte-offset@1.0.1: 1628 | resolution: {integrity: sha512-tcqKMrTRXjqvHN9S3553NPCaGL0VPgFI92lXszmrE8DMhiDPLBYLlvo8Uu4WZAAX/aGqp/T1sbA4ph8EWjDF9Q==} 1629 | engines: {node: '>= 0.4'} 1630 | 1631 | typed-array-length@1.0.4: 1632 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 1633 | 1634 | typescript@5.6.3: 1635 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} 1636 | engines: {node: '>=14.17'} 1637 | hasBin: true 1638 | 1639 | unbox-primitive@1.0.2: 1640 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 1641 | 1642 | undici-types@6.19.8: 1643 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 1644 | 1645 | uri-js@4.4.1: 1646 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1647 | 1648 | use-lanyard@1.5.2: 1649 | resolution: {integrity: sha512-clxZoUrzgvGa+9IAOv39e4yNjUEvmk/BjBbpIZ/0ymLmclypJkKJ86j5okEjBAACMkw+u1c4gf/zCifpOSwyDA==} 1650 | engines: {node: '>=14'} 1651 | peerDependencies: 1652 | react: '*' 1653 | react-dom: '*' 1654 | 1655 | which-boxed-primitive@1.0.2: 1656 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 1657 | 1658 | which-builtin-type@1.1.3: 1659 | resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} 1660 | engines: {node: '>= 0.4'} 1661 | 1662 | which-collection@1.0.1: 1663 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 1664 | 1665 | which-typed-array@1.1.14: 1666 | resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} 1667 | engines: {node: '>= 0.4'} 1668 | 1669 | which@2.0.2: 1670 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1671 | engines: {node: '>= 8'} 1672 | hasBin: true 1673 | 1674 | wrap-ansi@7.0.0: 1675 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1676 | engines: {node: '>=10'} 1677 | 1678 | wrap-ansi@8.1.0: 1679 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1680 | engines: {node: '>=12'} 1681 | 1682 | yallist@4.0.0: 1683 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1684 | 1685 | yocto-queue@0.1.0: 1686 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1687 | engines: {node: '>=10'} 1688 | 1689 | snapshots: 1690 | 1691 | '@aashutoshrathi/word-wrap@1.2.6': {} 1692 | 1693 | '@alloc/quick-lru@5.2.0': {} 1694 | 1695 | '@babel/runtime@7.24.5': 1696 | dependencies: 1697 | regenerator-runtime: 0.14.1 1698 | 1699 | '@eslint-community/eslint-utils@4.4.0(eslint@9.14.0(jiti@2.4.2))': 1700 | dependencies: 1701 | eslint: 9.14.0(jiti@2.4.2) 1702 | eslint-visitor-keys: 3.4.3 1703 | 1704 | '@eslint-community/regexpp@4.11.0': {} 1705 | 1706 | '@eslint-community/regexpp@4.12.1': {} 1707 | 1708 | '@eslint/config-array@0.18.0': 1709 | dependencies: 1710 | '@eslint/object-schema': 2.1.4 1711 | debug: 4.3.4 1712 | minimatch: 3.1.2 1713 | transitivePeerDependencies: 1714 | - supports-color 1715 | 1716 | '@eslint/core@0.7.0': {} 1717 | 1718 | '@eslint/eslintrc@3.1.0': 1719 | dependencies: 1720 | ajv: 6.12.6 1721 | debug: 4.3.4 1722 | espree: 10.3.0 1723 | globals: 14.0.0 1724 | ignore: 5.3.1 1725 | import-fresh: 3.3.0 1726 | js-yaml: 4.1.0 1727 | minimatch: 3.1.2 1728 | strip-json-comments: 3.1.1 1729 | transitivePeerDependencies: 1730 | - supports-color 1731 | 1732 | '@eslint/js@9.14.0': {} 1733 | 1734 | '@eslint/object-schema@2.1.4': {} 1735 | 1736 | '@eslint/plugin-kit@0.2.0': 1737 | dependencies: 1738 | levn: 0.4.1 1739 | 1740 | '@humanfs/core@0.19.1': {} 1741 | 1742 | '@humanfs/node@0.16.6': 1743 | dependencies: 1744 | '@humanfs/core': 0.19.1 1745 | '@humanwhocodes/retry': 0.3.1 1746 | 1747 | '@humanwhocodes/module-importer@1.0.1': {} 1748 | 1749 | '@humanwhocodes/retry@0.3.1': {} 1750 | 1751 | '@humanwhocodes/retry@0.4.1': {} 1752 | 1753 | '@isaacs/cliui@8.0.2': 1754 | dependencies: 1755 | string-width: 5.1.2 1756 | string-width-cjs: string-width@4.2.3 1757 | strip-ansi: 7.1.0 1758 | strip-ansi-cjs: strip-ansi@6.0.1 1759 | wrap-ansi: 8.1.0 1760 | wrap-ansi-cjs: wrap-ansi@7.0.0 1761 | 1762 | '@next/env@14.2.15': {} 1763 | 1764 | '@next/eslint-plugin-next@14.2.15': 1765 | dependencies: 1766 | glob: 10.3.10 1767 | 1768 | '@next/swc-darwin-arm64@14.2.15': 1769 | optional: true 1770 | 1771 | '@next/swc-darwin-x64@14.2.15': 1772 | optional: true 1773 | 1774 | '@next/swc-linux-arm64-gnu@14.2.15': 1775 | optional: true 1776 | 1777 | '@next/swc-linux-arm64-musl@14.2.15': 1778 | optional: true 1779 | 1780 | '@next/swc-linux-x64-gnu@14.2.15': 1781 | optional: true 1782 | 1783 | '@next/swc-linux-x64-musl@14.2.15': 1784 | optional: true 1785 | 1786 | '@next/swc-win32-arm64-msvc@14.2.15': 1787 | optional: true 1788 | 1789 | '@next/swc-win32-ia32-msvc@14.2.15': 1790 | optional: true 1791 | 1792 | '@next/swc-win32-x64-msvc@14.2.15': 1793 | optional: true 1794 | 1795 | '@nodelib/fs.scandir@2.1.5': 1796 | dependencies: 1797 | '@nodelib/fs.stat': 2.0.5 1798 | run-parallel: 1.2.0 1799 | 1800 | '@nodelib/fs.stat@2.0.5': {} 1801 | 1802 | '@nodelib/fs.walk@1.2.8': 1803 | dependencies: 1804 | '@nodelib/fs.scandir': 2.1.5 1805 | fastq: 1.17.1 1806 | 1807 | '@pkgjs/parseargs@0.11.0': 1808 | optional: true 1809 | 1810 | '@rushstack/eslint-patch@1.7.2': {} 1811 | 1812 | '@swc/counter@0.1.3': {} 1813 | 1814 | '@swc/helpers@0.5.5': 1815 | dependencies: 1816 | '@swc/counter': 0.1.3 1817 | tslib: 2.6.2 1818 | 1819 | '@tailwindcss/node@4.0.4': 1820 | dependencies: 1821 | enhanced-resolve: 5.18.1 1822 | jiti: 2.4.2 1823 | tailwindcss: 4.0.4 1824 | 1825 | '@tailwindcss/oxide-android-arm64@4.0.4': 1826 | optional: true 1827 | 1828 | '@tailwindcss/oxide-darwin-arm64@4.0.4': 1829 | optional: true 1830 | 1831 | '@tailwindcss/oxide-darwin-x64@4.0.4': 1832 | optional: true 1833 | 1834 | '@tailwindcss/oxide-freebsd-x64@4.0.4': 1835 | optional: true 1836 | 1837 | '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.4': 1838 | optional: true 1839 | 1840 | '@tailwindcss/oxide-linux-arm64-gnu@4.0.4': 1841 | optional: true 1842 | 1843 | '@tailwindcss/oxide-linux-arm64-musl@4.0.4': 1844 | optional: true 1845 | 1846 | '@tailwindcss/oxide-linux-x64-gnu@4.0.4': 1847 | optional: true 1848 | 1849 | '@tailwindcss/oxide-linux-x64-musl@4.0.4': 1850 | optional: true 1851 | 1852 | '@tailwindcss/oxide-win32-arm64-msvc@4.0.4': 1853 | optional: true 1854 | 1855 | '@tailwindcss/oxide-win32-x64-msvc@4.0.4': 1856 | optional: true 1857 | 1858 | '@tailwindcss/oxide@4.0.4': 1859 | optionalDependencies: 1860 | '@tailwindcss/oxide-android-arm64': 4.0.4 1861 | '@tailwindcss/oxide-darwin-arm64': 4.0.4 1862 | '@tailwindcss/oxide-darwin-x64': 4.0.4 1863 | '@tailwindcss/oxide-freebsd-x64': 4.0.4 1864 | '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.4 1865 | '@tailwindcss/oxide-linux-arm64-gnu': 4.0.4 1866 | '@tailwindcss/oxide-linux-arm64-musl': 4.0.4 1867 | '@tailwindcss/oxide-linux-x64-gnu': 4.0.4 1868 | '@tailwindcss/oxide-linux-x64-musl': 4.0.4 1869 | '@tailwindcss/oxide-win32-arm64-msvc': 4.0.4 1870 | '@tailwindcss/oxide-win32-x64-msvc': 4.0.4 1871 | 1872 | '@tailwindcss/postcss@4.0.0': 1873 | dependencies: 1874 | '@alloc/quick-lru': 5.2.0 1875 | '@tailwindcss/node': 4.0.4 1876 | '@tailwindcss/oxide': 4.0.4 1877 | lightningcss: 1.29.1 1878 | postcss: 8.4.47 1879 | tailwindcss: 4.0.0 1880 | 1881 | '@types/estree@1.0.6': {} 1882 | 1883 | '@types/json-schema@7.0.15': {} 1884 | 1885 | '@types/json5@0.0.29': {} 1886 | 1887 | '@types/node@20.17.6': 1888 | dependencies: 1889 | undici-types: 6.19.8 1890 | 1891 | '@types/prop-types@15.7.11': {} 1892 | 1893 | '@types/react-dom@18.3.1': 1894 | dependencies: 1895 | '@types/react': 18.3.12 1896 | 1897 | '@types/react@18.3.12': 1898 | dependencies: 1899 | '@types/prop-types': 15.7.11 1900 | csstype: 3.1.3 1901 | 1902 | '@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3)': 1903 | dependencies: 1904 | '@eslint-community/regexpp': 4.11.0 1905 | '@typescript-eslint/parser': 6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3) 1906 | '@typescript-eslint/scope-manager': 8.10.0 1907 | '@typescript-eslint/type-utils': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3) 1908 | '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3) 1909 | '@typescript-eslint/visitor-keys': 8.10.0 1910 | eslint: 9.14.0(jiti@2.4.2) 1911 | graphemer: 1.4.0 1912 | ignore: 5.3.1 1913 | natural-compare: 1.4.0 1914 | ts-api-utils: 1.3.0(typescript@5.6.3) 1915 | optionalDependencies: 1916 | typescript: 5.6.3 1917 | transitivePeerDependencies: 1918 | - supports-color 1919 | 1920 | '@typescript-eslint/parser@6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3)': 1921 | dependencies: 1922 | '@typescript-eslint/scope-manager': 6.21.0 1923 | '@typescript-eslint/types': 6.21.0 1924 | '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) 1925 | '@typescript-eslint/visitor-keys': 6.21.0 1926 | debug: 4.3.4 1927 | eslint: 9.14.0(jiti@2.4.2) 1928 | optionalDependencies: 1929 | typescript: 5.6.3 1930 | transitivePeerDependencies: 1931 | - supports-color 1932 | 1933 | '@typescript-eslint/scope-manager@6.21.0': 1934 | dependencies: 1935 | '@typescript-eslint/types': 6.21.0 1936 | '@typescript-eslint/visitor-keys': 6.21.0 1937 | 1938 | '@typescript-eslint/scope-manager@8.10.0': 1939 | dependencies: 1940 | '@typescript-eslint/types': 8.10.0 1941 | '@typescript-eslint/visitor-keys': 8.10.0 1942 | 1943 | '@typescript-eslint/type-utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3)': 1944 | dependencies: 1945 | '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) 1946 | '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3) 1947 | debug: 4.3.4 1948 | ts-api-utils: 1.3.0(typescript@5.6.3) 1949 | optionalDependencies: 1950 | typescript: 5.6.3 1951 | transitivePeerDependencies: 1952 | - eslint 1953 | - supports-color 1954 | 1955 | '@typescript-eslint/types@6.21.0': {} 1956 | 1957 | '@typescript-eslint/types@8.10.0': {} 1958 | 1959 | '@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.3)': 1960 | dependencies: 1961 | '@typescript-eslint/types': 6.21.0 1962 | '@typescript-eslint/visitor-keys': 6.21.0 1963 | debug: 4.3.4 1964 | globby: 11.1.0 1965 | is-glob: 4.0.3 1966 | minimatch: 9.0.3 1967 | semver: 7.6.0 1968 | ts-api-utils: 1.2.1(typescript@5.6.3) 1969 | optionalDependencies: 1970 | typescript: 5.6.3 1971 | transitivePeerDependencies: 1972 | - supports-color 1973 | 1974 | '@typescript-eslint/typescript-estree@8.10.0(typescript@5.6.3)': 1975 | dependencies: 1976 | '@typescript-eslint/types': 8.10.0 1977 | '@typescript-eslint/visitor-keys': 8.10.0 1978 | debug: 4.3.4 1979 | fast-glob: 3.3.2 1980 | is-glob: 4.0.3 1981 | minimatch: 9.0.5 1982 | semver: 7.6.0 1983 | ts-api-utils: 1.3.0(typescript@5.6.3) 1984 | optionalDependencies: 1985 | typescript: 5.6.3 1986 | transitivePeerDependencies: 1987 | - supports-color 1988 | 1989 | '@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3)': 1990 | dependencies: 1991 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@2.4.2)) 1992 | '@typescript-eslint/scope-manager': 8.10.0 1993 | '@typescript-eslint/types': 8.10.0 1994 | '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) 1995 | eslint: 9.14.0(jiti@2.4.2) 1996 | transitivePeerDependencies: 1997 | - supports-color 1998 | - typescript 1999 | 2000 | '@typescript-eslint/visitor-keys@6.21.0': 2001 | dependencies: 2002 | '@typescript-eslint/types': 6.21.0 2003 | eslint-visitor-keys: 3.4.3 2004 | 2005 | '@typescript-eslint/visitor-keys@8.10.0': 2006 | dependencies: 2007 | '@typescript-eslint/types': 8.10.0 2008 | eslint-visitor-keys: 3.4.3 2009 | 2010 | '@vercel/analytics@1.3.2(next@14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': 2011 | dependencies: 2012 | server-only: 0.0.1 2013 | optionalDependencies: 2014 | next: 14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2015 | react: 18.3.1 2016 | 2017 | '@vercel/speed-insights@1.0.14(next@14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': 2018 | optionalDependencies: 2019 | next: 14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2020 | react: 18.3.1 2021 | 2022 | acorn-jsx@5.3.2(acorn@8.14.0): 2023 | dependencies: 2024 | acorn: 8.14.0 2025 | 2026 | acorn@8.14.0: {} 2027 | 2028 | ajv@6.12.6: 2029 | dependencies: 2030 | fast-deep-equal: 3.1.3 2031 | fast-json-stable-stringify: 2.1.0 2032 | json-schema-traverse: 0.4.1 2033 | uri-js: 4.4.1 2034 | 2035 | ansi-regex@5.0.1: {} 2036 | 2037 | ansi-regex@6.0.1: {} 2038 | 2039 | ansi-styles@4.3.0: 2040 | dependencies: 2041 | color-convert: 2.0.1 2042 | 2043 | ansi-styles@6.2.1: {} 2044 | 2045 | argparse@2.0.1: {} 2046 | 2047 | aria-query@5.3.0: 2048 | dependencies: 2049 | dequal: 2.0.3 2050 | 2051 | array-buffer-byte-length@1.0.1: 2052 | dependencies: 2053 | call-bind: 1.0.7 2054 | is-array-buffer: 3.0.4 2055 | 2056 | array-includes@3.1.7: 2057 | dependencies: 2058 | call-bind: 1.0.7 2059 | define-properties: 1.2.1 2060 | es-abstract: 1.22.4 2061 | get-intrinsic: 1.2.4 2062 | is-string: 1.0.7 2063 | 2064 | array-union@2.1.0: {} 2065 | 2066 | array.prototype.filter@1.0.3: 2067 | dependencies: 2068 | call-bind: 1.0.7 2069 | define-properties: 1.2.1 2070 | es-abstract: 1.22.4 2071 | es-array-method-boxes-properly: 1.0.0 2072 | is-string: 1.0.7 2073 | 2074 | array.prototype.findlastindex@1.2.4: 2075 | dependencies: 2076 | call-bind: 1.0.7 2077 | define-properties: 1.2.1 2078 | es-abstract: 1.22.4 2079 | es-errors: 1.3.0 2080 | es-shim-unscopables: 1.0.2 2081 | 2082 | array.prototype.flat@1.3.2: 2083 | dependencies: 2084 | call-bind: 1.0.7 2085 | define-properties: 1.2.1 2086 | es-abstract: 1.22.4 2087 | es-shim-unscopables: 1.0.2 2088 | 2089 | array.prototype.flatmap@1.3.2: 2090 | dependencies: 2091 | call-bind: 1.0.7 2092 | define-properties: 1.2.1 2093 | es-abstract: 1.22.4 2094 | es-shim-unscopables: 1.0.2 2095 | 2096 | array.prototype.tosorted@1.1.3: 2097 | dependencies: 2098 | call-bind: 1.0.7 2099 | define-properties: 1.2.1 2100 | es-abstract: 1.22.4 2101 | es-errors: 1.3.0 2102 | es-shim-unscopables: 1.0.2 2103 | 2104 | arraybuffer.prototype.slice@1.0.3: 2105 | dependencies: 2106 | array-buffer-byte-length: 1.0.1 2107 | call-bind: 1.0.7 2108 | define-properties: 1.2.1 2109 | es-abstract: 1.22.4 2110 | es-errors: 1.3.0 2111 | get-intrinsic: 1.2.4 2112 | is-array-buffer: 3.0.4 2113 | is-shared-array-buffer: 1.0.2 2114 | 2115 | ast-types-flow@0.0.8: {} 2116 | 2117 | asynciterator.prototype@1.0.0: 2118 | dependencies: 2119 | has-symbols: 1.0.3 2120 | 2121 | available-typed-arrays@1.0.7: 2122 | dependencies: 2123 | possible-typed-array-names: 1.0.0 2124 | 2125 | axe-core@4.7.0: {} 2126 | 2127 | axobject-query@3.2.1: 2128 | dependencies: 2129 | dequal: 2.0.3 2130 | 2131 | balanced-match@1.0.2: {} 2132 | 2133 | brace-expansion@1.1.11: 2134 | dependencies: 2135 | balanced-match: 1.0.2 2136 | concat-map: 0.0.1 2137 | 2138 | brace-expansion@2.0.1: 2139 | dependencies: 2140 | balanced-match: 1.0.2 2141 | 2142 | braces@3.0.2: 2143 | dependencies: 2144 | fill-range: 7.0.1 2145 | 2146 | busboy@1.6.0: 2147 | dependencies: 2148 | streamsearch: 1.1.0 2149 | 2150 | call-bind@1.0.7: 2151 | dependencies: 2152 | es-define-property: 1.0.0 2153 | es-errors: 1.3.0 2154 | function-bind: 1.1.2 2155 | get-intrinsic: 1.2.4 2156 | set-function-length: 1.2.1 2157 | 2158 | callsites@3.1.0: {} 2159 | 2160 | caniuse-lite@1.0.30001655: {} 2161 | 2162 | chalk@4.1.2: 2163 | dependencies: 2164 | ansi-styles: 4.3.0 2165 | supports-color: 7.2.0 2166 | 2167 | client-only@0.0.1: {} 2168 | 2169 | clsx@2.1.1: {} 2170 | 2171 | color-convert@2.0.1: 2172 | dependencies: 2173 | color-name: 1.1.4 2174 | 2175 | color-name@1.1.4: {} 2176 | 2177 | concat-map@0.0.1: {} 2178 | 2179 | cross-spawn@7.0.3: 2180 | dependencies: 2181 | path-key: 3.1.1 2182 | shebang-command: 2.0.0 2183 | which: 2.0.2 2184 | 2185 | csstype@3.1.3: {} 2186 | 2187 | damerau-levenshtein@1.0.8: {} 2188 | 2189 | debug@3.2.7: 2190 | dependencies: 2191 | ms: 2.1.3 2192 | 2193 | debug@4.3.4: 2194 | dependencies: 2195 | ms: 2.1.2 2196 | 2197 | deep-is@0.1.4: {} 2198 | 2199 | define-data-property@1.1.4: 2200 | dependencies: 2201 | es-define-property: 1.0.0 2202 | es-errors: 1.3.0 2203 | gopd: 1.0.1 2204 | 2205 | define-properties@1.2.1: 2206 | dependencies: 2207 | define-data-property: 1.1.4 2208 | has-property-descriptors: 1.0.2 2209 | object-keys: 1.1.1 2210 | 2211 | dequal@2.0.3: {} 2212 | 2213 | detect-libc@1.0.3: {} 2214 | 2215 | dir-glob@3.0.1: 2216 | dependencies: 2217 | path-type: 4.0.0 2218 | 2219 | discord-markdown@2.5.1: 2220 | dependencies: 2221 | highlight.js: 11.9.0 2222 | simple-markdown: 0.7.3 2223 | 2224 | doctrine@2.1.0: 2225 | dependencies: 2226 | esutils: 2.0.3 2227 | 2228 | eastasianwidth@0.2.0: {} 2229 | 2230 | emoji-regex@8.0.0: {} 2231 | 2232 | emoji-regex@9.2.2: {} 2233 | 2234 | enhanced-resolve@5.15.0: 2235 | dependencies: 2236 | graceful-fs: 4.2.11 2237 | tapable: 2.2.1 2238 | 2239 | enhanced-resolve@5.18.1: 2240 | dependencies: 2241 | graceful-fs: 4.2.11 2242 | tapable: 2.2.1 2243 | 2244 | es-abstract@1.22.4: 2245 | dependencies: 2246 | array-buffer-byte-length: 1.0.1 2247 | arraybuffer.prototype.slice: 1.0.3 2248 | available-typed-arrays: 1.0.7 2249 | call-bind: 1.0.7 2250 | es-define-property: 1.0.0 2251 | es-errors: 1.3.0 2252 | es-set-tostringtag: 2.0.2 2253 | es-to-primitive: 1.2.1 2254 | function.prototype.name: 1.1.6 2255 | get-intrinsic: 1.2.4 2256 | get-symbol-description: 1.0.2 2257 | globalthis: 1.0.3 2258 | gopd: 1.0.1 2259 | has-property-descriptors: 1.0.2 2260 | has-proto: 1.0.3 2261 | has-symbols: 1.0.3 2262 | hasown: 2.0.1 2263 | internal-slot: 1.0.7 2264 | is-array-buffer: 3.0.4 2265 | is-callable: 1.2.7 2266 | is-negative-zero: 2.0.3 2267 | is-regex: 1.1.4 2268 | is-shared-array-buffer: 1.0.2 2269 | is-string: 1.0.7 2270 | is-typed-array: 1.1.13 2271 | is-weakref: 1.0.2 2272 | object-inspect: 1.13.1 2273 | object-keys: 1.1.1 2274 | object.assign: 4.1.5 2275 | regexp.prototype.flags: 1.5.2 2276 | safe-array-concat: 1.1.0 2277 | safe-regex-test: 1.0.3 2278 | string.prototype.trim: 1.2.8 2279 | string.prototype.trimend: 1.0.7 2280 | string.prototype.trimstart: 1.0.7 2281 | typed-array-buffer: 1.0.2 2282 | typed-array-byte-length: 1.0.0 2283 | typed-array-byte-offset: 1.0.1 2284 | typed-array-length: 1.0.4 2285 | unbox-primitive: 1.0.2 2286 | which-typed-array: 1.1.14 2287 | 2288 | es-array-method-boxes-properly@1.0.0: {} 2289 | 2290 | es-define-property@1.0.0: 2291 | dependencies: 2292 | get-intrinsic: 1.2.4 2293 | 2294 | es-errors@1.3.0: {} 2295 | 2296 | es-iterator-helpers@1.0.17: 2297 | dependencies: 2298 | asynciterator.prototype: 1.0.0 2299 | call-bind: 1.0.7 2300 | define-properties: 1.2.1 2301 | es-abstract: 1.22.4 2302 | es-errors: 1.3.0 2303 | es-set-tostringtag: 2.0.2 2304 | function-bind: 1.1.2 2305 | get-intrinsic: 1.2.4 2306 | globalthis: 1.0.3 2307 | has-property-descriptors: 1.0.2 2308 | has-proto: 1.0.3 2309 | has-symbols: 1.0.3 2310 | internal-slot: 1.0.7 2311 | iterator.prototype: 1.1.2 2312 | safe-array-concat: 1.1.0 2313 | 2314 | es-set-tostringtag@2.0.2: 2315 | dependencies: 2316 | get-intrinsic: 1.2.4 2317 | has-tostringtag: 1.0.2 2318 | hasown: 2.0.1 2319 | 2320 | es-shim-unscopables@1.0.2: 2321 | dependencies: 2322 | hasown: 2.0.1 2323 | 2324 | es-to-primitive@1.2.1: 2325 | dependencies: 2326 | is-callable: 1.2.7 2327 | is-date-object: 1.0.5 2328 | is-symbol: 1.0.4 2329 | 2330 | escape-string-regexp@4.0.0: {} 2331 | 2332 | eslint-config-next@14.2.15(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3): 2333 | dependencies: 2334 | '@next/eslint-plugin-next': 14.2.15 2335 | '@rushstack/eslint-patch': 1.7.2 2336 | '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3) 2337 | '@typescript-eslint/parser': 6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3) 2338 | eslint: 9.14.0(jiti@2.4.2) 2339 | eslint-import-resolver-node: 0.3.9 2340 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@9.14.0(jiti@2.4.2)) 2341 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.1)(eslint@9.14.0(jiti@2.4.2)) 2342 | eslint-plugin-jsx-a11y: 6.8.0(eslint@9.14.0(jiti@2.4.2)) 2343 | eslint-plugin-react: 7.33.2(eslint@9.14.0(jiti@2.4.2)) 2344 | eslint-plugin-react-hooks: 4.6.0(eslint@9.14.0(jiti@2.4.2)) 2345 | optionalDependencies: 2346 | typescript: 5.6.3 2347 | transitivePeerDependencies: 2348 | - eslint-import-resolver-webpack 2349 | - supports-color 2350 | 2351 | eslint-import-resolver-node@0.3.9: 2352 | dependencies: 2353 | debug: 3.2.7 2354 | is-core-module: 2.13.1 2355 | resolve: 1.22.8 2356 | transitivePeerDependencies: 2357 | - supports-color 2358 | 2359 | eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@9.14.0(jiti@2.4.2)): 2360 | dependencies: 2361 | debug: 4.3.4 2362 | enhanced-resolve: 5.15.0 2363 | eslint: 9.14.0(jiti@2.4.2) 2364 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.14.0(jiti@2.4.2)) 2365 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.1)(eslint@9.14.0(jiti@2.4.2)) 2366 | fast-glob: 3.3.2 2367 | get-tsconfig: 4.7.2 2368 | is-core-module: 2.13.1 2369 | is-glob: 4.0.3 2370 | transitivePeerDependencies: 2371 | - '@typescript-eslint/parser' 2372 | - eslint-import-resolver-node 2373 | - eslint-import-resolver-webpack 2374 | - supports-color 2375 | 2376 | eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.14.0(jiti@2.4.2)): 2377 | dependencies: 2378 | debug: 3.2.7 2379 | optionalDependencies: 2380 | '@typescript-eslint/parser': 6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3) 2381 | eslint: 9.14.0(jiti@2.4.2) 2382 | eslint-import-resolver-node: 0.3.9 2383 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@9.14.0(jiti@2.4.2)) 2384 | transitivePeerDependencies: 2385 | - supports-color 2386 | 2387 | eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.1)(eslint@9.14.0(jiti@2.4.2)): 2388 | dependencies: 2389 | array-includes: 3.1.7 2390 | array.prototype.findlastindex: 1.2.4 2391 | array.prototype.flat: 1.3.2 2392 | array.prototype.flatmap: 1.3.2 2393 | debug: 3.2.7 2394 | doctrine: 2.1.0 2395 | eslint: 9.14.0(jiti@2.4.2) 2396 | eslint-import-resolver-node: 0.3.9 2397 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.14.0(jiti@2.4.2)) 2398 | hasown: 2.0.1 2399 | is-core-module: 2.13.1 2400 | is-glob: 4.0.3 2401 | minimatch: 3.1.2 2402 | object.fromentries: 2.0.7 2403 | object.groupby: 1.0.2 2404 | object.values: 1.1.7 2405 | semver: 6.3.1 2406 | tsconfig-paths: 3.15.0 2407 | optionalDependencies: 2408 | '@typescript-eslint/parser': 6.21.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.6.3) 2409 | transitivePeerDependencies: 2410 | - eslint-import-resolver-typescript 2411 | - eslint-import-resolver-webpack 2412 | - supports-color 2413 | 2414 | eslint-plugin-jsx-a11y@6.8.0(eslint@9.14.0(jiti@2.4.2)): 2415 | dependencies: 2416 | '@babel/runtime': 7.24.5 2417 | aria-query: 5.3.0 2418 | array-includes: 3.1.7 2419 | array.prototype.flatmap: 1.3.2 2420 | ast-types-flow: 0.0.8 2421 | axe-core: 4.7.0 2422 | axobject-query: 3.2.1 2423 | damerau-levenshtein: 1.0.8 2424 | emoji-regex: 9.2.2 2425 | es-iterator-helpers: 1.0.17 2426 | eslint: 9.14.0(jiti@2.4.2) 2427 | hasown: 2.0.1 2428 | jsx-ast-utils: 3.3.5 2429 | language-tags: 1.0.9 2430 | minimatch: 3.1.2 2431 | object.entries: 1.1.7 2432 | object.fromentries: 2.0.7 2433 | 2434 | eslint-plugin-react-hooks@4.6.0(eslint@9.14.0(jiti@2.4.2)): 2435 | dependencies: 2436 | eslint: 9.14.0(jiti@2.4.2) 2437 | 2438 | eslint-plugin-react@7.33.2(eslint@9.14.0(jiti@2.4.2)): 2439 | dependencies: 2440 | array-includes: 3.1.7 2441 | array.prototype.flatmap: 1.3.2 2442 | array.prototype.tosorted: 1.1.3 2443 | doctrine: 2.1.0 2444 | es-iterator-helpers: 1.0.17 2445 | eslint: 9.14.0(jiti@2.4.2) 2446 | estraverse: 5.3.0 2447 | jsx-ast-utils: 3.3.5 2448 | minimatch: 3.1.2 2449 | object.entries: 1.1.7 2450 | object.fromentries: 2.0.7 2451 | object.hasown: 1.1.3 2452 | object.values: 1.1.7 2453 | prop-types: 15.8.1 2454 | resolve: 2.0.0-next.5 2455 | semver: 6.3.1 2456 | string.prototype.matchall: 4.0.10 2457 | 2458 | eslint-scope@8.2.0: 2459 | dependencies: 2460 | esrecurse: 4.3.0 2461 | estraverse: 5.3.0 2462 | 2463 | eslint-visitor-keys@3.4.3: {} 2464 | 2465 | eslint-visitor-keys@4.2.0: {} 2466 | 2467 | eslint@9.14.0(jiti@2.4.2): 2468 | dependencies: 2469 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@2.4.2)) 2470 | '@eslint-community/regexpp': 4.12.1 2471 | '@eslint/config-array': 0.18.0 2472 | '@eslint/core': 0.7.0 2473 | '@eslint/eslintrc': 3.1.0 2474 | '@eslint/js': 9.14.0 2475 | '@eslint/plugin-kit': 0.2.0 2476 | '@humanfs/node': 0.16.6 2477 | '@humanwhocodes/module-importer': 1.0.1 2478 | '@humanwhocodes/retry': 0.4.1 2479 | '@types/estree': 1.0.6 2480 | '@types/json-schema': 7.0.15 2481 | ajv: 6.12.6 2482 | chalk: 4.1.2 2483 | cross-spawn: 7.0.3 2484 | debug: 4.3.4 2485 | escape-string-regexp: 4.0.0 2486 | eslint-scope: 8.2.0 2487 | eslint-visitor-keys: 4.2.0 2488 | espree: 10.3.0 2489 | esquery: 1.5.0 2490 | esutils: 2.0.3 2491 | fast-deep-equal: 3.1.3 2492 | file-entry-cache: 8.0.0 2493 | find-up: 5.0.0 2494 | glob-parent: 6.0.2 2495 | ignore: 5.3.1 2496 | imurmurhash: 0.1.4 2497 | is-glob: 4.0.3 2498 | json-stable-stringify-without-jsonify: 1.0.1 2499 | lodash.merge: 4.6.2 2500 | minimatch: 3.1.2 2501 | natural-compare: 1.4.0 2502 | optionator: 0.9.3 2503 | text-table: 0.2.0 2504 | optionalDependencies: 2505 | jiti: 2.4.2 2506 | transitivePeerDependencies: 2507 | - supports-color 2508 | 2509 | espree@10.3.0: 2510 | dependencies: 2511 | acorn: 8.14.0 2512 | acorn-jsx: 5.3.2(acorn@8.14.0) 2513 | eslint-visitor-keys: 4.2.0 2514 | 2515 | esquery@1.5.0: 2516 | dependencies: 2517 | estraverse: 5.3.0 2518 | 2519 | esrecurse@4.3.0: 2520 | dependencies: 2521 | estraverse: 5.3.0 2522 | 2523 | estraverse@5.3.0: {} 2524 | 2525 | esutils@2.0.3: {} 2526 | 2527 | fast-deep-equal@3.1.3: {} 2528 | 2529 | fast-glob@3.3.2: 2530 | dependencies: 2531 | '@nodelib/fs.stat': 2.0.5 2532 | '@nodelib/fs.walk': 1.2.8 2533 | glob-parent: 5.1.2 2534 | merge2: 1.4.1 2535 | micromatch: 4.0.5 2536 | 2537 | fast-json-stable-stringify@2.1.0: {} 2538 | 2539 | fast-levenshtein@2.0.6: {} 2540 | 2541 | fastq@1.17.1: 2542 | dependencies: 2543 | reusify: 1.0.4 2544 | 2545 | file-entry-cache@8.0.0: 2546 | dependencies: 2547 | flat-cache: 4.0.1 2548 | 2549 | fill-range@7.0.1: 2550 | dependencies: 2551 | to-regex-range: 5.0.1 2552 | 2553 | find-up@5.0.0: 2554 | dependencies: 2555 | locate-path: 6.0.0 2556 | path-exists: 4.0.0 2557 | 2558 | flat-cache@4.0.1: 2559 | dependencies: 2560 | flatted: 3.2.9 2561 | keyv: 4.5.4 2562 | 2563 | flatted@3.2.9: {} 2564 | 2565 | for-each@0.3.3: 2566 | dependencies: 2567 | is-callable: 1.2.7 2568 | 2569 | foreground-child@3.1.1: 2570 | dependencies: 2571 | cross-spawn: 7.0.3 2572 | signal-exit: 4.1.0 2573 | 2574 | framer-motion@11.11.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 2575 | dependencies: 2576 | tslib: 2.6.2 2577 | optionalDependencies: 2578 | react: 18.3.1 2579 | react-dom: 18.3.1(react@18.3.1) 2580 | 2581 | function-bind@1.1.2: {} 2582 | 2583 | function.prototype.name@1.1.6: 2584 | dependencies: 2585 | call-bind: 1.0.7 2586 | define-properties: 1.2.1 2587 | es-abstract: 1.22.4 2588 | functions-have-names: 1.2.3 2589 | 2590 | functions-have-names@1.2.3: {} 2591 | 2592 | get-intrinsic@1.2.4: 2593 | dependencies: 2594 | es-errors: 1.3.0 2595 | function-bind: 1.1.2 2596 | has-proto: 1.0.3 2597 | has-symbols: 1.0.3 2598 | hasown: 2.0.1 2599 | 2600 | get-symbol-description@1.0.2: 2601 | dependencies: 2602 | call-bind: 1.0.7 2603 | es-errors: 1.3.0 2604 | get-intrinsic: 1.2.4 2605 | 2606 | get-tsconfig@4.7.2: 2607 | dependencies: 2608 | resolve-pkg-maps: 1.0.0 2609 | 2610 | glob-parent@5.1.2: 2611 | dependencies: 2612 | is-glob: 4.0.3 2613 | 2614 | glob-parent@6.0.2: 2615 | dependencies: 2616 | is-glob: 4.0.3 2617 | 2618 | glob@10.3.10: 2619 | dependencies: 2620 | foreground-child: 3.1.1 2621 | jackspeak: 2.3.6 2622 | minimatch: 9.0.3 2623 | minipass: 7.0.4 2624 | path-scurry: 1.10.1 2625 | 2626 | globals@14.0.0: {} 2627 | 2628 | globalthis@1.0.3: 2629 | dependencies: 2630 | define-properties: 1.2.1 2631 | 2632 | globby@11.1.0: 2633 | dependencies: 2634 | array-union: 2.1.0 2635 | dir-glob: 3.0.1 2636 | fast-glob: 3.3.2 2637 | ignore: 5.3.1 2638 | merge2: 1.4.1 2639 | slash: 3.0.0 2640 | 2641 | gopd@1.0.1: 2642 | dependencies: 2643 | get-intrinsic: 1.2.4 2644 | 2645 | graceful-fs@4.2.11: {} 2646 | 2647 | graphemer@1.4.0: {} 2648 | 2649 | has-bigints@1.0.2: {} 2650 | 2651 | has-flag@4.0.0: {} 2652 | 2653 | has-property-descriptors@1.0.2: 2654 | dependencies: 2655 | es-define-property: 1.0.0 2656 | 2657 | has-proto@1.0.3: {} 2658 | 2659 | has-symbols@1.0.3: {} 2660 | 2661 | has-tostringtag@1.0.2: 2662 | dependencies: 2663 | has-symbols: 1.0.3 2664 | 2665 | hasown@2.0.1: 2666 | dependencies: 2667 | function-bind: 1.1.2 2668 | 2669 | highlight.js@11.9.0: {} 2670 | 2671 | ignore@5.3.1: {} 2672 | 2673 | import-fresh@3.3.0: 2674 | dependencies: 2675 | parent-module: 1.0.1 2676 | resolve-from: 4.0.0 2677 | 2678 | imurmurhash@0.1.4: {} 2679 | 2680 | internal-slot@1.0.7: 2681 | dependencies: 2682 | es-errors: 1.3.0 2683 | hasown: 2.0.1 2684 | side-channel: 1.0.5 2685 | 2686 | is-array-buffer@3.0.4: 2687 | dependencies: 2688 | call-bind: 1.0.7 2689 | get-intrinsic: 1.2.4 2690 | 2691 | is-async-function@2.0.0: 2692 | dependencies: 2693 | has-tostringtag: 1.0.2 2694 | 2695 | is-bigint@1.0.4: 2696 | dependencies: 2697 | has-bigints: 1.0.2 2698 | 2699 | is-boolean-object@1.1.2: 2700 | dependencies: 2701 | call-bind: 1.0.7 2702 | has-tostringtag: 1.0.2 2703 | 2704 | is-callable@1.2.7: {} 2705 | 2706 | is-core-module@2.13.1: 2707 | dependencies: 2708 | hasown: 2.0.1 2709 | 2710 | is-date-object@1.0.5: 2711 | dependencies: 2712 | has-tostringtag: 1.0.2 2713 | 2714 | is-extglob@2.1.1: {} 2715 | 2716 | is-finalizationregistry@1.0.2: 2717 | dependencies: 2718 | call-bind: 1.0.7 2719 | 2720 | is-fullwidth-code-point@3.0.0: {} 2721 | 2722 | is-generator-function@1.0.10: 2723 | dependencies: 2724 | has-tostringtag: 1.0.2 2725 | 2726 | is-glob@4.0.3: 2727 | dependencies: 2728 | is-extglob: 2.1.1 2729 | 2730 | is-map@2.0.2: {} 2731 | 2732 | is-negative-zero@2.0.3: {} 2733 | 2734 | is-number-object@1.0.7: 2735 | dependencies: 2736 | has-tostringtag: 1.0.2 2737 | 2738 | is-number@7.0.0: {} 2739 | 2740 | is-regex@1.1.4: 2741 | dependencies: 2742 | call-bind: 1.0.7 2743 | has-tostringtag: 1.0.2 2744 | 2745 | is-set@2.0.2: {} 2746 | 2747 | is-shared-array-buffer@1.0.2: 2748 | dependencies: 2749 | call-bind: 1.0.7 2750 | 2751 | is-string@1.0.7: 2752 | dependencies: 2753 | has-tostringtag: 1.0.2 2754 | 2755 | is-symbol@1.0.4: 2756 | dependencies: 2757 | has-symbols: 1.0.3 2758 | 2759 | is-typed-array@1.1.13: 2760 | dependencies: 2761 | which-typed-array: 1.1.14 2762 | 2763 | is-weakmap@2.0.1: {} 2764 | 2765 | is-weakref@1.0.2: 2766 | dependencies: 2767 | call-bind: 1.0.7 2768 | 2769 | is-weakset@2.0.2: 2770 | dependencies: 2771 | call-bind: 1.0.7 2772 | get-intrinsic: 1.2.4 2773 | 2774 | isarray@2.0.5: {} 2775 | 2776 | isexe@2.0.0: {} 2777 | 2778 | iterator.prototype@1.1.2: 2779 | dependencies: 2780 | define-properties: 1.2.1 2781 | get-intrinsic: 1.2.4 2782 | has-symbols: 1.0.3 2783 | reflect.getprototypeof: 1.0.5 2784 | set-function-name: 2.0.2 2785 | 2786 | jackspeak@2.3.6: 2787 | dependencies: 2788 | '@isaacs/cliui': 8.0.2 2789 | optionalDependencies: 2790 | '@pkgjs/parseargs': 0.11.0 2791 | 2792 | jiti@2.4.2: {} 2793 | 2794 | js-tokens@4.0.0: {} 2795 | 2796 | js-yaml@4.1.0: 2797 | dependencies: 2798 | argparse: 2.0.1 2799 | 2800 | json-buffer@3.0.1: {} 2801 | 2802 | json-schema-traverse@0.4.1: {} 2803 | 2804 | json-stable-stringify-without-jsonify@1.0.1: {} 2805 | 2806 | json5@1.0.2: 2807 | dependencies: 2808 | minimist: 1.2.8 2809 | 2810 | jsx-ast-utils@3.3.5: 2811 | dependencies: 2812 | array-includes: 3.1.7 2813 | array.prototype.flat: 1.3.2 2814 | object.assign: 4.1.5 2815 | object.values: 1.1.7 2816 | 2817 | keyv@4.5.4: 2818 | dependencies: 2819 | json-buffer: 3.0.1 2820 | 2821 | language-subtag-registry@0.3.22: {} 2822 | 2823 | language-tags@1.0.9: 2824 | dependencies: 2825 | language-subtag-registry: 0.3.22 2826 | 2827 | levn@0.4.1: 2828 | dependencies: 2829 | prelude-ls: 1.2.1 2830 | type-check: 0.4.0 2831 | 2832 | lightningcss-darwin-arm64@1.29.1: 2833 | optional: true 2834 | 2835 | lightningcss-darwin-x64@1.29.1: 2836 | optional: true 2837 | 2838 | lightningcss-freebsd-x64@1.29.1: 2839 | optional: true 2840 | 2841 | lightningcss-linux-arm-gnueabihf@1.29.1: 2842 | optional: true 2843 | 2844 | lightningcss-linux-arm64-gnu@1.29.1: 2845 | optional: true 2846 | 2847 | lightningcss-linux-arm64-musl@1.29.1: 2848 | optional: true 2849 | 2850 | lightningcss-linux-x64-gnu@1.29.1: 2851 | optional: true 2852 | 2853 | lightningcss-linux-x64-musl@1.29.1: 2854 | optional: true 2855 | 2856 | lightningcss-win32-arm64-msvc@1.29.1: 2857 | optional: true 2858 | 2859 | lightningcss-win32-x64-msvc@1.29.1: 2860 | optional: true 2861 | 2862 | lightningcss@1.29.1: 2863 | dependencies: 2864 | detect-libc: 1.0.3 2865 | optionalDependencies: 2866 | lightningcss-darwin-arm64: 1.29.1 2867 | lightningcss-darwin-x64: 1.29.1 2868 | lightningcss-freebsd-x64: 1.29.1 2869 | lightningcss-linux-arm-gnueabihf: 1.29.1 2870 | lightningcss-linux-arm64-gnu: 1.29.1 2871 | lightningcss-linux-arm64-musl: 1.29.1 2872 | lightningcss-linux-x64-gnu: 1.29.1 2873 | lightningcss-linux-x64-musl: 1.29.1 2874 | lightningcss-win32-arm64-msvc: 1.29.1 2875 | lightningcss-win32-x64-msvc: 1.29.1 2876 | 2877 | locate-path@6.0.0: 2878 | dependencies: 2879 | p-locate: 5.0.0 2880 | 2881 | lodash.merge@4.6.2: {} 2882 | 2883 | loose-envify@1.4.0: 2884 | dependencies: 2885 | js-tokens: 4.0.0 2886 | 2887 | lru-cache@10.2.0: {} 2888 | 2889 | lru-cache@6.0.0: 2890 | dependencies: 2891 | yallist: 4.0.0 2892 | 2893 | merge2@1.4.1: {} 2894 | 2895 | micromatch@4.0.5: 2896 | dependencies: 2897 | braces: 3.0.2 2898 | picomatch: 2.3.1 2899 | 2900 | minimatch@3.1.2: 2901 | dependencies: 2902 | brace-expansion: 1.1.11 2903 | 2904 | minimatch@9.0.3: 2905 | dependencies: 2906 | brace-expansion: 2.0.1 2907 | 2908 | minimatch@9.0.5: 2909 | dependencies: 2910 | brace-expansion: 2.0.1 2911 | 2912 | minimist@1.2.8: {} 2913 | 2914 | minipass@7.0.4: {} 2915 | 2916 | ms@2.1.2: {} 2917 | 2918 | ms@2.1.3: {} 2919 | 2920 | nanoid@3.3.7: {} 2921 | 2922 | natural-compare@1.4.0: {} 2923 | 2924 | next@14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 2925 | dependencies: 2926 | '@next/env': 14.2.15 2927 | '@swc/helpers': 0.5.5 2928 | busboy: 1.6.0 2929 | caniuse-lite: 1.0.30001655 2930 | graceful-fs: 4.2.11 2931 | postcss: 8.4.31 2932 | react: 18.3.1 2933 | react-dom: 18.3.1(react@18.3.1) 2934 | styled-jsx: 5.1.1(react@18.3.1) 2935 | optionalDependencies: 2936 | '@next/swc-darwin-arm64': 14.2.15 2937 | '@next/swc-darwin-x64': 14.2.15 2938 | '@next/swc-linux-arm64-gnu': 14.2.15 2939 | '@next/swc-linux-arm64-musl': 14.2.15 2940 | '@next/swc-linux-x64-gnu': 14.2.15 2941 | '@next/swc-linux-x64-musl': 14.2.15 2942 | '@next/swc-win32-arm64-msvc': 14.2.15 2943 | '@next/swc-win32-ia32-msvc': 14.2.15 2944 | '@next/swc-win32-x64-msvc': 14.2.15 2945 | transitivePeerDependencies: 2946 | - '@babel/core' 2947 | - babel-plugin-macros 2948 | 2949 | object-assign@4.1.1: {} 2950 | 2951 | object-inspect@1.13.1: {} 2952 | 2953 | object-keys@1.1.1: {} 2954 | 2955 | object.assign@4.1.5: 2956 | dependencies: 2957 | call-bind: 1.0.7 2958 | define-properties: 1.2.1 2959 | has-symbols: 1.0.3 2960 | object-keys: 1.1.1 2961 | 2962 | object.entries@1.1.7: 2963 | dependencies: 2964 | call-bind: 1.0.7 2965 | define-properties: 1.2.1 2966 | es-abstract: 1.22.4 2967 | 2968 | object.fromentries@2.0.7: 2969 | dependencies: 2970 | call-bind: 1.0.7 2971 | define-properties: 1.2.1 2972 | es-abstract: 1.22.4 2973 | 2974 | object.groupby@1.0.2: 2975 | dependencies: 2976 | array.prototype.filter: 1.0.3 2977 | call-bind: 1.0.7 2978 | define-properties: 1.2.1 2979 | es-abstract: 1.22.4 2980 | es-errors: 1.3.0 2981 | 2982 | object.hasown@1.1.3: 2983 | dependencies: 2984 | define-properties: 1.2.1 2985 | es-abstract: 1.22.4 2986 | 2987 | object.values@1.1.7: 2988 | dependencies: 2989 | call-bind: 1.0.7 2990 | define-properties: 1.2.1 2991 | es-abstract: 1.22.4 2992 | 2993 | optionator@0.9.3: 2994 | dependencies: 2995 | '@aashutoshrathi/word-wrap': 1.2.6 2996 | deep-is: 0.1.4 2997 | fast-levenshtein: 2.0.6 2998 | levn: 0.4.1 2999 | prelude-ls: 1.2.1 3000 | type-check: 0.4.0 3001 | 3002 | p-limit@3.1.0: 3003 | dependencies: 3004 | yocto-queue: 0.1.0 3005 | 3006 | p-locate@5.0.0: 3007 | dependencies: 3008 | p-limit: 3.1.0 3009 | 3010 | parent-module@1.0.1: 3011 | dependencies: 3012 | callsites: 3.1.0 3013 | 3014 | path-exists@4.0.0: {} 3015 | 3016 | path-key@3.1.1: {} 3017 | 3018 | path-parse@1.0.7: {} 3019 | 3020 | path-scurry@1.10.1: 3021 | dependencies: 3022 | lru-cache: 10.2.0 3023 | minipass: 7.0.4 3024 | 3025 | path-type@4.0.0: {} 3026 | 3027 | picocolors@1.1.0: {} 3028 | 3029 | picomatch@2.3.1: {} 3030 | 3031 | possible-typed-array-names@1.0.0: {} 3032 | 3033 | postcss@8.4.31: 3034 | dependencies: 3035 | nanoid: 3.3.7 3036 | picocolors: 1.1.0 3037 | source-map-js: 1.2.1 3038 | 3039 | postcss@8.4.47: 3040 | dependencies: 3041 | nanoid: 3.3.7 3042 | picocolors: 1.1.0 3043 | source-map-js: 1.2.1 3044 | 3045 | prelude-ls@1.2.1: {} 3046 | 3047 | prettier-plugin-tailwindcss@0.6.11(prettier@3.3.3): 3048 | dependencies: 3049 | prettier: 3.3.3 3050 | 3051 | prettier@3.3.3: {} 3052 | 3053 | prop-types@15.8.1: 3054 | dependencies: 3055 | loose-envify: 1.4.0 3056 | object-assign: 4.1.1 3057 | react-is: 16.13.1 3058 | 3059 | punycode@2.3.1: {} 3060 | 3061 | queue-microtask@1.2.3: {} 3062 | 3063 | react-dom@18.3.1(react@18.3.1): 3064 | dependencies: 3065 | loose-envify: 1.4.0 3066 | react: 18.3.1 3067 | scheduler: 0.23.2 3068 | 3069 | react-is@16.13.1: {} 3070 | 3071 | react@18.3.1: 3072 | dependencies: 3073 | loose-envify: 1.4.0 3074 | 3075 | reflect.getprototypeof@1.0.5: 3076 | dependencies: 3077 | call-bind: 1.0.7 3078 | define-properties: 1.2.1 3079 | es-abstract: 1.22.4 3080 | es-errors: 1.3.0 3081 | get-intrinsic: 1.2.4 3082 | globalthis: 1.0.3 3083 | which-builtin-type: 1.1.3 3084 | 3085 | regenerator-runtime@0.14.1: {} 3086 | 3087 | regexp.prototype.flags@1.5.2: 3088 | dependencies: 3089 | call-bind: 1.0.7 3090 | define-properties: 1.2.1 3091 | es-errors: 1.3.0 3092 | set-function-name: 2.0.2 3093 | 3094 | resolve-from@4.0.0: {} 3095 | 3096 | resolve-pkg-maps@1.0.0: {} 3097 | 3098 | resolve@1.22.8: 3099 | dependencies: 3100 | is-core-module: 2.13.1 3101 | path-parse: 1.0.7 3102 | supports-preserve-symlinks-flag: 1.0.0 3103 | 3104 | resolve@2.0.0-next.5: 3105 | dependencies: 3106 | is-core-module: 2.13.1 3107 | path-parse: 1.0.7 3108 | supports-preserve-symlinks-flag: 1.0.0 3109 | 3110 | reusify@1.0.4: {} 3111 | 3112 | run-parallel@1.2.0: 3113 | dependencies: 3114 | queue-microtask: 1.2.3 3115 | 3116 | safe-array-concat@1.1.0: 3117 | dependencies: 3118 | call-bind: 1.0.7 3119 | get-intrinsic: 1.2.4 3120 | has-symbols: 1.0.3 3121 | isarray: 2.0.5 3122 | 3123 | safe-regex-test@1.0.3: 3124 | dependencies: 3125 | call-bind: 1.0.7 3126 | es-errors: 1.3.0 3127 | is-regex: 1.1.4 3128 | 3129 | scheduler@0.23.2: 3130 | dependencies: 3131 | loose-envify: 1.4.0 3132 | 3133 | semver@6.3.1: {} 3134 | 3135 | semver@7.6.0: 3136 | dependencies: 3137 | lru-cache: 6.0.0 3138 | 3139 | server-only@0.0.1: {} 3140 | 3141 | set-function-length@1.2.1: 3142 | dependencies: 3143 | define-data-property: 1.1.4 3144 | es-errors: 1.3.0 3145 | function-bind: 1.1.2 3146 | get-intrinsic: 1.2.4 3147 | gopd: 1.0.1 3148 | has-property-descriptors: 1.0.2 3149 | 3150 | set-function-name@2.0.2: 3151 | dependencies: 3152 | define-data-property: 1.1.4 3153 | es-errors: 1.3.0 3154 | functions-have-names: 1.2.3 3155 | has-property-descriptors: 1.0.2 3156 | 3157 | shebang-command@2.0.0: 3158 | dependencies: 3159 | shebang-regex: 3.0.0 3160 | 3161 | shebang-regex@3.0.0: {} 3162 | 3163 | side-channel@1.0.5: 3164 | dependencies: 3165 | call-bind: 1.0.7 3166 | es-errors: 1.3.0 3167 | get-intrinsic: 1.2.4 3168 | object-inspect: 1.13.1 3169 | 3170 | signal-exit@4.1.0: {} 3171 | 3172 | simple-markdown@0.7.3: 3173 | dependencies: 3174 | '@types/react': 18.3.12 3175 | 3176 | slash@3.0.0: {} 3177 | 3178 | source-map-js@1.2.1: {} 3179 | 3180 | streamsearch@1.1.0: {} 3181 | 3182 | string-width@4.2.3: 3183 | dependencies: 3184 | emoji-regex: 8.0.0 3185 | is-fullwidth-code-point: 3.0.0 3186 | strip-ansi: 6.0.1 3187 | 3188 | string-width@5.1.2: 3189 | dependencies: 3190 | eastasianwidth: 0.2.0 3191 | emoji-regex: 9.2.2 3192 | strip-ansi: 7.1.0 3193 | 3194 | string.prototype.matchall@4.0.10: 3195 | dependencies: 3196 | call-bind: 1.0.7 3197 | define-properties: 1.2.1 3198 | es-abstract: 1.22.4 3199 | get-intrinsic: 1.2.4 3200 | has-symbols: 1.0.3 3201 | internal-slot: 1.0.7 3202 | regexp.prototype.flags: 1.5.2 3203 | set-function-name: 2.0.2 3204 | side-channel: 1.0.5 3205 | 3206 | string.prototype.trim@1.2.8: 3207 | dependencies: 3208 | call-bind: 1.0.7 3209 | define-properties: 1.2.1 3210 | es-abstract: 1.22.4 3211 | 3212 | string.prototype.trimend@1.0.7: 3213 | dependencies: 3214 | call-bind: 1.0.7 3215 | define-properties: 1.2.1 3216 | es-abstract: 1.22.4 3217 | 3218 | string.prototype.trimstart@1.0.7: 3219 | dependencies: 3220 | call-bind: 1.0.7 3221 | define-properties: 1.2.1 3222 | es-abstract: 1.22.4 3223 | 3224 | strip-ansi@6.0.1: 3225 | dependencies: 3226 | ansi-regex: 5.0.1 3227 | 3228 | strip-ansi@7.1.0: 3229 | dependencies: 3230 | ansi-regex: 6.0.1 3231 | 3232 | strip-bom@3.0.0: {} 3233 | 3234 | strip-json-comments@3.1.1: {} 3235 | 3236 | styled-jsx@5.1.1(react@18.3.1): 3237 | dependencies: 3238 | client-only: 0.0.1 3239 | react: 18.3.1 3240 | 3241 | supports-color@7.2.0: 3242 | dependencies: 3243 | has-flag: 4.0.0 3244 | 3245 | supports-preserve-symlinks-flag@1.0.0: {} 3246 | 3247 | tailwind-merge@2.5.4: {} 3248 | 3249 | tailwind-scrollbar-hide@1.1.7: {} 3250 | 3251 | tailwindcss@4.0.0: {} 3252 | 3253 | tailwindcss@4.0.4: {} 3254 | 3255 | tapable@2.2.1: {} 3256 | 3257 | text-table@0.2.0: {} 3258 | 3259 | to-regex-range@5.0.1: 3260 | dependencies: 3261 | is-number: 7.0.0 3262 | 3263 | ts-api-utils@1.2.1(typescript@5.6.3): 3264 | dependencies: 3265 | typescript: 5.6.3 3266 | 3267 | ts-api-utils@1.3.0(typescript@5.6.3): 3268 | dependencies: 3269 | typescript: 5.6.3 3270 | 3271 | tsconfig-paths@3.15.0: 3272 | dependencies: 3273 | '@types/json5': 0.0.29 3274 | json5: 1.0.2 3275 | minimist: 1.2.8 3276 | strip-bom: 3.0.0 3277 | 3278 | tslib@2.6.2: {} 3279 | 3280 | type-check@0.4.0: 3281 | dependencies: 3282 | prelude-ls: 1.2.1 3283 | 3284 | typed-array-buffer@1.0.2: 3285 | dependencies: 3286 | call-bind: 1.0.7 3287 | es-errors: 1.3.0 3288 | is-typed-array: 1.1.13 3289 | 3290 | typed-array-byte-length@1.0.0: 3291 | dependencies: 3292 | call-bind: 1.0.7 3293 | for-each: 0.3.3 3294 | has-proto: 1.0.3 3295 | is-typed-array: 1.1.13 3296 | 3297 | typed-array-byte-offset@1.0.1: 3298 | dependencies: 3299 | available-typed-arrays: 1.0.7 3300 | call-bind: 1.0.7 3301 | for-each: 0.3.3 3302 | gopd: 1.0.1 3303 | has-proto: 1.0.3 3304 | is-typed-array: 1.1.13 3305 | 3306 | typed-array-length@1.0.4: 3307 | dependencies: 3308 | call-bind: 1.0.7 3309 | for-each: 0.3.3 3310 | is-typed-array: 1.1.13 3311 | 3312 | typescript@5.6.3: {} 3313 | 3314 | unbox-primitive@1.0.2: 3315 | dependencies: 3316 | call-bind: 1.0.7 3317 | has-bigints: 1.0.2 3318 | has-symbols: 1.0.3 3319 | which-boxed-primitive: 1.0.2 3320 | 3321 | undici-types@6.19.8: {} 3322 | 3323 | uri-js@4.4.1: 3324 | dependencies: 3325 | punycode: 2.3.1 3326 | 3327 | use-lanyard@1.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 3328 | dependencies: 3329 | react: 18.3.1 3330 | react-dom: 18.3.1(react@18.3.1) 3331 | 3332 | which-boxed-primitive@1.0.2: 3333 | dependencies: 3334 | is-bigint: 1.0.4 3335 | is-boolean-object: 1.1.2 3336 | is-number-object: 1.0.7 3337 | is-string: 1.0.7 3338 | is-symbol: 1.0.4 3339 | 3340 | which-builtin-type@1.1.3: 3341 | dependencies: 3342 | function.prototype.name: 1.1.6 3343 | has-tostringtag: 1.0.2 3344 | is-async-function: 2.0.0 3345 | is-date-object: 1.0.5 3346 | is-finalizationregistry: 1.0.2 3347 | is-generator-function: 1.0.10 3348 | is-regex: 1.1.4 3349 | is-weakref: 1.0.2 3350 | isarray: 2.0.5 3351 | which-boxed-primitive: 1.0.2 3352 | which-collection: 1.0.1 3353 | which-typed-array: 1.1.14 3354 | 3355 | which-collection@1.0.1: 3356 | dependencies: 3357 | is-map: 2.0.2 3358 | is-set: 2.0.2 3359 | is-weakmap: 2.0.1 3360 | is-weakset: 2.0.2 3361 | 3362 | which-typed-array@1.1.14: 3363 | dependencies: 3364 | available-typed-arrays: 1.0.7 3365 | call-bind: 1.0.7 3366 | for-each: 0.3.3 3367 | gopd: 1.0.1 3368 | has-tostringtag: 1.0.2 3369 | 3370 | which@2.0.2: 3371 | dependencies: 3372 | isexe: 2.0.0 3373 | 3374 | wrap-ansi@7.0.0: 3375 | dependencies: 3376 | ansi-styles: 4.3.0 3377 | string-width: 4.2.3 3378 | strip-ansi: 6.0.1 3379 | 3380 | wrap-ansi@8.1.0: 3381 | dependencies: 3382 | ansi-styles: 6.2.1 3383 | string-width: 5.1.2 3384 | strip-ansi: 7.1.0 3385 | 3386 | yallist@4.0.0: {} 3387 | 3388 | yocto-queue@0.1.0: {} 3389 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | '@tailwindcss/postcss': {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /public/default-appAsset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plskz/lanyard-visualizer/03763abd974c16c7381fa9438cfe183a803035ac/public/default-appAsset.png -------------------------------------------------------------------------------- /public/default-avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plskz/lanyard-visualizer/03763abd974c16c7381fa9438cfe183a803035ac/public/default-avatar.png -------------------------------------------------------------------------------- /public/favicon-dev.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plskz/lanyard-visualizer/03763abd974c16c7381fa9438cfe183a803035ac/public/favicon-dev.ico -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plskz/lanyard-visualizer/03763abd974c16c7381fa9438cfe183a803035ac/public/favicon.ico -------------------------------------------------------------------------------- /public/lanyard-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plskz/lanyard-visualizer/03763abd974c16c7381fa9438cfe183a803035ac/public/lanyard-logo.png -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- 1 | @import 'tailwindcss'; 2 | 3 | @theme { 4 | --animate-spotlight: spotlight 2s ease 0.75s 1 forwards; 5 | 6 | @keyframes spotlight { 7 | 0% { 8 | opacity: 0; 9 | transform: translate(-72%, -62%) scale(0.5); 10 | } 11 | 100% { 12 | opacity: 1; 13 | transform: translate(-50%, -40%) scale(1); 14 | } 15 | } 16 | } 17 | 18 | /* 19 | The default border color has changed to `currentColor` in Tailwind CSS v4, 20 | so we've added these compatibility styles to make sure everything still 21 | looks the same as it did with Tailwind CSS v3. 22 | 23 | If we ever want to remove these styles, we need to add an explicit border 24 | color utility to any element that depends on these defaults. 25 | */ 26 | @layer base { 27 | *, 28 | ::after, 29 | ::before, 30 | ::backdrop, 31 | ::file-selector-button { 32 | border-color: var(--color-gray-200, currentColor); 33 | } 34 | } 35 | 36 | @layer base { 37 | body { 38 | @apply bg-neutral-950 bg-[radial-gradient(ellipse_80%_80%_at_50%_-20%,rgba(120,119,198,0.3),rgba(255,255,255,0))] text-white; 39 | } 40 | } 41 | 42 | .d-emoji { 43 | object-fit: contain; 44 | width: 22px; 45 | height: 22px; 46 | vertical-align: bottom; 47 | display: inline-block; 48 | } 49 | 50 | body::before, 51 | body::after { 52 | position: absolute; 53 | left: 0; 54 | top: 0; 55 | content: ""; 56 | width: 100%; 57 | height: 100%; 58 | z-index: -1; 59 | opacity: 7%; 60 | } 61 | 62 | body::before { 63 | filter: url(#noiseFilter); 64 | } 65 | -------------------------------------------------------------------------------- /src/app/hooks/useTime.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react' 2 | import { Timestamps } from 'use-lanyard' 3 | 4 | const padding = (n: number) => (n < 10 ? `0${n}` : n) 5 | 6 | const DAY = 1000 * 60 * 60 * 24 7 | const HOUR = 1000 * 60 * 60 8 | const MINUTE = 1000 * 60 9 | const SECOND = 1000 10 | 11 | type Times = 12 | | { 13 | start: string 14 | end: null 15 | completion: null 16 | } 17 | | { 18 | start: string 19 | end: string 20 | completion: number 21 | } 22 | | { 23 | start: null 24 | end: string 25 | completion: number 26 | } 27 | 28 | const getTime = (timestamps?: Timestamps): Times | null => { 29 | if (!timestamps) return null 30 | 31 | const { start, end } = timestamps 32 | 33 | if (!start && !end) return null 34 | 35 | const now = new Date() 36 | const startDate = start ? new Date(start) : now 37 | const miliseconds = now.getTime() - startDate.getTime() 38 | const days = Math.floor(miliseconds / DAY) 39 | const hours = Math.floor((miliseconds % DAY) / HOUR) 40 | const minutes = Math.floor((miliseconds % HOUR) / MINUTE) 41 | const seconds = Math.floor((miliseconds % MINUTE) / SECOND) 42 | 43 | if (!end) { 44 | if (days > 0) 45 | return { 46 | start: `${days > 1 ? `${days} days` : `${days} day`}`, 47 | end: null, 48 | completion: null, 49 | } 50 | 51 | return { 52 | start: `${hours ? `${hours}:` : ''}${padding(minutes)}:${padding( 53 | seconds 54 | )}`, 55 | end: null, 56 | completion: null, 57 | } 58 | } 59 | 60 | const endDate = new Date(end) 61 | const endMiliseconds = endDate.getTime() - startDate.getTime() 62 | const endHours = Math.floor(endMiliseconds / HOUR) 63 | const endMinutes = Math.floor((endMiliseconds % HOUR) / MINUTE) 64 | const endSeconds = Math.floor((endMiliseconds % MINUTE) / SECOND) 65 | 66 | const calc = Math.floor((miliseconds / endMiliseconds) * 10000) / 100 67 | 68 | if (!start) { 69 | return { 70 | start: null, 71 | end: `${endHours ? `${endHours}:` : ''}${padding(endMinutes)}:${padding( 72 | endSeconds 73 | )}`, 74 | completion: calc > 100 ? 100 : calc, 75 | } 76 | } 77 | 78 | return { 79 | start: `${hours ? `${hours}:` : ''}${padding(minutes)}:${padding(seconds)}`, 80 | end: `${endHours ? `${endHours}:` : ''}${padding(endMinutes)}:${padding( 81 | endSeconds 82 | )}`, 83 | completion: calc > 100 ? 100 : calc, 84 | } 85 | } 86 | 87 | export const useTime = (timestamps?: Timestamps) => { 88 | const [time, setTime] = useState(getTime(timestamps)) 89 | 90 | useEffect(() => { 91 | if (!timestamps) return setTime(null) 92 | 93 | const interval = setInterval(() => { 94 | setTime(getTime(timestamps)) 95 | }, 200) 96 | 97 | return () => clearInterval(interval) 98 | }, [timestamps]) 99 | 100 | return time 101 | } 102 | -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next"; 2 | import { Inter } from "next/font/google"; 3 | import "./globals.css"; 4 | 5 | import { Analytics } from "@vercel/analytics/react"; 6 | import { SpeedInsights } from "@vercel/speed-insights/next"; 7 | import { Noise } from "@/components/ui/background-noise"; 8 | 9 | const inter = Inter({ subsets: ["latin"] }); 10 | 11 | export const metadata: Metadata = { 12 | title: "Lanyard Visualizer", 13 | description: "Display your Discord status online using Lanyard API", 14 | icons: [ 15 | { 16 | rel: "icon", 17 | url: 18 | process.env.NODE_ENV === "production" 19 | ? "/favicon.ico" 20 | : "/favicon-dev.ico", 21 | }, 22 | ], 23 | }; 24 | 25 | export default function RootLayout({ 26 | children, 27 | }: Readonly<{ 28 | children: React.ReactNode; 29 | }>) { 30 | return ( 31 | 32 | 33 | {children} 34 | 35 | 36 | {/* vercel */} 37 | 38 | 39 | 40 | 41 | ); 42 | } 43 | -------------------------------------------------------------------------------- /src/app/not-found.tsx: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | 3 | export default function NotFound() { 4 | return ( 5 |
6 |
7 |

8 | Page not found 9 |

10 | 14 | Return Home 15 | 16 |
17 |
18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import { GitHubIcon } from "@/components/icons/github"; 2 | import Input from "@/components/ui/input"; 3 | import { Spotlight } from "@/components/ui/spotlight"; 4 | import Image from "next/image"; 5 | 6 | export default function Home() { 7 | return ( 8 |
9 | 13 | 14 |
15 | lanyard logo 22 | 23 |

24 | Lanyard 25 | 26 | Visualizer 27 | 28 |

29 | 30 |

31 | A proof-of-concept example to show what you can build with Lanyard 32 | API. 33 |

34 | 35 | 36 |
37 | 38 | 39 |
40 | ); 41 | } 42 | -------------------------------------------------------------------------------- /src/app/profile/[id]/error.tsx: -------------------------------------------------------------------------------- 1 | "use client"; // Error components must be Client Components 2 | 3 | import Link from "next/link"; 4 | import { useEffect } from "react"; 5 | 6 | export default function Error({ 7 | error, 8 | reset, 9 | }: { 10 | error: Error & { digest?: string }; 11 | reset: () => void; 12 | }) { 13 | useEffect(() => { 14 | console.error(error); 15 | }, [error]); 16 | 17 | return ( 18 |
19 |
20 |

21 | {error.message} 22 |

23 |

24 | Make sure you entered a valid Discord user ID and make sure the user 25 | is in{" "} 26 | 31 | Lanyard's Discord server 32 | 33 | . Reload the page after you join the Discord server or try with an 34 | user ID who is already in Discord. 35 |

36 | 40 | Return Home 41 | 42 |
43 |
44 | ); 45 | } 46 | -------------------------------------------------------------------------------- /src/app/profile/[id]/page.tsx: -------------------------------------------------------------------------------- 1 | import Activities from "@/components/activities"; 2 | import Details from "@/components/details"; 3 | import SocialLinks from "@/components/social-links"; 4 | import { Icon } from "@/components/ui/evervault-card"; 5 | import { getBio, getSocials } from "@/utils/lanyard"; 6 | import Link from "next/link"; 7 | 8 | export default async function Page({ params }: { params: { id: string } }) { 9 | const socials = await getSocials(params.id); 10 | const bio = await getBio(params.id); 11 | 12 | return ( 13 |
14 |
15 | 16 | 17 | 18 | 19 | 20 |
21 |
22 |
23 | 24 |
25 |
26 | 27 |
28 |
29 |
30 | 31 | 35 | Return Home 36 | 37 |
38 | ); 39 | } 40 | -------------------------------------------------------------------------------- /src/app/template.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { motion } from "framer-motion"; 4 | 5 | export default function Template({ children }: { children: React.ReactNode }) { 6 | return ( 7 | 12 | {children} 13 | 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /src/components/activities.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { getActivity } from "@/utils/activity"; 4 | import { appAsset } from "@/utils/discord-cdn"; 5 | import Image from "next/image"; 6 | import { useLanyardWS } from "use-lanyard"; 7 | import { ActivitiesSkeleton } from "./skeletons"; 8 | import Timestamps from "./timestamps"; 9 | import Link from "next/link"; 10 | 11 | export default function Activities({ userID }: { userID: any }) { 12 | const data = useLanyardWS(userID); 13 | 14 | if (!data) return ; 15 | if (JSON.stringify(data) === "{}") throw new Error("User not found"); 16 | 17 | const { activities } = data; 18 | 19 | // don't show custom status 20 | const filteredActivities = activities.filter( 21 | (activity) => activity.type !== 4, 22 | ); 23 | 24 | // No activities 25 | if (!filteredActivities.length) { 26 | return ( 27 |
28 |

I'm not currently doing anything!

29 |
30 | ); 31 | } 32 | 33 | return ( 34 |
35 |
36 | {filteredActivities.map((activity) => { 37 | const { name, id, details, state, timestamps, type } = activity; 38 | 39 | const largeImage = appAsset(activity); 40 | 41 | // Listening to Spotify 42 | if (name === "Spotify") { 43 | const { song, artist, album_art_url, track_id } = data.spotify!; 44 | 45 | return ( 46 |
47 | album art 54 | 55 |
56 |

{getActivity(activity)}

57 | 62 |

{song}

63 | 64 |

by {artist}

65 | 66 | 67 |
68 |
69 | ); 70 | } 71 | 72 | return ( 73 |
74 | app icon 81 | 82 |
83 |

{getActivity(activity)}

84 | 85 |

{details}

86 |

{state}

87 | 88 | 89 |
90 |
91 | ); 92 | })} 93 |
94 |
95 | ); 96 | } 97 | -------------------------------------------------------------------------------- /src/components/details.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { avatarUri } from "@/utils/discord-cdn"; 4 | import { toHTML } from "discord-markdown"; 5 | import { useLanyardWS } from "use-lanyard"; 6 | import { DetailsSkeleton } from "./skeletons"; 7 | import { EvervaultCard } from "./ui/evervault-card"; 8 | 9 | export default function Details({ userID, bio }: { userID: any; bio: string }) { 10 | const data = useLanyardWS(userID); 11 | 12 | if (!data) return ; 13 | if (JSON.stringify(data) === "{}") throw new Error("User not found"); 14 | 15 | const { id, avatar, global_name, username } = data.discord_user; 16 | const userAvatar = avatarUri(id, avatar!); 17 | 18 | return ( 19 | <> 20 | 21 |

{global_name || username}

22 | {bio && ( 23 |
28 | )} 29 | 30 | ); 31 | } 32 | -------------------------------------------------------------------------------- /src/components/icons/github.tsx: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | import { SVGProps } from "react"; 3 | 4 | export function GitHubIcon(props: SVGProps) { 5 | return ( 6 | 7 | 15 | 22 | 23 | 24 | 25 | 26 | 27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /src/components/skeletons.tsx: -------------------------------------------------------------------------------- 1 | import { EvervaultCard } from "./ui/evervault-card"; 2 | 3 | export function DetailsSkeleton() { 4 | return ( 5 | <> 6 | 7 |

Loading...

8 | 9 | ); 10 | } 11 | 12 | export function ActivitiesSkeleton() { 13 | return ( 14 |
15 |

Loading...

16 |
17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /src/components/social-links.tsx: -------------------------------------------------------------------------------- 1 | import { ConnectedAccount } from "@/utils/types"; 2 | import Link from "next/link"; 3 | 4 | export default async function SocialLinks({ 5 | socials, 6 | }: { 7 | socials: ConnectedAccount[]; 8 | }) { 9 | if (!socials) return null; 10 | 11 | return ( 12 |
13 | {socials.map(({ type, id, name, href }) => ( 14 |

18 | {type === "domain" ? name : type} 19 |

20 | ))} 21 |
22 | ); 23 | } 24 | -------------------------------------------------------------------------------- /src/components/timestamps.tsx: -------------------------------------------------------------------------------- 1 | import { useTime } from "@/app/hooks/useTime"; 2 | import type { Timestamps } from "use-lanyard"; 3 | 4 | export default function Timestamps({ 5 | timestamps, 6 | type, 7 | }: { 8 | timestamps?: Timestamps; 9 | type: number; 10 | }) { 11 | const time = useTime(timestamps); 12 | 13 | if (!time) return null; 14 | 15 | if (type === 2) { 16 | return ( 17 |
18 |
24 |
28 |
29 |
30 |

{time.start}

31 |

{time.end}

32 |
33 |
34 | ); 35 | } 36 | 37 | if (time.start && !time.end) return

{time.start} elapsed

; 38 | if (time.end && !time.start) return

{time.end} left

; 39 | 40 | return null; 41 | } 42 | -------------------------------------------------------------------------------- /src/components/ui/background-noise.tsx: -------------------------------------------------------------------------------- 1 | export function Noise() { 2 | return ( 3 | 4 | 5 | 10 | 11 | 12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /src/components/ui/evervault-card.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { cn } from "@/utils/cn"; 4 | import { motion, useMotionTemplate, useMotionValue } from "framer-motion"; 5 | import Image from "next/image"; 6 | import { useEffect, useState } from "react"; 7 | 8 | export const EvervaultCard = ({ 9 | userAvatar, 10 | status, 11 | className, 12 | }: { 13 | userAvatar: string; 14 | status: string; 15 | className?: string; 16 | }) => { 17 | let mouseX = useMotionValue(0); 18 | let mouseY = useMotionValue(0); 19 | 20 | const [randomString, setRandomString] = useState(""); 21 | 22 | useEffect(() => { 23 | let str = generateRandomString(1500); 24 | setRandomString(str); 25 | }, []); 26 | 27 | function onMouseMove({ currentTarget, clientX, clientY }: any) { 28 | let { left, top } = currentTarget.getBoundingClientRect(); 29 | mouseX.set(clientX - left); 30 | mouseY.set(clientY - top); 31 | 32 | const str = generateRandomString(1500); 33 | setRandomString(str); 34 | } 35 | 36 | return ( 37 |
43 |
47 | 52 |
53 |
54 |
55 | {/* Text */} 56 | Discord Profile 69 |
70 |
71 |
72 |
73 | ); 74 | }; 75 | 76 | export function CardPattern({ mouseX, mouseY, randomString }: any) { 77 | let maskImage = useMotionTemplate`radial-gradient(250px at ${mouseX}px ${mouseY}px, white, transparent)`; 78 | let style = { maskImage, WebkitMaskImage: maskImage }; 79 | 80 | return ( 81 |
82 |
83 | 87 | 91 |

92 | {randomString} 93 |

94 |
95 |
96 | ); 97 | } 98 | 99 | const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; 100 | export const generateRandomString = (length: number) => { 101 | let result = ""; 102 | for (let i = 0; i < length; i++) { 103 | result += characters.charAt(Math.floor(Math.random() * characters.length)); 104 | } 105 | return result; 106 | }; 107 | 108 | export const Icon = ({ className, ...rest }: any) => { 109 | return ( 110 | 119 | 120 | 121 | ); 122 | }; 123 | -------------------------------------------------------------------------------- /src/components/ui/input.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { useRouter } from "next/navigation"; 4 | import { FormEvent } from "react"; 5 | 6 | export default function Input() { 7 | const router = useRouter(); 8 | 9 | function onSubmit(e: FormEvent) { 10 | e.preventDefault(); 11 | const discordId = e.currentTarget.discordId.value; 12 | router.push(`/profile/${discordId}`); 13 | } 14 | 15 | return ( 16 |
20 | 26 | 27 |
28 | 34 |
35 |
36 | ); 37 | } 38 | -------------------------------------------------------------------------------- /src/components/ui/spotlight.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { cn } from "@/utils/cn"; 3 | 4 | type SpotlightProps = { 5 | className?: string; 6 | fill?: string; 7 | }; 8 | 9 | export const Spotlight = ({ className, fill }: SpotlightProps) => { 10 | return ( 11 | 20 | 21 | 30 | 31 | 32 | 41 | 42 | 48 | 52 | 53 | 54 | 55 | ); 56 | }; 57 | -------------------------------------------------------------------------------- /src/utils/activity.ts: -------------------------------------------------------------------------------- 1 | export const stringFromType = (type: number) => { 2 | switch (type) { 3 | case 0: 4 | return 'Playing' 5 | case 1: 6 | return 'Streaming' 7 | case 2: 8 | return 'Listening to' 9 | case 3: 10 | return 'Watching' 11 | default: 12 | return '' 13 | } 14 | } 15 | export const getActivity = (activity: any) => { 16 | // remove the 'Playing' prefix 17 | // if (activity.type === 0) return activity.name 18 | 19 | return `${stringFromType(activity.type)} ${activity.name}` 20 | } 21 | -------------------------------------------------------------------------------- /src/utils/cn.ts: -------------------------------------------------------------------------------- 1 | import { ClassValue, clsx } from 'clsx' 2 | import { twMerge } from 'tailwind-merge' 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)) 6 | } 7 | -------------------------------------------------------------------------------- /src/utils/discord-cdn.ts: -------------------------------------------------------------------------------- 1 | import { Activity } from 'use-lanyard' 2 | 3 | export const userProfileLink = (id: string) => `https://discord.com/users/${id}` 4 | 5 | export const avatarUri = (id: string, avatarHash: string) => { 6 | if (!avatarHash) return '/default-avatar.png' 7 | 8 | // if hash starts with a_ it's animated 9 | if (avatarHash.startsWith('a_')) return `https://cdn.discordapp.com/avatars/${id}/${avatarHash}.gif?size=256` 10 | 11 | return `https://cdn.discordapp.com/avatars/${id}/${avatarHash}.png?size=256` 12 | } 13 | 14 | export const appAsset = (activity: Activity) => { 15 | const { application_id, assets, name } = activity 16 | 17 | // custom assets 18 | if (name === 'Figma') return 'https://i.imgur.com/gXxhZ4A.png' 19 | if (name === 'Blender') return 'https://i.imgur.com/aOBW69f.png' 20 | 21 | // @ts-ignore - temporary support for ps4 zzzz 22 | if (activity.platform === 'ps4') return `https://media.discordapp.net/${assets?.small_image.split(':')[1]}` 23 | 24 | // external discord asset thing 25 | const split = assets?.large_image.split(':') || [] 26 | if (split.length > 1) return `https://media.discordapp.net/${split[1]}` 27 | 28 | // Used for the Discord Verified Games that don't have assets keys attached to them in Lanyard 29 | if (application_id && !assets) return `https://dcdn.dstn.to/app-icons/${application_id}.png?size=256` 30 | 31 | // default app asset 32 | if (!application_id && !assets) return '/default-appAsset.png' 33 | 34 | return `https://cdn.discordapp.com/app-assets/${application_id}/${assets!.large_image}.png?size=256` 35 | } 36 | -------------------------------------------------------------------------------- /src/utils/lanyard.ts: -------------------------------------------------------------------------------- 1 | 'use server' 2 | 3 | import { ConnectedAccount } from './types' 4 | 5 | export const getSocials = async (id: string) => { 6 | const data = await fetch(`https://dcdn.dstn.to/profile/${id}`, { 7 | next: { revalidate: 3600 }, 8 | }) 9 | const res = await data.json() 10 | 11 | const socials: ConnectedAccount[] = res.connected_accounts 12 | 13 | const generateHref = ({ type, name, id }: ConnectedAccount): string => { 14 | switch (type) { 15 | case 'paypal': 16 | return `https://www.paypal.me/${name}` 17 | case 'reddit': 18 | return `https://reddit.com/u/${name}` 19 | case 'steam': 20 | return `https://steamcommunity.com/id/${name}` 21 | case 'tiktok': 22 | return `https://www.tiktok.com/@${name}` 23 | case 'twitter': 24 | return `https://twitter.com/${name}` 25 | case 'ebay': 26 | return `https://www.ebay.com/usr/${name}` 27 | case 'crunchyroll': 28 | return `https://www.crunchyroll.com/user/${name}` 29 | case 'playstationnetwork': 30 | return `https://my.playstation.com/profile/${name}` 31 | case 'xbox': 32 | return `https://account.xbox.com/en-us/profile?gamertag=${name}` 33 | case 'battle.net': 34 | return `https://battle.net/${name}` 35 | case 'domain': 36 | return `https://${name}` 37 | case 'epicgames': 38 | return `https://www.epicgames.com/account/profile` 39 | case 'instagram': 40 | return `https://instagram.com/${name}` 41 | case 'leagueoflegends': 42 | return `https://na.op.gg/summoner/userName=${name}` 43 | case 'riot games': 44 | return `https://na.leagueoflegends.com/en-us/summoner/${id}` 45 | case 'youtube': 46 | return `https://www.youtube.com/channel/${id}` 47 | case 'spotify': 48 | return `https://open.spotify.com/user/${id}` 49 | case 'facebook': 50 | return `https://www.facebook.com/${id}` 51 | case 'github': 52 | return `https://github.com/${name}` 53 | case 'twitch': 54 | return `https://www.twitch.tv/${name}` 55 | default: 56 | return `https://google.com/search?q=${name}` 57 | } 58 | } 59 | 60 | socials?.map((account: ConnectedAccount) => { 61 | account.href = generateHref(account) 62 | return account 63 | }) 64 | 65 | return socials 66 | } 67 | 68 | export const getBio = async (id: string) => { 69 | const data = await fetch(`https://dcdn.dstn.to/profile/${id}`, { 70 | next: { revalidate: 3600 }, 71 | }) 72 | const res = await data.json() 73 | 74 | return res?.user?.bio 75 | } 76 | -------------------------------------------------------------------------------- /src/utils/types.ts: -------------------------------------------------------------------------------- 1 | export interface ConnectedAccount { 2 | type: string 3 | id: string 4 | name: string 5 | href: string 6 | metadata?: Record 7 | verified: boolean 8 | } 9 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["dom", "dom.iterable", "esnext"], 4 | "allowJs": true, 5 | "skipLibCheck": true, 6 | "strict": true, 7 | "noEmit": true, 8 | "esModuleInterop": true, 9 | "module": "esnext", 10 | "moduleResolution": "bundler", 11 | "resolveJsonModule": true, 12 | "isolatedModules": true, 13 | "jsx": "preserve", 14 | "incremental": true, 15 | "plugins": [ 16 | { 17 | "name": "next" 18 | } 19 | ], 20 | "paths": { 21 | "@/*": ["./src/*"] 22 | } 23 | }, 24 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 25 | "exclude": ["node_modules"] 26 | } 27 | --------------------------------------------------------------------------------