diff --git a/.dockerignore b/.dockerignore index 0607215..85a9f2d 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,4 +4,5 @@ build .dockerignore **/.git **/.DS_Store -**/node_modules \ No newline at end of file +**/node_modules +next-app/.next diff --git a/_nextjs_Dockerfile b/_nextjs_Dockerfile new file mode 100644 index 0000000..22780aa --- /dev/null +++ b/_nextjs_Dockerfile @@ -0,0 +1,50 @@ +FROM node:18-alpine AS base + +# 1. Install dependencies only when needed +FROM base AS deps +# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. +RUN apk add --no-cache libc6-compat + +WORKDIR /app + +# Install dependencies based on the preferred package manager +COPY ./next-app/package.json ./ +COPY ./next-app/package-lock.json ./ +RUN \ + if [ -f package-lock.json ]; then npm ci; \ + else echo "Lockfile not found." && exit 1; \ + fi + + +# 2. Rebuild the source code only when needed +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY ./next-app/ . +# This will do the trick, use the corresponding env file for each environment. +RUN npm run build + +# 3. Production image, copy all the files and run next +FROM base AS runner +WORKDIR /app + +ENV NODE_ENV=production + +RUN addgroup -g 1001 -S nodejs +RUN adduser -S nextjs -u 1001 + +COPY --from=builder /app/public ./public + +# Automatically leverage output traces to reduce image size +# https://nextjs.org/docs/advanced-features/output-file-tracing +COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static + + +USER nextjs + +EXPOSE 3000 + +ENV PORT=3000 + +CMD HOSTNAME="0.0.0.0" node server.js \ No newline at end of file diff --git a/conf/nginx.conf b/conf/nginx.conf index d7ad877..6e717ef 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -5,4 +5,5 @@ server { index index.html index.htm; try_files $uri $uri/ /index.html; } + add_header Content-Security-Policy "default-src 'self';" always; } \ No newline at end of file diff --git a/next-app/.eslintrc.json b/next-app/.eslintrc.json new file mode 100644 index 0000000..4f9756d --- /dev/null +++ b/next-app/.eslintrc.json @@ -0,0 +1,7 @@ +{ + "extends": ["next/core-web-vitals", "next/typescript"], + "rules": { + "prefer-spread": ["off"], + "@next/next/no-img-element": "off" + } +} diff --git a/next-app/.gitignore b/next-app/.gitignore new file mode 100644 index 0000000..fd3dbb5 --- /dev/null +++ b/next-app/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/next-app/README.md b/next-app/README.md new file mode 100644 index 0000000..e215bc4 --- /dev/null +++ b/next-app/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/next-app/components.json b/next-app/components.json new file mode 100644 index 0000000..2009941 --- /dev/null +++ b/next-app/components.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/app/globals.css", + "baseColor": "slate", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + } +} \ No newline at end of file diff --git a/next-app/fonts/Lato-Regular.ttf b/next-app/fonts/Lato-Regular.ttf new file mode 100644 index 0000000..bb2e887 Binary files /dev/null and b/next-app/fonts/Lato-Regular.ttf differ diff --git a/next-app/next.config.mjs b/next-app/next.config.mjs new file mode 100644 index 0000000..6391e19 --- /dev/null +++ b/next-app/next.config.mjs @@ -0,0 +1,15 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + async redirects() { + return [ + { + source: '/about', + destination: '/about/product', + permanent: true, + }, + ] + }, + output: 'standalone', +}; + +export default nextConfig; \ No newline at end of file diff --git a/next-app/package-lock.json b/next-app/package-lock.json new file mode 100644 index 0000000..45c0647 --- /dev/null +++ b/next-app/package-lock.json @@ -0,0 +1,6813 @@ +{ + "name": "next-app", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "next-app", + "version": "0.1.0", + "dependencies": { + "@jonkoops/matomo-tracker-react": "^0.7.0", + "@radix-ui/react-checkbox": "^1.1.2", + "@radix-ui/react-slot": "^1.1.0", + "axios": "^1.7.7", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "cookies-next": "^4.2.1", + "daisyui": "^4.12.10", + "dompurify": "^3.1.7", + "js-cookie": "^3.0.5", + "lucide-react": "^0.446.0", + "next": "14.2.11", + "react": "^18", + "react-dom": "^18", + "react-google-recaptcha": "^3.1.0", + "react-iframe": "^1.8.5", + "react-markdown": "^9.0.1", + "remark-gfm": "^4.0.0", + "tailwind-merge": "^2.5.2", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@types/dompurify": "^3.0.5", + "@types/js-cookie": "^3.0.6", + "@types/node": "^20.16.5", + "@types/react": "^18", + "@types/react-dom": "^18", + "@types/react-google-recaptcha": "^2.1.9", + "eslint": "^8", + "eslint-config-next": "14.2.11", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "typescript": "^5" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jonkoops/matomo-tracker": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@jonkoops/matomo-tracker/-/matomo-tracker-0.7.0.tgz", + "integrity": "sha512-ppCXiDaVytTQOP6hNZIBwjUph5IrGgDoQw4IF5sBoA3PBpMAc5tWtPExbVWTR5pJWpTcp11dv2M83n9pm7LpeQ==", + "deprecated": "This package is no longer maintained." + }, + "node_modules/@jonkoops/matomo-tracker-react": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@jonkoops/matomo-tracker-react/-/matomo-tracker-react-0.7.0.tgz", + "integrity": "sha512-3iwG/QM1T6KokU/NZNCkhOccIkhaNnO1+0bTv2JsLbsS7u7hWxpio20gfBjCRd/9N1AMiGidvytG2FK9tu7WFw==", + "deprecated": "This package is no longer maintained.", + "dependencies": { + "@jonkoops/matomo-tracker": "^0.7.0" + }, + "peerDependencies": { + "react": ">= 16.8.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@next/env": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.11.tgz", + "integrity": "sha512-HYsQRSIXwiNqvzzYThrBwq6RhXo3E0n8j8nQnAs8i4fCEo2Zf/3eS0IiRA8XnRg9Ha0YnpkyJZIZg1qEwemrHw==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.11.tgz", + "integrity": "sha512-7mw+xW7Y03Ph4NTCcAzYe+vu4BNjEHZUfZayyF3Y1D9RX6c5NIe25m1grHEAkyUuaqjRxOYhnCNeglOkIqLkBA==", + "dev": true, + "dependencies": { + "glob": "10.3.10" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.11.tgz", + "integrity": "sha512-eiY9u7wEJZWp/Pga07Qy3ZmNEfALmmSS1HtsJF3y1QEyaExu7boENz11fWqDmZ3uvcyAxCMhTrA1jfVxITQW8g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.11.tgz", + "integrity": "sha512-lnB0zYCld4yE0IX3ANrVMmtAbziBb7MYekcmR6iE9bujmgERl6+FK+b0MBq0pl304lYe7zO4yxJus9H/Af8jbg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.11.tgz", + "integrity": "sha512-Ulo9TZVocYmUAtzvZ7FfldtwUoQY0+9z3BiXZCLSUwU2bp7GqHA7/bqrfsArDlUb2xeGwn3ZuBbKtNK8TR0A8w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.11.tgz", + "integrity": "sha512-fH377DnKGyUnkWlmUpFF1T90m0dADBfK11dF8sOQkiELF9M+YwDRCGe8ZyDzvQcUd20Rr5U7vpZRrAxKwd3Rzg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.11.tgz", + "integrity": "sha512-a0TH4ZZp4NS0LgXP/488kgvWelNpwfgGTUCDXVhPGH6pInb7yIYNgM4kmNWOxBFt+TIuOH6Pi9NnGG4XWFUyXQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.11.tgz", + "integrity": "sha512-DYYZcO4Uir2gZxA4D2JcOAKVs8ZxbOFYPpXSVIgeoQbREbeEHxysVsg3nY4FrQy51e5opxt5mOHl/LzIyZBoKA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.11.tgz", + "integrity": "sha512-PwqHeKG3/kKfPpM6of1B9UJ+Er6ySUy59PeFu0Un0LBzJTRKKAg2V6J60Yqzp99m55mLa+YTbU6xj61ImTv9mg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.11.tgz", + "integrity": "sha512-0U7PWMnOYIvM74GY6rbH6w7v+vNPDVH1gUhlwHpfInJnNe5LkmUZqhp7FNWeNa5wbVgRcRi1F1cyxp4dmeLLvA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.11.tgz", + "integrity": "sha512-gQpS7mcgovWoaTG1FbS5/ojF7CGfql1Q0ZLsMrhcsi2Sr9HEqsUZ70MPJyaYBXbk6iEAP7UXMD9HC8KY1qNwvA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.2.tgz", + "integrity": "sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", + "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", + "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", + "dev": true + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "license": "MIT" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/dompurify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", + "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/trusted-types": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/js-cookie": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", + "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/node": { + "version": "20.16.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", + "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" + }, + "node_modules/@types/react": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.7.tgz", + "integrity": "sha512-KUnDCJF5+AiZd8owLIeVHqmW9yM4sqmDVf2JRJiBMFkGvkoZ4/WyV2lL4zVsoinmRS/W3FeEdZLEWFRofnT2FQ==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "devOptional": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-google-recaptcha": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@types/react-google-recaptcha/-/react-google-recaptcha-2.1.9.tgz", + "integrity": "sha512-nT31LrBDuoSZJN4QuwtQSF3O89FVHC4jLhM+NtKEmVF5R1e8OY0Jo4//x2Yapn2aNHguwgX5doAq8Zo+Ehd0ug==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.2.0.tgz", + "integrity": "sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/type-utils": "7.2.0", + "@typescript-eslint/utils": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", + "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", + "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.2.0.tgz", + "integrity": "sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/utils": "7.2.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", + "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", + "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.2.0.tgz", + "integrity": "sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", + "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", + "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "2.0.0" + }, + "funding": { + "url": "https://joebell.co.uk" + } + }, + "node_modules/class-variance-authority/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookies-next": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-4.2.1.tgz", + "integrity": "sha512-qsjtZ8TLlxCSX2JphMQNhkm3V3zIMQ05WrLkBKBwu50npBbBfiZWIdmSMzBGcdGKfMK19E0PIitTfRFAdMGHXg==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^0.6.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-selector-tokenizer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz", + "integrity": "sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==", + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/culori": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/culori/-/culori-3.3.0.tgz", + "integrity": "sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/daisyui": { + "version": "4.12.10", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-4.12.10.tgz", + "integrity": "sha512-jp1RAuzbHhGdXmn957Z2XsTZStXGHzFfF0FgIOZj3Wv9sH7OZgLfXTRZNfKVYxltGUOBsG1kbWAdF5SrqjebvA==", + "dependencies": { + "css-selector-tokenizer": "^0.8", + "culori": "^3", + "picocolors": "^1", + "postcss-js": "^4" + }, + "engines": { + "node": ">=16.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/daisyui" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dompurify": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz", + "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==", + "license": "(MPL-2.0 OR Apache-2.0)" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.11.tgz", + "integrity": "sha512-gGIoBoHCJuLn6vaV1Ke8UurVvgb7JjQv6oRlWmI6RAAxz7KwJOYxxm2blctavA0a3eofbE9TdgKvvTb2G55OHQ==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "14.2.11", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", + "dev": true, + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", + "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", + "dev": true, + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz", + "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==", + "dev": true, + "dependencies": { + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.36.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz", + "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/html-url-attributes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.0.tgz", + "integrity": "sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", + "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", + "dev": true, + "dependencies": { + "semver": "^7.6.3" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/lucide-react": { + "version": "0.446.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.446.0.tgz", + "integrity": "sha512-BU7gy8MfBMqvEdDPH79VhOXSEgyG8TSPOKWaExWGCQVqnGH7wGgDngPbofu+KdtVjPQBWbEmnfMTq90CTiiDRg==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" + } + }, + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", + "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/next": { + "version": "14.2.11", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.11.tgz", + "integrity": "sha512-8MDFqHBhdmR2wdfaWc8+lW3A/hppFe1ggQ9vgIu/g2/2QEMYJrPoQP6b+VNk56gIug/bStysAmrpUKtj3XN8Bw==", + "dependencies": { + "@next/env": "14.2.11", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.11", + "@next/swc-darwin-x64": "14.2.11", + "@next/swc-linux-arm64-gnu": "14.2.11", + "@next/swc-linux-arm64-musl": "14.2.11", + "@next/swc-linux-x64-gnu": "14.2.11", + "@next/swc-linux-x64-musl": "14.2.11", + "@next/swc-win32-arm64-msvc": "14.2.11", + "@next/swc-win32-ia32-msvc": "14.2.11", + "@next/swc-win32-x64-msvc": "14.2.11" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-async-script": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-async-script/-/react-async-script-1.2.0.tgz", + "integrity": "sha512-bCpkbm9JiAuMGhkqoAiC0lLkb40DJ0HOEJIku+9JDjxX3Rcs+ztEOG13wbrOskt3n2DTrjshhaQ/iay+SnGg5Q==", + "dependencies": { + "hoist-non-react-statics": "^3.3.0", + "prop-types": "^15.5.0" + }, + "peerDependencies": { + "react": ">=16.4.1" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-google-recaptcha": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/react-google-recaptcha/-/react-google-recaptcha-3.1.0.tgz", + "integrity": "sha512-cYW2/DWas8nEKZGD7SCu9BSuVz8iOcOLHChHyi7upUuVhkpkhYG/6N3KDiTQ3XAiZ2UAZkfvYKMfAHOzBOcGEg==", + "dependencies": { + "prop-types": "^15.5.0", + "react-async-script": "^1.2.0" + }, + "peerDependencies": { + "react": ">=16.4.1" + } + }, + "node_modules/react-iframe": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/react-iframe/-/react-iframe-1.8.5.tgz", + "integrity": "sha512-F4cQJGs3ydaG6fJWfuz9yLwOU0Trzl6kttXuUG+vYwosH8enOOFxZWEDQCSbNVO8ayjfYZeqLxEvdvcsSy4GvA==", + "dependencies": { + "object-assign": "^4.1.1" + }, + "peerDependencies": { + "react": ">=16.x.x" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-markdown": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz", + "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", + "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", + "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-object": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwind-merge": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.2.tgz", + "integrity": "sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.12.tgz", + "integrity": "sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/next-app/package.json b/next-app/package.json new file mode 100644 index 0000000..8b920c8 --- /dev/null +++ b/next-app/package.json @@ -0,0 +1,46 @@ +{ + "name": "next-app", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@jonkoops/matomo-tracker-react": "^0.7.0", + "@radix-ui/react-checkbox": "^1.1.2", + "@radix-ui/react-slot": "^1.1.0", + "axios": "^1.7.7", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "cookies-next": "^4.2.1", + "daisyui": "^4.12.10", + "dompurify": "^3.1.7", + "js-cookie": "^3.0.5", + "lucide-react": "^0.446.0", + "next": "14.2.11", + "react": "^18", + "react-dom": "^18", + "react-google-recaptcha": "^3.1.0", + "react-iframe": "^1.8.5", + "react-markdown": "^9.0.1", + "remark-gfm": "^4.0.0", + "tailwind-merge": "^2.5.2", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@types/dompurify": "^3.0.5", + "@types/js-cookie": "^3.0.6", + "@types/node": "^20.16.5", + "@types/react": "^18", + "@types/react-dom": "^18", + "@types/react-google-recaptcha": "^2.1.9", + "eslint": "^8", + "eslint-config-next": "14.2.11", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "typescript": "^5" + } +} diff --git a/next-app/postcss.config.mjs b/next-app/postcss.config.mjs new file mode 100644 index 0000000..1a69fd2 --- /dev/null +++ b/next-app/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/next-app/public/HomePageImages/dataSourcesIndexImage.png b/next-app/public/HomePageImages/dataSourcesIndexImage.png new file mode 100644 index 0000000..ddce966 Binary files /dev/null and b/next-app/public/HomePageImages/dataSourcesIndexImage.png differ diff --git a/next-app/public/HomePageImages/eventsAndTrainingsIndexImage.png b/next-app/public/HomePageImages/eventsAndTrainingsIndexImage.png new file mode 100644 index 0000000..8861565 Binary files /dev/null and b/next-app/public/HomePageImages/eventsAndTrainingsIndexImage.png differ diff --git a/next-app/public/HomePageImages/hedestamIndexImage.png b/next-app/public/HomePageImages/hedestamIndexImage.png new file mode 100644 index 0000000..7f45683 Binary files /dev/null and b/next-app/public/HomePageImages/hedestamIndexImage.png differ diff --git a/next-app/public/Partner logo/Elixir-Europe-logo-1.png b/next-app/public/Partner logo/Elixir-Europe-logo-1.png new file mode 100644 index 0000000..e7d9f7b Binary files /dev/null and b/next-app/public/Partner logo/Elixir-Europe-logo-1.png differ diff --git a/next-app/public/Partner logo/KI_digital_logotyp_positiv_RGB.png b/next-app/public/Partner logo/KI_digital_logotyp_positiv_RGB.png new file mode 100644 index 0000000..51d7ee6 Binary files /dev/null and b/next-app/public/Partner logo/KI_digital_logotyp_positiv_RGB.png differ diff --git a/next-app/public/Partner logo/SciLifeLab_Logotype_Green_NEG.png b/next-app/public/Partner logo/SciLifeLab_Logotype_Green_NEG.png new file mode 100644 index 0000000..eea3db2 Binary files /dev/null and b/next-app/public/Partner logo/SciLifeLab_Logotype_Green_NEG.png differ diff --git a/next-app/public/Partner logo/SciLifeLab_Logotype_Green_POS.png b/next-app/public/Partner logo/SciLifeLab_Logotype_Green_POS.png new file mode 100644 index 0000000..2ad7178 Binary files /dev/null and b/next-app/public/Partner logo/SciLifeLab_Logotype_Green_POS.png differ diff --git a/next-app/public/Partner logo/dc.png b/next-app/public/Partner logo/dc.png new file mode 100644 index 0000000..b4496a5 Binary files /dev/null and b/next-app/public/Partner logo/dc.png differ diff --git a/next-app/public/Partner logo/kaw_sv_300x300.png b/next-app/public/Partner logo/kaw_sv_300x300.png new file mode 100644 index 0000000..813d6f0 Binary files /dev/null and b/next-app/public/Partner logo/kaw_sv_300x300.png differ diff --git a/next-app/public/Partner logo/nbislogo_orange_txt_3cb0778d90.svg b/next-app/public/Partner logo/nbislogo_orange_txt_3cb0778d90.svg new file mode 100644 index 0000000..8b38ca5 --- /dev/null +++ b/next-app/public/Partner logo/nbislogo_orange_txt_3cb0778d90.svg @@ -0,0 +1,288 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/next-app/public/SciLifeLab logo/Precisionmedicineportal_logo_white.png b/next-app/public/SciLifeLab logo/Precisionmedicineportal_logo_white.png new file mode 100644 index 0000000..57e7c16 Binary files /dev/null and b/next-app/public/SciLifeLab logo/Precisionmedicineportal_logo_white.png differ diff --git a/next-app/public/TeamPics/JanTeamPic.jpg b/next-app/public/TeamPics/JanTeamPic.jpg new file mode 100644 index 0000000..427248b Binary files /dev/null and b/next-app/public/TeamPics/JanTeamPic.jpg differ diff --git a/next-app/public/TeamPics/MarTeamPic.png b/next-app/public/TeamPics/MarTeamPic.png new file mode 100644 index 0000000..23ab9cb Binary files /dev/null and b/next-app/public/TeamPics/MarTeamPic.png differ diff --git a/next-app/public/TeamPics/NatTeamPic.jpg b/next-app/public/TeamPics/NatTeamPic.jpg new file mode 100644 index 0000000..87fa4ac Binary files /dev/null and b/next-app/public/TeamPics/NatTeamPic.jpg differ diff --git a/next-app/public/TeamPics/SamTeamPic.jpg b/next-app/public/TeamPics/SamTeamPic.jpg new file mode 100644 index 0000000..5636266 Binary files /dev/null and b/next-app/public/TeamPics/SamTeamPic.jpg differ diff --git a/next-app/public/TeamPics/SebTeamPic.png b/next-app/public/TeamPics/SebTeamPic.png new file mode 100644 index 0000000..868c3d8 Binary files /dev/null and b/next-app/public/TeamPics/SebTeamPic.png differ diff --git a/next-app/public/img/datasources/BBMRI-ERIC.png b/next-app/public/img/datasources/BBMRI-ERIC.png new file mode 100644 index 0000000..31cc6d8 Binary files /dev/null and b/next-app/public/img/datasources/BBMRI-ERIC.png differ diff --git a/next-app/public/img/datasources/BioSamples.png b/next-app/public/img/datasources/BioSamples.png new file mode 100644 index 0000000..22c8541 Binary files /dev/null and b/next-app/public/img/datasources/BioSamples.png differ diff --git a/next-app/public/img/datasources/EMPIAR.png b/next-app/public/img/datasources/EMPIAR.png new file mode 100644 index 0000000..8b1debe Binary files /dev/null and b/next-app/public/img/datasources/EMPIAR.png differ diff --git a/next-app/public/img/datasources/ENA.png b/next-app/public/img/datasources/ENA.png new file mode 100644 index 0000000..e4ff744 Binary files /dev/null and b/next-app/public/img/datasources/ENA.png differ diff --git a/next-app/public/img/datasources/GDC.png b/next-app/public/img/datasources/GDC.png new file mode 100644 index 0000000..965786c Binary files /dev/null and b/next-app/public/img/datasources/GDC.png differ diff --git a/next-app/public/img/datasources/Genevestigator_logo.png b/next-app/public/img/datasources/Genevestigator_logo.png new file mode 100644 index 0000000..2b58762 Binary files /dev/null and b/next-app/public/img/datasources/Genevestigator_logo.png differ diff --git a/next-app/public/img/datasources/IDDO.png b/next-app/public/img/datasources/IDDO.png new file mode 100644 index 0000000..a008f7b Binary files /dev/null and b/next-app/public/img/datasources/IDDO.png differ diff --git a/next-app/public/img/datasources/MassIVE.png b/next-app/public/img/datasources/MassIVE.png new file mode 100644 index 0000000..05dfd25 Binary files /dev/null and b/next-app/public/img/datasources/MassIVE.png differ diff --git a/next-app/public/img/datasources/PDBe.png b/next-app/public/img/datasources/PDBe.png new file mode 100644 index 0000000..b68abb9 Binary files /dev/null and b/next-app/public/img/datasources/PDBe.png differ diff --git a/next-app/public/img/datasources/PDC.png b/next-app/public/img/datasources/PDC.png new file mode 100644 index 0000000..044e640 Binary files /dev/null and b/next-app/public/img/datasources/PDC.png differ diff --git a/next-app/public/img/datasources/PRIDE.png b/next-app/public/img/datasources/PRIDE.png new file mode 100644 index 0000000..fe23817 Binary files /dev/null and b/next-app/public/img/datasources/PRIDE.png differ diff --git a/next-app/public/img/datasources/Reactome.png b/next-app/public/img/datasources/Reactome.png new file mode 100644 index 0000000..a0ab51c Binary files /dev/null and b/next-app/public/img/datasources/Reactome.png differ diff --git a/next-app/public/img/datasources/SCAPIS.png b/next-app/public/img/datasources/SCAPIS.png new file mode 100644 index 0000000..baf1551 Binary files /dev/null and b/next-app/public/img/datasources/SCAPIS.png differ diff --git a/next-app/public/img/datasources/SCB.png b/next-app/public/img/datasources/SCB.png new file mode 100644 index 0000000..36805c5 Binary files /dev/null and b/next-app/public/img/datasources/SCB.png differ diff --git a/next-app/public/img/datasources/SND.png b/next-app/public/img/datasources/SND.png new file mode 100644 index 0000000..0c79ce1 Binary files /dev/null and b/next-app/public/img/datasources/SND.png differ diff --git a/next-app/public/img/datasources/Sveriges_dp.png b/next-app/public/img/datasources/Sveriges_dp.png new file mode 100644 index 0000000..6a88a76 Binary files /dev/null and b/next-app/public/img/datasources/Sveriges_dp.png differ diff --git a/next-app/public/img/datasources/UK_biobank_logo.png b/next-app/public/img/datasources/UK_biobank_logo.png new file mode 100644 index 0000000..f89e997 Binary files /dev/null and b/next-app/public/img/datasources/UK_biobank_logo.png differ diff --git a/next-app/public/img/datasources/UniProt.png b/next-app/public/img/datasources/UniProt.png new file mode 100644 index 0000000..06f613b Binary files /dev/null and b/next-app/public/img/datasources/UniProt.png differ diff --git a/next-app/public/img/datasources/VR.png b/next-app/public/img/datasources/VR.png new file mode 100644 index 0000000..c61a9d5 Binary files /dev/null and b/next-app/public/img/datasources/VR.png differ diff --git a/next-app/public/img/datasources/aida.png b/next-app/public/img/datasources/aida.png new file mode 100644 index 0000000..18d2445 Binary files /dev/null and b/next-app/public/img/datasources/aida.png differ diff --git a/next-app/public/img/datasources/alphafold_db.png b/next-app/public/img/datasources/alphafold_db.png new file mode 100644 index 0000000..0fa8f3f Binary files /dev/null and b/next-app/public/img/datasources/alphafold_db.png differ diff --git a/next-app/public/img/datasources/arrayexpress.png b/next-app/public/img/datasources/arrayexpress.png new file mode 100644 index 0000000..38900ee Binary files /dev/null and b/next-app/public/img/datasources/arrayexpress.png differ diff --git a/next-app/public/img/datasources/bioimagearchive.png b/next-app/public/img/datasources/bioimagearchive.png new file mode 100644 index 0000000..5f866ac Binary files /dev/null and b/next-app/public/img/datasources/bioimagearchive.png differ diff --git a/next-app/public/img/datasources/bioimagezoo.png b/next-app/public/img/datasources/bioimagezoo.png new file mode 100644 index 0000000..26ed006 Binary files /dev/null and b/next-app/public/img/datasources/bioimagezoo.png differ diff --git a/next-app/public/img/datasources/biostudies.png b/next-app/public/img/datasources/biostudies.png new file mode 100644 index 0000000..79ba222 Binary files /dev/null and b/next-app/public/img/datasources/biostudies.png differ diff --git a/next-app/public/img/datasources/cbioportal.png b/next-app/public/img/datasources/cbioportal.png new file mode 100644 index 0000000..ca2fe3b Binary files /dev/null and b/next-app/public/img/datasources/cbioportal.png differ diff --git a/next-app/public/img/datasources/ccle.png b/next-app/public/img/datasources/ccle.png new file mode 100644 index 0000000..0d83354 Binary files /dev/null and b/next-app/public/img/datasources/ccle.png differ diff --git a/next-app/public/img/datasources/cellosaurus.png b/next-app/public/img/datasources/cellosaurus.png new file mode 100644 index 0000000..e9e1677 Binary files /dev/null and b/next-app/public/img/datasources/cellosaurus.png differ diff --git a/next-app/public/img/datasources/chembl.png b/next-app/public/img/datasources/chembl.png new file mode 100644 index 0000000..f99a193 Binary files /dev/null and b/next-app/public/img/datasources/chembl.png differ diff --git a/next-app/public/img/datasources/clinvar.png b/next-app/public/img/datasources/clinvar.png new file mode 100644 index 0000000..923ea70 Binary files /dev/null and b/next-app/public/img/datasources/clinvar.png differ diff --git a/next-app/public/img/datasources/decipher.png b/next-app/public/img/datasources/decipher.png new file mode 100644 index 0000000..cd09ba9 Binary files /dev/null and b/next-app/public/img/datasources/decipher.png differ diff --git a/next-app/public/img/datasources/dryad.png b/next-app/public/img/datasources/dryad.png new file mode 100644 index 0000000..e04f39b Binary files /dev/null and b/next-app/public/img/datasources/dryad.png differ diff --git a/next-app/public/img/datasources/ecdb.png b/next-app/public/img/datasources/ecdb.png new file mode 100644 index 0000000..6add8f5 Binary files /dev/null and b/next-app/public/img/datasources/ecdb.png differ diff --git a/next-app/public/img/datasources/ecdc.png b/next-app/public/img/datasources/ecdc.png new file mode 100644 index 0000000..6d9ecaf Binary files /dev/null and b/next-app/public/img/datasources/ecdc.png differ diff --git a/next-app/public/img/datasources/ega.png b/next-app/public/img/datasources/ega.png new file mode 100644 index 0000000..5699da0 Binary files /dev/null and b/next-app/public/img/datasources/ega.png differ diff --git a/next-app/public/img/datasources/ensembl.png b/next-app/public/img/datasources/ensembl.png new file mode 100644 index 0000000..fb10aa3 Binary files /dev/null and b/next-app/public/img/datasources/ensembl.png differ diff --git a/next-app/public/img/datasources/fega-sweden-logo.png b/next-app/public/img/datasources/fega-sweden-logo.png new file mode 100644 index 0000000..bbff9dd Binary files /dev/null and b/next-app/public/img/datasources/fega-sweden-logo.png differ diff --git a/next-app/public/img/datasources/figshare.png b/next-app/public/img/datasources/figshare.png new file mode 100644 index 0000000..2ad7178 Binary files /dev/null and b/next-app/public/img/datasources/figshare.png differ diff --git a/next-app/public/img/datasources/gemma.png b/next-app/public/img/datasources/gemma.png new file mode 100644 index 0000000..1b4bfca Binary files /dev/null and b/next-app/public/img/datasources/gemma.png differ diff --git a/next-app/public/img/datasources/geo.png b/next-app/public/img/datasources/geo.png new file mode 100644 index 0000000..94d485d Binary files /dev/null and b/next-app/public/img/datasources/geo.png differ diff --git a/next-app/public/img/datasources/gwas.png b/next-app/public/img/datasources/gwas.png new file mode 100644 index 0000000..1a2f73d Binary files /dev/null and b/next-app/public/img/datasources/gwas.png differ diff --git a/next-app/public/img/datasources/hdca.png b/next-app/public/img/datasources/hdca.png new file mode 100644 index 0000000..7f7b737 Binary files /dev/null and b/next-app/public/img/datasources/hdca.png differ diff --git a/next-app/public/img/datasources/hgnc.png b/next-app/public/img/datasources/hgnc.png new file mode 100644 index 0000000..7971eca Binary files /dev/null and b/next-app/public/img/datasources/hgnc.png differ diff --git a/next-app/public/img/datasources/hpa.png b/next-app/public/img/datasources/hpa.png new file mode 100644 index 0000000..9f3f11e Binary files /dev/null and b/next-app/public/img/datasources/hpa.png differ diff --git a/next-app/public/img/datasources/intact.png b/next-app/public/img/datasources/intact.png new file mode 100644 index 0000000..62332d8 Binary files /dev/null and b/next-app/public/img/datasources/intact.png differ diff --git a/next-app/public/img/datasources/mendeley-data.png b/next-app/public/img/datasources/mendeley-data.png new file mode 100644 index 0000000..2ae8a20 Binary files /dev/null and b/next-app/public/img/datasources/mendeley-data.png differ diff --git a/next-app/public/img/datasources/metatlas.png b/next-app/public/img/datasources/metatlas.png new file mode 100644 index 0000000..b59b096 Binary files /dev/null and b/next-app/public/img/datasources/metatlas.png differ diff --git a/next-app/public/img/datasources/mint.png b/next-app/public/img/datasources/mint.png new file mode 100644 index 0000000..3ce0417 Binary files /dev/null and b/next-app/public/img/datasources/mint.png differ diff --git a/next-app/public/img/datasources/orphadata.png b/next-app/public/img/datasources/orphadata.png new file mode 100644 index 0000000..6ed4211 Binary files /dev/null and b/next-app/public/img/datasources/orphadata.png differ diff --git a/next-app/public/img/datasources/pathogens.png b/next-app/public/img/datasources/pathogens.png new file mode 100644 index 0000000..fa2650c Binary files /dev/null and b/next-app/public/img/datasources/pathogens.png differ diff --git a/next-app/public/img/datasources/pdb.png b/next-app/public/img/datasources/pdb.png new file mode 100644 index 0000000..e74d323 Binary files /dev/null and b/next-app/public/img/datasources/pdb.png differ diff --git a/next-app/public/img/datasources/proteomexchange.png b/next-app/public/img/datasources/proteomexchange.png new file mode 100644 index 0000000..2348c59 Binary files /dev/null and b/next-app/public/img/datasources/proteomexchange.png differ diff --git a/next-app/public/img/datasources/sbdi.png b/next-app/public/img/datasources/sbdi.png new file mode 100644 index 0000000..1113e1e Binary files /dev/null and b/next-app/public/img/datasources/sbdi.png differ diff --git a/next-app/public/img/datasources/scilifelab.png b/next-app/public/img/datasources/scilifelab.png new file mode 100644 index 0000000..2ad7178 Binary files /dev/null and b/next-app/public/img/datasources/scilifelab.png differ diff --git a/next-app/public/img/datasources/silva.png b/next-app/public/img/datasources/silva.png new file mode 100644 index 0000000..3e6424d Binary files /dev/null and b/next-app/public/img/datasources/silva.png differ diff --git a/next-app/public/img/datasources/skin-sci-foundation.png b/next-app/public/img/datasources/skin-sci-foundation.png new file mode 100644 index 0000000..092bbea Binary files /dev/null and b/next-app/public/img/datasources/skin-sci-foundation.png differ diff --git a/next-app/public/img/datasources/socialstyrelsen.png b/next-app/public/img/datasources/socialstyrelsen.png new file mode 100644 index 0000000..730c059 Binary files /dev/null and b/next-app/public/img/datasources/socialstyrelsen.png differ diff --git a/next-app/public/img/datasources/sonnhammer.png b/next-app/public/img/datasources/sonnhammer.png new file mode 100644 index 0000000..70bdc3f Binary files /dev/null and b/next-app/public/img/datasources/sonnhammer.png differ diff --git a/next-app/public/img/datasources/sra.png b/next-app/public/img/datasources/sra.png new file mode 100644 index 0000000..c7bf070 Binary files /dev/null and b/next-app/public/img/datasources/sra.png differ diff --git a/next-app/public/img/datasources/string.png b/next-app/public/img/datasources/string.png new file mode 100644 index 0000000..90a9b02 Binary files /dev/null and b/next-app/public/img/datasources/string.png differ diff --git a/next-app/public/img/datasources/subcell.png b/next-app/public/img/datasources/subcell.png new file mode 100644 index 0000000..5b7bad5 Binary files /dev/null and b/next-app/public/img/datasources/subcell.png differ diff --git a/next-app/public/img/datasources/swiss-model.png b/next-app/public/img/datasources/swiss-model.png new file mode 100644 index 0000000..96ce858 Binary files /dev/null and b/next-app/public/img/datasources/swiss-model.png differ diff --git a/next-app/public/img/datasources/tcga.png b/next-app/public/img/datasources/tcga.png new file mode 100644 index 0000000..525007f Binary files /dev/null and b/next-app/public/img/datasources/tcga.png differ diff --git a/next-app/public/img/datasources/tcia.png b/next-app/public/img/datasources/tcia.png new file mode 100644 index 0000000..4a9517c Binary files /dev/null and b/next-app/public/img/datasources/tcia.png differ diff --git a/next-app/public/img/datasources/veupathdb.png b/next-app/public/img/datasources/veupathdb.png new file mode 100644 index 0000000..a91733d Binary files /dev/null and b/next-app/public/img/datasources/veupathdb.png differ diff --git a/next-app/src/app/about/faq/page.tsx b/next-app/src/app/about/faq/page.tsx new file mode 100644 index 0000000..b891fad --- /dev/null +++ b/next-app/src/app/about/faq/page.tsx @@ -0,0 +1,15 @@ +'use client'; + +import { ReactElement } from 'react'; +import AccordionComponent from '@/components/AccordionComponent'; +import { TrackPageViewIfEnabled } from '@/util/cookiesHandling'; + +export default function AboutFAQPage(): ReactElement { + TrackPageViewIfEnabled(); + + return ( + <> + + + ); +} \ No newline at end of file diff --git a/next-app/src/app/about/layout.tsx b/next-app/src/app/about/layout.tsx new file mode 100644 index 0000000..cb06bfc --- /dev/null +++ b/next-app/src/app/about/layout.tsx @@ -0,0 +1,18 @@ +import { BODY_CLASSES } from "@/constants"; +import "../globals.css"; +import AboutPageComponent from "@/components/AboutPageComponent"; +import { LastUpdated } from "@/components/common/last-updated"; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( +
+ + {children} + +
+ ); +} diff --git a/next-app/src/app/about/partners/page.tsx b/next-app/src/app/about/partners/page.tsx new file mode 100644 index 0000000..d2f98f6 --- /dev/null +++ b/next-app/src/app/about/partners/page.tsx @@ -0,0 +1,132 @@ +'use client'; + +import { ReactElement } from 'react'; +import { ICardConfig, ICardContent } from '@/interfaces/types'; +import CardComponent from '@/components/CardComponent'; +import { TrackPageViewIfEnabled } from '@/util/cookiesHandling'; + +// import elixirImage from '../assets/Partner logo/Elixir-Europe-logo-1.png'; +const dcImage = '/Partner logo/dc.png'; +const nbisImage = '/Partner logo/nbislogo_orange_txt_3cb0778d90.svg'; +const kawImage = '/Partner logo/kaw_sv_300x300.png'; +const kiImage = '/Partner logo/KI_digital_logotyp_positiv_RGB.png'; +const scilifelabImage = '/Partner logo/SciLifeLab_Logotype_Green_POS.png'; + + +export default function AboutPartnersPage(): ReactElement { + TrackPageViewIfEnabled(); + + const cardClasses: string = "flex flex-row justify-center items-center w-full h-full bg-white shadow-xl"; + const cardConfig: { [id: string] : ICardConfig; } = { + 'dcCard': { + cardClasses: cardClasses + " pl-6", + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain h-56 w-56", + buttonClasses: "", + buttonPlacement: "", + }, + 'kiCard': { + cardClasses: cardClasses, + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain h-72 w-72", + buttonClasses: "", + buttonPlacement: "", + }, + 'ddlsCard': { + cardClasses: cardClasses + " pl-6", + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain h-56 w-56", + buttonClasses: "", + buttonPlacement: "", + }, + 'kawCard': { + cardClasses: "w-full h-full card lg:card-side bg-white shadow-xl", + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain", + buttonClasses: "", + buttonPlacement: "", + }, + 'nbisCard': { + cardClasses: cardClasses + " pl-10", + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain h-36 w-36", + buttonClasses: "", + buttonPlacement: "", + }, + }; + + const cardContent: { [id: string] : ICardContent } = { + 'dcCard': { + title: "SciLifeLab Data Centre", + subTitle: "", + text: "SciLifeLab Data Centre is a central unit within SciLifeLab with responsibility for IT- and data management issues, serving the SciLifeLab and the Data Driven Life Science (DDLS) research program. At SciLifeLab, we see data as one of the most valuable and long-lasting products of our operations and strive to make our data FAIR, handled according to open science standards and that its long-term value to the scientific community is maximised.", + buttonText: "", + imageSrc: dcImage, + imageAlt: "SciLifeLab Data Centre logo", + }, + 'kiCard': { + title: "Karolinska Institutet", + subTitle: "", + text: "Karolinska Institutet (KI) is a research-led medical university in Solna within the Stockholm urban area of Sweden and one of the foremost medical research institutes globally. KI hosts the Data Science Node in Precision Medicine and Diagnostics as part of the national Data-Driven Life Science program and associated to the SciLifeLab Data Platform.", + buttonText: "", + imageSrc: kiImage, + imageAlt: "Karolinska Institutet logo", + }, + 'ddlsCard': { + title: "Data-Driven Precision Medicine and Diagnostics", + subTitle: "", + text: "The Data-Driven Life Science subject area hosted by KI concerns research that will make use of computational tools to integrate molecular and clinical data for precision medicine and diagnostic development. The focus is on data integration, analysis, visualisation, and data interpretation for patient stratification, discovery of biomarkers for disease risks, diagnosis, drug response and monitoring of health.", + buttonText: "", + imageSrc: scilifelabImage, + imageAlt: "Data-Driven Precision Medicine and Diagnostics logo", + }, + 'kawCard': { + title: "SciLifeLab & Wallenberg National Program for Data-Driven Life Science", + subTitle: "", + text: "Life science research is becoming increasingly data-driven. The amount and complexity of data is also growing exponentially. Data is one of the most valuable products of research, and it is therefore crucially important that we ensure it is managed appropriately throughout its lifecycle. In response, SciLifeLab and The Knut and Alice Wallenberg Foundation (KAW) have launched the DDLS program in Sweden. This initiative aims to train and develop the next wave of life scientists, enhancing Sweden's capabilities in data science within the life sciences to achieve international competitiveness. The DDLS program has been funded by KAW for 12 years. SciLifeLab, as a national infrastructure for life science, coordinates this program in close collaboration with ten Swedish universities and the Swedish Museum of Natural History.", + buttonText: "", + imageSrc: kawImage, + imageAlt: "SciLifeLab & Wallenberg National Program for Data-Driven Life Science logo", + }, + 'nbisCard': { + title: "National Bioinformatics Infrastructure Sweden and ELIXIR Sweden", + subTitle: "", + text: "National Bioinformatics Infrastructure Sweden (NBIS) is a distributed national research infrastructure supported by the Swedish Research Council (Vetenskapsrådet), Science for Life Laboratory, all major Swedish universities, and the Knut and Alice Wallenberg Foundation. It provides state-of-the-art bioinformatics to the life science research community in Sweden. NBIS is also the Swedish contact point to the European infrastructure for biological information, ELIXIR Europe.", + buttonText: "", + imageSrc: nbisImage, + imageAlt: "NBIS and ELIXIR Sweden logos", + }, + }; + + return ( + <> +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + ); +} \ No newline at end of file diff --git a/next-app/src/app/about/product/page.tsx b/next-app/src/app/about/product/page.tsx new file mode 100644 index 0000000..8a94073 --- /dev/null +++ b/next-app/src/app/about/product/page.tsx @@ -0,0 +1,19 @@ +'use client'; + +import { ReactElement } from 'react'; +import { TrackPageViewIfEnabled } from '@/util/cookiesHandling'; + +export default function AboutProductPage(): ReactElement { + TrackPageViewIfEnabled(); + + return ( +
+

+ The Precision Medicine Portal is part of the SciLifeLab DDLS node for Precision Medicine and Diagnostics at Karolinska institutet and funded by the Knut and Alice Wallenberg Foundation. Launching in autumn 2024, our overall goal is to support Swedish researchers with essential resources within precision medicine (or personalised medicine), such as relevant data sources, interactive data dashboards, data management support, and links to conferences, workshops and other Nordic precision medicine events. +

+

+ Our website is divided into two repositories: a frontend React app and a backend using Python and Flask. While operated by the SciLifeLab Data Centre and partners, we very much welcome community contributions. +

+
+ ); +} \ No newline at end of file diff --git a/next-app/src/app/about/team/page.tsx b/next-app/src/app/about/team/page.tsx new file mode 100644 index 0000000..c6e5d48 --- /dev/null +++ b/next-app/src/app/about/team/page.tsx @@ -0,0 +1,76 @@ +'use client'; + +import { ReactElement } from 'react'; +import { ICardConfig, ICardContent } from '@/interfaces/types'; +import CardComponent from '@/components/CardComponent'; +import { TrackPageViewIfEnabled } from '@/util/cookiesHandling'; +import { TeamDescriptions } from '@/content/content'; + +export default function AboutTeamPage(): ReactElement { + TrackPageViewIfEnabled(); + + const cardConfig: { [id: string] : ICardConfig; } = { + 'teamCard': { + cardClasses: "card h-[46rem] w-96 bg-white shadow-xl", + titleClasses: "card-title", + subTitleClasses: "italic", + textClasses: "", + imgClasses: "object-cover h-96 w-96 rounded-t-[8px]", + buttonClasses: "", + buttonPlacement: "", + }, + }; + + const cardContent: { [id: string] : ICardContent } = { + 'JanCard': { + title: TeamDescriptions.teamMembers.jan.name, + subTitle: TeamDescriptions.teamMembers.jan.title, + text: TeamDescriptions.teamMembers.jan.description, + buttonText: "", + imageSrc: TeamDescriptions.teamMembers.jan.img, + imageAlt: TeamDescriptions.teamMembers.jan.imgAlt, + }, + 'NatCard': { + title: TeamDescriptions.teamMembers.natashia.name, + subTitle: TeamDescriptions.teamMembers.natashia.title, + text: TeamDescriptions.teamMembers.natashia.description, + buttonText: "", + imageSrc: TeamDescriptions.teamMembers.natashia.img, + imageAlt: TeamDescriptions.teamMembers.natashia.imgAlt, + }, + 'SebCard': { + title: TeamDescriptions.teamMembers.sebastian.name, + subTitle: TeamDescriptions.teamMembers.sebastian.title, + text: TeamDescriptions.teamMembers.sebastian.description, + buttonText: "", + imageSrc: TeamDescriptions.teamMembers.sebastian.img, + imageAlt: TeamDescriptions.teamMembers.sebastian.imgAlt, + }, + 'SamCard': { + title: TeamDescriptions.teamMembers.saman.name, + subTitle: TeamDescriptions.teamMembers.saman.title, + text: TeamDescriptions.teamMembers.saman.description, + buttonText: "", + imageSrc: TeamDescriptions.teamMembers.saman.img, + imageAlt: TeamDescriptions.teamMembers.saman.imgAlt, + }, + 'MarCard': { + title: TeamDescriptions.teamMembers.maria.name, + subTitle: TeamDescriptions.teamMembers.maria.title, + text: TeamDescriptions.teamMembers.maria.description, + buttonText: "", + imageSrc: TeamDescriptions.teamMembers.maria.img, + imageAlt: TeamDescriptions.teamMembers.maria.imgAlt, + }, + }; + + return ( + <> +
+ {Object.keys(cardContent).map( key => ( + + ))} +
+ + ); +} \ No newline at end of file diff --git a/next-app/src/app/accessclinicaldata/page.tsx b/next-app/src/app/accessclinicaldata/page.tsx new file mode 100644 index 0000000..e5f0f63 --- /dev/null +++ b/next-app/src/app/accessclinicaldata/page.tsx @@ -0,0 +1,160 @@ +"use client"; + +import { ReactElement } from "react"; +import { BODY_CLASSES } from "@/constants"; +import Link from "next/link"; +import { ILink } from "@/interfaces/types"; +import { TrackPageViewIfEnabled } from "@/util/cookiesHandling"; +import { LastUpdated } from "@/components/common/last-updated"; + +export default function AboutPage(): ReactElement { + TrackPageViewIfEnabled(); + + const breadcrumbs: { [id: string]: ILink } = { + l1: { text: "Home", classes: "", link: "/" }, + l2: { text: "Access Clinical Data", classes: "", link: "" }, + }; + + return ( +
+
+
    + {Object.keys(breadcrumbs).map((key) => ( +
  • + {breadcrumbs[key].link ? ( + + {breadcrumbs[key].text} + + ) : ( + <>{breadcrumbs[key].text} + )} +
  • + ))} +
+
+ {/* Paragraph before the first heading */} +

+ Human data for research can be accessed from various sources such as + medical records, quality registries, and research databases. If the + research involves sensitive personal data (definition available here), + the project must be approved by the Swedish Ethical Review Authority. + This requirement applies even if the sensitive personal data is + pseudonymised. Additionally, all necessary legal measures must be in + place before transferring data from the agency or organisation providing + the source data. Procedures for requesting and disclosing data vary + between different authorities and organisations. +

+ {/* The first heading */} +
+

Patient records and medical records

+
+ {/* Paragraph under the first heading */} +

+ Healthcare staff document patient interactions, and after a + confidentiality assessment, this information can be requested for + medical research. In Sweden, the 21 regions are responsible for most + healthcare services, while municipalities handle services like home + care, and private practitioners manage their own records. Consequently, + to conduct research using patient records from across the country, it + may be necessary to request data from multiple sources. +

+ + {/* The second heading */} +
+

Quality registers

+ + + + + + + + +
+ {/* Paragraph under the second heading */} +

+ The Swedish quality registries aim to improve the health care system by + collecting individualised health data about, for example, certain + diagnoses or problems (further information in Swedish). Data from a + certain registry can be requested by researchers after approval by a + steering group consisting of health care professionals and patient + representatives. +

+

+ Healthcare providers must inform patients before their medical + information is collected in a quality register. This procedure differs + from the inclusion of a research subject in a study, where written + consent is required. However, personal data cannot be processed in a + quality register or research study if the individual objects. If a + person opposes the processing of their personal data after it has begun, + the information should be erased from the register as soon as possible + (further information in Swedish). +

+

+ Every quality registry in Sweden is connected to one of six centres that + provide support: +

+ + +
+ ); +} diff --git a/next-app/src/app/contact/page.tsx b/next-app/src/app/contact/page.tsx new file mode 100644 index 0000000..fc3e66e --- /dev/null +++ b/next-app/src/app/contact/page.tsx @@ -0,0 +1,48 @@ +'use client'; + +import { ReactElement } from 'react'; +import { TrackPageViewIfEnabled } from '@/util/cookiesHandling'; +import { BODY_CLASSES, H_1 } from '@/constants' +import Link from 'next/link'; +import { ILink } from "@/interfaces/types"; +import { ContactPageContent } from '@/content/content'; +import ContactFormComponent from '@/components/ContactFormComponent'; + +export default function ContactPage(): ReactElement { + TrackPageViewIfEnabled(); + + const breadcrumbs: { [id: string] : ILink; } = { + 'l1': { text: 'Home', classes: '', link: '/' }, + 'l2': { text: 'Contact', classes: '', link: '' }, + }; + + return ( +
+
+
    + {Object.keys(breadcrumbs).map( key => ( +
  • + { + breadcrumbs[key].link + ? + + {breadcrumbs[key].text} + + : + <> + {breadcrumbs[key].text} + + } +
  • + ))} +
+
+
Contact
+
{ContactPageContent.content[0].header}
+

{ContactPageContent.content[0].body}

+ +
{ContactPageContent.content[1].header}
+

{ContactPageContent.content[1].body}

+
+ ); +} \ No newline at end of file diff --git a/next-app/src/app/datasources/page.tsx b/next-app/src/app/datasources/page.tsx new file mode 100644 index 0000000..8018308 --- /dev/null +++ b/next-app/src/app/datasources/page.tsx @@ -0,0 +1,18 @@ +"use client"; + +import { ReactElement } from "react"; +import { TrackPageViewIfEnabled } from "@/util/cookiesHandling"; +import DataSourcesComponent from "@/components/DataSourcesComponent"; +import { BODY_CLASSES } from "@/constants"; +import { LastUpdated } from "@/components/common/last-updated"; + +export default function DataPage(): ReactElement { + TrackPageViewIfEnabled(); + + return ( +
+ + +
+ ); +} diff --git a/next-app/src/app/eventsandtrainings/page.tsx b/next-app/src/app/eventsandtrainings/page.tsx new file mode 100644 index 0000000..cf6b933 --- /dev/null +++ b/next-app/src/app/eventsandtrainings/page.tsx @@ -0,0 +1,232 @@ +"use client"; + +import { ReactElement } from "react"; +import { ICardConfig, ICardContent, ILink } from "@/interfaces/types"; +import CardComponent from "@/components/CardComponent"; +import { TrackPageViewIfEnabled } from "@/util/cookiesHandling"; +import { BODY_CLASSES, H_1 } from "@/constants"; +import Link from "next/link"; +import { LastUpdated } from "@/components/common/last-updated"; + +const nbisImage = "/Partner logo/nbislogo_orange_txt_3cb0778d90.svg"; +const scilifelabImage = "/Partner logo/SciLifeLab_Logotype_Green_POS.png"; +const scilifelabDataPlatformImage = "/Partner logo/sll_dp_outline.svg"; +const pathogensPortalImage = "/Partner logo/swe_pathogens_logo.png"; +const elixirImage = "/Partner logo/elixir-tess.svg"; +const gmsImage = "/Partner logo/gms-logo.png"; +const kiImage = "/Partner logo/ki-logo.jpg"; + +export default function EventsAndTrainingsPage(): ReactElement { + TrackPageViewIfEnabled(); + + const breadcrumbs: { [id: string]: ILink } = { + l1: { text: "Home", classes: "", link: "/" }, + l2: { text: "Events & Training", classes: "", link: "" }, + }; + + const cardClasses: string = + "flex flex-row justify-center items-center w-full h-full bg-white shadow-xl"; + + const cardConfig: { [id: string]: ICardConfig } = { + sslCalendar: { + cardClasses: cardClasses + " pl-6", + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain h-56 w-56", + buttonClasses: "", + buttonPlacement: "", + }, + kiCalendar: { + cardClasses: cardClasses + " pl-6", + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain h-56 w-56", + buttonClasses: "", + buttonPlacement: "", + }, + sslTrainingPortal: { + cardClasses: cardClasses + " pl-6", + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain h-56 w-56", + buttonClasses: "", + buttonPlacement: "", + }, + nbis: { + cardClasses: cardClasses + " pl-10", + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain h-52 w-52", + buttonClasses: "", + buttonPlacement: "", + }, + sllDataPlatform: { + cardClasses: cardClasses + " pl-6", + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain h-56 w-56", + buttonClasses: "", + buttonPlacement: "", + }, + pathogensPortal: { + cardClasses: cardClasses + " pl-6", + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain h-56 w-56", + buttonClasses: "", + buttonPlacement: "", + }, + elixir: { + cardClasses: cardClasses + " pl-6", + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain h-56 w-56", + buttonClasses: "", + buttonPlacement: "", + }, + gms: { + cardClasses: cardClasses + " pl-6", + titleClasses: "card-title", + subTitleClasses: "", + textClasses: "", + imgClasses: "object-contain h-56 w-56", + buttonClasses: "", + buttonPlacement: "", + }, + }; + + const cardContent: { [id: string]: ICardContent } = { + sslCalendar: { + title: "SciLifeLab Events Calendar", + subTitle: "", + text: "The SciLifeLab Events Calendar brings together life science professionals by highlighting key events across the SciLifeLab community. Offering a diverse array of courses, seminars, and networking opportunities, the calendar serves as a hub for skill development and collaboration in the life sciences.", + buttonText: "", + imageSrc: scilifelabImage, + imageAlt: "SciLifeLab logo", + }, + kiCalendar: { + title: "KI Calendar", + subTitle: "", + text: "The Karolinska Institutet Calendar provides a comprehensive overview of upcoming seminars, conferences, and training events across various disciplines in medical and health sciences. It features specific filtering options for precision medicine, along with other filters to help users find relevant events with ease.", + buttonText: "", + imageSrc: kiImage, + imageAlt: "KI logo", + }, + sslTrainingPortal: { + title: "SciLifeLab Training Portal", + subTitle: "", + text: "The SciLifeLab Training Portal provides life science professionals with access to high-quality training resources and opportunities. Developed by the SciLifeLab Training Hub, the portal facilitates skill development and expert collaboration across the Swedish life science community. Backed by SciLifeLab, the DDLS program, and Vetenskapsrådet, the portal ensures that both researchers and trainers have the tools and support they need to stay at the forefront of scientific advancements.", + buttonText: "", + imageSrc: scilifelabImage, + imageAlt: "SciLifeLab logo", + }, + nbis: { + title: "NBIS Training and Workshops", + subTitle: "", + text: "NBIS offers comprehensive training and workshops in bioinformatics for researchers across Swedish universities. Aimed at PhD students, postdocs, investigators, and other life science professionals, these national events provide an affordable way to develop cutting-edge skills in bioinformatics, with a small participation fee for attendees.", + buttonText: "", + imageSrc: nbisImage, + imageAlt: "NBIS and ELIXIR Sweden logos", + }, + sllDataPlatform: { + title: "SciLifeLab Data Platform Events & Training", + subTitle: "", + text: "The SciLifeLab Data Platform offers an extensive list of upcoming conferences, webinars, and training opportunities focused on data-driven life science. This platform, developed and managed by SciLifeLab’s Data Centre, provides Swedish researchers with the latest resources and training needed to stay at the forefront of data science innovations in life sciences.", + buttonText: "", + imageSrc: scilifelabDataPlatformImage, + imageAlt: "SciLifeLab logo", + }, + pathogensPortal: { + title: "Swedish Pathogens Portal Events & Training", + subTitle: "", + text: "The Swedish Pathogens Portal lists upcoming events, webinars, and training sessions focused on pandemic preparedness and infectious disease research. It also includes data management resources tailored to these fields. The portal was developed and is maintained by SciLifeLab’s Data Centre together with the DDLS Data Science Node in Epidemiology and Biology of infection.", + buttonText: "", + imageSrc: pathogensPortalImage, + imageAlt: "Pathogens Portal logo", + }, + elixir: { + title: "ELIXIR TeSS", + subTitle: "", + text: "ELIXIR TeSS is a centralized platform for discovering training resources and events in life sciences across Europe. Developed as part of ELIXIR, a pan-European infrastructure for life-science data, TeSS provides access to a wealth of training materials, interactive tutorials, and face-to-face training opportunities. It serves as a one-stop-shop for researchers seeking to enhance their use of computational tools and infrastructures for scientific discovery.", + buttonText: "", + imageSrc: elixirImage, + imageAlt: "Elixir TeSS logo", + }, + gms: { + title: "GMS Kalendarium", + subTitle: "", + text: "The GMS Kalendarium is a curated calendar of genomics-related seminars and events, hosted and maintained by Genomic Medicine Sweden. It offers valuable resources for researchers and professionals interested in the latest developments in genomic medicine in Sweden.", + buttonText: "", + imageSrc: gmsImage, + imageAlt: "GMS logo", + }, + }; + + const cardLinks: { [id: string]: string } = { + sslCalendar: "https://www.scilifelab.se/events/#calendar", + sslTrainingPortal: "https://training.scilifelab.se/", + nbis: "https://nbis.se/training/future/", + sllDataPlatform: "https://data.scilifelab.se/events/", + pathogensPortal: "https://www.pathogens.se/events/", + elixir: "https://tess.elixir-europe.org/events", + gms: "https://genomicmedicine.se/kalendarium/", + kiCalendar: "https://news.ki.se/ki-calendar/", + }; + + return ( +
+
+
    + {Object.keys(breadcrumbs).map((key) => ( +
  • + {breadcrumbs[key].link ? ( + + {breadcrumbs[key].text} + + ) : ( + <>{breadcrumbs[key].text} + )} +
  • + ))} +
+
+
Where to find key events in the research field
+

+ The fields of Precision Medicine and Diagnostics encompass a wide range + of activities, including conferences, symposiums, and training sessions. + Even within Sweden and the broader Nordic region, keeping track of + ongoing and upcoming events can be challenging. Currently, there is no + centralized hub that covers all events across the Nordics. The Precision + Medicine Portal aims to simplify this process by providing a curated + overview, featuring links and descriptions of websites dedicated to + events in this research area. +
+ If you would like to include your website in this overview, please reach + out to us via our contact form. +

+
+ {/*
+ +
*/} + {Object.keys(cardConfig).map((key) => ( +
+ + + +
+ ))} +
+ +
+ ); +} diff --git a/next-app/src/app/favicon.ico b/next-app/src/app/favicon.ico new file mode 100644 index 0000000..043be54 Binary files /dev/null and b/next-app/src/app/favicon.ico differ diff --git a/next-app/src/app/globals.css b/next-app/src/app/globals.css new file mode 100644 index 0000000..6cf8210 --- /dev/null +++ b/next-app/src/app/globals.css @@ -0,0 +1,67 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 210 40% 98%; + --foreground: 222.2 84% 4.9%; + + --card: 0 0% 100%; + --card-foreground: 222.2 84% 4.9%; + + --popover: 0 0% 100%; + --popover-foreground: 222.2 84% 4.9%; + + --primary: 187 92% 20%; + --primary-foreground: 210 40% 98%; + + --secondary: 0 2% 46%; + --secondary-foreground: 210 40% 98%; + + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + + --accent: 84 47% 53%; + --accent-foreground: 222.2 84% 4.9%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 210 40% 98%; + + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + --ring: 222.2 84% 4.9%; + + --radius: 0.5rem; + } + + .dark { + --background: 222.2 84% 4.9%; + --foreground: 210 40% 98%; + + --card: 222.2 84% 4.9%; + --card-foreground: 210 40% 98%; + + --popover: 222.2 84% 4.9%; + --popover-foreground: 210 40% 98%; + + --primary: 187 92% 20%; + --primary-foreground: 222.2 47.4% 11.2%; + + --secondary: 0 2% 46%; + --secondary-foreground: 210 40% 98%; + + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + + --accent: 84 47% 53%; + --accent-foreground: 210 40% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 40% 98%; + + --border: 217.2 32.6% 17.5%; + --input: 217.2 32.6% 17.5%; + --ring: 212.7 26.8% 83.9%; + } +} diff --git a/next-app/src/app/kiarva/page.tsx b/next-app/src/app/kiarva/page.tsx new file mode 100644 index 0000000..6d8a908 --- /dev/null +++ b/next-app/src/app/kiarva/page.tsx @@ -0,0 +1,50 @@ +"use client"; + +import { ReactElement } from "react"; +import { TrackPageViewIfEnabled } from "@/util/cookiesHandling"; + +// simport Iframe from "react-iframe"; + +export default function KiarvaIFramePage(): ReactElement { + TrackPageViewIfEnabled(); + + const kiarva_hostname = "https://kiarva.scilifelab.se/"; + + return ( + <> + +
+
+ {kiarva_hostname && ( + //
+ // + //
+
+ +
+ )} +
+
+ + ); +} diff --git a/next-app/src/app/layout.tsx b/next-app/src/app/layout.tsx new file mode 100644 index 0000000..099b286 --- /dev/null +++ b/next-app/src/app/layout.tsx @@ -0,0 +1,25 @@ +import type { Metadata } from "next"; +import "./globals.css"; +import HeaderComponent from "@/components/HeaderComponent"; +import FooterComponent from "@/components/FooterComponent"; +import React from "react"; + +export const metadata: Metadata = { + title: "Precision Medicine Portal", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + + {children} + + + + ); +} diff --git a/next-app/src/app/page.tsx b/next-app/src/app/page.tsx new file mode 100644 index 0000000..032d426 --- /dev/null +++ b/next-app/src/app/page.tsx @@ -0,0 +1,89 @@ +'use client'; + +import { ReactElement } from 'react'; +// import CardComponent from "../components/CardComponent"; +import ImageCarouselAlternativeComponent from "../components/ImageCarouselAlternativeComponent"; +import { BODY_CLASSES, + // BUTTON_TYPE_ONE, + // H_1 + } from '../constants'; +// import { ICardConfig, ICardContent } from '../interfaces/types'; +import { TrackPageViewIfEnabled } from '../util/cookiesHandling'; + +export default function HomePage(): ReactElement { + TrackPageViewIfEnabled(); + + // var cardTitleClasses: string = "text-center text-base-100-content text-xl font-semibold"; + // var cardTextClasses: string = "text-center"; + + // var cardConfig: { [id: string] : ICardConfig; } = { + // 'whiteCard': { + // cardClasses: "w-[40rem] bg-base-100 text-base-100-content bg-opacity-95 shadow-xl border-2 border-base-100", + // titleClasses: cardTitleClasses, + // subTitleClasses: "", + // textClasses: cardTextClasses, + // imgClasses: "", + // buttonClasses: "", + // buttonPlacement: "", + // }, + // 'blackCard': { + // cardClasses: "bg-neutral bg-opacity-95 rounded-[10px] shadow border-2", + // titleClasses: cardTitleClasses, + // subTitleClasses: "", + // textClasses: cardTextClasses, + // imgClasses: "", + // buttonClasses: BUTTON_TYPE_ONE, + // buttonPlacement: "justify-center", + // } + // }; + + // var cardContent: { [id: string] : ICardContent } = { + // 'whiteCard1': { + // title: "", + // subTitle: "", + // text: "In development", + // buttonText: "", + // imageSrc: "", + // imageAlt: "", + // }, + // 'blackCard1': { + // title: "Data sources", + // subTitle: "", + // text: "In development", + // buttonText: "Sign In", + // imageSrc: "", + // imageAlt: "", + // }, + + // }; + + return ( +
+
+ + { + /* Commented out until the team has sufficient time to fill the cards with useful content +
+
+

Latest News

+ + + + + +
+
+

Latest News

+ + + + + +
+
+ */ +} +
+
+ ); +} \ No newline at end of file diff --git a/next-app/src/app/privacy/page.tsx b/next-app/src/app/privacy/page.tsx new file mode 100644 index 0000000..2943b1c --- /dev/null +++ b/next-app/src/app/privacy/page.tsx @@ -0,0 +1,101 @@ +'use client'; + +import { ReactElement, useState } from 'react'; +import { + BODY_CLASSES, + BUTTON_TYPE_ONE, + H_1, +} from '@/constants'; +import Link from 'next/link'; +import { ILink } from "@/interfaces/types"; +import { TrackPageViewIfEnabled, trackingDisabled } from '@/util/cookiesHandling'; +import { PrivacyPageContent } from '@/content/content'; +import React from 'react'; +import { deleteCookie, setCookie } from 'cookies-next'; + +export default function PrivacyPage(): ReactElement { + TrackPageViewIfEnabled(); + + const breadcrumbs: { [id: string] : ILink; } = { + 'l1': { text: 'Home', classes: '', link: '/' }, + 'l2': { text: 'Privacy', classes: '', link: '' }, + }; + + const optInOrOutTextActive = (isTrackingEnabled: boolean): string[] => { + if (isTrackingEnabled) { + return ["Click on the button to the right to opt out", "Opt Out"] + } + else { + return ["Click on the button to the right to opt in", "Opt In"] + } + } + + const [ optInText, setOptInText ] = useState(optInOrOutTextActive(!trackingDisabled())) + + const handleOptOut = () => { + trackingDisabled() ? + deleteCookie('trackingDisabled') : + setCookie('trackingDisabled', 'true', { maxAge: 365 }) + setOptInText(optInOrOutTextActive(!trackingDisabled())) + }; + + return ( + <> +
+
+
    + {Object.keys(breadcrumbs).map( key => ( +
  • + { + breadcrumbs[key].link + ? + + {breadcrumbs[key].text} + + : + <> + {breadcrumbs[key].text} + + } +
  • + ))} +
+
+
Privacy Policy
+
{PrivacyPageContent.content[0].header}
+

{PrivacyPageContent.content[0].body}

+
{PrivacyPageContent.content[1].header}
+

{PrivacyPageContent.content[1].body}

+
+ + {optInText[0]} +
+ +
+
+
{PrivacyPageContent.content[2].header}
+

+ We collect information that your browser sends to us whenever you visit our Service, referred to as 'log data.' This data may include: +

+
    +
  • The website you visited us from
  • +
  • The parts of our Service you visit
  • +
  • The date and duration of your visit
  • +
  • Your anonymised IP address
  • +
  • Information about the device you used during your visit (device type, operating system, screen resolution, language, country you are located in, and web browser type)
  • +
+

+ We process this usage data using Matomo Analytics (hosted on SciLifeLab servers and operated solely by SciLifeLab) + for statistical purposes, to improve our Service, and to recognise and prevent any misuse. You can opt out of your statistics + being collected below. Note that the tracking opt-out feature requires cookies to be enabled. +

+
{PrivacyPageContent.content[3].header}
+

{PrivacyPageContent.content[3].body}

+
{PrivacyPageContent.content[4].header}
+

{PrivacyPageContent.content[4].body}

+
{PrivacyPageContent.content[5].header}
+

{PrivacyPageContent.content[5].body}

+
+ + ); +} \ No newline at end of file diff --git a/next-app/src/app/ragnar/answer/page.tsx b/next-app/src/app/ragnar/answer/page.tsx new file mode 100644 index 0000000..c6a3065 --- /dev/null +++ b/next-app/src/app/ragnar/answer/page.tsx @@ -0,0 +1,118 @@ +"use client"; + +import { ReactElement } from "react"; +import { TrackPageViewIfEnabled } from "@/util/cookiesHandling"; +import { ILink } from "@/interfaces/types"; +import Link from "next/link"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { + Card, + CardDescription, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import { Search, Terminal } from "lucide-react"; + +import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; + +export default function RAGAnswerPage(): ReactElement { + TrackPageViewIfEnabled(); + + const breadcrumbs: { [id: string]: ILink } = { + l1: { text: "Home", classes: "", link: "/" }, + l2: { text: "RAGnar", classes: "", link: "" }, + }; + + return ( +
+
+
    + {Object.keys(breadcrumbs).map((key) => ( +
  • + {breadcrumbs[key].link ? ( + + {breadcrumbs[key].text} + + ) : ( + <>{breadcrumbs[key].text} + )} +
  • + ))} +
+
+
+
+
+ RAGnar Logo and Name +
+
+ +
+
+ +
+ +
+ + + + Question asked comes here + Reply to be streamed in here. + + +

Sources

+ +
+ + + + Artile Title comes here + + + Authors, Journal, Year comes here + + + + + + + + Artile Title comes here + + + Authors, Journal, Year comes here + + + + + + + Artile Title comes here + + + Authors, Journal, Year comes here + + + + + + + Artile Title comes here + + + Authors, Journal, Year comes here + + + +
+
+
+ ); +} diff --git a/next-app/src/app/ragnar/ask/page.tsx b/next-app/src/app/ragnar/ask/page.tsx new file mode 100644 index 0000000..2bc0bc6 --- /dev/null +++ b/next-app/src/app/ragnar/ask/page.tsx @@ -0,0 +1,98 @@ +"use client"; + +import { ReactElement } from "react"; +import { TrackPageViewIfEnabled } from "@/util/cookiesHandling"; +import { ILink } from "@/interfaces/types"; +import Link from "next/link"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Card, CardContent } from "@/components/ui/card"; +import { Search } from "lucide-react"; + +export default function RAGAskPage(): ReactElement { + TrackPageViewIfEnabled(); + + const breadcrumbs: { [id: string]: ILink } = { + l1: { text: "Home", classes: "", link: "/" }, + l2: { text: "RAGnar", classes: "", link: "" }, + }; + + return ( +
+
+
    + {Object.keys(breadcrumbs).map((key) => ( +
  • + {breadcrumbs[key].link ? ( + + {breadcrumbs[key].text} + + ) : ( + <>{breadcrumbs[key].text} + )} +
  • + ))} +
+
+
+
+
+ RAGnar Logo and Name +
+

+ Get answers to your precision medicine questions with our AI-powered + search engine. +

+
+ +
+
+ +
+ +
+ +
+ + +

+ Question: This is a placeholder for a question. Real questions + would include a full question incl. question mark. +

+
+
+ + +

+ Question: This is a placeholder for a question. Real questions + would include a full question incl. question mark. +

+
+
+ + +

+ Question: This is a placeholder for a question. Real questions + would include a full question incl. question mark. +

+
+
+ + +

+ Question: This is a placeholder for a question. Real questions + would include a full question incl. question mark. +

+
+
+
+
+
+ ); +} diff --git a/next-app/src/app/ragnar/layout.tsx b/next-app/src/app/ragnar/layout.tsx new file mode 100644 index 0000000..f4e2a6a --- /dev/null +++ b/next-app/src/app/ragnar/layout.tsx @@ -0,0 +1,10 @@ +import { BODY_CLASSES } from "@/constants"; +import "../globals.css"; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return
{children}
; +} diff --git a/next-app/src/app/registries/PageClient.tsx b/next-app/src/app/registries/PageClient.tsx new file mode 100644 index 0000000..dbfa9fa --- /dev/null +++ b/next-app/src/app/registries/PageClient.tsx @@ -0,0 +1,272 @@ +"use client"; + +import { useState } from "react"; +import { useSearchParams } from "next/navigation"; +import { RegistrySources, RegistrySourcesFilters } from "@/interfaces/types"; +import { LastUpdated } from "@/components/common/last-updated"; + +const filters: RegistrySourcesFilters = { + registryCentre: [ + "Kvalitetsregistercentrum Stockholm", + "Registercentrum Syd", + "Registercentrum Norr", + "Uppsala Clinical Research Center", + "Registercentrum Västra Götaland", + "Registercentrum Sydost", + "RCC Stockholm Gotland", + "RCC Sydöst", + "RCC Norr", + "RCC Mellansverige", + "RCC Väst", + "RCC Syd", + ], + registryCategory: [ + "National quality registry", + "Other quality registry", + "National cancer quality registry", + ], +}; + +const organisationLinks: { [key: string]: string } = { + "Kvalitetsregistercentrum Stockholm": "https://qrcstockholm.se", + "Registercentrum Syd": "https://registercentrum.se", + "Registercentrum Norr": "https://rcnorr.se", + "Uppsala Clinical Research Center": "https://www.ucr.uu.se/sv/", + "Registercentrum Västra Götaland": "https://registercentrum.se", + "Registercentrum Sydost": + "https://sydostrasjukvardsregionen.se/samverkansgrupper/data-och-analys/registercentrum-sydost/", + "RCC Stockholm Gotland": "https://cancercentrum.se/stockholm-gotland/", + "RCC Sydöst": "https://cancercentrum.se/sydost/", + "RCC Norr": "https://cancercentrum.se/norr/", + "RCC Mellansverige": "https://cancercentrum.se/mellansverige/", + "RCC Väst": "https://cancercentrum.se/vast/", + "RCC Syd": "https://cancercentrum.se/syd/", +}; + +export default function DataPageClient({ + initialData, +}: { + initialData: RegistrySources[]; +}) { + const [RegistrySourcesJSON] = useState(initialData); + const [selectedFilters, setSelectedFilters] = + useState({ + registryCentre: [], + registryCategory: [], + }); + const searchParams = useSearchParams(); + const searchBar = searchParams.get("search") || ""; + + const [checkedList, setCheckedList] = useState( + Array(filters.registryCentre.length + filters.registryCategory.length).fill( + false + ) + ); + + const handleFilterChange = ( + type: keyof RegistrySourcesFilters, + value: string, + index: number + ) => { + setSelectedFilters((prev) => { + const updated = { ...prev }; + updated[type] = updated[type].includes(value) + ? updated[type].filter((item) => item !== value) + : [...updated[type], value]; + return updated; + }); + setCheckedList((prev) => + prev.map((item, idx) => (idx === index ? !item : item)) + ); + }; + + const applyFilters = (data: RegistrySources) => { + const matchesCentre = + !selectedFilters.registryCentre.length || + selectedFilters.registryCentre.some((filter) => + data.registry_centre.some( + (centre) => centre.toLowerCase() === filter.toLowerCase() + ) + ); + const matchesCategory = + !selectedFilters.registryCategory.length || + selectedFilters.registryCategory.some((filter) => + data.category.some((cat) => cat.toLowerCase() === filter.toLowerCase()) + ); + const matchesSearch = searchBar + .toLowerCase() + .split(" ") + .every( + (tag) => + data.name.toLowerCase().includes(tag) || + data.search_tags.some((st) => st.toLowerCase().includes(tag)) + ); + return matchesCentre && matchesCategory && matchesSearch; + }; + + return ( +
+
+ {/* Left Column */} +
+
+ + { + const params = new URLSearchParams(window.location.search); + params.set("search", e.target.value); + window.history.replaceState( + {}, + "", + `${window.location.pathname}?${params}` + ); + }} + /> +
+
+

Organisation

+
+ {filters.registryCentre.map((centre, idx) => ( +
+ + + {centre} + +
+ ))} +
+
+
+

Category

+
+ {filters.registryCategory.map((category, idx) => ( +
+ + + {category} + +
+ ))} +
+
+
+
+
+ + + + + + +
+ + Please note: + +
+
+

+ The collected data in most of the registries is only available + in Swedish. +

+
+
+
+ + {/* Right Column */} +
+
+ {RegistrySourcesJSON.filter(applyFilters).map((item, index) => ( +
+ +
+

+ {item.Information || "Information not available."} +

+
+ {/* Start Year */} +
+ Start year: +

{item.start_date}

+
+ + {/* Organisation */} + + + {/* Category */} +
+ Category: +

+ {item.category.join(", ")} +

+
+
+
+
+ ))} +
+
+
+ +
+ ); +} diff --git a/next-app/src/app/registries/page.tsx b/next-app/src/app/registries/page.tsx new file mode 100644 index 0000000..8172f79 --- /dev/null +++ b/next-app/src/app/registries/page.tsx @@ -0,0 +1,305 @@ +"use client"; + +import { useState, useEffect } from "react"; +import { Input } from "@/components/ui/input"; +import { Checkbox } from "@/components/ui/checkbox"; +import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"; +import { BODY_CLASSES } from "@/constants"; + +interface IRegistryFilters { + registryCentre: string[]; + registryCategory: string[]; +} + +interface IRegistrySource { + name: string; + url: string; + Information: string; + start_date: string; + registry_centre: string[]; + category: string[]; + search_tags: string[]; +} + +const filters: IRegistryFilters = { + registryCentre: [ + "Kvalitetsregistercentrum Stockholm", + "Registercentrum Syd", + "Registercentrum Norr", + "Uppsala Clinical Research Center", + "Registercentrum Västra Götaland", + "Registercentrum Sydost", + "RCC Stockholm Gotland", + "RCC Sydöst", + "RCC Norr", + "RCC Mellansverige", + "RCC Väst", + "RCC Syd", + ], + registryCategory: [ + "National quality registry", + "Other quality registry", + "National cancer quality registry", + ], +}; + +const organisationLinks: { [key: string]: string } = { + "Kvalitetsregistercentrum Stockholm": "https://qrcstockholm.se", + "Registercentrum Syd": "https://registercentrum.se", + "Registercentrum Norr": "https://rcnorr.se", + "Uppsala Clinical Research Center": "https://www.ucr.uu.se/sv/", + "Registercentrum Västra Götaland": "https://registercentrum.se", + "Registercentrum Sydost": + "https://sydostrasjukvardsregionen.se/samverkansgrupper/data-och-analys/registercentrum-sydost/", + "RCC Stockholm Gotland": "https://cancercentrum.se/stockholm-gotland/", + "RCC Sydöst": "https://cancercentrum.se/sydost/", + "RCC Norr": "https://cancercentrum.se/norr/", + "RCC Mellansverige": "https://cancercentrum.se/mellansverige/", + "RCC Väst": "https://cancercentrum.se/vast/", + "RCC Syd": "https://cancercentrum.se/syd/", +}; + +export default function RegistryPage() { + const [registrySourcesJSON, setRegistrySourcesJSON] = useState< + IRegistrySource[] + >([]); + const [selectedFilters, setSelectedFilters] = useState({ + registryCentre: [], + registryCategory: [], + }); + const [searchBar, setSearchBar] = useState(""); + const [isLoading, setIsLoading] = useState(true); + + const nrOfCheckboxes = filters.registryCentre.concat( + filters.registryCategory + ).length; + const [checkedList, setCheckedList] = useState( + new Array(nrOfCheckboxes).fill(false) + ); + + useEffect(() => { + async function fetchRegistryData() { + try { + // In a real-world scenario, you might fetch this data from an API + // For this example, we'll simulate an API call with a local import + const registryData = await import( + "@/assets/Kvalitetsregister_geo_dates_02.09.2024.json" + ); + const updatedRegistryData = registryData.default.map( + (entry: IRegistrySource) => ({ + ...entry, + start_date: entry.start_date ? entry.start_date.split("-")[0] : "", + category: entry.category || [], + }) + ); + setRegistrySourcesJSON(updatedRegistryData); + setIsLoading(false); + } catch (error) { + console.error("Error fetching registry data:", error); + setIsLoading(false); + } + } + + fetchRegistryData(); + }, []); + + function checkedFilter( + filterType: keyof IRegistryFilters, + filterName: string, + boxIndex: number + ) { + setSelectedFilters((prev) => { + const newFilters = { ...prev }; + if (newFilters[filterType].includes(filterName)) { + newFilters[filterType] = newFilters[filterType].filter( + (item) => item !== filterName + ); + } else { + newFilters[filterType].push(filterName); + } + return newFilters; + }); + + setCheckedList((prev) => { + const newCheckedList = [...prev]; + newCheckedList[boxIndex] = !newCheckedList[boxIndex]; + return newCheckedList; + }); + } + + function applyRegistryCentreFilter(registry: IRegistrySource) { + return ( + selectedFilters.registryCentre.length === 0 || + selectedFilters.registryCentre.some((filter) => + registry.registry_centre.some( + (centre) => centre.toLowerCase() === filter.toLowerCase() + ) + ) + ); + } + + function applyRegistryCategoryFilter(registry: IRegistrySource) { + return ( + selectedFilters.registryCategory.length === 0 || + selectedFilters.registryCategory.some((filter) => + registry.category.some( + (cat) => cat.toLowerCase() === filter.toLowerCase() + ) + ) + ); + } + + function applySearchBar(registry: IRegistrySource) { + if (searchBar.length === 0) return true; + const searchBarLower = searchBar.toLowerCase(); + const searchTags = searchBarLower.split(" "); + return ( + registry.name.toLowerCase().includes(searchBarLower) || + searchTags.some((tag) => + registry.search_tags.some((searchTag) => + searchTag.toLowerCase().includes(tag) + ) + ) + ); + } + + if (isLoading) { + return
Loading...
; + } + + return ( +
+
+
+
+
+
+ + setSearchBar(e.target.value)} + className="bg-muted" + /> +
+
+

+ Organisation +

+ + + {filters.registryCentre.map((element, index) => ( +
+ + checkedFilter("registryCentre", element, index) + } + /> + +
+ ))} +
+
+
+
+

Category

+ + + {filters.registryCategory.map((element, index) => ( +
+ + checkedFilter( + "registryCategory", + element, + filters.registryCentre.length + index + ) + } + /> + +
+ ))} +
+
+
+
+
+
+ {registrySourcesJSON + .filter((registry) => applyRegistryCentreFilter(registry)) + .filter((registry) => applyRegistryCategoryFilter(registry)) + .filter((registry) => applySearchBar(registry)) + .map((item, index) => ( + + + + + {item.name} + + + + +

{item.Information || "Information not available."}

+
+
+ Start year: {item.start_date} +
+ +
+ Category: {item.category.join(", ")} +
+
+
+
+ ))} +
+
+
+
+ ); +} diff --git a/next-app/src/app/signin/page.tsx b/next-app/src/app/signin/page.tsx new file mode 100644 index 0000000..0b8cf4a --- /dev/null +++ b/next-app/src/app/signin/page.tsx @@ -0,0 +1,14 @@ +'use client'; + +import { ReactElement } from 'react'; +// import { TrackPageViewIfEnabled } from '@/util/cookiesHandling'; + +export default function SignInPage(): ReactElement { + // TrackPageViewIfEnabled(); + + return ( +
+

Sign In page under construction

+
+ ); +} \ No newline at end of file diff --git a/next-app/src/assets/Kvalitetsregister_geo_dates_02.09.2024.json b/next-app/src/assets/Kvalitetsregister_geo_dates_02.09.2024.json new file mode 100644 index 0000000..728608d --- /dev/null +++ b/next-app/src/assets/Kvalitetsregister_geo_dates_02.09.2024.json @@ -0,0 +1,2387 @@ +[ + { + "name": "Barnobesitasregister i Sverige – BORIS", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "http://www.e-boris.se/", + "search_tags": [ + "BORIS", + "childhood obesity", + "Sverige", + "obesity" + ], + "Information": "One of the world's largest and oldest registries for the treatment of childhood obesity. BORIS was established in 2005 and has over 40,000 registered individuals. In more than 40 scientific publications, BORIS has contributed to increased knowledge about childhood obesity.", + "category": [ + "National quality registry" + ], + "start_date": "2005" + }, + { + "name": "Endovaskulär behandling av Stroke – EVAS-registret", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "http://www.evas-registret.se/", + "search_tags": [ + "stroke", + "endovascular", + "stroke", + "Endovaskulär" + ], + "Information": "EVAS is, a government funded national quality registry in Sweden for endovascular stroke treatment with full transparency in every aspect. It is based on a modern, top-of-the-line data platform and works in close relationship and shares data with RIKS-STROKE, which is the equivalent for all stroke patients in the country.", + "category": [ + "National quality registry" + ], + "start_date": "2012" + }, + { + "name": "Graviditetsregistret", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "https://www.medscinet.com/gr/default.aspx", + "search_tags": [ + "Graviditetsregistret", + "baby", + "prenatal", + "postnatal", + "fetal", + "neonatal" + ], + "Information": "The purpose of the registry is to provide a solid foundation of data and results for healthcare services across the country. Data is collected from maternal healthcare, fetal diagnostics and delivery records. As of 2024, the registry includes data on roughly 58,500 pregnant individuals and about 63,600 deliveries.", + "category": [ + "National quality registry" + ], + "start_date": "2013" + }, + { + "name": "InfCareHIV", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "https://infcarehiv.se/", + "search_tags": [ + "HIV", + "InfCareHIV", + "immune", + "virus" + ], + "Information": "Includes all HIV clinics in Sweden, covering over 99% of those diagnosed with HIV. Key data collected at enrollment and follow-up include sex at birth, gender identity, transmission route, HIV RNA levels, CD4+ cell counts, drug resistance, and co-infections with hepatitis C and B. Medication start/stop dates, AIDS diagnoses, and causes of death are also recorded.", + "category": [ + "National quality registry" + ], + "start_date": "1983" + }, + { + "name": "InfCareHepatit", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "http://www.infcarehepatit.se/", + "search_tags": [ + "liver", + "hepatitis", + "virus", + "InfCareHepatit" + ], + "Information": "InfCareHepatit is a Swedish registry that includes individuals with Hepatitis B and C. It involves all infectious disease clinics in Sweden and one gastroenterology clinic, covering over 90% of Hepatitis C patients and a majority of those with Hepatitis B. The registry collects data on age, gender at birth, country of birth, virus type, viral load, transmission route, date of first positive Hepatitis B or C test, liver function tests, and fibrosis assessment results. For those receiving treatment, it also records medication type, treatment outcomes, and any complications such as liver cirrhosis or cancer.", + "category": [ + "National quality registry" + ], + "start_date": "2008" + }, + { + "name": "Kvalitetsregister för cystisk fibros – CF-registret", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "https://cf-registret.se/", + "search_tags": [ + "lungs", + "cystic fibrosis", + "CF-registret" + ], + "Information": "The aim is to enhance the quality of care, survival rates, and quality of life for all cystic fibrosis (CF) patients in Sweden. It was established as a national quality registry in 2012. Since its inception, the purpose of the registry has been to continuously monitor all individuals with CF over time and ensure equitable and fair care throughout Sweden. The registry is utilised by the four CF centres in Sweden as well as some regional hospitals that treat CF patients.", + "category": [ + "National quality registry" + ], + "start_date": "2012" + }, + { + "name": "Nationellt kvalitetsregister för assisterad befruktning – Q-IVF", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "https://www.medscinet.com/qivf/", + "search_tags": [ + "reproduction", + "assisted reproduction", + "medscinet" + ], + "Information": "This registry is jointly managed by all IVF clinics in Sweden. The purpose of the registry is to continuously monitor treatment outcomes and any medical risks for both IVF children and the treated couples or women. It also provides participating clinics with data to support their development and quality improvement efforts.", + "category": [ + "National quality registry" + ], + "start_date": "2007" + }, + { + "name": "Svenska hemofiliregistret", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "https://svenskahemofiliregistret.se/", + "search_tags": [ + "hemophilia", + "bleeding", + "blood", + "hemofiliregistret" + ], + "Information": "Aims to effectively monitor this specific group of patients who often receive lifelong treatment, with the goal of enhancing the quality of care. Key metrics for assessing the effectiveness of the treatment include the annual number of bleeding episodes and joint damage. Joint damage is a long-term consequence of past joint bleeding and is evaluated through functional assessments using joint scores.", + "category": [ + "National quality registry" + ], + "start_date": "2015" + }, + { + "name": "Svenska Intensivvårdsregistret – SIR", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "https://www.icuregswe.org/", + "search_tags": [ + "SIR", + "Intensivvårdsregistret", + "intensive care", + "Svenska" + ], + "Information": "SIR aims to monitor and improve the quality of intensive care in Sweden within selected areas that are continuously tracked. Additionally, SIR aims to support the development of methods and research in intensive care, particularly in the field of epidemiology, as well as in other specific areas where collaboration among multiple centers is essential for conducting high-quality scientific studies.", + "category": [ + "National quality registry" + ], + "start_date": "2008" + }, + { + "name": "Svenska korsbandsregistret", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "https://www.aclregister.nu/", + "search_tags": [ + "ACL", + "korsbandsregistret" + ], + "Information": "This registry collects data on anterior cruciate ligament injuries and treatments across Sweden. Its purpose is to improve patient care by tracking surgical techniques, outcomes, and rehabilitation, as well as supporting research and benchmarking clinical practices.", + "category": [ + "National quality registry" + ], + "start_date": "2005-05-01" + }, + { + "name": "Svenska neuroregister", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "https://www.neuroreg.se/", + "search_tags": [ + "neuroregister", + "nervous system", + "neurological treatments", + "Svenska" + ], + "Information": "The Swedish Neuro Register gathers data on patients with neurological diseases such as multiple sclerosis, Parkinson's disease, epilepsy, and neuromuscular disorders. It aims to enhance the quality of care by monitoring treatment outcomes and supporting research into these conditions.", + "category": [ + "National quality registry" + ], + "start_date": "2001" + }, + { + "name": "Svensk Reumatologis Kvalitetsregister – SRQ", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "http://srq.nu/", + "search_tags": [ + "arthritis", + "rheumatic disease", + "SRQ" + ], + "Information": "This registry focuses on patients with rheumatic diseases like rheumatoid arthritis and ankylosing spondylitis. It collects data on disease activity, treatments, and patient outcomes to improve care quality and facilitate research into better management strategies.", + "category": [ + "National quality registry" + ], + "start_date": "1995" + }, + { + "name": "Svenskt neonatalt kvalitetsregister – SNQ", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "https://www.medscinet.com/pnq/", + "search_tags": [ + "newborn", + "neonatal care", + "neonatalt", + "SNQ" + ], + "Information": "he SNQ collects extensive data on all newborns admitted to neonatal intensive care units (NICUs) in Sweden. This includes demographic information, birth details, diagnoses, treatments, complications, and outcomes. The data covers a wide range of neonatal conditions and interventions, such as respiratory support, infections, congenital anomalies, and more..", + "category": [ + "National quality registry" + ], + "start_date": "2001" + }, + { + "name": "InfCare Sprututbyte", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "https://infcare.com/", + "search_tags": [ + "Sprututbyte", + "needle exchange", + "harm reduction", + "InfCare" + ], + "Information": "This registry is part of the InfCare system and collects data on individuals participating in needle exchange programs. This includes demographic details, health status, risk behaviours, and testing for infectious diseases like HIV and hepatitis. The registry also tracks the provision of services such as counselling, vaccinations, and referrals to healthcare or social services.", + "category": [ + "Other quality registry" + ], + "start_date": "2016" + }, + { + "name": "Nationellt register för levertransplantation", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "http://www.swepharm.se/", + "search_tags": [ + "liver transplant", + "levertransplantatation" + ], + "Information": "This registry collects detailed information on all liver transplant procedures performed in Sweden, including data on donor and recipient characteristics, surgical techniques, post-transplant complications, immunosuppression protocols, and long-term follow-up outcomes such as graft survival and patient survival.", + "category": [ + "Other quality registry" + ], + "start_date": "1998" + }, + { + "name": "Lungfibrosregistret", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "http://slmf.se/kvalitetsregister/lungfibrosregistret/", + "search_tags": [ + "fibrosis", + "Lungfibrosregistret", + "lung", + "pulmonary" + ], + "Information": "The register collects data on patients diagnosed with pulmonary fibrosis, including patient demographics, diagnostic criteria, disease severity, treatment regimens, pulmonary function tests, and patient-reported outcomes. It also tracks disease progression and responses to different therapies over time. It aims to include data from all healthcare providers treating patients with pulmonary fibrosis in Sweden, covering both university hospitals and regional clinics. ", + "category": [ + "Other quality registry" + ], + "start_date": "2014" + }, + { + "name": "Svenskt kvalitetsregister för atopiskt dermatit – SwedAD", + "registry_centre": [ + "Kvalitetsregistercentrum Stockholm" + ], + "url": "https://swedad.nu/", + "search_tags": [ + "skin", + "SwedAD", + "eczema", + "atopic dermatitis" + ], + "Information": "SwedAD collects detailed data on patients with atopic dermatitis, including demographic information, disease severity, treatment regimens, and patient-reported outcomes such as quality of life and symptom control. It also includes information on healthcare resource utilisation, like hospital visits and medications. It includes data from both specialised care centres and general practitioners.", + "category": [ + "Other quality registry" + ], + "start_date": "2019" + }, + { + "name": "Amputations- och Protesregistret Swedeamp", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://www.swedeamp.com/", + "search_tags": [ + "amputation", + "swedeamp", + "prosthetic", + "limb" + ], + "Information": "SwedeAmp collects information on patients undergoing amputations and those fitted with prosthetics. This includes details on the type of amputation, surgical techniques, prosthetic fittings, complications, and rehabilitation outcomes. The registry also tracks patient-reported outcomes related to mobility, function, and quality of life. The registry includes data from all healthcare providers in Sweden that perform amputations and provide prosthetic services, ensuring nationwide coverage", + "category": [ + "National quality registry" + ], + "start_date": "2011" + }, + { + "name": "Barnkataraktregistret PECARE", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/pecare", + "search_tags": [ + "paediatric", + "PECARE", + "eye", + "cataract" + ], + "Information": "PECARE focuses on children with cataracts, collecting data on diagnosis, surgical treatments, visual outcomes, and follow-up care. It also tracks complications and the use of visual aids post-surgery. The registry aims to improve understanding and management of paediatric cataracts in Sweden.", + "category": [ + "National quality registry" + ], + "start_date": "2006" + }, + { + "name": "BPSD – Svenskt register för Beteendemässiga och Psykiska Symptom vid Demens", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://www.bpsd.se/", + "search_tags": [ + "BPSD", + "dementia", + "psychological", + "demens" + ], + "Information": "The BPSD register collects data on individuals with dementia who exhibit behavioural and psychological symptoms. It includes information on symptom types and severity, pharmacological and non-pharmacological treatments, and care plans. The registry aims to improve the management of dementia-related symptoms and enhance patient care.", + "category": [ + "National quality registry" + ], + "start_date": "2010" + }, + { + "name": "CPUP – Uppföljningsprogram för Cerebral Pares", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://cpup.se/", + "search_tags": [ + "treatment", + "palsy", + "cerebral palsy", + "cpup" + ], + "Information": "CPUP collects comprehensive data on individuals with cerebral palsy, including demographic information, motor function, associated conditions, interventions, and outcomes. It tracks long-term development and care needs, with an emphasis on preventing complications and improving quality of life. The program covers all children and adults with cerebral palsy in Sweden who receive specialised care.", + "category": [ + "National quality registry" + ], + "start_date": "2008" + }, + { + "name": "HAKIR – Handkirurgiskt kvalitetsregister", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://hakir.se/", + "search_tags": [ + "hand", + "HAKIR", + "surgery", + "reconstruction" + ], + "Information": "HAKIR gathers data on patients undergoing hand surgery, including surgical details, complications, rehabilitation processes, and functional outcomes. It also collects patient-reported outcomes related to hand function and quality of life, which are crucial for assessing the success of various surgical procedures.", + "category": [ + "National quality registry" + ], + "start_date": "2010" + }, + { + "name": "Könsdysforiregistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/konsdysforiregistret", + "search_tags": [ + "dysphoria", + "gender", + "identity", + "Könsdysforiregistret" + ], + "Information": "This registry collects data on individuals undergoing assessment and treatment for gender dysphoria, including demographic information, psychological evaluations, medical and surgical treatments, and follow-up outcomes. It aims to monitor the quality of care provided to individuals with gender dysphoria and to support research in this field.", + "category": [ + "National quality registry" + ], + "start_date": "2017" + }, + { + "name": "LKG-registret – Nationellt kvalitetsregister för läpp- käk- och/eller gomspalt", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://www.lkg-registret.se/", + "search_tags": [ + "cleft lip", + "lip", + "palate" + ], + "Information": "Contains data on patients born with cleft lip, cleft palate, or both. It includes information on diagnosis, surgical interventions, follow-up care, speech and language outcomes, dental health, and psychosocial aspects. Data on patient demographics, types of clefts, and the timing and types of surgical procedures are also gathered. It has national coverage and includes data from all specialist centres in Sweden that treat cleft lip and palate. ", + "category": [ + "National quality registry" + ], + "start_date": "2010" + }, + { + "name": "MMCUP – Kvalitetsregister för MMC (myelomeningocele) och annan neuralrörsdefekt", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://mmcup.se/", + "search_tags": [ + "MMCUP", + "myelomeningocele", + "neural tube defect" + ], + "Information": "This registry collects data on patients with myelomeningocele (spina bifida) and other neural tube defects. It includes information on surgical interventions, neurological function, urological and orthopaedic outcomes, associated conditions, and patient-reported outcomes related to quality of life. It captures data on approximately 95% of all cases in Sweden.", + "category": [ + "National quality registry" + ], + "start_date": "2013" + }, + { + "name": "Nationella Kataraktregistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://www.kataraktreg.se/", + "search_tags": [ + "eye", + "vision", + "cataract" + ], + "Information": " The register gathers comprehensive data on cataract surgeries performed in Sweden, including patient demographics, types of cataract, surgical techniques, intraocular lenses used, complications, and visual outcomes. This registry covers over 99% of all cataract surgeries in Sweden, including data from all ophthalmology clinics and hospitals performing these procedures.", + "category": [ + "National quality registry" + ], + "start_date": "1992" + }, + { + "name": "Nationella Kvalitetsregistret för Infektionssjukdomar", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://www.infektionsregistret.se/", + "search_tags": [ + "pathogen", + "infectious disease", + "infectious", + "infektionsregistret" + ], + "Information": "This registry collects data on patients diagnosed with various infectious diseases, including HIV, hepatitis, and tuberculosis. Information includes demographics, diagnostics, treatments, disease progression, and outcomes, as well as data on antimicrobial resistance and healthcare-associated infections. It covers most patients with infectious diseases treated in hospitals and clinics. ", + "category": [ + "National quality registry" + ], + "start_date": "2007" + }, + { + "name": "RIKSHÖFT", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://rikshoft.se/", + "search_tags": [ + "RIKSHÖFT", + "fracture", + "hip", + "bone" + ], + "Information": "gathers data on patients with hip fractures, including demographic details, fracture types, treatments (surgical and non-surgical), complications, rehabilitation, and functional outcomes such as mobility and pain. It covers nearly all hospitals in Sweden that treat hip fractures, with around 90% of cases included in the registry.", + "category": [ + "National quality registry" + ], + "start_date": "1988" + }, + { + "name": "SKaPa – Svenskt kvalitetsregister för Karies och Parodontit", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://www.skapareg.se/", + "search_tags": [ + "Parodontit", + "dental caries", + "SKaPa", + "periodontitis" + ], + "Information": "SKaPa collects data on dental health, focusing on caries (tooth decay) and periodontitis (gum disease). Information includes dental examinations, treatment methods, preventive measures, and outcomes.", + "category": [ + "National quality registry" + ], + "start_date": "2010" + }, + { + "name": "SKRS – Svenskt Kvalitetsregister för Rehabilitering vid Synnedsättning", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/skrs", + "search_tags": [ + "Synnedsättning", + "vision rehabilitation", + "eyesight" + ], + "Information": "SKRS collects data on individuals undergoing rehabilitation for visual impairment, including types of visual impairments, rehabilitation interventions, assistive devices used, and functional outcomes. The register includes data from all vision rehabilitation centres across Sweden, aiming for complete national coverage", + "category": [ + "National quality registry" + ], + "start_date": "2015" + }, + { + "name": "SQRTPA – Scandinavian Quality Register for Thyroid, Parathyroid and Adrenal surgery", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://sqrtpa.se/", + "search_tags": [ + "parathyroid", + "thyroid", + "Adrenal", + "endocrine" + ], + "Information": "Data on patients undergoing surgery on the thyroid, parathyroid, or adrenal glands. It includes patient demographics, diagnoses, surgical details, pathology results, complications, and long-term outcomes. The registry includes data from major hospitals and surgical centres in Sweden, as well as in other Scandinavian countries.", + "category": [ + "National quality registry" + ], + "start_date": "2004" + }, + { + "name": "Svenska Cornearegistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/cornea", + "search_tags": [ + "transplant", + "corneal", + "Cornearegistret", + "vision" + ], + "Information": "Collects data on corneal surgeries, including corneal transplants. It tracks patient demographics, surgical techniques, donor and recipient details, complications, and visual outcomes. The registry includes data from all ophthalmology departments performing corneal surgeries in Sweden.", + "category": [ + "National quality registry" + ], + "start_date": "1996" + }, + { + "name": "Svenska Nationella Fotledsregistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://www.swedankle.se/", + "search_tags": [ + "orthopedics", + "surgery", + "ankle", + "ankle surgery" + ], + "Information": "Data on ankle surgeries, including fracture types, surgical techniques, complications, rehabilitation, and functional outcomes such as mobility and pain.", + "category": [ + "National quality registry" + ], + "start_date": "1997" + }, + { + "name": "Svenska Makularegistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://makulareg.se/", + "search_tags": [ + "macular", + "eye", + "retina", + "macular diseases" + ], + "Information": "The registry gathers data on patients with macular diseases, such as age-related macular degeneration (AMD). It includes information on diagnosis, treatments (especially anti-VEGF injections), visual outcomes, and patient-reported outcomes. Includes data from all ophthalmology clinics treating macular diseases in Sweden.", + "category": [ + "National quality registry" + ], + "start_date": "2008" + }, + { + "name": "Svenska Skulder- och Armbågsregistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/ssar", + "search_tags": [ + "shoulder and elbow", + "Armbågsregistret", + "shoulder" + ], + "Information": "Data on shoulder and elbow surgeries, including patient demographics, diagnoses, surgical procedures, rehabilitation, complications, and outcomes such as range of motion and pain.", + "category": [ + "National quality registry" + ], + "start_date": "1999" + }, + { + "name": "SweTrau – Svenska Traumaregistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "http://www.swetrau.se/", + "search_tags": [ + "SweTrau", + "Traumaregistret", + "trauma", + "injury" + ], + "Information": "SweTrau collects data on trauma patients, including types of injuries, severity, treatments provided, and outcomes such as survival rates and functional recovery. The registry includes data from all major trauma centres and emergency departments in Sweden, ensuring comprehensive national coverage of trauma care and outcomes.", + "category": [ + "National quality registry" + ], + "start_date": "2011" + }, + { + "name": "AmbuReg – Ambulansregistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/ambureg/", + "search_tags": [ + "paramedic", + "AmbuReg", + "ambulance", + "emergency" + ], + "Information": "AmbuReg collects data on pre-hospital care provided by ambulance services in Sweden. This includes information on patient demographics, medical conditions, types of interventions performed, response times, and outcomes of pre-hospital treatment.", + "category": [ + "Other quality registry" + ], + "start_date": "2016" + }, + { + "name": "Analfistelregistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/anslutna-register", + "search_tags": [ + "Analfistelregistret", + "colorectal", + "anal", + "fistula" + ], + "Information": "This registry collects information on patients undergoing treatment for anal fistulas, including demographic data, types of fistulas, surgical and non-surgical treatments, complications, and outcomes such as healing rates and recurrence.", + "category": [ + "Other quality registry" + ], + "start_date": "Unknown" + }, + { + "name": "GamReg Sweden – Kvalitetsregister för spel- och dataspelsberoende", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/anslutna-register/gamreg-sweden", + "search_tags": [ + "gamreg", + "addiction", + "gambling addiction", + "gaming addiction" + ], + "Information": "GamReg collects data on individuals seeking treatment for gambling and gaming addiction. This includes information on demographics, types of addiction, treatments provided (such as counselling or medication), and outcomes related to addiction severity and recovery. The registry covers multiple treatment centres and clinics across Sweden that specialise in addiction therapy.", + "category": [ + "Other quality registry" + ], + "start_date": "2019" + }, + { + "name": "Glaukomregistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/anslutna-register", + "search_tags": [ + "optic nerve", + "glaucoma", + "vision", + "Glaukomregistret" + ], + "Information": "The Glaucoma Register collects data on patients diagnosed with glaucoma, including patient demographics, diagnostic criteria, intraocular pressure measurements, visual field data, treatments (medications or surgeries), and outcomes.", + "category": [ + "Other quality registry" + ], + "start_date": "Unknown" + }, + { + "name": "LHON-registret – Registret för Lebers Hereditära Opticusneuropati", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://lhon-registret.se/om-lhon/", + "search_tags": [ + "optic", + "Lebers", + "Leber's hereditary optic neuropathy", + "LHON-registret" + ], + "Information": "Data from the registry may be used to try to identify the risk of developing vision impairment. Since the registry not only includes individuals with vision impairment but also carriers of the genetic variants who have normal vision, the registry may eventually be used to identify environmental or lifestyle factors that preceded vision impairment.", + "category": [ + "Other quality registry" + ], + "start_date": "2018" + }, + { + "name": "LSR – Lund Stroke Register", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://portal.research.lu.se/sv/projects/lund-stroke-register", + "search_tags": [ + "endovascular", + "Register", + "stroke", + "LSR" + ], + "Information": "The Lund Stroke Register collects data on patients admitted to the Lund University Hospital with a diagnosis of stroke. Data includes patient demographics, stroke type and severity, treatments provided, rehabilitation, and outcomes. The registry specifically covers patients treated at Lund University Hospital, providing detailed insights into stroke care and outcomes within this institution.", + "category": [ + "Other quality registry" + ], + "start_date": "2001" + }, + { + "name": "Njurtransplantationsregistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/anslutna-register", + "search_tags": [ + "Njurtransplantationsregistret", + "renal", + "transplant", + "kidney" + ], + "Information": "Collects data on kidney transplant procedures and outcomes.", + "category": [ + "Other quality registry" + ], + "start_date": "Unknown" + }, + { + "name": "Barnkirurgi operationsregister", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/anslutna-register", + "search_tags": [ + "paediatric surgeries", + "Barnkirurgi" + ], + "Information": "Monitors outcomes of paediatric surgeries.", + "category": [ + "Other quality registry" + ], + "start_date": "Unknown" + }, + { + "name": "Register för brachyterapi vid uvealt melanom", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/anslutna-register", + "search_tags": [ + "melanoma", + "brachytherapy", + "Register", + "uveal melanoma" + ], + "Information": "Tracks outcomes of brachytherapy for uveal melanoma.", + "category": [ + "Other quality registry" + ], + "start_date": "Unknown" + }, + { + "name": "Sklerodermiregistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/anslutna-register", + "search_tags": [ + "skin", + "autoimmune", + "Sklerodermiregistret", + "scleroderma" + ], + "Information": "Monitors treatment outcomes for scleroderma patients.", + "category": [ + "Other quality registry" + ], + "start_date": "Unknown" + }, + { + "name": "Svenska Lambåregistret", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/anslutna-register", + "search_tags": [ + "Svenska", + "Lambåregistret" + ], + "Information": "Tracks outcomes of flap surgeries and patient recovery.", + "category": [ + "Other quality registry" + ], + "start_date": "Unknown" + }, + { + "name": "SweAAA – Svenskt Register för Abdominellt Aortaaneurysm", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/anslutna-register", + "search_tags": [ + "aortic", + "abdominal aortic aneurysm", + "vascular" + ], + "Information": "Monitors outcomes of abdominal aortic aneurysm treatments.", + "category": [ + "Other quality registry" + ], + "start_date": "2008" + }, + { + "name": "Sällsynta diagnoser", + "registry_centre": [ + "Registercentrum Syd" + ], + "url": "https://rcsyd.se/anslutna-register", + "search_tags": [ + "rare disease", + "genetic" + ], + "Information": "Collects data on rare diseases, focusing on diagnosis and treatment outcomes.", + "category": [ + "Other quality registry" + ], + "start_date": "Unknown" + }, + { + "name": "PsoReg – Nationellt register för systembehandling av psoriasis", + "registry_centre": [ + "Registercentrum Norr" + ], + "url": "https://psoreg.se/", + "search_tags": [ + "skin", + "psoriasis", + "PsoReg", + "psoriasis treatment" + ], + "Information": "soReg tracks patients undergoing systemic treatment for psoriasis, collecting data on treatment efficacy, patient demographics, disease severity, and quality of life. It covers dermatology clinics across Sweden, aiming for nationwide coverage to monitor long-term outcomes and improve patient care.", + "category": [ + "National quality registry" + ], + "start_date": "2006" + }, + { + "name": "Riksstroke – Nationellt kvalitetsregister för strokesjukvård", + "registry_centre": [ + "Registercentrum Norr" + ], + "url": "https://www.riksstroke.org/sve/", + "search_tags": [ + "Riksstroke", + "endovascular", + "stroke", + "kvalitetsregister" + ], + "Information": "Riksstroke gathers data on stroke care, including patient characteristics, acute treatment, rehabilitation, and long-term follow-up. It covers all hospitals in Sweden, ensuring comprehensive national coverage, and provides insights into stroke outcomes and healthcare quality improvements.", + "category": [ + "National quality registry" + ], + "start_date": "1994" + }, + { + "name": "Svenskt Bråckregister – Nationellt kvalitetsregister inom bråckkirurgi", + "registry_centre": [ + "Registercentrum Norr" + ], + "url": "http://svensktbrackregister.se/", + "search_tags": [ + "bråck" + ], + "Information": "This register collects information on hernia surgeries, including patient demographics, surgical techniques, complications, and outcomes such as recurrence rates. It covers hospitals and clinics performing hernia surgeries in Sweden, providing comprehensive national data on treatment quality.", + "category": [ + "National quality registry" + ], + "start_date": "1992" + }, + { + "name": "GynOp – Nationella kvalitetsregister inom gynekologisk kirurgi", + "registry_centre": [ + "Registercentrum Norr" + ], + "url": "https://www.gynop.se/", + "search_tags": [ + "gynecological surgeries", + "GynOp", + "gynecological" + ], + "Information": "Tracks outcomes of gynaecological surgeries, collecting data on patient demographics, surgical methods, complications, and recovery. It covers nearly all hospitals in Sweden performing gynaecological surgeries, offering extensive national coverage to improve surgical outcomes and patient safety.", + "category": [ + "National quality registry" + ], + "start_date": "2008" + }, + { + "name": "SveATTR – Svenska transtyretinamyloidosregistret", + "registry_centre": [ + "Registercentrum Norr" + ], + "url": "https://regionvasterbotten.se/for-vardgivare/kunskapsstod/kvalitetsregistret-sveattr", + "search_tags": [ + "transtyretinamyloidosregistret", + "SveATTR" + ], + "Information": "SveATTR collects data on patients with transthyretin amyloidosis and genetic carriers. It tracks patient demographics, treatments, and outcomes to improve care and facilitate research. It includes data from hospitals across Sweden,", + "category": [ + "Other quality registry" + ], + "start_date": "2019" + }, + { + "name": "DBS – Kvalitetsregister inom deep brain stimulation", + "registry_centre": [ + "Registercentrum Norr" + ], + "url": "https://deepbrainstimulation.se/", + "search_tags": [ + "DBS", + "stimulation", + "deep brain" + ], + "Information": "The registry tracks patients undergoing deep brain stimulation (DBS) for movement disorders. It collects data on surgical procedures, outcomes, and complications. Coverage includes hospitals performing DBS in Sweden​,", + "category": [ + "Other quality registry" + ], + "start_date": "Unknown" + }, + { + "name": "CKG – Kardiovaskulär genetik", + "registry_centre": [ + "Registercentrum Norr" + ], + "url": "https://www.regionvasterbotten.se/forskning/profilomraden/kardiovaskular-genetik", + "search_tags": [ + "Kardiovaskulär", + "genetik", + "CKG", + "Cardiovascular" + ], + "Information": "This registry collects data on patients with genetic cardiovascular conditions, focusing on genetic information, treatments, and patient outcomes. It aims for national coverage​.", + "category": [ + "Other quality registry" + ], + "start_date": "Unknown" + }, + { + "name": "Terapeutisk aferes – Internationellt register för terapeutisk aferes behandling", + "registry_centre": [ + "Registercentrum Norr" + ], + "url": "https://www.waa-registry.org/", + "search_tags": [ + "aferes" + ], + "Information": "his international registry gathers data on therapeutic apheresis treatments, tracking patient demographics, procedures, and outcomes to improve treatment protocols across participating countries​.", + "category": [ + "Other quality registry" + ], + "start_date": "1992" + }, + { + "name": "AURICULA – Nationellt register för förmaksflimmer och antikoagulation", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/auricula/", + "search_tags": [ + "atrial fibrillation", + "aFib" + ], + "Information": "This registry collects data on patients with atrial fibrillation, focusing on diagnostic procedures, treatments, and outcomes to improve care for those requiring anticoagulation. It covers hospitals and clinics across Sweden​.", + "category": [ + "National quality registry" + ], + "start_date": "2007" + }, + { + "name": "GallRiks – Svenskt kvalitetsregister för gallstenskirurgi", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/gallriks/", + "search_tags": [ + "GallRiks", + "cholecystectomy", + "gallstone surgery" + ], + "Information": "GallRiks monitors gallstone surgeries in Sweden, collecting data on over 12,000 gallbladder surgeries and 6,000 endoscopic procedures annually. It tracks complications, surgery types, and patient outcomes, aiming to reduce post-operative complications, which occur in 5-10% of cases. GallRiks covers all hospitals performing gallstone surgery, ensuring comprehensive national data​.", + "category": [ + "National quality registry" + ], + "start_date": "2005" + }, + { + "name": "Kateterablationsregistret – Nationellt kvalitetsregister för kateterablation vid hjärtrusningar", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "http://www.ablationsregistret.se/", + "search_tags": [ + "kateterablation", + "cardiovascular" + ], + "Information": "This registry collects data on catheter ablation for arrhythmias, including procedural details and patient outcomes. It covers Swedish hospitals performing these procedures​.", + "category": [ + "National quality registry" + ], + "start_date": "2004" + }, + { + "name": "NRS – Nationellt register över smärtrehabilitering", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/nrs/", + "search_tags": [ + "pain", + "pain rehab" + ], + "Information": "NRS gathers data on patients undergoing pain rehabilitation for chronic pain. It collects information on treatments, rehabilitation plans, and patient-reported outcomes to monitor and improve the quality of life for these patients. NRS covers clinics across Sweden and is aimed at both short- and long-term outcome analysis​.", + "category": [ + "National quality registry" + ], + "start_date": "2009" + }, + { + "name": "RiksSvikt – Nationellt kvalitetsregister för hjärtsvikt", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/rikssvikt/", + "search_tags": [ + "RiksSvikt", + "hear disease" + ], + "Information": "RiksSvikt collects data on patients with heart failure, focusing on diagnostics, treatments, and long-term outcomes. It aims to ensure that 90% of patients are treated according to national guidelines, covering most hospitals across Sweden.", + "category": [ + "National quality registry" + ], + "start_date": "2003" + }, + { + "name": "RiksSår – Nationellt kvalitetsregister för svårläkta sår", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.rikssar.se/", + "search_tags": [ + "svårläkta", + "RiksSår", + "wound" + ], + "Information": "This registry gathers data on patients with chronic wounds, focusing on wound types, treatments, and healing outcomes. It aims to improve care for patients with non-healing wounds and involves both primary and specialist care facilities across Sweden​.", + "category": [ + "National quality registry" + ], + "start_date": "2009" + }, + { + "name": "Senior alert – Nationellt kvalitetsregister för vård och omsorg", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.senioralert.se/", + "search_tags": [ + "Senior", + "senior alert", + "treatment" + ], + "Information": "Senior alert monitors the care of over 500,000 elderly patients annually. It tracks risks like falls, malnutrition, and pressure ulcers, with national coverage in elderly care facilities, hospitals, and home care​.", + "category": [ + "National quality registry" + ], + "start_date": "2008" + }, + { + "name": "SOReg – Scandinavian Obesity Surgery Registry", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/soreg/", + "search_tags": [ + "Obesity", + "Scandinavian", + "Surgery", + "SOReg" + ], + "Information": "SOReg collects data from approximately 7,000 patients annually undergoing bariatric surgery in Sweden. It monitors surgical types, complications, and long-term outcomes, covering all bariatric surgery centres in Sweden.", + "category": [ + "National quality registry" + ], + "start_date": "2007" + }, + { + "name": "SPAHR – Svenska PAH & CTEPH registret", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/spahr/", + "search_tags": [ + "registret", + "CTEPH", + "SPAHR" + ], + "Information": "Includes about 500 patients diagnosed with pulmonary arterial hypertension (PAH) and chronic thromboembolic pulmonary hypertension (CTEPH) in Sweden. It focuses on tracking diagnosis, treatments, and outcomes​.", + "category": [ + "National quality registry" + ], + "start_date": "2008" + }, + { + "name": "SPOR – Svenskt perioperativt register", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/spor/", + "search_tags": [ + "register", + "SPOR", + "UCR", + "perioperativt" + ], + "Information": "SPOR collects perioperative data from over 1.2 million surgeries annually in Sweden, focusing on anaesthesia and post-surgical recovery. The registry helps improve patient safety in surgical care across Swedish hospitals​.", + "category": [ + "National quality registry" + ], + "start_date": "2011" + }, + { + "name": "SveDem – Svenska registret för kognitiva sjukdomar/demenssjukdomar", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/svedem/", + "search_tags": [ + "Cognitive", + "Dementia", + "UCR", + "SveDem" + ], + "Information": "SveDem tracks more than 90,000 patients with dementia, collecting data on cognitive evaluations, treatments, and long-term care plans. It includes primary care and memory clinics across Sweden​.", + "category": [ + "National quality registry" + ], + "start_date": "2007" + }, + { + "name": "SWEDCON – Barnhjärtregistret (inkluderar GUCH, det vill säga vuxna med medfött hjärtfel)", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/swedcon/", + "search_tags": [ + "GUCH", + "children", + "heart", + "SWEDCON" + ], + "Information": "SWEDCON focuses on congenital heart disease, tracking surgeries, treatments, and outcomes for children and adults with congenital heart defects. It includes all centres in Sweden treating congenital heart disease, ensuring comprehensive national coverage​.", + "category": [ + "National quality registry" + ], + "start_date": "1998" + }, + { + "name": "SWEDEHEART – Sammanslagning av RIKS-HIA, SEPHIA, SCAAR, TAVI, Svenska Hjärtkirurgiregistret och Kardiogenetikregistret.", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/swedeheart/", + "search_tags": [ + "SEPHIA", + "SCAAR", + "TAVI", + "SwEDEHEART" + ], + "Information": "SWEDEHEART is a national registry that includes data from acute coronary care (RIKS-HIA), coronary angiography (SCAAR), heart surgery, and secondary prevention (SEPHIA). It covers nearly all cardiac care units in Sweden, providing comprehensive data on heart disease management", + "category": [ + "National quality registry" + ], + "start_date": "2009" + }, + { + "name": "SWEDEVOX – Andningssviktregistret över oxygenbehandling och respiratorbehandling i hemmet", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/swedevox/", + "search_tags": [ + "oxygen", + "UCR", + "SWEDEVOX" + ], + "Information": "This registry collects data on patients receiving oxygen or ventilator therapy for respiratory failure at home. It tracks treatment outcomes and covers hospitals providing these services across Sweden​.", + "category": [ + "National quality registry" + ], + "start_date": "2010" + }, + { + "name": "SWEDVASC – Nationellt register för kärlkirurgi", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/swedvasc/", + "search_tags": [ + "vain", + "SWEDVASC" + ], + "Information": "SWEDVASC includes more than 100,000 vascular surgery cases. It tracks procedures like aneurysm repairs and peripheral artery disease treatment from hospitals across Sweden​.", + "category": [ + "National quality registry" + ], + "start_date": "1994" + }, + { + "name": "SVAR – Svenskt akutvårdsregister", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/svar/", + "search_tags": [ + "acute", + "SVAR", + "acute care" + ], + "Information": "SVAR is a national registry designed to cover the entire emergency care process, including prehospital care, emergency departments, and acute wards. It currently tracks over 600,000 patient visits annually and aims to improve the quality of emergency care across Sweden. Data is automatically collected from patient records to ensure high coverage and reliability​.", + "category": [ + "Other quality registry" + ], + "start_date": "2010" + }, + { + "name": "TBI – Traumatic Brain Injury", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/tbi/", + "search_tags": [ + "TBI", + "Brain", + "Injury", + "Traumatic" + ], + "Information": "The Traumatic Brain Injury registry collects data on patients with severe brain injuries, focusing on trauma mechanisms, treatments, and rehabilitation outcomes. While no specific patient numbers were found, this registry is part of broader national efforts to improve care for trauma patients across Sweden​.", + "category": [ + "Other quality registry" + ], + "start_date": "2008" + }, + { + "name": "ThoR – Allmän Thoraxkirurgi", + "registry_centre": [ + "Uppsala Clinical Research Center" + ], + "url": "https://www.ucr.uu.se/thor/", + "search_tags": [ + "ThoR", + "Thorax", + "Thoraxkirurgi" + ], + "Information": "collects data on surgeries involving the lungs, trachea, esophagus, pleura, pericardium, thymus, diaphragm, and the chest wall including bones and muscles. While a significant portion of the surgeries focus on lung cancer, it also includes data on surgeries for benign conditions. The registry tracks surgical outcomes and complications to improve thoracic surgery care across Sweden​.", + "category": [ + "Other quality registry" + ], + "start_date": "2009" + }, + { + "name": "BRIMP – Bröstimplantatregistret", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://brimp.registercentrum.se/", + "search_tags": [ + "Breast implant", + "Bröstimplantatregistret", + "BRIMP" + ], + "Information": "BRIMP collects data on all breast implant procedures, including both cosmetic and reconstructive surgeries. It tracks implant types, surgical methods, and complications, aiming to improve patient safety. The registry covers all healthcare providers that perform breast implant surgeries in Sweden, with about 9,936 breast implants tracked in the Västra Götaland region between 2014 and 2021.", + "category": [ + "National quality registry" + ], + "start_date": "2014" + }, + { + "name": "Kranio – Kranioregistret", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://kranio.registercentrum.se/", + "search_tags": [ + "Kranioregistret", + "Kranio", + "cranial" + ], + "Information": "This registry collects data on patients undergoing cranial surgery for congenital malformations, trauma, or other conditions. It tracks surgical outcomes, complications, and long-term recovery but does not have widely available patient numbers. Coverage includes hospitals performing cranial surgeries across Sweden.", + "category": [ + "National quality registry" + ], + "start_date": "2023" + }, + { + "name": "LVR – Luftvägsregistret", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://lvr.registercentrum.se/", + "search_tags": [ + "Luftvägsregistret", + "LVR", + "airways" + ], + "Information": "LVR gathers data on respiratory disorders, particularly focusing on patients requiring long-term oxygen or ventilator support. The registry tracks treatment types, patient demographics, and outcomes across Sweden.", + "category": [ + "National quality registry" + ], + "start_date": "2013" + }, + { + "name": "Nationellt kvalitetsregister för öron-, näs- och halssjukvård:", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://orl.registercentrum.se/", + "search_tags": [ + "ear,", + "nose", + "throat", + "treatment" + ], + "Information": "Tracks treatments and outcomes for various ENT conditions. It includes nine sub-registries: surgery for hearing improvement with stapes prostheses, nasal septum surgery, tympanostomy tube surgeries, vocal cord surgery, hearing rehabilitation with hearing aids, cochlear implants, tonsillectomy, eardrum repair surgeries, and snoring surgeries. These registries cover hospitals and clinics across Sweden.", + "category": [ + "National quality registry" + ], + "start_date": "1997" + }, + { + "name": "NDR – Nationella Diabetesregistret", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://ndr.registercentrum.se/", + "search_tags": [ + "NDR", + "Nationella", + "Diabetes" + ], + "Information":"The data collected focuses on glycaemic control, risk factors, complications, and treatment outcomes for patients with both type 1 and type 2 diabetes. It promotes evidence-based healthcare by making data available to healthcare providers for regular comparison and quality improvement efforts. The NDR is one of the largest diabetes registries in the world, covering nearly 90% of patients with diabetes in Sweden.", + "category": [ + "National quality registry" + ], + "start_date": "1996" + }, + { + "name": "NROK – Nationella registret för ortognatkirurgi", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://nrok.registercentrum.se/", + "search_tags": [ + "orthognathic surgery", + "NROK" + ], + "Information": "This registry collects data on 900-1000 corrective jaw surgeries annually in Sweden. The focus is on improving care quality and ensuring equal access to treatment for patients with dentofacial anomalies. It tracks surgical outcomes and patient safety, helping to ensure consistent standards of care across clinics​", + "category": [ + "National quality registry" + ], + "start_date": "2018" + }, + { + "name": "QregPV – Primärvårdens kvalitetsregister Västra Götaland", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://qregpv.registercentrum.se/", + "search_tags": [ + "QregPV" + ], + "Information": "This registry focuses on primary care for conditions like hypertension and coronary artery disease. It includes data from over 200,000 patients, helping healthcare providers track and improve treatment outcomes​.", + "category": [ + "National quality registry" + ], + "start_date": "2006" + }, + { + "name": "Riksfot – Svenska fotkirurgiska registret", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://fot.registercentrum.se/", + "search_tags": [ + "foot", + "feet", + "Riksfot", + "surgery" + ], + "Information": "The Swedish Fracture Register (SFR) tracks over 900,000 fractures and registers over 100,000 new fractures each year. It collects data on all types of fractures, both surgical and non-surgical, to improve treatment outcomes and reduce complications. The registry is used in research and clinical improvement efforts across Sweden​.", + "category": [ + "National quality registry" + ], + "start_date": "2011" + }, + { + "name": "SESAR – Svenska Sömnapnéregistret", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://sesar.registercentrum.se/", + "search_tags": [ + "apnea", + "SESAR", + "sleep apnea" + ], + "Information": " focuses on tracking the diagnosis, treatment, and follow-up of patients with suspected or confirmed sleep apnea (mostly obstructive sleep apnea, OSA). The registry now includes around 120,000 patients. The number of healthcare units reporting to SESAR has grown steadily, and as of 2023, over 50 units are actively contributing data. In the last year, approximately 40,000 patient care events were registered, showing significant growth in both reporting and registry coverage​", + "category": [ + "National quality registry" + ], + "start_date": "2010" + }, + { + "name": "SFR – Svenska Frakturregistret", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://sfr.registercentrum.se/", + "search_tags": [ + "SFR", + "fracture" + ], + "Information": "It aims to track all types of fractures treated in Sweden, with data covering fracture characteristics, patient demographics, injury types, and treatment outcomes. Both surgical and non-surgical treatments are recorded, including any subsequent reoperations or complications. The registry serves a dual purpose: improving clinical care through feedback on treatment outcomes and facilitating research. By 2023, more than 900,000 fractures had been registered, and over 100,000 new fractures are added each year​. The SFR is notable for being implemented across all 54 orthopaedic departments in Sweden, with most achieving a completeness of 75-95% in matching fractures to official health databases​.", + "category": [ + "National quality registry" + ], + "start_date": "2011" + }, + { + "name": "SLR – Svenska Ledprotesregistret", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://slr.registercentrum.se/", + "search_tags": [ + "Ledprotesregistret", + "prothese", + "SLR" + ], + "Information": "s a national quality registry that tracks all hip and knee joint replacement surgeries, including primary operations, revisions, and osteotomies (surgical bone cuts to correct alignment) performed across Sweden. The registry was officially established in 2020 after merging two previously separate registers—the Swedish Hip Arthroplasty Register (started in 1979) and the Swedish Knee Arthroplasty Register (started in 1975). Since then, SLR has been systematically collecting data to monitor and improve the quality of joint replacement surgeries nationwide​. The registry covers all units performing joint replacements in Sweden, ensuring a very high coverage rate.", + "category": [ + "National quality registry" + ], + "start_date": "2020" + }, + { + "name": "SPOQ – Svenskt Pediatriskt Ortopediskt Qvalitetsregister", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://spoq.registercentrum.se/", + "search_tags": [ + "Ortopediskt", + "orthopedic", + "child", + "Pediatric care" + ], + "Information": "was established in 2015 and focuses on five major pediatric orthopedic conditions: hip instability (DDH), Perthes disease, slipped capital femoral epiphysis (SCFE), clubfoot (PEVA), and patellar dislocation. These conditions are significant for child orthopedics in Sweden, as untreated or delayed interventions can lead to lifelong physical impairments. The primary goal of SPOQ is to monitor and improve the quality of care by ensuring timely diagnosis and treatment. It tracks patient outcomes to prevent long-term issues like residual deformities, early-onset osteoarthritis, and the need for reoperations later in life. Data from the registry is used to evaluate treatment methods and inform clinical practice, with approximately 1 in 800 children born in Sweden being diagnosed with clubfoot​.", + "category": [ + "National quality registry" + ], + "start_date": "2015" + }, + { + "name": "Svenska Artrosregistret", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://artrosregistret.registercentrum.se/", + "search_tags": [ + "svenska artros", + "arthritis" + ], + "Information": "It tracks data on osteoarthritis (OA) care across Sweden, focusing on non-surgical, first-line treatments like education, physical activity, and weight control. The register aims to monitor the effects of these interventions on patients' pain levels, physical activity, and overall health. As of 2023, over 225,000 patients have been registered, with data collected via questionnaires before treatment, three months after, and one year post-treatment.", + "category": [ + "National quality registry" + ], + "start_date": "2010" + }, + { + "name": "Svenska Hjärt- lungräddningsregistret", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://shlr.registercentrum.se/", + "search_tags": [ + "cardiopulmonary resuscitation" + ], + "Information": "Plays a key role in tracking and improving cardiopulmonary resuscitation (CPR) efforts in Sweden. This registry is a vital tool in improving the chain of survival for heart attack victims, tracking critical factors such as time to intervention, quality of care, and long-term patient outcomes. Approximately 2,500 in-hospital cardiac arrests are reported annually, and out-of-hospital cases are similarly recorded, aiming for full coverage.", + "category": [ + "National quality registry" + ], + "start_date": "1990" + }, + { + "name": "Svenska Thoraxtransplantationsregistret", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://strax.registercentrum.se/", + "search_tags": [ + "Thoraxtransplantationsregistret", + "transplant" + ], + "Information": "The registry focuses on monitoring heart and lung transplantations performed at the only two hospitals in Sweden where these surgeries are conducted: Skånes University Hospital in Lund and Sahlgrenska University Hospital in Gothenburg. STRAX aims to systematically collect information about patients before, during, and after their transplantation. This includes data from the waiting list, details of the surgeries, and lifelong follow-ups to track the success of the transplants and manage complications. Approximately 60-70 heart and lung transplants are performed annually in Sweden.", + "category": [ + "National quality registry" + ], + "start_date": "2018" + }, + { + "name": "Svenskt Register för Rehabiliteringsmedicin", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://svereh.registercentrum.se/", + "search_tags": [ + "rehab", + "rehabilitation", + "Rehabiliteringsmedicin", + "svereh" + ], + "Information": "Aimed at improving rehabilitation services for patients with brain injuries, spinal cord injuries, and other complex conditions. The registry collects data on demographics, rehabilitation outcomes, waiting times, and patient satisfaction. The registry supports continuous improvement in service quality and is widely used for research purposes.", + "category": [ + "National quality registry" + ], + "start_date": "2021" + }, + { + "name": "SWEAPS – Svenska registret för avancerad barn- och ungdomskirurgi", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://sweaps.registercentrum.se/", + "search_tags": [ + "surgery", + "SWEAPS" + ], + "Information": "Gathers comprehensive data on children requiring complex surgical interventions due to congenital malformations in the esophagus, intestines, and urinary system. It covers rare conditions like esophageal atresia and congenital diaphragmatic hernia. The goal is to enhance care quality, reduce risks, and improve long-term patient outcomes. Data collected includes patient demographics, surgical details, and long-term follow-ups from specialised centres.", + "category": [ + "National quality registry" + ], + "start_date": "2016" + }, + { + "name": "Bipolär- och psykosregistret – Nationellt kvalitetsregister för bipolär sjukdom och schizofrenispektrumtillstånd", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://bipsy.registercentrum.se/", + "search_tags": [ + "Schizophrenia", + "bipolar", + "psychosis" + ], + "Information": "Collects and analyses data on patients with bipolar disorder and schizophrenia spectrum conditions. Currently, the registry covers around 13,000 individuals with bipolar disorder from 166 healthcare units across Sweden. It tracks variables such as the number of mood episodes, medication types, treatment outcomes, and age of onset. The data is used to improve the quality of care, evaluate new treatments, and support research in psychiatric care.", + "category": [ + "National quality registry" + ], + "start_date": "2004" + }, + { + "name": "Bättre Beroendevård", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://battreberoendevard.registercentrum.se/", + "search_tags": [ + "Beroendevård", + "addiction" + ], + "Information": "focuses on patients receiving specialised care for substance use disorders, covering diagnoses such as alcohol, opioid, and multi-substance dependencies (ICD-10 codes F10-F19). Established to improve the quality and accessibility of addiction treatment, the registry tracks data on care plans, participation in medication-assisted programs (e.g., LARO for opioid addiction), and questions about the patient’s family situation, such as the presence of minors. The registry collaborates with healthcare units across Sweden, ensuring that treatment outcomes are monitored and used to refine addiction care strategies.", + "category": [ + "National quality registry" + ], + "start_date": "2009" + }, + { + "name": "Kvalitetsregister ECT", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://ect.registercentrum.se/", + "search_tags": [ + "ECT", + "electroconvulsive therapy" + ], + "Information": "he registry includes data on electroconvulsive therapy (ECT) treatments, which are used primarily for severe psychiatric conditions like depression. It has a coverage rate of approximately 96% as of 2022, with all hospitals in Sweden that provide ECT contributing data. Since 2018, it has also tracked repetitive transcranial magnetic stimulation (rTMS) treatments, covering 11 regions and with a 90% data coverage rate.", + "category": [ + "National quality registry" + ], + "start_date": "2012" + }, + { + "name": "Q-bup – Nationellt kvalitetsregister för barn- och ungdomspsykiatri", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://qbup.registercentrum.se/", + "search_tags": [ + "peadiatric care", + "child psychiatry", + "psychiatry" + ], + "Information": "focused on psychiatric care for children and adolescents across Sweden. Its primary aim is to improve the quality and equality of mental health services by collecting comprehensive data from various regions. This data includes patient demographics, diagnoses, treatments, and outcomes, providing a national benchmark for psychiatric services. As of recent reports, it had a national coverage rate of around 22%, with higher regional coverage in areas like Kalmar, Stockholm, Gävleborg, and Jämtland/Härjedalen, reaching 76%.", + "category": [ + "National quality registry" + ], + "start_date": "2017" + }, + { + "name": "Riksät – Nationellt kvalitetsregister för ätstörningsbehandling", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://riksat.registercentrum.se/", + "search_tags": [ + "Riksät", + "psychiatry", + "eating disorder" + ], + "Information": "It initially focused on specialised eating disorder units but has since expanded to include all eating disorder care in Sweden. The registry collects detailed data on patients, such as treatment duration, outcomes, and patient satisfaction, aiming to improve care quality and follow-up of treatment effects. Currently, approximately 50 units participate across 21 regions.", + "category": [ + "National quality registry" + ], + "start_date": "1999" + }, + { + "name": "RättspsyK – Nationellt rättspsykiatriskt kvalitetsregister", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://rattspsyk.registercentrum.se/", + "search_tags": [ + "rättspsykiatriskt", + "RättspsyK", + "psychiatry" + ], + "Information": "t tracks patients receiving forensic psychiatric care in Sweden, which involves compulsory treatment following legal decisions. The registry collects comprehensive data on 25 different indicators, including treatment plans, risk assessments, recidivism in criminal activity, use of coercive measures, and patient health status. In 2023, the registry followed up on 2,070 patients, marking its highest recorded coverage since inception.", + "category": [ + "National quality registry" + ], + "start_date": "2008" + }, + { + "name": "SibeR – Svenska internetbehandlingsregistret", + "registry_centre": [ + "Registercentrum Västra Götaland" + ], + "url": "https://siber.registercentrum.se/", + "search_tags": [ + "–", + "internetbehandlingsregistret", + "SibeR" + ], + "Information": "Collects data on internet-based psychological treatments, including cognitive behavioural therapy (iCBT), targeting mental health conditions across psychiatry, primary care, and somatic care. By 2021, SibeR had seen increasing use, with a significant portion of the data—70%—being directly transferred from patient records, facilitating streamlined data collection. The registry covers a wide range of treatments, including recent expansions into areas such as ADHD in adults and gastrointestinal issues.", + "category": [ + "National quality registry" + ], + "start_date": "2015" + }, + { + "name": "Barnnjurregistret (BNR)", + "registry_centre": [ + "Registercentrum Sydost" + ], + "url": "http://barnnjurregistret.se/", + "search_tags": [ + "Barnnjurregistret", + "BNR" + ], + "Information": "Collects data on children and adolescents with kidney diseases in Sweden. It aims to improve care quality and monitor long-term outcomes for these patients. The register includes data from all paediatric nephrology units across the country, covering several hundred individuals. Key variables include disease diagnosis, treatments, and progression.", + "category": [ + "National quality registry" + ], + "start_date": "1998" + }, + { + "name": "Barnreumaregistret", + "registry_centre": [ + "Registercentrum Sydost" + ], + "url": "http://barnreumaregistret.se/", + "search_tags": [ + "Barnreumaregistret", + "reuma", + "rheumatic disease" + ], + "Information": "Collects data on children with paediatric rheumatic diseases in Sweden. Its main purpose is to monitor the progression of these diseases, treatments given, comorbidities, and the health and quality of life of patients. Data from patients are used to track short- and long-term effects of treatments, allowing healthcare providers to improve the quality of care. The register covers all relevant healthcare units in Sweden.", + "category": [ + "National quality registry" + ], + "start_date": "2009" + }, + { + "name": "Registret för medfödda metabola sjukdomar (RMMS)", + "registry_centre": [ + "Registercentrum Sydost" + ], + "url": "http://rmms.se/", + "search_tags": [ + "born", + "RMMS" + ], + "Information": "Tracks and monitors 46 rare metabolic disorders. The registry aims to improve the care of individuals with inherited metabolic diseases by gathering comprehensive data on patient demographics, diagnoses, treatments, and outcomes. The registry currently has a national coverage rate of 71% (as of 2024). RMMS is critical for standardising care across different regions in Sweden and supports ongoing research and quality improvement in healthcare for these rare conditions. Approximately 50 new cases are diagnosed annually​.", + "category": [ + "National quality registry" + ], + "start_date": "2013" + }, + { + "name": "Svenska Barnhälsovårdsregistret (BHVQ)", + "registry_centre": [ + "Registercentrum Sydost" + ], + "url": "http://bhvq.se/", + "search_tags": [ + "child", + "BHVQ", + "Barnhälsovårdsregistret" + ], + "Information": "It collects comprehensive data on various health indicators for children, such as growth metrics, maternal mental health screenings, and language development assessments, across all child healthcare centres in Sweden. The registry includes variables such as vaccination status, parental support programs, and exposure to secondhand smoke, which are tracked from the child's first to final visits. BHVQ facilitates nationwide monitoring of child health services, supporting research and quality improvement initiatives.", + "category": [ + "National quality registry" + ], + "start_date": "2013" + }, + { + "name": "PIDcare", + "registry_centre": [ + "Registercentrum Sydost" + ], + "url": "http://pidcare.se/", + "search_tags": [ + "PIDcare" + ], + "Information": "The PIDcare registry focuses on individuals with primary immunodeficiencies (PID) and was established to improve care by tracking patient data, treatment outcomes, and long-term health. It collects detailed information on diagnosis, genetic findings, treatments, and immunological parameters.", + "category": [ + "National quality registry" + ], + "start_date": "2012" + }, + { + "name": "Svenskt Njurregister (SNR)", + "registry_centre": [ + "Registercentrum Sydost" + ], + "url": "https://www.medscinet.net/snr/", + "search_tags": [ + "SNR", + "Njurregister", + "kidney" + ], + "Information": "Was established to monitor and improve the quality of kidney care in Sweden, tracking various aspects of treatment for patients with chronic kidney disease, dialysis, and kidney transplants. The registry covers virtually all dialysis and transplant centres in Sweden, ensuring comprehensive national coverage. Data variables include patient demographics, treatment outcomes, transplantation statistics, and long-term survival rates. By 2023, SNR had registered over 18,300 kidney transplants, with around 6,400 patients living with a functioning transplant. Each year, the registry reports on approximately 523 transplantations and a large number of dialysis treatments.", + "category": [ + "National quality registry" + ], + "start_date": "1991" + }, + { + "name": "Swespine", + "registry_centre": [ + "Registercentrum Sydost" + ], + "url": "http://www.swespine.se/", + "search_tags": [ + "Swespine", + "spine", + "spine disorders" + ], + "Information": "It monitors spine surgeries performed across Sweden's orthopedic and neurosurgery clinics. By 2023, the registry included around 192,800 registered operations, with approximately 10,000 new spine surgeries added each year. The registry covers about 95% of the relevant clinics in Sweden, with a completeness rate of 85%, meaning a high proportion of patients who undergo spine surgery are captured.", + "category": [ + "National quality registry" + ], + "start_date": "1998" + }, + { + "name": "Swibreg", + "registry_centre": [ + "Registercentrum Sydost" + ], + "url": "https://www.swibreg.se/", + "search_tags": [ + "Swibreg" + ], + "Information": "Swibreg, the Swedish Inflammatory Bowel Disease Registry, was established to monitor and improve the care of individuals with inflammatory bowel diseases (IBD) like Crohn’s disease and ulcerative colitis. It tracks treatment outcomes, disease activity, and patient-reported quality of life across local, regional, and national levels. Swibreg currently includes data from over 64,000 registered patients.", + "category": [ + "National quality registry" + ], + "start_date": "2013" + }, + { + "name": "Svenska Palliativregistret", + "registry_centre": [ + "Registercentrum Sydost" + ], + "url": "https://palliativregistret.se/", + "search_tags": [ + "Svenska", + "Palliativregistret", + "pallitative" + ], + "Information": "Designed to improve palliative care for patients at the end of life. The registry aims to cover all deaths in Sweden, regardless of diagnosis, age, or place of death. The registry includes data from approximately 90,000 deaths per year, contributing to continuous improvements in palliative care across various healthcare units. Variables collected include symptom management, patient and family support, and care preferences.", + "category": [ + "National quality registry" + ], + "start_date": "2005" + }, + { + "name": "Nationellt kvalitetsregister akut lymfatisk leukemi", + "registry_centre": [ + "RCC Mellansverige" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/blod-lymfom-myelom/akut-lymfatiskt-leukemi-all/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister akut lymfatisk leukemi" + ], + "Information": "Established to support the treatment and care of patients diagnosed with this aggressive form of blood cancer, the registry collects comprehensive data on demographics, diagnosis, treatment protocols, and patient outcomes. Data variables include genetic markers, chemotherapy protocols, and remission rates, helping healthcare providers make informed decisions for better outcomes.", + "category": [ + "National cancer quality registry", + "leukemi", + "leukemia" + ], + "start_date": "1997" + }, + { + "name": "Akut myeloisk leukemi (AML) inklusive akut oklassificerad leukemi (AUL)", + "registry_centre": [ + "RCC Mellansverige" + ], + "url": "https://cancercentrum.se/samverkan/vara-uppdrag/kunskapsstyrning/kvalitetsregister/", + "search_tags": [ + "Akut myeloisk leukemi (AML) inklusive akut oklassificerad leukemi (AUL)" + ], + "Information": "Focuses on collecting detailed data related to acute myeloid leukemia (AML) and acute undifferentiated leukemia (AUL) in Sweden. This national cancer quality registry collects information on patient demographics, genetic markers, treatment protocols, and outcomes, with the aim of improving the care and survival of patients with these aggressive hematologic malignancies. Includes data from diagnostic processes, chemotherapy, bone marrow transplants, and patient follow-up care. Coverage is comprehensive across Sweden, including nearly all diagnosed patients.", + "category": [ + "National cancer quality registry", + "leukemia", + "AUL", + "AML" + ], + "start_date": "1997" + }, + { + "name": "Nationellt Kvalitetsregister för Bröstcancer NKBC", + "registry_centre": [ + "RCC Stockholm Gotland" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/brost/kvalitetsregister/", + "search_tags": [ + "Nationellt Kvalitetsregister för Bröstcancer NKBC" + ], + "Information": "It collects comprehensive data on breast cancer patients, covering diagnosis, treatments, and outcomes. The registry includes data on tumour characteristics, surgical interventions, radiotherapy, chemotherapy, and hormone therapies, as well as patient demographics. NKBC is crucial for improving the quality of breast cancer care across the country by enabling continuous monitoring and benchmarking of clinical practices. The registry includes nearly all diagnosed breast cancer cases in Sweden.", + "category": [ + "National cancer quality registry", + "breast cancer", + "bröstcancer" + ], + "start_date": "2008" + }, + { + "name": "Svenska kvalitetsregistret för gynekologisk cancer", + "registry_centre": [ + "RCC Väst" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/gynekologi/kvalitetsregister/", + "search_tags": [ + "Svenska kvalitetsregistret för gynekologisk cancer" + ], + "Information": "A registry for gynaecological cancers, covering cancers of the ovaries, uterus, cervix, and vulva. collects detailed information on patient demographics, tumour characteristics, treatments (surgical, radiological, and chemotherapeutic), and follow-up outcomes. Its aim is to enhance the quality of care provided to women diagnosed with gynaecological cancers through systematic data collection and analysis. By monitoring treatment efficacy and patient outcomes across the country, the registry facilitates improvements in clinical practices and supports research efforts. It includes nearly all gynaecological cancer cases treated in Sweden.", + "category": [ + "National cancer quality registry" + ], + "start_date": "2008" + }, + { + "name": "Nationellt kvalitetsregister hudmelanom (SweMR)", + "registry_centre": [ + "RCC Syd" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/hud-och-melanom/malignt-melanom/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister hudmelanom (SweMR)" + ], + "Information": "Focuses on tracking and improving the care and outcomes of patients diagnosed with skin melanoma. The registry collects extensive data on tumour characteristics, treatment approaches (such as surgery and immunotherapy), and patient follow-up information. Key variables include Breslow thickness, ulceration, and metastasis status, all of which are critical for prognosis. The registry covers nearly all melanoma cases diagnosed in Sweden", + "category": [ + "National cancer quality registry", + "melanoma", + "skin cancer" + ], + "start_date": "2003" + }, + { + "name": "Svenskt kvalitetsregister för huvud- och halscancer", + "registry_centre": [ + "RCC Mellansverige" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/huvud-och-hals/kvalitetsregister/", + "search_tags": [ + "Svenskt kvalitetsregister för huvud- och halscancer", + "throat cancer", + "cancer" + ], + "Information": "The registry focuses on collecting data from patients diagnosed with cancers of the oral cavity, pharynx, larynx, salivary glands, and other related areas. It gathers comprehensive data on tumour characteristics, treatment methods (such as surgery, radiotherapy, and chemotherapy), and patient outcomes. The registry is instrumental in improving the quality of care by enabling continuous monitoring of treatment effectiveness and survival rates. Covers nearly all cases of head and neck cancer in Sweden.", + "category": [ + "National cancer quality registry" + ], + "start_date": "2008" + }, + { + "name": "Svenska Hypofysregistret", + "registry_centre": [ + "RCC Mellansverige" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/hjarna-ryggmarg-och-hypofys/hypofys/kvalitetsregister-for-hypofystumorer/", + "search_tags": [ + "Svenska Hypofysregistret", + "pituitary gland", + "cancer" + ], + "Information": "The Svenska Hypofysregistret is Sweden's national quality registry for pituitary tumours and other related conditions affecting the pituitary gland. The registry collects data on patient demographics, tumour types, treatment protocols (such as surgery, radiotherapy, and medical treatments), and long-term outcomes. It includes detailed information about hormonal imbalances caused by pituitary disorders and tracks the effects of different treatment approaches on patient recovery and quality of life. The registry covers cases from various healthcare providers across Sweden, ensuring that nearly all pituitary tumour patients are included.", + "category": [ + "National cancer quality registry" + ], + "start_date": "2011" + }, + { + "name": "Nationellt kvalitetsregister kronisk lymfatisk leukemi", + "registry_centre": [ + "RCC Stockholm Gotland" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/blod-lymfom-myelom/kronisk-lymfatisk-leukemi-kll/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister kronisk lymfatisk leukemi" + ], + "Information": "The registry aims to collect comprehensive data on patients diagnosed with CLL, including demographic information, genetic markers, treatment approaches, and patient outcomes. Key variables tracked include treatment response, disease progression, and long-term survival rates. The registry provides insights into how different therapeutic strategies affect patient outcomes and supports ongoing clinical research.", + "category": [ + "National cancer quality registry", + "CLL", + "leukemia" + ], + "start_date": "2007" + }, + { + "name": "Svenska registret för cancer i lever, gallblåsa och gallvägar (SweLiv)", + "registry_centre": [ + "RCC Väst" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/lever-och-galla/kvalitetsregister/", + "search_tags": [ + "Svenska registret för cancer i lever, gallblåsa och gallvägar (SweLiv)", + "liver", + "gallbladder", + "cancer" + ], + "Information": "Sweden’s national quality registry for cancers of the liver, gallbladder, and bile ducts. The registry collects data on patient demographics, tumour characteristics, treatments such as surgery, chemotherapy, and radiotherapy, and long-term outcomes, including survival rates. SweLiv covers nearly all cases of liver, gallbladder, and biliary cancers treated in Sweden, providing a comprehensive dataset that helps guide clinical practice and supports research efforts to improve treatment strategies​.", + "category": [ + "National cancer quality registry" + ], + "start_date": "2009" + }, + { + "name": "Nationellt kvalitetsregister lymfom", + "registry_centre": [ + "RCC Stockholm Gotland" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/blod-lymfom-myelom/lymfom-lymfkortelcancer/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister lymfom" + ], + "Information": "Sweden’s national quality registry for lymphoma, covering various types of lymphatic cancers such as Hodgkin's lymphoma and non-Hodgkin's lymphoma. Collects detailed data on patient demographics, tumour characteristics, treatment methods (including chemotherapy, immunotherapy, and radiation), and long-term outcomes. It provides comprehensive national coverage, capturing nearly all lymphoma cases treated in Sweden. ", + "category": [ + "National cancer quality registry", + "Hodking's lymphoma", + "lymphoma" + ], + "start_date": "2000" + }, + { + "name": "Nationellt kvalitetsregister myelodysplastiskt syndrom", + "registry_centre": [ + "RCC Mellansverige" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/blod-lymfom-myelom/myelodysplastiskt-syndrom-mds/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister myelodysplastiskt syndrom", + "blood disorder", + "myelodysplastic" + ], + "Information": "A quality registry for myelodysplastic syndromes, a group of blood disorders that affect the bone marrow and lead to inefficient blood cell production. Collects data on patient demographics, genetic mutations, disease subtypes, treatment protocols (such as supportive care, chemotherapy, and stem cell transplantation), and long-term outcomes. The registry covers nearly all diagnosed cases of MDS in Sweden.", + "category": [ + "National cancer quality registry" + ], + "start_date": "2010" + }, + { + "name": "Nationellt kvalitetsregister myeloproliferativa sjukdomar", + "registry_centre": [ + "RCC Mellansverige" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/blod-lymfom-myelom/myeloproliferativa-sjukdomar-mpn/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister myeloproliferativa sjukdomar", + "MPN", + "myeloproliferative" + ], + "Information": "This MPN registry collects data on patient demographics, disease subtypes, genetic markers (such as JAK2 mutations), treatments (including cytoreductive therapy, interferon, and bone marrow transplants), and long-term outcomes like disease progression and survival rates. Covering nearly all diagnosed cases in Sweden, this registry provides valuable insights for standardising treatment protocols and enhancing patient care.", + "category": [ + "National cancer quality registry" + ], + "start_date": "2008" + }, + { + "name": "Nationellt kvalitetsregister myelom", + "registry_centre": [ + "RCC Väst" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/blod-lymfom-myelom/myelom/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister myelom", + "myeloma" + ], + "Information": "Sweden’s national quality registry for multiple myeloma, a cancer of plasma cells. Collects comprehensive data on patients with myeloma, including patient demographics, genetic markers, disease stage, and treatment regimens such as chemotherapy, immunotherapy, and stem cell transplantation. ", + "category": [ + "National cancer quality registry" + ], + "start_date": "2008" + }, + { + "name": "Nationellt kvalitetsregister neuroendokrina buktumörer (GEP-NET)", + "registry_centre": [ + "RCC Mellansverige" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/neuroendokrina-buktumorer/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister neuroendokrina buktumörer (GEP-NET)", + "GEP-NET" + ], + "Information": "The registry collects extensive data on patient demographics, tumour characteristics, genetic markers, treatments (such as surgery, targeted therapies, and peptide receptor radionuclide therapy), and patient outcomes like survival rates and tumour progression. GEP-NET provides nearly complete coverage of cases in Sweden.", + "category": [ + "National cancer quality registry" + ], + "start_date": "2010" + }, + { + "name": "Cancer utan känd primärtumör, CUP", + "registry_centre": [ + "RCC Norr" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/okand-primartumor/", + "search_tags": [ + "Cancer utan känd primärtumör, CUP", + "CUP", + "primary origin" + ], + "Information": "Sweden's national quality registry for cancer of unknown primary origin. It collects detailed data on patient demographics, diagnostic procedures, treatment approaches (such as chemotherapy, radiotherapy, and palliative care), and patient outcomes.", + "category": [ + "National cancer quality registry" + ], + "start_date": "2013" + }, + { + "name": "Forskningsregister för skelettmetastaser", + "registry_centre": [ + "RCC Stockholm Gotland" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/overgripande-kunskapsstod/skelettmetastaser/", + "search_tags": [ + "Forskningsregister för skelettmetastaser", + "bone metastases", + "cancer" + ], + "Information": "Focuses on bone metastases and collects data on cancer type, treatment approaches (such as radiotherapy, surgery, or medication to strengthen bones), and patient outcomes like pain relief, mobility, and survival. The registry covers nearly all cases of skeletal metastases treated in Sweden, making it an essential tool for improving patient care and treatment strategies.", + "category": [ + "National cancer quality registry" + ], + "start_date": "2009" + }, + { + "name": "Nationellt kvalitetsregister sköldkörtelcancer", + "registry_centre": [ + "RCC Väst" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/skoldkortel/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister sköldkörtelcancer", + "thyroid cancer", + "thyroid" + ], + "Information": "Sweden’s national quality registry for thyroid cancer, established to monitor and improve the care and outcomes for patients diagnosed with this type of cancer. The registry collects comprehensive data on patient demographics, tumour characteristics, genetic markers, treatment modalities (such as surgery, radioactive iodine therapy, and hormone replacement), and patient outcomes, including survival rates and recurrence.", + "category": [ + "National cancer quality registry" + ], + "start_date": "2003" + }, + { + "name": "SveReKKS - kvalitetsregister", + "registry_centre": [ + "RCC Väst" + ], + "url": "https://cancercentrum.se/samverkan/vara-uppdrag/prevention-och-tidig-upptackt/Screening-tjock-och-andtarmscancer/sverekks/", + "search_tags": [ + "SveReKKS - kvalitetsregister" + ], + "Information": "Focuses on colorectal cancer screening and prevention. Collects detailed data on screening participation rates, diagnostic results, follow-up procedures, and treatment outcomes. This registry supports Sweden’s organised colorectal cancer screening program, aimed at early detection and treatment of precancerous lesions and cancer in the colon and rectum. ", + "category": [ + "National cancer quality registry", + "colorectal cancer" + ], + "start_date": "2017" + }, + { + "name": "Nationellt kvalitetsregister för analcancer", + "registry_centre": [ + "RCC Norr" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/tjocktarm-andtarm-och-anal/anal/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister för analcancer" + ], + "Information": "Sweden’s national quality registry for anal cancer. It was established to improve the diagnosis, treatment, and outcomes of patients with this relatively rare form of cancer. The registry collects data on patient demographics, tumour characteristics, treatment methods (such as chemotherapy, radiotherapy, and surgery), and long-term patient outcomes, including survival rates and recurrence.", + "start_date": "2015", + "category": [ + "National cancer quality registry", + "anal cancer" + ] + }, + { + "name": "Nationellt kvalitetsregister för barncancer", + "registry_centre": [ + "RCC Stockholm Gotland" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/barn/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister för barncancer", + "peadiatric cancer", + "cancer" + ], + "Information": "Established to improve the care and outcomes for children diagnosed with cancer, it gathers detailed information on patient demographics, cancer types, treatment protocols (such as chemotherapy, radiotherapy, and surgery), and long-term outcomes. The registry covers nearly all cases of paediatric cancer across Sweden, tracking patient survival rates, treatment effectiveness, and any late effects of therapy.", + "start_date": "2011", + "category": [ + "National cancer quality registry" + ] + }, + { + "name": "Nationellt kvalitetsregister för bukspottkörtelcancer (Pankreasregistret)", + "registry_centre": [ + "RCC Syd" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/bukspottkortel/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister för bukspottkörtelcancer (Pankreasregistret)", + "pancreatic cancer" + ], + "Information": "The registry collects comprehensive data on patient demographics, tumour characteristics, genetic markers, treatment modalities (such as surgery, chemotherapy, and radiotherapy), and long-term outcomes, including survival rates. Covers nearly all pancreatic cancer cases in Sweden.​", + "start_date": "2011", + "category": [ + "National cancer quality registry" + ] + }, + { + "name": "Nationella Kvalitetsregistret för Cervixcancerprevention (NKCx)", + "registry_centre": [ + "RCC Stockholm Gotland" + ], + "url": "https://cancercentrum.se/samverkan/vara-uppdrag/prevention-och-tidig-upptackt/gynekologisk-cellprovskontroll/kvalitetsregister/", + "search_tags": [ + "Nationella Kvalitetsregistret för Cervixcancerprevention (NKCx)" + ], + "Information": "Includes data on screening, diagnosis, and treatment for cervical cancer across Sweden. It collects information on screening participation, follow-up procedures, and patient outcomes to monitor and improve the effectiveness of the national cervical cancer screening program. The registry covers nearly all eligible women in Sweden who participate in routine screening.", + "start_date": "1999", + "category": [ + "National cancer quality registry" + ] + }, + { + "name": "Nationellt kvalitetsregister för hjärntumörer och centrala nervsystemet", + "registry_centre": [ + "RCC Norr" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/hjarna-ryggmarg-och-hypofys/hjarna-och-ryggmarg/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister för hjärntumörer och centrala nervsystemet", + "CNS", + "brain tumour" + ], + "Information": "Sweden's national quality registry for brain tumours and central nervous system (CNS) cancers. t collects comprehensive data on patient demographics, tumour characteristics, genetic markers, treatment methods (such as surgery, radiotherapy, and chemotherapy), and long-term outcomes like survival rates and neurological function.", + "start_date": "2009", + "category": [ + "National cancer quality registry" + ] + }, + { + "name": "Nationellt kvalitetsregister för KML", + "registry_centre": [ + "RCC Mellansverige" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/blod-lymfom-myelom/kronisk-myeloisk-leukemi-kml/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister för KML", + "chronic lyeloid leukemia" + ], + "Information": "Collects detailed data on patients diagnosed with this specific type of leukemia, tracking treatment methods (such as tyrosine kinase inhibitors), disease progression, and long-term patient outcomes, including survival rates and quality of life. It covers most patients diagnosed with KML in the country. ", + "start_date": "2002", + "category": [ + "National cancer quality registry" + ] + }, + { + "name": "Nationellt kvalitetsregister för lungcancer", + "registry_centre": [ + "RCC Mellansverige" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/lunga-och-lungsack/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister för lungcancer", + "lung cancer" + ], + "Information": "It collects comprehensive data on patient demographics, tumour characteristics, diagnostic procedures, treatment approaches (such as surgery, radiotherapy, chemotherapy, and immunotherapy), and long-term outcomes, including survival rates. Covers almost all lung cancer cases in Sweden.", + "start_date": "2002", + "category": [ + "National cancer quality registry" + ] + }, + { + "name": "Nationellt kvalitetsregister för matstrups- och magsäckscancer (NREV)", + "registry_centre": [ + "RCC Syd" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/matstrupe-och-magsack/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister för matstrups- och magsäckscancer (NREV)", + "gastric cancers", + "cancer" + ], + "Information": "Sweden’s national quality registry for oesophageal and gastric cancers. It collects detailed data on patient demographics, tumour characteristics, diagnostic procedures, treatment modalities (including surgery, chemotherapy, and radiotherapy), and patient outcomes such as survival rates and post-treatment quality of life.", + "start_date": "2007", + "category": [ + "National cancer quality registry" + ] + }, + { + "name": "Nationellt kvalitetsregister för njurcancer", + "registry_centre": [ + "RCC Norr" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/njure/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister för njurcancer", + "kidney cancer" + ], + "Information": "The registry tracks patient demographics, tumour characteristics, treatment modalities (such as surgery, targeted therapies, and immunotherapies), and long-term outcomes, including survival rates and quality of life. By covering nearly all kidney cancer cases in Sweden, the registry plays a crucial role in improving treatment standards, facilitating clinical research, and informing national guidelines for managing kidney cancer​.", + "start_date": "2005", + "category": [ + "National cancer quality registry" + ] + }, + { + "name": "Nationella kvalitetsregistret för organiserad prostatacancertestning (SweOPT)", + "registry_centre": [ + "RCC Väst" + ], + "url": "https://cancercentrum.se/samverkan/vara-uppdrag/prevention-och-tidig-upptackt/prostatacancertestning/kvalitetsregister/", + "search_tags": [ + "Nationella kvalitetsregistret för organiserad prostatacancertestning (SweOPT)", + "prostate cancer", + "prostate" + ], + "Information": "The registry gathers comprehensive data on screening participation, test results (such as PSA levels), diagnostic procedures, and follow-up treatments, ensuring consistency and quality in prostate cancer testing across Sweden.", + "start_date": "2023", + "category": [ + "National cancer quality registry" + ] + }, + { + "name": "Nationellt kvalitetsregister för sarkom", + "registry_centre": [ + "RCC Syd" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/sarkom/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister för sarkom", + "ewings sarcoma", + "sarcoma" + ], + "Information": "The registry aims to improve the diagnosis, treatment, and outcomes for patients with various forms of sarcoma, including osteosarcoma, Ewing’s sarcoma, and soft tissue sarcomas. It collects data on patient demographics, tumour characteristics, surgical interventions, chemotherapy, and radiotherapy treatments, as well as long-term outcomes such as recurrence rates and survival.", + "start_date": "2009", + "category": [ + "National cancer quality registry" + ] + }, + { + "name": "Nationellt kvalitetsregister för testikelcancer seminom", + "registry_centre": [ + "RCC Syd" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/testikel/kvalitetsregister/#:~:text=Det%20nationella%20kvalitetsregistret%20för%20seminom,behandling%20av%20testikelcancer%20i%20Sverige.", + "search_tags": [ + "Nationellt kvalitetsregister för testikelcancer seminom", + "prostate cancer" + ], + "Information": "The registry aims to improve the quality of care by allowing clinics and regions to compare their data with national statistics, providing insights into survival rates, tumour stages, and treatment effectiveness. It also facilitates research, including biobanking initiatives, by providing information on biological samples", + "start_date": "2000", + "category": [ + "National cancer quality registry" + ] + }, + { + "name": "Nationellt kvalitetsregister för tjock- och ändtarmscancer", + "registry_centre": [ + "RCC Sydöst" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/tjocktarm-andtarm-och-anal/tjock--och-andtarm/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister för tjock- och ändtarmscancer", + "colorectal cancer" + ], + "Information": "It collects comprehensive data on patients diagnosed with colorectal cancer, focusing on diagnosis, surgical treatments, radiotherapy, chemotherapy, and outcomes. The aim is to improve treatment protocols and outcomes by comparing data across hospitals and regions. The registry covers all major hospitals in Sweden and ensures complete national coverage. As of recent years, it tracks thousands of new cases annually, with around 6,000 new patients added each year.", + "start_date": "2007", + "category": [ + "National cancer quality registry" + ] + }, + { + "name": "Nationellt kvalitetsregister för urinblåsecancer", + "registry_centre": [ + "RCC Stockholm Gotland" + ], + "url": "https://cancercentrum.se/samverkan/cancerdiagnoser/urinblasa-urinvagar/kvalitetsregister/", + "search_tags": [ + "Nationellt kvalitetsregister för urinblåsecancer", + "bladder cancer" + ], + "Information": "It collects detailed information on patients diagnosed with bladder cancer, including tumour stage, grade, treatment methods (such as surgery, radiotherapy, chemotherapy, or immunotherapy), and long-term outcomes. The primary aim is to improve clinical practice by tracking treatments and outcomes across all hospitals in Sweden, ensuring uniform quality standards. The registry also supports research by providing data for evaluating treatment effectiveness. Annually, around 2,000 new bladder cancer cases are registered.", + "start_date": "1997", + "category": [ + "National cancer quality registry" + ] + } +] \ No newline at end of file diff --git a/next-app/src/assets/Partner logo/Elixir-Europe-logo-1.png b/next-app/src/assets/Partner logo/Elixir-Europe-logo-1.png new file mode 100644 index 0000000..e7d9f7b Binary files /dev/null and b/next-app/src/assets/Partner logo/Elixir-Europe-logo-1.png differ diff --git a/next-app/src/assets/Partner logo/KI_digital_logotyp_positiv_RGB.png b/next-app/src/assets/Partner logo/KI_digital_logotyp_positiv_RGB.png new file mode 100644 index 0000000..51d7ee6 Binary files /dev/null and b/next-app/src/assets/Partner logo/KI_digital_logotyp_positiv_RGB.png differ diff --git a/next-app/src/assets/Partner logo/SciLifeLab_Logotype_Green_NEG.png b/next-app/src/assets/Partner logo/SciLifeLab_Logotype_Green_NEG.png new file mode 100644 index 0000000..eea3db2 Binary files /dev/null and b/next-app/src/assets/Partner logo/SciLifeLab_Logotype_Green_NEG.png differ diff --git a/next-app/src/assets/Partner logo/SciLifeLab_Logotype_Green_POS.png b/next-app/src/assets/Partner logo/SciLifeLab_Logotype_Green_POS.png new file mode 100644 index 0000000..2ad7178 Binary files /dev/null and b/next-app/src/assets/Partner logo/SciLifeLab_Logotype_Green_POS.png differ diff --git a/next-app/src/assets/Partner logo/dc.png b/next-app/src/assets/Partner logo/dc.png new file mode 100644 index 0000000..b4496a5 Binary files /dev/null and b/next-app/src/assets/Partner logo/dc.png differ diff --git a/next-app/src/assets/Partner logo/elixir-tess.svg b/next-app/src/assets/Partner logo/elixir-tess.svg new file mode 100644 index 0000000..053344c --- /dev/null +++ b/next-app/src/assets/Partner logo/elixir-tess.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/next-app/src/assets/Partner logo/gms-logo.png b/next-app/src/assets/Partner logo/gms-logo.png new file mode 100644 index 0000000..cc35610 Binary files /dev/null and b/next-app/src/assets/Partner logo/gms-logo.png differ diff --git a/next-app/src/assets/Partner logo/kaw_sv_300x300.png b/next-app/src/assets/Partner logo/kaw_sv_300x300.png new file mode 100644 index 0000000..813d6f0 Binary files /dev/null and b/next-app/src/assets/Partner logo/kaw_sv_300x300.png differ diff --git a/next-app/src/assets/Partner logo/ki-logo.jpg b/next-app/src/assets/Partner logo/ki-logo.jpg new file mode 100644 index 0000000..75b56af Binary files /dev/null and b/next-app/src/assets/Partner logo/ki-logo.jpg differ diff --git a/next-app/src/assets/Partner logo/nbislogo_orange_txt_3cb0778d90.svg b/next-app/src/assets/Partner logo/nbislogo_orange_txt_3cb0778d90.svg new file mode 100644 index 0000000..8b38ca5 --- /dev/null +++ b/next-app/src/assets/Partner logo/nbislogo_orange_txt_3cb0778d90.svg @@ -0,0 +1,288 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/next-app/src/assets/Partner logo/sll_dp_outline.svg b/next-app/src/assets/Partner logo/sll_dp_outline.svg new file mode 100644 index 0000000..812cfc6 --- /dev/null +++ b/next-app/src/assets/Partner logo/sll_dp_outline.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/next-app/src/assets/Partner logo/swe_pathogens_logo.png b/next-app/src/assets/Partner logo/swe_pathogens_logo.png new file mode 100644 index 0000000..fa2650c Binary files /dev/null and b/next-app/src/assets/Partner logo/swe_pathogens_logo.png differ diff --git a/next-app/src/assets/SciLifeLab logo/Precisionmedicineportal_logo_white.png b/next-app/src/assets/SciLifeLab logo/Precisionmedicineportal_logo_white.png new file mode 100644 index 0000000..57e7c16 Binary files /dev/null and b/next-app/src/assets/SciLifeLab logo/Precisionmedicineportal_logo_white.png differ diff --git a/next-app/src/assets/TeamPics/JanTeamPic.jpg b/next-app/src/assets/TeamPics/JanTeamPic.jpg new file mode 100644 index 0000000..427248b Binary files /dev/null and b/next-app/src/assets/TeamPics/JanTeamPic.jpg differ diff --git a/next-app/src/assets/TeamPics/MarTeamPic.png b/next-app/src/assets/TeamPics/MarTeamPic.png new file mode 100644 index 0000000..23ab9cb Binary files /dev/null and b/next-app/src/assets/TeamPics/MarTeamPic.png differ diff --git a/next-app/src/assets/TeamPics/NatTeamPic.jpg b/next-app/src/assets/TeamPics/NatTeamPic.jpg new file mode 100644 index 0000000..87fa4ac Binary files /dev/null and b/next-app/src/assets/TeamPics/NatTeamPic.jpg differ diff --git a/next-app/src/assets/TeamPics/SamTeamPic.jpg b/next-app/src/assets/TeamPics/SamTeamPic.jpg new file mode 100644 index 0000000..5636266 Binary files /dev/null and b/next-app/src/assets/TeamPics/SamTeamPic.jpg differ diff --git a/next-app/src/assets/TeamPics/SebTeamPic.png b/next-app/src/assets/TeamPics/SebTeamPic.png new file mode 100644 index 0000000..868c3d8 Binary files /dev/null and b/next-app/src/assets/TeamPics/SebTeamPic.png differ diff --git a/next-app/src/assets/images/dataSourcesIndexImage.png b/next-app/src/assets/images/dataSourcesIndexImage.png new file mode 100644 index 0000000..ddce966 Binary files /dev/null and b/next-app/src/assets/images/dataSourcesIndexImage.png differ diff --git a/next-app/src/assets/images/eventsAndTrainingsIndexImage.png b/next-app/src/assets/images/eventsAndTrainingsIndexImage.png new file mode 100644 index 0000000..8861565 Binary files /dev/null and b/next-app/src/assets/images/eventsAndTrainingsIndexImage.png differ diff --git a/next-app/src/assets/images/hedestamIndexImage.png b/next-app/src/assets/images/hedestamIndexImage.png new file mode 100644 index 0000000..7f45683 Binary files /dev/null and b/next-app/src/assets/images/hedestamIndexImage.png differ diff --git a/next-app/src/components/AboutPageComponent.tsx b/next-app/src/components/AboutPageComponent.tsx new file mode 100644 index 0000000..3429e28 --- /dev/null +++ b/next-app/src/components/AboutPageComponent.tsx @@ -0,0 +1,58 @@ +'use client'; + +import { ReactElement } from 'react'; +import { + H_1, +} from '@/constants'; +import Link from 'next/link'; +import { ILink, } from '@/interfaces/types'; +import { usePathname } from 'next/navigation'; + +export default function AboutPage(): ReactElement { + const pageTitle: string = "About Us"; + + const breadcrumbs: { [id: string] : ILink; } = { + 'l1': { text: 'Home', classes: '', link: '/' }, + 'l2': { text: 'About', classes: '', link: '' }, + }; + + const currentRoute = usePathname(); + + const paths = { + 'Product': '/about/product', + 'FAQ': '/about/faq', + 'Team': '/about/team', + 'Partners': '/about/partners' + } + + return ( + <> +
+
+
    + {Object.keys(breadcrumbs).map( key => ( +
  • {breadcrumbs[key as keyof typeof breadcrumbs].link ? {breadcrumbs[key].text} : <>{breadcrumbs[key].text}}
  • + ))} +
+
+
{pageTitle}
+
+ {Object.keys(paths).map( key => ( + + {key} + + ))} +
+
+ + ); +} \ No newline at end of file diff --git a/next-app/src/components/AccordionComponent.tsx b/next-app/src/components/AccordionComponent.tsx new file mode 100644 index 0000000..75d36ad --- /dev/null +++ b/next-app/src/components/AccordionComponent.tsx @@ -0,0 +1,64 @@ +import { ReactElement } from 'react' + +export default function AccordionComponent(): ReactElement { + + return ( + <> + +
+ +
+ What is the Data Science Node in Precision Medicine & Diagnostics? +
+
+

We are one out of the four Data Driven Life Science's nodes at SciLifeLab; our node is hosted by Karolinska Institutet. Established in late 2023, we are currently organising our efforts to develop technologies and data support that aid Swedish precision medicine researchers and bridge the gap between hospital and research. By providing robust data science tools and support, we aim to empower researchers who focus on enhancing diagnostics and personalised treatment strategies, facilitating the translation of precision medicine innovations into clinical practice. Our work is specifically driven by the Data Centre, a central hub within SciLifeLab.

+
+
+
+ +
+ How do you take the FAIR principles into account in your work? +
+
+

We incorporate the FAIR principles by keeping our code open on a GitHub repository (link) and want to offer several dashboards with open data for researchers. We aim to make data on our portal findable and accessible, as well as providing detailed dataset descriptions, thus enhancing reusability. We address interoperability on our platform by actively participating in national and international projects that aim to create a cohesive precision medicine ecosystem and a coordinated exchange system of data between regions and EU countries.

+
+
+
+ +
+ How can I provide feedback or suggest improvements for the portal? +
+
+

We highly value your feedback. Please share your suggestions and comments through the contact form.

+
+
+
+ +
+ Where do the courses and events you diplay come from? Where can I submit event information? +
+
+

The majority of events and training sessions are sourced from external APIs, with contributions from both SciLifeLab Training Hub and NBIS. If you have an API that enables the fetching of relevant events in the fields of precision medicine and diagnostics, please reach out to our team via the contact form. If you have individual events or courses that you would like us to feature, please contact us, and we could display it on our page. In the future, we plan to offer a specific form that will allow you to submit all the required information directly. Please stay tuned for this update.

+
+
+
+ +
+ How was the data sources list curated? Can I add specific data sources myself? +
+
+

The Data Centre's data stewards have manually searched for, collected, and summarised the displayed data sources. We recognise that new sources are continually emerging and strive to keep our data updated and accurate. If you think we have missed a source or have mislabelled one, please contact us using the contact form..

+
+
+
+ +
+ How can I showcase my research data on the portal? +
+
+

We are always eager to collaborate and support the Swedish precision medicine and diagnostics research community. If you would like your project or data source to be featured as a separate page on this portal, please reach out to us via the contact form.

+
+
+ + ); +} \ No newline at end of file diff --git a/next-app/src/components/ArticleComponent.tsx b/next-app/src/components/ArticleComponent.tsx new file mode 100644 index 0000000..cf24127 --- /dev/null +++ b/next-app/src/components/ArticleComponent.tsx @@ -0,0 +1,30 @@ +'use client'; + +import { + // useState, + // useEffect, + ReactElement } from 'react' +// import ReactMarkdown from 'react-markdown' +// import remarkGfm from 'remark-gfm' + +export default function ArticleComponent(): ReactElement { + + // const [content, setContent] = useState('') + + // useEffect(() => { + // fetch("markdown_example.md") + // .then((res) => res.text()) + // .then((text) => setContent(text)); + // }, []); + + // NextJS build was giving error, since this component isn't used yet just commented + // it out for now + return ( +
+

Under construction

+ {/* */} +
+ ); +} + +// continue from here https://stackoverflow.com/questions/42928530/how-do-i-load-a-markdown-file-into-a-react-component \ No newline at end of file diff --git a/next-app/src/components/CardComponent.tsx b/next-app/src/components/CardComponent.tsx new file mode 100644 index 0000000..fde993e --- /dev/null +++ b/next-app/src/components/CardComponent.tsx @@ -0,0 +1,49 @@ +import { ReactElement } from "react"; +import { ICardConfig, ICardContent } from "@/interfaces/types"; + +export default function CardComponent(prop: { + cardConfig: ICardConfig; + cardContent: ICardContent; +}): ReactElement { + const title: ReactElement = ( + <> +

{prop.cardContent.title}

+ {prop.cardContent.subTitle && ( +

+ {prop.cardContent.subTitle} +

+ )} + + ); + + const image: ReactElement = ( + <> + {prop.cardContent.imageAlt} + + ); + + const buttonClasses: string = + "card-actions " + prop.cardConfig.buttonPlacement; + const button: ReactElement = ( +
+ +
+ ); + + return ( +
+ {prop.cardContent.imageSrc && image} +
+ {prop.cardContent.title && title} +

{prop.cardContent.text}

+ {prop.cardContent.buttonText && button} +
+
+ ); +} diff --git a/next-app/src/components/ContactFormComponent.tsx b/next-app/src/components/ContactFormComponent.tsx new file mode 100644 index 0000000..878eb49 --- /dev/null +++ b/next-app/src/components/ContactFormComponent.tsx @@ -0,0 +1,153 @@ +'use client'; + +import { ChangeEvent, ReactElement, useState } from "react"; +import React from "react"; +import ReCAPTCHA from "react-google-recaptcha"; + +export default function ContactFormComponent(): ReactElement { + const [inputFields, setInputFields] = useState({ + name: "", + email: "", + message: "" + }); + const [errors, setErrors] = useState({ + name: "", + email: "", + message: "" + }); + const [recaptchaPassed, setRecaptchaPassed] = useState(false); + + const messageCharLimit = 1000; + + function checkFormFilled(): boolean { + let key: keyof typeof inputFields; + for (key in inputFields) { + if (!inputFields[key]) { + return false; + } + } + return true; + } + + function checkValidForm(): boolean { + let key: keyof typeof errors; + for (key in errors) { + if (errors[key]) { + return false; + } + } + return true; + } + + function handleChange(e: ChangeEvent | ChangeEvent) { + setInputFields({ ...inputFields, [e.target.name]: e.target.value}); + } + + function onChangeRecaptcha() { + setRecaptchaPassed(true); + } + + + React.useEffect(() =>{ + // form validation + const errors_tmp = { + name: "", + email: "", + message: "" + }; + if (!inputFields.name.match(/^[A-Za-zŽžÀ-ÿ\s\-]+$/) && inputFields.name.length > 0) { + errors_tmp.name = "Invalid character in name."; + } + + if (!inputFields.email.match(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/) && inputFields.email.length > 0) { + errors_tmp.email = "Invalid E-Mail adress."; + } + + if (inputFields.message.length > messageCharLimit && inputFields.message.length > 0) { + errors_tmp.message = "Message exceeds limit."; + } + setErrors({ name: errors_tmp.name, email: errors_tmp.email, message: errors_tmp.message }); + }, [inputFields]); + + return( +
+
+
+
+
+ + + {errors.name ? ( +

+ {errors.name} +

+ ) : null} +
+
+ + + {errors.email ? ( +

+ {errors.email} +

+ ) : null} +
+ +
+
+ +