From 5a7f4ba07a8cdae8d2fe9825d0fbe1eab187d50b Mon Sep 17 00:00:00 2001 From: gabrielb Date: Mon, 18 May 2026 00:20:07 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20scaffold=20inicial=20do=20portal=20p?= =?UTF-8?q?=C3=BAblico=20de=20autoatendimento=20fiscal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Vue 3.5 + Vite 8 + PrimeVue 4 (Aura) + TailwindCSS 4 + DM Sans - Sistema de tenant multi-prefeitura: bootstrap, prefeituraStore, getTenant - Tema dinâmico por município via applyTemplate (9 paletas) - Logo e foto de fundo resolvidos a partir do VITE_API_URL + path relativo - HomeView: hero split com foto/gradiente, carousel de avisos, cards de serviços - LoginView: fluxo 2 etapas (documento na home → senha em /login) - Roteamento completo: público (/), serviços (/servicos/*), portal autenticado (/portal/*) - authStore + authService estruturados para Keycloak PKCE (integração pendente) - Placeholders para todas as telas da área logada Co-Authored-By: Claude Sonnet 4.6 --- .env.development | 4 + .env.production | 4 + .gitattributes | 2 + .gitignore | 24 + README.md | 5 + index.html | 16 + package-lock.json | 4322 +++++++++++++++++++++++ package.json | 40 + public/favicon.svg | 1 + public/icons.svg | 24 + src/App.vue | 17 + src/assets/hero.png | Bin 0 -> 13057 bytes src/assets/images/bg-tutoia.jpeg | Bin 0 -> 39968 bytes src/assets/images/logo-modum-fiscal.png | Bin 0 -> 14153 bytes src/assets/layout/layout.scss | 25 + src/assets/main.css | 14 + src/assets/vite.svg | 1 + src/bootstrap/prefeituraBoot.js | 37 + src/components/auth/DocumentoInput.vue | 58 + src/components/common/AppFooter.vue | 20 + src/components/common/AppHeader.vue | 56 + src/components/common/ServiceCard.vue | 32 + src/config/apiClient.js | 41 + src/config/primevue.config.js | 37 + src/config/theme.config.js | 80 + src/layouts/PortalLayout.vue | 69 + src/layouts/PublicLayout.vue | 16 + src/main.js | 34 + src/router/index.js | 106 + src/services/authService.js | 34 + src/services/prefeituraService.js | 7 + src/stores/authStore.js | 31 + src/stores/prefeituraStore.js | 13 + src/utils/tenant.js | 26 + src/views/portal/AlvarasView.vue | 12 + src/views/portal/CertidoesView.vue | 12 + src/views/portal/DadosView.vue | 12 + src/views/portal/DebitosView.vue | 12 + src/views/portal/PagamentosView.vue | 12 + src/views/portal/PainelView.vue | 55 + src/views/public/CredenciamentoView.vue | 17 + src/views/public/HomeView.vue | 354 ++ src/views/public/LoginView.vue | 160 + src/views/public/PrimeiroAcessoView.vue | 17 + src/views/servicos/CertidaoView.vue | 17 + src/views/servicos/IptuView.vue | 17 + src/views/servicos/ServicosHubView.vue | 23 + vite.config.js | 21 + 48 files changed, 5937 insertions(+) create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 README.md create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.svg create mode 100644 public/icons.svg create mode 100644 src/App.vue create mode 100644 src/assets/hero.png create mode 100644 src/assets/images/bg-tutoia.jpeg create mode 100644 src/assets/images/logo-modum-fiscal.png create mode 100644 src/assets/layout/layout.scss create mode 100644 src/assets/main.css create mode 100644 src/assets/vite.svg create mode 100644 src/bootstrap/prefeituraBoot.js create mode 100644 src/components/auth/DocumentoInput.vue create mode 100644 src/components/common/AppFooter.vue create mode 100644 src/components/common/AppHeader.vue create mode 100644 src/components/common/ServiceCard.vue create mode 100644 src/config/apiClient.js create mode 100644 src/config/primevue.config.js create mode 100644 src/config/theme.config.js create mode 100644 src/layouts/PortalLayout.vue create mode 100644 src/layouts/PublicLayout.vue create mode 100644 src/main.js create mode 100644 src/router/index.js create mode 100644 src/services/authService.js create mode 100644 src/services/prefeituraService.js create mode 100644 src/stores/authStore.js create mode 100644 src/stores/prefeituraStore.js create mode 100644 src/utils/tenant.js create mode 100644 src/views/portal/AlvarasView.vue create mode 100644 src/views/portal/CertidoesView.vue create mode 100644 src/views/portal/DadosView.vue create mode 100644 src/views/portal/DebitosView.vue create mode 100644 src/views/portal/PagamentosView.vue create mode 100644 src/views/portal/PainelView.vue create mode 100644 src/views/public/CredenciamentoView.vue create mode 100644 src/views/public/HomeView.vue create mode 100644 src/views/public/LoginView.vue create mode 100644 src/views/public/PrimeiroAcessoView.vue create mode 100644 src/views/servicos/CertidaoView.vue create mode 100644 src/views/servicos/IptuView.vue create mode 100644 src/views/servicos/ServicosHubView.vue create mode 100644 vite.config.js diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..66dca1b --- /dev/null +++ b/.env.development @@ -0,0 +1,4 @@ +VITE_KEYCLOAK_URL= +VITE_KEYCLOAK_REALM= +VITE_KEYCLOAK_CLIENT_ID= +VITE_API_URL= diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..66dca1b --- /dev/null +++ b/.env.production @@ -0,0 +1,4 @@ +VITE_KEYCLOAK_URL= +VITE_KEYCLOAK_REALM= +VITE_KEYCLOAK_CLIENT_ID= +VITE_API_URL= diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..3ce2458 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +* text=auto eol=lf +*.{jpg,jpeg,png,webp,svg,ico,woff,woff2,ttf,eot} binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md new file mode 100644 index 0000000..1511959 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Vue 3 + Vite + +This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 ` + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..521cf67 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4322 @@ +{ + "name": "portal-modumfiscal-web", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "portal-modumfiscal-web", + "version": "0.0.0", + "dependencies": { + "@primeuix/themes": "^2.0.3", + "axios": "^1.16.1", + "jwt-decode": "^4.0.0", + "pinia": "^3.0.4", + "pinia-plugin-persistedstate": "^4.7.1", + "pkce-challenge": "^6.0.0", + "primeicons": "^7.0.0", + "primevue": "^4.5.5", + "tailwindcss-primeui": "^0.6.1", + "vue": "^3.5.34", + "vue-router": "^5.0.7", + "zod": "^4.4.3" + }, + "devDependencies": { + "@primevue/auto-import-resolver": "^4.5.5", + "@rushstack/eslint-patch": "^1.16.1", + "@tailwindcss/vite": "^4.3.0", + "@vitejs/plugin-vue": "^6.0.6", + "@vue/eslint-config-prettier": "^10.2.0", + "autoprefixer": "^10.5.0", + "eslint-plugin-vue": "^10.9.1", + "postcss": "^8.5.14", + "sass": "^1.99.0", + "tailwindcss": "^4.3.0", + "unplugin-vue-components": "^32.0.0", + "vite": "^8.0.12" + } + }, + "node_modules/@babel/generator": { + "version": "8.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0-rc.5.tgz", + "integrity": "sha512-nFZPWz3FHIS7y6rMIVoa/WBwjdutfIaRJIBQjzn+t3RnecZoRNlGmGcyR2wb0T/IgSd50Kz/6dG8/LvMCRunjg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^8.0.0-rc.5", + "@babel/types": "^8.0.0-rc.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "@types/jsesc": "^2.5.0", + "jsesc": "^3.0.2" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/helper-string-parser": { + "version": "8.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0-rc.5.tgz", + "integrity": "sha512-sN7R8rBvDurfaziNfDEIjIntlazmlkCDGO4SNl2RJ3wRCn+QxspLV7hzYAE8WWVd2joVuT8sUxeePdLp2idI1A==", + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/helper-validator-identifier": { + "version": "8.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0-rc.5.tgz", + "integrity": "sha512-ehJDxHvtbZ85RtX/L2fi0h9AGsBNqB5Euv1EB8RMAvGYvD+2X+QbpzzOpbklnNXO+WSZJNOaetw2BBj27xsWVg==", + "license": "MIT", + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/parser": { + "version": "8.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0-rc.5.tgz", + "integrity": "sha512-/Mfg83rK3+jsRbl4Vbd0jqxc6M1A1/WNFtgrowRM1unEsD3XcNnrBdMM0JWakd0/RN9lseQKwPduW1TiEwKOlQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^8.0.0-rc.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/generator/node_modules/@babel/types": { + "version": "8.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0-rc.5.tgz", + "integrity": "sha512-JeSVu/m8x/zpp4CLjYHVNXuhEyOkhPXuxM8YOXjh6L4LlvQNKuUNOTo5KdBuKAcTDHw8DquToTaEkhsBqPXOaA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^8.0.0-rc.5", + "@babel/helper-validator-identifier": "^8.0.0-rc.5" + }, + "engines": { + "node": "^22.18.0 || >=24.11.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz", + "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz", + "integrity": "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@eslint/core": "^1.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz", + "integrity": "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.130.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.130.0.tgz", + "integrity": "sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@primeuix/styled": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@primeuix/styled/-/styled-0.7.4.tgz", + "integrity": "sha512-QSO/NpOQg8e9BONWRBx9y8VGMCMYz0J/uKfNJEya/RGEu7ARx0oYW0ugI1N3/KB1AAvyGxzKBzGImbwg0KUiOQ==", + "license": "MIT", + "dependencies": { + "@primeuix/utils": "^0.6.1" + }, + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@primeuix/styles": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@primeuix/styles/-/styles-2.0.3.tgz", + "integrity": "sha512-2ykAB6BaHzR/6TwF8ShpJTsZrid6cVIEBVlookSdvOdmlWuevGu5vWOScgIwqWwlZcvkFYAGR/SUV3OHCTBMdw==", + "license": "MIT", + "dependencies": { + "@primeuix/styled": "^0.7.4" + } + }, + "node_modules/@primeuix/themes": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@primeuix/themes/-/themes-2.0.3.tgz", + "integrity": "sha512-3fS1883mtCWhgUgNf/feiaaDSOND4EBIOu9tZnzJlJ8QtYyL6eFLcA6V3ymCWqLVXQ1+lTVEZv1gl47FIdXReg==", + "license": "MIT", + "dependencies": { + "@primeuix/styled": "^0.7.4" + } + }, + "node_modules/@primeuix/utils": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@primeuix/utils/-/utils-0.6.4.tgz", + "integrity": "sha512-pZ5f+vj7wSzRhC7KoEQRU5fvYAe+RP9+m39CTscZ3UywCD1Y2o6Fe1rRgklMPSkzUcty2jzkA0zMYkiJBD1hgg==", + "license": "MIT", + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@primevue/auto-import-resolver": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/@primevue/auto-import-resolver/-/auto-import-resolver-4.5.5.tgz", + "integrity": "sha512-1LWftK+1c/pLgMyW81xqsCLESm2a8GGlLz0eg13oFBVmJdXBs9nmzF+SIhvtkRDROB8TCMwlOpyqVCi1Yw89UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@primevue/metadata": "4.5.5" + }, + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@primevue/core": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/@primevue/core/-/core-4.5.5.tgz", + "integrity": "sha512-JpkXhq1ddc70JdsC3CC4dM+UbeeWuCW/8DpS9dNBfrOk824TLSlRlMEGFyVKqRMn5WPQvYLiy3xXfLQeNdSqhQ==", + "license": "MIT", + "dependencies": { + "@primeuix/styled": "^0.7.4", + "@primeuix/utils": "^0.6.2" + }, + "engines": { + "node": ">=12.11.0" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/@primevue/icons": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/@primevue/icons/-/icons-4.5.5.tgz", + "integrity": "sha512-eteOhTdAOXEYE9qW1AOrBBgDxQ2szHJxSkEK1XVdV2TKxGM5FQf03Ovms0VDyZTc16XBIgvwYjXJQS0BPbhPaA==", + "license": "MIT", + "dependencies": { + "@primeuix/utils": "^0.6.2", + "@primevue/core": "4.5.5" + }, + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@primevue/metadata": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/@primevue/metadata/-/metadata-4.5.5.tgz", + "integrity": "sha512-ZYLu9m3Nm5BmL0woqCJX84EZfLBepJn+T19v5oj3PlsMpUVNnDAsm2jgYdT6/b3RkdOuccxk4Pg/0EvlATOAhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.1.tgz", + "integrity": "sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.1.tgz", + "integrity": "sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.1.tgz", + "integrity": "sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.1.tgz", + "integrity": "sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.1.tgz", + "integrity": "sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.1.tgz", + "integrity": "sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.1.tgz", + "integrity": "sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.1.tgz", + "integrity": "sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.1.tgz", + "integrity": "sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.1.tgz", + "integrity": "sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.1.tgz", + "integrity": "sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.1.tgz", + "integrity": "sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.1.tgz", + "integrity": "sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.1.tgz", + "integrity": "sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.1.tgz", + "integrity": "sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.16.1.tgz", + "integrity": "sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tailwindcss/node": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.0.tgz", + "integrity": "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.21.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.0" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.0.tgz", + "integrity": "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "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" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz", + "integrity": "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz", + "integrity": "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz", + "integrity": "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz", + "integrity": "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz", + "integrity": "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz", + "integrity": "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz", + "integrity": "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz", + "integrity": "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz", + "integrity": "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz", + "integrity": "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.10.0", + "@emnapi/runtime": "^1.10.0", + "@emnapi/wasi-threads": "^1.2.1", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz", + "integrity": "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz", + "integrity": "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.0.tgz", + "integrity": "sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.3.0", + "@tailwindcss/oxide": "4.3.0", + "tailwindcss": "4.3.0" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", + "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@types/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.7.tgz", + "integrity": "sha512-km+p+XdSz9Sxm5rqUbqcSfZYaAniKxWBj1KURl+Jr7UaPvvX7BmaWMdP69I5rrFDeQGyxAG7NXdc57vz+snhWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "^1.0.1" + }, + "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" + } + }, + "node_modules/@vue-macros/common": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-3.1.2.tgz", + "integrity": "sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==", + "license": "MIT", + "dependencies": { + "@vue/compiler-sfc": "^3.5.22", + "ast-kit": "^2.1.2", + "local-pkg": "^1.1.2", + "magic-string-ast": "^1.0.2", + "unplugin-utils": "^0.3.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/vue-macros" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.2.25" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.34.tgz", + "integrity": "sha512-s9cLyK5mLcvZ4Agva5QgRsQyLKvts9WbU9DB6NqiZkkGEdwmcEiylj5Jbwkp680drF/NNCV8OlAJSe+yMLxaJw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.3", + "@vue/shared": "3.5.34", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.34.tgz", + "integrity": "sha512-EbF/T++k0e2MMZlJsBhzK8Sgwt0HcIPOhzn1CTB/lv6sQcyk+OWf8YeiLxZp3ro7MbbLcAfAJ6sEvjFWuNgUCw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.34", + "@vue/shared": "3.5.34" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.34.tgz", + "integrity": "sha512-D/ihr6uZeIt6r+pVZf46RWT1fAsLFMbUP7k8G1VkiiWexriED9GrX3echHd4Abbt17zjlfiFJ8z7a3BxZOPNjg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.3", + "@vue/compiler-core": "3.5.34", + "@vue/compiler-dom": "3.5.34", + "@vue/compiler-ssr": "3.5.34", + "@vue/shared": "3.5.34", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.14", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.34.tgz", + "integrity": "sha512-cDtTHKibkThKGHH1SP+WdccquNRYQDFH6rRjQCqT9G2ltFAfoR5pUftpab/z+aM5mW9HLLVQW7hfKKQe/1GBeQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.34", + "@vue/shared": "3.5.34" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.9.tgz", + "integrity": "sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==", + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.9" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.9.tgz", + "integrity": "sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==", + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.7.9", + "birpc": "^2.3.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.2" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.9.tgz", + "integrity": "sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==", + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/eslint-config-prettier": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-10.2.0.tgz", + "integrity": "sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.2" + }, + "peerDependencies": { + "eslint": ">= 8.21.0", + "prettier": ">= 3.0.0" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.34.tgz", + "integrity": "sha512-y9XDjCEuBp+98k+UL5dbYkh57AHU4o6cxZedOPXw3bmrZZYLQsVHguGurq7hVrPCSrQtrnz1f9dssyFr+dMXfQ==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.34" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.34.tgz", + "integrity": "sha512-mKeBYvu8tcMSLhypAHBmriUFfWXKTCF/23Z4jiCoYK3UtWepkliViNLuR90V9XOyD62mUxs9p1jsrpK3CCGIzw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.34", + "@vue/shared": "3.5.34" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.34.tgz", + "integrity": "sha512-e8kZzERmCwUnBRVsgSQlAfrfU2rGoy0FFKPBXSlfEjc/O3KfA7QP0t1/2ZylrbchjmIKB4dPTd07A6WPr0eOrg==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.34", + "@vue/runtime-core": "3.5.34", + "@vue/shared": "3.5.34", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.34.tgz", + "integrity": "sha512-nHxmJoTrKsmrkbILRhkC9gY1G3moZbJTqCzDd7DOOzG5KH9oeJ0Unqrff5f9v0pW//jES05ZkJcNtfE8JjOIew==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.34", + "@vue/shared": "3.5.34" + }, + "peerDependencies": { + "vue": "3.5.34" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.34.tgz", + "integrity": "sha512-24uqU4OIiX29ryC3MeWid/Xf2fa2EFRUVLb77nRhk+UrTVrh/XiGtFAFmJBAtBRbjwNdsPRP+jj/OL27Eg1NDA==", + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ast-kit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-2.2.0.tgz", + "integrity": "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "pathe": "^2.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/ast-walker-scope": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.8.3.tgz", + "integrity": "sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.4", + "ast-kit": "^2.1.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz", + "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.16.0", + "form-data": "^4.0.5", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.30", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.30.tgz", + "integrity": "sha512-xjOFN16Ha1+Rz4nFYKqHU/LSB+gx/Vi3yQLX7r7sAW+Wa+8hhF2h4pvqTrTMc8+WcDBEunnUurr46Jvv0jk3Vg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/birpc": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz", + "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001793", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", + "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/confbox": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-4.0.5.tgz", + "integrity": "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==", + "license": "MIT", + "dependencies": { + "is-what": "^5.2.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/defu": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.357", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.357.tgz", + "integrity": "sha512-NHlTIQDK8fmVwHwuIzmXYEJ1Ewq3D9wDNc0cWXxDGysP6Pb21giwGNkxiTifyKy/4SoPuN5l6GLP1W9Sv7zB2g==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.21.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.3.tgz", + "integrity": "sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.4.0.tgz", + "integrity": "sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.6.0", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "minimatch": "^10.2.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "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 + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.9.1.tgz", + "integrity": "sha512-cHB0Tf4Duvzwecwd/AqWzZvF/QszE13BhjVUpVXWCy9AeMR5GjkAjP3i85vqgLgOuTmkHR1OJ5oMeqLHtuw8zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^7.1.0", + "semver": "^7.6.3", + "xml-name-validator": "^4.0.0" + }, + "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 || ^10.0.0", + "vue-eslint-parser": "^10.3.0" + }, + "peerDependenciesMeta": { + "@stylistic/eslint-plugin": { + "optional": true + }, + "@typescript-eslint/parser": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-what": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-5.5.0.tgz", + "integrity": "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "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" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magic-string-ast": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-1.0.3.tgz", + "integrity": "sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==", + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.19" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "peer": true, + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/mlly": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz", + "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/node-releases": { + "version": "2.0.44", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", + "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pinia": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.4.tgz", + "integrity": "sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^7.7.7" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.5.0", + "vue": "^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia-plugin-persistedstate": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-4.7.1.tgz", + "integrity": "sha512-WHOqh2esDlR3eAaknPbqXrkkj0D24h8shrDPqysgCFR6ghqP/fpFfJmMPJp0gETHsvrh9YNNg6dQfo2OEtDnIQ==", + "license": "MIT", + "dependencies": { + "defu": "^6.1.4" + }, + "peerDependencies": { + "@nuxt/kit": ">=3.0.0", + "@pinia/nuxt": ">=0.10.0", + "pinia": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + }, + "@pinia/nuxt": { + "optional": true + }, + "pinia": { + "optional": true + } + } + }, + "node_modules/pkce-challenge": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-6.0.0.tgz", + "integrity": "sha512-KrEAOa2aGlEyV+gN2jMXwSQhZ5gUR4WwivtPjSktYzh7srb70pYvVGV0uLfmoCx75fUQtqTairuoxayHLtvo9w==", + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/pkg-types": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.1.tgz", + "integrity": "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.4", + "exsolve": "^1.0.8", + "pathe": "^2.0.3" + } + }, + "node_modules/postcss": { + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/primeicons": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-7.0.0.tgz", + "integrity": "sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw==", + "license": "MIT" + }, + "node_modules/primevue": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/primevue/-/primevue-4.5.5.tgz", + "integrity": "sha512-Kv5REIewCdP806QaoU+4nBXfmpzOGFKkZ9qH4KsL6MjiAQVc4PUzypt8erl4r3Vzh3nr3aWZIxkxYRRsLGiX2A==", + "license": "MIT", + "dependencies": { + "@primeuix/styled": "^0.7.4", + "@primeuix/styles": "^2.0.3", + "@primeuix/utils": "^0.6.2", + "@primevue/core": "4.5.5", + "@primevue/icons": "4.5.5" + }, + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, + "node_modules/rolldown": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.1.tgz", + "integrity": "sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.130.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.1", + "@rolldown/binding-darwin-arm64": "1.0.1", + "@rolldown/binding-darwin-x64": "1.0.1", + "@rolldown/binding-freebsd-x64": "1.0.1", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.1", + "@rolldown/binding-linux-arm64-gnu": "1.0.1", + "@rolldown/binding-linux-arm64-musl": "1.0.1", + "@rolldown/binding-linux-ppc64-gnu": "1.0.1", + "@rolldown/binding-linux-s390x-gnu": "1.0.1", + "@rolldown/binding-linux-x64-gnu": "1.0.1", + "@rolldown/binding-linux-x64-musl": "1.0.1", + "@rolldown/binding-openharmony-arm64": "1.0.1", + "@rolldown/binding-wasm32-wasi": "1.0.1", + "@rolldown/binding-win32-arm64-msvc": "1.0.1", + "@rolldown/binding-win32-x64-msvc": "1.0.1" + } + }, + "node_modules/sass": { + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.99.0.tgz", + "integrity": "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.1.5", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/scule": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/superjson": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz", + "integrity": "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==", + "license": "MIT", + "dependencies": { + "copy-anything": "^4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tailwindcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz", + "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==", + "license": "MIT" + }, + "node_modules/tailwindcss-primeui": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/tailwindcss-primeui/-/tailwindcss-primeui-0.6.1.tgz", + "integrity": "sha512-T69Rylcrmnt8zy9ik+qZvsLuRIrS9/k6rYJSIgZ1trnbEzGDDQSCIdmfyZknevqiHwpSJHSmQ9XT2C+S/hJY4A==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=3.1.0" + } + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ufo": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.4.tgz", + "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==", + "license": "MIT" + }, + "node_modules/unplugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-3.0.0.tgz", + "integrity": "sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/unplugin-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.1.tgz", + "integrity": "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==", + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/unplugin-vue-components": { + "version": "32.0.0", + "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-32.0.0.tgz", + "integrity": "sha512-uLdccgS7mf3pv1bCCP20y/hm+u1eOjAmygVkh+Oa70MPkzgl1eQv1L0CwdHNM3gscO8/GDMGIET98Ja47CBbZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^5.0.0", + "local-pkg": "^1.1.2", + "magic-string": "^0.30.21", + "mlly": "^1.8.2", + "obug": "^2.1.1", + "picomatch": "^4.0.3", + "tinyglobby": "^0.2.15", + "unplugin": "^3.0.0", + "unplugin-utils": "^0.3.1" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@nuxt/kit": "^3.2.2 || ^4.0.0", + "vue": "^3.0.0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "8.0.13", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.13.tgz", + "integrity": "sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.14", + "rolldown": "1.0.1", + "tinyglobby": "^0.2.16" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.18", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.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 + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.34.tgz", + "integrity": "sha512-WdLBG9gm02OgJIG9axd5Hpx0TFLdzVgfG2evFFu8Rur5O/IoGc5cMjnjh3tPL6GnRGsYvUhBSKVPYVcxRKpMCA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.34", + "@vue/compiler-sfc": "3.5.34", + "@vue/runtime-dom": "3.5.34", + "@vue/server-renderer": "3.5.34", + "@vue/shared": "3.5.34" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.4.0.tgz", + "integrity": "sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "^4.4.0", + "eslint-scope": "^8.2.0 || ^9.0.0", + "eslint-visitor-keys": "^4.2.0 || ^5.0.0", + "espree": "^10.3.0 || ^11.0.0", + "esquery": "^1.6.0", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/vue-router": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-5.0.7.tgz", + "integrity": "sha512-dqfk8kvRbCutmCOCj/XLDqDEYxc1wBdAOGLuVy5M93ifYMsBd5fIjfaPN4tQAbxr5IprdBDIox1gr4wYyOx/SA==", + "license": "MIT", + "dependencies": { + "@babel/generator": "^8.0.0-rc.4", + "@vue-macros/common": "^3.1.1", + "@vue/devtools-api": "^8.1.1", + "ast-walker-scope": "^0.8.3", + "chokidar": "^5.0.0", + "json5": "^2.2.3", + "local-pkg": "^1.1.2", + "magic-string": "^0.30.21", + "mlly": "^1.8.0", + "muggle-string": "^0.4.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "scule": "^1.3.0", + "tinyglobby": "^0.2.15", + "unplugin": "^3.0.0", + "unplugin-utils": "^0.3.1", + "yaml": "^2.8.2" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@pinia/colada": ">=0.21.2", + "@vue/compiler-sfc": "^3.5.34", + "pinia": "^3.0.4", + "vue": "^3.5.34" + }, + "peerDependenciesMeta": { + "@pinia/colada": { + "optional": true + }, + "@vue/compiler-sfc": { + "optional": true + }, + "pinia": { + "optional": true + } + } + }, + "node_modules/vue-router/node_modules/@vue/devtools-api": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-8.1.2.tgz", + "integrity": "sha512-vA0O112YqyDuNA1s7Yb2gCgToQ/OxOWiFDO5ThLCcDy0ldHnSd1dUTaSYhOldbqoNgumE4dxtGAoAaSUKUD1Zg==", + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^8.1.2" + } + }, + "node_modules/vue-router/node_modules/@vue/devtools-kit": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-8.1.2.tgz", + "integrity": "sha512-f75/upc+GCyjXErpgPGz4582ujS0L/adAltGy+tqXMGUJpgAcfGr6CxnnhpZY8BHuMYt6KpbF8uaFrrQG66rGQ==", + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^8.1.2", + "birpc": "^2.6.1", + "hookable": "^5.5.3", + "perfect-debounce": "^2.0.0" + } + }, + "node_modules/vue-router/node_modules/@vue/devtools-shared": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-8.1.2.tgz", + "integrity": "sha512-X9RyVFYAdkBe4IUf5v48TxBF/6QPmF8CmWrDAjXzfUHrgQ/HGfTC1A6TqgXqZ03ye66l3AD51BAGD69IvKM9sw==", + "license": "MIT" + }, + "node_modules/vue-router/node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "license": "MIT" + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..0b4fa27 --- /dev/null +++ b/package.json @@ -0,0 +1,40 @@ +{ + "name": "portal-modumfiscal-web", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "lint": "eslint --fix . --ext .vue,.js --ignore-path .gitignore" + }, + "dependencies": { + "@primeuix/themes": "^2.0.3", + "axios": "^1.16.1", + "jwt-decode": "^4.0.0", + "pinia": "^3.0.4", + "pinia-plugin-persistedstate": "^4.7.1", + "pkce-challenge": "^6.0.0", + "primeicons": "^7.0.0", + "primevue": "^4.5.5", + "tailwindcss-primeui": "^0.6.1", + "vue": "^3.5.34", + "vue-router": "^5.0.7", + "zod": "^4.4.3" + }, + "devDependencies": { + "@primevue/auto-import-resolver": "^4.5.5", + "@rushstack/eslint-patch": "^1.16.1", + "@tailwindcss/vite": "^4.3.0", + "@vitejs/plugin-vue": "^6.0.6", + "@vue/eslint-config-prettier": "^10.2.0", + "autoprefixer": "^10.5.0", + "eslint-plugin-vue": "^10.9.1", + "postcss": "^8.5.14", + "sass": "^1.99.0", + "tailwindcss": "^4.3.0", + "unplugin-vue-components": "^32.0.0", + "vite": "^8.0.12" + } +} diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..6893eb1 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons.svg b/public/icons.svg new file mode 100644 index 0000000..e952219 --- /dev/null +++ b/public/icons.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..652ad8b --- /dev/null +++ b/src/App.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/assets/hero.png b/src/assets/hero.png new file mode 100644 index 0000000000000000000000000000000000000000..02251f4b956c55af2d76fd0788124d7eee2b45eb GIT binary patch literal 13057 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 P00000NkvXXu0mjft=yBf literal 0 HcmV?d00001 diff --git a/src/assets/images/bg-tutoia.jpeg b/src/assets/images/bg-tutoia.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..4f5f5f0231f0776ca68d0e592ff4d51ddad3fde0 GIT binary patch literal 39968 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 Ta^dG$00000NkvXXu0mjfMR9vj literal 0 HcmV?d00001 diff --git a/src/assets/layout/layout.scss b/src/assets/layout/layout.scss new file mode 100644 index 0000000..5b07d53 --- /dev/null +++ b/src/assets/layout/layout.scss @@ -0,0 +1,25 @@ +/* Estilos globais de layout — sem @apply (regra do projeto) */ + +html, +body { + height: 100%; + margin: 0; + padding: 0; + font-family: 'DM Sans', system-ui, sans-serif; +} + +#app { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +/* Transições de rota */ +.page-enter-active, +.page-leave-active { + transition: opacity 0.18s ease; +} +.page-enter-from, +.page-leave-to { + opacity: 0; +} diff --git a/src/assets/main.css b/src/assets/main.css new file mode 100644 index 0000000..adb7ff6 --- /dev/null +++ b/src/assets/main.css @@ -0,0 +1,14 @@ +@import "tailwindcss"; +@plugin "tailwindcss-primeui"; +@import "primeicons/primeicons.css"; + +@theme { + --font-sans: 'DM Sans', system-ui, sans-serif; +} + +/* Remove setas de number input */ +input[type='number']::-webkit-outer-spin-button, +input[type='number']::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} diff --git a/src/assets/vite.svg b/src/assets/vite.svg new file mode 100644 index 0000000..5101b67 --- /dev/null +++ b/src/assets/vite.svg @@ -0,0 +1 @@ +Vite diff --git a/src/bootstrap/prefeituraBoot.js b/src/bootstrap/prefeituraBoot.js new file mode 100644 index 0000000..7674a06 --- /dev/null +++ b/src/bootstrap/prefeituraBoot.js @@ -0,0 +1,37 @@ +import { prefeituraService } from '@/services/prefeituraService' +import { usePrefeituraStore } from '@/stores/prefeituraStore' +import { getTenant } from '@/utils/tenant' + +const API_URL = import.meta.env.VITE_API_URL ?? '' + +function resolverUrl(path) { + if (!path) return null + if (path.startsWith('http')) return path + return `${API_URL}${path}` +} + +export async function bootstrapPrefeitura(pinia) { + const store = usePrefeituraStore(pinia) + const dominio = getTenant() + + try { + const { data } = await prefeituraService.getPrefeituraInfo(dominio) + const info = data.data + + store.$patch({ + codigoMunicipio: info.codigoMunicipio, + nomePrefeitura: info.nomePrefeitura, + dominio: info.dominio, + template: info.template, + pathLogo: resolverUrl(info.pathLogo), + pathBackground: resolverUrl(info.pathBackground), + }) + + localStorage.setItem('current_municipio', info.codigoMunicipio) + localStorage.setItem('current_dominio', info.dominio) + + return { success: true } + } catch { + return { success: false } + } +} diff --git a/src/components/auth/DocumentoInput.vue b/src/components/auth/DocumentoInput.vue new file mode 100644 index 0000000..f6eb9f0 --- /dev/null +++ b/src/components/auth/DocumentoInput.vue @@ -0,0 +1,58 @@ + + + diff --git a/src/components/common/AppFooter.vue b/src/components/common/AppFooter.vue new file mode 100644 index 0000000..d320214 --- /dev/null +++ b/src/components/common/AppFooter.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/components/common/AppHeader.vue b/src/components/common/AppHeader.vue new file mode 100644 index 0000000..6f95d84 --- /dev/null +++ b/src/components/common/AppHeader.vue @@ -0,0 +1,56 @@ + + + diff --git a/src/components/common/ServiceCard.vue b/src/components/common/ServiceCard.vue new file mode 100644 index 0000000..6d46c9c --- /dev/null +++ b/src/components/common/ServiceCard.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/config/apiClient.js b/src/config/apiClient.js new file mode 100644 index 0000000..568df4b --- /dev/null +++ b/src/config/apiClient.js @@ -0,0 +1,41 @@ +import axios from 'axios' +import { useAuthStore } from '@/stores/authStore' +import { usePrefeituraStore } from '@/stores/prefeituraStore' + +const BASE_URL = `${import.meta.env.VITE_API_URL ?? ''}/api/v1` + +function addTenantHeaders(config) { + const prefeitura = usePrefeituraStore() + if (prefeitura.codigoMunicipio) config.headers['X-Municipio'] = prefeitura.codigoMunicipio + if (prefeitura.dominio) config.headers['X-Dominio'] = prefeitura.dominio + return config +} + +// ─── Cliente público (sem autenticação) ─────────────────────────────────────── +// Usado no bootstrap de prefeitura e em serviços públicos (certidão, IPTU) +export const apiClientPublico = axios.create({ baseURL: BASE_URL, timeout: 10000 }) + +apiClientPublico.interceptors.request.use((config) => addTenantHeaders(config)) + +// ─── Cliente autenticado ─────────────────────────────────────────────────────── +// Usado nas rotas /portal/* que exigem login +const apiClient = axios.create({ baseURL: BASE_URL, timeout: 10000 }) + +apiClient.interceptors.request.use((config) => { + const auth = useAuthStore() + if (auth.token) config.headers.Authorization = `Bearer ${auth.token}` + return addTenantHeaders(config) +}) + +apiClient.interceptors.response.use( + (response) => response, + (error) => { + if (error.response?.status === 401) { + useAuthStore().clearSession() + window.location.href = '/' + } + return Promise.reject(error) + }, +) + +export default apiClient diff --git a/src/config/primevue.config.js b/src/config/primevue.config.js new file mode 100644 index 0000000..c1c4024 --- /dev/null +++ b/src/config/primevue.config.js @@ -0,0 +1,37 @@ +import Aura from '@primeuix/themes/aura' + +// A cor primária NÃO é hardcoded aqui — é aplicada dinamicamente via +// applyTemplate() no bootstrap, conforme o template de cada prefeitura. +export const primeVueConfig = { + pt: { + global: { + css: `* { font-family: 'DM Sans', system-ui, sans-serif; }`, + }, + }, + theme: { + preset: Aura, + options: { + darkModeSelector: '.app-dark', + }, + }, + locale: { + firstDayOfWeek: 1, + dayNames: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado'], + dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'], + dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], + monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], + monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'], + today: 'Hoje', + clear: 'Limpar', + accept: 'Sim', + reject: 'Não', + choose: 'Escolher', + upload: 'Enviar', + cancel: 'Cancelar', + apply: 'Aplicar', + close: 'Fechar', + emptyMessage: 'Nenhum resultado encontrado', + emptySearchMessage: 'Nenhum resultado encontrado', + emptySelectionMessage: 'Nenhum item selecionado', + }, +} diff --git a/src/config/theme.config.js b/src/config/theme.config.js new file mode 100644 index 0000000..eb8910c --- /dev/null +++ b/src/config/theme.config.js @@ -0,0 +1,80 @@ +import { updatePreset, updateSurfacePalette } from '@primeuix/themes' +import { ref } from 'vue' + +export const templates = ref([ + { name: 'sistema', palette: null }, + { + name: 'tutoia', + palette: { 50:'#fff7ed',100:'#ffedd5',200:'#fed7aa',300:'#fdba74',400:'#fb923c',500:'#f97316',600:'#ea580c',700:'#c2410c',800:'#9a3412',900:'#7c2d12',950:'#431407' }, + }, + { + name: 'amber', + palette: { 50:'#fffbeb',100:'#fef3c7',200:'#fde68a',300:'#fcd34d',400:'#fbbf24',500:'#f59e0b',600:'#d97706',700:'#b45309',800:'#92400e',900:'#78350f',950:'#451a03' }, + }, + { + name: 'blue', + palette: { 50:'#eff6ff',100:'#dbeafe',200:'#bfdbfe',300:'#93c5fd',400:'#60a5fa',500:'#3b82f6',600:'#2563eb',700:'#1d4ed8',800:'#1e40af',900:'#1e3a8a',950:'#172554' }, + }, + { + name: 'indigo', + palette: { 50:'#eef2ff',100:'#e0e7ff',200:'#c7d2fe',300:'#a5b4fc',400:'#818cf8',500:'#6366f1',600:'#4f46e5',700:'#4338ca',800:'#3730a3',900:'#312e81',950:'#1e1b4b' }, + }, + { + name: 'violet', + palette: { 50:'#f5f3ff',100:'#ede9fe',200:'#ddd6fe',300:'#c4b5fd',400:'#a78bfa',500:'#8b5cf6',600:'#7c3aed',700:'#6d28d9',800:'#5b21b6',900:'#4c1d95',950:'#2e1065' }, + }, + { + name: 'emerald', + palette: { 50:'#ecfdf5',100:'#d1fae5',200:'#a7f3d0',300:'#6ee7b7',400:'#34d399',500:'#10b981',600:'#059669',700:'#047857',800:'#065f46',900:'#064e3b',950:'#022c22' }, + }, + { + name: 'teal', + palette: { 50:'#f0fdfa',100:'#ccfbf1',200:'#99f6e4',300:'#5eead4',400:'#2dd4bf',500:'#14b8a6',600:'#0d9488',700:'#0f766e',800:'#115e59',900:'#134e4a',950:'#042f2e' }, + }, + { + name: 'rose', + palette: { 50:'#fff1f2',100:'#ffe4e6',200:'#fecdd3',300:'#fda4af',400:'#fb7185',500:'#f43f5e',600:'#e11d48',700:'#be123c',800:'#9f1239',900:'#881337',950:'#4c0519' }, + }, +]) + +export const surfaces = ref([ + { + name: 'slate', + palette: { 0:'#ffffff',50:'#f8fafc',100:'#f1f5f9',200:'#e2e8f0',300:'#cbd5e1',400:'#94a3b8',500:'#64748b',600:'#475569',700:'#334155',800:'#1e293b',900:'#0f172a',950:'#020617' }, + }, +]) + +export function getPresetExt(templateName) { + const t = templates.value.find((t) => t.name === templateName) ?? templates.value.find((t) => t.name === 'blue') + + if (!t || t.palette === null) { + return { + semantic: { + primary: { 50:'{surface.50}',100:'{surface.100}',200:'{surface.200}',300:'{surface.300}',400:'{surface.400}',500:'{surface.500}',600:'{surface.600}',700:'{surface.700}',800:'{surface.800}',900:'{surface.900}',950:'{surface.950}' }, + colorScheme: { + light: { primary: { color:'{primary.950}',contrastColor:'#ffffff',hoverColor:'{primary.800}',activeColor:'{primary.700}' } }, + dark: { primary: { color:'{primary.50}', contrastColor:'{primary.950}',hoverColor:'{primary.200}',activeColor:'{primary.300}' } }, + }, + }, + } + } + + return { + semantic: { + primary: t.palette, + colorScheme: { + light: { primary: { color:'{primary.600}',contrastColor:'{surface.50}',hoverColor:'{primary.700}',activeColor:'{primary.800}' } }, + dark: { primary: { color:'{primary.400}',contrastColor:'{surface.900}',hoverColor:'{primary.300}',activeColor:'{primary.200}' } }, + }, + }, + } +} + +export function applyTemplate(templateName) { + updatePreset(getPresetExt(templateName)) +} + +export function applySurface(surfaceName) { + const s = surfaces.value.find((s) => s.name === surfaceName) + if (s) updateSurfacePalette(s.palette) +} diff --git a/src/layouts/PortalLayout.vue b/src/layouts/PortalLayout.vue new file mode 100644 index 0000000..42b1fc5 --- /dev/null +++ b/src/layouts/PortalLayout.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/layouts/PublicLayout.vue b/src/layouts/PublicLayout.vue new file mode 100644 index 0000000..4bac379 --- /dev/null +++ b/src/layouts/PublicLayout.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..da09e22 --- /dev/null +++ b/src/main.js @@ -0,0 +1,34 @@ +import { createApp } from 'vue' +import { createPinia } from 'pinia' +import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' + +import PrimeVue from 'primevue/config' +import ToastService from 'primevue/toastservice' +import ConfirmationService from 'primevue/confirmationservice' + +import App from './App.vue' +import router from './router' +import { primeVueConfig } from './config/primevue.config' +import { bootstrapPrefeitura } from './bootstrap/prefeituraBoot' + +import '@/assets/main.css' +import '@/assets/layout/layout.scss' + +async function startApp() { + const app = createApp(App) + + const pinia = createPinia() + pinia.use(piniaPluginPersistedstate) + app.use(pinia) + + await bootstrapPrefeitura(pinia) + + app.use(router) + app.use(PrimeVue, primeVueConfig) + app.use(ToastService) + app.use(ConfirmationService) + + app.mount('#app') +} + +startApp() diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..3b0e01b --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,106 @@ +import { createRouter, createWebHistory } from 'vue-router' +import { useAuthStore } from '@/stores/authStore' + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + scrollBehavior: () => ({ top: 0 }), + routes: [ + { + path: '/', + component: () => import('@/layouts/PublicLayout.vue'), + children: [ + { + path: '', + name: 'home', + component: () => import('@/views/public/HomeView.vue'), + }, + { + path: 'login', + name: 'login', + component: () => import('@/views/public/LoginView.vue'), + }, + { + path: 'primeiro-acesso', + name: 'primeiro-acesso', + component: () => import('@/views/public/PrimeiroAcessoView.vue'), + }, + { + path: 'credenciamento', + name: 'credenciamento', + component: () => import('@/views/public/CredenciamentoView.vue'), + }, + { + path: 'servicos', + name: 'servicos', + component: () => import('@/views/servicos/ServicosHubView.vue'), + }, + { + path: 'servicos/certidao', + name: 'certidao', + component: () => import('@/views/servicos/CertidaoView.vue'), + }, + { + path: 'servicos/iptu', + name: 'iptu', + component: () => import('@/views/servicos/IptuView.vue'), + }, + ], + }, + { + path: '/portal', + component: () => import('@/layouts/PortalLayout.vue'), + meta: { requiresAuth: true }, + children: [ + { + path: '', + redirect: { name: 'painel' }, + }, + { + path: 'painel', + name: 'painel', + component: () => import('@/views/portal/PainelView.vue'), + }, + { + path: 'debitos', + name: 'debitos', + component: () => import('@/views/portal/DebitosView.vue'), + }, + { + path: 'certidoes', + name: 'certidoes-portal', + component: () => import('@/views/portal/CertidoesView.vue'), + }, + { + path: 'alvaras', + name: 'alvaras', + component: () => import('@/views/portal/AlvarasView.vue'), + }, + { + path: 'pagamentos', + name: 'pagamentos', + component: () => import('@/views/portal/PagamentosView.vue'), + }, + { + path: 'dados', + name: 'dados', + component: () => import('@/views/portal/DadosView.vue'), + }, + ], + }, + { + path: '/:pathMatch(.*)*', + redirect: { name: 'home' }, + }, + ], +}) + +router.beforeEach((to) => { + if (!to.meta.requiresAuth) return true + + const auth = useAuthStore() + if (!auth.isAuthenticated) { + return { name: 'home' } + } +}) + +export default router diff --git a/src/services/authService.js b/src/services/authService.js new file mode 100644 index 0000000..80c43a1 --- /dev/null +++ b/src/services/authService.js @@ -0,0 +1,34 @@ +/** + * Serviço de autenticação — Keycloak PKCE + * + * Fluxo: + * 1. Home coleta o documento (CPF/CNPJ) + * 2. Redireciona para /login?doc=XXX + * 3. LoginView exibe o documento e solicita a senha + * 4. Ao submeter, este serviço inicia o PKCE e redireciona ao Keycloak + * 5. Keycloak devolve ao callback com o code + * 6. handleCallback troca o code pelo token e salva na authStore + */ + +const KEYCLOAK_BASE = import.meta.env.VITE_KEYCLOAK_URL ?? 'https://sso.modumfiscal.com.br/realms/modumfiscal-dev' +const CLIENT_ID = import.meta.env.VITE_KEYCLOAK_CLIENT_ID ?? 'portal-modumfiscal' +const REDIRECT_URI = `${window.location.origin}/callback` + +export const authService = { + async iniciarLogin(documento) { + // Implementar PKCE com pkce-challenge quando integrar com Keycloak + // Por ora redireciona para /login com o documento + return { documento } + }, + + async handleCallback(code) { + // Trocar code por token via Keycloak + // A ser implementado na fase de integração + throw new Error('Keycloak callback não implementado nesta fase') + }, + + logout() { + const logoutUrl = `${KEYCLOAK_BASE}/protocol/openid-connect/logout?redirect_uri=${encodeURIComponent(window.location.origin)}` + window.location.href = logoutUrl + }, +} diff --git a/src/services/prefeituraService.js b/src/services/prefeituraService.js new file mode 100644 index 0000000..6284a92 --- /dev/null +++ b/src/services/prefeituraService.js @@ -0,0 +1,7 @@ +import { apiClientPublico } from '@/config/apiClient' + +export const prefeituraService = { + getPrefeituraInfo(dominio) { + return apiClientPublico.get(`/publico/prefeitura/${dominio}`) + }, +} diff --git a/src/stores/authStore.js b/src/stores/authStore.js new file mode 100644 index 0000000..d074252 --- /dev/null +++ b/src/stores/authStore.js @@ -0,0 +1,31 @@ +import { defineStore } from 'pinia' +import { ref, computed } from 'vue' + +export const useAuthStore = defineStore( + 'auth', + () => { + const token = ref(null) + const userInfo = ref(null) + + const isAuthenticated = computed(() => !!token.value) + const nomeUsuario = computed(() => userInfo.value?.name ?? '') + const documento = computed(() => userInfo.value?.preferred_username ?? '') + + function setSession(accessToken, info) { + token.value = accessToken + userInfo.value = info + } + + function clearSession() { + token.value = null + userInfo.value = null + } + + return { token, userInfo, isAuthenticated, nomeUsuario, documento, setSession, clearSession } + }, + { + persist: { + paths: ['token', 'userInfo'], + }, + }, +) diff --git a/src/stores/prefeituraStore.js b/src/stores/prefeituraStore.js new file mode 100644 index 0000000..58371aa --- /dev/null +++ b/src/stores/prefeituraStore.js @@ -0,0 +1,13 @@ +import { defineStore } from 'pinia' + +export const usePrefeituraStore = defineStore('prefeitura', { + state: () => ({ + codigoMunicipio: null, + nomePrefeitura: null, + dominio: null, + template: null, + pathLogo: null, + pathBackground: null, // URL de foto de fundo do município (quando a API suportar) + }), + persist: true, +}) diff --git a/src/utils/tenant.js b/src/utils/tenant.js new file mode 100644 index 0000000..83a807b --- /dev/null +++ b/src/utils/tenant.js @@ -0,0 +1,26 @@ +export function getTenant() { + const tenant = window.location.hostname.split('.')[0] + + if (isValidTenant(tenant)) return tenant + + const stored = localStorage.getItem('current_dominio') + if (stored && isValidTenant(stored)) return stored + + return 'sistema' +} + +export function setTenant(tenant) { + if (isValidTenant(tenant)) { + localStorage.setItem('current_dominio', tenant) + } +} + +export function clearTenant() { + localStorage.removeItem('current_dominio') +} + +function isValidTenant(tenant) { + if (!tenant || typeof tenant !== 'string') return false + const invalidos = ['0.0.0.0', 'www', 'api', 'admin', 'test', 'dev', 'development', 'staging', 'production', 'localhost'] + return !invalidos.includes(tenant.toLowerCase()) && tenant.length > 1 && /^[a-zA-Z0-9-]+$/.test(tenant) +} diff --git a/src/views/portal/AlvarasView.vue b/src/views/portal/AlvarasView.vue new file mode 100644 index 0000000..74241ed --- /dev/null +++ b/src/views/portal/AlvarasView.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/views/portal/CertidoesView.vue b/src/views/portal/CertidoesView.vue new file mode 100644 index 0000000..0d73599 --- /dev/null +++ b/src/views/portal/CertidoesView.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/views/portal/DadosView.vue b/src/views/portal/DadosView.vue new file mode 100644 index 0000000..691e561 --- /dev/null +++ b/src/views/portal/DadosView.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/views/portal/DebitosView.vue b/src/views/portal/DebitosView.vue new file mode 100644 index 0000000..c9fab19 --- /dev/null +++ b/src/views/portal/DebitosView.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/views/portal/PagamentosView.vue b/src/views/portal/PagamentosView.vue new file mode 100644 index 0000000..93fd60b --- /dev/null +++ b/src/views/portal/PagamentosView.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/views/portal/PainelView.vue b/src/views/portal/PainelView.vue new file mode 100644 index 0000000..d600af8 --- /dev/null +++ b/src/views/portal/PainelView.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/views/public/CredenciamentoView.vue b/src/views/public/CredenciamentoView.vue new file mode 100644 index 0000000..182be27 --- /dev/null +++ b/src/views/public/CredenciamentoView.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/views/public/HomeView.vue b/src/views/public/HomeView.vue new file mode 100644 index 0000000..09e9f78 --- /dev/null +++ b/src/views/public/HomeView.vue @@ -0,0 +1,354 @@ + + + + + diff --git a/src/views/public/LoginView.vue b/src/views/public/LoginView.vue new file mode 100644 index 0000000..1dd2936 --- /dev/null +++ b/src/views/public/LoginView.vue @@ -0,0 +1,160 @@ + + + diff --git a/src/views/public/PrimeiroAcessoView.vue b/src/views/public/PrimeiroAcessoView.vue new file mode 100644 index 0000000..fea4fde --- /dev/null +++ b/src/views/public/PrimeiroAcessoView.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/views/servicos/CertidaoView.vue b/src/views/servicos/CertidaoView.vue new file mode 100644 index 0000000..f2ac7d2 --- /dev/null +++ b/src/views/servicos/CertidaoView.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/views/servicos/IptuView.vue b/src/views/servicos/IptuView.vue new file mode 100644 index 0000000..cc0893a --- /dev/null +++ b/src/views/servicos/IptuView.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/views/servicos/ServicosHubView.vue b/src/views/servicos/ServicosHubView.vue new file mode 100644 index 0000000..53befa3 --- /dev/null +++ b/src/views/servicos/ServicosHubView.vue @@ -0,0 +1,23 @@ + + + diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..155c429 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,21 @@ +import { fileURLToPath, URL } from 'node:url' +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import tailwindcss from '@tailwindcss/vite' +import Components from 'unplugin-vue-components/vite' +import { PrimeVueResolver } from '@primevue/auto-import-resolver' + +export default defineConfig({ + plugins: [ + vue(), + tailwindcss(), + Components({ + resolvers: [PrimeVueResolver()], + }), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, + }, +})