From 3609d1fa201f3ed1f766648ffe27217fa1772ff1 Mon Sep 17 00:00:00 2001 From: Sergio Matias Urquin Date: Tue, 29 Apr 2025 18:47:35 -0600 Subject: [PATCH] first commit --- .env.sample | 8 + .gitignore | 51 + .pipelines/GitVersion.yml | 59 + .pipelines/base-pipeline.yml | 107 + .prettierrc | 4 + Dockerfile | 113 + README.md | 20 + next.config.mjs | 6 + package-lock.json | 5526 +++++++++++++++++ package.json | 42 + postcss.config.mjs | 8 + public/images/avatar.svg | 4 + public/next.svg | 1 + public/vercel.svg | 1 + src/app/android-chrome-192x192.png | Bin 0 -> 28461 bytes src/app/android-chrome-512x512.png | Bin 0 -> 213446 bytes src/app/apple-touch-icon.png | Bin 0 -> 26318 bytes src/app/favicon-16x16.png | Bin 0 -> 718 bytes src/app/favicon-32x32.png | Bin 0 -> 1774 bytes src/app/favicon.ico | Bin 0 -> 15406 bytes src/app/globals.css | 383 ++ src/app/images/Sketch-bg.svg | 67 + src/app/images/U-sketch.svg | 25 + src/app/images/UpstartSketch.svg | 20 + src/app/images/buttondecker.svg | 65 + src/app/images/cota-sketch.svg | 17 + src/app/layout.tsx | 38 + src/app/login-styles.module.css | 151 + src/app/main/page.tsx | 5 + src/app/module/[id]/page.tsx | 269 + src/app/module/page.tsx | 102 + src/app/onboarding/page.tsx | 20 + src/app/page.tsx | 167 + src/app/permission/[id]/page.tsx | 224 + src/app/permission/page.tsx | 99 + src/app/role/[id]/page.tsx | 385 ++ src/app/role/page.tsx | 140 + src/app/sample/[id]/page.tsx | 164 + src/app/sample/page.tsx | 89 + src/app/user/[id]/page.tsx | 331 + src/app/user/page.tsx | 109 + src/components/footer/index.tsx | 17 + src/components/header/index.tsx | 128 + src/components/headerImage/index.tsx | 36 + src/components/side-nav/side-nav.tsx | 57 + src/components/ui/forms/input.tsx | 41 + src/components/ui/icons/bell-icon.tsx | 27 + src/components/ui/icons/chevron-down-icon.tsx | 13 + src/components/ui/icons/close-menu-icon.svg | 3 + src/components/ui/icons/dashboard-icon.tsx | 13 + src/components/ui/icons/index.tsx | 11 + src/components/ui/icons/open-menu-icon.svg | 3 + src/components/ui/icons/refresh-icon.tsx | 20 + src/components/ui/layout/app-layout.tsx | 95 + src/components/ui/layout/nav-links.tsx | 43 + src/components/ui/layout/side-nav.tsx | 32 + src/components/ui/loader.svg | 116 + src/components/ui/upstartLogo.svg | 12 + src/hooks/module.tsx | 88 + src/hooks/permission.tsx | 100 + src/hooks/role.tsx | 87 + src/hooks/use-sample-images.tsx | 11 + src/hooks/use-sample-items.tsx | 71 + src/hooks/user.tsx | 128 + src/lib/AuthCookie.ts | 38 + src/lib/Enums.ts | 19 + src/lib/azureConfig.ts | 7 + src/lib/interfaces.tsx | 97 + src/lib/msalInstance.ts | 18 + src/lib/useUser.ts | 54 + src/services/api.ts | 81 + src/services/cerberos-api.ts | 113 + src/services/cerberos-services.tsx | 97 + tailwind.config.ts | 20 + tsconfig.json | 28 + 75 files changed, 10544 insertions(+) create mode 100644 .env.sample create mode 100644 .gitignore create mode 100644 .pipelines/GitVersion.yml create mode 100644 .pipelines/base-pipeline.yml create mode 100644 .prettierrc create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 next.config.mjs create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.mjs create mode 100644 public/images/avatar.svg create mode 100644 public/next.svg create mode 100644 public/vercel.svg create mode 100644 src/app/android-chrome-192x192.png create mode 100644 src/app/android-chrome-512x512.png create mode 100644 src/app/apple-touch-icon.png create mode 100644 src/app/favicon-16x16.png create mode 100644 src/app/favicon-32x32.png create mode 100644 src/app/favicon.ico create mode 100644 src/app/globals.css create mode 100644 src/app/images/Sketch-bg.svg create mode 100644 src/app/images/U-sketch.svg create mode 100644 src/app/images/UpstartSketch.svg create mode 100644 src/app/images/buttondecker.svg create mode 100644 src/app/images/cota-sketch.svg create mode 100644 src/app/layout.tsx create mode 100644 src/app/login-styles.module.css create mode 100644 src/app/main/page.tsx create mode 100644 src/app/module/[id]/page.tsx create mode 100644 src/app/module/page.tsx create mode 100644 src/app/onboarding/page.tsx create mode 100644 src/app/page.tsx create mode 100644 src/app/permission/[id]/page.tsx create mode 100644 src/app/permission/page.tsx create mode 100644 src/app/role/[id]/page.tsx create mode 100644 src/app/role/page.tsx create mode 100644 src/app/sample/[id]/page.tsx create mode 100644 src/app/sample/page.tsx create mode 100644 src/app/user/[id]/page.tsx create mode 100644 src/app/user/page.tsx create mode 100644 src/components/footer/index.tsx create mode 100644 src/components/header/index.tsx create mode 100644 src/components/headerImage/index.tsx create mode 100644 src/components/side-nav/side-nav.tsx create mode 100644 src/components/ui/forms/input.tsx create mode 100644 src/components/ui/icons/bell-icon.tsx create mode 100644 src/components/ui/icons/chevron-down-icon.tsx create mode 100644 src/components/ui/icons/close-menu-icon.svg create mode 100644 src/components/ui/icons/dashboard-icon.tsx create mode 100644 src/components/ui/icons/index.tsx create mode 100644 src/components/ui/icons/open-menu-icon.svg create mode 100644 src/components/ui/icons/refresh-icon.tsx create mode 100644 src/components/ui/layout/app-layout.tsx create mode 100644 src/components/ui/layout/nav-links.tsx create mode 100644 src/components/ui/layout/side-nav.tsx create mode 100644 src/components/ui/loader.svg create mode 100644 src/components/ui/upstartLogo.svg create mode 100644 src/hooks/module.tsx create mode 100644 src/hooks/permission.tsx create mode 100644 src/hooks/role.tsx create mode 100644 src/hooks/use-sample-images.tsx create mode 100644 src/hooks/use-sample-items.tsx create mode 100644 src/hooks/user.tsx create mode 100644 src/lib/AuthCookie.ts create mode 100644 src/lib/Enums.ts create mode 100644 src/lib/azureConfig.ts create mode 100644 src/lib/interfaces.tsx create mode 100644 src/lib/msalInstance.ts create mode 100644 src/lib/useUser.ts create mode 100644 src/services/api.ts create mode 100644 src/services/cerberos-api.ts create mode 100644 src/services/cerberos-services.tsx create mode 100644 tailwind.config.ts create mode 100644 tsconfig.json diff --git a/.env.sample b/.env.sample new file mode 100644 index 0000000..9adb191 --- /dev/null +++ b/.env.sample @@ -0,0 +1,8 @@ +NEXT_PUBLIC_CERBEROS_API_URL = // URL for the Cerberos BFF API +NEXT_PUBLIC_API_URL = // Base URL for blueprint BFF layer(this was included before cerberos implementation) +NEXT_PUBLIC_APP_ID = // Application ID for client identification(cliendId) +NEXT_PUBLIC_REDIRECT_URI = // URI to redirect after authentication(blueprint uri + /main) +NEXT_PUBLIC_SCOPE = // Permissions scope for the application(should be User.Read) +NEXT_PUBLIC_AUTHORITY = // Authority URL for authentication, e.g., https://{domain}.ciamlogin.com/{tenandId}/ +NEXT_PUBLIC_LOGOUT_URI = // URI to redirect after logout(blueprint uri + /logout) +NEXT_PUBLIC_ACCESS_AS_USER = // access as user scope api://{clientId}/{access as user scope} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5f3bec1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,51 @@ +### NextJS ### +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local +.env*.development +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +### react ### +.DS_* +*.log +logs +**/*.backup.* +**/*.back.* + +node_modules +bower_components + +*.sublime* + +psd +thumb +sketch \ No newline at end of file diff --git a/.pipelines/GitVersion.yml b/.pipelines/GitVersion.yml new file mode 100644 index 0000000..f5867a9 --- /dev/null +++ b/.pipelines/GitVersion.yml @@ -0,0 +1,59 @@ +mode: mainline +assembly-versioning-scheme: MajorMinorPatch +tag-prefix: '[vV]' +major-version-bump-message: '\+semver:\s?(breaking|major)' +minor-version-bump-message: '\+semver:\s?(feature|minor)' +patch-version-bump-message: '\+semver:\s?(fix|patch)' +no-bump-message: '\+semver:\s?(none|skip)' +legacy-semver-padding: 4 +build-metadata-padding: 4 +commits-since-version-source-padding: 4 +commit-message-incrementing: Enabled +branches: + main: + regex: ^master$|^main$ + tag: '' + increment: Patch + prevent-increment-of-merged-branch-version: true + track-merge-target: false + source-branches: [ 'develop', 'release' ] + tracks-release-branches: false + is-release-branch: false + is-mainline: true + pre-release-weight: 55000 + feature: + regex: ^features?[/-] + tag: useBranchName + increment: Inherit + prevent-increment-of-merged-branch-version: false + track-merge-target: false + source-branches: [ 'develop', 'main', 'release', 'feature', 'support', 'hotfix' ] + tracks-release-branches: false + is-release-branch: false + is-mainline: false + pre-release-weight: 30000 + release: + regex: ^releases?[/-] + tag: beta + increment: None + is-mainline: true + regex: ^releases?[/-] + prevent-increment-of-merged-branch-version: true + track-merge-target: false + source-branches: [ 'develop', 'main', 'support', 'release' ] + tracks-release-branches: false + is-release-branch: true + is-mainline: false + pre-release-weight: 30000 + hotfix: + regex: ^hotfix(es)?[/-] + increment: Patch + prevent-increment-of-merged-branch-version: false + track-merge-target: false + source-branches: [ 'develop', 'main', 'support' ] + tracks-release-branches: false + is-release-branch: false + is-mainline: false + pre-release-weight: 30000 +ignore: + sha: [] \ No newline at end of file diff --git a/.pipelines/base-pipeline.yml b/.pipelines/base-pipeline.yml new file mode 100644 index 0000000..1eb995f --- /dev/null +++ b/.pipelines/base-pipeline.yml @@ -0,0 +1,107 @@ +# Starter pipeline +# Start with a minimal pipeline that you can customize to build and deploy your code. +# Add steps that build, run tests, deploy, and more: +# https://aka.ms/yaml + +trigger: +- development +- releases/* +- feature/* +- hotfix/* +- bugfix/* + +variables: +- group: blueprint-sandbox-web +- name: isReleaseDeployment + value: $[eq(variables['Build.SourceBranch'], 'refs/heads/development')] +- name: imageName + value: $[variables.containerImageName] +- name: containerRegistryEndpoint + value: $[variables.containerRegistryEndpointUrl] +- name: webAppName + value: $[variables.appServiceName] + +pool: + vmImage: ubuntu-latest + +steps: +- checkout: self + fetchDepth: 0 # It will fix gitversion iteraction to extract the correct version from our history + persistCredentials: true # It will fix terminal user to be able to push tag version on the build. + displayName: '[Step1.0] Define fetchDepth' + + +# Install gitversion tool +# - task: gitversion/setup@3 +# displayName: '[Step2.1] Install Git Tools' +# inputs: +# versionSpec: '5.x' + +# Execute the tool to identify the next SemVersion for this library +# - task: gitversion/execute@3 +# displayName: '[Step2.2] Calculate SemVer' +# inputs: +# useConfigFile: true +# configFilePath: '.pipelines/GitVersion.yml' + +# Echo the SemVersion Identified +- script: echo current version is $(GitVersion.SemVer) $(Build.SourcesDirectory) + displayName: '[Step2.3] Display calculated version' + +- script: npm ci + displayName: '[Step3.1] NPM CI' + +- task: SnykSecurityScan@1 + displayName: '[Step3.2] Snyk Scanning' + inputs: + serviceConnectionEndpoint: 'SnykConnection' + testType: 'app' + severityThreshold: 'high' + monitorWhen: 'noIssuesFound' + failOnIssues: true + additionalArguments: '--file=package.json' + +- task: Docker@2 + displayName: '[Step4.1] Build' + inputs: + containerRegistry: '$(containerRegistryServiceConnectionName)' + repository: '$(imageName)' + command: 'build' + # tags: '$(GitVersion.SemVer)' + tags: 'sandbox' + Dockerfile: '**/Dockerfile' + arguments: --build-arg NEXT_PUBLIC_API_URL=$(NEXT_PUBLIC_API_URL) --build-arg NEXT_PUBLIC_CERBEROS_API_URL=$(NEXT_PUBLIC_CERBEROS_API_URL) --build-arg NEXT_PUBLIC_APP_ID=$(NEXT_PUBLIC_APP_ID) --build-arg NEXT_PUBLIC_REDIRECT_URI=$(NEXT_PUBLIC_REDIRECT_URI) --build-arg NEXT_PUBLIC_SCOPE=$(NEXT_PUBLIC_SCOPE) --build-arg NEXT_PUBLIC_AUTHORITY=$(NEXT_PUBLIC_AUTHORITY) --build-arg NEXT_PUBLIC_LOGOUT_URI=$(NEXT_PUBLIC_LOGOUT_URI) --build-arg NEXT_PUBLIC_ACCESS_AS_USER=$(NEXT_PUBLIC_ACCESS_AS_USER) + +# - task: SnykSecurityScan@1 +# inputs: +# serviceConnectionEndpoint: 'SnykConnection' +# testType: 'container' +# # dockerImageName: '$(containerRegistryEndpoint)/$(imageName):$(GitVersion.SemVer)' +# dockerImageName: '$(containerRegistryEndpoint)/$(imageName):sandbox' +# severityThreshold: 'high' +# monitorWhen: 'noIssuesFound' +# failOnIssues: true + +- task: Docker@2 + displayName: '[Step4.1] Push' + inputs: + containerRegistry: '$(containerRegistryServiceConnectionName)' + repository: '$(imageName)' + command: 'push' + # tags: '$(GitVersion.SemVer)' + tags: 'sandbox' + Dockerfile: '**/Dockerfile' + +- task: AzureRmWebAppDeployment@4 + displayName: 'Deploy on Sandbox' + condition: and(succeeded(), eq(variables.isReleaseDeployment, true)) + enabled: true + inputs: + ConnectionType: 'AzureRM' + azureSubscription: '$(azureRMServiceConnectionName)' + appType: 'webAppContainer' + WebAppName: '$(webAppName)' + DockerNamespace: '$(containerRegistryEndpoint)' + DockerRepository: '$(imageName)' + # DockerImageTag: '$(GitVersion.SemVer)' + DockerImageTag: 'sandbox' diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..222861c --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "tabWidth": 2, + "useTabs": false +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..98523db --- /dev/null +++ b/Dockerfile @@ -0,0 +1,113 @@ +FROM node:lts-alpine3.18 AS base + +# 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 +# It should use .npmrc +COPY package.json package-lock.json* ./ +RUN \ + if [ -f package-lock.json ]; then npm ci; \ + else echo "Lockfile not found." && exit 1; \ + fi + + +# Rebuild the source code only when needed +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . + +# Next.js collects completely anonymous telemetry data about general usage. +# Learn more here: https://nextjs.org/telemetry +# Uncomment the following line in case you want to disable telemetry during the build. +# ENV NEXT_TELEMETRY_DISABLED 1 + +ARG NEXT_PUBLIC_API_URL +ARG NEXT_PUBLIC_CERBEROS_API_URL +ARG NEXT_PUBLIC_APP_ID +ARG NEXT_PUBLIC_REDIRECT_URI +ARG NEXT_PUBLIC_SCOPE +ARG NEXT_PUBLIC_AUTHORITY +ARG NEXT_PUBLIC_LOGOUT_URI +ARG NEXT_PUBLIC_ACCESS_AS_USER + +ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL +ENV NEXT_PUBLIC_CERBEROS_API_URL=$NEXT_PUBLIC_CERBEROS_API_URL +ENV NEXT_PUBLIC_APP_ID=$NEXT_PUBLIC_APP_ID +ENV NEXT_PUBLIC_REDIRECT_URI=$NEXT_PUBLIC_REDIRECT_URI +ENV NEXT_PUBLIC_SCOPE=$NEXT_PUBLIC_SCOPE +ENV NEXT_PUBLIC_AUTHORITY=$NEXT_PUBLIC_AUTHORITY +ENV NEXT_PUBLIC_LOGOUT_URI=$NEXT_PUBLIC_LOGOUT_URI +ENV NEXT_PUBLIC_ACCESS_AS_USER=$NEXT_PUBLIC_ACCESS_AS_USER + +RUN echo "NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL" +RUN echo "NEXT_PUBLIC_CERBEROS_API_URL=$NEXT_PUBLIC_CERBEROS_API_URL" +RUN echo "NEXT_PUBLIC_APP_ID=$NEXT_PUBLIC_APP_ID" +RUN echo "NEXT_PUBLIC_REDIRECT_URI=$NEXT_PUBLIC_REDIRECT_URI" +RUN echo "NEXT_PUBLIC_SCOPE=$NEXT_PUBLIC_SCOPE" +RUN echo "NEXT_PUBLIC_AUTHORITY=$NEXT_PUBLIC_AUTHORITY" +RUN echo "NEXT_PUBLIC_LOGOUT_URI=$NEXT_PUBLIC_LOGOUT_URI" +RUN echo "NEXT_PUBLIC_ACCESS_AS_USER=$NEXT_PUBLIC_ACCESS_AS_USER" + +RUN yarn build + +# If using npm comment out above and use below instead +# RUN npm run build + +# Production image, copy all the files and run next +FROM base AS runner +WORKDIR /app + +ENV NODE_ENV production +# Uncomment the following line in case you want to disable telemetry during runtime. +# ENV NEXT_TELEMETRY_DISABLED 1 + +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +USER nextjs + +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 /app/.next/standalone ./ +COPY --from=builder /app/.next/static ./.next/static + +EXPOSE 3000 + +ENV PORT 3000 +ENV HOSTNAME 0.0.0.0 + +ARG NEXT_PUBLIC_API_URL +ARG NEXT_PUBLIC_CERBEROS_API_URL +ARG NEXT_PUBLIC_APP_ID +ARG NEXT_PUBLIC_REDIRECT_URI +ARG NEXT_PUBLIC_SCOPE +ARG NEXT_PUBLIC_AUTHORITY +ARG NEXT_PUBLIC_LOGOUT_URI +ARG NEXT_PUBLIC_ACCESS_AS_USER + +ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL +ENV NEXT_PUBLIC_CERBEROS_API_URL=$NEXT_PUBLIC_CERBEROS_API_URL +ENV NEXT_PUBLIC_APP_ID=$NEXT_PUBLIC_APP_ID +ENV NEXT_PUBLIC_REDIRECT_URI=$NEXT_PUBLIC_REDIRECT_URI +ENV NEXT_PUBLIC_SCOPE=$NEXT_PUBLIC_SCOPE +ENV NEXT_PUBLIC_AUTHORITY=$NEXT_PUBLIC_AUTHORITY +ENV NEXT_PUBLIC_LOGOUT_URI=$NEXT_PUBLIC_LOGOUT_URI +ENV NEXT_PUBLIC_ACCESS_AS_USER=$NEXT_PUBLIC_ACCESS_AS_USER + +RUN echo "NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL" +RUN echo "NEXT_PUBLIC_CERBEROS_API_URL=$NEXT_PUBLIC_CERBEROS_API_URL" +RUN echo "NEXT_PUBLIC_APP_ID=$NEXT_PUBLIC_APP_ID" +RUN echo "NEXT_PUBLIC_REDIRECT_URI=$NEXT_PUBLIC_REDIRECT_URI" +RUN echo "NEXT_PUBLIC_SCOPE=$NEXT_PUBLIC_SCOPE" +RUN echo "NEXT_PUBLIC_AUTHORITY=$NEXT_PUBLIC_AUTHORITY" +RUN echo "NEXT_PUBLIC_LOGOUT_URI=$NEXT_PUBLIC_LOGOUT_URI" +RUN echo "NEXT_PUBLIC_ACCESS_AS_USER=$NEXT_PUBLIC_ACCESS_AS_USER" + +CMD ["node", "server.js"] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e37e4b1 --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# Introduction +TODO: Give a short introduction of your project. Let this section explain the objectives or the motivation behind this project. + +# Getting Started +TODO: Guide users through getting your code up and running on their own system. In this section you can talk about: +1. Installation process +2. Software dependencies +3. Latest releases +4. API references + +# Build and Test +TODO: Describe and show how to build your code and run the tests. + +# Contribute +TODO: Explain how other users and developers can contribute to make your code better. + +If you want to learn more about creating good readme files then refer the following [guidelines](https://docs.microsoft.com/en-us/azure/devops/repos/git/create-a-readme?view=azure-devops). You can also seek inspiration from the below readme files: +- [ASP.NET Core](https://github.com/aspnet/Home) +- [Visual Studio Code](https://github.com/Microsoft/vscode) +- [Chakra Core](https://github.com/Microsoft/ChakraCore) \ No newline at end of file diff --git a/next.config.mjs b/next.config.mjs new file mode 100644 index 0000000..5a13038 --- /dev/null +++ b/next.config.mjs @@ -0,0 +1,6 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + output: 'standalone' +}; + +export default nextConfig; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3678d41 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5526 @@ +{ + "name": "blueprint.ui", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "blueprint.ui", + "version": "0.1.0", + "dependencies": { + "@azure/msal-browser": "^3.23.0", + "@headlessui/react": "^2.1.2", + "@heroicons/react": "^2.1.5", + "@types/material-ui": "^0.21.17", + "axios": "^1.8.3", + "jsonwebtoken": "^9.0.2", + "jwt-decode": "^4.0.0", + "msal": "^1.4.18", + "nanoid": "^3.3.8", + "next": "^14.2.26", + "react": "^18", + "react-dom": "^18", + "react-router-dom": "^6.26.2", + "react-toastify": "^10.0.5", + "sass": "^1.77.8", + "swr": "^2.2.5", + "zustand": "^5.0.0-rc.2" + }, + "devDependencies": { + "@types/jsonwebtoken": "^9.0.7", + "@types/jwt-decode": "^2.2.1", + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "14.2.5", + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@azure/msal-browser": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.23.0.tgz", + "integrity": "sha512-+QgdMvaeEpdtgRTD7AHHq9aw8uga7mXVHV1KshO1RQ2uI5B55xJ4aEpGlg/ga3H+0arEVcRfT4ZVmX7QLXiCVw==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "14.14.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "14.14.2", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.14.2.tgz", + "integrity": "sha512-XV0P5kSNwDwCA/SjIxTe9mEAsKB0NqGNSuaVrkCCE2lAyBr/D6YtD80Vkdp4tjWnPFwjzkwldjr1xU/facOJog==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "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.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.4.tgz", + "integrity": "sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==", + "dependencies": { + "@floating-ui/utils": "^0.2.4" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.7.tgz", + "integrity": "sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.4" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.19", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.19.tgz", + "integrity": "sha512-Jk6zITdjjIvjO/VdQFvpRaD3qPwOHH6AoDHxjhpy+oK4KFgaSP871HYWUAPdnLmx1gQ+w/pB312co3tVml+BXA==", + "dependencies": { + "@floating-ui/react-dom": "^2.1.1", + "@floating-ui/utils": "^0.2.4", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz", + "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==" + }, + "node_modules/@headlessui/react": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.1.2.tgz", + "integrity": "sha512-Kb3hgk9gRNRcTZktBrKdHhF3xFhYkca1Rk6e1/im2ENf83dgN54orMW0uSKTXFnUpZOUFZ+wcY05LlipwgZIFQ==", + "dependencies": { + "@floating-ui/react": "^0.26.16", + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@tanstack/react-virtual": "^3.8.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^18", + "react-dom": "^18" + } + }, + "node_modules/@heroicons/react": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.1.5.tgz", + "integrity": "sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==", + "peerDependencies": { + "react": ">= 16" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "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==", + "dev": true, + "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.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@next/env": { + "version": "14.2.28", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.28.tgz", + "integrity": "sha512-PAmWhJfJQlP+kxZwCjrVd9QnR5x0R3u0mTXTiZDgSd4h5LdXmjxCCWbN9kq6hkZBOax8Rm3xDW5HagWyJuT37g==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.5.tgz", + "integrity": "sha512-LY3btOpPh+OTIpviNojDpUdIbHW9j0JBYBjsIp8IxtDFfYFyORvw3yNq6N231FVqQA7n7lwaf7xHbVJlA1ED7g==", + "dev": true, + "dependencies": { + "glob": "10.3.10" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.28", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.28.tgz", + "integrity": "sha512-kzGChl9setxYWpk3H6fTZXXPFFjg7urptLq5o5ZgYezCrqlemKttwMT5iFyx/p1e/JeglTwDFRtb923gTJ3R1w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.28", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.28.tgz", + "integrity": "sha512-z6FXYHDJlFOzVEOiiJ/4NG8aLCeayZdcRSMjPDysW297Up6r22xw6Ea9AOwQqbNsth8JNgIK8EkWz2IDwaLQcw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.28", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.28.tgz", + "integrity": "sha512-9ARHLEQXhAilNJ7rgQX8xs9aH3yJSj888ssSjJLeldiZKR4D7N08MfMqljk77fAwZsWwsrp8ohHsMvurvv9liQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.28", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.28.tgz", + "integrity": "sha512-p6gvatI1nX41KCizEe6JkF0FS/cEEF0u23vKDpl+WhPe/fCTBeGkEBh7iW2cUM0rvquPVwPWdiUR6Ebr/kQWxQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.28", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.28.tgz", + "integrity": "sha512-nsiSnz2wO6GwMAX2o0iucONlVL7dNgKUqt/mDTATGO2NY59EO/ZKnKEr80BJFhuA5UC1KZOMblJHWZoqIJddpA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.28", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.28.tgz", + "integrity": "sha512-+IuGQKoI3abrXFqx7GtlvNOpeExUH1mTIqCrh1LGFf8DnlUcTmOOCApEnPJUSLrSbzOdsF2ho2KhnQoO0I1RDw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.28", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.28.tgz", + "integrity": "sha512-l61WZ3nevt4BAnGksUVFKy2uJP5DPz2E0Ma/Oklvo3sGj9sw3q7vBWONFRgz+ICiHpW5mV+mBrkB3XEubMrKaA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.28", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.28.tgz", + "integrity": "sha512-+Kcp1T3jHZnJ9v9VTJ/yf1t/xmtFAc/Sge4v7mVc1z+NYfYzisi8kJ9AsY8itbgq+WgEwMtOpiLLJsUy2qnXZw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.28", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.28.tgz", + "integrity": "sha512-1gCmpvyhz7DkB1srRItJTnmR2UwQPAUXXIg9r0/56g3O8etGmwlX68skKXJOp9EejW3hhv7nSQUJ2raFiz4MoA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@react-aria/focus": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.17.1.tgz", + "integrity": "sha512-FLTySoSNqX++u0nWZJPPN5etXY0WBxaIe/YuL/GTEeuqUIuC/2bJSaw5hlsM6T2yjy6Y/VAxBcKSdAFUlU6njQ==", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.21.3", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.3.tgz", + "integrity": "sha512-BWIuf4qCs5FreDJ9AguawLVS0lV9UU+sK4CCnbCNNmYqOWY+1+gRXCsnOM32K+oMESBxilAjdHW5n1hsMqYMpA==", + "dependencies": { + "@react-aria/ssr": "^3.9.4", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.4.tgz", + "integrity": "sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.24.1.tgz", + "integrity": "sha512-O3s9qhPMd6n42x9sKeJ3lhu5V1Tlnzhu6Yk8QOvDuXf7UGuUjXf9mzfHJt1dYzID4l9Fwm8toczBzPM9t0jc8Q==", + "dependencies": { + "@react-aria/ssr": "^3.9.4", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.1.tgz", + "integrity": "sha512-VS/EHRyicef25zDZcM/ClpzYMC5i2YGN6uegOeQawmgfGjb02yaCX0F0zR69Pod9m2Hr3wunTbtpgVXvYbZItg==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/shared": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.23.1.tgz", + "integrity": "sha512-5d+3HbFDxGZjhbMBeFHRQhexMFt4pUce3okyRtUVKbbedQFUrtXSBg9VszgF2RTeQDKDkMCIQDtz5ccP/Lk1gw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@remix-run/router": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz", + "integrity": "sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz", + "integrity": "sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==", + "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.12", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.12.tgz", + "integrity": "sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tanstack/react-virtual": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.8.3.tgz", + "integrity": "sha512-9ICwbDUUzN99CJIGc373i8NLoj6zFTKI2Hlcmo0+lCSAhPQ5mxq4dGOMKmLYoEFyHcGQ64Bd6ZVbnPpM6lNK5w==", + "dependencies": { + "@tanstack/virtual-core": "3.8.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.8.3.tgz", + "integrity": "sha512-vd2A2TnM5lbnWZnHi9B+L2gPtkSeOtJOAw358JqokIH1+v2J7vUAzFVPwB/wrye12RFOurffXu33plm4uQ+JBQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@types/create-react-class": { + "version": "15.6.8", + "resolved": "https://registry.npmjs.org/@types/create-react-class/-/create-react-class-15.6.8.tgz", + "integrity": "sha512-s5HocgHXvN4Phoypsz8+4TLFreWRUrMcq9MHgwVleqNNR5EipSrFN49LCU/N7j8nIiQoRExY9n79LBrTDdsE1Q==", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "@types/react": "*" + } + }, + "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/jsonwebtoken": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz", + "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/jwt-decode": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/jwt-decode/-/jwt-decode-2.2.1.tgz", + "integrity": "sha512-aWw2YTtAdT7CskFyxEX2K21/zSDStuf/ikI3yBqmwpwJF0pS+/IX5DWv+1UFffZIbruP6cnT9/LAJV1gFwAT1A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/material-ui": { + "version": "0.21.17", + "resolved": "https://registry.npmjs.org/@types/material-ui/-/material-ui-0.21.17.tgz", + "integrity": "sha512-3iyPhFkqI856UBWRxaO7ZZDpOtWM3XPl5gdKKkVBPn3TqNBdgDuFFhHx8BFLL85o5oYy5Y/SX5s0bs7a2VdLTw==", + "license": "MIT", + "dependencies": { + "@types/react": "*", + "@types/react-addons-linked-state-mixin": "*" + } + }, + "node_modules/@types/node": { + "version": "20.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", + "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-addons-linked-state-mixin": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/@types/react-addons-linked-state-mixin/-/react-addons-linked-state-mixin-0.14.27.tgz", + "integrity": "sha512-yVxzQcKDiq32uziGQ/ka586qSFxz2ePYZ3dTCp4JHJKk/E6M0LP0R28ft3oFAnTGJRFBAB3if3pkP8w57Y04IA==", + "license": "MIT", + "dependencies": { + "@types/create-react-class": "*", + "@types/react": "*" + } + }, + "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==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "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/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/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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "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.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "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.9.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz", + "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", + "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "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==", + "dev": true + }, + "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/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "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==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001642", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", + "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", + "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/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/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/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==", + "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==", + "dev": true, + "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==", + "dev": true + }, + "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/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "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/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true, + "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/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.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "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==", + "dev": true + }, + "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/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "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==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "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.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "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.0", + "@humanwhocodes/config-array": "^0.11.14", + "@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.5", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.5.tgz", + "integrity": "sha512-zogs9zlOiZ7ka+wgUnmcM0KBEDjo4Jis7kxN1jvC0N4wynQ2MIx/KBkg4mVF63J5EK4W0QMCn7xO3vNisjaAoA==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "14.2.5", + "@rushstack/eslint-patch": "^1.3.3", + "@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.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "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": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "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.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "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.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "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.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", + "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", + "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.9.1", + "axobject-query": "~3.1.1", + "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" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.34.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.4.tgz", + "integrity": "sha512-Np+jo9bUwJNxCsT12pXtrGhJgT3T44T1sHhn1Ssr42XFn8TES0267wPGo5nNrMHi8qkyimDAX2BUmkf9pSaVzA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.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" + } + }, + "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/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/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==", + "dev": true, + "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==", + "dev": true, + "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/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "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.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "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.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dev": true, + "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==", + "dev": true, + "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.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==" + }, + "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/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-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-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.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "dev": true, + "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-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==", + "dev": true, + "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-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-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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "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/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "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/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "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/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "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==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/msal": { + "version": "1.4.18", + "resolved": "https://registry.npmjs.org/msal/-/msal-1.4.18.tgz", + "integrity": "sha512-QyWMWrZqpwtK6LEqhwtbikxIWqA1EOcdMvDeIDjIXdGU29wM4orwq538sPe1+JfKDIgPmJj1Fgi5B7luaw/IyA==", + "deprecated": "This package is no longer supported. Please use @azure/msal-browser instead.", + "license": "MIT", + "dependencies": { + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/msal/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "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.28", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.28.tgz", + "integrity": "sha512-QLEIP/kYXynIxtcKB6vNjtWLVs3Y4Sb+EClTC/CSVzdLD1gIuItccpu/n1lhmduffI32iPGEK2cLLxxt28qgYA==", + "license": "MIT", + "dependencies": { + "@next/env": "14.2.28", + "@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.28", + "@next/swc-darwin-x64": "14.2.28", + "@next/swc-linux-arm64-gnu": "14.2.28", + "@next/swc-linux-arm64-musl": "14.2.28", + "@next/swc-linux-x64-gnu": "14.2.28", + "@next/swc-linux-x64-musl": "14.2.28", + "@next/swc-win32-arm64-msvc": "14.2.28", + "@next/swc-win32-ia32-msvc": "14.2.28", + "@next/swc-win32-x64-msvc": "14.2.28" + }, + "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/@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/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==", + "dev": true, + "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==", + "dev": true, + "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/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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "dev": true, + "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.0.1", + "source-map-js": "^1.2.0" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "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==", + "dev": true, + "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-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-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/react-router": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.2.tgz", + "integrity": "sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.19.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.2.tgz", + "integrity": "sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.19.2", + "react-router": "6.26.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-toastify": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.5.tgz", + "integrity": "sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw==", + "dependencies": { + "clsx": "^2.1.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=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==", + "dev": true, + "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/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "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/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==", + "dev": true, + "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==", + "dev": true, + "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-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "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/sass": { + "version": "1.77.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", + "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "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==", + "dev": true, + "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/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "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==", + "dev": true, + "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/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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swr": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.2.5.tgz", + "integrity": "sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==", + "dependencies": { + "client-only": "^0.0.1", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, + "node_modules/tailwindcss": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.5.tgz", + "integrity": "sha512-DlTxttYcogpDfx3tf/8jfnma1nfAYi2cBUYV2YNoPPecwmO3YGiFlOX9D8tGAu+EDF38ryBzvrDKU/BLMsUwbw==", + "dev": true, + "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/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==", + "dev": true, + "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==", + "dev": true, + "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/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==", + "dev": true + }, + "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.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "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.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "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": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "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/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.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==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "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.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "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.1", + "which-typed-array": "^1.1.9" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "dev": true, + "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/zustand": { + "version": "5.0.0-rc.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.0-rc.2.tgz", + "integrity": "sha512-o2Nwuvnk8vQBX7CcHL8WfFkZNJdxB/VKeWw0tNglw8p4cypsZ3tRT7rTRTDNeUPFS0qaMBRSKe+fVwL5xpcE3A==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..42635c3 --- /dev/null +++ b/package.json @@ -0,0 +1,42 @@ +{ + "name": "blueprint.ui", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@azure/msal-browser": "^3.23.0", + "@headlessui/react": "^2.1.2", + "@heroicons/react": "^2.1.5", + "@types/material-ui": "^0.21.17", + "axios": "^1.8.3", + "jsonwebtoken": "^9.0.2", + "jwt-decode": "^4.0.0", + "msal": "^1.4.18", + "nanoid": "^3.3.8", + "next": "^14.2.26", + "react": "^18", + "react-dom": "^18", + "react-router-dom": "^6.26.2", + "react-toastify": "^10.0.5", + "sass": "^1.77.8", + "swr": "^2.2.5", + "zustand": "^5.0.0-rc.2" + }, + "devDependencies": { + "@types/jsonwebtoken": "^9.0.7", + "@types/jwt-decode": "^2.2.1", + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "14.2.5", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "typescript": "^5" + } +} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..1a69fd2 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/public/images/avatar.svg b/public/images/avatar.svg new file mode 100644 index 0000000..30b3d16 --- /dev/null +++ b/public/images/avatar.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/public/next.svg b/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg new file mode 100644 index 0000000..d2f8422 --- /dev/null +++ b/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/android-chrome-192x192.png b/src/app/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..07cbbab135e9fe227c3a96ce2de3ebe43e8f8953 GIT binary patch literal 28461 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
  • VCKl+_G$v48yjf6>Y=?xu)aZ#jk%CCZd@2i@ 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�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 Qr~m)}07*qoM6N<$f}wOg-T(jq literal 0 HcmV?d00001 diff --git a/src/app/favicon.ico b/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b5cf46b617a277c7bcb2f795afa5b099ce19dfd5 GIT binary patch literal 15406 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 esuzw|zo# header{ + margin: 1rem; + border: 1px solid var(--white-BP); +} + + #wrapper > header > div > div{ + align-items: center; + } + + #wrapper > header h1{ + font-size: 2.2em; + } + + #wrapper > header h3{ + font-size: 1.5em; + margin-left: 8px; + } + + #headerTools{ + color: var(--TextColor-BP-rgb); + background: var(--brightBlue-BP); + border: 1px solid var(--white-BP); + padding: 4px; + } + + #ImageLoadButton{ + background-color: var(--planeYellow-BP); + border: 3px solid var(--planeYellow-BP); + border-top-color: transparent; + border-left-color: transparent; + padding: 6px; + background-clip:content-box; + line-height: 2; + } + +main{ + min-height: calc(55vh); + padding: 48px; + background: url(./images/U-sketch.svg) top right no-repeat, url(./images/cota-sketch.svg) center left no-repeat; +} + +main>div{ + background: none; + border: 1px solid var(--white-BP); +} + +#container, +#formContainer{ + width: auto; + min-width: 50%; + margin: auto; + border-width: 3px !important; + border-style: dashed !important; + border-left: none; +} + +main .button{ + display: inline-block; + position: relative; + background: url(./images/buttondecker.svg); + background-size: 100% 100%; + padding: 12px 32px; + border-radius: 6px; + font-weight: bold; +} + +main .button::before{ + content:""; + display: block; + position: absolute; + margin: auto; + left: 15%; + top: 15%; + width: 70%; + height: 65%; + border: 2px dashed var(--white-BP); + border-radius: 6px; +} + +main .button.editBtn{ + filter: hue-rotate(142deg) saturate(30); +} + +main .button.deleteBtn{ + filter: hue-rotate(290deg) saturate(30); +} + +main .button.saveBtn{ + color: #FFF; + background-blend-mode: screen; +} + +main .button.saveBtn::before{ + border-color: #FFF; +} + +main .button.cancelBtn{ + filter: hue-rotate(290deg) saturate(20); +} + + #navigationButton{ + font-weight: bold; + font-size: 2.5vh; + padding: 84px 64px 42px 32px; + background: url(./images/Sketch-bg.svg); + background-size: cover; + } + + table { + position: relative; + width: 100%; + border-collapse: collapse; + } + + table::after, + table::before{ + content:""; + display: block; + position: absolute; + bottom: -32px; + width: 32px; + height: 32px; + + border-width: 2px; + border-top-style: dotted; + border-bottom: none; + border-color: var(--white-BP); + } + + table::after{ + border-left-style: dotted; + border-right: none; + right: -32px; + } + + table::before{ + border-right-style: dotted; + border-left: none; + left: -32px; + } + + thead{ + position: relative; + border-bottom: 2px dashed var(--white-BP); + background: var(--primeBlue-BP-alpha40); + } + + thead::after, + thead::before{ + content:""; + display: block; + position: absolute; + top: -32px; + width: 32px; + height: 32px; + + border-width: 2px; + border-bottom-style: dotted; + border-top: none; + border-color: var(--white-BP); + } + + thead::after{ + border-left-style: dotted; + border-right: none; + right: -32px; + } + + thead::before{ + border-right-style: dotted; + border-left: none; + left: -32px; + } + + th:nth-child(1){ + text-align: left; + } + + td:nth-child(2), td:nth-child(3){ + text-align:center; + } + + th:last-child, td:last-child { + text-align: right; + } + + th, + td { + padding: 20px; + } + + th{ + font-weight: bold; + } + + tbody tr{ + background: var(--primeBlue-BP-alpha40); + border-bottom: 1px dashed var(--planeBorder-BP); + } + + +#wrapper > footer { + float: right; + padding: 16px; + margin: 1rem; + display: flex; + border: 1px solid var(--white-BP); + background: var(--brightBlue-BP); +} + +#wrapper > footer *{ + margin-left: 12px; +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} + +#mainMenu{ + margin-right: 12px; + display: flex; +} + +.menuBtn{ + background: none; + border: none; + background-color: transparent; + color: var(--white-BP); + display: block; + width: 32px; + height: 32px; + background-position: center; + background-repeat: no-repeat; +} + +.menuBtn span{ + display: none; +} + +.IconOpenMenu{ + background-image: url('../components/ui/icons/open-menu-icon.svg'); +} + +/* fix icon */ +.IconCloseMenu{ + background-image: url('../components/ui/icons/close-menu-icon.svg'); +} + +#mainMenu nav{ + border: 3px solid var(--white-BP); + flex-grow: 1; + flex-basis: 200px; +} + +#mainMenu nav a{ + display: block; + padding: 12px 8px; + text-align: center; + color: var(--lightblue-BP); + border-bottom: 2px dashed var(--planeBorder-BP) ; +} + +#mainMenu nav a:hover{ + color: var(--white-BP); +} \ No newline at end of file diff --git a/src/app/images/Sketch-bg.svg b/src/app/images/Sketch-bg.svg new file mode 100644 index 0000000..8438a6a --- /dev/null +++ b/src/app/images/Sketch-bg.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/images/U-sketch.svg b/src/app/images/U-sketch.svg new file mode 100644 index 0000000..6940156 --- /dev/null +++ b/src/app/images/U-sketch.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/images/UpstartSketch.svg b/src/app/images/UpstartSketch.svg new file mode 100644 index 0000000..4951748 --- /dev/null +++ b/src/app/images/UpstartSketch.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/images/buttondecker.svg b/src/app/images/buttondecker.svg new file mode 100644 index 0000000..4e15d57 --- /dev/null +++ b/src/app/images/buttondecker.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/images/cota-sketch.svg b/src/app/images/cota-sketch.svg new file mode 100644 index 0000000..4efcadf --- /dev/null +++ b/src/app/images/cota-sketch.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 0000000..1acd4b2 --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,38 @@ +import type { Metadata } from "next"; +import { Overpass_Mono } from "next/font/google"; +import "./globals.css"; +import Header from "@/components/header"; +import Footer from "@/components/footer"; +import HeaderImage from "@/components/headerImage"; +import { ToastContainer } from "react-toastify"; +import 'react-toastify/dist/ReactToastify.css'; +import SideNav from "@/components/side-nav/side-nav"; + +const overpass_mono = Overpass_Mono({ subsets: ["latin"] }); + +export const metadata: Metadata = { + title: "Blueprint Sample", + description: "Blueprint Sample Application", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + +
    +
    +
    + {children} + +
    +
    +
    + + + ); +} diff --git a/src/app/login-styles.module.css b/src/app/login-styles.module.css new file mode 100644 index 0000000..9a8a3c2 --- /dev/null +++ b/src/app/login-styles.module.css @@ -0,0 +1,151 @@ +/* html { + box-sizing: border-box; + } + *, *:before, *:after { + box-sizing: inherit; + } +body{ + font-family: 'Rubik', sans-serif; + font-family: 'Titillium Web', sans-serif; + font-size: 15px; +} */ +.w-100{ + width: 100%; +} +.h-100{ + height: 100%; +} +.d-flex { + display: flex!important; +} +.p25{ + padding-top: 25px; + padding-bottom: 25px; +} +.align-items-end { + align-items: flex-end!important; +} +/* label { + display: inline-block; +} */ +.form-label { + margin-bottom: 0.5rem; +} +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + height: 50px; + max-height: 50px; + font-weight: 400; + line-height: 1.5; + color: #000000; + background: #FFF; + background-color:#FFF; + border: 1px solid #FFF; + border-radius: 15px; + transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; +} +.form-group{ +text-align: left; +margin-top: 10px; +} +.btnLoginMicrosoft { + margin-top: 5px; + font-size: 14px; + color: gray; + width: 100%; + border: 2px solid #0b335b; + border-radius: 4px; + padding: 8px 12px; + display: flex; + align-items: center; + justify-content: center; + background: white; + cursor: pointer; +} +.btn{ + background-color: #0b335b; /* Green */ + border: none; + color: white; + padding: 15px 32px; + text-align: center; + text-decoration: none; + display: inline-block; + margin-top: 15px; + border-radius: 15px; + width: 100%; + cursor:pointer +} +.btn-ouline{ + background-color: #FFF !important; + border: 2px solid #0b335b !important; + color: #000000 !important; +} +.split { + height: 100%; + width: 50%; + position: fixed; + z-index: 1; + top: 0; + } + + .left { + left: 0; + background-color: #f7f7fc; + } + + .right { + right: 0; + /* background-image: url(../../../assets/img/heathCarrouselbg.png); */ + background-position: center center; + background-size:cover ; + background-repeat: no-repeat; + } + + .centered { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + text-align: center; + } + + .logo { + width: 200px; + margin-bottom: 25px; + } + .login-form{ + width: 400px; + } + .text-login-image{ + position: absolute; + top: 70%; + left: 5%; + } + .text-login-image h2{ + color: #000; + font-size: 40px; + font-weight: 700; + line-height: 24px; + letter-spacing: 0.75px; + } + .text-login-form h2{ + font-size: 35px ; + } + +.login-container{ + width: auto; + min-width: 50%; + margin: auto; + border-width: 3px !important; + border-style: dashed !important; + border-left: none; + padding: 30px; +} + +.login-container-inner{ + display: flex; + gap: 1rem; + flex-direction: column; +} diff --git a/src/app/main/page.tsx b/src/app/main/page.tsx new file mode 100644 index 0000000..ca76087 --- /dev/null +++ b/src/app/main/page.tsx @@ -0,0 +1,5 @@ +import Link from "next/link"; + +export default function Main() { + return <>; +} diff --git a/src/app/module/[id]/page.tsx b/src/app/module/[id]/page.tsx new file mode 100644 index 0000000..e81b590 --- /dev/null +++ b/src/app/module/[id]/page.tsx @@ -0,0 +1,269 @@ +"use client"; + +import { createModule, updateModule, useModuleItem } from "@/hooks/module"; +import { Module } from "@/lib/interfaces"; +import { usePathname, useRouter } from "next/navigation"; +import Link from "next/link"; +import { useState } from "react"; +import { Applications, Status } from "@/lib/Enums"; + +export default function ModuleDetails() { + const [item, setItem] = useState(); + const pathName = usePathname(); + const router = useRouter(); + let isUpdateMode = false; + + const formatDate = (date: Date) => + new Intl.DateTimeFormat("en-US").format(date); + + const StatusDropDown = (data: any) => { + return ( + + ); + }; + + const ApplicationsDropDown = (data: any) => { + return ( + + ); + }; + + const handleSaveClick = () => { + let id = (document.getElementById("id") as HTMLInputElement)?.value; + let name = (document.getElementById("name") as HTMLInputElement)?.value; + let description = ( + document.getElementById("description") as HTMLInputElement + )?.value; + let icon = (document.getElementById("icon") as HTMLInputElement)?.value; + let route = (document.getElementById("route") as HTMLInputElement)?.value; + let orderText = (document.getElementById("order") as HTMLInputElement) + ?.value; + let order = parseInt(orderText, 10) ? parseInt(orderText, 10) : 0; + let application = ( + document.getElementById("application") as HTMLSelectElement + )?.value; + let status = (document.getElementById("status") as HTMLSelectElement) + ?.value; + + let updatedModule = { + id, + name, + description, + icon, + route, + order, + application, + status, + } as unknown as Module; + if (isUpdateMode) { + updateModule(updatedModule); + } else { + updatedModule.id = null; + createModule(updatedModule); + } + setItem(updatedModule); + router.push("/module"); + }; + + const renderForm = (module: Module) => { + return ( + <> +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + + ); + }; + + const ItemData = () => { + const id = pathName.split("/"); + const idValue = id[id.length - 1]; + isUpdateMode = idValue != "create"; + if (isUpdateMode) { + const { item, isLoading, error } = useModuleItem(idValue); + if (!isLoading && !error && item) { + return renderForm(item); + } else return <>Loading; + } else { + return renderForm({ + id: "", + name: "", + description: "", + route: "", + order: null, + icon: "", + application: Applications.BluePrint, + status: Status.Active, + createdAt: new Date(), + createdBy: "", + updatedAt: new Date(), + updatedBy: "", + }); + } + }; + + return ( +
    + ); +} diff --git a/src/app/module/page.tsx b/src/app/module/page.tsx new file mode 100644 index 0000000..f343c99 --- /dev/null +++ b/src/app/module/page.tsx @@ -0,0 +1,102 @@ +"use client"; + +import { useModuleItems, ChangeModuleStatus } from "@/hooks/module"; +import { Suspense } from "react"; +import Image from "next/image"; +import Link from "next/link"; +import Loader from "../../components/ui/loader.svg"; +import { ChangeStatusRequest } from "@/lib/interfaces"; +import { Status } from "@/lib/Enums"; + +export default function Module() { + const formatDate = (date: Date) => + Intl.DateTimeFormat("en-US").format(new Date(date)); + let refreshData: any; + + const DeleteButton = (itemId: any) => { + return ( + + ); + }; + + const ItemsData = () => { + const { items, error, isLoading, mutate } = useModuleItems(); + refreshData = mutate; + if (!isLoading && !error && items != null) { + return items.map((item) => ( + + + {item.name} + + {item.description} + {item.route} + {item.application} + {item.order} + {item.status} + +
    + + Edit + + +
    + + + )); + } else return Loading(); + }; + + const Loading = () => ( + + + Loading + Loading + + + ); + return ( +
    +
    + + + + + + + + + + + + + + + + + + + + +
    + + Add new + +
    NameDescriptionRouteApplicationOrderStatusActions
    +
    + {process.env.PUBLIC_CERBEROS_API_URL} +
    + ); +} diff --git a/src/app/onboarding/page.tsx b/src/app/onboarding/page.tsx new file mode 100644 index 0000000..8851850 --- /dev/null +++ b/src/app/onboarding/page.tsx @@ -0,0 +1,20 @@ +import Link from "next/link"; + +export default function Onboarding() { + return ( + <> + + Go to User CRUD Page + + + Go to Role CRUD Page + + + Go to Permission Page + + + Go to Module Page + + + ); +} diff --git a/src/app/page.tsx b/src/app/page.tsx new file mode 100644 index 0000000..28174b8 --- /dev/null +++ b/src/app/page.tsx @@ -0,0 +1,167 @@ +"use client"; + +import { useEffect, useState } from "react"; +import styles from "./login-styles.module.css"; +import msalInstance from "../lib/msalInstance"; +import { useRouter } from "next/navigation"; +import { setCookie } from "@/lib/AuthCookie"; +import { AccountInfo } from "@azure/msal-browser"; +import { toast } from "react-toastify"; +import jwt from "jsonwebtoken"; +import { UserClaims } from "@/lib/interfaces"; +import { Applications } from "@/lib/Enums"; +import useUserFromCookie from "@/lib/useUser"; +import { validateExistance } from "@/hooks/user"; +import { getAccessToken } from "@/services/cerberos-services"; + +interface GroupsMe { + id: number; + nameGroup: string; + uidGroup: string; +} + +export default function Login() { + const [loggedIn, setLoggedIn] = useState(false); + const [email, setEmail] = useState(""); + const groups: GroupsMe[] = []; + const route = useRouter(); + const { userData, setUser } = useUserFromCookie({ redirectTo: "/" }); + const appId = Applications.BluePrint; + + useEffect(() => { + const checkLoginStatus = async () => { + await msalInstance.initialize(); + await msalInstance.handleRedirectPromise(); + }; + checkLoginStatus(); + }, []); + + const warningAlert = async (message: any) => { + toast.warn(message, { + position: "top-center", + }); + }; + + const handleLogin = async () => { + const response = validateExistance(email); + if (response && (await response).existence) { + handleMicrosoftLogin(email); + } else { + warningAlert("User not found or invalid user account"); + } + }; + + const handleMicrosoftLogin = async (email: any) => { + try { + const loginResponse = await msalInstance.loginPopup(); + const accessToken = loginResponse.accessToken; + const accounts = msalInstance.getAllAccounts(); + + const accessTokenRequest = { + scopes: [`${process.env.NEXT_PUBLIC_ACCESS_AS_USER}`], + account: msalInstance.getAllAccounts()[0], + }; + + const callProtectedApi = async () => { + const response = await msalInstance.acquireTokenSilent( + accessTokenRequest + ); + var user = await getAccessToken(response.accessToken); + if (user) { + const decoded = jwt.decode(user.token ?? "") as UserClaims; + + if (!decoded.applications.includes(appId)) { + warningAlert("You do not have access to this application"); + } else { + setCookie("authToken", (await user).token ?? "", 1); + const userData = { + name: user.displayName, + email: user.email, + roleId: user.roleId, + roleName: user.roleId, + lastLogin: user.lastLogIn ? user.lastLogIn : null, + lastLogout: user.lastLogOut ? user.lastLogOut : null, + modules: decoded.modules.filter( + (module) => module.application === appId + ), + }; + setCookie("user", JSON.stringify(userData), 1); + setUser(userData); + route.push("/main"); + } + } + }; + callProtectedApi(); + const activeAccount: AccountInfo | null = accounts ? accounts[0] : null; + let groupsOfAD = []; + let rolsOfAD = []; + if (activeAccount) { + groupsOfAD = Object(activeAccount.idTokenClaims?.groups) ?? []; + rolsOfAD = Object(activeAccount.idTokenClaims?.roles) ?? []; + const rolesJson = JSON.stringify(rolsOfAD); + localStorage.setItem("roles", rolesJson); + } + + setLoggedIn(accounts.length > 0); + const groupsByUser = await fetch( + "https://graph.microsoft.com/v1.0/me/memberOf", + { + headers: { + Authorization: `Bearer ${accessToken}`, + }, + } + ); + if (groupsByUser.ok) { + const groupsMe = await groupsByUser.json(); + groupsOfAD.map((group: any) => { + let mapGroup = groupsMe.value.find( + (groupMe: any) => groupMe.id === group + ); + groups.push({ + id: mapGroup.id, + nameGroup: mapGroup.displayName, + uidGroup: mapGroup.id, + }); + }); + const groupsJson = JSON.stringify(groups); + localStorage.setItem("groups", groupsJson); + } else { + setIsAlertOpen(true); + } + + route.push("/main"); + } catch (error) { + setLoggedIn(false); + setIsAlertOpen(true); + } + }; + + function handleEmailChange(e: any) { + setEmail(e.target.value); + } + + const [isAlertOpen, setIsAlertOpen] = useState(false); + + return ( + <> +
    +
    +
    + + +
    +
    + +
    +
    +
    + + ); +} diff --git a/src/app/permission/[id]/page.tsx b/src/app/permission/[id]/page.tsx new file mode 100644 index 0000000..d549ad4 --- /dev/null +++ b/src/app/permission/[id]/page.tsx @@ -0,0 +1,224 @@ +"use client"; + +import { + createPermission, + updatePermission, + usePermissionItem, +} from "@/hooks/permission"; +import { Permission } from "@/lib/interfaces"; +import { usePathname, useRouter } from "next/navigation"; +import Link from "next/link"; +import { useState } from "react"; +import { Status } from "@/lib/Enums"; +import { AccessLevel } from "@/lib/Enums"; + +export default function PermissionDetails() { + const [item, setItem] = useState(); + const pathName = usePathname(); + const router = useRouter(); + let isUpdateMode = false; + + const formatDate = (date: Date) => + new Intl.DateTimeFormat("en-US").format(date); + + const StatusDropDown = (data: any) => { + return ( + + ); + }; + + const AccessLevelDropDown = (data: any) => { + return ( + + ); + }; + + const handleSaveClick = () => { + let id = (document.getElementById("id") as HTMLInputElement)?.value; + let name = (document.getElementById("name") as HTMLInputElement)?.value; + let description = ( + document.getElementById("description") as HTMLInputElement + )?.value; + let accessLevel = ( + document.getElementById("accessLevel") as HTMLSelectElement + )?.value; + let status = (document.getElementById("status") as HTMLSelectElement) + ?.value; + + let updatedPermission = { + id, + name, + description, + accessLevel, + status, + } as unknown as Permission; + if (isUpdateMode) { + updatePermission(updatedPermission); + } else { + updatedPermission.id = null; + createPermission(updatedPermission); + } + setItem(updatedPermission); + router.push("/permission"); + }; + + const renderForm = (permission: Permission) => { + return ( + <> +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + + ); + }; + + const ItemData = () => { + const id = pathName.split("/"); + const idValue = id[id.length - 1]; + isUpdateMode = idValue != "create"; + if (isUpdateMode) { + const { item, isLoading, error } = usePermissionItem(idValue); + if (!isLoading && !error && item) { + return renderForm(item); + } else return <>Loading; + } else { + return renderForm({ + id: "", + name: "", + description: "", + accessLevel: "", + status: Status.Active, + createdAt: new Date(), + createdBy: "", + updatedAt: new Date(), + updatedBy: "", + }); + } + }; + + return ( +
    +
    + +
    + + Save + + + Cancel + +
    +
    +
    + ); +} diff --git a/src/app/permission/page.tsx b/src/app/permission/page.tsx new file mode 100644 index 0000000..776eca4 --- /dev/null +++ b/src/app/permission/page.tsx @@ -0,0 +1,99 @@ +"use client"; + +import { usePermissionItems, ChangePermissionStatus } from "@/hooks/permission"; +import { Suspense } from "react"; +import Image from "next/image"; +import Link from "next/link"; +import Loader from "../../components/ui/loader.svg"; +import { ChangeStatusRequest } from "@/lib/interfaces"; +import { Status } from "@/lib/Enums"; +import { stat } from "fs"; + +export default function Permission() { + const formatDate = (date: Date) => + Intl.DateTimeFormat("en-US").format(new Date(date)); + let refreshData: any; + + const DeleteButton = (itemId: any) => { + return ( + + ); + }; + + const ItemsData = () => { + const { items, error, isLoading, mutate } = usePermissionItems(); + refreshData = mutate; + if (!isLoading && !error && items != null) { + return items.map((item) => ( + + + {item.name} + + {item.description} + {item.accessLevel} + {item.status} + +
    + + Edit + + +
    + + + )); + } else return Loading(); + }; + + const Loading = () => ( + + + Loading + Loading + + + ); + return ( +
    +
    + + + + + + + + + + + + + + + + + + +
    + + Add new + +
    NameDescriptionAccessLevelStatusActions
    +
    + {process.env.PUBLIC_CERBEROS_API_URL} +
    + ); +} diff --git a/src/app/role/[id]/page.tsx b/src/app/role/[id]/page.tsx new file mode 100644 index 0000000..4cf0363 --- /dev/null +++ b/src/app/role/[id]/page.tsx @@ -0,0 +1,385 @@ +"use client"; + +import { createRole, updateRole, useRoleItem } from "@/hooks/role"; +import { Module, Permission, Role } from "@/lib/interfaces"; +import { usePathname, useRouter } from "next/navigation"; +import Link from "next/link"; +import { useEffect, useState } from "react"; +import { Status } from "@/lib/Enums"; +import { Applications } from "@/lib/Enums"; +import { usePermissionItems } from "@/hooks/permission"; +import { useModuleItems } from "@/hooks/module"; + +export default function RoleDetails() { + const [item, setItem] = useState(); + const pathName = usePathname(); + const router = useRouter(); + let isUpdateMode = false; + let selectedApplications: string[]; + const [permissions, setPermissions] = useState([]); + const [modules, setModules] = useState([]); + let initialPermissions: string[]; + let initialApplications: string[]; + let initialModules: string[]; + + const setSelectedValuesGlobal = (values: string[]) => { + selectedApplications = values; + }; + + let selectedPermissions: string[]; + const setSelectedPermissionsGlobal = (values: string[]) => { + selectedPermissions = values; + }; + + let selectedModules: string[]; + const setSelectedModulesGlobal = (values: string[]) => { + selectedModules = values; + }; + + const formatDate = (date: Date) => + new Intl.DateTimeFormat("en-US").format(date); + + const StatusDropDown = (data: any) => { + return ( + + ); + }; + + const ApplicationsDropDown = ({ + selectedApplications, + }: { + selectedApplications: string[]; + }) => { + const [localSelectedValues, setLocalSelectedValues] = + useState(selectedApplications); + + const handleSelection = (event: React.ChangeEvent) => { + const selectedOptions = Array.from(event.target.selectedOptions); + const values = selectedOptions.map((option) => option.value); + setLocalSelectedValues(values); + setSelectedValuesGlobal(values); + }; + + return ( + + ); + }; + + const PermissionsDropDown = ({ + selectedPermissions, + }: { + selectedPermissions: string[]; + }) => { + const [localSelectedValues, setLocalSelectedValues] = + useState(selectedPermissions); + + useEffect(() => { + setLocalSelectedValues(selectedPermissions); + }, [selectedPermissions]); + + const handleSelection = (event: React.ChangeEvent) => { + const selectedOptions = Array.from(event.target.selectedOptions); + const values = selectedOptions.map((option) => option.value); + setLocalSelectedValues(values); + setSelectedPermissionsGlobal(values); + }; + + if (!selectedPermissions) setSelectedPermissionsGlobal(selectedPermissions); + + return ( + + ); + }; + + const ModulesDropDown = ({ + selectedModules, + }: { + selectedModules: string[]; + }) => { + const [localSelectedValues, setLocalSelectedValues] = + useState(selectedModules); + + useEffect(() => { + setLocalSelectedValues(selectedModules); + }, [selectedModules]); + + const handleSelection = (event: React.ChangeEvent) => { + const selectedOptions = Array.from(event.target.selectedOptions); + const values = selectedOptions.map((option) => option.value); + setLocalSelectedValues(values); + setSelectedModulesGlobal(values); + }; + + if (!selectedModules) setSelectedModulesGlobal(selectedModules); + + return ( + + ); + }; + + const handleSaveClick = () => { + let id = (document.getElementById("id") as HTMLInputElement)?.value; + let name = (document.getElementById("name") as HTMLInputElement)?.value; + let description = ( + document.getElementById("description") as HTMLInputElement + )?.value; + let applications = selectedApplications + ? selectedApplications + : initialApplications; + let permissions = selectedPermissions + ? selectedPermissions + : initialPermissions; + let modules = selectedModules ? selectedModules : initialModules; + let status = (document.getElementById("status") as HTMLSelectElement) + ?.value; + + let updatedRole = { + id, + name, + description, + applications, + permissions, + modules, + status, + } as unknown as Role; + if (isUpdateMode) { + updateRole(updatedRole); + } else { + updatedRole.id = null; + createRole(updatedRole); + } + setItem(updatedRole); + router.push("/role"); + }; + + const renderForm = (role: Role) => { + return ( + <> +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + + ); + }; + + const ItemData = () => { + const id = pathName.split("/"); + const idValue = id[id.length - 1]; + isUpdateMode = idValue != "create"; + if (isUpdateMode) { + const { item, isLoading, error } = useRoleItem(idValue); + const { + items: permissionItems, + error: permissionError, + isLoading: isPermissionLoading, + mutate: mutatePermission, + } = usePermissionItems(); + const { + items: moduleItems, + error: moduleError, + isLoading: isModuleLoading, + mutate: mutateModule, + } = useModuleItems(); + initialApplications = item.applications; + initialPermissions = item.permissions; + initialModules = item.modules; + useEffect(() => { + if (permissionItems && permissionItems.length > 0) { + setPermissions(permissionItems); // Solo actualiza si hay cambios + } + }, [permissionItems]); // Solo se ejecuta si permissionItems cambia + + useEffect(() => { + if (moduleItems && moduleItems.length > 0) { + setModules(moduleItems); // Solo actualiza si hay cambios + } + }, [moduleItems]); + + if (!isLoading && !error && item) { + return renderForm(item); + } else return <>Loading; + } else { + return renderForm({ + id: "", + name: "", + description: "", + applications: [], + permissions: [], + modules: [], + status: Status.Active, + createdAt: new Date(), + createdBy: "", + updatedAt: new Date(), + updatedBy: "", + }); + } + }; + + return ( +
    +
    + +
    + + Save + + + Cancel + +
    +
    +
    + ); +} diff --git a/src/app/role/page.tsx b/src/app/role/page.tsx new file mode 100644 index 0000000..451d225 --- /dev/null +++ b/src/app/role/page.tsx @@ -0,0 +1,140 @@ +"use client"; + +import { useRoleItems, ChangeRoleStatus } from "@/hooks/role"; +import { usePermissionItems } from "@/hooks/permission"; +import { Suspense } from "react"; +import Image from "next/image"; +import Link from "next/link"; +import Loader from "../../components/ui/loader.svg"; +import { ChangeStatusRequest } from "@/lib/interfaces"; +import { Status } from "@/lib/Enums"; +import { stat } from "fs"; + +export default function Role() { + const formatDate = (date: Date) => + Intl.DateTimeFormat("en-US").format(new Date(date)); + let refreshData: any; + + const DeleteButton = (itemId: any) => { + return ( + + ); + }; + + const ItemsData = () => { + const { items, error, isLoading, mutate } = useRoleItems(); + const { + items: permissionItems, + error: permissionError, + isLoading: isPermissionLoading, + mutate: mutatePermission, + } = usePermissionItems(); + + const permissionMap = permissionItems?.reduce((acc, perm) => { + if (perm.id) { + acc[perm.id] = { name: perm.name, accessLevel: perm.accessLevel }; + } + return acc; + }, {} as Record); + + refreshData = mutate; + if (!isLoading && !error && items != null) { + return items.map((item) => ( + + + {item.name} + + {item.description} + + {item.applications?.map((permId, index) => { + const permission = permissionMap[permId]; + return ( + + {permission + ? `${permission.name} (${permission.accessLevel})` + : permId}{" "} + {index < item.applications.length - 1 &&
    } +
    + ); + })} + + + {item.permissions?.map((permId, index) => { + const application = permissionMap[permId]; + return ( + + {application + ? `${application.name} (${application.accessLevel})` + : permId}{" "} + {index < item.permissions.length - 1 &&
    } +
    + ); + })} + + {item.status} + +
    + + Edit + + +
    + + + )); + } else return Loading(); + }; + + const Loading = () => ( + + + Loading + Loading + + + ); + return ( +
    +
    + + + + + + + + + + + + + + + + + + + +
    + + Add new + +
    NameDescriptionApplicationsPermissionsStatusActions
    +
    + {process.env.PUBLIC_CERBEROS_API_URL} +
    + ); +} diff --git a/src/app/sample/[id]/page.tsx b/src/app/sample/[id]/page.tsx new file mode 100644 index 0000000..954c1de --- /dev/null +++ b/src/app/sample/[id]/page.tsx @@ -0,0 +1,164 @@ +"use client"; + +import { + createSampleItem, + updateSampleItem, + useSampleItem, +} from "@/hooks/use-sample-items"; +import { SampleItem } from "@/lib/interfaces"; +import { usePathname, useRouter } from "next/navigation"; +import Link from "next/link"; +import { useState } from "react"; +import { UUID } from "crypto"; + +export default function SampleItemDetails() { + const [item, setItem] = useState(); + const pathName = usePathname(); + const router = useRouter(); + let isUpdateMode = false; + + const formatDate = (date: Date) => + new Intl.DateTimeFormat("en-US").format(date); + + const StatusDropDown = (data: any) => { + return ( + + ); + }; + + const handleSaveClick = () => { + let id = (document.getElementById("itemId") as HTMLInputElement) + ?.value as UUID; + let testName = (document.getElementById("itemName") as HTMLInputElement) + ?.value; + let statusCode = (document.getElementById("status") as HTMLSelectElement) + ?.value; + let numValue = (document.getElementById("numValue") as HTMLInputElement) + ?.value; + let createdAt = item?.createdAt ?? new Date(); + let updatedItem = { + id, + testName, + statusCode, + numValue, + createdAt, + } as unknown as SampleItem; + if (isUpdateMode) { + updateSampleItem(updatedItem); + } else { + updatedItem.id = null + createSampleItem(updatedItem); + } + setItem(updatedItem); + router.push("/sample"); + }; + + const renderForm = (item: SampleItem) => { + return ( + <> +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + + ); + }; + + const ItemData = () => { + const id = pathName.split("/"); + const idValue = id[id.length - 1]; + isUpdateMode = idValue != "create"; + if (isUpdateMode) { + const { item, isLoading, error } = useSampleItem(idValue as UUID); + if (!isLoading && !error && item) { + return renderForm(item); + } else return <>Loading; + } else { + return renderForm({ + id: "0000-0000-0000-0000-0000", + testName: "", + statusCode: "P", + createdAt: new Date(), + numValue: 0, + }); + } + }; + + return ( + +
    +
    + +
    + + Save + + + Cancel + +
    +
    +
    + + ); +} diff --git a/src/app/sample/page.tsx b/src/app/sample/page.tsx new file mode 100644 index 0000000..80e9ea1 --- /dev/null +++ b/src/app/sample/page.tsx @@ -0,0 +1,89 @@ +"use client"; + +import { deleteSampleItem, useSampleItems } from "@/hooks/use-sample-items"; +import { Suspense } from "react"; +import Image from 'next/image'; +import Link from "next/link"; +import Loader from '../../components/ui/loader.svg'; + +export default function Sample() { + const formatDate = (date: Date) => + Intl.DateTimeFormat("en-US").format(new Date(date)); + let refreshData: any; + + const DeleteButton = (itemId: any) => { + return ( + + ); + }; + + const ItemsData = () => { + const { items, error, isLoading, mutate } = useSampleItems(); + refreshData = mutate; + if (!isLoading && !error && items != null) { + return items.map((item) => ( + + + {item.testName} + + {item.statusCode} + {item.numValue} + {formatDate(item.createdAt)} + +
    + + Edit + + +
    + + + )); + } else return Loading(); + }; + + const Loading = () => ( + + LoadingLoading + + ); + return ( + +
    +
    + + + + + + + + + + + + + + + + + + +
    + + Add new + +
    NameStatusValueCreated AtActions
    +
    + {process.env.PUBLIC_API_URL} +
    + + + ); +} diff --git a/src/app/user/[id]/page.tsx b/src/app/user/[id]/page.tsx new file mode 100644 index 0000000..90915ba --- /dev/null +++ b/src/app/user/[id]/page.tsx @@ -0,0 +1,331 @@ +"use client"; + +import { createUser, updateUser, useUserItem } from "@/hooks/user"; +import { User } from "@/lib/interfaces"; +import { usePathname, useRouter } from "next/navigation"; +import Link from "next/link"; +import { useState } from "react"; +import { Status } from "@/lib/Enums"; + +export default function UserDetails() { + const [item, setItem] = useState(); + const pathName = usePathname(); + const router = useRouter(); + let isUpdateMode = false; + + const formatDate = (date: Date) => + new Intl.DateTimeFormat("en-US").format(date); + + function formatDateTime(date: Date) { + return new Intl.DateTimeFormat("en-US", { + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + hour12: false, + }).format(date); + } + + const StatusDropDown = (data: any) => { + return ( + + ); + }; + + const handleSaveClick = () => { + let id = (document.getElementById("id") as HTMLInputElement)?.value; + let email = (document.getElementById("email") as HTMLInputElement)?.value; + let name = (document.getElementById("name") as HTMLInputElement)?.value; + let middleName = (document.getElementById("middleName") as HTMLInputElement) + ?.value; + let lastName = (document.getElementById("lastName") as HTMLSelectElement) + ?.value; + let roleId = (document.getElementById("roleId") as HTMLSelectElement) + ?.value; + let comp = (document.getElementById("companies") as HTMLSelectElement) + ?.value; + let proj = (document.getElementById("projects") as HTMLSelectElement) + ?.value; + let status = (document.getElementById("status") as HTMLSelectElement) + ?.value; + let companies: string[] = comp ? comp.split(",") : []; + let projects: string[] = proj ? proj.split(",") : []; + + let updatedUser = { + id, + email, + name, + middleName, + lastName, + roleId, + companies, + projects, + status, + } as unknown as User; + if (isUpdateMode) { + updateUser(updatedUser); + } else { + updatedUser.id = null; + createUser(updatedUser); + } + setItem(updatedUser); + router.push("/user"); + }; + + const renderForm = (user: User) => { + return ( + <> +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + + ); + }; + + const ItemData = () => { + const id = pathName.split("/"); + const idValue = id[id.length - 1]; + isUpdateMode = idValue != "create"; + if (isUpdateMode) { + const { item, isLoading, error } = useUserItem(idValue); + if (!isLoading && !error && item) { + return renderForm(item); + } else return <>Loading; + } else { + return renderForm({ + id: "", + guid: "", + email: "", + name: "", + middleName: "", + lastName: "", + displayName: "", + roleId: "", + companies: [], + projects: [], + status: Status.Active, + createdAt: new Date(), + createdBy: "", + updatedAt: new Date(), + updatedBy: "", + lastLogIn: new Date(), + lastLogOut: new Date(), + token: "", + }); + } + }; + + return ( +
    +
    + +
    + + Save + + + Cancel + +
    +
    +
    + ); +} diff --git a/src/app/user/page.tsx b/src/app/user/page.tsx new file mode 100644 index 0000000..2fde2af --- /dev/null +++ b/src/app/user/page.tsx @@ -0,0 +1,109 @@ +"use client"; + +import { useUserItems, ChangeUserStatus } from "@/hooks/user"; +import { Suspense } from "react"; +import Image from "next/image"; +import Link from "next/link"; +import Loader from "../../components/ui/loader.svg"; +import { ChangeStatusRequest, Role } from "@/lib/interfaces"; +import { Status } from "@/lib/Enums"; +import { useRoleItems } from "@/hooks/role"; + +export default function User() { + let refreshData: any; + + const DeleteButton = (itemId: any) => { + return ( + + ); + }; + + const ItemsData = () => { + const { items, error, isLoading, mutate } = useUserItems(); + const { + items: roleItems, + error: roleError, + isLoading: isRoleLoading, + mutate: mutateRole, + } = useRoleItems(); + const roleLookup = roleItems?.reduce((acc: any, role: Role) => { + if (role && role.id != null && role.name) { + acc[role.id] = role.name; + } + return acc; + }, {}); + refreshData = mutate; + if (!isLoading && !error && items != null) { + return items.map((item) => ( + + + {item.displayName} + + {item.email} + {roleLookup[item.roleId] || [item.roleId]}{" "} + {item.status} + +
    + + Edit + + +
    + + + )); + } else return Loading(); + }; + + const Loading = () => ( + + + Loading + Loading + + + ); + return ( +
    +
    + + + + + + + + + + + + + + + + + + +
    + + Add new + +
    NameEmailRoleStatusActions
    +
    + {process.env.PUBLIC_CERBEROS_API_URL} +
    + ); +} diff --git a/src/components/footer/index.tsx b/src/components/footer/index.tsx new file mode 100644 index 0000000..d50ae97 --- /dev/null +++ b/src/components/footer/index.tsx @@ -0,0 +1,17 @@ +'use client' +import Image from 'next/image' +import UpstartLogo from '../ui/upstartLogo.svg' + +const Footer = () => { + + return ( +
    + + Blueprint is a proud product of + + Upstart13 Brand +
    + ) +} + +export default Footer \ No newline at end of file diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx new file mode 100644 index 0000000..3e56000 --- /dev/null +++ b/src/components/header/index.tsx @@ -0,0 +1,128 @@ +'use client' +import { usePathname, useRouter } from "next/navigation"; +import Link from "next/link"; +import Image from "next/image"; +import ProfileAvatar from "@images/avatar.svg"; +import { BellIcon, ChevronDownIcon, RefreshIcon } from "../ui/icons"; +import { + Menu, + MenuButton, + MenuItem, + MenuItems, + Transition, +} from "@headlessui/react"; +import { Fragment } from "react"; +import msalInstance from "@/lib/msalInstance"; +import { deleteAllCookies } from "@/lib/AuthCookie"; +import { logoutUser } from "@/hooks/user"; +import useUserFromCookie from "@/lib/useUser"; + +const Header = () => { + const pathName = usePathname(); + + const { userData, setUser } = useUserFromCookie({ + redirectTo: "/", + }); + + const userNavigation = [ + { name: "Your profile", href: "#" }, + { name: "Sign out", href: "#" }, + ]; + + function classNames(...classes: any[]) { + return classes.filter(Boolean).join(" "); + } + + const logout = async () => { + logoutUser(userData?.email ?? ""); + deleteAllCookies(); + setUser(null); + msalInstance.logoutPopup(); + }; + + return ( +
    +
    +
    +

    + <blue("print")> +

    + +

    + {pathName?.split("/")[1]} +

    +
    + {userData ? ( +
    +
    + +
    +
    + +
    + profile Avatar + + + + Open user menu + + {userData?.name} +

    + {userData?.email} +
    +
    +
    + + + {userNavigation.map((item) => ( + + {({ active }) => ( + { + e.preventDefault(); + if (item.name === "Sign out") { + logout(); + } + }} + className={classNames( + active ? "bg-gray-50" : "", + "block px-3 py-1 text-sm leading-6 text-gray-900" + )} + > + {item.name} + + )} + + ))} + + +
    +
    + ) : ( + <> + )} +
    +
    + ); +}; + +export default Header \ No newline at end of file diff --git a/src/components/headerImage/index.tsx b/src/components/headerImage/index.tsx new file mode 100644 index 0000000..9fe6ca1 --- /dev/null +++ b/src/components/headerImage/index.tsx @@ -0,0 +1,36 @@ +"use client"; + +import { useSampleImage } from "@/hooks/use-sample-images"; +import { useEffect, useState } from "react"; + +const HeaderImage = () => { + const [style, setStyle] = useState<{ + backgroundImage: string; + marginTop: number; + }>(); + useEffect(() => { + const getStyleData = async () => { + var result = await useSampleImage(); + setStyle({ + backgroundImage: `url('${result.url}')`, + marginTop: -10, + }); + }; + + if (!style) { + getStyleData(); + } + }, []); + + return ( + <> +
    + +
    + + ); +}; + +export default HeaderImage; diff --git a/src/components/side-nav/side-nav.tsx b/src/components/side-nav/side-nav.tsx new file mode 100644 index 0000000..3c7ec34 --- /dev/null +++ b/src/components/side-nav/side-nav.tsx @@ -0,0 +1,57 @@ +"use client"; +import useUserFromCookie from "@/lib/useUser"; +import Link from "next/link"; +import { useState } from "react"; + +const SideNav = () => { + const { userData } = useUserFromCookie({ + redirectTo: "/", + }); + + const [openMenuBool, setOpenMenuBool] = useState(false); + + function ToggleMenu() { + setOpenMenuBool((prev) => !prev); + } + + return ( + + ); +}; + +export default SideNav; diff --git a/src/components/ui/forms/input.tsx b/src/components/ui/forms/input.tsx new file mode 100644 index 0000000..9dfacde --- /dev/null +++ b/src/components/ui/forms/input.tsx @@ -0,0 +1,41 @@ +import React from 'react'; + +interface InputProps { + label: string; + inputStyle: 'normal' | 'Floating filled'; + value?: string; + icon?: JSX.Element; +} + +const Input = ({ label, inputStyle, value, icon }: InputProps) => { + return ( +
    + {inputStyle === 'normal' ? ( +
    + + {icon &&
    {icon}
    } +
    + ) : ( +
    + + + {icon &&
    {icon}
    } +
    + )} +
    + ); +}; + +export default Input; diff --git a/src/components/ui/icons/bell-icon.tsx b/src/components/ui/icons/bell-icon.tsx new file mode 100644 index 0000000..79c784f --- /dev/null +++ b/src/components/ui/icons/bell-icon.tsx @@ -0,0 +1,27 @@ +import React, { SVGProps } from 'react' + +function BellIcon({ ...props }: SVGProps) { + return ( + + + + + + + + + + + + + + + + + ) +} + +export default BellIcon \ No newline at end of file diff --git a/src/components/ui/icons/chevron-down-icon.tsx b/src/components/ui/icons/chevron-down-icon.tsx new file mode 100644 index 0000000..da4850c --- /dev/null +++ b/src/components/ui/icons/chevron-down-icon.tsx @@ -0,0 +1,13 @@ +import { SVGProps } from 'react' + +function ChevronDownIcon({ ...props }: SVGProps) { + return ( + + + + + + ) +} + +export default ChevronDownIcon diff --git a/src/components/ui/icons/close-menu-icon.svg b/src/components/ui/icons/close-menu-icon.svg new file mode 100644 index 0000000..eed86cb --- /dev/null +++ b/src/components/ui/icons/close-menu-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/ui/icons/dashboard-icon.tsx b/src/components/ui/icons/dashboard-icon.tsx new file mode 100644 index 0000000..20a581a --- /dev/null +++ b/src/components/ui/icons/dashboard-icon.tsx @@ -0,0 +1,13 @@ +import { SVGProps } from 'react' + +function DashboardIcon({ ...props }: SVGProps) { + return ( + + + + + + ) +} + +export default DashboardIcon diff --git a/src/components/ui/icons/index.tsx b/src/components/ui/icons/index.tsx new file mode 100644 index 0000000..c3bd41d --- /dev/null +++ b/src/components/ui/icons/index.tsx @@ -0,0 +1,11 @@ +import DashboardIcon from "./dashboard-icon"; +import BellIcon from "./bell-icon"; +import ChevronDownIcon from "./chevron-down-icon"; +import RefreshIcon from "./refresh-icon"; + +export { + DashboardIcon, + BellIcon, + ChevronDownIcon, + RefreshIcon +} \ No newline at end of file diff --git a/src/components/ui/icons/open-menu-icon.svg b/src/components/ui/icons/open-menu-icon.svg new file mode 100644 index 0000000..b72b831 --- /dev/null +++ b/src/components/ui/icons/open-menu-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/ui/icons/refresh-icon.tsx b/src/components/ui/icons/refresh-icon.tsx new file mode 100644 index 0000000..360b233 --- /dev/null +++ b/src/components/ui/icons/refresh-icon.tsx @@ -0,0 +1,20 @@ +import React, { SVGProps } from 'react' + +function RefreshIcon({ ...props }: SVGProps) { + return ( + + + + + ) +} + +export default RefreshIcon \ No newline at end of file diff --git a/src/components/ui/layout/app-layout.tsx b/src/components/ui/layout/app-layout.tsx new file mode 100644 index 0000000..385bc12 --- /dev/null +++ b/src/components/ui/layout/app-layout.tsx @@ -0,0 +1,95 @@ +'use client' +import { Fragment, useState } from 'react' +import { Dialog, DialogPanel, Transition, TransitionChild } from '@headlessui/react' +import { Bars3Icon, XMarkIcon } from '@heroicons/react/24/outline' +import Header from '@/components/header' +import SideMenu from "@/components/side-nav/side-nav"; +import SideNav from "./side-nav"; + +export default function AppLayout() { + const [sidebarOpen, setSidebarOpen] = useState(false); + return ( + <> + {/* Mobile Navigation */} + + + +
    + + +
    + + + +
    + +
    +
    +
    + setSidebarOpen((prev) => !prev)} + /> +
    +
    +
    +
    +
    +
    + + {/* Desktop Navigation */} +
    + setSidebarOpen((prev) => !prev)} /> +
    + + {/* Header component */} +
    +
    + +
    + +
    +
    + + ); +} diff --git a/src/components/ui/layout/nav-links.tsx b/src/components/ui/layout/nav-links.tsx new file mode 100644 index 0000000..70c7398 --- /dev/null +++ b/src/components/ui/layout/nav-links.tsx @@ -0,0 +1,43 @@ +'use client' +import Link from 'next/link' +import { DashboardIcon } from '../icons' +import { usePathname } from 'next/navigation' +import { ILink } from '@/lib/interfaces' + +const links: ILink[] = [ + { + name: 'Form Sample', + href: '/formSample', + icon: , + } +] +interface NavLinksProps { + handleNavItemOnClick: () => void +} + +export default function NavLinks({ handleNavItemOnClick }: NavLinksProps) { + const pathName = usePathname() + + return ( + + ) +} diff --git a/src/components/ui/layout/side-nav.tsx b/src/components/ui/layout/side-nav.tsx new file mode 100644 index 0000000..271b834 --- /dev/null +++ b/src/components/ui/layout/side-nav.tsx @@ -0,0 +1,32 @@ +import Image from 'next/image' +import Link from 'next/link' +import heathUsLogo from '@images/heath-logo-blue.png' +import Input from '../forms/input' +import NavLinks from './nav-links' + +interface SideNavProps { + handleNavItemOnClick: () => void; +} + +const SideNav = ({ handleNavItemOnClick }: SideNavProps ) => { + return ( +
    + +
    + Heath Us Logo +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + ) +} + +export default SideNav diff --git a/src/components/ui/loader.svg b/src/components/ui/loader.svg new file mode 100644 index 0000000..34ccae0 --- /dev/null +++ b/src/components/ui/loader.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/ui/upstartLogo.svg b/src/components/ui/upstartLogo.svg new file mode 100644 index 0000000..c620c58 --- /dev/null +++ b/src/components/ui/upstartLogo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/hooks/module.tsx b/src/hooks/module.tsx new file mode 100644 index 0000000..6b901ea --- /dev/null +++ b/src/hooks/module.tsx @@ -0,0 +1,88 @@ +import { ChangeStatusRequest, Module } from "@/lib/interfaces"; +import { + PatchData, + deleteData, + getData, + postData, + putData, +} from "@/services/cerberos-api"; +import { UUID } from "crypto"; +import { useCallback } from "react"; +import useSWR from "swr"; + +const fetchData = async (url: string): Promise<{ result: Module[] }> => { + const response = await getData<{ result: Module[] }>(url); + if (!response) { + throw new Error("An error occurred while fetching the permission data"); + } + return response; +}; + +const fetchOne = async ( + url: string, + id: string +): Promise<{ result: Module }> => { + const data = { + id: id, + }; + const response = await postData<{ result: Module }>(url, data); + if (!response) { + throw new Error("An error occurred while fetching the permission data"); + } + return response; +}; + +const useModuleItems = () => { + const url = "/Module/GetAll"; + const fetcher = useCallback(() => fetchData(url), [url]); + const { data, error, mutate, isLoading } = useSWR<{ + result: Module[]; + }>(url, fetcher); + var items = !isLoading ? (data as unknown as Module[]) : ([] as Module[]); + + return { items, error, mutate, isLoading }; +}; + +const useModuleItem = (id: string) => { + const url = "/Module/GetById"; + const fetcher = useCallback(() => fetchOne(url, id), [url]); + const { data, error, mutate, isLoading } = useSWR<{ + result: Module; + }>(`${url}${id}`, fetcher); + let item = !isLoading ? (data as unknown as Module) : ({} as Module); + return { item, error, mutate, isLoading }; +}; + +const updateModule = async (request: Module): Promise => { + const url = `/Module/Update`; + const response = await putData(url, request); + return response as Module; +}; + +const createModule = async (item: Module): Promise => { + const url = `/Module/Create`; + const response = await postData(url, item); + return response as Module; +}; + +const deleteModule = async (id: UUID): Promise => { + const url = `/Module/${id}`; + await deleteData(url); +}; + +const ChangeModuleStatus = async ( + newStatus: ChangeStatusRequest +): Promise => { + const url = `/Module/ChangeStatus`; + const response = await PatchData(url, newStatus); + return response; +}; + +export { + useModuleItems, + useModuleItem, + updateModule, + createModule, + deleteModule, + ChangeModuleStatus, +}; diff --git a/src/hooks/permission.tsx b/src/hooks/permission.tsx new file mode 100644 index 0000000..fed6f83 --- /dev/null +++ b/src/hooks/permission.tsx @@ -0,0 +1,100 @@ +import { ChangeStatusRequest, Permission } from "@/lib/interfaces"; +import { + PatchData, + deleteData, + getData, + postData, + putData, +} from "@/services/cerberos-api"; +import { UUID } from "crypto"; +import { useCallback } from "react"; +import useSWR from "swr"; + +const fetchData = async (url: string): Promise<{ result: Permission[] }> => { + const response = await getData<{ result: Permission[] }>(url); + if (!response) { + throw new Error("An error occurred while fetching the permission data"); + } + return response; +}; + +const fetchOne = async ( + url: string, + id: string +): Promise<{ result: Permission }> => { + const data = { + id: id, + }; + const response = await postData<{ result: Permission }>(url, data); + if (!response) { + throw new Error("An error occurred while fetching the permission data"); + } + return response; +}; + +const usePermissionItems = () => { + const url = "/Permission/GetAll"; + const fetcher = useCallback(() => fetchData(url), [url]); + const { data, error, mutate, isLoading } = useSWR<{ + result: Permission[]; + }>(url, fetcher); + var items = !isLoading + ? (data as unknown as Permission[]) + : ([] as Permission[]); + + return { items, error, mutate, isLoading }; +}; + +const usePermissionItem = (id: string) => { + const url = "/Permission/GetById"; + const fetcher = useCallback(() => fetchOne(url, id), [url]); + const { data, error, mutate, isLoading } = useSWR<{ + result: Permission; + }>(`${url}${id}`, fetcher); + let item = !isLoading ? (data as unknown as Permission) : ({} as Permission); + return { item, error, mutate, isLoading }; +}; + +const updatePermission = async (request: Permission): Promise => { + const url = `/Permission/Update`; + const response = await putData(url, request); + return request; +}; + +const createPermission = async (item: Permission): Promise => { + const url = `/Permission/Create`; + const response = await postData(url, item); + return response as Permission; +}; + +const getPermissionByEmail = async (email: string): Promise => { + const url = `/Permission/GetByEmail`; + const request = { + email: email, + }; + const response = await postData(url, request); + return response as Permission; +}; + +const deletePermission = async (id: UUID): Promise => { + const url = `/Permission/${id}`; + await deleteData(url); +}; + +const ChangePermissionStatus = async ( + newStatus: ChangeStatusRequest +): Promise => { + const url = `/Permission/ChangeStatus`; + const response = await PatchData(url, newStatus); + return response; +}; + +export { + usePermissionItems, + usePermissionItem, + updatePermission, + createPermission, + deletePermission, + ChangePermissionStatus, + getPermissionByEmail, +}; diff --git a/src/hooks/role.tsx b/src/hooks/role.tsx new file mode 100644 index 0000000..ce244a3 --- /dev/null +++ b/src/hooks/role.tsx @@ -0,0 +1,87 @@ +import { ChangeStatusRequest, Role } from "@/lib/interfaces"; +import { + PatchData, + deleteData, + getData, + postData, + putData, +} from "@/services/cerberos-api"; +import { UUID } from "crypto"; +import { useCallback } from "react"; +import useSWR from "swr"; + +const fetchData = async (url: string): Promise<{ result: Role[] }> => { + const response = await getData<{ result: Role[] }>(url); + if (!response) { + throw new Error("An error occurred while fetching the role data"); + } + return response; +}; + +const fetchOne = async (url: string, id: string): Promise<{ result: Role }> => { + const data = { + id: id, + }; + const response = await postData<{ result: Role }>(url, data); + if (!response) { + throw new Error("An error occurred while fetching the role data"); + } + return response; +}; + +const useRoleItems = () => { + const url = "/Role/GetAll"; + const fetcher = useCallback(() => fetchData(url), [url]); + const { data, error, mutate, isLoading } = useSWR<{ result: Role[] }>( + url, + fetcher + ); + var items = !isLoading ? (data as unknown as Role[]) : ([] as Role[]); + + return { items, error, mutate, isLoading }; +}; + +const useRoleItem = (id: string) => { + const url = "/Role/GetById"; + const fetcher = useCallback(() => fetchOne(url, id), [url]); + const { data, error, mutate, isLoading } = useSWR<{ result: Role }>( + `${url}${id}`, + fetcher + ); + let item = !isLoading ? (data as unknown as Role) : ({} as Role); + return { item, error, mutate, isLoading }; +}; + +const updateRole = async (request: Role): Promise => { + const url = `/Role/Update`; + const response = await putData(url, request); + return response as Role; +}; + +const createRole = async (item: Role): Promise => { + const url = `/Role/Create`; + const response = await postData(url, item); + return response as Role; +}; + +const deleteRole = async (id: UUID): Promise => { + const url = `/Role/${id}`; + await deleteData(url); +}; + +const ChangeRoleStatus = async ( + newStatus: ChangeStatusRequest +): Promise => { + const url = `/Role/ChangeStatus`; + const response = await PatchData(url, newStatus); + return response; +}; + +export { + useRoleItems, + useRoleItem, + updateRole, + createRole, + deleteRole, + ChangeRoleStatus, +}; diff --git a/src/hooks/use-sample-images.tsx b/src/hooks/use-sample-images.tsx new file mode 100644 index 0000000..cef1413 --- /dev/null +++ b/src/hooks/use-sample-images.tsx @@ -0,0 +1,11 @@ +import { ImageUrl } from "@/lib/interfaces"; +import { deleteData, getData, postData, putData } from "@/services/api"; + +export const useSampleImage = async () => { + const url = '/blobsampleimage'; + const response = await getData(url); + if(!response) { + throw new Error("An error occured while fetching the sample image data"); + } + return response; +} \ No newline at end of file diff --git a/src/hooks/use-sample-items.tsx b/src/hooks/use-sample-items.tsx new file mode 100644 index 0000000..4fd1c02 --- /dev/null +++ b/src/hooks/use-sample-items.tsx @@ -0,0 +1,71 @@ +import { SampleItem } from "@/lib/interfaces"; +import { deleteData, getData, postData, putData } from "@/services/api"; +import { UUID } from "crypto"; +import { useCallback } from "react"; +import useSWR from "swr"; + +const fetchData = async (url: string): Promise<{ result: SampleItem[] }> => { + const response = await getData<{ result: SampleItem[] }>(url); + if (!response) { + throw new Error("An error occurred while fetching the sample items data"); + } + return response; +}; + +const fetchOne = async (url: string): Promise<{ result: SampleItem }> => { + const response = await getData<{ result: SampleItem }>(url); + if (!response) { + throw new Error("An error occurred while fetching the sample items data"); + } + return response; +}; + +const useSampleItems = () => { + const url = '/sqlSampleItems'; + const fetcher = useCallback(() => fetchData(url), [url]); + const { data, error, mutate, isLoading } = useSWR<{ result: SampleItem[] }>( + url, + fetcher + ); + var items = !isLoading + ? (data as unknown as SampleItem[]) + : ([] as SampleItem[]); + + return { items, error, mutate, isLoading }; +}; + +const useSampleItem = (id: UUID) => { + const url = `/sqlSampleItems/${id}`; + const fetcher = useCallback(() => fetchOne(url), [url]); + const { data, error, mutate, isLoading } = useSWR<{ result: SampleItem }>( + url, + fetcher + ); + let item = !isLoading ? (data as unknown as SampleItem) : ({} as SampleItem); + return { item, error, mutate, isLoading }; +}; + +const updateSampleItem = async (item: SampleItem): Promise => { + const url = `/sqlSampleItems/${item.id}`; + const response = await putData(url, item); + return item; +}; + +const createSampleItem = async (item: SampleItem): Promise => { + const url = `/sqlSampleItems`; + const response = await postData(url, item); + return response as SampleItem; +}; + +const deleteSampleItem = async (id: UUID): Promise => { + const url = `/sqlSampleItems/${id}`; + await deleteData(url); +}; + +export { + useSampleItems, + useSampleItem, + updateSampleItem, + createSampleItem, + deleteSampleItem, +}; diff --git a/src/hooks/user.tsx b/src/hooks/user.tsx new file mode 100644 index 0000000..52b7e56 --- /dev/null +++ b/src/hooks/user.tsx @@ -0,0 +1,128 @@ +import { ChangeStatusRequest, User, UserExistence } from "@/lib/interfaces"; +import { + PatchData, + deleteData, + getData, + postData, + putData, +} from "@/services/cerberos-api"; +import { AxiosRequestConfig } from "axios"; +import { UUID } from "crypto"; +import { useCallback } from "react"; +import useSWR from "swr"; + +const fetchData = async (url: string): Promise<{ result: User[] }> => { + const response = await getData<{ result: User[] }>(url); + if (!response) { + throw new Error("An error occurred while fetching the user data"); + } + return response; +}; + +const fetchOne = async (url: string, id: string): Promise<{ result: User }> => { + const data = { + id: id, + }; + const response = await postData<{ result: User }>(url, data); + if (!response) { + throw new Error("An error occurred while fetching the user data"); + } + return response; +}; + +const useUserItems = () => { + const url = "/User/GetAll"; + const fetcher = useCallback(() => fetchData(url), [url]); + const { data, error, mutate, isLoading } = useSWR<{ result: User[] }>( + url, + fetcher + ); + var items = !isLoading ? (data as unknown as User[]) : ([] as User[]); + + return { items, error, mutate, isLoading }; +}; + +const useUserItem = (id: string) => { + const url = "/User/GetById"; + const fetcher = useCallback(() => fetchOne(url, id), [url]); + const { data, error, mutate, isLoading } = useSWR<{ result: User }>( + `${url}${id}`, + fetcher + ); + let item = !isLoading ? (data as unknown as User) : ({} as User); + return { item, error, mutate, isLoading }; +}; + +const updateUser = async (request: User): Promise => { + const url = `/User/Update`; + const response = await putData(url, request); + return request; +}; + +const createUser = async (item: User): Promise => { + const url = `/User/Create`; + const response = await postData(url, item); + return response as User; +}; + +const getUserByEmail = async (email: string): Promise => { + const url = `/User/GetByEmail`; + const request = { + email: email, + }; + const response = await postData(url, request); + return response as User; +}; + +const deleteUser = async (id: UUID): Promise => { + const url = `/User/${id}`; + await deleteData(url); +}; + +const ChangeUserStatus = async ( + newStatus: ChangeStatusRequest +): Promise => { + const url = `/User/ChangeStatus`; + const response = await PatchData(url, newStatus); + return response; +}; + +const loginUser = async (email: string): Promise => { + const request = { + email: email, + }; + const url = `/User/LoginUser`; + const response = await PatchData(url, request); + return response; +}; + +const logoutUser = async (email: string): Promise => { + const request = { + email: email, + }; + const url = `/User/LogoutUser`; + const response = await PatchData(url, request); + return response; +}; + +const validateExistance = async (email: string): Promise => { + const url = `/User/ValidateExistence`; + const request = { + email: email, + }; + const response = await postData(url, request); + return response as UserExistence; +}; + +export { + useUserItems, + useUserItem, + updateUser, + createUser, + deleteUser, + ChangeUserStatus, + getUserByEmail, + loginUser, + logoutUser, + validateExistance, +}; diff --git a/src/lib/AuthCookie.ts b/src/lib/AuthCookie.ts new file mode 100644 index 0000000..fd5a22f --- /dev/null +++ b/src/lib/AuthCookie.ts @@ -0,0 +1,38 @@ +import useUserFromCookie from "./useUser"; + +export const setCookie = (name: string, value: string, days: number) => { + let expires = ""; + if (days) { + const date = new Date(); + date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); + expires = "; expires=" + date.toUTCString(); + } + const isSecure = window.location.protocol === "https:"; + document.cookie = `${name}=${value || ""}${expires}; path=/;${ + isSecure ? " Secure" : "" + }`; +}; + +export const getCookie = (name: string) => { + const nameEQ = name + "="; + const ca = document.cookie.split(";"); + for (let i = 0; i < ca.length; i++) { + let c = ca[i]; + while (c.charAt(0) === " ") c = c.substring(1, c.length); + if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length); + } + return null; +}; + +export const eraseCookie = (name: string) => { + document.cookie = name + "=; Max-Age=-99999999;"; +}; + +export const deleteAllCookies = () => { + const cookies = document.cookie.split(";"); + + for (let cookie of cookies) { + const cookieName = cookie.split("=")[0].trim(); + document.cookie = `${cookieName}=; Max-Age=-99999999; path=/;`; + } +}; diff --git a/src/lib/Enums.ts b/src/lib/Enums.ts new file mode 100644 index 0000000..25937d2 --- /dev/null +++ b/src/lib/Enums.ts @@ -0,0 +1,19 @@ +export enum Status { + Active = "Active", + Inactive = "Inactive", + Deleted = "Deleted", +} + +export enum AccessLevel { + Read = "Read", + Write = "Write", + All = "All", +} + +export enum Applications { + LSAWebPortal = "LSAWebPortal", + CustomerDashboard = "CustomerDashboard", + Discover = "Discover", + LSAMobile = "LSAMobile", + BluePrint = "BluePrint", +} diff --git a/src/lib/azureConfig.ts b/src/lib/azureConfig.ts new file mode 100644 index 0000000..c723384 --- /dev/null +++ b/src/lib/azureConfig.ts @@ -0,0 +1,7 @@ +export const config = { + appId: process.env.NEXT_PUBLIC_APP_ID ?? "", + redirectUri: process.env.NEXT_PUBLIC_REDIRECT_URI, + scopes: [`${process.env.NEXT_PUBLIC_SCOPE}`], + authority: process.env.NEXT_PUBLIC_AUTHORITY, + postLogoutRedirectUri: process.env.NEXT_PUBLIC_LOGOUT_URI, +}; \ No newline at end of file diff --git a/src/lib/interfaces.tsx b/src/lib/interfaces.tsx new file mode 100644 index 0000000..fcaf099 --- /dev/null +++ b/src/lib/interfaces.tsx @@ -0,0 +1,97 @@ +import { UUID } from "crypto" +import { Applications, Status } from "./Enums"; + +export interface ILink { + name: string; + href: string; + icon: JSX.Element; + hide?: boolean; +} + +export interface SampleItem { + id: UUID | null; + testName: string; + statusCode: "P" | "A" | "D"; + numValue: number; + createdAt: Date; +} + +export interface ImageUrl { + url: string; +} + +export interface IAudit { + createdAt: Date; + createdBy: string; + updatedAt: Date; + updatedBy: string; + status: string; +} + +export interface User extends IAudit { + id: string | null; + guid: string; + email: string; + name: string; + middleName: string; + lastName: string; + displayName: string; + roleId: string; + companies: string[]; + projects: string[]; + lastLogIn: Date | null; + lastLogOut: Date | null; + token: string | null; +} + +export interface ChangeStatusRequest { + id: string; + status: Status; +} +export interface Role extends IAudit { + id: string | null; + name: string; + description: string; + applications: string[]; + permissions: string[]; + modules: string[]; +} + +export interface Permission extends IAudit { + id: string | null; + name: string; + description: string; + accessLevel: string; +} + +export interface UserClaims { + name: string; + email: string; + role: string; + applications: string[]; + modules: Module[]; +} + +export interface UserData { + name: string; + email: string; + roleId: string; + roleName: string | null; + lastLogin: Date | null; + lastLogout: Date | null; + modules: Module[]; +} + +export interface Module extends IAudit { + id: string | null; + name: string; + description: string; + icon: string | null; + route: string; + order: number | null; + application: Applications; +} + +export interface UserExistence { + existence: boolean; +} \ No newline at end of file diff --git a/src/lib/msalInstance.ts b/src/lib/msalInstance.ts new file mode 100644 index 0000000..0a1ccc4 --- /dev/null +++ b/src/lib/msalInstance.ts @@ -0,0 +1,18 @@ +import { PublicClientApplication } from "@azure/msal-browser"; +import { config } from "./azureConfig"; + +const msalConfig = { + auth: { + clientId: config.appId, + redirectUri: config.redirectUri, + authority: config.authority, + }, + cache: { + cacheLocation: "localStorage", + storeAuthStateInCookie: true, + }, +}; + +const msalInstance = new PublicClientApplication(msalConfig); + +export default msalInstance; diff --git a/src/lib/useUser.ts b/src/lib/useUser.ts new file mode 100644 index 0000000..15d48f9 --- /dev/null +++ b/src/lib/useUser.ts @@ -0,0 +1,54 @@ +import { useState, useEffect } from "react"; +import useSWR from "swr"; +import { UserData } from "@/lib/interfaces"; +import { getCookie, setCookie } from "./AuthCookie"; + +const fetchUserFromCookie = () => { + const user = getCookie("user"); + if (!user) { + return null; + } + return user; +}; + +const useUserFromCookie = ({ redirectTo = "" } = {}) => { + const { + data: user, + mutate: mutateUser, + error, + } = useSWR("user", fetchUserFromCookie); + + const [userData, setUserData] = useState(null); + const isLoadingUser = !user && !error; + + useEffect(() => { + const timeoutId = setTimeout(() => { + if (user) { + const userData = user ? (JSON.parse(user ?? "") as UserData) : null; + setUserData(userData); + } else { + setUserData(null); + if (window.location.pathname !== "/") window.location.href = "/"; + } + }, 100); // 100ms delay + + return () => clearTimeout(timeoutId); + }, [user]); + + useEffect(() => { + if (redirectTo && !isLoadingUser && !user) { + window.location.href = redirectTo; + } + }, [redirectTo, user, isLoadingUser]); + + const setUser = (newUserData: UserData | null) => { + if (newUserData) { + setUserData(newUserData); + mutateUser(); + } + }; + + return { userData, token: user, error, mutateUser, isLoadingUser, setUser }; +}; + +export default useUserFromCookie; diff --git a/src/services/api.ts b/src/services/api.ts new file mode 100644 index 0000000..60b9dad --- /dev/null +++ b/src/services/api.ts @@ -0,0 +1,81 @@ +import axios, { AxiosRequestConfig, AxiosResponse, AxiosError } from "axios"; + +interface ApiError { + message: string; +} + +const axiosInstance = axios.create({ + baseURL: process.env.NEXT_PUBLIC_API_URL, + timeout: 10000, +}); + +axiosInstance.interceptors.response.use( + (response: AxiosResponse) => { + if (response.status >= 200 && response.status < 300) { + return response; + } + throw new Error("Unexpected response status"); + }, + (error: AxiosError) => { + if (error.response) { + console.error("Response Error:", error.response.data); + return Promise.reject(error.response.data); + } else if (error.request) { + console.error("Request Error:", error.request); + return Promise.reject("No response received from server"); + } else { + console.error("Error:", error.message); + return Promise.reject("Error in request configuration"); + } + } +); + +const requestData = async ( + method: string, + url: string, + data?: any, + config?: AxiosRequestConfig +): Promise => { + try { + const response = await axiosInstance.request({ + method, + url, + data, + ...config, + }); + return response.data; + } catch (error) { + throw error; + } +}; + +export const getData = async ( + url: string, + config?: AxiosRequestConfig +): Promise => { + return requestData("GET", url, undefined, config); +}; + +export const postData = async ( + url: string, + data?: any, + config?: AxiosRequestConfig +): Promise => { + return requestData("POST", url, data, config); +}; + +export const putData = async ( + url: string, + data?: any, + config?: AxiosRequestConfig +): Promise => { + return requestData("PUT", url, data, config); +}; + +export const deleteData = async ( + url: string, + data?: any, + config?: any +): Promise => { + return await requestData("DELETE", url, data, config); +}; diff --git a/src/services/cerberos-api.ts b/src/services/cerberos-api.ts new file mode 100644 index 0000000..47cad46 --- /dev/null +++ b/src/services/cerberos-api.ts @@ -0,0 +1,113 @@ +import { getCookie, setCookie } from "@/lib/AuthCookie"; +import axios, { AxiosRequestConfig, AxiosResponse, AxiosError } from "axios"; +import { refreshToken } from "./cerberos-services"; + +interface ApiError { + message: string; +} + +const axiosInstance = axios.create({ + baseURL: process.env.NEXT_PUBLIC_CERBEROS_API_URL, + timeout: 10000, +}); + +axiosInstance.interceptors.request.use( + async (config) => { + await refreshToken(); + const token = getCookie("authToken"); + + if (token && !config.headers.Authorization) { + config.headers.Authorization = `Bearer ${token}`; + } + return config; + }, + (error) => { + return Promise.reject(error); + } +); + +axiosInstance.interceptors.response.use( + (response: AxiosResponse) => { + if (response.status >= 200 && response.status < 3600) { + return response; + } + throw new Error("Unexpected response status"); + }, + (error: AxiosError) => { + if (error.response) { + console.error("Response Error:", error.response.data); + return Promise.reject(error.response.data); + } else if (error.request) { + console.error("Request Error:", error.request); + return Promise.reject("No response received from server"); + } else { + console.error("Error:", error.message); + return Promise.reject("Error in request configuration"); + } + } +); + +const requestData = async ( + method: string, + url: string, + data?: any, + config?: AxiosRequestConfig +): Promise => { + try { + const response = await axiosInstance.request({ + method, + url, + data, + ...config, + }); + return response.data; + } catch (error) { + throw error; + } +}; + +export const getData = async ( + url: string, + config?: AxiosRequestConfig +): Promise => { + return requestData("GET", url, undefined, config); +}; + +export const getDataToken = async ( + url: string, + config?: AxiosRequestConfig +): Promise => { + return requestData("GET", url, undefined, config); +}; + +export const postData = async ( + url: string, + data?: any, + config?: AxiosRequestConfig +): Promise => { + return requestData("POST", url, data, config); +}; + +export const putData = async ( + url: string, + data?: any, + config?: AxiosRequestConfig +): Promise => { + return requestData("PUT", url, data, config); +}; + +export const deleteData = async ( + url: string, + data?: any, + config?: any +): Promise => { + return await requestData("DELETE", url, data, config); +}; + +export const PatchData = async ( + url: string, + data?: any, + config?: AxiosRequestConfig +): Promise => { + return await requestData("PATCH", url, data, config); +}; diff --git a/src/services/cerberos-services.tsx b/src/services/cerberos-services.tsx new file mode 100644 index 0000000..8ba91cb --- /dev/null +++ b/src/services/cerberos-services.tsx @@ -0,0 +1,97 @@ +import { deleteAllCookies, getCookie, setCookie } from "@/lib/AuthCookie"; +import { User } from "@/lib/interfaces"; +import useUserFromCookie from "@/lib/useUser"; +import axios, { AxiosRequestConfig, AxiosResponse, AxiosError } from "axios"; +import { useRouter } from "next/router"; +import { toast } from "react-toastify"; + +const axiosInstance = axios.create({ + baseURL: process.env.NEXT_PUBLIC_CERBEROS_API_URL, + timeout: 10000, +}); + +const errorAlert = async (message: any) => { + return new Promise((resolve) => { + toast.warn(message, { + position: "top-center", + onClose: resolve, + }); + }); +}; + +const requestData = async ( + method: string, + url: string, + data?: any, + config?: AxiosRequestConfig +): Promise => { + try { + const response = await axiosInstance.request({ + method, + url, + data, + ...config, + }); + return response.data; + } catch (error) { + throw error; + } +}; + +export const getAccessToken = async (token: string): Promise => { + const url = `/Authentication/GenerateToken`; + const config: AxiosRequestConfig = { + headers: { + Authorization: `Bearer ${token}`, + }, + }; + const response = await getData(url, config); + return response as User; +}; + +const refreshAccessToken = async (token: string): Promise => { + const url = `/Authentication/RefreshToken`; + const config: AxiosRequestConfig = { + headers: { + Authorization: `Bearer ${token}`, + }, + }; + + try { + const response = await getData(url, config); + return response as string; + } catch (error) { + await errorAlert("Unable to refresh token or session expired"); + deleteAllCookies(); + // setUser(null); + window.location.href = "/"; + throw error; + } +}; + +export const refreshToken = async () => { + const token = getCookie("authToken"); + if (token) { + const payload = JSON.parse(atob(token.split(".")[1])); + const expiration = payload.exp; + const currentTime = Math.floor(Date.now() / 1000); + if (expiration - currentTime <= 300) { + const newToken = await refreshAccessToken(token); + if (newToken) { + setCookie("authToken", await newToken, 1); + } + } + } +}; + +export const getData = async ( + url: string, + config?: AxiosRequestConfig +): Promise => { + return requestData("GET", url, undefined, config); +}; + +export default { + getAccessToken, + refreshToken, +}; diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..e9a0944 --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,20 @@ +import type { Config } from "tailwindcss"; + +const config: Config = { + content: [ + "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", + "./src/components/**/*.{js,ts,jsx,tsx,mdx}", + "./src/app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + backgroundImage: { + "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", + "gradient-conic": + "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", + }, + }, + }, + plugins: [], +}; +export default config; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..a50b213 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"], + "@images/*": ["public/images/*"], + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +}
    +
    + +
    + + Save + + + Cancel + +
    +
    +