commit ec79adfbaf8868ac7ac8afc527d3016d2a1d1042 Author: ISMAIL MASSERAN Date: Tue Oct 27 09:36:11 2026 +0800 first init diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..8dd9799 Binary files /dev/null and b/.DS_Store differ diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e621c68 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +node_modules +dist +.git +.gitea +.DS_Store +.idea +.vscode diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3b510aa --- /dev/null +++ b/.editorconfig @@ -0,0 +1,8 @@ +[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}] +charset = utf-8 +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true +end_of_line = lf +max_line_length = 100 diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..921d0eb --- /dev/null +++ b/.env.development @@ -0,0 +1,7 @@ +VITE_APP_NAME="MyKOPKB" +VITE_APP_VERSION="1.0" +VITE_API_BASE_URL=http://localhost +VITE_APP_URL=http://localhost +VITE_APP_PORT=5173 +VITE_APP_ENV=development +VITE_APP_DEBUG=true \ No newline at end of file diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..8240cd6 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,43 @@ +name: Build Docker Image + +on: + push: + tags: + - "v*" + +jobs: + build-frontend: + runs-on: docker + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Login to Docker registry + run: | + echo "${{ secrets.REGISTRY_PASSWORD }}" | \ + docker login git.koppkb.com \ + -u "${{ secrets.REGISTRY_USERNAME }}" \ + --password-stdin + + - name: Build & push frontend image + run: | + set -e + + IMAGE="git.koppkb.com/kopkb/my-kopkb-fe" + TAGS="-t ${IMAGE}:${{ gitea.sha }}" + + if [ "${{ gitea.ref_type }}" = "tag" ] && echo "${{ gitea.ref_name }}" | grep -q '^v'; then + TAGS="${TAGS} -t ${IMAGE}:${{ gitea.ref_name }}" + fi + + echo "Building and pushing frontend: ${TAGS}" + docker buildx build \ + --platform linux/amd64 \ + --cache-from type=registry,ref=${IMAGE}:buildcache,ignore-error=true \ + --cache-to type=registry,ref=${IMAGE}:buildcache,mode=max \ + -f docker/Dockerfile \ + --build-arg VITE_API_BASE_URL=https://api.koppkb.com \ + --build-arg VITE_APP_URL=https://mykopkb.koppkb.com \ + ${TAGS} \ + --push . diff --git a/.gitea/workflows/deploy-prod.yml b/.gitea/workflows/deploy-prod.yml new file mode 100644 index 0000000..2d3bc5d --- /dev/null +++ b/.gitea/workflows/deploy-prod.yml @@ -0,0 +1,113 @@ +name: Deploy to Production + +# Manual production deploy — pulls pre-built images from the registry +on: + workflow_dispatch: + inputs: + image_tag: + description: "Docker image tag to deploy (commit SHA or version tag, e.g. v1.0.0)" + required: true + default: "latest" + type: string + +env: + FRONTEND_IMAGE: git.koppkb.com/kopkb/my-kopkb-fe + +jobs: + deploy: + runs-on: mykopkb-production + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: ${{ inputs.image_tag }} + + - name: Verify image exists in registry + run: | + set -e + echo "${{ secrets.REGISTRY_PASSWORD }}" | \ + docker login git.koppkb.com \ + -u "${{ secrets.REGISTRY_USERNAME }}" \ + --password-stdin + + IMAGE="${FRONTEND_IMAGE}:${{ inputs.image_tag }}" + echo "Checking if image exists: ${IMAGE}" + docker manifest inspect "${IMAGE}" > /dev/null + echo "✓ ${IMAGE} found" + + - name: Deploy over SSH + env: + PROD_HOST: ${{ secrets.PROD_HOST }} + PROD_USER: ${{ secrets.PROD_USER }} + PROD_SSH_KEY: ${{ secrets.PROD_SSH_KEY }} + PROD_DEPLOY_DIR: ${{ secrets.PROD_DEPLOY_DIR }} + REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} + REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} + IMAGE_TAG: ${{ inputs.image_tag }} + run: | + set -euo pipefail + + if ! command -v ssh >/dev/null 2>&1; then + apt-get update && apt-get install -y openssh-client + fi + + mkdir -p ~/.ssh + umask 077 + # Gitea often stores a multiline key as one line. Prefer a base64 + # secret (one line). A raw key that still contains BEGIN is accepted too. + if printf '%s' "$PROD_SSH_KEY" | grep -q -- '-----BEGIN'; then + printf '%b\n' "$PROD_SSH_KEY" | tr -d '\r' > ~/.ssh/id_ed25519 + else + printf '%s' "$PROD_SSH_KEY" | tr -d '[:space:]' | base64 -d > ~/.ssh/id_ed25519 + fi + chmod 600 ~/.ssh/id_ed25519 + if ! ssh-keygen -y -f ~/.ssh/id_ed25519 >/dev/null; then + echo "ERROR: PROD_SSH_KEY is not a readable private key." + echo "On the runner, run: base64 -w0 ~/.ssh/mykopkb_prod" + echo "Put that single line in the PROD_SSH_KEY secret." + exit 1 + fi + ssh-keyscan -H "$PROD_HOST" >> ~/.ssh/known_hosts + + SSH=(ssh -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes "${PROD_USER}@${PROD_HOST}") + IMAGE="${FRONTEND_IMAGE}:${IMAGE_TAG}" + + "${SSH[@]}" "mkdir -p '${PROD_DEPLOY_DIR}'" + scp -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes \ + docker/docker-compose.production.yml \ + "${PROD_USER}@${PROD_HOST}:${PROD_DEPLOY_DIR}/docker-compose.frontend.yml" + + "${SSH[@]}" "bash -s" << EOF + set -euo pipefail + echo "${REGISTRY_PASSWORD}" | docker login git.koppkb.com \ + -u "${REGISTRY_USERNAME}" --password-stdin + + echo "Checking if image exists: ${IMAGE}" + docker manifest inspect "${IMAGE}" > /dev/null + echo "✓ ${IMAGE} found" + + echo "Deploying frontend IMAGE=${IMAGE}" + + docker network inspect mykopkb-production-network >/dev/null 2>&1 \ + || docker network create mykopkb-production-network + + cd "${PROD_DEPLOY_DIR}" + export IMAGE_TAG="${IMAGE_TAG}" + + docker rm -f mykopkb-fe-production || true + docker compose -f docker-compose.frontend.yml -p mykopkb-fe pull + docker compose -f docker-compose.frontend.yml -p mykopkb-fe up -d + + sleep 10 + STATUS=\$(docker compose -f docker-compose.frontend.yml -p mykopkb-fe ps --status running --format '{{.Name}}' frontend || true) + if [ -z "\$STATUS" ]; then + docker compose -f docker-compose.frontend.yml -p mykopkb-fe logs --tail=50 frontend || true + exit 1 + fi + + FE_PORT=\$(grep -E '^FE_PORT=' .env 2>/dev/null | cut -d= -f2- | tr -d '"' || true) + FE_PORT=\${FE_PORT:-8081} + curl -sf "http://127.0.0.1:\${FE_PORT}/health" + echo "✓ Deployed frontend IMAGE_TAG=${IMAGE_TAG}" + EOF diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7e4d949 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +.env +.env.production +dist/ \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..d13e841 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +only-built-dependencies[]=esbuild diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..29a2402 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://json.schemastore.org/prettierrc", + "semi": false, + "singleQuote": true, + "printWidth": 100 +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..6ce3e21 --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +# midone-vue + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VS Code](https://code.visualstudio.com/) + [Vue (Official)](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). + +## Recommended Browser Setup + +- Chromium-based browsers (Chrome, Edge, Brave, etc.): + - [Vue.js devtools](https://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd) + - [Turn on Custom Object Formatter in Chrome DevTools](http://bit.ly/object-formatters) +- Firefox: + - [Vue.js devtools](https://addons.mozilla.org/en-US/firefox/addon/vue-js-devtools/) + - [Turn on Custom Object Formatter in Firefox DevTools](https://fxdx.dev/firefox-devtools-custom-object-formatters/) + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types. + +## Customize configuration + +See [Vite Configuration Reference](https://vite.dev/config/). + +## Project Setup + +```sh +yarn +``` + +### Compile and Hot-Reload for Development + +```sh +yarn dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +yarn build +``` + +### Run Unit Tests with [Vitest](https://vitest.dev/) + +```sh +yarn test:unit +``` + +### Run End-to-End Tests with [Cypress](https://www.cypress.io/) + +```sh +yarn test:e2e:dev +``` + +This runs the end-to-end tests against the Vite development server. +It is much faster than the production build. + +But it's still recommended to test the production build with `test:e2e` before deploying (e.g. in CI environments): + +```sh +yarn build +yarn test:e2e +``` + +### Lint with [ESLint](https://eslint.org/) + +```sh +yarn lint +``` diff --git a/cypress.config.ts b/cypress.config.ts new file mode 100644 index 0000000..4a22885 --- /dev/null +++ b/cypress.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from 'cypress' + +export default defineConfig({ + e2e: { + specPattern: 'cypress/e2e/**/*.{cy,spec}.{js,jsx,ts,tsx}', + baseUrl: 'http://localhost:4173', + }, +}) diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..ae34a8b --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,27 @@ +# Stage 1: Build Vue SPA +FROM node:22 AS builder +WORKDIR /app +COPY package*.json pnpm-lock.yaml .npmrc pnpm-workspace.yaml ./ +# Skip prepare (cypress install); rebuild esbuild only — required for Vite +RUN npm install -g pnpm && \ + pnpm install --frozen-lockfile --ignore-scripts && \ + pnpm rebuild esbuild +COPY . ./ +ARG VITE_APP_NAME="MyKOPKB" +ARG VITE_APP_VERSION="1.0" +ARG VITE_API_BASE_URL=https://api.koppkb.com +ARG VITE_APP_URL=https://mykopkb.com + +ENV VITE_API_BASE_URL=$VITE_API_BASE_URL +ENV VITE_APP_URL=$VITE_APP_URL +ENV VITE_APP_NAME=$VITE_APP_NAME +ENV VITE_APP_VERSION=$VITE_APP_VERSION + +# RUN pnpm run typecheck # uncomment this to run typecheck +RUN pnpm exec vite build --mode=production + +# Stage 2: Serve static files +FROM nginx:1.27-alpine +COPY docker/nginx.conf /etc/nginx/conf.d/default.conf +COPY --from=builder /app/dist /usr/share/nginx/html +EXPOSE 80 diff --git a/docker/docker-compose.production.yml b/docker/docker-compose.production.yml new file mode 100644 index 0000000..680ca2f --- /dev/null +++ b/docker/docker-compose.production.yml @@ -0,0 +1,25 @@ +services: + frontend: + image: git.koppkb.com/kopkb/my-kopkb-fe:${IMAGE_TAG:-latest} + container_name: mykopkb-fe-production + restart: unless-stopped + ports: + - "${FE_PORT:-8081}:80" + networks: + - mykopkb-production-network + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 10s + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + +networks: + mykopkb-production-network: + name: mykopkb-production-network + external: true diff --git a/docker/nginx.conf b/docker/nginx.conf new file mode 100644 index 0000000..d8d230c --- /dev/null +++ b/docker/nginx.conf @@ -0,0 +1,29 @@ +server { + listen 80; + server_name _; + root /usr/share/nginx/html; + index index.html; + + gzip on; + gzip_types text/plain text/css application/json application/javascript text/xml application/xml; + + location = /health { + access_log off; + default_type text/plain; + return 200 'ok'; + } + + location / { + try_files $uri $uri/ /index.html; + } + + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + try_files $uri =404; + } + + location ~ /\. { + deny all; + } +} diff --git a/env.d.ts b/env.d.ts new file mode 100644 index 0000000..f9a4d99 --- /dev/null +++ b/env.d.ts @@ -0,0 +1,15 @@ +/// + +interface ImportMetaEnv { + readonly VITE_API_BASE_URL?: string + readonly VITE_APP_NAME?: string + readonly VITE_APP_VERSION?: string + readonly VITE_APP_URL?: string + readonly VITE_APP_PORT?: string + readonly VITE_APP_ENV?: string + readonly VITE_APP_DEBUG?: string +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} diff --git a/eslint.config.ts b/eslint.config.ts new file mode 100644 index 0000000..5f44e7c --- /dev/null +++ b/eslint.config.ts @@ -0,0 +1,38 @@ +import { globalIgnores } from 'eslint/config' +import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript' +import pluginVue from 'eslint-plugin-vue' +import pluginCypress from 'eslint-plugin-cypress' +import pluginVitest from '@vitest/eslint-plugin' +import skipFormatting from '@vue/eslint-config-prettier/skip-formatting' + +// To allow more languages other than `ts` in `.vue` files, uncomment the following lines: +// import { configureVueProject } from '@vue/eslint-config-typescript' +// configureVueProject({ scriptLangs: ['ts', 'tsx'] }) +// More info at https://github.com/vuejs/eslint-config-typescript/#advanced-setup + +export default defineConfigWithVueTs( + { + name: 'app/files-to-lint', + files: ['**/*.{vue,ts,mts,tsx}'], + }, + + globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']), + + ...pluginVue.configs['flat/essential'], + vueTsConfigs.recommended, + + { + ...pluginCypress.configs.recommended, + files: [ + 'cypress/e2e/**/*.{cy,spec}.{js,ts,jsx,tsx}', + 'cypress/support/**/*.{js,ts,jsx,tsx}', + ], + }, + + { + ...pluginVitest.configs.recommended, + files: ['src/**/__tests__/*'], + }, + + skipFormatting, +) diff --git a/index.html b/index.html new file mode 100644 index 0000000..02f0473 --- /dev/null +++ b/index.html @@ -0,0 +1,16 @@ + + + + + + + + MyKOPKB 1.0 + + + +
+ + + + \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..b54979a --- /dev/null +++ b/package.json @@ -0,0 +1,97 @@ +{ + "name": "@mykopkb/frontend", + "version": "1.0.0", + "private": true, + "type": "module", + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "test:unit": "vitest", + "prepare": "cypress install", + "test:e2e": "start-server-and-test preview http://localhost:4173 'cypress run --e2e'", + "test:e2e:dev": "start-server-and-test 'vite dev --port 4173' http://localhost:4173 'cypress open --e2e'", + "build-only": "vite build", + "type-check": "vue-tsc --build", + "lint": "eslint . --fix --cache", + "format": "prettier --write --experimental-cli src/" + }, + "dependencies": { + "@iconify/vue": "^5.0.1", + "@internationalized/date": "^3.11.0", + "@lucide/vue": "^1.17.0", + "@tailwindcss/vite": "^4.1.18", + "@tanstack/vue-table": "^8.21.3", + "@zag-js/accordion": "1.26.1", + "@zag-js/avatar": "1.26.1", + "@zag-js/carousel": "1.26.1", + "@zag-js/checkbox": "1.26.1", + "@zag-js/combobox": "1.26.1", + "@zag-js/date-picker": "1.26.1", + "@zag-js/dialog": "1.26.1", + "@zag-js/menu": "1.26.1", + "@zag-js/pagination": "1.26.1", + "@zag-js/popover": "1.26.1", + "@zag-js/presence": "1.26.1", + "@zag-js/progress": "1.26.1", + "@zag-js/radio-group": "1.26.1", + "@zag-js/scroll-area": "1.26.1", + "@zag-js/select": "1.26.1", + "@zag-js/slider": "1.26.1", + "@zag-js/switch": "1.26.1", + "@zag-js/tabs": "1.26.1", + "@zag-js/toast": "1.26.1", + "@zag-js/tooltip": "1.26.1", + "@zag-js/vue": "1.26.1", + "axios": "^1.16.1", + "chart.js": "^4.5.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "dayjs": "^1.11.21", + "file-saver": "^2.0.5", + "jspdf": "^4.2.1", + "jspdf-autotable": "^5.0.8", + "lodash": "^4.17.21", + "maplibre-gl": "^5.18.0", + "pinia": "^3.0.4", + "qrcode": "^1.5.4", + "sweetalert2": "^11.26.25", + "tailwind-merge": "^3.5.0", + "tailwindcss": "^4.1.18", + "tw-animate-css": "^1.4.0", + "vue": "^3.5.26", + "vue-router": "^4.6.4", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@tsconfig/node24": "^24.0.3", + "@types/file-saver": "^2.0.7", + "@types/jsdom": "^27.0.0", + "@types/lodash": "^4.17.21", + "@types/node": "^24.10.4", + "@types/qrcode": "^1.5.6", + "@vitejs/plugin-vue": "^6.0.3", + "@vitest/eslint-plugin": "^1.6.4", + "@vue/eslint-config-prettier": "^10.2.0", + "@vue/eslint-config-typescript": "^14.6.0", + "@vue/test-utils": "^2.4.6", + "@vue/tsconfig": "^0.8.1", + "cypress": "^15.8.1", + "eslint": "^9.39.2", + "eslint-plugin-cypress": "^5.2.0", + "eslint-plugin-vue": "~10.6.2", + "jiti": "^2.6.1", + "jsdom": "^27.3.0", + "npm-run-all2": "^8.0.4", + "prettier": "3.7.4", + "start-server-and-test": "^2.1.3", + "typescript": "~5.9.3", + "vite": "^7.3.0", + "vite-plugin-vue-devtools": "^8.0.5", + "vitest": "^4.0.16", + "vue-tsc": "^3.2.1" + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..c4f6589 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,7016 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@iconify/vue': + specifier: ^5.0.1 + version: 5.0.1(vue@3.5.35(typescript@5.9.3)) + '@internationalized/date': + specifier: ^3.11.0 + version: 3.12.2 + '@lucide/vue': + specifier: ^1.17.0 + version: 1.17.0(vue@3.5.35(typescript@5.9.3)) + '@tailwindcss/vite': + specifier: ^4.1.18 + version: 4.3.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + '@tanstack/vue-table': + specifier: ^8.21.3 + version: 8.21.3(vue@3.5.35(typescript@5.9.3)) + '@zag-js/accordion': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/avatar': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/carousel': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/checkbox': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/combobox': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/date-picker': + specifier: 1.26.1 + version: 1.26.1(@internationalized/date@3.12.2) + '@zag-js/dialog': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/menu': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/pagination': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/popover': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/presence': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/progress': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/radio-group': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/scroll-area': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/select': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/slider': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/switch': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/tabs': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/toast': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/tooltip': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/vue': + specifier: 1.26.1 + version: 1.26.1(vue@3.5.35(typescript@5.9.3)) + axios: + specifier: ^1.16.1 + version: 1.16.1(debug@4.4.3) + chart.js: + specifier: ^4.5.0 + version: 4.5.1 + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + dayjs: + specifier: ^1.11.21 + version: 1.11.21 + file-saver: + specifier: ^2.0.5 + version: 2.0.5 + jspdf: + specifier: ^4.2.1 + version: 4.2.1 + jspdf-autotable: + specifier: ^5.0.8 + version: 5.0.8(jspdf@4.2.1) + lodash: + specifier: ^4.17.21 + version: 4.18.1 + maplibre-gl: + specifier: ^5.18.0 + version: 5.24.0 + pinia: + specifier: ^3.0.4 + version: 3.0.4(typescript@5.9.3)(vue@3.5.35(typescript@5.9.3)) + qrcode: + specifier: ^1.5.4 + version: 1.5.4 + sweetalert2: + specifier: ^11.26.25 + version: 11.26.25 + tailwind-merge: + specifier: ^3.5.0 + version: 3.6.0 + tailwindcss: + specifier: ^4.1.18 + version: 4.3.0 + tw-animate-css: + specifier: ^1.4.0 + version: 1.4.0 + vue: + specifier: ^3.5.26 + version: 3.5.35(typescript@5.9.3) + vue-router: + specifier: ^4.6.4 + version: 4.6.4(vue@3.5.35(typescript@5.9.3)) + xlsx: + specifier: ^0.18.5 + version: 0.18.5 + devDependencies: + '@tsconfig/node24': + specifier: ^24.0.3 + version: 24.0.4 + '@types/file-saver': + specifier: ^2.0.7 + version: 2.0.7 + '@types/jsdom': + specifier: ^27.0.0 + version: 27.0.0 + '@types/lodash': + specifier: ^4.17.21 + version: 4.17.24 + '@types/node': + specifier: ^24.10.4 + version: 24.12.4 + '@types/qrcode': + specifier: ^1.5.6 + version: 1.5.6 + '@vitejs/plugin-vue': + specifier: ^6.0.3 + version: 6.0.7(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))(vue@3.5.35(typescript@5.9.3)) + '@vitest/eslint-plugin': + specifier: ^1.6.4 + version: 1.6.19(@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)(vitest@4.1.8(@types/node@24.12.4)(jsdom@27.4.0)(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))) + '@vue/eslint-config-prettier': + specifier: ^10.2.0 + version: 10.2.0(eslint@9.39.4(jiti@2.7.0))(prettier@3.7.4) + '@vue/eslint-config-typescript': + specifier: ^14.6.0 + version: 14.7.0(eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.7.0))))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@vue/test-utils': + specifier: ^2.4.6 + version: 2.4.10(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.35(typescript@5.9.3)))(vue@3.5.35(typescript@5.9.3)) + '@vue/tsconfig': + specifier: ^0.8.1 + version: 0.8.1(typescript@5.9.3)(vue@3.5.35(typescript@5.9.3)) + cypress: + specifier: ^15.8.1 + version: 15.16.0 + eslint: + specifier: ^9.39.2 + version: 9.39.4(jiti@2.7.0) + eslint-plugin-cypress: + specifier: ^5.2.0 + version: 5.4.0(eslint@9.39.4(jiti@2.7.0)) + eslint-plugin-vue: + specifier: ~10.6.2 + version: 10.6.2(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.7.0))) + jiti: + specifier: ^2.6.1 + version: 2.7.0 + jsdom: + specifier: ^27.3.0 + version: 27.4.0 + npm-run-all2: + specifier: ^8.0.4 + version: 8.0.4 + prettier: + specifier: 3.7.4 + version: 3.7.4 + start-server-and-test: + specifier: ^2.1.3 + version: 2.1.5 + typescript: + specifier: ~5.9.3 + version: 5.9.3 + vite: + specifier: ^7.3.0 + version: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + vite-plugin-vue-devtools: + specifier: ^8.0.5 + version: 8.1.2(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))(vue@3.5.35(typescript@5.9.3)) + vitest: + specifier: ^4.0.16 + version: 4.1.8(@types/node@24.12.4)(jsdom@27.4.0)(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + vue-tsc: + specifier: ^3.2.1 + version: 3.3.3(typescript@5.9.3) + +packages: + + '@acemir/cssom@0.9.31': + resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} + + '@asamuzakjp/css-color@4.1.2': + resolution: {integrity: sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==} + + '@asamuzakjp/dom-selector@6.8.1': + resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.7': + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.29.7': + resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.29.7': + resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.29.7': + resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.29.7': + resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.29.7': + resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-proposal-decorators@7.29.7': + resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.29.7': + resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.29.7': + resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.29.7': + resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.29.7': + resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.29.7': + resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.7': + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + engines: {node: '>=6.9.0'} + + '@csstools/color-helpers@6.0.2': + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} + + '@csstools/css-calc@3.2.1': + resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-color-parser@4.1.1': + resolution: {integrity: sha512-eZ5XOtyhK+mggRafYUWzA0tvaYOFgdY8AkgQiCJF9qNAePnUo/zmsqqYubBBb3sQ8uNUaSKTY9s9klfRaAXL0g==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.4': + resolution: {integrity: sha512-wgsqt92b7C7tQhIdPNxj0n9zuUbQlvAuI1exyzeNrOKOi62SD7ren8zqszmpVREjAOqg8cD2FqYhQfAuKjk4sw==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + + '@cypress/request@4.0.1': + resolution: {integrity: sha512-y20e+e6dFYkOUUJLVUZTsJRuTiXZaUQ32WD+R/ux/HBybbTx4ge7cNINcua0pU8+SNkKuRbOF12mBmzuzM8n5w==} + engines: {node: '>= 14.17.0'} + + '@cypress/xvfb@1.2.4': + resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.4': + resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@exodus/bytes@1.15.1': + resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + + '@floating-ui/core@1.7.5': + resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} + + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + + '@floating-ui/utils@0.2.11': + resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} + + '@hapi/address@5.1.1': + resolution: {integrity: sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==} + engines: {node: '>=14.0.0'} + + '@hapi/formula@3.0.2': + resolution: {integrity: sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==} + + '@hapi/hoek@11.0.7': + resolution: {integrity: sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==} + + '@hapi/pinpoint@2.0.1': + resolution: {integrity: sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==} + + '@hapi/tlds@1.1.6': + resolution: {integrity: sha512-xdi7A/4NZokvV0ewovme3aUO5kQhW9pQ2YD1hRqZGhhSi5rBv4usHYidVocXSi9eihYsznZxLtAiEYYUL6VBGw==} + engines: {node: '>=14.0.0'} + + '@hapi/topo@6.0.2': + resolution: {integrity: sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==} + + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/vue@5.0.1': + resolution: {integrity: sha512-aumwwooJlFJ5H5qYWB6ZTAyM0C8hpfcSVLB9/a3qnH1GGvIJ+FEbpEs4s/HfErYe/M5qZeLjwmESR5fFm3lXEw==} + peerDependencies: + vue: '>=3.0.0' + + '@internationalized/date@3.12.2': + resolution: {integrity: sha512-FY1Y+H64NDs+HAF6omlnWxm3mEpfgaCSWtL5l551ZZfImA+kGjPFgrnJrGjH6lfmLL0g8Z/mBu1R3kufeCp6Jw==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@kurkle/color@0.3.4': + resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} + + '@lucide/vue@1.17.0': + resolution: {integrity: sha512-6Q1ZHgr5FbmJzKWe5BxlNdjLj2lbmuH1zwDtVzUJofX0w9UREwKgq4F4jwKqFYyyIS4Rj3FiJvDi2k6djukmmw==} + peerDependencies: + vue: '>=3.0.1' + + '@mapbox/jsonlint-lines-primitives@2.0.2': + resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==} + engines: {node: '>= 0.6'} + + '@mapbox/point-geometry@1.1.0': + resolution: {integrity: sha512-YGcBz1cg4ATXDCM/71L9xveh4dynfGmcLDqufR+nQQy3fKwsAZsWd/x4621/6uJaeB9mwOHE6hPeDgXz9uViUQ==} + + '@mapbox/tiny-sdf@2.2.0': + resolution: {integrity: sha512-LVL4wgI9YAum5V+LNVQO6QgFBPw7/MIIY4XJPNsPDMrjEwcE+JfKk1LuIl8GnF197ejVdC9QdPaxrx5gfgdGXg==} + + '@mapbox/unitbezier@0.0.1': + resolution: {integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==} + + '@mapbox/vector-tile@2.0.5': + resolution: {integrity: sha512-pXj8m7KTsqZt+1jsE0xIpGvqTSbblfkuEJL/NJmNePMtEwxO8V3XMDo9WMSfDeqHvCtBI9Lmt4mGcGR10zecmw==} + + '@mapbox/whoots-js@3.1.0': + resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==} + engines: {node: '>=6.0.0'} + + '@maplibre/geojson-vt@5.0.4': + resolution: {integrity: sha512-KGg9sma45S+stfH9vPCJk1J0lSDLWZgCT9Y8u8qWZJyjFlP8MNP1WGTxIMYJZjDvVT3PDn05kN1C95Sut1HpgQ==} + + '@maplibre/geojson-vt@6.1.0': + resolution: {integrity: sha512-2eIY4gZxeKIVOZVNkAMb+5NgXhgsMQpOveTQAvnp53LYqHGJZDidk7Ew0Tged9PThidpbS+NFTh0g4zivhPDzQ==} + + '@maplibre/maplibre-gl-style-spec@24.8.5': + resolution: {integrity: sha512-EzEJmMt6thioRH7GI9LWS7ahXTcAhAPGWCe6oTP2Ps4YnsXOOAfeqx854lZaiDnwURfHmcCKV1mr6oo0i23x6w==} + hasBin: true + + '@maplibre/mlt@1.1.11': + resolution: {integrity: sha512-dKvjKdITw9d0y3ndGkSqLUEpWCizMtdq8NB06cHohH/JZ2sJoM7dClR9wzJLUWykjbw9RXDFmhjjNBnNW27mzw==} + + '@maplibre/vt-pbf@4.3.0': + resolution: {integrity: sha512-jIvp8F5hQCcreqOOpEt42TJMUlsrEcpf/kI1T2v85YrQRV6PPXUcEXUg5karKtH6oh47XJZ4kHu56pUkOuqA7w==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@one-ini/wasm@0.1.1': + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.3.6': + resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} + engines: {node: ^14.18.0 || >=16.0.0} + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + + '@rollup/rollup-android-arm-eabi@4.61.0': + resolution: {integrity: sha512-dnxczajOqt0gesZlN5pGQ1s1imQVrsmCw5G2Ci4oM+0WvNz3pyRnlWrT7McoZIb8VlFwCawdmbWRmxRn7HI+VQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.61.0': + resolution: {integrity: sha512-Bp3JpGP00Vu3f238ivRrjf7z3xSzVPXqCmaJYA9t2c+c8vKYvOzmXF7LkkeUalTEGd6cZcSWe+PFIP3Vy48fRg==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.61.0': + resolution: {integrity: sha512-zaYIpr670mUmmZ1tVzUFplbQbG7h3Gugx3L5FoqhsC2m/YnLlR1a7zVLmXNPy+iY1tFPEbNG+HHBXZGyId0G5w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.61.0': + resolution: {integrity: sha512-+P49fvkv2dSoeevUW+lgZ/I2JHSsJCK1Lyjj7Cu6E4UHG4tS9XIefzIjo5qhgELjAclnen1rLzK2PMKJdo+Dyg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.61.0': + resolution: {integrity: sha512-l3FAAOyKJXH2ea6KNFN+MMgC/rnE94YGLXs2ehYqDcCoHt1DpvgWX75BhUJxN38XojP7Ul+4H8PRn7EdyqSDrw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.61.0': + resolution: {integrity: sha512-VokPN3TSctKj65cyCNPaUh4vMFA8awxOot/0sp+4J7ZlNRKQEhXhawqPwajoi8H5ZFt61i0ugZJuTKXBjGJ17Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.61.0': + resolution: {integrity: sha512-DxH0P3wxm+Yzs/p3zrk9dw1rURu8p0Nv5+MRK/L7OtnLNg5rLZraSBFZ8iUXOd9f2BlhJyEpIZUH/emjq4UJ4g==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.61.0': + resolution: {integrity: sha512-T6ZvMNe84kAz6TBWHC7hGAoEtzP1LWYw/AqayGWEF6uISt3Abk/st06LqRD9THd7Xz3NxzurUpzAuEAUbZf+nw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.61.0': + resolution: {integrity: sha512-q/4hzvQkDs8b4jIBab1pnLiiM0ayTZsN2amBFPDzuyZxjEd4wDwx0UJFYM3cOZzSf5Kw8fnWSprJzIBMkcR44Q==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.61.0': + resolution: {integrity: sha512-vvYWX3akdEAY6km+9wAqFDnk6pQsbJKVnj7xawcvs/+fdlYBGp+U+Qq/lLfpIxYIZvZLHMAKD9HLdacSx/r3dw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.61.0': + resolution: {integrity: sha512-DePa5cqOxDP/Zp0VOXpeWaGew5iIv5DXp9NYbzkX5PFQyWVX9184WCTh3hvr/7lhXo8ZVlbFLkz8+o/q1dU6gA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.61.0': + resolution: {integrity: sha512-LV8aWMB8UChglMCEzs7RkN0GsH29RJaLLqwm9fCIjlqwxQTiWAqNcc7wjBkH31hV0PU/yVxGYvrYsgfea2qw6g==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.61.0': + resolution: {integrity: sha512-QoNSnwQtaeNu5grdBbsL0tt1uyl5EnS8DA8Mr3nluMXbhdQNyhN+G4tBax7VCdxLKj8YJ0/4OO9Ho84jMnJtKA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.61.0': + resolution: {integrity: sha512-/zZp5MKapIIApE8trN8qLGNSiRN9TUoaUZ1cmVu4XnVdd5LQLOXTtyi+vtfUbNnT3iyjzpPqYeKXmvJ+gJGYWw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.61.0': + resolution: {integrity: sha512-RbrzcD3aJ1k3UbtMRRBNwojdVVyXjuVAFTfn/xPa6EEl6GE9Sm/akPgFTb9aAC9pMKGJ6CtWxaGrqWcabH+ySg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.61.0': + resolution: {integrity: sha512-ZF+onDsBso8PJf1XaG9lB+O9RnBpKGnY6OrzC4CSHrtC1jb6jWLTKK4bRqdoCXHd22gyr2hiYmEAm8Wns/BOCw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.61.0': + resolution: {integrity: sha512-Atk0aSIk5Zx2Wuh9dgRQgLP0Koc8hOeYpbWryMXyk8G8/HmPkwPPkMqIIDhrXHHYqfUzSJA/I7IWSBv8xSmRBA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.61.0': + resolution: {integrity: sha512-0uMOcf3eZ5K+K4cYHkdxShFMPlPXCOdfDFEFn9dNYAEEd2cVvmOfH7zFgRVoDgmtQ1m9k5q7qfrHzyMAubKYUA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.61.0': + resolution: {integrity: sha512-mvFtE4A/t/7hRJ7X8Ozmu8FsIkAUat2nzl12pgU337BRmq87AQUJztwHz2Zv5/tjo9/C95E66CK03SI/ToEDJw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.61.0': + resolution: {integrity: sha512-z9b9+aTxvt8n2rNltMPvyaUfB8NJ+CVyOrGK/MdIKHx7B+lXmZpm/XbRsU7Rpf3fRqJ2uS6mBJiJveCtq8LHDg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.61.0': + resolution: {integrity: sha512-jXaXFqKMehsOc+g8R6oo33RRC6w07G9jDBxAE5eAKX7mOcCbZloYIPNhfG9Wl+P9O9IWHFO4OJgPi1Ml2qkt7w==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.61.0': + resolution: {integrity: sha512-OXNWVFocS2IA4+QplhTZZ2a+8hPZR7T8KuozsNmJKK8y7cp83StHvGksfHzPG3wczWTczyWHVQuqeiTUbjiyBg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.61.0': + resolution: {integrity: sha512-AlAbNtBO637LxSldqV43z0FfXoGfl2TW1DgAg/bs7aQswFbDewz2SJm3BUhiGfbOVtW571xbc9p+REdxhyN/Eg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.61.0': + resolution: {integrity: sha512-QRSrQXyJ1M4tjNXdR0/G/IgV6lzfQQJYBjlWIEYkY2Xs86DRl/iEpQ4blMDjJxSl7n19eDKKXMg0AmuBVYy8pQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.61.0': + resolution: {integrity: sha512-tkuFxhvKO/HlGd0VsINF6vHSYH8AF8W0TcNxKDK6JZmrehngFj78pToc8iemtnvwilDjs2G/qSzYFhe9U8q+fw==} + cpu: [x64] + os: [win32] + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + + '@tailwindcss/node@4.3.0': + resolution: {integrity: sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==} + + '@tailwindcss/oxide-android-arm64@4.3.0': + resolution: {integrity: sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.3.0': + resolution: {integrity: sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.3.0': + resolution: {integrity: sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.3.0': + resolution: {integrity: sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0': + resolution: {integrity: sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.0': + resolution: {integrity: sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.3.0': + resolution: {integrity: sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.3.0': + resolution: {integrity: sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.3.0': + resolution: {integrity: sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.3.0': + resolution: {integrity: sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.0': + resolution: {integrity: sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.3.0': + resolution: {integrity: sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.3.0': + resolution: {integrity: sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==} + engines: {node: '>= 20'} + + '@tailwindcss/vite@4.3.0': + resolution: {integrity: sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 || ^8 + + '@tanstack/table-core@8.21.3': + resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} + engines: {node: '>=12'} + + '@tanstack/vue-table@8.21.3': + resolution: {integrity: sha512-rusRyd77c5tDPloPskctMyPLFEQUeBzxdQ+2Eow4F7gDPlPOB1UnnhzfpdvqZ8ZyX2rRNGmqNnQWm87OI2OQPw==} + engines: {node: '>=12'} + peerDependencies: + vue: '>=3.2' + + '@tsconfig/node24@24.0.4': + resolution: {integrity: sha512-2A933l5P5oCbv6qSxHs7ckKwobs8BDAe9SJ/Xr2Hy+nDlwmLE1GhFh/g/vXGRZWgxBg9nX/5piDtHR9Dkw/XuA==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/file-saver@2.0.7': + resolution: {integrity: sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==} + + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + + '@types/jsdom@27.0.0': + resolution: {integrity: sha512-NZyFl/PViwKzdEkQg96gtnB8wm+1ljhdDay9ahn4hgb+SfVtPCbm3TlmDUFXTA+MGN3CijicnMhG18SI5H3rFw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/lodash@4.17.24': + resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} + + '@types/node@24.12.4': + resolution: {integrity: sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==} + + '@types/pako@2.0.4': + resolution: {integrity: sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==} + + '@types/qrcode@1.5.6': + resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==} + + '@types/raf@3.4.3': + resolution: {integrity: sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==} + + '@types/sinonjs__fake-timers@8.1.1': + resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} + + '@types/sizzle@2.3.10': + resolution: {integrity: sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==} + + '@types/supercluster@7.1.3': + resolution: {integrity: sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==} + + '@types/tmp@0.2.6': + resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@typescript-eslint/eslint-plugin@8.60.1': + resolution: {integrity: sha512-JQ4S5GB0tfjO8BuJ4fcX+HodkzJjYBV+7OJ+wLygaX7OGQ7FudyHL4NSCA6ob+w3Yn+5MkKIozOwQhXeM7opVg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.60.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.60.1': + resolution: {integrity: sha512-A0M6ua6H252bVjPvvtSgl2QA4+ET9S5Mtkb2GDyTxIhH/C4qDItT7RQNO5PhMC6NXGYXOR9dIalcDDgBKT7oFA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.60.1': + resolution: {integrity: sha512-eXkTH2bxmXlqD1RnOPmLZ9ZM9D3VwSx04JOwBnP9RQ+yUA5a2Mu7SfW8uaV2Aon53NJzZlZYuX7tn91Izf+xaw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@8.60.1': + resolution: {integrity: sha512-gvI5OQoptnxQnchOirukCuQ55svJSTuD/4k5+pC267xyBtYry748R9/c3tYUzb/iE6RZfllRz2lVulLCHkTm4w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.60.1': + resolution: {integrity: sha512-nh8w4qAteiKuZu3pSSzG/yGKpw0OlkrKnzFmbVRenKaD4qc+7i1GrmZaLVkr8rk4uipiPGMOW4YsM6WmKZ5CvA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.60.1': + resolution: {integrity: sha512-sdwTrpjosW7ANQYJ39ZBF1ZyEMEGVB2UsikrserVM/30a/F1dTLnu9bGxEdosugyu5caigjLrR2qiD11asjI1A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/types@8.60.1': + resolution: {integrity: sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.60.1': + resolution: {integrity: sha512-alpRkfG8hlVE5kdJW2GkfgDgXxold3e8e4l6EnmhRmRLbekgAPCCGDVD++sABy9FcgPFroq+uFcCSM1vR57Cew==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.60.1': + resolution: {integrity: sha512-h2MPBLoNtjc3qZWfY3Tl51yPorQ2McHn8pJfcMNTcIvrrZrr90Ykffit0yjrPFWQcRcUxzH20+6OcVdW4yHtUg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@8.60.1': + resolution: {integrity: sha512-EbGRQg4FhrmwLodl+t3JNAnXHWVr9Vp+Zl1QBZVPY4ByfkzIT8cX3K6QWODHtkIZqqJVEWvhHSx3v5PDHsaQag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitejs/plugin-vue@6.0.7': + resolution: {integrity: sha512-km+p+XdSz9Sxm5rqUbqcSfZYaAniKxWBj1KURl+Jr7UaPvvX7BmaWMdP69I5rrFDeQGyxAG7NXdc57vz+snhWg==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vue: ^3.2.25 + + '@vitest/eslint-plugin@1.6.19': + resolution: {integrity: sha512-zodmXRsVKFsuHxHJILuTFaaKsrsxm0YsiOX65clk+LpCW9JrVXaf6ERXr0caDs+NEk0S62Jyk0K7XYQ7gWXheA==} + engines: {node: '>=18'} + peerDependencies: + '@typescript-eslint/eslint-plugin': '*' + eslint: '>=8.57.0' + typescript: '>=5.0.0' + vitest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + typescript: + optional: true + vitest: + optional: true + + '@vitest/expect@4.1.8': + resolution: {integrity: sha512-h3nDO677RDLEGlBxyQ5CW8RlMThSKSRLUePLOx09gNIWRL40edgA1GCZSZgf1W55MFAG6/Sw14KeaAnqv0NKdQ==} + + '@vitest/mocker@4.1.8': + resolution: {integrity: sha512-LEiN/xe4OSIbKe9HQIp5OC24agGD9J5CnmMgsLohVVoOPWL9a2sBoR6VBx43jQZb7Kr1l4RCuyCJzcAa0+dojw==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.8': + resolution: {integrity: sha512-9GasEBxpZ1VYIpqHf/0+YGg121uSNwCKOJqIrTwWP/TB7DmFCiaBpNl3aPZzoLWfWkuqhbH8vJIVobZkvdo2cA==} + + '@vitest/runner@4.1.8': + resolution: {integrity: sha512-EmVxeBAfMJvycdjd6Hm+RbFBbA9fKvo0Kx37hNpBYoYeavH3RNsBXWDooR1mgD52dCrxIIuP7UotpfiwOikvcg==} + + '@vitest/snapshot@4.1.8': + resolution: {integrity: sha512-acfZboRmAIf05DEKcBQy33VXojFJjtUdLyo7oOmV9kebb2xdU01UknNiPuPZoJZQyO7DF0gZdTGTpeAzET9QPQ==} + + '@vitest/spy@4.1.8': + resolution: {integrity: sha512-6EevtBp6OZOPF7bmz36HrGMeP3txgVSrgebWxHOafDXGkhIzfXK14f8KF6MuFfgXXUeHxmpD3BQxkV00/3s5mA==} + + '@vitest/utils@4.1.8': + resolution: {integrity: sha512-uOJamYALNhfJ6iolExyQM40yIQwDqYnkKtQ5VCiSe17E33H0aQ/u+1GlRuz4LZBk6Mm3sg90G9hEbmEt37C1Zg==} + + '@volar/language-core@2.4.28': + resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} + + '@volar/source-map@2.4.28': + resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} + + '@volar/typescript@2.4.28': + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + + '@vue/babel-helper-vue-transform-on@1.5.0': + resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==} + + '@vue/babel-plugin-jsx@1.5.0': + resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.5.0': + resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.5.35': + resolution: {integrity: sha512-BUmHaR1J+O+CKZ9uJucdVTEr1LHsdyvv7vG3eNRhK3CczEHeMd/LtsHAuD7PbrxvI2envCY2v7HI1vC1aBRzKw==} + + '@vue/compiler-dom@3.5.35': + resolution: {integrity: sha512-k+bprkXxuqhVajgTx5mUHuir7TwQzUKOWR40ng1ncAqQRPnrLngGGgqVEEhOnTMlc8btHYVKmrP8s5Qyg0hvYA==} + + '@vue/compiler-sfc@3.5.35': + resolution: {integrity: sha512-G5VPMcXTSywXBgtFOZOnHKBxKSrwXUcvY1iaF5/hRcy7t0J6CH/d8ha9F4nzi00Fax1eLV0QHM7v4mQu68jydw==} + + '@vue/compiler-ssr@3.5.35': + resolution: {integrity: sha512-rGhAeXgdM7/ffTJGXT69rCCdTmjDewnFuUZfBQQHTdcEBeWdT5HCGY60y2ytLJr9/Dsu7IntUi5z/w0h6Rjnzw==} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/devtools-api@7.7.9': + resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==} + + '@vue/devtools-core@8.1.2': + resolution: {integrity: sha512-ZGGyaSBP4/+bN2Nd9ZHNYAVDRIzMw1rv2RyXWtyZlo6mQal+IDmTvKY4V+DjAEBhaXt30mHmsgYp1yXJ/2tIWg==} + peerDependencies: + vue: ^3.0.0 + + '@vue/devtools-kit@7.7.9': + resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==} + + '@vue/devtools-kit@8.1.2': + resolution: {integrity: sha512-f75/upc+GCyjXErpgPGz4582ujS0L/adAltGy+tqXMGUJpgAcfGr6CxnnhpZY8BHuMYt6KpbF8uaFrrQG66rGQ==} + + '@vue/devtools-shared@7.7.9': + resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} + + '@vue/devtools-shared@8.1.2': + resolution: {integrity: sha512-X9RyVFYAdkBe4IUf5v48TxBF/6QPmF8CmWrDAjXzfUHrgQ/HGfTC1A6TqgXqZ03ye66l3AD51BAGD69IvKM9sw==} + + '@vue/eslint-config-prettier@10.2.0': + resolution: {integrity: sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw==} + peerDependencies: + eslint: '>= 8.21.0' + prettier: '>= 3.0.0' + + '@vue/eslint-config-typescript@14.7.0': + resolution: {integrity: sha512-iegbMINVc+seZ/QxtzWiOBozctrHiF2WvGedruu2EbLujg9VuU0FQiNcN2z1ycuaoKKpF4m2qzB5HDEMKbxtIg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 || ^10.0.0 + eslint-plugin-vue: ^9.28.0 || ^10.0.0 + typescript: '>=4.8.4' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/language-core@3.3.3': + resolution: {integrity: sha512-X6p+7nfY7vVT6dQwUJ+v0Jfq/lwIfhL2jMi91dQ3ln4hnlGXlxsDu/FNkeyHYgvYtyQy18ZX76IZy7X4diDbiQ==} + + '@vue/reactivity@3.5.35': + resolution: {integrity: sha512-tVc+SsHConvh/Lz64qq1pP3rYArBmK42xonovEcxY74SQtvctZodG/zhq54P5dr38cVuw25d27cPNRdlMidpGQ==} + + '@vue/runtime-core@3.5.35': + resolution: {integrity: sha512-A/xFNX9loIcWDygeQuNCfKuh0CoYBzxhqEMNah5TSFg9Z53DrFYEN2qi5CU9necjM1OWYegYREUTHmXTmhfXtg==} + + '@vue/runtime-dom@3.5.35': + resolution: {integrity: sha512-odrJ1C391dbGnyDRh8U+rnP7J2amIEzfmRk5vXy7xi3aZhEXofTvpi0T4HJb6jlNqQZTNPR5MPHSB3RHNkIORA==} + + '@vue/server-renderer@3.5.35': + resolution: {integrity: sha512-NkebSOYdB97wi8OQcO3HqzZSlymJi/aWsN/7h74OSVhRTm6qGs3Jp3e0rCXynmWwSlKeRrnlIug+ilYoHBmQDA==} + peerDependencies: + vue: 3.5.35 + + '@vue/shared@3.5.35': + resolution: {integrity: sha512-zSbjL7gRXwks2ZQLRGCajBtBXEOXW9Ddhn/HvSdrGkE2dqGnumzW8XtusRrxrE9LvqtiqDXQ+A60Hp6mvdYxfA==} + + '@vue/test-utils@2.4.10': + resolution: {integrity: sha512-SmoZ5EA1kYiAFs9NkYdiFFQF+cSnUwnvlYEbY+DogWQZUiqOm/Y29eSbc5T6yi75SgSF9863SBeXniIEoPajCA==} + peerDependencies: + '@vue/compiler-dom': 3.x + '@vue/server-renderer': 3.x + vue: 3.x + peerDependenciesMeta: + '@vue/server-renderer': + optional: true + + '@vue/tsconfig@0.8.1': + resolution: {integrity: sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g==} + peerDependencies: + typescript: 5.x + vue: ^3.4.0 + peerDependenciesMeta: + typescript: + optional: true + vue: + optional: true + + '@zag-js/accordion@1.26.1': + resolution: {integrity: sha512-Rqp5zPyWn7w1D2teZAlLytK7okRjfdU4qLuwO7SPdXgeqxr+bn7qP9Bxs4NU78nySA8ZbLZqPbmTA31m9Ya6lw==} + + '@zag-js/anatomy@1.26.1': + resolution: {integrity: sha512-1GVk5D/gFTvBd06w3MgDkSUGtUyU5n6XL8G6KsmuIh6dq16MgZ0TnDsUOkPVBQL3YEiHqlJfeCS6zkgcsu3q2g==} + + '@zag-js/aria-hidden@1.26.1': + resolution: {integrity: sha512-8zZQDODCfXuJ0zfsx6+WVaYh+ScQoFG2ib2FvKr9sxztoJAn1hiLYFKzzlA1aWOxTAh+dFQC/jJI+C1nWbhBkQ==} + + '@zag-js/avatar@1.26.1': + resolution: {integrity: sha512-s34+KSqv/frY3W4Ng9uuuqQbVlgpeWG8b0CtGcELUw9VSldDSOE2ZMIZ1inFLoby9vOOovttHSd/QdGseXkFqQ==} + + '@zag-js/carousel@1.26.1': + resolution: {integrity: sha512-hwxO1p+fsGpu+b8ufxdQAO2UhfP1jUugmBoYnaT3eQJ7Xl/E3MuJ3OMdxgeM9zbBRZuv7IWXVzfLQTNB1lz78g==} + + '@zag-js/checkbox@1.26.1': + resolution: {integrity: sha512-IESEO/WfQ6o45E8beCIOdg0u8tmgSF9gb2F0S1HNBSTmeTq5KSaz47Z8SDkci0g9cw2i+OZIX7BPZI4XpbT3tg==} + + '@zag-js/collection@1.26.1': + resolution: {integrity: sha512-b23L4urNhCCH89TRr5UIWZsCtV9eaBhgTPu91qO2CAgz0fbvmkZJ/E5yr7EI4KeNg0xExbiQrhinZQt2v0LjCA==} + + '@zag-js/combobox@1.26.1': + resolution: {integrity: sha512-VLTTLvzgurvYrsg7UEb11Ad0ZPxWp3ui9/+J3rzgrTMEuLWj8mPfWT0i0l3AG+ruyFlQv5aZNvA/pupk3UK1Tg==} + + '@zag-js/core@1.26.1': + resolution: {integrity: sha512-JesW6C1dlrG36Aa+yteL0v5nt4Zqa9n9coqDJUQ9L1AYWzjz6NTHubsA7ysJlTKwl411gSsssmH9Ey5sRxFEWQ==} + + '@zag-js/date-picker@1.26.1': + resolution: {integrity: sha512-dh105RY/SKXa0iPDmIH5qpXZ1W/Ls+AU0d2l5phcEsVItbgE+FBKYTSuC91w+LNv+MpGPH+PXvatt10tW6SYGA==} + peerDependencies: + '@internationalized/date': '>=3.0.0' + + '@zag-js/date-utils@1.26.1': + resolution: {integrity: sha512-nMTSfIk0B7MfOIJ0EpFFrHHOGDEI/F0OCG9LVvkwlKZ3evKmgAT5Hw18h2FbQ8ovQ9gNbWoUGPPnrnZJtkzhNw==} + peerDependencies: + '@internationalized/date': '>=3.0.0' + + '@zag-js/dialog@1.26.1': + resolution: {integrity: sha512-kbNzTIMUkn19RcqDKF+3kH5cGPW3bY2FKiw6qtPi072SshHQtuAeE4g5K3wGFdSTJXHBhXYSK04ZR+ok00YbGA==} + + '@zag-js/dismissable@1.26.1': + resolution: {integrity: sha512-n7MdvInqfOh+UJ+VpeIovVU734vf8ekHhfhIugDt41xAzndZW8hdXcBsKnDFK0uY9OVk8cq5FRqpdzhoZuZSgw==} + + '@zag-js/dom-query@1.26.1': + resolution: {integrity: sha512-AcdNV+Zn+Mrz6jq6IpgBJmiooFCuGBzhbbjjU6Drh3TfNDL7q2YXinrZydoD4EGDaFOQ1h71iChTtCZSHw/yNw==} + + '@zag-js/focus-trap@1.26.1': + resolution: {integrity: sha512-88NvG1vxga/Umx54p9K6+nkrC5QLOA/hc5FV68eMKn83u1PCCH8U2+RV/vhMJ7IUTEwI0VTZLOmDfyfbkfomTQ==} + + '@zag-js/focus-visible@1.26.1': + resolution: {integrity: sha512-Hq57XwQWS0a5rjiZcgWhC8ca1e75VoqVLaSGn8XM29lv13423MPRtJ6b/zkEx5G4yZmddgA+wFh2/U2KPztcYA==} + + '@zag-js/interact-outside@1.26.1': + resolution: {integrity: sha512-Kxyg8AuJq4WssVbFyCtY14O611DU7UEiKgDwiNBXdQ5V+XXd4BBBwrA5QK9pk/qjgxZawKOalwjcYsyWhFbwLQ==} + + '@zag-js/live-region@1.26.1': + resolution: {integrity: sha512-Z3c2/ssr5ERIVr0sLchua0e/JrPlbIN3suLZh4oYYPcxpKRjhwZQbN66xa5jm0LfIlW/Z21Obrb8X91GFwXR6w==} + + '@zag-js/menu@1.26.1': + resolution: {integrity: sha512-ElFlY9yqea14XUkRXL1WA3t3SGDh+4jBMXZLIG8GY14GOzoTvruATBg1+Sbd5VVpggAbrUui33F/umWgwh6X4w==} + + '@zag-js/pagination@1.26.1': + resolution: {integrity: sha512-tInkqiMj1+VoFPSN80Y7lS1ABfxTA+xgyjMyx3Y09dgHNhiOKMOYva3eTGIJaEd6OskUayc3TFKqvfT5R43KlQ==} + + '@zag-js/popover@1.26.1': + resolution: {integrity: sha512-nwZfOa7W8NW7npZXqw898nGIBJ7/sk89jglO9Ealqgay5ypOSGBg4v3Afc188Q9c4jFLLqNLQ/LzUhox+h7oLA==} + + '@zag-js/popper@1.26.1': + resolution: {integrity: sha512-wY/YzdXT97gIw8wpPDyU+qf1nlnf6wYwVs3SGDCd6cbgU7iy2jo3Pn6bMJ2OrsFrLZqFVZp6lF2zQtBTNJMZtg==} + + '@zag-js/presence@1.26.1': + resolution: {integrity: sha512-qcbdmwVQdrc4nbHsGTTRBT9UI6lJTmT2ZVv+QQW1ZeegiIEEg/IQAuMHVaPcGGnS2Kec2OJAA174+Br8rZCKtQ==} + + '@zag-js/progress@1.26.1': + resolution: {integrity: sha512-NEmLImi7ZvsTQ1B+AAZARsl3IwvdS4+qv9Wpgf+RIjJVCa0CbE3N7XS+sHuI5X4nWAKbP6Kpc3VKPwZ/9dZ7jQ==} + + '@zag-js/radio-group@1.26.1': + resolution: {integrity: sha512-85BA4b4h6Dq3Qh9VhlRM49gJUk0NGnEqmd86LctNLXMTMeJQ9i40LMeRVlKJqeDDcXMPQDKsINCfATegq2mj2Q==} + + '@zag-js/rect-utils@1.26.1': + resolution: {integrity: sha512-ZvO4kyXXfSPrFmVKgHDTSlTagioU5KNE2VhN6tN/uJYVh2M1us2DBIWtZLGZeGSpdcCuHEpThUp1eES7ZVN8ng==} + + '@zag-js/remove-scroll@1.26.1': + resolution: {integrity: sha512-m1wVmykWfpvmp3Q3jLArCvojR8SM4/DTH6I5KIZAwgIp9QiI16K83ZTSS7TiVkhwt3SgH72F9oAaJT/HA9ZHnQ==} + + '@zag-js/scroll-area@1.26.1': + resolution: {integrity: sha512-+QzuY/zYzl0ZH5Xf7tLg2nTKt8h3B55lu8yvg7WavqT2nLTMcocK6Vr1r7b+9FpGyt3nMYuZ6iUUU1Rdkk2vwg==} + + '@zag-js/scroll-snap@1.26.1': + resolution: {integrity: sha512-fRRvXO0Yl9fMwrjN7zofVcFSQvHEKYRptq4W4lG2DXIKuUrmJwyTLKMREvLka6kRZ420hDfVlTj7PpSPp4OoGg==} + + '@zag-js/select@1.26.1': + resolution: {integrity: sha512-posQbGiEXiLHoUeD2mGsuPPd/cSKat99h78krivAEJqFDijPSmX9l8A0o6sXXxWHFje50gqWxSH4p25IKBGQkA==} + + '@zag-js/slider@1.26.1': + resolution: {integrity: sha512-iHFeugMk9pNZLoijEYeV49h7lLC+twxkpeiTc5KjFgKQB9n8a+H22fIVkl+B+dmIPcfr8tDpri1FfN4hh9kxpA==} + + '@zag-js/store@1.26.1': + resolution: {integrity: sha512-0473Z38EVnl6RcjXecevzfxYbzZWEcCqsx+Q3Eti+5LKvSnl05SomiF5dYDd8qPQ167iWAQWhBYSTvasfjKa4w==} + + '@zag-js/switch@1.26.1': + resolution: {integrity: sha512-OfOF2BYBtEeoI4RU0eYTFH3QAORNQBuVtDrsERJuWldLk9p1sukETXooTFxqaQuLRx98J3Y7duryjvTvNyA8nA==} + + '@zag-js/tabs@1.26.1': + resolution: {integrity: sha512-RI3Od0H6guYfflmCmpKO0hrh1FOjE/OduEEiD1XDn5foeD0uV/qhS8Wdh8R3ikgcaVjb5XrSOrCZXkuc732g8w==} + + '@zag-js/toast@1.26.1': + resolution: {integrity: sha512-TLcN9Bd17fI0069VOV7Ug1kGk5feUK38YKJys8/1cujG+Cu4d5iUif/GUJDrRjcI/P6dPVTzrZ9ag+pCzxkWOA==} + + '@zag-js/tooltip@1.26.1': + resolution: {integrity: sha512-ezBF4DZYo7E+AjVvpOoXnoPwhSnbS3y6Fp9BMvzQRSn5qElZbdQOEZSI9R6MZBTfEo6syXE68MYyCMzKFpkQFg==} + + '@zag-js/types@1.26.1': + resolution: {integrity: sha512-MXRn8x0af7ZVJ50cxCoJU7hLZ3FmPnD53UQnjkYSmOcwr1eE0Wyt7bjGUP1Zv+6hPMTlyZ18XR2rnUkKAtr7/w==} + + '@zag-js/utils@1.26.1': + resolution: {integrity: sha512-OeQia4UV/3osMdrhSa2NmhWvzlnlF1vxOBAdYP5R96ho0FpI15DvAaPQDvE94shzIMgzS4k0pqK5lZWK5FTmqw==} + + '@zag-js/vue@1.26.1': + resolution: {integrity: sha512-uUxMyROrRXYUri+WVN75TDJ5GWXGtZPTgdYXtOmYJBIxAoafPAsxnacwJCe6Lbj0uVX+D8nw7yKVIRJA4TJOvg==} + peerDependencies: + vue: '>=3.0.0' + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + adler-32@1.3.1: + resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} + engines: {node: '>=0.8'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + + alien-signals@3.2.1: + resolution: {integrity: sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==} + + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + ansis@4.3.1: + resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} + engines: {node: '>=14'} + + arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + + axios@1.16.1: + resolution: {integrity: sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + base64-arraybuffer@1.0.2: + resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} + engines: {node: '>= 0.6.0'} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.10.33: + resolution: {integrity: sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw==} + engines: {node: '>=6.0.0'} + hasBin: true + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + + birpc@4.0.0: + resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} + + blob-util@2.0.2: + resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.15: + resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} + + brace-expansion@2.1.1: + resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} + + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + cachedir@2.4.0: + resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} + engines: {node: '>=6'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001793: + resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==} + + canvg@3.0.11: + resolution: {integrity: sha512-5ON+q7jCTgMp9cjpu4Jo6XbvfYwSB2Ow3kzHKfIyJfaCAOHLbdKPQqGKgfED/R5B+3TFFfe8pegYA+b423SRyA==} + engines: {node: '>=10.0.0'} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + cfb@1.2.2: + resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==} + engines: {node: '>=0.8'} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chart.js@4.5.1: + resolution: {integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==} + engines: {pnpm: '>=8'} + + check-more-types@2.24.0: + resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} + engines: {node: '>= 0.8.0'} + + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-table3@0.6.1: + resolution: {integrity: sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==} + engines: {node: 10.* || >= 12.*} + + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} + engines: {node: '>=20'} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + codepage@1.15.0: + resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==} + engines: {node: '>=0.8'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} + + core-js@3.49.0: + resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==} + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-line-break@2.1.0: + resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} + + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssstyle@5.3.7: + resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==} + engines: {node: '>=20'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + cypress@15.16.0: + resolution: {integrity: sha512-fy0M0c9xDLEp4v9y7LLKFeAQhIdDsobxDSKpD3JcZpqQefjy9TSzEyVV3HA0zu7hUi0bGHlSYlI7ASub8wgR9A==} + engines: {node: ^20.1.0 || ^22.0.0 || >=24.0.0} + hasBin: true + + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + + data-urls@6.0.1: + resolution: {integrity: sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ==} + engines: {node: '>=20'} + + dayjs@1.11.21: + resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + + dompurify@3.4.7: + resolution: {integrity: sha512-2jBxDJY4RR06tQNy4w5FlFH7kfxsQZlufd0sbv+chfHCxeJwrFw2baUDsSwvBISD4K4RDbd0PTfy3uNXsR6siA==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + earcut@3.0.2: + resolution: {integrity: sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + editorconfig@1.0.7: + resolution: {integrity: sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==} + engines: {node: '>=14'} + hasBin: true + + electron-to-chromium@1.5.364: + resolution: {integrity: sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + enhanced-resolve@5.22.1: + resolution: {integrity: sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww==} + engines: {node: '>=10.13.0'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + entities@8.0.0: + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-stack-parser-es@1.0.5: + resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-cypress@5.4.0: + resolution: {integrity: sha512-XAQYuzMpLWJdFRQorPO3GDx4XHqI362qr1/XIp0N6SNTAa8lyzmpTA26qNRc99I53NnqX9l0SHwbHXX7TAKIkg==} + deprecated: 'deprecate: accidentally includes breaking changes from 6.0.0' + peerDependencies: + eslint: '>=9' + + eslint-plugin-prettier@5.5.6: + resolution: {integrity: sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-vue@10.6.2: + resolution: {integrity: sha512-nA5yUs/B1KmKzvC42fyD0+l9Yd+LtEpVhWRbXuDj0e+ZURcTtyRbMDWUeJmTAh2wC6jC83raS63anNM2YT3NPw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + '@typescript-eslint/parser': ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 + vue-eslint-parser: ^10.0.0 + peerDependenciesMeta: + '@stylistic/eslint-plugin': + optional: true + '@typescript-eslint/parser': + optional: true + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.4: + resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + event-stream@3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + + eventemitter2@6.4.7: + resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} + + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + + execa@4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + executable@4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-png@6.4.0: + resolution: {integrity: sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q==} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fflate@0.8.3: + resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-saver@2.0.5: + resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + frac@1.1.2: + resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==} + engines: {node: '>=0.8'} + + from@0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + + gl-matrix@3.4.4: + resolution: {integrity: sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@17.6.0: + resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasha@5.2.2: + resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} + engines: {node: '>=8'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + html2canvas@1.4.1: + resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} + engines: {node: '>=8.0.0'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http-signature@1.4.0: + resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==} + engines: {node: '>=0.10'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + + iobuffer@5.4.0: + resolution: {integrity: sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + engines: {node: '>=18'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} + + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isexe@3.1.5: + resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} + engines: {node: '>=18'} + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + joi@18.2.1: + resolution: {integrity: sha512-2/OKlogiESf2Nh3TFCrRjrr9z1DRHeW0I+KReF67+4J0Ns+8hBtHRmoWAZ2OFU6I5+TWLEe6sVlSdXPjHm5UbQ==} + engines: {node: '>= 20'} + + js-beautify@1.15.4: + resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==} + engines: {node: '>=14'} + hasBin: true + + js-cookie@3.0.8: + resolution: {integrity: sha512-yeJd4aNAdYZQjaon2bpD/Gb0B/omw7HQOsynXXcOiWVCacbBcPlgn8S/d1X6blFSaHao7ozqtW7NZW19xpCtIw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.2.0: + resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} + hasBin: true + + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + + jsdom@27.4.0: + resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@4.0.0: + resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} + engines: {node: ^18.17.0 || >=20.5.0} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-pretty-compact@4.0.0: + resolution: {integrity: sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + + jspdf-autotable@5.0.8: + resolution: {integrity: sha512-Hy05N86yBO7CXBrnSLOge7i1ZYpKH2DjQ94iybaP7vBhSInjvRBgDc99ngKzSbSO8Jc98ZCally8I6n0tj2RJQ==} + peerDependencies: + jspdf: ^2 || ^3 || ^4 + + jspdf@4.2.1: + resolution: {integrity: sha512-YyAXyvnmjTbR4bHQRLzex3CuINCDlQnBqoSYyjJwTP2x9jDLuKDzy7aKUl0hgx3uhcl7xzg32agn5vlie6HIlQ==} + + jsprim@2.0.2: + resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} + engines: {'0': node >=0.6.0} + + kdbush@4.1.0: + resolution: {integrity: sha512-e9vurzrXJQrFX6ckpHP3bvj5l+9CnYzkxDNnNQ1h2QTqdWsUAJgXiKdGNcOa1EY85dU8KbQ+z/FdQdB7P+9yfQ==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + lazy-ass@1.6.0: + resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} + engines: {node: '> 0.8'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} + engines: {node: '>=20.0.0'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.5.1: + resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + map-stream@0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + + maplibre-gl@5.24.0: + resolution: {integrity: sha512-ALyFxgtd5R+65UqZ/++lOqwWcC0SNho9c27fYSyLmG7AfnAul2o46F05aDJGPbFU57wos9dgcIySHs0Xe6ia3A==} + engines: {node: '>=16.14.0', npm: '>=8.1.0'} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + murmurhash-js@1.0.0: + resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} + + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-releases@2.0.46: + resolution: {integrity: sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==} + engines: {node: '>=18'} + + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + npm-normalize-package-bin@4.0.0: + resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} + engines: {node: ^18.17.0 || >=20.5.0} + + npm-run-all2@8.0.4: + resolution: {integrity: sha512-wdbB5My48XKp2ZfJUlhnLVihzeuA1hgBnqB2J9ahV77wLS+/YAJAlN8I+X3DIFIPZ3m5L7nplmlbhNiFDmXRDA==} + engines: {node: ^20.5.0 || >=22.0.0, npm: '>= 10'} + hasBin: true + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ospath@1.2.2: + resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + parse5@8.0.1: + resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + + pbf@4.0.2: + resolution: {integrity: sha512-J0ajxARhZfpUEebxYs1vhMGMuLSXtBe1e+fFPDrf2uA2hgo+UshKfNUWOz92HJNz6/NFEXseQPddnHkTreWRqg==} + hasBin: true + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pinia@3.0.4: + resolution: {integrity: sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==} + peerDependencies: + typescript: '>=4.5.0' + vue: ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} + engines: {node: '>=4'} + + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + engines: {node: ^10 || ^12 || >=14} + + potpack@2.1.0: + resolution: {integrity: sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==} + + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} + engines: {node: '>=6.0.0'} + + prettier@3.7.4: + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + engines: {node: '>=14'} + hasBin: true + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + protocol-buffers-schema@3.6.1: + resolution: {integrity: sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==} + + proxy-compare@3.0.1: + resolution: {integrity: sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==} + + proxy-from-env@1.0.0: + resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} + + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + + ps-tree@1.2.0: + resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} + engines: {node: '>= 0.10'} + hasBin: true + + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qrcode@1.5.4: + resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} + engines: {node: '>=10.13.0'} + hasBin: true + + qs@6.15.2: + resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quickselect@3.0.0: + resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==} + + raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + + read-package-json-fast@4.0.0: + resolution: {integrity: sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==} + engines: {node: ^18.17.0 || >=20.5.0} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + request-progress@3.0.0: + resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-protobuf-schema@2.1.0: + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rgbcolor@1.0.1: + resolution: {integrity: sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==} + engines: {node: '>= 0.8.15'} + + rollup@4.61.0: + resolution: {integrity: sha512-T9mWdbWfQtp0B5lv/HX+wrhYsmXRlcWnXXmJbXqKJhlRaoS6KMhq0gpyzW4UJfclcxrEdLnTgjT2NjruLONu0g==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.8.1: + resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} + engines: {node: '>=10'} + hasBin: true + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.4: + resolution: {integrity: sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==} + engines: {node: '>= 0.4'} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + engines: {node: '>=18'} + + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + + ssf@0.11.2: + resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==} + engines: {node: '>=0.8'} + + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + stackblur-canvas@2.7.0: + resolution: {integrity: sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==} + engines: {node: '>=0.1.14'} + + start-server-and-test@2.1.5: + resolution: {integrity: sha512-A/SbXpgXE25ScSkpLLqvGvVZT0ykN6+AzS8tVqMBCTxbJy2Nwuen59opT+afalK5aS+AuQmZs0EsLwjnuDN+/g==} + engines: {node: '>=16'} + hasBin: true + + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + + stream-combiner@0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.2.1: + resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} + engines: {node: '>=20'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supercluster@8.0.1: + resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==} + + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + svg-pathdata@6.0.3: + resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==} + engines: {node: '>=12.0.0'} + + sweetalert2@11.26.25: + resolution: {integrity: sha512-+hunCOJdJ6FLj04T9YSLvvZXRjsvIkTeTKP2e4VF8CaBias961BTnWiSFAy7F/CM5eq3QK2Rraoc5Gzftslvkg==} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.11.13: + resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} + engines: {node: ^14.18.0 || >=16.0.0} + + systeminformation@5.31.7: + resolution: {integrity: sha512-/8NC53e5nP9nmhn42/ncdOkyJnOoue/Vy+tJOyUGd1Yv66G069wK4rrziwhrqDETgk78CudTQupw5z19S5uoZw==} + engines: {node: '>=8.0.0'} + os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] + hasBin: true + + tailwind-merge@3.6.0: + resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==} + + tailwindcss@4.3.0: + resolution: {integrity: sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + text-segmentation@1.0.3: + resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} + + throttleit@1.0.1: + resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tinyqueue@3.0.0: + resolution: {integrity: sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + + tldts-core@7.4.2: + resolution: {integrity: sha512-nwEyF4vl4RSJjwSjBUmOSxc3BFPoIFdlRthJ6e+5v9P3bHNsoD06UjuqMUspqp7vsEZ1beaHi1km+optiE17yA==} + + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + hasBin: true + + tldts@7.4.2: + resolution: {integrity: sha512-kCwffuaH8ntKtygnWe1b4BJKWiCUH30n5KfoTr6IchcXOwR7chAOFJxFrH3vjANafUYrIA4a7SDL+nn7SiR4Sw==} + hasBin: true + + tmp@0.2.7: + resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} + engines: {node: '>=14.14'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} + + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} + engines: {node: '>=16'} + + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tw-animate-css@1.4.0: + resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + typescript-eslint@8.60.1: + resolution: {integrity: sha512-6m5hkkRAp8lKvhVpcprAIn5KkehQEh+47oHH2VGnExEh7dhNxXlg6GPAOIu6TxbVQxhebrJDvjl3020ooiWCMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unplugin-utils@0.3.1: + resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} + engines: {node: '>=20.19.0'} + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utrie@1.0.2: + resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} + + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + + vite-dev-rpc@2.0.0: + resolution: {integrity: sha512-yKwbTwdHKSD2k/aGqyWpPHepo45OQc8lH3/6IfT4ZqeKE26ooKvi4WIEKzqWav8v+9Is8u1k8q54hvOmqASazA==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0 || ^8.0.0 + + vite-hot-client@2.2.0: + resolution: {integrity: sha512-76Zs9zrHbH7M7wqeyooGQKdX+yg0pQ0xuQ1PbFp4z5a0Lzn2e5IPFoCswnmqZ4GiwqB4Jo3WcDAMO9jARTJl8w==} + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0 + + vite-plugin-inspect@11.4.1: + resolution: {integrity: sha512-ShOFe2PURXGvRS5OrgmOLZOCwDTD7dEBVt0tMpFPKb9AsvqXKCRGM8QgKrUbRbJYFXScHvDPpGRd28rYidC0tA==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^6.0.0 || ^7.0.0-0 || ^8.0.0-0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + vite-plugin-vue-devtools@8.1.2: + resolution: {integrity: sha512-gt5h1CNryR9Hy0tvhSbqY3j0F7aj0pGxBxWLa1lXSiZVkhdWDf0vbCOZyjh8ivFGE6FDHTGy3zkcZGlMZdVHig==} + engines: {node: '>=v14.21.3'} + peerDependencies: + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + + vite-plugin-vue-inspector@6.0.0: + resolution: {integrity: sha512-OpyITJLgZNibxlrik1EmRtvXHDjLRxNPsWkGFTERZs2LgMEdG4W0WoFt5GIgp3a3jRou+eJR8U1zOBk/XQgEbw==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + + vite@7.3.5: + resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.8: + resolution: {integrity: sha512-flY6ScbCIt9HThs+C5HS7jvGOB560DJtk/Z15IQROTA6zEy49Nh8T/dofWTQL+n3vswqn87sbJNiuqw1SDp5Ig==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.8 + '@vitest/browser-preview': 4.1.8 + '@vitest/browser-webdriverio': 4.1.8 + '@vitest/coverage-istanbul': 4.1.8 + '@vitest/coverage-v8': 4.1.8 + '@vitest/ui': 4.1.8 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + vue-component-type-helpers@3.3.3: + resolution: {integrity: sha512-x4nsFpy5Pe8fqPzp/5vkTPeTTDBpAx4WVtV47Ejt0+2FQrq4pRRsJs7JmYRqMFzTu/LW+pCWEjQ3YVCkPV7f9g==} + + vue-eslint-parser@10.4.0: + resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + + vue-router@4.6.4: + resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==} + peerDependencies: + vue: ^3.5.0 + + vue-tsc@3.3.3: + resolution: {integrity: sha512-SWUEG7YRUeDJHT7Xsuhf02elYX2gxPzzAII7OxDAh4KNOr4QHQ0Lls0YfnaO5GNd560CwVa2HTfdqmA5MqvRqQ==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.5.35: + resolution: {integrity: sha512-cx89fnr+0kVGHiNFG6y6s0bdjypJRFNZn6x3WPstNdQR1bi1mbB7h4v5IBGTsPJU3nK1+0Iqj3Zf+hZWMieR4Q==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + wait-on@9.0.4: + resolution: {integrity: sha512-k8qrgfwrPVJXTeFY8tl6BxVHiclK11u72DVKhpybHfUL/K6KM4bdyK9EhIVYGytB5MJe/3lq4Tf0hrjM+pvJZQ==} + engines: {node: '>=20.0.0'} + hasBin: true + + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + + whatwg-url@15.1.0: + resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} + engines: {node: '>=20'} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@5.0.0: + resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wmf@1.0.2: + resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==} + engines: {node: '>=0.8'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + word@0.3.0: + resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==} + engines: {node: '>=0.8'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.21.0: + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + engines: {node: '>=20'} + + xlsx@0.18.5: + resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==} + engines: {node: '>=0.8'} + hasBin: true + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yauzl@3.3.2: + resolution: {integrity: sha512-Md9ankxxN23wncAN8s7+Tn3Co52zLUPMtnrLAbVCnfG5d2tKBFfmygYSgXlqFgXObtzIgqkx7aNgDBpso9+4qA==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@acemir/cssom@0.9.31': {} + + '@asamuzakjp/css-color@4.1.2': + dependencies: + '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + lru-cache: 11.5.1 + + '@asamuzakjp/dom-selector@6.8.1': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.5.1 + + '@asamuzakjp/nwsapi@2.3.9': {} + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.7': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/traverse': 7.29.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-member-expression-to-functions@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/helper-plugin-utils@7.29.7': {} + + '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-decorators': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.29.7': {} + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/traverse@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@csstools/color-helpers@6.0.2': {} + + '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-color-parser@4.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.4(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + + '@csstools/css-tokenizer@4.0.0': {} + + '@cypress/request@4.0.1': + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 4.0.5 + http-signature: 1.4.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + performance-now: 2.1.0 + qs: 6.15.2 + safe-buffer: 5.2.1 + tough-cookie: 5.1.2 + tunnel-agent: 0.6.0 + + '@cypress/xvfb@1.2.4(supports-color@8.1.1)': + dependencies: + debug: 3.2.7(supports-color@8.1.1) + lodash.once: 4.1.1 + transitivePeerDependencies: + - supports-color + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.7.0))': + dependencies: + eslint: 9.39.4(jiti@2.7.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.2': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.5': + dependencies: + ajv: 6.15.0 + debug: 4.4.3(supports-color@8.1.1) + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.2.0 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.4': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@exodus/bytes@1.15.1': {} + + '@floating-ui/core@1.7.5': + dependencies: + '@floating-ui/utils': 0.2.11 + + '@floating-ui/dom@1.7.4': + dependencies: + '@floating-ui/core': 1.7.5 + '@floating-ui/utils': 0.2.11 + + '@floating-ui/utils@0.2.11': {} + + '@hapi/address@5.1.1': + dependencies: + '@hapi/hoek': 11.0.7 + + '@hapi/formula@3.0.2': {} + + '@hapi/hoek@11.0.7': {} + + '@hapi/pinpoint@2.0.1': {} + + '@hapi/tlds@1.1.6': {} + + '@hapi/topo@6.0.2': + dependencies: + '@hapi/hoek': 11.0.7 + + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@iconify/types@2.0.0': {} + + '@iconify/vue@5.0.1(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@iconify/types': 2.0.0 + vue: 3.5.35(typescript@5.9.3) + + '@internationalized/date@3.12.2': + dependencies: + '@swc/helpers': 0.5.23 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@kurkle/color@0.3.4': {} + + '@lucide/vue@1.17.0(vue@3.5.35(typescript@5.9.3))': + dependencies: + vue: 3.5.35(typescript@5.9.3) + + '@mapbox/jsonlint-lines-primitives@2.0.2': {} + + '@mapbox/point-geometry@1.1.0': {} + + '@mapbox/tiny-sdf@2.2.0': {} + + '@mapbox/unitbezier@0.0.1': {} + + '@mapbox/vector-tile@2.0.5': + dependencies: + '@mapbox/point-geometry': 1.1.0 + '@types/geojson': 7946.0.16 + pbf: 4.0.2 + + '@mapbox/whoots-js@3.1.0': {} + + '@maplibre/geojson-vt@5.0.4': {} + + '@maplibre/geojson-vt@6.1.0': + dependencies: + kdbush: 4.1.0 + + '@maplibre/maplibre-gl-style-spec@24.8.5': + dependencies: + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/unitbezier': 0.0.1 + json-stringify-pretty-compact: 4.0.0 + minimist: 1.2.8 + quickselect: 3.0.0 + tinyqueue: 3.0.0 + + '@maplibre/mlt@1.1.11': + dependencies: + '@mapbox/point-geometry': 1.1.0 + + '@maplibre/vt-pbf@4.3.0': + dependencies: + '@mapbox/point-geometry': 1.1.0 + '@mapbox/vector-tile': 2.0.5 + '@maplibre/geojson-vt': 5.0.4 + '@types/geojson': 7946.0.16 + '@types/supercluster': 7.1.3 + pbf: 4.0.2 + supercluster: 8.0.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@one-ini/wasm@0.1.1': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.3.6': {} + + '@polka/url@1.0.0-next.29': {} + + '@rolldown/pluginutils@1.0.1': {} + + '@rollup/rollup-android-arm-eabi@4.61.0': + optional: true + + '@rollup/rollup-android-arm64@4.61.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.61.0': + optional: true + + '@rollup/rollup-darwin-x64@4.61.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.61.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.61.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.61.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.61.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.61.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.61.0': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.61.0': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.61.0': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.61.0': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.61.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.61.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.61.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.61.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.61.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.61.0': + optional: true + + '@rollup/rollup-openbsd-x64@4.61.0': + optional: true + + '@rollup/rollup-openharmony-arm64@4.61.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.61.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.61.0': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.61.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.61.0': + optional: true + + '@standard-schema/spec@1.1.0': {} + + '@swc/helpers@0.5.23': + dependencies: + tslib: 2.8.1 + + '@tailwindcss/node@4.3.0': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.22.1 + jiti: 2.7.0 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.3.0 + + '@tailwindcss/oxide-android-arm64@4.3.0': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.3.0': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.3.0': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.3.0': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.3.0': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.0': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.3.0': + optional: true + + '@tailwindcss/oxide@4.3.0': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.3.0 + '@tailwindcss/oxide-darwin-arm64': 4.3.0 + '@tailwindcss/oxide-darwin-x64': 4.3.0 + '@tailwindcss/oxide-freebsd-x64': 4.3.0 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.0 + '@tailwindcss/oxide-linux-arm64-gnu': 4.3.0 + '@tailwindcss/oxide-linux-arm64-musl': 4.3.0 + '@tailwindcss/oxide-linux-x64-gnu': 4.3.0 + '@tailwindcss/oxide-linux-x64-musl': 4.3.0 + '@tailwindcss/oxide-wasm32-wasi': 4.3.0 + '@tailwindcss/oxide-win32-arm64-msvc': 4.3.0 + '@tailwindcss/oxide-win32-x64-msvc': 4.3.0 + + '@tailwindcss/vite@4.3.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))': + dependencies: + '@tailwindcss/node': 4.3.0 + '@tailwindcss/oxide': 4.3.0 + tailwindcss: 4.3.0 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + + '@tanstack/table-core@8.21.3': {} + + '@tanstack/vue-table@8.21.3(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@tanstack/table-core': 8.21.3 + vue: 3.5.35(typescript@5.9.3) + + '@tsconfig/node24@24.0.4': {} + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/esrecurse@4.3.1': {} + + '@types/estree@1.0.9': {} + + '@types/file-saver@2.0.7': {} + + '@types/geojson@7946.0.16': {} + + '@types/jsdom@27.0.0': + dependencies: + '@types/node': 24.12.4 + '@types/tough-cookie': 4.0.5 + parse5: 7.3.0 + + '@types/json-schema@7.0.15': {} + + '@types/lodash@4.17.24': {} + + '@types/node@24.12.4': + dependencies: + undici-types: 7.16.0 + + '@types/pako@2.0.4': {} + + '@types/qrcode@1.5.6': + dependencies: + '@types/node': 24.12.4 + + '@types/raf@3.4.3': + optional: true + + '@types/sinonjs__fake-timers@8.1.1': {} + + '@types/sizzle@2.3.10': {} + + '@types/supercluster@7.1.3': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/tmp@0.2.6': {} + + '@types/tough-cookie@4.0.5': {} + + '@types/trusted-types@2.0.7': + optional: true + + '@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.60.1 + '@typescript-eslint/type-utils': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.60.1 + eslint: 9.39.4(jiti@2.7.0) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.60.1 + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.60.1 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.4(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.60.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.60.1(typescript@5.9.3) + '@typescript-eslint/types': 8.60.1 + debug: 4.4.3(supports-color@8.1.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.60.1': + dependencies: + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/visitor-keys': 8.60.1 + + '@typescript-eslint/tsconfig-utils@8.60.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.4(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.60.1': {} + + '@typescript-eslint/typescript-estree@8.60.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.60.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.60.1(typescript@5.9.3) + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/visitor-keys': 8.60.1 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 10.2.5 + semver: 7.8.1 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.60.1 + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3) + eslint: 9.39.4(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.60.1': + dependencies: + '@typescript-eslint/types': 8.60.1 + eslint-visitor-keys: 5.0.1 + + '@vitejs/plugin-vue@6.0.7(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + vue: 3.5.35(typescript@5.9.3) + + '@vitest/eslint-plugin@1.6.19(@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)(vitest@4.1.8(@types/node@24.12.4)(jsdom@27.4.0)(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)))': + dependencies: + '@typescript-eslint/scope-manager': 8.60.1 + '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.7.0) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + typescript: 5.9.3 + vitest: 4.1.8(@types/node@24.12.4)(jsdom@27.4.0)(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@4.1.8': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.8 + '@vitest/utils': 4.1.8 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.8(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))': + dependencies: + '@vitest/spy': 4.1.8 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + + '@vitest/pretty-format@4.1.8': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.8': + dependencies: + '@vitest/utils': 4.1.8 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.8': + dependencies: + '@vitest/pretty-format': 4.1.8 + '@vitest/utils': 4.1.8 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.8': {} + + '@vitest/utils@4.1.8': + dependencies: + '@vitest/pretty-format': 4.1.8 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + '@volar/language-core@2.4.28': + dependencies: + '@volar/source-map': 2.4.28 + + '@volar/source-map@2.4.28': {} + + '@volar/typescript@2.4.28': + dependencies: + '@volar/language-core': 2.4.28 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vue/babel-helper-vue-transform-on@1.5.0': {} + + '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.29.7)': + dependencies: + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + '@vue/babel-helper-vue-transform-on': 1.5.0 + '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.29.7) + '@vue/shared': 3.5.35 + optionalDependencies: + '@babel/core': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.29.7)': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/parser': 7.29.7 + '@vue/compiler-sfc': 3.5.35 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.5.35': + dependencies: + '@babel/parser': 7.29.7 + '@vue/shared': 3.5.35 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.35': + dependencies: + '@vue/compiler-core': 3.5.35 + '@vue/shared': 3.5.35 + + '@vue/compiler-sfc@3.5.35': + dependencies: + '@babel/parser': 7.29.7 + '@vue/compiler-core': 3.5.35 + '@vue/compiler-dom': 3.5.35 + '@vue/compiler-ssr': 3.5.35 + '@vue/shared': 3.5.35 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.15 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.35': + dependencies: + '@vue/compiler-dom': 3.5.35 + '@vue/shared': 3.5.35 + + '@vue/devtools-api@6.6.4': {} + + '@vue/devtools-api@7.7.9': + dependencies: + '@vue/devtools-kit': 7.7.9 + + '@vue/devtools-core@8.1.2(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@vue/devtools-kit': 8.1.2 + '@vue/devtools-shared': 8.1.2 + vue: 3.5.35(typescript@5.9.3) + + '@vue/devtools-kit@7.7.9': + dependencies: + '@vue/devtools-shared': 7.7.9 + birpc: 2.9.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.6 + + '@vue/devtools-kit@8.1.2': + dependencies: + '@vue/devtools-shared': 8.1.2 + birpc: 2.9.0 + hookable: 5.5.3 + perfect-debounce: 2.1.0 + + '@vue/devtools-shared@7.7.9': + dependencies: + rfdc: 1.4.1 + + '@vue/devtools-shared@8.1.2': {} + + '@vue/eslint-config-prettier@10.2.0(eslint@9.39.4(jiti@2.7.0))(prettier@3.7.4)': + dependencies: + eslint: 9.39.4(jiti@2.7.0) + eslint-config-prettier: 10.1.8(eslint@9.39.4(jiti@2.7.0)) + eslint-plugin-prettier: 5.5.6(eslint-config-prettier@10.1.8(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0))(prettier@3.7.4) + prettier: 3.7.4 + transitivePeerDependencies: + - '@types/eslint' + + '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.7.0))))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.7.0) + eslint-plugin-vue: 10.6.2(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.7.0))) + fast-glob: 3.3.3 + typescript-eslint: 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + vue-eslint-parser: 10.4.0(eslint@9.39.4(jiti@2.7.0)) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@vue/language-core@3.3.3': + dependencies: + '@volar/language-core': 2.4.28 + '@vue/compiler-dom': 3.5.35 + '@vue/shared': 3.5.35 + alien-signals: 3.2.1 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + picomatch: 4.0.4 + + '@vue/reactivity@3.5.35': + dependencies: + '@vue/shared': 3.5.35 + + '@vue/runtime-core@3.5.35': + dependencies: + '@vue/reactivity': 3.5.35 + '@vue/shared': 3.5.35 + + '@vue/runtime-dom@3.5.35': + dependencies: + '@vue/reactivity': 3.5.35 + '@vue/runtime-core': 3.5.35 + '@vue/shared': 3.5.35 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.35(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@vue/compiler-ssr': 3.5.35 + '@vue/shared': 3.5.35 + vue: 3.5.35(typescript@5.9.3) + + '@vue/shared@3.5.35': {} + + '@vue/test-utils@2.4.10(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.35(typescript@5.9.3)))(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@vue/compiler-dom': 3.5.35 + js-beautify: 1.15.4 + vue: 3.5.35(typescript@5.9.3) + vue-component-type-helpers: 3.3.3 + optionalDependencies: + '@vue/server-renderer': 3.5.35(vue@3.5.35(typescript@5.9.3)) + + '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.35(typescript@5.9.3))': + optionalDependencies: + typescript: 5.9.3 + vue: 3.5.35(typescript@5.9.3) + + '@zag-js/accordion@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/anatomy@1.26.1': {} + + '@zag-js/aria-hidden@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + + '@zag-js/avatar@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/carousel@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/scroll-snap': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/checkbox@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/focus-visible': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/collection@1.26.1': + dependencies: + '@zag-js/utils': 1.26.1 + + '@zag-js/combobox@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/aria-hidden': 1.26.1 + '@zag-js/collection': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/popper': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/core@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/date-picker@1.26.1(@internationalized/date@3.12.2)': + dependencies: + '@internationalized/date': 3.12.2 + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/date-utils': 1.26.1(@internationalized/date@3.12.2) + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/live-region': 1.26.1 + '@zag-js/popper': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/date-utils@1.26.1(@internationalized/date@3.12.2)': + dependencies: + '@internationalized/date': 3.12.2 + + '@zag-js/dialog@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/aria-hidden': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/focus-trap': 1.26.1 + '@zag-js/remove-scroll': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/dismissable@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + '@zag-js/interact-outside': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/dom-query@1.26.1': + dependencies: + '@zag-js/types': 1.26.1 + + '@zag-js/focus-trap@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + + '@zag-js/focus-visible@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + + '@zag-js/interact-outside@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/live-region@1.26.1': {} + + '@zag-js/menu@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/popper': 1.26.1 + '@zag-js/rect-utils': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/pagination@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/popover@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/aria-hidden': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/focus-trap': 1.26.1 + '@zag-js/popper': 1.26.1 + '@zag-js/remove-scroll': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/popper@1.26.1': + dependencies: + '@floating-ui/dom': 1.7.4 + '@zag-js/dom-query': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/presence@1.26.1': + dependencies: + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + + '@zag-js/progress@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/radio-group@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/focus-visible': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/rect-utils@1.26.1': {} + + '@zag-js/remove-scroll@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + + '@zag-js/scroll-area@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/scroll-snap@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + + '@zag-js/select@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/collection': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/popper': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/slider@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/store@1.26.1': + dependencies: + proxy-compare: 3.0.1 + + '@zag-js/switch@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/focus-visible': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/tabs@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/toast@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/tooltip@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/focus-visible': 1.26.1 + '@zag-js/popper': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/types@1.26.1': + dependencies: + csstype: 3.1.3 + + '@zag-js/utils@1.26.1': {} + + '@zag-js/vue@1.26.1(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@zag-js/core': 1.26.1 + '@zag-js/store': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + vue: 3.5.35(typescript@5.9.3) + + abbrev@2.0.0: {} + + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn@8.16.0: {} + + adler-32@1.3.1: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + agent-base@7.1.4: {} + + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + alien-signals@3.2.1: {} + + ansi-escapes@7.3.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + ansis@4.3.1: {} + + arch@2.2.0: {} + + arg@5.0.2: {} + + argparse@2.0.1: {} + + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assert-plus@1.0.0: {} + + assertion-error@2.0.1: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + aws-sign2@0.7.0: {} + + aws4@1.13.2: {} + + axios@1.16.1(debug@4.4.3): + dependencies: + follow-redirects: 1.16.0(debug@4.4.3) + form-data: 4.0.5 + https-proxy-agent: 5.0.1 + proxy-from-env: 2.1.0 + transitivePeerDependencies: + - debug + - supports-color + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + base64-arraybuffer@1.0.2: + optional: true + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.10.33: {} + + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + + birpc@2.9.0: {} + + birpc@4.0.0: {} + + blob-util@2.0.2: {} + + bluebird@3.7.2: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.15: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.1.1: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.33 + caniuse-lite: 1.0.30001793 + electron-to-chromium: 1.5.364 + node-releases: 2.0.46 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + cachedir@2.4.0: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + caniuse-lite@1.0.30001793: {} + + canvg@3.0.11: + dependencies: + '@babel/runtime': 7.29.7 + '@types/raf': 3.4.3 + core-js: 3.49.0 + raf: 3.4.1 + regenerator-runtime: 0.13.11 + rgbcolor: 1.0.1 + stackblur-canvas: 2.7.0 + svg-pathdata: 6.0.3 + optional: true + + caseless@0.12.0: {} + + cfb@1.2.2: + dependencies: + adler-32: 1.3.1 + crc-32: 1.2.2 + + chai@6.2.2: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chart.js@4.5.1: + dependencies: + '@kurkle/color': 0.3.4 + + check-more-types@2.24.0: {} + + ci-info@4.4.0: {} + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-table3@0.6.1: + dependencies: + string-width: 4.2.3 + optionalDependencies: + colors: 1.4.0 + + cli-truncate@5.2.0: + dependencies: + slice-ansi: 8.0.0 + string-width: 8.2.1 + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + clsx@2.1.1: {} + + codepage@1.15.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + colors@1.4.0: + optional: true + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@10.0.1: {} + + commander@6.2.1: {} + + common-tags@1.8.2: {} + + concat-map@0.0.1: {} + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + convert-source-map@2.0.0: {} + + copy-anything@4.0.5: + dependencies: + is-what: 5.5.0 + + core-js@3.49.0: + optional: true + + core-util-is@1.0.2: {} + + crc-32@1.2.2: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-line-break@2.1.0: + dependencies: + utrie: 1.0.2 + optional: true + + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + + cssesc@3.0.0: {} + + cssstyle@5.3.7: + dependencies: + '@asamuzakjp/css-color': 4.1.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.4(css-tree@3.2.1) + css-tree: 3.2.1 + lru-cache: 11.5.1 + + csstype@3.1.3: {} + + csstype@3.2.3: {} + + cypress@15.16.0: + dependencies: + '@cypress/request': 4.0.1 + '@cypress/xvfb': 1.2.4(supports-color@8.1.1) + '@types/sinonjs__fake-timers': 8.1.1 + '@types/sizzle': 2.3.10 + '@types/tmp': 0.2.6 + arch: 2.2.0 + blob-util: 2.0.2 + bluebird: 3.7.2 + buffer: 5.7.1 + cachedir: 2.4.0 + chalk: 4.1.2 + ci-info: 4.4.0 + cli-table3: 0.6.1 + commander: 6.2.1 + common-tags: 1.8.2 + dayjs: 1.11.21 + debug: 4.4.3(supports-color@8.1.1) + eventemitter2: 6.4.7 + execa: 4.1.0 + executable: 4.1.1 + fs-extra: 9.1.0 + hasha: 5.2.2 + is-installed-globally: 0.4.0 + listr2: 9.0.5 + lodash: 4.18.1 + log-symbols: 4.1.0 + minimist: 1.2.8 + ospath: 1.2.2 + pretty-bytes: 5.6.0 + process: 0.11.10 + proxy-from-env: 1.0.0 + request-progress: 3.0.0 + supports-color: 8.1.1 + systeminformation: 5.31.7 + tmp: 0.2.7 + tree-kill: 1.2.2 + tslib: 1.14.1 + untildify: 4.0.0 + yauzl: 3.3.2 + + dashdash@1.14.1: + dependencies: + assert-plus: 1.0.0 + + data-urls@6.0.1: + dependencies: + whatwg-mimetype: 5.0.0 + whatwg-url: 15.1.0 + + dayjs@1.11.21: {} + + debug@3.2.7(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + debug@4.4.3(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@1.2.0: {} + + decimal.js@10.6.0: {} + + deep-is@0.1.4: {} + + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + define-lazy-prop@3.0.0: {} + + delayed-stream@1.0.0: {} + + detect-libc@2.1.2: {} + + dijkstrajs@1.0.3: {} + + dompurify@3.4.7: + optionalDependencies: + '@types/trusted-types': 2.0.7 + optional: true + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + earcut@3.0.2: {} + + eastasianwidth@0.2.0: {} + + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + + editorconfig@1.0.7: + dependencies: + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.9 + semver: 7.8.1 + + electron-to-chromium@1.5.364: {} + + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.22.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + entities@6.0.1: {} + + entities@7.0.1: {} + + entities@8.0.0: {} + + environment@1.1.0: {} + + error-stack-parser-es@1.0.5: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@2.1.0: {} + + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@10.1.8(eslint@9.39.4(jiti@2.7.0)): + dependencies: + eslint: 9.39.4(jiti@2.7.0) + + eslint-plugin-cypress@5.4.0(eslint@9.39.4(jiti@2.7.0)): + dependencies: + eslint: 9.39.4(jiti@2.7.0) + globals: 17.6.0 + + eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0))(prettier@3.7.4): + dependencies: + eslint: 9.39.4(jiti@2.7.0) + prettier: 3.7.4 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.13 + optionalDependencies: + eslint-config-prettier: 10.1.8(eslint@9.39.4(jiti@2.7.0)) + + eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.7.0))): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)) + eslint: 9.39.4(jiti@2.7.0) + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 7.1.1 + semver: 7.8.1 + vue-eslint-parser: 10.4.0(eslint@9.39.4(jiti@2.7.0)) + xml-name-validator: 4.0.0 + optionalDependencies: + '@typescript-eslint/parser': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-scope@9.1.2: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.9 + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@9.39.4(jiti@2.7.0): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 + ajv: 6.15.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.7.0 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 4.2.1 + + espree@11.2.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 5.0.1 + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + esutils@2.0.3: {} + + event-stream@3.3.4: + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + + eventemitter2@6.4.7: {} + + eventemitter3@5.0.4: {} + + execa@4.1.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + executable@4.1.1: + dependencies: + pify: 2.3.0 + + expect-type@1.3.0: {} + + extend@3.0.2: {} + + extsprintf@1.3.0: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-png@6.4.0: + dependencies: + '@types/pako': 2.0.4 + iobuffer: 5.4.0 + pako: 2.1.0 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + fflate@0.8.3: {} + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-saver@2.0.5: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flatted@3.4.2: {} + + follow-redirects@1.16.0(debug@4.4.3): + optionalDependencies: + debug: 4.4.3(supports-color@8.1.1) + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + forever-agent@0.6.1: {} + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.4 + mime-types: 2.1.35 + + frac@1.1.2: {} + + from@0.1.7: {} + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.6.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 + + get-stream@5.2.0: + dependencies: + pump: 3.0.4 + + get-stream@6.0.1: {} + + getpass@0.1.7: + dependencies: + assert-plus: 1.0.0 + + gl-matrix@3.4.4: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + global-dirs@3.0.1: + dependencies: + ini: 2.0.0 + + globals@14.0.0: {} + + globals@17.6.0: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasha@5.2.2: + dependencies: + is-stream: 2.0.1 + type-fest: 0.8.1 + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + hookable@5.5.3: {} + + html-encoding-sniffer@6.0.0: + dependencies: + '@exodus/bytes': 1.15.1 + transitivePeerDependencies: + - '@noble/hashes' + + html2canvas@1.4.1: + dependencies: + css-line-break: 2.1.0 + text-segmentation: 1.0.3 + optional: true + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + http-signature@1.4.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 2.0.2 + sshpk: 1.18.0 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + human-signals@1.1.1: {} + + human-signals@2.1.0: {} + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + ini@1.3.8: {} + + ini@2.0.0: {} + + iobuffer@5.4.0: {} + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@5.1.0: + dependencies: + get-east-asian-width: 1.6.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-installed-globally@0.4.0: + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-potential-custom-element-name@1.0.1: {} + + is-stream@2.0.1: {} + + is-typedarray@1.0.0: {} + + is-unicode-supported@0.1.0: {} + + is-what@5.5.0: {} + + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + + isexe@2.0.0: {} + + isexe@3.1.5: {} + + isstream@0.1.2: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@2.7.0: {} + + joi@18.2.1: + dependencies: + '@hapi/address': 5.1.1 + '@hapi/formula': 3.0.2 + '@hapi/hoek': 11.0.7 + '@hapi/pinpoint': 2.0.1 + '@hapi/tlds': 1.1.6 + '@hapi/topo': 6.0.2 + '@standard-schema/spec': 1.1.0 + + js-beautify@1.15.4: + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.7 + glob: 10.5.0 + js-cookie: 3.0.8 + nopt: 7.2.1 + + js-cookie@3.0.8: {} + + js-tokens@4.0.0: {} + + js-yaml@4.2.0: + dependencies: + argparse: 2.0.1 + + jsbn@0.1.1: {} + + jsdom@27.4.0: + dependencies: + '@acemir/cssom': 0.9.31 + '@asamuzakjp/dom-selector': 6.8.1 + '@exodus/bytes': 1.15.1 + cssstyle: 5.3.7 + data-urls: 6.0.1 + decimal.js: 10.6.0 + html-encoding-sniffer: 6.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + parse5: 8.0.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.1 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 15.1.0 + ws: 8.21.0 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - '@noble/hashes' + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@4.0.0: {} + + json-schema-traverse@0.4.1: {} + + json-schema@0.4.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-pretty-compact@4.0.0: {} + + json-stringify-safe@5.0.1: {} + + json5@2.2.3: {} + + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jspdf-autotable@5.0.8(jspdf@4.2.1): + dependencies: + jspdf: 4.2.1 + + jspdf@4.2.1: + dependencies: + '@babel/runtime': 7.29.7 + fast-png: 6.4.0 + fflate: 0.8.3 + optionalDependencies: + canvg: 3.0.11 + core-js: 3.49.0 + dompurify: 3.4.7 + html2canvas: 1.4.1 + + jsprim@2.0.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + + kdbush@4.1.0: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kolorist@1.8.0: {} + + lazy-ass@1.6.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + listr2@9.0.5: + dependencies: + cli-truncate: 5.2.0 + colorette: 2.0.20 + eventemitter3: 5.0.4 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.2 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + lodash.once@4.1.1: {} + + lodash@4.18.1: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.3.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + + lru-cache@10.4.3: {} + + lru-cache@11.5.1: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + map-stream@0.1.0: {} + + maplibre-gl@5.24.0: + dependencies: + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/point-geometry': 1.1.0 + '@mapbox/tiny-sdf': 2.2.0 + '@mapbox/unitbezier': 0.0.1 + '@mapbox/vector-tile': 2.0.5 + '@mapbox/whoots-js': 3.1.0 + '@maplibre/geojson-vt': 6.1.0 + '@maplibre/maplibre-gl-style-spec': 24.8.5 + '@maplibre/mlt': 1.1.11 + '@maplibre/vt-pbf': 4.3.0 + '@types/geojson': 7946.0.16 + earcut: 3.0.2 + gl-matrix: 3.4.4 + kdbush: 4.1.0 + murmurhash-js: 1.0.0 + pbf: 4.0.2 + potpack: 2.1.0 + quickselect: 3.0.0 + tinyqueue: 3.0.0 + + math-intrinsics@1.1.0: {} + + mdn-data@2.27.1: {} + + memorystream@0.3.1: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + mimic-function@5.0.1: {} + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.6 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.15 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.1 + + minimist@1.2.8: {} + + minipass@7.1.3: {} + + mitt@3.0.1: {} + + mrmime@2.0.1: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + murmurhash-js@1.0.0: {} + + nanoid@3.3.12: {} + + natural-compare@1.4.0: {} + + node-releases@2.0.46: {} + + nopt@7.2.1: + dependencies: + abbrev: 2.0.0 + + npm-normalize-package-bin@4.0.0: {} + + npm-run-all2@8.0.4: + dependencies: + ansi-styles: 6.2.3 + cross-spawn: 7.0.6 + memorystream: 0.3.1 + picomatch: 4.0.4 + pidtree: 0.6.0 + read-package-json-fast: 4.0.0 + shell-quote: 1.8.4 + which: 5.0.0 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-inspect@1.13.4: {} + + obug@2.1.1: {} + + ohash@2.0.11: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + open@11.0.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ospath@1.2.2: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + pako@2.1.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + parse5@8.0.1: + dependencies: + entities: 8.0.0 + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + pathe@2.0.3: {} + + pause-stream@0.0.11: + dependencies: + through: 2.3.8 + + pbf@4.0.2: + dependencies: + resolve-protobuf-schema: 2.1.0 + + pend@1.2.0: {} + + perfect-debounce@1.0.0: {} + + perfect-debounce@2.1.0: {} + + performance-now@2.1.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.4: {} + + pidtree@0.6.0: {} + + pify@2.3.0: {} + + pinia@3.0.4(typescript@5.9.3)(vue@3.5.35(typescript@5.9.3)): + dependencies: + '@vue/devtools-api': 7.7.9 + vue: 3.5.35(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + pngjs@5.0.0: {} + + postcss-selector-parser@7.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss@8.5.15: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + potpack@2.1.0: {} + + powershell-utils@0.1.0: {} + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.1: + dependencies: + fast-diff: 1.3.0 + + prettier@3.7.4: {} + + pretty-bytes@5.6.0: {} + + process@0.11.10: {} + + proto-list@1.2.4: {} + + protocol-buffers-schema@3.6.1: {} + + proxy-compare@3.0.1: {} + + proxy-from-env@1.0.0: {} + + proxy-from-env@2.1.0: {} + + ps-tree@1.2.0: + dependencies: + event-stream: 3.3.4 + + pump@3.0.4: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + punycode@2.3.1: {} + + qrcode@1.5.4: + dependencies: + dijkstrajs: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + + qs@6.15.2: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + quickselect@3.0.0: {} + + raf@3.4.1: + dependencies: + performance-now: 2.1.0 + optional: true + + read-package-json-fast@4.0.0: + dependencies: + json-parse-even-better-errors: 4.0.0 + npm-normalize-package-bin: 4.0.0 + + regenerator-runtime@0.13.11: + optional: true + + request-progress@3.0.0: + dependencies: + throttleit: 1.0.1 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + require-main-filename@2.0.0: {} + + resolve-from@4.0.0: {} + + resolve-protobuf-schema@2.1.0: + dependencies: + protocol-buffers-schema: 3.6.1 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rgbcolor@1.0.1: + optional: true + + rollup@4.61.0: + dependencies: + '@types/estree': 1.0.9 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.61.0 + '@rollup/rollup-android-arm64': 4.61.0 + '@rollup/rollup-darwin-arm64': 4.61.0 + '@rollup/rollup-darwin-x64': 4.61.0 + '@rollup/rollup-freebsd-arm64': 4.61.0 + '@rollup/rollup-freebsd-x64': 4.61.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.61.0 + '@rollup/rollup-linux-arm-musleabihf': 4.61.0 + '@rollup/rollup-linux-arm64-gnu': 4.61.0 + '@rollup/rollup-linux-arm64-musl': 4.61.0 + '@rollup/rollup-linux-loong64-gnu': 4.61.0 + '@rollup/rollup-linux-loong64-musl': 4.61.0 + '@rollup/rollup-linux-ppc64-gnu': 4.61.0 + '@rollup/rollup-linux-ppc64-musl': 4.61.0 + '@rollup/rollup-linux-riscv64-gnu': 4.61.0 + '@rollup/rollup-linux-riscv64-musl': 4.61.0 + '@rollup/rollup-linux-s390x-gnu': 4.61.0 + '@rollup/rollup-linux-x64-gnu': 4.61.0 + '@rollup/rollup-linux-x64-musl': 4.61.0 + '@rollup/rollup-openbsd-x64': 4.61.0 + '@rollup/rollup-openharmony-arm64': 4.61.0 + '@rollup/rollup-win32-arm64-msvc': 4.61.0 + '@rollup/rollup-win32-ia32-msvc': 4.61.0 + '@rollup/rollup-win32-x64-gnu': 4.61.0 + '@rollup/rollup-win32-x64-msvc': 4.61.0 + fsevents: 2.3.3 + + run-applescript@7.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + semver@6.3.1: {} + + semver@7.8.1: {} + + set-blocking@2.0.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.4: {} + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + + slice-ansi@7.1.2: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + slice-ansi@8.0.0: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + source-map-js@1.2.1: {} + + speakingurl@14.0.1: {} + + split@0.3.3: + dependencies: + through: 2.3.8 + + ssf@0.11.2: + dependencies: + frac: 1.1.2 + + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + + stackback@0.0.2: {} + + stackblur-canvas@2.7.0: + optional: true + + start-server-and-test@2.1.5: + dependencies: + arg: 5.0.2 + bluebird: 3.7.2 + check-more-types: 2.24.0 + debug: 4.4.3(supports-color@8.1.1) + execa: 5.1.1 + lazy-ass: 1.6.0 + ps-tree: 1.2.0 + wait-on: 9.0.4(debug@4.4.3) + transitivePeerDependencies: + - supports-color + + std-env@4.1.0: {} + + stream-combiner@0.0.4: + dependencies: + duplexer: 0.1.2 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + string-width@8.2.1: + dependencies: + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} + + supercluster@8.0.1: + dependencies: + kdbush: 4.1.0 + + superjson@2.2.6: + dependencies: + copy-anything: 4.0.5 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + svg-pathdata@6.0.3: + optional: true + + sweetalert2@11.26.25: {} + + symbol-tree@3.2.4: {} + + synckit@0.11.13: + dependencies: + '@pkgr/core': 0.3.6 + + systeminformation@5.31.7: {} + + tailwind-merge@3.6.0: {} + + tailwindcss@4.3.0: {} + + tapable@2.3.3: {} + + text-segmentation@1.0.3: + dependencies: + utrie: 1.0.2 + optional: true + + throttleit@1.0.1: {} + + through@2.3.8: {} + + tinybench@2.9.0: {} + + tinyexec@1.2.4: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyqueue@3.0.0: {} + + tinyrainbow@3.1.0: {} + + tldts-core@6.1.86: {} + + tldts-core@7.4.2: {} + + tldts@6.1.86: + dependencies: + tldts-core: 6.1.86 + + tldts@7.4.2: + dependencies: + tldts-core: 7.4.2 + + tmp@0.2.7: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + totalist@3.0.1: {} + + tough-cookie@5.1.2: + dependencies: + tldts: 6.1.86 + + tough-cookie@6.0.1: + dependencies: + tldts: 7.4.2 + + tr46@6.0.0: + dependencies: + punycode: 2.3.1 + + tree-kill@1.2.2: {} + + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + tslib@1.14.1: {} + + tslib@2.8.1: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tw-animate-css@1.4.0: {} + + tweetnacl@0.14.5: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.8.1: {} + + typescript-eslint@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.3: {} + + undici-types@7.16.0: {} + + universalify@2.0.1: {} + + unplugin-utils@0.3.1: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.4 + + untildify@4.0.0: {} + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + utrie@1.0.2: + dependencies: + base64-arraybuffer: 1.0.2 + optional: true + + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + + vite-dev-rpc@2.0.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)): + dependencies: + birpc: 4.0.0 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + vite-hot-client: 2.2.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + + vite-hot-client@2.2.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)): + dependencies: + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + + vite-plugin-inspect@11.4.1(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)): + dependencies: + ansis: 4.3.1 + error-stack-parser-es: 1.0.5 + obug: 2.1.1 + ohash: 2.0.11 + open: 11.0.0 + perfect-debounce: 2.1.0 + sirv: 3.0.2 + unplugin-utils: 0.3.1 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + vite-dev-rpc: 2.0.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + + vite-plugin-vue-devtools@8.1.2(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))(vue@3.5.35(typescript@5.9.3)): + dependencies: + '@vue/devtools-core': 8.1.2(vue@3.5.35(typescript@5.9.3)) + '@vue/devtools-kit': 8.1.2 + '@vue/devtools-shared': 8.1.2 + sirv: 3.0.2 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + vite-plugin-inspect: 11.4.1(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + vite-plugin-vue-inspector: 6.0.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + transitivePeerDependencies: + - '@nuxt/kit' + - supports-color + - vue + + vite-plugin-vue-inspector@6.0.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)): + dependencies: + '@babel/core': 7.29.7 + '@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7) + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.7) + '@vue/compiler-dom': 3.5.35 + kolorist: 1.8.0 + magic-string: 0.30.21 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + transitivePeerDependencies: + - supports-color + + vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0): + dependencies: + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 + rollup: 4.61.0 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 24.12.4 + fsevents: 2.3.3 + jiti: 2.7.0 + lightningcss: 1.32.0 + + vitest@4.1.8(@types/node@24.12.4)(jsdom@27.4.0)(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)): + dependencies: + '@vitest/expect': 4.1.8 + '@vitest/mocker': 4.1.8(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + '@vitest/pretty-format': 4.1.8 + '@vitest/runner': 4.1.8 + '@vitest/snapshot': 4.1.8 + '@vitest/spy': 4.1.8 + '@vitest/utils': 4.1.8 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.0 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.12.4 + jsdom: 27.4.0 + transitivePeerDependencies: + - msw + + vscode-uri@3.1.0: {} + + vue-component-type-helpers@3.3.3: {} + + vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.7.0)): + dependencies: + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.4(jiti@2.7.0) + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 + semver: 7.8.1 + transitivePeerDependencies: + - supports-color + + vue-router@4.6.4(vue@3.5.35(typescript@5.9.3)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.35(typescript@5.9.3) + + vue-tsc@3.3.3(typescript@5.9.3): + dependencies: + '@volar/typescript': 2.4.28 + '@vue/language-core': 3.3.3 + typescript: 5.9.3 + + vue@3.5.35(typescript@5.9.3): + dependencies: + '@vue/compiler-dom': 3.5.35 + '@vue/compiler-sfc': 3.5.35 + '@vue/runtime-dom': 3.5.35 + '@vue/server-renderer': 3.5.35(vue@3.5.35(typescript@5.9.3)) + '@vue/shared': 3.5.35 + optionalDependencies: + typescript: 5.9.3 + + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + + wait-on@9.0.4(debug@4.4.3): + dependencies: + axios: 1.16.1(debug@4.4.3) + joi: 18.2.1 + lodash: 4.18.1 + minimist: 1.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - debug + - supports-color + + webidl-conversions@8.0.1: {} + + whatwg-mimetype@4.0.0: {} + + whatwg-mimetype@5.0.0: {} + + whatwg-url@15.1.0: + dependencies: + tr46: 6.0.0 + webidl-conversions: 8.0.1 + + which-module@2.0.1: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@5.0.0: + dependencies: + isexe: 3.1.5 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wmf@1.0.2: {} + + word-wrap@1.2.5: {} + + word@0.3.0: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + wrappy@1.0.2: {} + + ws@8.21.0: {} + + wsl-utils@0.3.1: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.1.0 + + xlsx@0.18.5: + dependencies: + adler-32: 1.3.1 + cfb: 1.2.2 + codepage: 1.15.0 + crc-32: 1.2.2 + ssf: 0.11.2 + wmf: 1.0.2 + word: 0.3.0 + + xml-name-validator@4.0.0: {} + + xml-name-validator@5.0.0: {} + + xmlchars@2.2.0: {} + + y18n@4.0.3: {} + + yallist@3.1.1: {} + + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + yauzl@3.3.2: + dependencies: + pend: 1.2.0 + + yocto-queue@0.1.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..03cbbe5 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +packages: + - . + +allowBuilds: + esbuild: true diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..4aea46d Binary files /dev/null and b/public/favicon.ico differ diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000..16ce73f Binary files /dev/null and b/src/.DS_Store differ diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..7c2aa3f --- /dev/null +++ b/src/App.vue @@ -0,0 +1,3 @@ + diff --git a/src/assets/.DS_Store b/src/assets/.DS_Store new file mode 100644 index 0000000..6b03fd7 Binary files /dev/null and b/src/assets/.DS_Store differ diff --git a/src/assets/css/themes/enigma/side-menu.css b/src/assets/css/themes/enigma/side-menu.css new file mode 100644 index 0000000..0b84c89 --- /dev/null +++ b/src/assets/css/themes/enigma/side-menu.css @@ -0,0 +1,309 @@ +.enigma { + @media (min-width: theme(screens.xl)) { + .side-menu--collapsed:hover + .content.content--compact { + margin-left: 320px; + } + + .side-menu--collapsed:hover + .content.content--compact .content__scroll-area { + margin-left: -155px; + } + + .side-menu--collapsed:hover + .content.content--compact .top-bar { + margin-left: 320px; + } + + .side-menu--collapsed:hover + .content.content--compact .top-bar::before { + margin-left: -320px; + } + + .side-menu--collapsed:hover + .content.content--compact .top-bar::after { + margin-left: -320px; + } + } + + .side-menu { + @media (min-width: theme(screens.xl)) { + &.side-menu--collapsed { + &:hover { + .side-menu__group-label { + color: currentColor; + &:before { + @apply opacity-0; + } + } + .side-menu__link { + .side-menu__link__title { + color: currentColor; + } + .side-menu__link__badge { + opacity: 1; + } + .side-menu__link__chevron { + opacity: 1; + } + } + ul.scrollable { + > li { + > .side-menu__link { + .side-menu__link__icon { + margin-left: 0; + } + } + li { + .side-menu__link { + .side-menu__link__icon { + margin-left: 0; + } + } + } + } + } + } + .side-menu__group-label { + position: relative; + color: transparent; + transition-property: theme(transitionProperty.colors); + transition-duration: 100ms; + &:before { + content: '...'; + position: absolute; + text-align: center; + left: 0; + right: 0; + color: var(--color-background); + transition-property: opacity; + transition-duration: 100ms; + } + } + .side-menu__link { + .side-menu__link__title { + white-space: nowrap; + color: transparent; + transition-property: color; + transition-duration: theme(transitionDuration.300); + } + .side-menu__link__badge { + opacity: 0; + transition-property: opacity; + transition-duration: theme(transitionDuration.300); + } + .side-menu__link__chevron { + opacity: 0; + transition-property: opacity; + transition-duration: theme(transitionDuration.300); + } + .side-menu__link__icon { + transition-property: margin; + transition-duration: 100ms; + } + } + ul.scrollable { + > li { + > .side-menu__link { + .side-menu__link__icon { + margin-left: theme(spacing[2.5]); + } + } + li { + .side-menu__link { + .side-menu__link__icon { + margin-left: theme(spacing[1.5]); + } + } + } + } + } + } + ul.scrollable { + > li { + > .side-menu__link { + &.side-menu__link--active { + } + } + } + } + } + .side-menu__group-label { + white-space: nowrap; + font-size: theme(fontSize.xs); + opacity: theme(opacity.50); + margin-left: theme(spacing.2); + margin-top: theme(spacing.7); + margin-bottom: theme(spacing.3); + text-transform: uppercase; + } + .side-menu__link { + display: flex; + align-items: center; + margin-bottom: theme(spacing[1.5]); + padding: theme(spacing.4) theme(spacing.5); + &.side-menu__link--active { + font-weight: theme(fontWeight.medium); + .side-menu__link__icon { + } + .side-menu__link__title { + color: var(--color-primary); + } + .side-menu__link__chevron { + } + } + .side-menu__link__icon { + flex: none; + width: 1.15rem; + height: 1.15rem; + --color: color-mix(in oklch, var(--color-primary), transparent 30%); + } + .side-menu__link__title { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin-left: theme(spacing.3); + color: color-mix(in oklch, var(--color-foreground), transparent 20%); + } + .side-menu__link__badge { + min-width: 1.15rem; + height: 1.2rem; + padding: 0 theme(spacing.2); + display: flex; + align-items: center; + justify-content: center; + font-size: theme(fontSize.xs); + margin-left: theme(spacing[3.5]); + font-weight: theme(fontWeight.medium); + color: color-mix(in oklch, var(--color-primary), transparent 20%); + background-color: color-mix(in oklch, var(--color-primary), transparent 85%); + border: 1px solid color-mix(in oklch, var(--color-primary), transparent 85%); + border-radius: theme(borderRadius.lg); + } + .side-menu__link__chevron { + margin-left: auto; + stroke-width: 1.2; + color: color-mix(in oklch, var(--color-foreground), transparent 20%); + } + } + ul.scrollable { + position: relative; + > li { + > .side-menu__link { + border-radius: theme(borderRadius.full); + &.side-menu__link--active { + background: color-mix(in oklch, var(--color-background), var(--color-foreground) 3%); + border: 1px solid color-mix(in oklch, var(--color-foreground), transparent 90%); + box-shadow: theme('boxShadow.sm'); + &:before { + content: ''; + width: 7.8rem; + height: 7.8rem; + opacity: 0.1; + background-color: color-mix( + in oklch, + var(--color-background), + var(--color-foreground) 90% + ); + z-index: -2; + position: absolute; + right: 0px; + margin-right: -11.7em; + mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 16.039 122.1'%3E%3Cpath id='Union_1' data-name='Union 1' d='M16.038,122H16v-2.213a95.8,95.8,0,0,0-2.886-20.735A94.894,94.894,0,0,0,5.331,78.618,39.039,39.039,0,0,1,0,61.051,39.035,39.035,0,0,1,5.331,43.484a94.9,94.9,0,0,0,7.783-20.435A95.747,95.747,0,0,0,16,2.314V0l.039,122v0Z'/%3E%3C/svg%3E"); + } + &:after { + content: ''; + width: 7.8rem; + height: 7.8rem; + background-color: color-mix( + in oklch, + var(--color-background), + var(--color-foreground) 2% + ); + z-index: -1; + position: absolute; + right: -1px; + margin-right: -11.7em; + mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 16.039 122.1'%3E%3Cpath id='Union_1' data-name='Union 1' d='M16.038,122H16v-2.213a95.8,95.8,0,0,0-2.886-20.735A94.894,94.894,0,0,0,5.331,78.618,39.039,39.039,0,0,1,0,61.051,39.035,39.035,0,0,1,5.331,43.484a94.9,94.9,0,0,0,7.783-20.435A95.747,95.747,0,0,0,16,2.314V0l.039,122v0Z'/%3E%3C/svg%3E"); + } + } + &:hover:not(.side-menu__link--active) { + background: color-mix(in oklch, var(--color-background), transparent 50%); + } + } + ul { + padding: theme(spacing.1) 0; + background: color-mix(in oklch, var(--color-background), transparent 50%); + border-radius: theme(borderRadius.2xl); + border: 1px solid color-mix(in oklch, var(--color-foreground), transparent 90%); + margin-left: theme(spacing.1); + margin-right: theme(spacing.1); + margin-bottom: theme(spacing.2); + .side-menu__link { + margin-bottom: 0; + } + ul { + margin: 0px -1px; + } + } + } + } + } +} + +.dark { + .enigma { + .side-menu { + .side-menu__group-label { + opacity: theme(opacity.30); + } + .side-menu__link { + .side-menu__link__icon { + --color: --alpha(var(--color-foreground) / 70%); + } + .side-menu__link__title { + color: --alpha(var(--color-foreground) / 70%); + } + .side-menu__link__badge { + --color-primary: --alpha(var(--color-foreground) / 70%); + } + &.side-menu__link--active { + .side-menu__link__title { + color: var(--color-foreground); + } + } + } + ul.scrollable { + > li { + > .side-menu__link { + &.side-menu__link--active { + background: color-mix(in oklch, var(--color-background), white 14%); + &:before { + background-color: var(--color-foreground); + } + &:after { + background-color: color-mix(in oklch, var(--color-foreground), black 84%); + } + } + &:hover:not(.side-menu__link--active) { + background: color-mix(in oklch, var(--color-background), white 14%); + } + } + ul { + background: color-mix(in oklch, var(--color-background), white 10%); + } + } + } + } + } +} + +[data-theme='default']:not(.dark) .enigma .top-bar::before { + background-color: transparent; + background-image: var(--color-primary-gradient); + border-color: color-mix(in oklch, var(--color-blue-600), transparent 40%); +} + +[data-theme='default']:not(.dark) .enigma .top-bar::after { + background-color: transparent; + background-image: var(--color-primary-gradient); + opacity: 0.3; + border-color: transparent; +} diff --git a/src/assets/css/themes/enigma/top-menu.css b/src/assets/css/themes/enigma/top-menu.css new file mode 100644 index 0000000..aa8eb32 --- /dev/null +++ b/src/assets/css/themes/enigma/top-menu.css @@ -0,0 +1,262 @@ +.enigma { + .top-menu { + @media (min-width: theme(screens.xl)) { + @apply border-0; + display: flex; + z-index: 20; + height: theme(spacing.14); + gap: theme(spacing.6); + padding: 0 theme(spacing.14); + margin-bottom: -1px; + + &>li { + height: 100%; + position: relative; + + &>.top-menu__link { + height: 100%; + display: flex; + align-items: center; + gap: theme(spacing.3); + position: relative; + padding: 0 theme(spacing.7); + border-radius: theme(borderRadius.full); + + &.top-menu__link--active { + background: color-mix(in oklch, + var(--color-background), + var(--color-foreground) 3%); + border: 1px solid color-mix(in oklch, + var(--color-foreground), + transparent 90%); + box-shadow: theme("boxShadow.sm"); + + &:before { + content: ""; + width: 7.8rem; + height: 7.8rem; + opacity: 0.1; + background-color: color-mix(in oklch, + var(--color-background), + var(--color-foreground) 90%); + z-index: -2; + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; + margin-left: auto; + margin-right: auto; + margin-bottom: -10.1em; + mask-repeat: no-repeat; + transform: rotate(90deg); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 16.039 122.1'%3E%3Cpath id='Union_1' data-name='Union 1' d='M16.038,122H16v-2.213a95.8,95.8,0,0,0-2.886-20.735A94.894,94.894,0,0,0,5.331,78.618,39.039,39.039,0,0,1,0,61.051,39.035,39.035,0,0,1,5.331,43.484a94.9,94.9,0,0,0,7.783-20.435A95.747,95.747,0,0,0,16,2.314V0l.039,122v0Z'/%3E%3C/svg%3E"); + pointer-events: none; + } + + &:after { + content: ""; + width: 7.8rem; + height: 7.8rem; + background-color: color-mix(in oklch, + var(--color-background), + var(--color-foreground) 2%); + z-index: -1; + position: absolute; + bottom: -1px; + left: 0px; + right: 0px; + margin-left: auto; + margin-right: auto; + margin-bottom: -10.1em; + mask-repeat: no-repeat; + transform: rotate(90deg); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 16.039 122.1'%3E%3Cpath id='Union_1' data-name='Union 1' d='M16.038,122H16v-2.213a95.8,95.8,0,0,0-2.886-20.735A94.894,94.894,0,0,0,5.331,78.618,39.039,39.039,0,0,1,0,61.051,39.035,39.035,0,0,1,5.331,43.484a94.9,94.9,0,0,0,7.783-20.435A95.747,95.747,0,0,0,16,2.314V0l.039,122v0Z'/%3E%3C/svg%3E"); + pointer-events: none; + } + + .top-menu__link__title { + font-weight: theme(fontWeight.medium); + } + + .top-menu__link__icon { + --color: var(--color-primary); + } + } + + .top-menu__link__icon { + &>svg { + --color: var(--color-primary); + } + } + + .top-menu__link__title { + display: flex; + align-items: center; + gap: theme(spacing.3); + } + + .top-menu__link__chevron { + margin-left: auto; + } + } + + &:hover>ul { + display: block; + } + + ul { + display: none; + width: theme(spacing.72); + position: absolute; + left: 50%; + transform: translateX(-50%); + margin-top: calc(theme(spacing.20) * -1); + background: var(--color-background); + border: 1px solid --alpha(var(--color-foreground) / 10%); + border-radius: theme(borderRadius.2xl); + padding: theme(spacing.3) theme(spacing.2); + box-shadow: theme(boxShadow.lg); + z-index: 2; + + .top-menu__link { + height: theme(spacing.12); + display: flex; + align-items: center; + gap: theme(spacing.3); + padding: 0 theme(spacing.5); + position: relative; + + .top-menu__link__title { + width: 100%; + display: flex; + align-items: center; + gap: theme(spacing.3); + } + + .top-menu__link__chevron { + margin-left: auto; + } + } + + li { + position: relative; + + &:hover>ul { + display: block; + } + } + + ul { + display: none; + margin-top: 0; + left: 100%; + top: 0; + transform: translateX(0); + } + } + } + } + + @media (max-width: theme(screens.xl)) { + padding: theme(spacing.5) theme(spacing.4); + + >li { + z-index: 10; + position: relative; + + ul { + padding: theme(spacing.1) 0; + background: color-mix(in oklch, + var(--color-background), + transparent 90%); + border-radius: theme(borderRadius.2xl); + border: 1px solid color-mix(in oklch, + var(--color-background), + transparent 87%); + margin-left: theme(spacing.2); + margin-right: theme(spacing.2); + margin-bottom: theme(spacing.2); + + .top-menu__link { + margin-bottom: 0; + } + + ul { + margin: 0px -1px; + } + } + + .top-menu__link { + display: flex; + align-items: center; + margin-bottom: theme(spacing[1.5]); + padding: theme(spacing.4) theme(spacing.5); + + &.top-menu__link--active { + font-weight: theme(fontWeight.medium); + + .top-menu__link__title { + color: var(--color-background); + } + } + + .top-menu__link__icon>svg { + width: 1.15rem; + height: 1.15rem; + --color: var(--color-background); + } + + .top-menu__link__title { + width: 100%; + display: flex; + align-items: center; + margin-left: theme(spacing.3); + color: --alpha(var(--color-background) / 80%); + + .top-menu__link__chevron { + margin-left: auto; + stroke-width: 1.2; + color: color-mix(in oklch, + var(--color-background), + transparent 20%); + } + } + } + } + } + } +} + +.dark { + .enigma { + .top-menu { + @media (min-width: theme(screens.xl)) { + >li { + >.top-menu__link { + &.top-menu__link--active { + background: color-mix(in oklch, + var(--color-background), + white 14%); + + &:before { + background-color: var(--color-foreground); + } + + &:after { + background-color: color-mix(in oklch, + var(--color-foreground), + black 85%); + } + } + } + } + } + + @media (max-width: theme(screens.xl)) { + >li { + --color-background: var(--color-foreground); + } + } + } + } +} \ No newline at end of file diff --git a/src/assets/images/accent.svg b/src/assets/images/accent.svg new file mode 100644 index 0000000..9569b68 --- /dev/null +++ b/src/assets/images/accent.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/bg-pattern.svg b/src/assets/images/bg-pattern.svg new file mode 100644 index 0000000..e6a7c20 --- /dev/null +++ b/src/assets/images/bg-pattern.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/error-illustration.svg b/src/assets/images/error-illustration.svg new file mode 100644 index 0000000..19f09e9 --- /dev/null +++ b/src/assets/images/error-illustration.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/illustration.svg b/src/assets/images/illustration.svg new file mode 100644 index 0000000..a0ae933 --- /dev/null +++ b/src/assets/images/illustration.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/logo-original.svg b/src/assets/images/logo-original.svg new file mode 100644 index 0000000..9fa3c6a --- /dev/null +++ b/src/assets/images/logo-original.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KOPERASI PERMODALAN KELANTAN BERHAD + + + diff --git a/src/assets/images/logo.svg b/src/assets/images/logo.svg new file mode 100644 index 0000000..5498014 --- /dev/null +++ b/src/assets/images/logo.svg @@ -0,0 +1,649 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/noise.png b/src/assets/images/noise.png new file mode 100644 index 0000000..37afd82 Binary files /dev/null and b/src/assets/images/noise.png differ diff --git a/src/assets/images/phone-illustration.svg b/src/assets/images/phone-illustration.svg new file mode 100644 index 0000000..279c65a --- /dev/null +++ b/src/assets/images/phone-illustration.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/placeholders/200x200.jpg b/src/assets/images/placeholders/200x200.jpg new file mode 100755 index 0000000..4d40faa Binary files /dev/null and b/src/assets/images/placeholders/200x200.jpg differ diff --git a/src/assets/images/placeholders/800x800.jpg b/src/assets/images/placeholders/800x800.jpg new file mode 100755 index 0000000..560c7f6 Binary files /dev/null and b/src/assets/images/placeholders/800x800.jpg differ diff --git a/src/assets/images/woman-illustration.svg b/src/assets/images/woman-illustration.svg new file mode 100644 index 0000000..f023ddf --- /dev/null +++ b/src/assets/images/woman-illustration.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/account-dropdown/AccountDropdown.vue b/src/components/account-dropdown/AccountDropdown.vue new file mode 100644 index 0000000..302a1dd --- /dev/null +++ b/src/components/account-dropdown/AccountDropdown.vue @@ -0,0 +1,125 @@ + + + diff --git a/src/components/account-dropdown/AccountTrigger.vue b/src/components/account-dropdown/AccountTrigger.vue new file mode 100644 index 0000000..2091312 --- /dev/null +++ b/src/components/account-dropdown/AccountTrigger.vue @@ -0,0 +1,73 @@ + + + diff --git a/src/components/account-dropdown/index.ts b/src/components/account-dropdown/index.ts new file mode 100644 index 0000000..735218a --- /dev/null +++ b/src/components/account-dropdown/index.ts @@ -0,0 +1,2 @@ +export { default as AccountDropdown } from './AccountDropdown.vue' +export { default as AccountTrigger } from './AccountTrigger.vue' diff --git a/src/components/chart-presets/Bar1.vue b/src/components/chart-presets/Bar1.vue new file mode 100644 index 0000000..90f11b3 --- /dev/null +++ b/src/components/chart-presets/Bar1.vue @@ -0,0 +1,99 @@ + + + diff --git a/src/components/chart-presets/Bar2.vue b/src/components/chart-presets/Bar2.vue new file mode 100644 index 0000000..cc296da --- /dev/null +++ b/src/components/chart-presets/Bar2.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/components/chart-presets/Donut1.vue b/src/components/chart-presets/Donut1.vue new file mode 100644 index 0000000..02ac1ab --- /dev/null +++ b/src/components/chart-presets/Donut1.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/components/chart-presets/Donut2.vue b/src/components/chart-presets/Donut2.vue new file mode 100644 index 0000000..e883f56 --- /dev/null +++ b/src/components/chart-presets/Donut2.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/components/chart-presets/Line1.vue b/src/components/chart-presets/Line1.vue new file mode 100644 index 0000000..35956a6 --- /dev/null +++ b/src/components/chart-presets/Line1.vue @@ -0,0 +1,92 @@ + + + diff --git a/src/components/chart-presets/Line2.vue b/src/components/chart-presets/Line2.vue new file mode 100644 index 0000000..5cdb4f1 --- /dev/null +++ b/src/components/chart-presets/Line2.vue @@ -0,0 +1,72 @@ + + + diff --git a/src/components/chart-presets/Line3.vue b/src/components/chart-presets/Line3.vue new file mode 100644 index 0000000..36630d5 --- /dev/null +++ b/src/components/chart-presets/Line3.vue @@ -0,0 +1,82 @@ + + + diff --git a/src/components/chart-presets/Pie1.vue b/src/components/chart-presets/Pie1.vue new file mode 100644 index 0000000..714f941 --- /dev/null +++ b/src/components/chart-presets/Pie1.vue @@ -0,0 +1,42 @@ + + + diff --git a/src/components/chart-presets/index.ts b/src/components/chart-presets/index.ts new file mode 100644 index 0000000..63b68f3 --- /dev/null +++ b/src/components/chart-presets/index.ts @@ -0,0 +1,8 @@ +export { default as Line1 } from './Line1.vue' //report-line-chart +export { default as Line2 } from './Line2.vue' //simple-line-chart-1 +export { default as Line3 } from './Line3.vue' //simple-line-chart-3, simple-line-chart-4 +export { default as Pie1 } from './Pie1.vue' //report-pie-chart +export { default as Donut1 } from './Donut1.vue' //report-donut-chart +export { default as Donut2 } from './Donut2.vue' //report-donut-chart-1 +export { default as Bar1 } from './Bar1.vue' //report-bar-chart +export { default as Bar2 } from './Bar2.vue' //report-bar-chart-1 diff --git a/src/components/daily-notes/DailyNotes.vue b/src/components/daily-notes/DailyNotes.vue new file mode 100644 index 0000000..e10bc45 --- /dev/null +++ b/src/components/daily-notes/DailyNotes.vue @@ -0,0 +1,122 @@ + + + diff --git a/src/components/daily-notes/index.ts b/src/components/daily-notes/index.ts new file mode 100644 index 0000000..ec217b6 --- /dev/null +++ b/src/components/daily-notes/index.ts @@ -0,0 +1 @@ +export { default as DailyNotes } from './DailyNotes.vue' diff --git a/src/components/docs/ApiButton.vue b/src/components/docs/ApiButton.vue new file mode 100644 index 0000000..7633727 --- /dev/null +++ b/src/components/docs/ApiButton.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/docs/InstallPackage.vue b/src/components/docs/InstallPackage.vue new file mode 100644 index 0000000..d680ead --- /dev/null +++ b/src/components/docs/InstallPackage.vue @@ -0,0 +1,101 @@ + + + diff --git a/src/components/docs/Menu.vue b/src/components/docs/Menu.vue new file mode 100644 index 0000000..70870cf --- /dev/null +++ b/src/components/docs/Menu.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/docs/Preview.vue b/src/components/docs/Preview.vue new file mode 100644 index 0000000..4ab05a5 --- /dev/null +++ b/src/components/docs/Preview.vue @@ -0,0 +1,42 @@ + + + diff --git a/src/components/docs/PreviewCode.vue b/src/components/docs/PreviewCode.vue new file mode 100644 index 0000000..ec3bd0d --- /dev/null +++ b/src/components/docs/PreviewCode.vue @@ -0,0 +1,88 @@ + + + diff --git a/src/components/docs/SectionContent.vue b/src/components/docs/SectionContent.vue new file mode 100644 index 0000000..af1d956 --- /dev/null +++ b/src/components/docs/SectionContent.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/components/docs/SectionTitle.vue b/src/components/docs/SectionTitle.vue new file mode 100644 index 0000000..636a005 --- /dev/null +++ b/src/components/docs/SectionTitle.vue @@ -0,0 +1,5 @@ + diff --git a/src/components/docs/Subtitle.vue b/src/components/docs/Subtitle.vue new file mode 100644 index 0000000..db126de --- /dev/null +++ b/src/components/docs/Subtitle.vue @@ -0,0 +1,5 @@ + diff --git a/src/components/docs/Title.vue b/src/components/docs/Title.vue new file mode 100644 index 0000000..7c0a60b --- /dev/null +++ b/src/components/docs/Title.vue @@ -0,0 +1,5 @@ + diff --git a/src/components/docs/Wrapper.vue b/src/components/docs/Wrapper.vue new file mode 100644 index 0000000..cc3f2ed --- /dev/null +++ b/src/components/docs/Wrapper.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/docs/index.ts b/src/components/docs/index.ts new file mode 100644 index 0000000..d3e7dfe --- /dev/null +++ b/src/components/docs/index.ts @@ -0,0 +1,10 @@ +export { default as Wrapper } from "./Wrapper.vue"; +export { default as Menu } from "./Menu.vue"; +export { default as Title } from "./Title.vue"; +export { default as Subtitle } from "./Subtitle.vue"; +export { default as Preview } from "./Preview.vue"; +export { default as SectionTitle } from "./SectionTitle.vue"; +export { default as SectionContent } from "./SectionContent.vue"; +export { default as InstallPackage } from "./InstallPackage.vue"; +export { default as PreviewCode } from "./PreviewCode.vue"; +export { default as ApiButton } from "./ApiButton.vue"; diff --git a/src/components/notification-dropdown/NotificationDropdown.vue b/src/components/notification-dropdown/NotificationDropdown.vue new file mode 100644 index 0000000..2ec7241 --- /dev/null +++ b/src/components/notification-dropdown/NotificationDropdown.vue @@ -0,0 +1,151 @@ + + + diff --git a/src/components/notification-dropdown/index.ts b/src/components/notification-dropdown/index.ts new file mode 100644 index 0000000..17b5536 --- /dev/null +++ b/src/components/notification-dropdown/index.ts @@ -0,0 +1 @@ +export { default as NotificationDropdown } from './NotificationDropdown.vue' diff --git a/src/components/official-stores/OfficialStores.vue b/src/components/official-stores/OfficialStores.vue new file mode 100644 index 0000000..cdec6a8 --- /dev/null +++ b/src/components/official-stores/OfficialStores.vue @@ -0,0 +1,143 @@ + + + diff --git a/src/components/official-stores/index.ts b/src/components/official-stores/index.ts new file mode 100644 index 0000000..91bb4d7 --- /dev/null +++ b/src/components/official-stores/index.ts @@ -0,0 +1 @@ +export { default as OfficialStores } from './OfficialStores.vue' diff --git a/src/components/quick-search-dialog/QuickSearchDialog.vue b/src/components/quick-search-dialog/QuickSearchDialog.vue new file mode 100644 index 0000000..15e56bb --- /dev/null +++ b/src/components/quick-search-dialog/QuickSearchDialog.vue @@ -0,0 +1,142 @@ + + + diff --git a/src/components/quick-search-dialog/index.ts b/src/components/quick-search-dialog/index.ts new file mode 100644 index 0000000..7a201c7 --- /dev/null +++ b/src/components/quick-search-dialog/index.ts @@ -0,0 +1 @@ +export { default as QuickSearchDialog } from './QuickSearchDialog.vue' diff --git a/src/components/recent-activities/RecentActivities.vue b/src/components/recent-activities/RecentActivities.vue new file mode 100644 index 0000000..e77ccf2 --- /dev/null +++ b/src/components/recent-activities/RecentActivities.vue @@ -0,0 +1,182 @@ + + + diff --git a/src/components/recent-activities/index.ts b/src/components/recent-activities/index.ts new file mode 100644 index 0000000..ba48953 --- /dev/null +++ b/src/components/recent-activities/index.ts @@ -0,0 +1 @@ +export { default as RecentActivities } from './RecentActivities.vue' diff --git a/src/components/schedules/Schedules.vue b/src/components/schedules/Schedules.vue new file mode 100644 index 0000000..2a1e600 --- /dev/null +++ b/src/components/schedules/Schedules.vue @@ -0,0 +1,167 @@ + + + diff --git a/src/components/schedules/index.ts b/src/components/schedules/index.ts new file mode 100644 index 0000000..ceb8c37 --- /dev/null +++ b/src/components/schedules/index.ts @@ -0,0 +1 @@ +export { default as Schedules } from './Schedules.vue' diff --git a/src/components/side-menu/SideMenu.vue b/src/components/side-menu/SideMenu.vue new file mode 100644 index 0000000..df4aed4 --- /dev/null +++ b/src/components/side-menu/SideMenu.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/src/components/side-menu/index.ts b/src/components/side-menu/index.ts new file mode 100644 index 0000000..c249b31 --- /dev/null +++ b/src/components/side-menu/index.ts @@ -0,0 +1 @@ +export { default as SideMenu } from './SideMenu.vue' diff --git a/src/components/theme-switcher/ThemeSwitcher.vue b/src/components/theme-switcher/ThemeSwitcher.vue new file mode 100644 index 0000000..68d599e --- /dev/null +++ b/src/components/theme-switcher/ThemeSwitcher.vue @@ -0,0 +1,121 @@ + + + diff --git a/src/components/theme-switcher/index.ts b/src/components/theme-switcher/index.ts new file mode 100644 index 0000000..8ad3e96 --- /dev/null +++ b/src/components/theme-switcher/index.ts @@ -0,0 +1 @@ +export { default as ThemeSwitcher } from './ThemeSwitcher.vue' diff --git a/src/components/top-menu/TopMenu.vue b/src/components/top-menu/TopMenu.vue new file mode 100644 index 0000000..04a0172 --- /dev/null +++ b/src/components/top-menu/TopMenu.vue @@ -0,0 +1,166 @@ + + + diff --git a/src/components/top-menu/index.ts b/src/components/top-menu/index.ts new file mode 100644 index 0000000..d4a4b17 --- /dev/null +++ b/src/components/top-menu/index.ts @@ -0,0 +1,3 @@ +import TopMenu from "./TopMenu.vue"; + +export { TopMenu }; diff --git a/src/components/transactions/Transactions.vue b/src/components/transactions/Transactions.vue new file mode 100644 index 0000000..b582b7e --- /dev/null +++ b/src/components/transactions/Transactions.vue @@ -0,0 +1,104 @@ + + + diff --git a/src/components/transactions/index.ts b/src/components/transactions/index.ts new file mode 100644 index 0000000..1ec6838 --- /dev/null +++ b/src/components/transactions/index.ts @@ -0,0 +1 @@ +export { default as Transactions } from './Transactions.vue' diff --git a/src/components/ui/accordion/AccordionContent.vue b/src/components/ui/accordion/AccordionContent.vue new file mode 100644 index 0000000..40a71af --- /dev/null +++ b/src/components/ui/accordion/AccordionContent.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/accordion/AccordionItem.vue b/src/components/ui/accordion/AccordionItem.vue new file mode 100644 index 0000000..f5759fa --- /dev/null +++ b/src/components/ui/accordion/AccordionItem.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/components/ui/accordion/AccordionRoot.vue b/src/components/ui/accordion/AccordionRoot.vue new file mode 100644 index 0000000..8bf948e --- /dev/null +++ b/src/components/ui/accordion/AccordionRoot.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/ui/accordion/AccordionTrigger.vue b/src/components/ui/accordion/AccordionTrigger.vue new file mode 100644 index 0000000..46d7292 --- /dev/null +++ b/src/components/ui/accordion/AccordionTrigger.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/ui/accordion/index.ts b/src/components/ui/accordion/index.ts new file mode 100644 index 0000000..85d9eb2 --- /dev/null +++ b/src/components/ui/accordion/index.ts @@ -0,0 +1,4 @@ +export { default as AccordionRoot } from "./AccordionRoot.vue"; +export { default as AccordionItem } from "./AccordionItem.vue"; +export { default as AccordionTrigger } from "./AccordionTrigger.vue"; +export { default as AccordionContent } from "./AccordionContent.vue"; diff --git a/src/components/ui/alert/AlertCloseTrigger.vue b/src/components/ui/alert/AlertCloseTrigger.vue new file mode 100644 index 0000000..7f9ef68 --- /dev/null +++ b/src/components/ui/alert/AlertCloseTrigger.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/alert/AlertDescription.vue b/src/components/ui/alert/AlertDescription.vue new file mode 100644 index 0000000..e84cdcc --- /dev/null +++ b/src/components/ui/alert/AlertDescription.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/alert/AlertRoot.vue b/src/components/ui/alert/AlertRoot.vue new file mode 100644 index 0000000..86ca297 --- /dev/null +++ b/src/components/ui/alert/AlertRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/alert/AlertTitle.vue b/src/components/ui/alert/AlertTitle.vue new file mode 100644 index 0000000..3891b27 --- /dev/null +++ b/src/components/ui/alert/AlertTitle.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/alert/index.ts b/src/components/ui/alert/index.ts new file mode 100644 index 0000000..d1619d8 --- /dev/null +++ b/src/components/ui/alert/index.ts @@ -0,0 +1,4 @@ +export { default as AlertRoot } from "./AlertRoot.vue"; +export { default as AlertTitle } from "./AlertTitle.vue"; +export { default as AlertDescription } from "./AlertDescription.vue"; +export { default as AlertCloseTrigger } from "./AlertCloseTrigger.vue"; diff --git a/src/components/ui/avatar/AvatarFallback.vue b/src/components/ui/avatar/AvatarFallback.vue new file mode 100644 index 0000000..92fe74b --- /dev/null +++ b/src/components/ui/avatar/AvatarFallback.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/avatar/AvatarImage.vue b/src/components/ui/avatar/AvatarImage.vue new file mode 100644 index 0000000..6de2fc0 --- /dev/null +++ b/src/components/ui/avatar/AvatarImage.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/avatar/AvatarRoot.vue b/src/components/ui/avatar/AvatarRoot.vue new file mode 100644 index 0000000..1a38d5d --- /dev/null +++ b/src/components/ui/avatar/AvatarRoot.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/components/ui/avatar/index.ts b/src/components/ui/avatar/index.ts new file mode 100644 index 0000000..ece62de --- /dev/null +++ b/src/components/ui/avatar/index.ts @@ -0,0 +1,3 @@ +export { default as AvatarRoot } from "./AvatarRoot.vue"; +export { default as AvatarFallback } from "./AvatarFallback.vue"; +export { default as AvatarImage } from "./AvatarImage.vue"; diff --git a/src/components/ui/badge/Badge.vue b/src/components/ui/badge/Badge.vue new file mode 100644 index 0000000..d0d5c8d --- /dev/null +++ b/src/components/ui/badge/Badge.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/components/ui/badge/index.ts b/src/components/ui/badge/index.ts new file mode 100644 index 0000000..0934d6b --- /dev/null +++ b/src/components/ui/badge/index.ts @@ -0,0 +1 @@ +export { default as Badge } from "./Badge.vue"; diff --git a/src/components/ui/box/box.vue b/src/components/ui/box/box.vue new file mode 100644 index 0000000..d076bb0 --- /dev/null +++ b/src/components/ui/box/box.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/box/index.ts b/src/components/ui/box/index.ts new file mode 100644 index 0000000..1582e30 --- /dev/null +++ b/src/components/ui/box/index.ts @@ -0,0 +1 @@ +export { default as Box } from "./box.vue"; diff --git a/src/components/ui/breadcrumb/Breadcrumb.vue b/src/components/ui/breadcrumb/Breadcrumb.vue new file mode 100644 index 0000000..aed4e6f --- /dev/null +++ b/src/components/ui/breadcrumb/Breadcrumb.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/components/ui/breadcrumb/BreadcrumbItem.vue b/src/components/ui/breadcrumb/BreadcrumbItem.vue new file mode 100644 index 0000000..54408ee --- /dev/null +++ b/src/components/ui/breadcrumb/BreadcrumbItem.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/breadcrumb/BreadcrumbLink.vue b/src/components/ui/breadcrumb/BreadcrumbLink.vue new file mode 100644 index 0000000..da9e41b --- /dev/null +++ b/src/components/ui/breadcrumb/BreadcrumbLink.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/breadcrumb/BreadcrumbList.vue b/src/components/ui/breadcrumb/BreadcrumbList.vue new file mode 100644 index 0000000..a8e1611 --- /dev/null +++ b/src/components/ui/breadcrumb/BreadcrumbList.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/breadcrumb/index.ts b/src/components/ui/breadcrumb/index.ts new file mode 100644 index 0000000..34d8639 --- /dev/null +++ b/src/components/ui/breadcrumb/index.ts @@ -0,0 +1,4 @@ +export { default as Breadcrumb } from "./Breadcrumb.vue"; +export { default as BreadcrumbItem } from "./BreadcrumbItem.vue"; +export { default as BreadcrumbLink } from "./BreadcrumbLink.vue"; +export { default as BreadcrumbList } from "./BreadcrumbList.vue"; diff --git a/src/components/ui/button/Button.vue b/src/components/ui/button/Button.vue new file mode 100644 index 0000000..b5a06b5 --- /dev/null +++ b/src/components/ui/button/Button.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/button/index.ts b/src/components/ui/button/index.ts new file mode 100644 index 0000000..28c00c1 --- /dev/null +++ b/src/components/ui/button/index.ts @@ -0,0 +1 @@ +export { default as Button } from "./Button.vue"; diff --git a/src/components/ui/carousel/CarouselControl.vue b/src/components/ui/carousel/CarouselControl.vue new file mode 100644 index 0000000..edd610c --- /dev/null +++ b/src/components/ui/carousel/CarouselControl.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/carousel/CarouselIndicator.vue b/src/components/ui/carousel/CarouselIndicator.vue new file mode 100644 index 0000000..9d798d4 --- /dev/null +++ b/src/components/ui/carousel/CarouselIndicator.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/ui/carousel/CarouselIndicatorGroup.vue b/src/components/ui/carousel/CarouselIndicatorGroup.vue new file mode 100644 index 0000000..32f2dfe --- /dev/null +++ b/src/components/ui/carousel/CarouselIndicatorGroup.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/carousel/CarouselItem.vue b/src/components/ui/carousel/CarouselItem.vue new file mode 100644 index 0000000..2c1ee75 --- /dev/null +++ b/src/components/ui/carousel/CarouselItem.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/carousel/CarouselItemGroup.vue b/src/components/ui/carousel/CarouselItemGroup.vue new file mode 100644 index 0000000..07a3626 --- /dev/null +++ b/src/components/ui/carousel/CarouselItemGroup.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/carousel/CarouselNextTrigger.vue b/src/components/ui/carousel/CarouselNextTrigger.vue new file mode 100644 index 0000000..161e92a --- /dev/null +++ b/src/components/ui/carousel/CarouselNextTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/carousel/CarouselPrevTrigger.vue b/src/components/ui/carousel/CarouselPrevTrigger.vue new file mode 100644 index 0000000..937d2a0 --- /dev/null +++ b/src/components/ui/carousel/CarouselPrevTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/carousel/CarouselRoot.vue b/src/components/ui/carousel/CarouselRoot.vue new file mode 100644 index 0000000..e29f7b6 --- /dev/null +++ b/src/components/ui/carousel/CarouselRoot.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/components/ui/carousel/index.ts b/src/components/ui/carousel/index.ts new file mode 100644 index 0000000..49898ba --- /dev/null +++ b/src/components/ui/carousel/index.ts @@ -0,0 +1,8 @@ +export { default as CarouselRoot } from "./CarouselRoot.vue"; +export { default as CarouselControl } from "./CarouselControl.vue"; +export { default as CarouselPrevTrigger } from "./CarouselPrevTrigger.vue"; +export { default as CarouselNextTrigger } from "./CarouselNextTrigger.vue"; +export { default as CarouselIndicatorGroup } from "./CarouselIndicatorGroup.vue"; +export { default as CarouselIndicator } from "./CarouselIndicator.vue"; +export { default as CarouselItemGroup } from "./CarouselItemGroup.vue"; +export { default as CarouselItem } from "./CarouselItem.vue"; diff --git a/src/components/ui/chart/Chart.vue b/src/components/ui/chart/Chart.vue new file mode 100644 index 0000000..068f0b2 --- /dev/null +++ b/src/components/ui/chart/Chart.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/chart/index.ts b/src/components/ui/chart/index.ts new file mode 100644 index 0000000..aae8060 --- /dev/null +++ b/src/components/ui/chart/index.ts @@ -0,0 +1,2 @@ +export { default as Chart } from "./Chart.vue"; +export { getColor } from "./utils.ts"; diff --git a/src/components/ui/chart/utils.ts b/src/components/ui/chart/utils.ts new file mode 100644 index 0000000..8c063fa --- /dev/null +++ b/src/components/ui/chart/utils.ts @@ -0,0 +1,11 @@ +export function getColor(name: string, opacity = 1) { + const color = getComputedStyle(document.documentElement) + .getPropertyValue(name) + .trim(); + if (opacity < 1) { + return `color-mix(in oklch, ${color} ${opacity * 100}%, transparent ${ + 100 - opacity * 100 + }%)`; + } + return color; +} diff --git a/src/components/ui/checkbox/CheckboxControl.vue b/src/components/ui/checkbox/CheckboxControl.vue new file mode 100644 index 0000000..07ca539 --- /dev/null +++ b/src/components/ui/checkbox/CheckboxControl.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/checkbox/CheckboxHiddenInput.vue b/src/components/ui/checkbox/CheckboxHiddenInput.vue new file mode 100644 index 0000000..eb70fd8 --- /dev/null +++ b/src/components/ui/checkbox/CheckboxHiddenInput.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/checkbox/CheckboxIndicator.vue b/src/components/ui/checkbox/CheckboxIndicator.vue new file mode 100644 index 0000000..887376c --- /dev/null +++ b/src/components/ui/checkbox/CheckboxIndicator.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/checkbox/CheckboxLabel.vue b/src/components/ui/checkbox/CheckboxLabel.vue new file mode 100644 index 0000000..852425f --- /dev/null +++ b/src/components/ui/checkbox/CheckboxLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/checkbox/CheckboxRoot.vue b/src/components/ui/checkbox/CheckboxRoot.vue new file mode 100644 index 0000000..ec63e53 --- /dev/null +++ b/src/components/ui/checkbox/CheckboxRoot.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/ui/checkbox/index.ts b/src/components/ui/checkbox/index.ts new file mode 100644 index 0000000..10741ed --- /dev/null +++ b/src/components/ui/checkbox/index.ts @@ -0,0 +1,5 @@ +export { default as CheckboxRoot } from "./CheckboxRoot.vue"; +export { default as CheckboxLabel } from "./CheckboxLabel.vue"; +export { default as CheckboxControl } from "./CheckboxControl.vue"; +export { default as CheckboxIndicator } from "./CheckboxIndicator.vue"; +export { default as CheckboxHiddenInput } from "./CheckboxHiddenInput.vue"; diff --git a/src/components/ui/combobox/ComboboxClearTrigger.vue b/src/components/ui/combobox/ComboboxClearTrigger.vue new file mode 100644 index 0000000..1168b42 --- /dev/null +++ b/src/components/ui/combobox/ComboboxClearTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/combobox/ComboboxContent.vue b/src/components/ui/combobox/ComboboxContent.vue new file mode 100644 index 0000000..836f6b2 --- /dev/null +++ b/src/components/ui/combobox/ComboboxContent.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/ui/combobox/ComboboxControl.vue b/src/components/ui/combobox/ComboboxControl.vue new file mode 100644 index 0000000..67d8883 --- /dev/null +++ b/src/components/ui/combobox/ComboboxControl.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/combobox/ComboboxInput.vue b/src/components/ui/combobox/ComboboxInput.vue new file mode 100644 index 0000000..e05a4d0 --- /dev/null +++ b/src/components/ui/combobox/ComboboxInput.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/components/ui/combobox/ComboboxItem.vue b/src/components/ui/combobox/ComboboxItem.vue new file mode 100644 index 0000000..7fd022b --- /dev/null +++ b/src/components/ui/combobox/ComboboxItem.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/combobox/ComboboxItemGroup.vue b/src/components/ui/combobox/ComboboxItemGroup.vue new file mode 100644 index 0000000..dba8bce --- /dev/null +++ b/src/components/ui/combobox/ComboboxItemGroup.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/combobox/ComboboxItemGroupLabel.vue b/src/components/ui/combobox/ComboboxItemGroupLabel.vue new file mode 100644 index 0000000..15b56cf --- /dev/null +++ b/src/components/ui/combobox/ComboboxItemGroupLabel.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/combobox/ComboboxItemIndicator.vue b/src/components/ui/combobox/ComboboxItemIndicator.vue new file mode 100644 index 0000000..9691fc3 --- /dev/null +++ b/src/components/ui/combobox/ComboboxItemIndicator.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/combobox/ComboboxItemText.vue b/src/components/ui/combobox/ComboboxItemText.vue new file mode 100644 index 0000000..bb949ef --- /dev/null +++ b/src/components/ui/combobox/ComboboxItemText.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/combobox/ComboboxLabel.vue b/src/components/ui/combobox/ComboboxLabel.vue new file mode 100644 index 0000000..4afa7a5 --- /dev/null +++ b/src/components/ui/combobox/ComboboxLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/combobox/ComboboxPositioner.vue b/src/components/ui/combobox/ComboboxPositioner.vue new file mode 100644 index 0000000..c61539c --- /dev/null +++ b/src/components/ui/combobox/ComboboxPositioner.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/combobox/ComboboxRoot.vue b/src/components/ui/combobox/ComboboxRoot.vue new file mode 100644 index 0000000..b0b8fb3 --- /dev/null +++ b/src/components/ui/combobox/ComboboxRoot.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/components/ui/combobox/ComboboxTrigger.vue b/src/components/ui/combobox/ComboboxTrigger.vue new file mode 100644 index 0000000..9a729c7 --- /dev/null +++ b/src/components/ui/combobox/ComboboxTrigger.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/combobox/index.ts b/src/components/ui/combobox/index.ts new file mode 100644 index 0000000..ad0e146 --- /dev/null +++ b/src/components/ui/combobox/index.ts @@ -0,0 +1,13 @@ +export { default as ComboboxRoot } from "./ComboboxRoot.vue"; +export { default as ComboboxLabel } from "./ComboboxLabel.vue"; +export { default as ComboboxControl } from "./ComboboxControl.vue"; +export { default as ComboboxInput } from "./ComboboxInput.vue"; +export { default as ComboboxTrigger } from "./ComboboxTrigger.vue"; +export { default as ComboboxClearTrigger } from "./ComboboxClearTrigger.vue"; +export { default as ComboboxPositioner } from "./ComboboxPositioner.vue"; +export { default as ComboboxContent } from "./ComboboxContent.vue"; +export { default as ComboboxItemGroup } from "./ComboboxItemGroup.vue"; +export { default as ComboboxItemGroupLabel } from "./ComboboxItemGroupLabel.vue"; +export { default as ComboboxItem } from "./ComboboxItem.vue"; +export { default as ComboboxItemText } from "./ComboboxItemText.vue"; +export { default as ComboboxItemIndicator } from "./ComboboxItemIndicator.vue"; diff --git a/src/components/ui/datepicker/DatePickerClearTrigger.vue b/src/components/ui/datepicker/DatePickerClearTrigger.vue new file mode 100644 index 0000000..dbf8c39 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerClearTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerContent.vue b/src/components/ui/datepicker/DatePickerContent.vue new file mode 100644 index 0000000..0ffba93 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerContent.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerContext.vue b/src/components/ui/datepicker/DatePickerContext.vue new file mode 100644 index 0000000..a2d113d --- /dev/null +++ b/src/components/ui/datepicker/DatePickerContext.vue @@ -0,0 +1,10 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerControl.vue b/src/components/ui/datepicker/DatePickerControl.vue new file mode 100644 index 0000000..ae17782 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerControl.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerInput.vue b/src/components/ui/datepicker/DatePickerInput.vue new file mode 100644 index 0000000..d560f73 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerInput.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerLabel.vue b/src/components/ui/datepicker/DatePickerLabel.vue new file mode 100644 index 0000000..a04f4dc --- /dev/null +++ b/src/components/ui/datepicker/DatePickerLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerMonthSelect.vue b/src/components/ui/datepicker/DatePickerMonthSelect.vue new file mode 100644 index 0000000..89cd30d --- /dev/null +++ b/src/components/ui/datepicker/DatePickerMonthSelect.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerNextTrigger.vue b/src/components/ui/datepicker/DatePickerNextTrigger.vue new file mode 100644 index 0000000..8f758fc --- /dev/null +++ b/src/components/ui/datepicker/DatePickerNextTrigger.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerPositioner.vue b/src/components/ui/datepicker/DatePickerPositioner.vue new file mode 100644 index 0000000..f166e69 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerPositioner.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerPresetTrigger.vue b/src/components/ui/datepicker/DatePickerPresetTrigger.vue new file mode 100644 index 0000000..e9e5f95 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerPresetTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerPrevTrigger.vue b/src/components/ui/datepicker/DatePickerPrevTrigger.vue new file mode 100644 index 0000000..299fe73 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerPrevTrigger.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerRangeText.vue b/src/components/ui/datepicker/DatePickerRangeText.vue new file mode 100644 index 0000000..9cf24e8 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerRangeText.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerRoot.vue b/src/components/ui/datepicker/DatePickerRoot.vue new file mode 100644 index 0000000..21f0caf --- /dev/null +++ b/src/components/ui/datepicker/DatePickerRoot.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTable.vue b/src/components/ui/datepicker/DatePickerTable.vue new file mode 100644 index 0000000..fe7cb65 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTable.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTableBody.vue b/src/components/ui/datepicker/DatePickerTableBody.vue new file mode 100644 index 0000000..b23b3cd --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTableBody.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTableCell.vue b/src/components/ui/datepicker/DatePickerTableCell.vue new file mode 100644 index 0000000..2ac4d20 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTableCell.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTableCellTrigger.vue b/src/components/ui/datepicker/DatePickerTableCellTrigger.vue new file mode 100644 index 0000000..a0a2887 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTableCellTrigger.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTableHead.vue b/src/components/ui/datepicker/DatePickerTableHead.vue new file mode 100644 index 0000000..3536df3 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTableHead.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTableHeader.vue b/src/components/ui/datepicker/DatePickerTableHeader.vue new file mode 100644 index 0000000..d98f7c6 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTableHeader.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTableRow.vue b/src/components/ui/datepicker/DatePickerTableRow.vue new file mode 100644 index 0000000..cf77514 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTableRow.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTrigger.vue b/src/components/ui/datepicker/DatePickerTrigger.vue new file mode 100644 index 0000000..cb3fda1 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerView.vue b/src/components/ui/datepicker/DatePickerView.vue new file mode 100644 index 0000000..9b8c829 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerView.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerViewControl.vue b/src/components/ui/datepicker/DatePickerViewControl.vue new file mode 100644 index 0000000..02fd0c0 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerViewControl.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerViewTrigger.vue b/src/components/ui/datepicker/DatePickerViewTrigger.vue new file mode 100644 index 0000000..5e99f62 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerViewTrigger.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerYearSelect.vue b/src/components/ui/datepicker/DatePickerYearSelect.vue new file mode 100644 index 0000000..288f452 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerYearSelect.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/index.ts b/src/components/ui/datepicker/index.ts new file mode 100644 index 0000000..38d8257 --- /dev/null +++ b/src/components/ui/datepicker/index.ts @@ -0,0 +1,25 @@ +export { default as DatePickerRoot } from "./DatePickerRoot.vue"; +export { default as DatePickerLabel } from "./DatePickerLabel.vue"; +export { default as DatePickerControl } from "./DatePickerControl.vue"; +export { default as DatePickerInput } from "./DatePickerInput.vue"; +export { default as DatePickerTrigger } from "./DatePickerTrigger.vue"; +export { default as DatePickerClearTrigger } from "./DatePickerClearTrigger.vue"; +export { default as DatePickerPositioner } from "./DatePickerPositioner.vue"; +export { default as DatePickerContent } from "./DatePickerContent.vue"; +export { default as DatePickerYearSelect } from "./DatePickerYearSelect.vue"; +export { default as DatePickerMonthSelect } from "./DatePickerMonthSelect.vue"; +export { default as DatePickerView } from "./DatePickerView.vue"; +export { default as DatePickerViewControl } from "./DatePickerViewControl.vue"; +export { default as DatePickerPresetTrigger } from "./DatePickerPresetTrigger.vue"; +export { default as DatePickerPrevTrigger } from "./DatePickerPrevTrigger.vue"; +export { default as DatePickerViewTrigger } from "./DatePickerViewTrigger.vue"; +export { default as DatePickerNextTrigger } from "./DatePickerNextTrigger.vue"; +export { default as DatePickerRangeText } from "./DatePickerRangeText.vue"; +export { default as DatePickerTable } from "./DatePickerTable.vue"; +export { default as DatePickerTableHead } from "./DatePickerTableHead.vue"; +export { default as DatePickerTableRow } from "./DatePickerTableRow.vue"; +export { default as DatePickerTableHeader } from "./DatePickerTableHeader.vue"; +export { default as DatePickerTableBody } from "./DatePickerTableBody.vue"; +export { default as DatePickerTableCell } from "./DatePickerTableCell.vue"; +export { default as DatePickerTableCellTrigger } from "./DatePickerTableCellTrigger.vue"; +export { default as DatePickerContext } from "./DatePickerContext.vue"; diff --git a/src/components/ui/dialog/DialogBackdrop.vue b/src/components/ui/dialog/DialogBackdrop.vue new file mode 100644 index 0000000..2dce0b1 --- /dev/null +++ b/src/components/ui/dialog/DialogBackdrop.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/dialog/DialogCloseTrigger.vue b/src/components/ui/dialog/DialogCloseTrigger.vue new file mode 100644 index 0000000..25f221a --- /dev/null +++ b/src/components/ui/dialog/DialogCloseTrigger.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/ui/dialog/DialogContent.vue b/src/components/ui/dialog/DialogContent.vue new file mode 100644 index 0000000..f004126 --- /dev/null +++ b/src/components/ui/dialog/DialogContent.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/components/ui/dialog/DialogDescription.vue b/src/components/ui/dialog/DialogDescription.vue new file mode 100644 index 0000000..0bc61dc --- /dev/null +++ b/src/components/ui/dialog/DialogDescription.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/dialog/DialogPositioner.vue b/src/components/ui/dialog/DialogPositioner.vue new file mode 100644 index 0000000..945bd42 --- /dev/null +++ b/src/components/ui/dialog/DialogPositioner.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/dialog/DialogRoot.vue b/src/components/ui/dialog/DialogRoot.vue new file mode 100644 index 0000000..d97f151 --- /dev/null +++ b/src/components/ui/dialog/DialogRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/dialog/DialogTitle.vue b/src/components/ui/dialog/DialogTitle.vue new file mode 100644 index 0000000..5436553 --- /dev/null +++ b/src/components/ui/dialog/DialogTitle.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/dialog/DialogTrigger.vue b/src/components/ui/dialog/DialogTrigger.vue new file mode 100644 index 0000000..29b3169 --- /dev/null +++ b/src/components/ui/dialog/DialogTrigger.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/dialog/index.ts b/src/components/ui/dialog/index.ts new file mode 100644 index 0000000..2599b5b --- /dev/null +++ b/src/components/ui/dialog/index.ts @@ -0,0 +1,8 @@ +export { default as DialogRoot } from "./DialogRoot.vue"; +export { default as DialogTrigger } from "./DialogTrigger.vue"; +export { default as DialogBackdrop } from "./DialogBackdrop.vue"; +export { default as DialogPositioner } from "./DialogPositioner.vue"; +export { default as DialogContent } from "./DialogContent.vue"; +export { default as DialogTitle } from "./DialogTitle.vue"; +export { default as DialogDescription } from "./DialogDescription.vue"; +export { default as DialogCloseTrigger } from "./DialogCloseTrigger.vue"; diff --git a/src/components/ui/field/Field.vue b/src/components/ui/field/Field.vue new file mode 100644 index 0000000..d74ec9b --- /dev/null +++ b/src/components/ui/field/Field.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/components/ui/field/FieldContent.vue b/src/components/ui/field/FieldContent.vue new file mode 100644 index 0000000..a51efeb --- /dev/null +++ b/src/components/ui/field/FieldContent.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/field/FieldDescription.vue b/src/components/ui/field/FieldDescription.vue new file mode 100644 index 0000000..bdb0934 --- /dev/null +++ b/src/components/ui/field/FieldDescription.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/field/FieldError.vue b/src/components/ui/field/FieldError.vue new file mode 100644 index 0000000..db0f4d4 --- /dev/null +++ b/src/components/ui/field/FieldError.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/field/FieldGroup.vue b/src/components/ui/field/FieldGroup.vue new file mode 100644 index 0000000..a03cd06 --- /dev/null +++ b/src/components/ui/field/FieldGroup.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/field/FieldLabel.vue b/src/components/ui/field/FieldLabel.vue new file mode 100644 index 0000000..3ae5b56 --- /dev/null +++ b/src/components/ui/field/FieldLabel.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/components/ui/field/FieldLegend.vue b/src/components/ui/field/FieldLegend.vue new file mode 100644 index 0000000..52cc0b9 --- /dev/null +++ b/src/components/ui/field/FieldLegend.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/components/ui/field/FieldSeparator.vue b/src/components/ui/field/FieldSeparator.vue new file mode 100644 index 0000000..8c0ceae --- /dev/null +++ b/src/components/ui/field/FieldSeparator.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/components/ui/field/FieldSet.vue b/src/components/ui/field/FieldSet.vue new file mode 100644 index 0000000..07d94be --- /dev/null +++ b/src/components/ui/field/FieldSet.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/field/FieldTitle.vue b/src/components/ui/field/FieldTitle.vue new file mode 100644 index 0000000..934cc95 --- /dev/null +++ b/src/components/ui/field/FieldTitle.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/field/index.ts b/src/components/ui/field/index.ts new file mode 100644 index 0000000..909f2d6 --- /dev/null +++ b/src/components/ui/field/index.ts @@ -0,0 +1,10 @@ +export { default as Field } from "./Field.vue"; +export { default as FieldContent } from "./FieldContent.vue"; +export { default as FieldDescription } from "./FieldDescription.vue"; +export { default as FieldError } from "./FieldError.vue"; +export { default as FieldGroup } from "./FieldGroup.vue"; +export { default as FieldLabel } from "./FieldLabel.vue"; +export { default as FieldLegend } from "./FieldLegend.vue"; +export { default as FieldSeparator } from "./FieldSeparator.vue"; +export { default as FieldSet } from "./FieldSet.vue"; +export { default as FieldTitle } from "./FieldTitle.vue"; diff --git a/src/components/ui/file-icon/FileIcon.vue b/src/components/ui/file-icon/FileIcon.vue new file mode 100644 index 0000000..6b14b59 --- /dev/null +++ b/src/components/ui/file-icon/FileIcon.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/components/ui/file-icon/index.ts b/src/components/ui/file-icon/index.ts new file mode 100644 index 0000000..98b6760 --- /dev/null +++ b/src/components/ui/file-icon/index.ts @@ -0,0 +1 @@ +export { default as FileIcon } from "./FileIcon.vue"; diff --git a/src/components/ui/frame/Frame.vue b/src/components/ui/frame/Frame.vue new file mode 100644 index 0000000..662e944 --- /dev/null +++ b/src/components/ui/frame/Frame.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/components/ui/frame/index.ts b/src/components/ui/frame/index.ts new file mode 100644 index 0000000..414d1e6 --- /dev/null +++ b/src/components/ui/frame/index.ts @@ -0,0 +1 @@ +export { default as Frame } from "./Frame.vue"; diff --git a/src/components/ui/input/Input.vue b/src/components/ui/input/Input.vue new file mode 100644 index 0000000..b8a8ca3 --- /dev/null +++ b/src/components/ui/input/Input.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/input/index.ts b/src/components/ui/input/index.ts new file mode 100644 index 0000000..110f046 --- /dev/null +++ b/src/components/ui/input/index.ts @@ -0,0 +1 @@ +export { default as Input } from "./Input.vue"; diff --git a/src/components/ui/label/Label.vue b/src/components/ui/label/Label.vue new file mode 100644 index 0000000..4c2138d --- /dev/null +++ b/src/components/ui/label/Label.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/label/index.ts b/src/components/ui/label/index.ts new file mode 100644 index 0000000..38eaa35 --- /dev/null +++ b/src/components/ui/label/index.ts @@ -0,0 +1 @@ +export { default as Label } from "./Label.vue"; diff --git a/src/components/ui/lucide/Lucide.vue b/src/components/ui/lucide/Lucide.vue new file mode 100644 index 0000000..1aa3974 --- /dev/null +++ b/src/components/ui/lucide/Lucide.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/components/ui/lucide/index.ts b/src/components/ui/lucide/index.ts new file mode 100644 index 0000000..a2d4653 --- /dev/null +++ b/src/components/ui/lucide/index.ts @@ -0,0 +1 @@ +export { default as Lucide, type Icon } from './Lucide.vue' diff --git a/src/components/ui/map/Map.vue b/src/components/ui/map/Map.vue new file mode 100644 index 0000000..6ea0da3 --- /dev/null +++ b/src/components/ui/map/Map.vue @@ -0,0 +1,224 @@ + + + diff --git a/src/components/ui/map/index.ts b/src/components/ui/map/index.ts new file mode 100644 index 0000000..8aefb13 --- /dev/null +++ b/src/components/ui/map/index.ts @@ -0,0 +1 @@ +export { default as Map } from "./Map.vue"; diff --git a/src/components/ui/menu/MenuCheckboxItem.vue b/src/components/ui/menu/MenuCheckboxItem.vue new file mode 100644 index 0000000..9598658 --- /dev/null +++ b/src/components/ui/menu/MenuCheckboxItem.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/components/ui/menu/MenuContent.vue b/src/components/ui/menu/MenuContent.vue new file mode 100644 index 0000000..2b04673 --- /dev/null +++ b/src/components/ui/menu/MenuContent.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/menu/MenuIndicator.vue b/src/components/ui/menu/MenuIndicator.vue new file mode 100644 index 0000000..d4874e4 --- /dev/null +++ b/src/components/ui/menu/MenuIndicator.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/menu/MenuItem.vue b/src/components/ui/menu/MenuItem.vue new file mode 100644 index 0000000..bbdbcf1 --- /dev/null +++ b/src/components/ui/menu/MenuItem.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/components/ui/menu/MenuItemGroupLabel.vue b/src/components/ui/menu/MenuItemGroupLabel.vue new file mode 100644 index 0000000..bd586c4 --- /dev/null +++ b/src/components/ui/menu/MenuItemGroupLabel.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/menu/MenuPositioner.vue b/src/components/ui/menu/MenuPositioner.vue new file mode 100644 index 0000000..243228e --- /dev/null +++ b/src/components/ui/menu/MenuPositioner.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/menu/MenuRadioItem.vue b/src/components/ui/menu/MenuRadioItem.vue new file mode 100644 index 0000000..295f4a3 --- /dev/null +++ b/src/components/ui/menu/MenuRadioItem.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/components/ui/menu/MenuRadioItemGroup.vue b/src/components/ui/menu/MenuRadioItemGroup.vue new file mode 100644 index 0000000..cf43fad --- /dev/null +++ b/src/components/ui/menu/MenuRadioItemGroup.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/ui/menu/MenuRoot.vue b/src/components/ui/menu/MenuRoot.vue new file mode 100644 index 0000000..47df4c8 --- /dev/null +++ b/src/components/ui/menu/MenuRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/menu/MenuSeparator.vue b/src/components/ui/menu/MenuSeparator.vue new file mode 100644 index 0000000..5428aa7 --- /dev/null +++ b/src/components/ui/menu/MenuSeparator.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/menu/MenuTrigger.vue b/src/components/ui/menu/MenuTrigger.vue new file mode 100644 index 0000000..0d047eb --- /dev/null +++ b/src/components/ui/menu/MenuTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/menu/MenuTriggerItem.vue b/src/components/ui/menu/MenuTriggerItem.vue new file mode 100644 index 0000000..0001452 --- /dev/null +++ b/src/components/ui/menu/MenuTriggerItem.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/menu/index.ts b/src/components/ui/menu/index.ts new file mode 100644 index 0000000..33285b1 --- /dev/null +++ b/src/components/ui/menu/index.ts @@ -0,0 +1,12 @@ +export { default as MenuRoot } from "./MenuRoot.vue"; +export { default as MenuTrigger } from "./MenuTrigger.vue"; +export { default as MenuIndicator } from "./MenuIndicator.vue"; +export { default as MenuPositioner } from "./MenuPositioner.vue"; +export { default as MenuContent } from "./MenuContent.vue"; +export { default as MenuItem } from "./MenuItem.vue"; +export { default as MenuTriggerItem } from "./MenuTriggerItem.vue"; +export { default as MenuCheckboxItem } from "./MenuCheckboxItem.vue"; +export { default as MenuRadioItemGroup } from "./MenuRadioItemGroup.vue"; +export { default as MenuItemGroupLabel } from "./MenuItemGroupLabel.vue"; +export { default as MenuRadioItem } from "./MenuRadioItem.vue"; +export { default as MenuSeparator } from "./MenuSeparator.vue"; diff --git a/src/components/ui/pagination/PaginationContext.vue b/src/components/ui/pagination/PaginationContext.vue new file mode 100644 index 0000000..e63be73 --- /dev/null +++ b/src/components/ui/pagination/PaginationContext.vue @@ -0,0 +1,10 @@ + + + diff --git a/src/components/ui/pagination/PaginationEllipsis.vue b/src/components/ui/pagination/PaginationEllipsis.vue new file mode 100644 index 0000000..30beb0e --- /dev/null +++ b/src/components/ui/pagination/PaginationEllipsis.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/pagination/PaginationItem.vue b/src/components/ui/pagination/PaginationItem.vue new file mode 100644 index 0000000..fc8771f --- /dev/null +++ b/src/components/ui/pagination/PaginationItem.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/pagination/PaginationNextTrigger.vue b/src/components/ui/pagination/PaginationNextTrigger.vue new file mode 100644 index 0000000..541f454 --- /dev/null +++ b/src/components/ui/pagination/PaginationNextTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/pagination/PaginationPrevTrigger.vue b/src/components/ui/pagination/PaginationPrevTrigger.vue new file mode 100644 index 0000000..8762871 --- /dev/null +++ b/src/components/ui/pagination/PaginationPrevTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/pagination/PaginationRoot.vue b/src/components/ui/pagination/PaginationRoot.vue new file mode 100644 index 0000000..a1c85e9 --- /dev/null +++ b/src/components/ui/pagination/PaginationRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/pagination/index.ts b/src/components/ui/pagination/index.ts new file mode 100644 index 0000000..45612c8 --- /dev/null +++ b/src/components/ui/pagination/index.ts @@ -0,0 +1,6 @@ +export { default as PaginationContext } from "./PaginationContext.vue"; +export { default as PaginationEllipsis } from "./PaginationEllipsis.vue"; +export { default as PaginationItem } from "./PaginationItem.vue"; +export { default as PaginationNextTrigger } from "./PaginationNextTrigger.vue"; +export { default as PaginationPrevTrigger } from "./PaginationPrevTrigger.vue"; +export { default as PaginationRoot } from "./PaginationRoot.vue"; diff --git a/src/components/ui/password-input/PasswordInput.vue b/src/components/ui/password-input/PasswordInput.vue new file mode 100644 index 0000000..1dcef63 --- /dev/null +++ b/src/components/ui/password-input/PasswordInput.vue @@ -0,0 +1,57 @@ + + + diff --git a/src/components/ui/password-input/index.ts b/src/components/ui/password-input/index.ts new file mode 100644 index 0000000..3e7aa3f --- /dev/null +++ b/src/components/ui/password-input/index.ts @@ -0,0 +1 @@ +export { default as PasswordInput } from './PasswordInput.vue' diff --git a/src/components/ui/popover/PopoverArrow.vue b/src/components/ui/popover/PopoverArrow.vue new file mode 100644 index 0000000..129e0fb --- /dev/null +++ b/src/components/ui/popover/PopoverArrow.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/popover/PopoverArrowTip.vue b/src/components/ui/popover/PopoverArrowTip.vue new file mode 100644 index 0000000..18fca0e --- /dev/null +++ b/src/components/ui/popover/PopoverArrowTip.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/popover/PopoverContent.vue b/src/components/ui/popover/PopoverContent.vue new file mode 100644 index 0000000..b4ded8f --- /dev/null +++ b/src/components/ui/popover/PopoverContent.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/components/ui/popover/PopoverDescription.vue b/src/components/ui/popover/PopoverDescription.vue new file mode 100644 index 0000000..96f547d --- /dev/null +++ b/src/components/ui/popover/PopoverDescription.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/popover/PopoverIndicator.vue b/src/components/ui/popover/PopoverIndicator.vue new file mode 100644 index 0000000..bfe0ea6 --- /dev/null +++ b/src/components/ui/popover/PopoverIndicator.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/ui/popover/PopoverPositioner.vue b/src/components/ui/popover/PopoverPositioner.vue new file mode 100644 index 0000000..b66cec1 --- /dev/null +++ b/src/components/ui/popover/PopoverPositioner.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/popover/PopoverRoot.vue b/src/components/ui/popover/PopoverRoot.vue new file mode 100644 index 0000000..83bb860 --- /dev/null +++ b/src/components/ui/popover/PopoverRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/popover/PopoverTitle.vue b/src/components/ui/popover/PopoverTitle.vue new file mode 100644 index 0000000..84a4ace --- /dev/null +++ b/src/components/ui/popover/PopoverTitle.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/popover/PopoverTrigger.vue b/src/components/ui/popover/PopoverTrigger.vue new file mode 100644 index 0000000..7c3af4f --- /dev/null +++ b/src/components/ui/popover/PopoverTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/popover/index.ts b/src/components/ui/popover/index.ts new file mode 100644 index 0000000..5bdeecf --- /dev/null +++ b/src/components/ui/popover/index.ts @@ -0,0 +1,9 @@ +export { default as PopoverArrow } from "./PopoverArrow.vue"; +export { default as PopoverArrowTip } from "./PopoverArrowTip.vue"; +export { default as PopoverContent } from "./PopoverContent.vue"; +export { default as PopoverDescription } from "./PopoverDescription.vue"; +export { default as PopoverIndicator } from "./PopoverIndicator.vue"; +export { default as PopoverPositioner } from "./PopoverPositioner.vue"; +export { default as PopoverRoot } from "./PopoverRoot.vue"; +export { default as PopoverTitle } from "./PopoverTitle.vue"; +export { default as PopoverTrigger } from "./PopoverTrigger.vue"; diff --git a/src/components/ui/presence/Presence.vue b/src/components/ui/presence/Presence.vue new file mode 100644 index 0000000..018190f --- /dev/null +++ b/src/components/ui/presence/Presence.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/ui/presence/index.ts b/src/components/ui/presence/index.ts new file mode 100644 index 0000000..fa686f8 --- /dev/null +++ b/src/components/ui/presence/index.ts @@ -0,0 +1 @@ +export { default as Presence } from "./Presence.vue"; diff --git a/src/components/ui/progress-circular/ProgressCircle.vue b/src/components/ui/progress-circular/ProgressCircle.vue new file mode 100644 index 0000000..148f538 --- /dev/null +++ b/src/components/ui/progress-circular/ProgressCircle.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/progress-circular/ProgressCircleRange.vue b/src/components/ui/progress-circular/ProgressCircleRange.vue new file mode 100644 index 0000000..f824a93 --- /dev/null +++ b/src/components/ui/progress-circular/ProgressCircleRange.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/progress-circular/ProgressCircleTrack.vue b/src/components/ui/progress-circular/ProgressCircleTrack.vue new file mode 100644 index 0000000..e21812f --- /dev/null +++ b/src/components/ui/progress-circular/ProgressCircleTrack.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/progress-circular/ProgressLabel.vue b/src/components/ui/progress-circular/ProgressLabel.vue new file mode 100644 index 0000000..34d27b5 --- /dev/null +++ b/src/components/ui/progress-circular/ProgressLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/progress-circular/ProgressRoot.vue b/src/components/ui/progress-circular/ProgressRoot.vue new file mode 100644 index 0000000..fceab70 --- /dev/null +++ b/src/components/ui/progress-circular/ProgressRoot.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/progress-circular/ProgressValueText.vue b/src/components/ui/progress-circular/ProgressValueText.vue new file mode 100644 index 0000000..c0ed330 --- /dev/null +++ b/src/components/ui/progress-circular/ProgressValueText.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/progress-circular/index.ts b/src/components/ui/progress-circular/index.ts new file mode 100644 index 0000000..5c951ad --- /dev/null +++ b/src/components/ui/progress-circular/index.ts @@ -0,0 +1,6 @@ +export { default as ProgressCircle } from "./ProgressCircle.vue"; +export { default as ProgressCircleRange } from "./ProgressCircleRange.vue"; +export { default as ProgressCircleTrack } from "./ProgressCircleTrack.vue"; +export { default as ProgressLabel } from "./ProgressLabel.vue"; +export { default as ProgressRoot } from "./ProgressRoot.vue"; +export { default as ProgressValueText } from "./ProgressValueText.vue"; diff --git a/src/components/ui/progress-linear/ProgressLabel.vue b/src/components/ui/progress-linear/ProgressLabel.vue new file mode 100644 index 0000000..279ffc0 --- /dev/null +++ b/src/components/ui/progress-linear/ProgressLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/progress-linear/ProgressRange.vue b/src/components/ui/progress-linear/ProgressRange.vue new file mode 100644 index 0000000..c9c6314 --- /dev/null +++ b/src/components/ui/progress-linear/ProgressRange.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/progress-linear/ProgressRoot.vue b/src/components/ui/progress-linear/ProgressRoot.vue new file mode 100644 index 0000000..f005c65 --- /dev/null +++ b/src/components/ui/progress-linear/ProgressRoot.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/progress-linear/ProgressTrack.vue b/src/components/ui/progress-linear/ProgressTrack.vue new file mode 100644 index 0000000..edb15bd --- /dev/null +++ b/src/components/ui/progress-linear/ProgressTrack.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/progress-linear/ProgressValueText.vue b/src/components/ui/progress-linear/ProgressValueText.vue new file mode 100644 index 0000000..4f5319d --- /dev/null +++ b/src/components/ui/progress-linear/ProgressValueText.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/progress-linear/index.ts b/src/components/ui/progress-linear/index.ts new file mode 100644 index 0000000..32eec20 --- /dev/null +++ b/src/components/ui/progress-linear/index.ts @@ -0,0 +1,5 @@ +export { default as ProgressLabel } from "./ProgressLabel.vue"; +export { default as ProgressRange } from "./ProgressRange.vue"; +export { default as ProgressRoot } from "./ProgressRoot.vue"; +export { default as ProgressTrack } from "./ProgressTrack.vue"; +export { default as ProgressValueText } from "./ProgressValueText.vue"; diff --git a/src/components/ui/radio-group/RadioGroupIndicator.vue b/src/components/ui/radio-group/RadioGroupIndicator.vue new file mode 100644 index 0000000..c008874 --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupIndicator.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/radio-group/RadioGroupItem.vue b/src/components/ui/radio-group/RadioGroupItem.vue new file mode 100644 index 0000000..7780b01 --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupItem.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/components/ui/radio-group/RadioGroupItemControl.vue b/src/components/ui/radio-group/RadioGroupItemControl.vue new file mode 100644 index 0000000..c2c89f1 --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupItemControl.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/radio-group/RadioGroupItemHiddenInput.vue b/src/components/ui/radio-group/RadioGroupItemHiddenInput.vue new file mode 100644 index 0000000..118cf69 --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupItemHiddenInput.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/radio-group/RadioGroupItemText.vue b/src/components/ui/radio-group/RadioGroupItemText.vue new file mode 100644 index 0000000..3a23b1b --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupItemText.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/radio-group/RadioGroupLabel.vue b/src/components/ui/radio-group/RadioGroupLabel.vue new file mode 100644 index 0000000..74ca31c --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/radio-group/RadioGroupRoot.vue b/src/components/ui/radio-group/RadioGroupRoot.vue new file mode 100644 index 0000000..2801467 --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupRoot.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/components/ui/radio-group/index.ts b/src/components/ui/radio-group/index.ts new file mode 100644 index 0000000..d6deb3c --- /dev/null +++ b/src/components/ui/radio-group/index.ts @@ -0,0 +1,7 @@ +export { default as RadioGroupRoot } from "./RadioGroupRoot.vue"; +export { default as RadioGroupLabel } from "./RadioGroupLabel.vue"; +export { default as RadioGroupIndicator } from "./RadioGroupIndicator.vue"; +export { default as RadioGroupItem } from "./RadioGroupItem.vue"; +export { default as RadioGroupItemText } from "./RadioGroupItemText.vue"; +export { default as RadioGroupItemControl } from "./RadioGroupItemControl.vue"; +export { default as RadioGroupItemHiddenInput } from "./RadioGroupItemHiddenInput.vue"; diff --git a/src/components/ui/scroll-area/ScrollAreaContent.vue b/src/components/ui/scroll-area/ScrollAreaContent.vue new file mode 100644 index 0000000..27b74b3 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollAreaContent.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/scroll-area/ScrollAreaCorner.vue b/src/components/ui/scroll-area/ScrollAreaCorner.vue new file mode 100644 index 0000000..de52649 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollAreaCorner.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/scroll-area/ScrollAreaRoot.vue b/src/components/ui/scroll-area/ScrollAreaRoot.vue new file mode 100644 index 0000000..7f57fa1 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollAreaRoot.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/scroll-area/ScrollAreaScrollbar.vue b/src/components/ui/scroll-area/ScrollAreaScrollbar.vue new file mode 100644 index 0000000..e2ba072 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollAreaScrollbar.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/scroll-area/ScrollAreaThumb.vue b/src/components/ui/scroll-area/ScrollAreaThumb.vue new file mode 100644 index 0000000..8de60a1 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollAreaThumb.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/scroll-area/ScrollAreaViewport.vue b/src/components/ui/scroll-area/ScrollAreaViewport.vue new file mode 100644 index 0000000..2623b98 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollAreaViewport.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/scroll-area/index.ts b/src/components/ui/scroll-area/index.ts new file mode 100644 index 0000000..ec972b4 --- /dev/null +++ b/src/components/ui/scroll-area/index.ts @@ -0,0 +1,7 @@ +export { default as ScrollAreaRoot } from "./ScrollAreaRoot.vue"; +export { default as ScrollAreaViewport } from "./ScrollAreaViewport.vue"; +export { default as ScrollAreaContent } from "./ScrollAreaContent.vue"; +export { default as ScrollAreaScrollbar } from "./ScrollAreaScrollbar.vue"; +export { default as ScrollAreaThumb } from "./ScrollAreaThumb.vue"; +export { default as ScrollAreaCorner } from "./ScrollAreaCorner.vue"; + diff --git a/src/components/ui/select/SelectClearTrigger.vue b/src/components/ui/select/SelectClearTrigger.vue new file mode 100644 index 0000000..3b5212e --- /dev/null +++ b/src/components/ui/select/SelectClearTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/select/SelectContent.vue b/src/components/ui/select/SelectContent.vue new file mode 100644 index 0000000..b0866df --- /dev/null +++ b/src/components/ui/select/SelectContent.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/ui/select/SelectControl.vue b/src/components/ui/select/SelectControl.vue new file mode 100644 index 0000000..5080d27 --- /dev/null +++ b/src/components/ui/select/SelectControl.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/select/SelectHiddenSelect.vue b/src/components/ui/select/SelectHiddenSelect.vue new file mode 100644 index 0000000..d9c0ca5 --- /dev/null +++ b/src/components/ui/select/SelectHiddenSelect.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/select/SelectIndicator.vue b/src/components/ui/select/SelectIndicator.vue new file mode 100644 index 0000000..46b2b65 --- /dev/null +++ b/src/components/ui/select/SelectIndicator.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/select/SelectItem.vue b/src/components/ui/select/SelectItem.vue new file mode 100644 index 0000000..912d1a6 --- /dev/null +++ b/src/components/ui/select/SelectItem.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/components/ui/select/SelectItemGroup.vue b/src/components/ui/select/SelectItemGroup.vue new file mode 100644 index 0000000..a5a1e57 --- /dev/null +++ b/src/components/ui/select/SelectItemGroup.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/select/SelectItemGroupLabel.vue b/src/components/ui/select/SelectItemGroupLabel.vue new file mode 100644 index 0000000..cab17e3 --- /dev/null +++ b/src/components/ui/select/SelectItemGroupLabel.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/select/SelectItemIndicator.vue b/src/components/ui/select/SelectItemIndicator.vue new file mode 100644 index 0000000..a0b123c --- /dev/null +++ b/src/components/ui/select/SelectItemIndicator.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/select/SelectItemText.vue b/src/components/ui/select/SelectItemText.vue new file mode 100644 index 0000000..6b821e5 --- /dev/null +++ b/src/components/ui/select/SelectItemText.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/select/SelectLabel.vue b/src/components/ui/select/SelectLabel.vue new file mode 100644 index 0000000..865b5ce --- /dev/null +++ b/src/components/ui/select/SelectLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/select/SelectPositioner.vue b/src/components/ui/select/SelectPositioner.vue new file mode 100644 index 0000000..c01b96b --- /dev/null +++ b/src/components/ui/select/SelectPositioner.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/select/SelectRoot.vue b/src/components/ui/select/SelectRoot.vue new file mode 100644 index 0000000..6f53b9a --- /dev/null +++ b/src/components/ui/select/SelectRoot.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/components/ui/select/SelectTrigger.vue b/src/components/ui/select/SelectTrigger.vue new file mode 100644 index 0000000..69f4017 --- /dev/null +++ b/src/components/ui/select/SelectTrigger.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/select/SelectValueText.vue b/src/components/ui/select/SelectValueText.vue new file mode 100644 index 0000000..7356d93 --- /dev/null +++ b/src/components/ui/select/SelectValueText.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/ui/select/index.ts b/src/components/ui/select/index.ts new file mode 100644 index 0000000..42cd444 --- /dev/null +++ b/src/components/ui/select/index.ts @@ -0,0 +1,15 @@ +export { default as SelectClearTrigger } from "./SelectClearTrigger.vue"; +export { default as SelectContent } from "./SelectContent.vue"; +export { default as SelectControl } from "./SelectControl.vue"; +export { default as SelectHiddenSelect } from "./SelectHiddenSelect.vue"; +export { default as SelectIndicator } from "./SelectIndicator.vue"; +export { default as SelectItem } from "./SelectItem.vue"; +export { default as SelectItemGroup } from "./SelectItemGroup.vue"; +export { default as SelectItemGroupLabel } from "./SelectItemGroupLabel.vue"; +export { default as SelectItemIndicator } from "./SelectItemIndicator.vue"; +export { default as SelectItemText } from "./SelectItemText.vue"; +export { default as SelectLabel } from "./SelectLabel.vue"; +export { default as SelectPositioner } from "./SelectPositioner.vue"; +export { default as SelectRoot } from "./SelectRoot.vue"; +export { default as SelectTrigger } from "./SelectTrigger.vue"; +export { default as SelectValueText } from "./SelectValueText.vue"; diff --git a/src/components/ui/separator/Separator.vue b/src/components/ui/separator/Separator.vue new file mode 100644 index 0000000..f1dadc5 --- /dev/null +++ b/src/components/ui/separator/Separator.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/separator/index.ts b/src/components/ui/separator/index.ts new file mode 100644 index 0000000..aae7f1a --- /dev/null +++ b/src/components/ui/separator/index.ts @@ -0,0 +1 @@ +export { default as Separator } from "./Separator.vue"; diff --git a/src/components/ui/sheet/SheetBackdrop.vue b/src/components/ui/sheet/SheetBackdrop.vue new file mode 100644 index 0000000..1e84cf7 --- /dev/null +++ b/src/components/ui/sheet/SheetBackdrop.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/sheet/SheetCloseTrigger.vue b/src/components/ui/sheet/SheetCloseTrigger.vue new file mode 100644 index 0000000..fb8d404 --- /dev/null +++ b/src/components/ui/sheet/SheetCloseTrigger.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/ui/sheet/SheetContent.vue b/src/components/ui/sheet/SheetContent.vue new file mode 100644 index 0000000..9eb9c01 --- /dev/null +++ b/src/components/ui/sheet/SheetContent.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/components/ui/sheet/SheetDescription.vue b/src/components/ui/sheet/SheetDescription.vue new file mode 100644 index 0000000..362e013 --- /dev/null +++ b/src/components/ui/sheet/SheetDescription.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/sheet/SheetPositioner.vue b/src/components/ui/sheet/SheetPositioner.vue new file mode 100644 index 0000000..9abde8b --- /dev/null +++ b/src/components/ui/sheet/SheetPositioner.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/sheet/SheetRoot.vue b/src/components/ui/sheet/SheetRoot.vue new file mode 100644 index 0000000..e3d5894 --- /dev/null +++ b/src/components/ui/sheet/SheetRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/sheet/SheetTitle.vue b/src/components/ui/sheet/SheetTitle.vue new file mode 100644 index 0000000..5a2e13a --- /dev/null +++ b/src/components/ui/sheet/SheetTitle.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/sheet/SheetTrigger.vue b/src/components/ui/sheet/SheetTrigger.vue new file mode 100644 index 0000000..634db69 --- /dev/null +++ b/src/components/ui/sheet/SheetTrigger.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/sheet/index.ts b/src/components/ui/sheet/index.ts new file mode 100644 index 0000000..08a9d59 --- /dev/null +++ b/src/components/ui/sheet/index.ts @@ -0,0 +1,8 @@ +export { default as SheetRoot } from "./SheetRoot.vue"; +export { default as SheetTrigger } from "./SheetTrigger.vue"; +export { default as SheetBackdrop } from "./SheetBackdrop.vue"; +export { default as SheetPositioner } from "./SheetPositioner.vue"; +export { default as SheetContent } from "./SheetContent.vue"; +export { default as SheetTitle } from "./SheetTitle.vue"; +export { default as SheetDescription } from "./SheetDescription.vue"; +export { default as SheetCloseTrigger } from "./SheetCloseTrigger.vue"; diff --git a/src/components/ui/slider/SliderControl.vue b/src/components/ui/slider/SliderControl.vue new file mode 100644 index 0000000..cf5a95a --- /dev/null +++ b/src/components/ui/slider/SliderControl.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/slider/SliderHiddenInput.vue b/src/components/ui/slider/SliderHiddenInput.vue new file mode 100644 index 0000000..296650e --- /dev/null +++ b/src/components/ui/slider/SliderHiddenInput.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/slider/SliderLabel.vue b/src/components/ui/slider/SliderLabel.vue new file mode 100644 index 0000000..f314b9a --- /dev/null +++ b/src/components/ui/slider/SliderLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/slider/SliderMarker.vue b/src/components/ui/slider/SliderMarker.vue new file mode 100644 index 0000000..0d8fc9a --- /dev/null +++ b/src/components/ui/slider/SliderMarker.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/slider/SliderMarkerGroup.vue b/src/components/ui/slider/SliderMarkerGroup.vue new file mode 100644 index 0000000..53dcca0 --- /dev/null +++ b/src/components/ui/slider/SliderMarkerGroup.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/slider/SliderRange.vue b/src/components/ui/slider/SliderRange.vue new file mode 100644 index 0000000..93f63e2 --- /dev/null +++ b/src/components/ui/slider/SliderRange.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/slider/SliderRoot.vue b/src/components/ui/slider/SliderRoot.vue new file mode 100644 index 0000000..4e9c79d --- /dev/null +++ b/src/components/ui/slider/SliderRoot.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/slider/SliderThumb.vue b/src/components/ui/slider/SliderThumb.vue new file mode 100644 index 0000000..1f52346 --- /dev/null +++ b/src/components/ui/slider/SliderThumb.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/slider/SliderTrack.vue b/src/components/ui/slider/SliderTrack.vue new file mode 100644 index 0000000..b033aa3 --- /dev/null +++ b/src/components/ui/slider/SliderTrack.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/slider/SliderValueText.vue b/src/components/ui/slider/SliderValueText.vue new file mode 100644 index 0000000..2617a0f --- /dev/null +++ b/src/components/ui/slider/SliderValueText.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/ui/slider/index.ts b/src/components/ui/slider/index.ts new file mode 100644 index 0000000..f41c7f4 --- /dev/null +++ b/src/components/ui/slider/index.ts @@ -0,0 +1,10 @@ +export { default as SliderRoot } from "./SliderRoot.vue"; +export { default as SliderLabel } from "./SliderLabel.vue"; +export { default as SliderValueText } from "./SliderValueText.vue"; +export { default as SliderControl } from "./SliderControl.vue"; +export { default as SliderTrack } from "./SliderTrack.vue"; +export { default as SliderRange } from "./SliderRange.vue"; +export { default as SliderThumb } from "./SliderThumb.vue"; +export { default as SliderHiddenInput } from "./SliderHiddenInput.vue"; +export { default as SliderMarkerGroup } from "./SliderMarkerGroup.vue"; +export { default as SliderMarker } from "./SliderMarker.vue"; diff --git a/src/components/ui/slot/index.ts b/src/components/ui/slot/index.ts new file mode 100644 index 0000000..90871a5 --- /dev/null +++ b/src/components/ui/slot/index.ts @@ -0,0 +1,59 @@ +import { + defineComponent, + h, + cloneVNode, + Fragment, + isVNode, + type VNode, + type PropType, +} from "vue"; +import { calculateSlot, flattenItems, type AnyProps } from "./slot"; + +/* ------------------------------------------------------------------------------------------------- + * Vue Implementation (Component Shell) + * -----------------------------------------------------------------------------------------------*/ + +export const Slot = defineComponent({ + name: "Slot", + inheritAttrs: false, + props: { + children: { + type: [Object, Array] as PropType, + }, + }, + setup(props, { attrs, slots }) { + return () => { + const raw = props.children ?? slots.default?.(); + + const isValidVNode = (item: any): item is VNode => isVNode(item) && typeof item.type !== "symbol"; + + // Use generic flatten logic with Vue-specific adapter + // Aligned with React's flatten(children) logic + const items = flattenItems( + raw as any, + (item) => isVNode(item) && item.type === Fragment, + (item) => (isVNode(item) && Array.isArray(item.children) ? (item.children as VNode[]) : []) + ).filter(isValidVNode); + + // Use our vanilla logic to determine the transform + const result = calculateSlot({ + props: attrs as AnyProps, + items, + isValid: isValidVNode, + getProps: (item) => (item.props as AnyProps) || {}, + getChildren: (item) => item.children, + }); + + // If it's a wrapper, we render a real div + if (result.type === "wrapper") { + return h("div", result.props, result.children as any); + } + + // If it's slotted, we clone the target VNode with merged props + const target = result.target; + return cloneVNode(target, result.props, false); + }; + }, +}); + +export { Slot as Root }; diff --git a/src/components/ui/slot/slot.ts b/src/components/ui/slot/slot.ts new file mode 100644 index 0000000..e7ce2ac --- /dev/null +++ b/src/components/ui/slot/slot.ts @@ -0,0 +1,133 @@ +export type AnyProps = Record; + +export interface SlotParams { + props: AnyProps; + items: T[]; + isValid: (item: T) => boolean; + getProps: (item: T) => AnyProps; + getChildren: (item: T) => any; +} + +export type SlotResult = + | { + type: "slotted"; + target: T; + props: AnyProps; + children: any; + } + | { + type: "wrapper"; + target: "div"; + props: AnyProps; + children: T[]; + }; + +/** + * mergeProps: Pure vanilla logic to combine attributes/props. + * Enhanced to handle framework-agnostic class merging and deduplication. + */ +export function mergeProps(slotProps: AnyProps, childProps: AnyProps): AnyProps { + const result: AnyProps = { ...childProps }; + + for (const key in slotProps) { + const slotValue = slotProps[key]; + + // 1. Event Handlers (Merge them to execute both) + const isHandler = /^on[A-Z]/.test(key); + if (isHandler) { + const childValue = childProps[key]; + if (typeof slotValue === "function" && typeof childValue === "function") { + result[key] = (...args: any[]) => { + childValue(...args); + slotValue(...args); + }; + } else if (slotValue) { + result[key] = slotValue; + } + continue; + } + + // 2. Class Names (Handle 'class' and 'className' as synonyms) + if (key === "class" || key === "className") { + const slotClasses = (slotValue || "").split(/\s+/); + const childClasses = (childProps.class || childProps.className || "").split(/\s+/); + + // Deduplicate classes + const combined = Array.from(new Set([...slotClasses, ...childClasses])) + .filter(Boolean) + .join(" "); + + // Update the key that was provided, and sync the other if it exists + result[key] = combined; + const otherKey = key === "class" ? "className" : "class"; + if (otherKey in childProps) { + result[otherKey] = combined; + } + continue; + } + + // 3. Styles (Object merge) + if (key === "style") { + result[key] = { ...slotValue, ...childProps.style }; + continue; + } + + // 4. Default attribute override + if (childProps[key] === undefined) { + result[key] = slotValue; + } + } + + return result; +} + +/** + * flattenItems: A generic utility to flatten hierarchies based on a marker (like Fragments). + */ +export function flattenItems( + items: T | T[], + isFragment: (item: T) => boolean, + getChildren: (item: T) => T | T[] +): T[] { + const result: T[] = []; + const list = Array.isArray(items) ? items : [items]; + + list.forEach((item) => { + if (item === null || item === undefined) return; + + if (isFragment(item)) { + const children = getChildren(item); + result.push(...flattenItems(children, isFragment, getChildren)); + } else { + result.push(item); + } + }); + + return result; +} + +/** + * calculateSlot: Decides which element gets the props. + */ +export function calculateSlot(params: SlotParams): SlotResult { + const { props, items, isValid, getProps, getChildren } = params; + + if (items.length === 1) { + const primary = items[0]; + if (primary !== undefined && isValid(primary)) { + return { + type: "slotted", + target: primary, + props: mergeProps(props, getProps(primary)), + children: getChildren(primary), + }; + } + } + + return { + type: "wrapper", + target: "div", + props: props, + children: items, + }; +} diff --git a/src/components/ui/styles/accordion.styles.ts b/src/components/ui/styles/accordion.styles.ts new file mode 100644 index 0000000..74b9857 --- /dev/null +++ b/src/components/ui/styles/accordion.styles.ts @@ -0,0 +1,39 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +// Styles +export const accordionRootVariants = cva("flex flex-col", { + variants: { + variant: { + default: "-mt-4 -mb-3", + boxed: "gap-3", + }, + }, + defaultVariants: { + variant: "default", + }, +}); +export const accordionItemVariants = cva("group", { + variants: { + variant: { + default: "border-b border-b-foreground/10 last:border-b-transparent", + boxed: "py-0 px-4", + }, + }, + defaultVariants: { + variant: "default", + }, +}); +export const accordionTrigger = + "group-hover:underline cursor-pointer w-full flex items-center font-medium py-4"; +export const accordionItemIndicator = + "ms-auto opacity-70 [&>svg]:size-4 data-[state=open]:rotate-180 transition"; +export const accordionContent = + "-mt-1 pb-4 opacity-80 data-[state=open]:animate-in data-[state=open]:zoom-in-95 data-[state=open]:fade-in-0"; + +// Types +export type AccordionRootVariants = { + variant?: VariantProps["variant"]; +}; +export type AccordionItemVariants = { + variant?: VariantProps["variant"]; +}; diff --git a/src/components/ui/styles/alert.styles.ts b/src/components/ui/styles/alert.styles.ts new file mode 100644 index 0000000..99077f6 --- /dev/null +++ b/src/components/ui/styles/alert.styles.ts @@ -0,0 +1,134 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +export const alertRootVariants = cva( + [ + "flex flex-col gap-1 [&>svg]:size-5 [&>svg]:absolute [&>svg]:my-auto [&>svg]:inset-y-0 [&>svg]:left-5 [&>svg]:stroke-[1.5] has-[>svg]:ps-14 ps-5 pe-20 py-4", + "rounded-xl shadow-md/5 isolate relative cursor-pointer", + "before:absolute after:absolute before:z-[-1] after:z-[-1] before:rounded-[inherit] after:rounded-[inherit]", + ], + { + variants: { + variant: { + ghost: "after:from-transparent bg-transparent text-foreground", + primary: "after:from-primary/40 bg-primary text-primary-foreground", + secondary: + "after:from-secondary/40 bg-secondary text-secondary-foreground", + success: "after:from-success/40 bg-success text-success-foreground", + danger: "after:from-danger/40 bg-danger text-danger-foreground", + pending: "after:from-pending/40 bg-pending text-pending-foreground", + warning: "after:from-warning/40 bg-warning text-warning-foreground", + }, + look: { + filled: [ + "dark:outline-2 dark:outline-black/30", + "before:inset-0 before:bg-gradient-to-b before:from-white/40 before:to-white/[.05]", + "after:inset-[2px] after:bg-gradient-to-b after:to-white/[.08] after:rounded-[calc(var(--radius)*0.9)]", + "dark:before:from-black/[.5] dark:before:to-black/70", + "dark:after:from-black/[.3] dark:after:to-black/[.1]", + ], + outline: + "before:bg-none before:border before:rounded-[inherit] before:inset-0 after:hidden bg-background", + flat: "before:inset-0 dark:before:inset-0 dark:before:bg-black/60", + text: "before:hidden shadow-none bg-transparent", + }, + }, + compoundVariants: [ + { + variant: "ghost", + look: "flat", + class: "dark:before:bg-transparent", + }, + { + variant: "ghost", + look: "outline", + class: + "before:bg-foreground/10 dark:before:bg-foreground/[.15] before:border-foreground/40 dark:before:border-foreground/20 text-foreground", + }, + { + variant: "primary", + look: "outline", + class: + "before:bg-primary/10 dark:before:bg-primary/[.15] before:border-primary/40 dark:before:border-primary/20 text-primary", + }, + { + variant: "secondary", + look: "outline", + class: + "before:bg-secondary/10 dark:before:bg-secondary/[.15] before:border-secondary/40 dark:before:border-secondary/20 text-secondary", + }, + { + variant: "success", + look: "outline", + class: + "before:bg-success/10 dark:before:bg-success/[.15] before:border-success/40 dark:before:border-success/20 text-success", + }, + { + variant: "danger", + look: "outline", + class: + "before:bg-danger/10 dark:before:bg-danger/[.15] before:border-danger/40 dark:before:border-danger/20 text-danger", + }, + { + variant: "pending", + look: "outline", + class: + "before:bg-pending/10 dark:before:bg-pending/[.15] before:border-pending/40 dark:before:border-pending/20 text-pending", + }, + { + variant: "warning", + look: "outline", + class: + "before:bg-warning/10 dark:before:bg-warning/[.15] before:border-warning/40 dark:before:border-warning/20 text-warning", + }, + { + variant: "ghost", + look: "text", + class: "text-foreground", + }, + { + variant: "primary", + look: "text", + class: "text-primary", + }, + { + variant: "secondary", + look: "text", + class: "text-secondary", + }, + { + variant: "success", + look: "text", + class: "text-success", + }, + { + variant: "danger", + look: "text", + class: "text-danger", + }, + { + variant: "pending", + look: "text", + class: "text-pending", + }, + { + variant: "warning", + look: "text", + class: "text-warning", + }, + ], + defaultVariants: { + variant: "primary", + look: "flat", + }, + } +); + +export type AlertRootVariants = { + look?: VariantProps["look"]; + variant?: VariantProps["variant"]; +}; + +export const alertTitle = "font-medium"; +export const alertDescription = "opacity-70"; +export const alertCloseTrigger = + "absolute right-5 inset-y-0 my-auto size-4 [&>svg]:size-full cursor-pointer"; diff --git a/src/components/ui/styles/avatar.styles.ts b/src/components/ui/styles/avatar.styles.ts new file mode 100644 index 0000000..a941c4c --- /dev/null +++ b/src/components/ui/styles/avatar.styles.ts @@ -0,0 +1,24 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +// Styles +export const avatarRootVariants = cva( + "size-14 rounded-xl overflow-hidden relative bg-foreground/5 flex items-center justify-center border-3 ring-1 border-transparent", + { + variants: { + bordered: { + true: "ring-foreground/20", + false: "ring-transparent border-none", + }, + }, + defaultVariants: { + bordered: true, + }, + } +); +export const avatarFallback = "font-medium"; +export const avatarImage = "absolute top-0 size-full object-cover"; + +// Types +export type AvatarRootVariants = { + bordered?: VariantProps["bordered"]; +}; diff --git a/src/components/ui/styles/badge.styles.ts b/src/components/ui/styles/badge.styles.ts new file mode 100644 index 0000000..44dbac6 --- /dev/null +++ b/src/components/ui/styles/badge.styles.ts @@ -0,0 +1,130 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +// Styles +export const badgeVariants = cva( + [ + "text-xs rounded-lg shadow-md/5 isolate relative px-2 py-0.5 cursor-pointer inline-flex items-center justify-center gap-1 whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 [&_svg]:pointer-events-none [&_svg]:size-3.5 [&_svg]:stroke-2 [&_svg]:shrink-0", + "before:absolute after:absolute before:z-[-1] after:z-[-1] before:rounded-[inherit] after:rounded-[inherit]", + ], + { + variants: { + variant: { + ghost: "after:from-transparent bg-transparent text-foreground", + primary: "after:from-primary/40 bg-primary text-primary-foreground", + secondary: + "after:from-secondary/40 bg-secondary text-secondary-foreground", + success: "after:from-success/40 bg-success text-success-foreground", + danger: "after:from-danger/40 bg-danger text-danger-foreground", + pending: "after:from-pending/40 bg-pending text-pending-foreground", + warning: "after:from-warning/40 bg-warning text-warning-foreground", + }, + look: { + filled: [ + "dark:outline-2 dark:outline-black/30", + "before:inset-0 before:bg-gradient-to-b before:from-white/40 before:to-white/[.05]", + "after:inset-[2px] after:bg-gradient-to-b after:to-white/[.08] after:rounded-[calc(var(--radius)*0.7)]", + "dark:before:from-black/[.5] dark:before:to-black/70", + "dark:after:from-black/[.3] dark:after:to-black/[.1]", + ], + outline: + "before:bg-none before:border before:rounded-[inherit] before:inset-0 after:hidden bg-background", + flat: "before:inset-0 dark:before:inset-0 dark:before:bg-black/60", + text: "before:hidden shadow-none bg-transparent", + }, + }, + compoundVariants: [ + { + variant: "ghost", + look: "flat", + class: "dark:before:bg-transparent", + }, + { + variant: "ghost", + look: "outline", + class: + "before:bg-foreground/10 dark:before:bg-foreground/[.15] before:border-foreground/40 dark:before:border-foreground/20 text-foreground", + }, + { + variant: "primary", + look: "outline", + class: + "before:bg-primary/10 dark:before:bg-primary/[.15] before:border-primary/40 dark:before:border-primary/20 text-primary", + }, + { + variant: "secondary", + look: "outline", + class: + "before:bg-secondary/10 dark:before:bg-secondary/[.15] before:border-secondary/40 dark:before:border-secondary/20 text-secondary", + }, + { + variant: "success", + look: "outline", + class: + "before:bg-success/10 dark:before:bg-success/[.15] before:border-success/40 dark:before:border-success/20 text-success", + }, + { + variant: "danger", + look: "outline", + class: + "before:bg-danger/10 dark:before:bg-danger/[.15] before:border-danger/40 dark:before:border-danger/20 text-danger", + }, + { + variant: "pending", + look: "outline", + class: + "before:bg-pending/10 dark:before:bg-pending/[.15] before:border-pending/40 dark:before:border-pending/20 text-pending", + }, + { + variant: "warning", + look: "outline", + class: + "before:bg-warning/10 dark:before:bg-warning/[.15] before:border-warning/40 dark:before:border-warning/20 text-warning", + }, + { + variant: "ghost", + look: "text", + class: "text-foreground", + }, + { + variant: "primary", + look: "text", + class: "text-primary", + }, + { + variant: "secondary", + look: "text", + class: "text-secondary", + }, + { + variant: "success", + look: "text", + class: "text-success", + }, + { + variant: "danger", + look: "text", + class: "text-danger", + }, + { + variant: "pending", + look: "text", + class: "text-pending", + }, + { + variant: "warning", + look: "text", + class: "text-warning", + }, + ], + defaultVariants: { + variant: "primary", + look: "flat", + }, + } +); + +// Types +export type BadgeVariants = { + look?: VariantProps["look"]; + variant?: VariantProps["variant"]; +}; diff --git a/src/components/ui/styles/box.styles.ts b/src/components/ui/styles/box.styles.ts new file mode 100644 index 0000000..eb3a081 --- /dev/null +++ b/src/components/ui/styles/box.styles.ts @@ -0,0 +1,24 @@ +import { cva, type VariantProps } from 'class-variance-authority' + +export const boxVariants = cva( + 'shadow-md/5 bg-background bg-gradient-to-b from-transparent to-foreground/[.03] dark:to-foreground/5 border border-foreground/10 rounded-xl p-5 outline-none relative before:absolute after:absolute', + { + variants: { + raised: { + single: [ + 'mb-3', + 'before:inset-x-2.5 before:h-[10px] before:bg-background before:-bottom-[11px] before:rounded-b-xl before:border-x before:border-b before:border-foreground/10 before:z-[-1] before:shadow-md/5 before:opacity-60 dark:before:opacity-100', + ], + double: [ + 'mb-5', + 'before:inset-x-2.5 before:h-[10px] before:bg-background before:-bottom-[11px] before:rounded-b-xl before:border-x before:border-b before:border-foreground/10 before:z-[-1] before:shadow-md/5 before:opacity-60 dark:before:opacity-100', + 'after:inset-x-5 after:h-[10px] after:bg-background after:-bottom-[21px] after:rounded-b-xl after:border-x after:border-b after:border-foreground/10 after:z-[-2] after:shadow-md/5 after:opacity-50 dark:after:opacity-90', + ], + }, + }, + }, +) + +export type BoxVariants = { + raised?: VariantProps['raised'] +} diff --git a/src/components/ui/styles/breadcrumb.styles.ts b/src/components/ui/styles/breadcrumb.styles.ts new file mode 100644 index 0000000..8cf4c5d --- /dev/null +++ b/src/components/ui/styles/breadcrumb.styles.ts @@ -0,0 +1,4 @@ +export const breadcrumbList = + '[&>svg]:size-4 [&>svg]:stroke-[1.3] flex items-center gap-1.5 text-foreground/70' +export const breadcrumbItem = 'hover:text-foreground last:text-foreground' +export const breadcrumbLink = 'cursor-pointer [&>svg]:size-4 [&>svg]:stroke-[1.5]' diff --git a/src/components/ui/styles/button.styles.ts b/src/components/ui/styles/button.styles.ts new file mode 100644 index 0000000..a8db2d5 --- /dev/null +++ b/src/components/ui/styles/button.styles.ts @@ -0,0 +1,137 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +export const buttonVariants = cva( + [ + "shadow-md/5 isolate relative py-2 cursor-pointer inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-3.5 [&_svg]:stroke-2 [&_svg]:shrink-0", + "before:absolute after:absolute before:z-[-1] after:z-[-1] before:rounded-[inherit] after:rounded-[inherit]", + ], + { + variants: { + variant: { + ghost: + "after:from-transparent bg-transparent hover:bg-foreground/5 text-foreground", + primary: "after:from-primary/40 bg-primary text-primary-foreground", + secondary: + "after:from-secondary/40 bg-secondary text-secondary-foreground", + success: "after:from-success/40 bg-success text-success-foreground", + danger: "after:from-danger/40 bg-danger text-danger-foreground", + pending: "after:from-pending/40 bg-pending text-pending-foreground", + warning: "after:from-warning/40 bg-warning text-warning-foreground", + }, + size: { + sm: "h-9 rounded-(--radius) px-3 text-sm", + default: "h-10 rounded-(--radius) px-4 text-sm", + lg: "h-11 rounded-(--radius) px-5 text-base", + xl: "h-13 rounded-(--radius) px-6 text-base", + }, + look: { + filled: [ + "dark:outline-2 dark:outline-black/30", + "before:inset-0 before:bg-gradient-to-b before:from-white/40 before:to-white/[.05] hover:before:from-white/50", + "after:inset-[2px] after:bg-gradient-to-b after:to-white/[.08] after:rounded-[calc(var(--radius)*0.7)]", + "dark:before:from-black/[.5] dark:before:to-black/70 hover:dark:before:from-black/[.4]", + "dark:after:from-black/[.3] dark:after:to-black/[.1]", + ], + outline: + "before:bg-none before:border before:rounded-[inherit] before:inset-0 after:hidden bg-background", + flat: "hover:before:bg-white/5 before:inset-0 dark:before:inset-0 dark:before:bg-black/60 hover:dark:before:bg-black/55", + text: "before:hidden shadow-none bg-transparent", + }, + }, + compoundVariants: [ + { + variant: "ghost", + look: "flat", + class: "dark:before:bg-transparent", + }, + { + variant: "ghost", + look: "outline", + class: + "before:bg-foreground/10 hover:before:bg-foreground/15 dark:before:bg-foreground/[.15] hover:dark:before:bg-foreground/20 before:border-foreground/40 dark:before:border-foreground/20 text-foreground", + }, + { + variant: "primary", + look: "outline", + class: + "before:bg-primary/10 hover:before:bg-primary/15 dark:before:bg-primary/[.15] hover:dark:before:bg-primary/20 before:border-primary/40 dark:before:border-primary/20 text-primary", + }, + { + variant: "secondary", + look: "outline", + class: + "before:bg-secondary/10 hover:before:bg-secondary/15 dark:before:bg-secondary/[.15] hover:dark:before:bg-secondary/20 before:border-secondary/40 dark:before:border-secondary/20 text-secondary", + }, + { + variant: "success", + look: "outline", + class: + "before:bg-success/10 hover:before:bg-success/15 dark:before:bg-success/[.15] hover:dark:before:bg-success/20 before:border-success/40 dark:before:border-success/20 text-success", + }, + { + variant: "danger", + look: "outline", + class: + "before:bg-danger/10 hover:before:bg-danger/15 dark:before:bg-danger/[.15] hover:dark:before:bg-danger/20 before:border-danger/40 dark:before:border-danger/20 text-danger", + }, + { + variant: "pending", + look: "outline", + class: + "before:bg-pending/10 hover:before:bg-pending/15 dark:before:bg-pending/[.15] hover:dark:before:bg-pending/20 before:border-pending/40 dark:before:border-pending/20 text-pending", + }, + { + variant: "warning", + look: "outline", + class: + "before:bg-warning/10 hover:before:bg-warning/15 dark:before:bg-warning/[.15] hover:dark:before:bg-warning/20 before:border-warning/40 dark:before:border-warning/20 text-warning", + }, + { + variant: "ghost", + look: "text", + class: "text-foreground", + }, + { + variant: "primary", + look: "text", + class: "text-primary", + }, + { + variant: "secondary", + look: "text", + class: "text-secondary", + }, + { + variant: "success", + look: "text", + class: "text-success", + }, + { + variant: "danger", + look: "text", + class: "text-danger", + }, + { + variant: "pending", + look: "text", + class: "text-pending", + }, + { + variant: "warning", + look: "text", + class: "text-warning", + }, + ], + defaultVariants: { + variant: "primary", + size: "default", + look: "flat", + }, + } +); + +export type ButtonVariants = { + look?: VariantProps["look"]; + variant?: VariantProps["variant"]; + size?: VariantProps["size"]; +}; diff --git a/src/components/ui/styles/carousel.styles.ts b/src/components/ui/styles/carousel.styles.ts new file mode 100644 index 0000000..be919a2 --- /dev/null +++ b/src/components/ui/styles/carousel.styles.ts @@ -0,0 +1,14 @@ +export const carouselRoot = "relative"; +export const carouselControl = + "absolute size-full flex place-content-between items-center"; +export const carouselPrevTrigger = + "rounded-full p-2.5 h-9 -ms-12 border border-foreground/15"; +export const carouselNextTrigger = + "rounded-full p-2.5 h-9 -me-12 border border-foreground/15"; +export const carouselIndicatorGroup = + "absolute inset-x-0 bottom-0 z-5 w-full flex gap-1.5 justify-center mb-6"; +export const carouselIndicator = + "size-3 border border-foreground/10 bg-background/40 rounded-full data-[current]:bg-background/70 data-[current]:border-foreground/20 data-[current]:shadow-md/5"; +export const carouselItemGroup = "size-full"; +export const carouselItem = + "relative size-full overflow-hidden [&>img]:absolute [&>img]:inset-0 [&>img]:size-full [&>img]:object-cover"; diff --git a/src/components/ui/styles/chart.styles.ts b/src/components/ui/styles/chart.styles.ts new file mode 100644 index 0000000..3a4730b --- /dev/null +++ b/src/components/ui/styles/chart.styles.ts @@ -0,0 +1 @@ +export const chart = ""; diff --git a/src/components/ui/styles/checkbox.styles.ts b/src/components/ui/styles/checkbox.styles.ts new file mode 100644 index 0000000..3c61118 --- /dev/null +++ b/src/components/ui/styles/checkbox.styles.ts @@ -0,0 +1,7 @@ +export const checkboxRoot = "flex items-center gap-3"; +export const checkboxLabel = ""; +export const checkboxControl = + "bg-background relative size-4 border shadow-md/5 border-foreground/15 dark:border-foreground/25 rounded-md"; +export const checkboxIndicator = + "[&>svg]:absolute [&>svg]:inset-0 [&>svg]:m-auto [&>svg]:size-3 [&>svg]:stroke-3"; +export const checkboxHiddenInput = ""; diff --git a/src/components/ui/styles/combobox.styles.ts b/src/components/ui/styles/combobox.styles.ts new file mode 100644 index 0000000..6f48b60 --- /dev/null +++ b/src/components/ui/styles/combobox.styles.ts @@ -0,0 +1,18 @@ +export const comboboxRoot = + "w-full flex flex-col gap-2.5 [&[data-multiple=true]_[data-part=clear-trigger]]:block"; +export const comboboxLabel = ""; +export const comboboxControl = "relative"; +export const comboboxInput = "flex-none"; +export const comboboxTrigger = + "font-normal text-foreground/70 w-full border border-foreground/15 bg-background [&>div]:truncate [&>svg]:ms-auto"; +export const comboboxClearTrigger = + "text-danger/90 cursor-pointer text-xs hidden ms-1"; +export const comboboxPositioner = "!z-50 !w-auto"; +export const comboboxContent = + "min-w-(--reference-width) p-0 z-(--layer-index) [&>div]:p-4 [&>div]:max-h-78 [&>div]:overflow-y-auto [&>div]:flex [&>div]:flex-col [&>div]:gap-5"; +export const comboboxItemGroup = "flex flex-col gap-3"; +export const comboboxItemGroupLabel = "px-1 text-xs opacity-70 mb-0.5"; +export const comboboxItem = + "flex items-center py-1 px-2.5 -mx-1.5 -my-1 hover:bg-foreground/[.04] rounded-lg cursor-pointer"; +export const comboboxItemText = ""; +export const comboboxItemIndicator = "ms-auto opacity-70"; diff --git a/src/components/ui/styles/datepicker.styles.ts b/src/components/ui/styles/datepicker.styles.ts new file mode 100644 index 0000000..2714064 --- /dev/null +++ b/src/components/ui/styles/datepicker.styles.ts @@ -0,0 +1,34 @@ +export const datePickerRoot = "w-full flex flex-col gap-2.5"; +export const datePickerLabel = ""; +export const datePickerControl = "flex gap-2.5"; +export const datePickerInput = ""; +export const datePickerTrigger = "border border-foreground/15 bg-background"; +export const datePickerClearTrigger = + "border border-foreground/15 bg-background"; +export const datePickerPositioner = "!z-50 !w-auto"; +export const datePickerContent = + "min-w-(--reference-width) p-0 z-(--layer-index) [&>div]:p-4 [&>div]:grid [&>div]:grid-cols-2 [&>div]:gap-x-2.5 [&>div]:gap-y-3 [&>div>div]:col-span-2"; +export const datePickerYearSelect = + "shadow-none w-auto inline px-3 py-1.5 h-auto mb-2.5"; +export const datePickerMonthSelect = + "shadow-none w-auto inline px-3 py-1.5 h-auto mb-2.5"; +export const datePickerView = "flex flex-col gap-2"; +export const datePickerViewControl = "flex"; +export const datePickerPresetTrigger = + "border border-foreground/15 bg-background"; +export const datePickerPrevTrigger = + "px-2.5 py-1.5 rounded-lg hover:bg-foreground/5 cursor-pointer [&>svg]:size-4 [&>svg]:stroke-[1.5]"; +export const datePickerViewTrigger = + "mx-auto px-4 py-1.5 rounded-lg hover:bg-foreground/5 cursor-pointer [&>svg]:size-4 [&>svg]:stroke-[1.5]"; +export const datePickerNextTrigger = + "px-2.5 py-1.5 rounded-lg hover:bg-foreground/5 cursor-pointer [&>svg]:size-4 [&>svg]:stroke-[1.5]"; +export const datePickerRangeText = "mx-auto font-medium"; +export const datePickerTable = + "w-full text-center border-separate border-spacing-y-2 border-spacing-x-1.5"; +export const datePickerTableHead = ""; +export const datePickerTableRow = ""; +export const datePickerTableHeader = "font-normal opacity-70"; +export const datePickerTableBody = ""; +export const datePickerTableCell = ""; +export const datePickerTableCellTrigger = + "px-1.5 py-1 rounded-lg hover:bg-foreground/5 cursor-pointer data-[selected]:bg-foreground/70 data-[in-range]:bg-foreground/10 data-[selected]:text-background data-[disabled]:opacity-70"; diff --git a/src/components/ui/styles/dialog.styles.ts b/src/components/ui/styles/dialog.styles.ts new file mode 100644 index 0000000..8143c71 --- /dev/null +++ b/src/components/ui/styles/dialog.styles.ts @@ -0,0 +1,14 @@ +export const dialogTrigger = ""; +export const dialogBackdrop = + "fixed inset-0 bg-black/80 z-70 [&[data-state='open']]:animate-in [&[data-state='open']]:fade-in-0 [&[data-state='closed']]:animate-out [&[data-state='closed']]:fade-out-0"; +export const dialogPositioner = ""; +export const dialogContent = [ + "px-6 pt-6 pb-7 rounded-2xl outline-none backdrop-blur-lg fixed top-[50%] left-[50%] z-70 w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] sm:max-w-lg", + "[&[data-state='open']]:animate-in [&[data-state='open']]:fade-in-0 [&[data-state='open']]:zoom-in-80 [&[data-state='open']]:duration-250", + "[&[data-state='closed']]:animate-out [&[data-state='closed']]:fade-out-0 [&[data-state='closed']]:zoom-out-80 [&[data-state='closed']]:duration-400", + "before:mx-2.5 after:mx-3.5", +]; +export const dialogTitle = "font-medium text-base relative -mt-.5"; +export const dialogDescription = "opacity-80 py-2 relative"; +export const dialogCloseTrigger = + "absolute right-0 top-0 p-0 size-8 rounded-full -mt-2 -me-2 border border-foreground/10 bg-background dark:bg-background hover:bg-background before:hidden dark:before:block before:absolute before:-inset-px before:bg-background dark:before:bg-foreground/20 before:z-[-1] before:rounded-full"; diff --git a/src/components/ui/styles/field.styles.ts b/src/components/ui/styles/field.styles.ts new file mode 100644 index 0000000..51a50ab --- /dev/null +++ b/src/components/ui/styles/field.styles.ts @@ -0,0 +1,51 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +// Styles +export const fieldVariants = cva( + "data-[invalid=true]:text-danger gap-2 group/field flex w-full", + { + variants: { + orientation: { + vertical: "flex-col *:w-full [&>.sr-only]:w-auto", + horizontal: + "flex-row items-center *:data-[part=field-label]:flex-auto has-[>[data-part=field-content]]:items-start has-[>[data-part=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px", + responsive: + "flex-col *:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:*:data-[part=field-label]:flex-auto @md/field-group:has-[>[data-part=field-content]]:items-start @md/field-group:has-[>[data-part=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px", + }, + }, + defaultVariants: { + orientation: "vertical", + }, + } +); +export const fieldContent = + "gap-0.5 group/field-content flex flex-1 flex-col leading-snug"; +export const fieldDescription = [ + "text-foreground/70 text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-data-horizontal/field:text-balance", + "last:mt-0 nth-last-2:-mt-1", + "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", +]; +export const fieldError = + "text-danger text-sm font-normal [&>ul]:ml-4 [&>ul]:flex [&>ul]:list-disc [&>ul]:flex-col [&>ul]:gap-1"; +export const fieldGroup = + "gap-5 data-[part=checkbox-group]:gap-3 *:data-[part=field-group]:gap-4 group/field-group @container/field-group flex w-full flex-col"; +export const fieldLabel = [ + "has-data-[state='checked']:bg-foreground/5 has-data-[state='checked']:border-foreground/30 dark:has-data-[state='checked']:border-foreground/20 dark:has-data-[state='checked']:bg-foreground/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-part=field]]:rounded-(--radius) has-[>[data-part=field]]:border has-[>[data-part=field]]:border-foreground/15 *:data-[part=field]:p-3.5 group/field-label peer/field-label flex w-fit leading-snug", + "has-[>[data-part=field]]:w-full has-[>[data-part=field]]:flex-col", +]; +export const fieldLegend = + "mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base"; +export const fieldSeparator = [ + "-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative", + "[&>[data-part='separator']]:absolute [&>[data-part='separator']]:inset-0 [&>[data-part='separator']]:top-1/2", + "[&>[data-part='field-separator-content']]:text-foreground/70 [&>[data-part='field-separator-content']]:px-2 [&>[data-part='field-separator-content']]:bg-background [&>[data-part='field-separator-content']]:relative [&>[data-part='field-separator-content']]:mx-auto [&>[data-part='field-separator-content']]:block [&>[data-part='field-separator-content']]:w-fit", +]; +export const fieldSet = + "gap-4 has-[>[data-part=checkbox-group]]:gap-3 has-[>[data-part=radio-group]]:gap-3 flex flex-col"; +export const fieldTitle = + "gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug"; + +// Types +export type FieldVariants = { + orientation?: VariantProps["orientation"]; +}; diff --git a/src/components/ui/styles/input.styles.ts b/src/components/ui/styles/input.styles.ts new file mode 100644 index 0000000..874a418 --- /dev/null +++ b/src/components/ui/styles/input.styles.ts @@ -0,0 +1,5 @@ +export const input = [ + 'file:text-foreground placeholder:text-foreground/80 selection:bg-foreground/70 selection:text-background flex h-10 w-full min-w-0 rounded-xl border border-foreground/15 backdrop-blur-lg bg-background px-3 py-1 text-base shadow-sm/5 transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', + 'focus-visible:border-ring focus-visible:ring-foreground/10 focus-visible:ring-[3px]', + 'aria-invalid:ring-danger/20 dark:aria-invalid:ring-danger/40 aria-invalid:border-danger', +] diff --git a/src/components/ui/styles/label.styles.ts b/src/components/ui/styles/label.styles.ts new file mode 100644 index 0000000..3b0b652 --- /dev/null +++ b/src/components/ui/styles/label.styles.ts @@ -0,0 +1 @@ +export const label = "font-medium"; diff --git a/src/components/ui/styles/map.styles.ts b/src/components/ui/styles/map.styles.ts new file mode 100644 index 0000000..5289f24 --- /dev/null +++ b/src/components/ui/styles/map.styles.ts @@ -0,0 +1,9 @@ +export const map = [ + "data-[part='root']:relative data-[part='root']:contrast-105 data-[part='root']:grayscale dark:data-[part='root']:contrast-[.9] dark:data-[part='root']:invert", + "dark:[&_[data-part='controls']]:invert [&_[data-part='controls']]:absolute [&_[data-part='controls']]:top-2 [&_[data-part='controls']]:right-2 [&_[data-part='controls']]:flex [&_[data-part='controls']]:flex-col [&_[data-part='controls']]:gap-1 [&_[data-part='controls']]:z-50", + "[&_[data-part='zoom-in']]:bg-background", + "[&_[data-part='zoom-out']]:bg-background", + "[&_[data-part='reset-north']]:bg-background", + "[&_[data-part='locate']]:bg-background", + "[&_[data-part='toggle-fullscreen']]:bg-background", +]; diff --git a/src/components/ui/styles/menu.styles.ts b/src/components/ui/styles/menu.styles.ts new file mode 100644 index 0000000..43353b2 --- /dev/null +++ b/src/components/ui/styles/menu.styles.ts @@ -0,0 +1,33 @@ +export const menuRoot = "w-full"; +export const menuTrigger = + "w-full font-normal border border-foreground/15 bg-background"; +export const menuIndicator = "ms-auto transition data-[state=open]:rotate-180"; +export const menuPositioner = "!z-50"; +export const menuContent = + "min-w-46 w-(--reference-width) p-0 z-(--layer-index) [&>div]:flex [&>div]:flex-col [&>div]:gap-2.5 [&>div]:p-4 [&>div]:max-h-78 [&>div]:overflow-y-auto"; +export const menuItem = [ + // Default + "[&>div:nth-of-type(1)]:flex [&>div:nth-of-type(1)]:items-center [&>div:nth-of-type(1)]:gap-2.5 relative flex items-center py-1 px-2.5 -mx-1.5 -my-1 hover:bg-foreground/[.04] rounded-lg cursor-pointer", + + // Nested menu chevron + "[&_[data-part='nested-menu-chevron']]:size-4 [&_[data-part='nested-menu-chevron']]:stroke-[1.3] [&_[data-part='nested-menu-chevron']]:-me-1 [&_[data-part='nested-menu-chevron']]:ms-auto", + + // Shortcut + "[&>div:nth-of-type(2)]:text-foreground/50 [&>div:nth-of-type(2)]:text-xs [&>div:nth-of-type(2)]:ms-auto", + + // Disabled + "data-disabled:opacity-50 data-disabled:hover:bg-background data-disabled:cursor-not-allowed", + + // Checkbox + "[&[data-type=checkbox]_[data-part='item-indicator']_svg]:stroke-3 [&[data-type=checkbox]>div:nth-of-type(1)]:before:absolute [&[data-type=checkbox]>div:nth-of-type(1)]:before:size-4 [&[data-type=checkbox]>div:nth-of-type(1)]:before:border [&[data-type=checkbox]>div:nth-of-type(1)]:before:shadow-md/5 [&[data-type=checkbox]>div:nth-of-type(1)]:before:border-foreground/15 [&[data-type=checkbox]>div:nth-of-type(1)]:before:rounded-md [&[data-type=checkbox]>div:nth-of-type(1)]:before:inset-y-0 [&[data-type=checkbox]>div:nth-of-type(1)]:before:my-auto [&[data-type=checkbox]>div:nth-of-type(1)]:before:start-2", + + // Radio + "[&[data-type=radio]_[data-part='item-indicator']_svg]:stroke-10 [&[data-type=radio]>div:nth-of-type(1)]:before:absolute [&[data-type=radio]>div:nth-of-type(1)]:before:size-4 [&[data-type=radio]>div:nth-of-type(1)]:before:border [&[data-type=radio]>div:nth-of-type(1)]:before:shadow-md/5 [&[data-type=radio]>div:nth-of-type(1)]:before:border-foreground/15 [&[data-type=radio]>div:nth-of-type(1)]:before:rounded-full [&[data-type=radio]>div:nth-of-type(1)]:before:inset-y-0 [&[data-type=radio]>div:nth-of-type(1)]:before:my-auto [&[data-type=radio]>div:nth-of-type(1)]:before:start-2", + + // Checkbox & radio svg + "has-[[data-part='item-indicator']]:ps-9 [&_[data-part='item-indicator']]:absolute [&_[data-part='item-indicator']]:start-2.5 [&_[data-part='item-indicator']_svg]:size-3", +]; +export const menuRadioItemGroup = "flex flex-col gap-3"; +export const menuItemGroupLabel = + "-mx-4 px-4 -mt-4 py-2.5 border-b border-foreground/10 text-foreground/70"; +export const menuSeparator = "border-foreground/10 -mx-4 my-1"; diff --git a/src/components/ui/styles/native-select.styles.ts b/src/components/ui/styles/native-select.styles.ts new file mode 100644 index 0000000..3e96a2f --- /dev/null +++ b/src/components/ui/styles/native-select.styles.ts @@ -0,0 +1,3 @@ +export const nativeSelect = "appearance-none text-foreground/70"; +export const nativeSelectOption = ""; +export const NativeSelectOptGroup = ""; diff --git a/src/components/ui/styles/pagination.styles.ts b/src/components/ui/styles/pagination.styles.ts new file mode 100644 index 0000000..1e0683e --- /dev/null +++ b/src/components/ui/styles/pagination.styles.ts @@ -0,0 +1,9 @@ +export const paginationRoot = 'flex gap-1' +export const paginationItem = [ + 'h-10 min-w-10 px-3 py-2 inline-flex items-center justify-center rounded-xl cursor-pointer text-foreground hover:bg-foreground/5', + 'data-[selected]:border data-[selected]:bg-primary/10 data-[selected]:border-primary/30 data-[selected]:text-primary data-[selected]:font-semibold data-[selected]:shadow-md/5', + 'data-[disabled]:opacity-70', +] +export const paginationPrevTrigger = paginationItem +export const paginationNextTrigger = paginationItem +export const paginationEllipsis = paginationItem diff --git a/src/components/ui/styles/popover.styles.ts b/src/components/ui/styles/popover.styles.ts new file mode 100644 index 0000000..65a6aba --- /dev/null +++ b/src/components/ui/styles/popover.styles.ts @@ -0,0 +1,13 @@ +export const popoverRoot = '' +export const popoverTrigger = 'border border-foreground/15 bg-background' +export const popoverPositioner = '!z-50' +export const popoverContent = 'min-w-46 w-(--reference-width) z-(--layer-index)' +export const popoverArrow = '[--arrow-size:10px]' +export const popoverArrowTip = [ + '[--arrow-background:var(--color-background)] rounded-tl-sm', + 'before:absolute before:inset-0 before:bg-background dark:before:bg-background/10 before:rounded-tl-sm before:border-s before:border-t before:border-foreground/10', +] +export const popoverTitle = 'font-medium text-base' +export const popoverDescription = 'opacity-80 py-1 relative' +export const popoverIndicator = 'ms-auto transition data-[state=open]:rotate-180' +export const popoverCloseTrigger = '' diff --git a/src/components/ui/styles/progress-circular.styles.ts b/src/components/ui/styles/progress-circular.styles.ts new file mode 100644 index 0000000..3339881 --- /dev/null +++ b/src/components/ui/styles/progress-circular.styles.ts @@ -0,0 +1,8 @@ +export const progressRoot = "flex flex-col items-center w-full gap-2.5"; +export const progressLabel = ""; +export const progressValueText = "text-xs font-medium flex justify-center"; +export const progressCircle = + "aspect-square [--size:100%] [--thickness:calc(var(--spacing)*1.5)]"; +export const progressCircleTrack = "stroke-foreground/10"; +export const progressCircleRange = + "[stroke-linecap:round] stroke-foreground/70 transition-all duration-500"; diff --git a/src/components/ui/styles/progress-linear.styles.ts b/src/components/ui/styles/progress-linear.styles.ts new file mode 100644 index 0000000..ee1083f --- /dev/null +++ b/src/components/ui/styles/progress-linear.styles.ts @@ -0,0 +1,6 @@ +export const progressRoot = "flex flex-col items-center w-full gap-2.5"; +export const progressLabel = ""; +export const progressValueText = "text-xs font-medium flex justify-center"; +export const progressTrack = "bg-foreground/10 h-1.5 w-full rounded-full"; +export const progressRange = + "bg-foreground/70 h-full rounded-full transition-all duration-500"; diff --git a/src/components/ui/styles/radio-group.styles.ts b/src/components/ui/styles/radio-group.styles.ts new file mode 100644 index 0000000..6d0f3c8 --- /dev/null +++ b/src/components/ui/styles/radio-group.styles.ts @@ -0,0 +1,9 @@ +export const radioGroupRoot = "flex flex-col gap-2.5"; +export const radioGroupLabel = ""; +export const radioGroupIndicator = + "left-(--left) top-(--top) h-(--height) w-4 [&>svg]:absolute [&>svg]:inset-0 [&>svg]:m-auto [&>svg]:size-3 [&>svg]:stroke-10"; +export const radioGroupItem = "relative flex items-center gap-3"; +export const radioGroupItemText = ""; +export const radioGroupItemControl = + "bg-background size-4 border shadow-md/5 border-foreground/15 dark:border-foreground/25 rounded-full"; +export const radioGroupItemHiddenInput = ""; diff --git a/src/components/ui/styles/scroll-area.styles.ts b/src/components/ui/styles/scroll-area.styles.ts new file mode 100644 index 0000000..0e488bf --- /dev/null +++ b/src/components/ui/styles/scroll-area.styles.ts @@ -0,0 +1,16 @@ +export const scrollAreaRoot = ""; +export const scrollAreaViewport = "h-full [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"; +export const scrollAreaScrollbar = [ + "flex relative bg-foreground/5 rounded-md m-2 opacity-0 transition-opacity duration-150 pointer-events-none", + "before:content-[''] before:absolute", + "data-[scrolling]:duration-[0ms]", + "data-[hover]:opacity-100 data-[scrolling]:opacity-100 data-[hover]:pointer-events-auto data-[scrolling]:pointer-events-auto", + "data-[orientation=vertical]:w-2 data-[orientation=vertical]:before:w-5 data-[orientation=vertical]:before:h-full data-[orientation=vertical]:before:left-1/2 data-[orientation=vertical]:before:-translate-x-1/2 data-[orientation=vertical]:[&:not([data-overflow-y])]:hidden", + "data-[orientation=horizontal]:h-2 data-[orientation=horizontal]:before:w-full data-[orientation=horizontal]:before:h-5 data-[orientation=horizontal]:before:left-0 data-[orientation=horizontal]:before:right-0 data-[orientation=horizontal]:before:bottom-[-0.5rem] data-[orientation=horizontal]:[&:not([data-overflow-x])]:hidden", +]; +export const scrollAreaThumb = + "w-full rounded-[inherit] bg-foreground/20 data-[orientation=horizontal]:w-auto data-[orientation=horizontal]:h-full"; +export const scrollAreaContent = ""; +export const scrollAreaCorner = "bg-transparent"; + + diff --git a/src/components/ui/styles/select.styles.ts b/src/components/ui/styles/select.styles.ts new file mode 100644 index 0000000..1f8a7aa --- /dev/null +++ b/src/components/ui/styles/select.styles.ts @@ -0,0 +1,21 @@ +export const selectRoot = + "w-full flex flex-col gap-2.5 [&[data-multiple=true]_[data-part=clear-trigger]]:block"; +export const selectLabel = ""; +export const selectControl = "relative"; +export const selectTrigger = + "w-full font-normal text-foreground/70 border border-foreground/15 bg-background"; +export const selectValueText = "truncate"; +export const selectIndicator = + "ms-auto transition data-[state=open]:rotate-180"; +export const selectClearTrigger = + "text-danger/90 cursor-pointer text-xs hidden ms-1"; +export const selectPositioner = "!z-50 !w-auto"; +export const selectContent = + "min-w-(--reference-width) p-0 z-(--layer-index) [&>div]:p-4 [&>div]:max-h-78 [&>div]:overflow-y-auto [&>div]:flex [&>div]:flex-col [&>div]:gap-5"; +export const selectItemGroup = "flex flex-col gap-3"; +export const selectItemGroupLabel = "px-1 text-xs opacity-70 mb-0.5"; +export const selectItem = + "flex items-center py-1 px-2.5 -mx-1.5 -my-1 hover:bg-foreground/[.04] rounded-lg cursor-pointer"; +export const selectItemText = ""; +export const selectItemIndicator = "ms-auto opacity-70"; +export const selectHiddenSelect = ""; diff --git a/src/components/ui/styles/separator.style.ts b/src/components/ui/styles/separator.style.ts new file mode 100644 index 0000000..b00bbe5 --- /dev/null +++ b/src/components/ui/styles/separator.style.ts @@ -0,0 +1,2 @@ +export const separator = + "bg-border shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch"; diff --git a/src/components/ui/styles/separator.styles.ts b/src/components/ui/styles/separator.styles.ts new file mode 100644 index 0000000..050061b --- /dev/null +++ b/src/components/ui/styles/separator.styles.ts @@ -0,0 +1,2 @@ +export const separator = + "bg-foreground/15 shrink-0 data-[orientation='horizontal']:h-px data-[orientation='horizontal']:w-full data-[orientation='vertical']:w-px data-[orientation='vertical']:self-stretch"; diff --git a/src/components/ui/styles/sheet.styles.ts b/src/components/ui/styles/sheet.styles.ts new file mode 100644 index 0000000..d14cf58 --- /dev/null +++ b/src/components/ui/styles/sheet.styles.ts @@ -0,0 +1,30 @@ +export const sheetTrigger = ""; +export const sheetBackdrop = + "fixed inset-0 bg-black/80 z-70 [&[data-state='open']]:animate-in [&[data-state='open']]:fade-in-0 [&[data-state='closed']]:animate-out [&[data-state='closed']]:fade-out-0"; +export const sheetPositioner = ""; +export const sheetContent = [ + "px-6 pt-6 pb-7 rounded-2xl outline-none backdrop-blur-lg fixed z-70", + "[&[data-state='open']]:animate-in [&[data-state='open']]:fade-in-0 [&[data-state='open']]:duration-250", + "[&[data-state='closed']]:animate-out [&[data-state='closed']]:fade-out-0 [&[data-state='closed']]:duration-400", + "before:mx-2.5 after:mx-3.5", + + // Right + "[&[data-side='right']]:inset-y-3 [&[data-side='right']]:right-3 [&[data-side='right']]:w-3/4 [&[data-side='right']]:sm:max-w-sm", + "[&[data-side='right'][data-state='closed']]:slide-out-to-right [&[data-side='right'][data-state='open']]:slide-in-from-right", + + // Left + "[&[data-side='left']]:inset-y-3 [&[data-side='left']]:left-3 [&[data-side='left']]:w-3/4 [&[data-side='left']]:sm:max-w-sm", + "[&[data-side='left'][data-state='closed']]:slide-out-to-left [&[data-side='left'][data-state='open']]:slide-in-from-left", + + // Top + "[&[data-side='top']]:inset-x-3 [&[data-side='top']]:top-3", + "[&[data-side='top'][data-state='closed']]:slide-out-to-top [&[data-side='top'][data-state='open']]:slide-in-from-top", + + // Bottom + "[&[data-side='bottom']]:inset-x-3 [&[data-side='bottom']]:bottom-3", + "[&[data-side='bottom'][data-state='closed']]:slide-out-to-bottom [&[data-side='bottom'][data-state='open']]:slide-in-from-bottom", +]; +export const sheetTitle = "font-medium text-lg relative -mt-.5"; +export const sheetDescription = "opacity-80 py-2 relative"; +export const sheetCloseTrigger = + "absolute right-0 top-0 p-0 size-8 rounded-full -mt-2 -me-2 border border-foreground/10 bg-background dark:bg-background hover:bg-background before:hidden dark:before:block before:absolute before:-inset-px before:bg-background dark:before:bg-foreground/20 before:z-[-1] before:rounded-full"; diff --git a/src/components/ui/styles/slider.styles.ts b/src/components/ui/styles/slider.styles.ts new file mode 100644 index 0000000..0503d33 --- /dev/null +++ b/src/components/ui/styles/slider.styles.ts @@ -0,0 +1,14 @@ +export const sliderRoot = "w-full flex flex-col gap-3"; +export const sliderLabel = ""; +export const sliderValueText = "text-xs font-medium flex justify-center"; +export const sliderControl = ""; +export const sliderTrack = "bg-foreground/10 h-1.5 w-full rounded-full"; +export const sliderRange = "h-full absolute bg-foreground/70 rounded-full"; +export const sliderThumb = + "bg-background size-4 rounded-full inset-y-0 my-auto shadow-md/5 border-2 border-foreground/70"; +export const sliderHiddenInput = ""; +export const sliderMarkerGroup = "h-6"; +export const sliderMarker = [ + "text-xs opacity-80 relative mt-3.5", + "before:size-1 before:absolute before:inset-0 before:rounded-full before:bg-foreground/40 before:mx-auto before:-mt-3", +]; diff --git a/src/components/ui/styles/switch.styles.ts b/src/components/ui/styles/switch.styles.ts new file mode 100644 index 0000000..2298c92 --- /dev/null +++ b/src/components/ui/styles/switch.styles.ts @@ -0,0 +1,7 @@ +export const switchRoot = "flex items-center gap-3"; +export const switchControl = + "relative block h-6 w-12 rounded-full bg-foreground/5 dark:bg-foreground/10 transition border border-foreground/10 data-[state=checked]:bg-foreground/30"; +export const switchThumb = + "data-[state=checked]:start-1/2 transition-all block absolute inset-y-0 start-0 w-1/2 before:absolute before:inset-0.5 before:rounded-full before:bg-background dark:before:bg-foreground/40 before:shadow-md"; +export const switchLabel = ""; +export const switchHiddenInput = ""; diff --git a/src/components/ui/styles/table.styles.ts b/src/components/ui/styles/table.styles.ts new file mode 100644 index 0000000..d7d6bc2 --- /dev/null +++ b/src/components/ui/styles/table.styles.ts @@ -0,0 +1,63 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +// Styles +export const tableContainer = "relative w-full overflow-x-auto pe-2 -me-2"; +export const tableVariants = cva("w-full caption-bottom", { + variants: { + variant: { + default: "", + boxed: "border-separate border-spacing-y-2.5", + }, + raised: { + single: "border-spacing-y-5", + double: "border-spacing-y-7", + }, + }, + defaultVariants: { + variant: "default", + }, +}); +export const tableHeader = "[&_tr]:border-b"; +export const tableBody = + "[&_tr:last-child]:border-0 [&_tr:hover]:bg-foreground/5"; +export const tableFooter = + "bg-foreground/5 border-t border-foreground/10 font-medium [&>tr]:last:border-b-0"; +export const tableHead = + "text-foreground h-11 px-4 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]"; +export const tableRow = + "data-[state=selected]:bg-foreground/5 border-b border-foreground/10 transition-colors"; +export const tableCellVariants = cva( + "px-4 py-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", + { + variants: { + variant: { + default: "", + boxed: [ + "relative bg-background bg-gradient-to-b from-transparent to-foreground/[.03] dark:to-foreground/5 border-y first:border-s last:border-e border-foreground/10 first:rounded-s-xl last:rounded-e-xl shadow-md/5", + ], + }, + raised: { + single: + "before:absolute before:inset-x-0 first:before:start-2 last:before:end-2 before:h-2.5 before:bg-background/20 dark:before:bg-foreground/10 before:-bottom-2.5 first:before:rounded-bl-xl last:before:rounded-br-xl first:before:border-s last:before:border-e before:border-b before:border-foreground/10 before:z-[-1] before:shadow-md/5 before:opacity-60", + double: [ + "before:absolute before:inset-x-0 first:before:start-2 last:before:end-2 before:h-2.5 before:bg-background/20 dark:before:bg-foreground/10 before:-bottom-2.5 first:before:rounded-bl-xl last:before:rounded-br-xl first:before:border-s last:before:border-e before:border-b before:border-foreground/10 before:z-[-1] before:shadow-md/5 before:opacity-60", + "after:absolute after:inset-x-0 first:after:start-4.5 last:after:end-4.5 after:h-[0.5rem] after:bg-background/20 dark:after:bg-foreground/10 after:-bottom-[1.1rem] first:after:rounded-bl-xl last:after:rounded-br-xl first:after:border-s last:after:border-e after:border-b after:border-foreground/10 after:z-[-1] after:shadow-md/5 after:opacity-40", + ], + }, + }, + defaultVariants: { + variant: "default", + }, + } +); +export const tableCaption = "text-foreground/70 mt-4 text-sm"; + +// Types +export type TableVariants = { + variant?: VariantProps["variant"]; + raised?: VariantProps["raised"]; +}; +export type TableCellVariants = { + variant?: VariantProps["variant"]; + raised?: VariantProps["raised"]; +}; diff --git a/src/components/ui/styles/tabs.styles.ts b/src/components/ui/styles/tabs.styles.ts new file mode 100644 index 0000000..94df93b --- /dev/null +++ b/src/components/ui/styles/tabs.styles.ts @@ -0,0 +1,8 @@ +export const tabsRoot = "flex flex-col gap-2.5"; +export const tabsList = + "w-fit relative backdrop-blur-lg bg-foreground/5 dark:bg-background/10 border border-foreground/10 rounded-2xl p-1 [&>div]:gap-1 [&>div]:flex"; +export const tabsIndicator = + "h-(--height) w-(--width) start-(--left) top-(--top) bg-background dark:bg-foreground/10 rounded-xl shadow-md absolute"; +export const tabsTrigger = + "z-5 relative h-9 px-5 opacity-80 cursor-pointer rounded-xl font-medium text-sm data-[selected]:opacity-100 data-[selected]:hover:bg-transparent hover:bg-foreground/5"; +export const tabsContent = ""; diff --git a/src/components/ui/styles/textarea.styles.ts b/src/components/ui/styles/textarea.styles.ts new file mode 100644 index 0000000..f9ce6c0 --- /dev/null +++ b/src/components/ui/styles/textarea.styles.ts @@ -0,0 +1,5 @@ +export const textarea = [ + 'placeholder:text-foreground/70 selection:bg-foreground/80 selection:text-background flex field-sizing-content min-h-16 w-full rounded-xl backdrop-blur-lg border border-foreground/15 bg-background px-3 py-2 text-base shadow-sm/5 transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', + 'focus-visible:border-ring focus-visible:ring-foreground/10', + 'aria-invalid:ring-danger/20 dark:aria-invalid:ring-danger/40 aria-invalid:border-danger', +] diff --git a/src/components/ui/styles/toast.styles.ts b/src/components/ui/styles/toast.styles.ts new file mode 100644 index 0000000..66f3d78 --- /dev/null +++ b/src/components/ui/styles/toast.styles.ts @@ -0,0 +1,15 @@ +export const toastRoot = [ + "min-w-sm flex flex-col gap-1 relative", + "[translate:var(--x)_var(--y)] [scale:var(--scale)] [z-index:var(--z-index)]", + "[height:var(--height)] [opacity:var(--opacity)]", + "[will-change:translate,opacity,scale]", + "[transition:translate_400ms,scale_400ms,opacity_400ms,height_400ms,box-shadow_200ms]", + "[transition-timing-function:cubic-bezier(0.21,1.02,0.73,1)]", + "data-[state=closed]:[transition:translate_400ms,scale_400ms,opacity_200ms]", + "data-[state=closed]:[transition-timing-function:cubic-bezier(0.06,0.71,0.55,1)]", +]; +export const toastTitle = "font-medium text-nowrap"; +export const toastDescription = "text-nowrap opacity-80"; +export const toastCloseTrigger = + "absolute right-0 top-0 p-0 size-6 rounded-full -mt-1.5 -me-1.5 border border-foreground/10 bg-background dark:bg-background hover:bg-background before:hidden dark:before:block before:absolute before:-inset-px before:bg-background dark:before:bg-foreground/20 before:z-[-1] before:rounded-full"; +export const toasterContainer = ""; diff --git a/src/components/ui/styles/tooltip.styles.ts b/src/components/ui/styles/tooltip.styles.ts new file mode 100644 index 0000000..0067a9e --- /dev/null +++ b/src/components/ui/styles/tooltip.styles.ts @@ -0,0 +1,9 @@ +export const tooltipTrigger = ""; +export const tooltipPositioner = "!z-50"; +export const tooltipContent = + "bg-background dark:bg-foreground/15 backdrop-blur-lg border border-foreground/15 shadow-md/5 rounded-xl px-4 py-2 relative"; +export const tooltipArrow = "[--arrow-size:10px]"; +export const tooltipArrowTip = [ + "[--arrow-background:var(--color-background)] rounded-tl-sm", + "before:absolute before:inset-0 before:bg-background dark:before:bg-foreground/[.17] before:rounded-tl-sm before:border-s before:border-t before:border-foreground/15", +]; diff --git a/src/components/ui/switch/SwitchControl.vue b/src/components/ui/switch/SwitchControl.vue new file mode 100644 index 0000000..7fc8b05 --- /dev/null +++ b/src/components/ui/switch/SwitchControl.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/switch/SwitchHiddenInput.vue b/src/components/ui/switch/SwitchHiddenInput.vue new file mode 100644 index 0000000..63ceb27 --- /dev/null +++ b/src/components/ui/switch/SwitchHiddenInput.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/switch/SwitchLabel.vue b/src/components/ui/switch/SwitchLabel.vue new file mode 100644 index 0000000..560f114 --- /dev/null +++ b/src/components/ui/switch/SwitchLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/switch/SwitchRoot.vue b/src/components/ui/switch/SwitchRoot.vue new file mode 100644 index 0000000..2908240 --- /dev/null +++ b/src/components/ui/switch/SwitchRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/switch/SwitchThumb.vue b/src/components/ui/switch/SwitchThumb.vue new file mode 100644 index 0000000..340a118 --- /dev/null +++ b/src/components/ui/switch/SwitchThumb.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/switch/index.ts b/src/components/ui/switch/index.ts new file mode 100644 index 0000000..de96a60 --- /dev/null +++ b/src/components/ui/switch/index.ts @@ -0,0 +1,5 @@ +export { default as SwitchRoot } from "./SwitchRoot.vue"; +export { default as SwitchControl } from "./SwitchControl.vue"; +export { default as SwitchThumb } from "./SwitchThumb.vue"; +export { default as SwitchLabel } from "./SwitchLabel.vue"; +export { default as SwitchHiddenInput } from "./SwitchHiddenInput.vue"; diff --git a/src/components/ui/table/Table.vue b/src/components/ui/table/Table.vue new file mode 100644 index 0000000..5623ba6 --- /dev/null +++ b/src/components/ui/table/Table.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/table/TableBody.vue b/src/components/ui/table/TableBody.vue new file mode 100644 index 0000000..8f25b1a --- /dev/null +++ b/src/components/ui/table/TableBody.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/TableCaption.vue b/src/components/ui/table/TableCaption.vue new file mode 100644 index 0000000..fc9a022 --- /dev/null +++ b/src/components/ui/table/TableCaption.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/TableCell.vue b/src/components/ui/table/TableCell.vue new file mode 100644 index 0000000..6dd3a67 --- /dev/null +++ b/src/components/ui/table/TableCell.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/table/TableContainer.vue b/src/components/ui/table/TableContainer.vue new file mode 100644 index 0000000..e3efd43 --- /dev/null +++ b/src/components/ui/table/TableContainer.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/TableFooter.vue b/src/components/ui/table/TableFooter.vue new file mode 100644 index 0000000..4d32838 --- /dev/null +++ b/src/components/ui/table/TableFooter.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/TableHead.vue b/src/components/ui/table/TableHead.vue new file mode 100644 index 0000000..553a361 --- /dev/null +++ b/src/components/ui/table/TableHead.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/TableHeader.vue b/src/components/ui/table/TableHeader.vue new file mode 100644 index 0000000..caa37d3 --- /dev/null +++ b/src/components/ui/table/TableHeader.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/TableRow.vue b/src/components/ui/table/TableRow.vue new file mode 100644 index 0000000..d1cfac8 --- /dev/null +++ b/src/components/ui/table/TableRow.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/index.ts b/src/components/ui/table/index.ts new file mode 100644 index 0000000..5449b06 --- /dev/null +++ b/src/components/ui/table/index.ts @@ -0,0 +1,9 @@ +export { default as Table } from "./Table.vue"; +export { default as TableContainer } from "./TableContainer.vue"; +export { default as TableHeader } from "./TableHeader.vue"; +export { default as TableBody } from "./TableBody.vue"; +export { default as TableFooter } from "./TableFooter.vue"; +export { default as TableHead } from "./TableHead.vue"; +export { default as TableRow } from "./TableRow.vue"; +export { default as TableCell } from "./TableCell.vue"; +export { default as TableCaption } from "./TableCaption.vue"; diff --git a/src/components/ui/tabs/TabsContent.vue b/src/components/ui/tabs/TabsContent.vue new file mode 100644 index 0000000..d9628ed --- /dev/null +++ b/src/components/ui/tabs/TabsContent.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/tabs/TabsIndicator.vue b/src/components/ui/tabs/TabsIndicator.vue new file mode 100644 index 0000000..6285d6f --- /dev/null +++ b/src/components/ui/tabs/TabsIndicator.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/tabs/TabsList.vue b/src/components/ui/tabs/TabsList.vue new file mode 100644 index 0000000..a4fa4b8 --- /dev/null +++ b/src/components/ui/tabs/TabsList.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/tabs/TabsRoot.vue b/src/components/ui/tabs/TabsRoot.vue new file mode 100644 index 0000000..477344c --- /dev/null +++ b/src/components/ui/tabs/TabsRoot.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/tabs/TabsTrigger.vue b/src/components/ui/tabs/TabsTrigger.vue new file mode 100644 index 0000000..2228b67 --- /dev/null +++ b/src/components/ui/tabs/TabsTrigger.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/tabs/index.ts b/src/components/ui/tabs/index.ts new file mode 100644 index 0000000..b8bf09e --- /dev/null +++ b/src/components/ui/tabs/index.ts @@ -0,0 +1,5 @@ +export { default as TabsContent } from "./TabsContent.vue"; +export { default as TabsIndicator } from "./TabsIndicator.vue"; +export { default as TabsList } from "./TabsList.vue"; +export { default as TabsRoot } from "./TabsRoot.vue"; +export { default as TabsTrigger } from "./TabsTrigger.vue"; diff --git a/src/components/ui/textarea/Textarea.vue b/src/components/ui/textarea/Textarea.vue new file mode 100644 index 0000000..9aa563d --- /dev/null +++ b/src/components/ui/textarea/Textarea.vue @@ -0,0 +1,14 @@ + + +