feat (form): add form components

This commit is contained in:
Abizrh
2025-08-11 09:41:09 +07:00
parent 6d123f691c
commit 59db7a8479
5 changed files with 555 additions and 5 deletions
+11
View File
@@ -0,0 +1,11 @@
<script setup lang="ts">
defineProps<{
classValExt?: string
}>()
</script>
<template>
<div :class="`mb-5 flex-wrap md:flex ${classValExt || ''}`">
<slot />
</div>
</template>
+78
View File
@@ -0,0 +1,78 @@
<script setup lang="ts">
const props = withDefaults(
defineProps<{
column?: 1 | 2 | 3
density?: 'default' | 'dense'
side?: 'default' | 'break'
position?: 'default' | 'dynamic'
class?: string
}>(),
{
column: 1,
density: 'default',
side: 'default',
position: 'default',
class: '',
},
)
const classVal = computed(() => {
let val = ''
if (props.column === 2) val += 'column-2 '
else if (props.column === 3) val += 'column-3 '
else val += 'column-1 '
if (props.density === 'dense') val += 'density-dense '
if (props.side === 'break') val += 'side-break '
if (props.position === 'dynamic') val += 'position-dynamic '
return (val + (props.class || '')).trim()
})
</script>
<template>
<div :class="classVal">
<slot />
</div>
</template>
<style scoped>
.column-1,
.column-2,
.column-3 {
@apply w-full flex-shrink-0;
}
.column-1:not(.density-dense):not(:last-child),
.column-2:not(.density-dense):not(:last-child),
.column-3:not(.density-dense):not(:last-child) {
@apply mb-2 md:mb-2.5 xl:mb-3;
}
.column-2:not(.position-dynamic),
.column-3:not(.position-dynamic) {
@apply pe-4;
}
.column-2:is(.position-dynamic),
.column-3:is(.position-dynamic) {
@apply ps-4;
}
.column-1:not(.side-break),
.column-2:not(.side-break),
.column-3:not(.side-break) {
@apply md:flex;
}
.column-2:not(.side-break) {
@apply md:w-1/2;
}
.column-3:not(.side-break) {
@apply md:w-1/3;
}
</style>
+20
View File
@@ -0,0 +1,20 @@
<script setup lang="ts">
export interface XError {
message: string
[key: string]: any
}
defineProps<{
id?: string
errors?: Record<string, XError>
}>()
</script>
<template>
<div class="grow">
<slot />
<div v-if="id && errors?.[id]" class="field-error-info">
{{ errors[id].message }}
</div>
</div>
</template>
+5
View File
@@ -29,11 +29,13 @@
"@antfu/eslint-config": "^4.10.1",
"@nuxt/eslint": "^1.2.0",
"@nuxt/icon": "^1.11.0",
"@nuxt/test-utils": "^3.19.2",
"@nuxtjs/color-mode": "^3.5.2",
"@pinia/nuxt": "^0.5.1",
"@unocss/eslint-plugin": "^66.0.0",
"@unocss/nuxt": "^66.0.0",
"@vee-validate/zod": "^4.15.0",
"@vue/test-utils": "^2.4.6",
"@vueuse/core": "^12.2.0",
"@vueuse/math": "^12.2.0",
"@vueuse/nuxt": "^12.2.0",
@@ -42,8 +44,10 @@
"eslint": "^9.22.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-format": "^1.0.1",
"happy-dom": "^18.0.1",
"lucide-vue-next": "^0.482.0",
"nuxt": "^4.0.1",
"playwright-core": "^1.54.2",
"prettier": "^3.6.2",
"prettier-plugin-tailwindcss": "^0.5.14",
"radix-vue": "^1.9.17",
@@ -55,6 +59,7 @@
"unocss-preset-shadcn": "^0.5.0",
"vaul-vue": "^0.2.0",
"vee-validate": "^4.15.0",
"vitest": "^3.2.4",
"vue": "^3.5.18",
"vue-router": "^4.5.1",
"vue-sonner": "^1.3.0",
+441 -5
View File
@@ -42,13 +42,16 @@ dependencies:
devDependencies:
'@antfu/eslint-config':
specifier: ^4.10.1
version: 4.19.0(@unocss/eslint-plugin@66.4.2)(@vue/compiler-sfc@3.5.18)(eslint-plugin-format@1.0.1)(eslint@9.32.0)(typescript@5.9.2)
version: 4.19.0(@unocss/eslint-plugin@66.4.2)(@vue/compiler-sfc@3.5.18)(eslint-plugin-format@1.0.1)(eslint@9.32.0)(typescript@5.9.2)(vitest@3.2.4)
'@nuxt/eslint':
specifier: ^1.2.0
version: 1.8.0(@vue/compiler-sfc@3.5.18)(eslint-plugin-format@1.0.1)(eslint@9.32.0)(typescript@5.9.2)(vite@7.1.1)
'@nuxt/icon':
specifier: ^1.11.0
version: 1.15.0(vite@7.1.1)(vue@3.5.18)
'@nuxt/test-utils':
specifier: ^3.19.2
version: 3.19.2(@vue/test-utils@2.4.6)(happy-dom@18.0.1)(playwright-core@1.54.2)(typescript@5.9.2)(vitest@3.2.4)
'@nuxtjs/color-mode':
specifier: ^3.5.2
version: 3.5.2
@@ -64,6 +67,9 @@ devDependencies:
'@vee-validate/zod':
specifier: ^4.15.0
version: 4.15.1(vue@3.5.18)(zod@3.25.76)
'@vue/test-utils':
specifier: ^2.4.6
version: 2.4.6
'@vueuse/core':
specifier: ^12.2.0
version: 12.8.2(typescript@5.9.2)
@@ -88,12 +94,18 @@ devDependencies:
eslint-plugin-format:
specifier: ^1.0.1
version: 1.0.1(eslint@9.32.0)
happy-dom:
specifier: ^18.0.1
version: 18.0.1
lucide-vue-next:
specifier: ^0.482.0
version: 0.482.0(vue@3.5.18)
nuxt:
specifier: ^4.0.1
version: 4.0.3(@vue/compiler-sfc@3.5.18)(eslint@9.32.0)(typescript@5.9.2)(vite@7.1.1)(vue-tsc@2.2.12)
playwright-core:
specifier: ^1.54.2
version: 1.54.2
prettier:
specifier: ^3.6.2
version: 3.6.2
@@ -127,6 +139,9 @@ devDependencies:
vee-validate:
specifier: ^4.15.0
version: 4.15.1(vue@3.5.18)
vitest:
specifier: ^3.2.4
version: 3.2.4(happy-dom@18.0.1)
vue:
specifier: ^3.5.18
version: 3.5.18(typescript@5.9.2)
@@ -153,7 +168,7 @@ packages:
'@jridgewell/trace-mapping': 0.3.29
dev: true
/@antfu/eslint-config@4.19.0(@unocss/eslint-plugin@66.4.2)(@vue/compiler-sfc@3.5.18)(eslint-plugin-format@1.0.1)(eslint@9.32.0)(typescript@5.9.2):
/@antfu/eslint-config@4.19.0(@unocss/eslint-plugin@66.4.2)(@vue/compiler-sfc@3.5.18)(eslint-plugin-format@1.0.1)(eslint@9.32.0)(typescript@5.9.2)(vitest@3.2.4):
resolution: {integrity: sha512-IQlML0cc7qNA1Uk55raMRZjOmh26rkX3bi2MFYjhO+VOtTQt8Mz2ngxBlIwpTgZFgfuYjle6JPuOuALnEZHDFw==}
hasBin: true
peerDependencies:
@@ -213,7 +228,7 @@ packages:
'@typescript-eslint/eslint-plugin': 8.39.0(@typescript-eslint/parser@8.39.0)(eslint@9.32.0)(typescript@5.9.2)
'@typescript-eslint/parser': 8.39.0(eslint@9.32.0)(typescript@5.9.2)
'@unocss/eslint-plugin': 66.4.2(eslint@9.32.0)(typescript@5.9.2)
'@vitest/eslint-plugin': 1.3.4(eslint@9.32.0)(typescript@5.9.2)
'@vitest/eslint-plugin': 1.3.4(eslint@9.32.0)(typescript@5.9.2)(vitest@3.2.4)
ansis: 4.1.0
cac: 6.7.14
eslint: 9.32.0
@@ -2066,6 +2081,75 @@ packages:
- magicast
dev: true
/@nuxt/test-utils@3.19.2(@vue/test-utils@2.4.6)(happy-dom@18.0.1)(playwright-core@1.54.2)(typescript@5.9.2)(vitest@3.2.4):
resolution: {integrity: sha512-jvpCbTNd1e8t2vrGAMpVq8j7N25Jao0NpblRiIYwogXgNXOPrH1XBZxgufyLA701g64SeiplUe+pddtnJnQu/g==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
'@cucumber/cucumber': ^10.3.1 || ^11.0.0
'@jest/globals': ^29.5.0 || ^30.0.0
'@playwright/test': ^1.43.1
'@testing-library/vue': ^7.0.0 || ^8.0.1
'@vitest/ui': '*'
'@vue/test-utils': ^2.4.2
happy-dom: ^9.10.9 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
jsdom: ^22.0.0 || ^23.0.0 || ^24.0.0 || ^25.0.0 || ^26.0.0
playwright-core: ^1.43.1
vitest: ^3.2.0
peerDependenciesMeta:
'@cucumber/cucumber':
optional: true
'@jest/globals':
optional: true
'@playwright/test':
optional: true
'@testing-library/vue':
optional: true
'@vitest/ui':
optional: true
'@vue/test-utils':
optional: true
happy-dom:
optional: true
jsdom:
optional: true
playwright-core:
optional: true
vitest:
optional: true
dependencies:
'@nuxt/kit': 3.18.1(magicast@0.3.5)
'@vue/test-utils': 2.4.6
c12: 3.2.0(magicast@0.3.5)
consola: 3.4.2
defu: 6.1.4
destr: 2.0.5
estree-walker: 3.0.3
fake-indexeddb: 6.1.0
get-port-please: 3.2.0
h3: 1.15.4
happy-dom: 18.0.1
local-pkg: 1.1.1
magic-string: 0.30.17
node-fetch-native: 1.6.7
node-mock-http: 1.0.2
ofetch: 1.4.1
pathe: 2.0.3
perfect-debounce: 1.0.0
playwright-core: 1.54.2
radix3: 1.1.2
scule: 1.3.0
std-env: 3.9.0
tinyexec: 1.0.1
ufo: 1.6.1
unplugin: 2.3.5
vitest: 3.2.4(happy-dom@18.0.1)
vitest-environment-nuxt: 1.0.1(@vue/test-utils@2.4.6)(happy-dom@18.0.1)(playwright-core@1.54.2)(typescript@5.9.2)(vitest@3.2.4)
vue: 3.5.18(typescript@5.9.2)
transitivePeerDependencies:
- magicast
- typescript
dev: true
/@nuxt/vite-builder@4.0.3(eslint@9.32.0)(typescript@5.9.2)(vue-tsc@2.2.12)(vue@3.5.18):
resolution: {integrity: sha512-1eKm51V3Ine4DjxLUDnPIKewuIZwJjGh1oMvY3sAJ5RtdSngRonqkaoGV4EWtLH7cO+oTBbbdVg5O95chYYcLQ==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2139,6 +2223,10 @@ packages:
- magicast
dev: true
/@one-ini/wasm@0.1.1:
resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==}
dev: true
/@oxc-minify/binding-android-arm64@0.80.0:
resolution: {integrity: sha512-OLelUqrLkSJwNyjLZHgpKy9n0+zHQiMX8A0GFovJIwhgfPxjT/mt2JMnGkSoDlTnf9cw6nvALFzCsJZLTyl8gg==}
engines: {node: '>=14.0.0'}
@@ -3106,6 +3194,12 @@ packages:
dev: true
optional: true
/@types/chai@5.2.2:
resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==}
dependencies:
'@types/deep-eql': 4.0.2
dev: true
/@types/d3-array@3.2.1:
resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==}
dev: false
@@ -3315,6 +3409,10 @@ packages:
'@types/ms': 2.1.0
dev: true
/@types/deep-eql@4.0.2:
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
dev: true
/@types/eslint-scope@3.7.7:
resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
dependencies:
@@ -3368,6 +3466,12 @@ packages:
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
dev: true
/@types/node@20.19.10:
resolution: {integrity: sha512-iAFpG6DokED3roLSP0K+ybeDdIX6Bc0Vd3mLW5uDqThPWtNos3E+EqOM11mPQHKzfWHqEBuLjIlsBQQ8CsISmQ==}
dependencies:
undici-types: 6.21.0
dev: true
/@types/node@24.2.0:
resolution: {integrity: sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==}
dependencies:
@@ -3463,6 +3567,10 @@ packages:
/@types/web-bluetooth@0.0.21:
resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==}
/@types/whatwg-mimetype@3.0.2:
resolution: {integrity: sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==}
dev: true
/@types/yauzl@2.10.3:
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
requiresBuild: true
@@ -4173,7 +4281,7 @@ packages:
vue: 3.5.18(typescript@5.9.2)
dev: true
/@vitest/eslint-plugin@1.3.4(eslint@9.32.0)(typescript@5.9.2):
/@vitest/eslint-plugin@1.3.4(eslint@9.32.0)(typescript@5.9.2)(vitest@3.2.4):
resolution: {integrity: sha512-EOg8d0jn3BAiKnR55WkFxmxfWA3nmzrbIIuOXyTe6A72duryNgyU+bdBEauA97Aab3ho9kLmAwgPX63Ckj4QEg==}
peerDependencies:
eslint: '>= 8.57.0'
@@ -4188,10 +4296,74 @@ packages:
'@typescript-eslint/utils': 8.39.0(eslint@9.32.0)(typescript@5.9.2)
eslint: 9.32.0
typescript: 5.9.2
vitest: 3.2.4(happy-dom@18.0.1)
transitivePeerDependencies:
- supports-color
dev: true
/@vitest/expect@3.2.4:
resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
dependencies:
'@types/chai': 5.2.2
'@vitest/spy': 3.2.4
'@vitest/utils': 3.2.4
chai: 5.2.1
tinyrainbow: 2.0.0
dev: true
/@vitest/mocker@3.2.4(vite@7.1.1):
resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==}
peerDependencies:
msw: ^2.4.9
vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0
peerDependenciesMeta:
msw:
optional: true
vite:
optional: true
dependencies:
'@vitest/spy': 3.2.4
estree-walker: 3.0.3
magic-string: 0.30.17
vite: 7.1.1(jiti@2.5.1)
dev: true
/@vitest/pretty-format@3.2.4:
resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==}
dependencies:
tinyrainbow: 2.0.0
dev: true
/@vitest/runner@3.2.4:
resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==}
dependencies:
'@vitest/utils': 3.2.4
pathe: 2.0.3
strip-literal: 3.0.0
dev: true
/@vitest/snapshot@3.2.4:
resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==}
dependencies:
'@vitest/pretty-format': 3.2.4
magic-string: 0.30.17
pathe: 2.0.3
dev: true
/@vitest/spy@3.2.4:
resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==}
dependencies:
tinyspy: 4.0.3
dev: true
/@vitest/utils@3.2.4:
resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==}
dependencies:
'@vitest/pretty-format': 3.2.4
loupe: 3.2.0
tinyrainbow: 2.0.0
dev: true
/@volar/language-core@2.4.15:
resolution: {integrity: sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==}
dependencies:
@@ -4428,6 +4600,13 @@ packages:
/@vue/shared@3.5.18:
resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==}
/@vue/test-utils@2.4.6:
resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==}
dependencies:
js-beautify: 1.15.4
vue-component-type-helpers: 2.2.12
dev: true
/@vueuse/core@10.11.1(vue@3.5.18):
resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==}
dependencies:
@@ -4655,6 +4834,11 @@ packages:
resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
dev: true
/abbrev@2.0.0:
resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
dev: true
/abbrev@3.0.1:
resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==}
engines: {node: ^18.17.0 || >=20.5.0}
@@ -4824,6 +5008,11 @@ packages:
dependencies:
tslib: 2.8.1
/assertion-error@2.0.1:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
engines: {node: '>=12'}
dev: true
/ast-kit@2.1.1:
resolution: {integrity: sha512-mfh6a7gKXE8pDlxTvqIc/syH/P3RkzbOF6LeHdcKztLEzYe6IMsRCL7N8vI7hqTGWNxpkCuuRTpT21xNWqhRtQ==}
engines: {node: '>=20.18.0'}
@@ -5060,6 +5249,17 @@ packages:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
dev: true
/chai@5.2.1:
resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==}
engines: {node: '>=18'}
dependencies:
assertion-error: 2.0.1
check-error: 2.1.1
deep-eql: 5.0.2
loupe: 3.2.0
pathval: 2.0.1
dev: true
/chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
@@ -5076,6 +5276,11 @@ packages:
resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
dev: true
/check-error@2.1.1:
resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
engines: {node: '>= 16'}
dev: true
/chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
@@ -5269,6 +5474,13 @@ packages:
/confbox@0.2.2:
resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==}
/config-chain@1.1.13:
resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
dependencies:
ini: 1.3.8
proto-list: 1.2.4
dev: true
/consola@3.4.2:
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
engines: {node: ^14.18.0 || >=16.10.0}
@@ -5832,6 +6044,11 @@ packages:
character-entities: 2.0.2
dev: true
/deep-eql@5.0.2:
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
engines: {node: '>=6'}
dev: true
/deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
@@ -6075,6 +6292,17 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
/editorconfig@1.0.4:
resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==}
engines: {node: '>=14'}
hasBin: true
dependencies:
'@one-ini/wasm': 0.1.1
commander: 10.0.1
minimatch: 9.0.1
semver: 7.7.2
dev: true
/ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: true
@@ -6876,6 +7104,11 @@ packages:
strip-final-newline: 3.0.0
dev: true
/expect-type@1.2.2:
resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==}
engines: {node: '>=12.0.0'}
dev: true
/exsolve@1.0.7:
resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
@@ -6893,6 +7126,11 @@ packages:
- supports-color
dev: true
/fake-indexeddb@6.1.0:
resolution: {integrity: sha512-gOzajWIhEug/CQHUIxigKT9Zilh5/I6WvUBez6/UdUtT/YVEHM9r572Os8wfvhp7TkmgBtRNdqSM7YoCXWMzZg==}
engines: {node: '>=18'}
dev: true
/fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
@@ -7317,6 +7555,15 @@ packages:
ufo: 1.6.1
uncrypto: 0.1.3
/happy-dom@18.0.1:
resolution: {integrity: sha512-qn+rKOW7KWpVTtgIUi6RVmTBZJSe2k0Db0vh1f7CWrWclkkc7/Q+FrOfkZIb2eiErLyqu5AXEzE7XthO9JVxRA==}
engines: {node: '>=20.0.0'}
dependencies:
'@types/node': 20.19.10
'@types/whatwg-mimetype': 3.0.2
whatwg-mimetype: 3.0.0
dev: true
/has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
@@ -7444,7 +7691,6 @@ packages:
/ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
dev: false
/ini@4.1.1:
resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==}
@@ -7673,6 +7919,23 @@ packages:
resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==}
hasBin: true
/js-beautify@1.15.4:
resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==}
engines: {node: '>=14'}
hasBin: true
dependencies:
config-chain: 1.1.13
editorconfig: 1.0.4
glob: 10.4.5
js-cookie: 3.0.5
nopt: 7.2.1
dev: true
/js-cookie@3.0.5:
resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==}
engines: {node: '>=14'}
dev: true
/js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -7942,6 +8205,10 @@ packages:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
dev: true
/loupe@3.2.0:
resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==}
dev: true
/lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
dev: true
@@ -8530,6 +8797,13 @@ packages:
brace-expansion: 2.0.2
dev: true
/minimatch@9.0.1:
resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
brace-expansion: 2.0.2
dev: true
/minimatch@9.0.5:
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -8811,6 +9085,14 @@ packages:
'@babel/parser': 7.28.0
dev: true
/nopt@7.2.1:
resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
hasBin: true
dependencies:
abbrev: 2.0.0
dev: true
/nopt@8.1.0:
resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==}
engines: {node: ^18.17.0 || >=20.5.0}
@@ -9337,6 +9619,11 @@ packages:
/pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
/pathval@2.0.1:
resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==}
engines: {node: '>= 14.16'}
dev: true
/pbf@3.3.0:
resolution: {integrity: sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==}
hasBin: true
@@ -9429,6 +9716,12 @@ packages:
exsolve: 1.0.7
pathe: 2.0.3
/playwright-core@1.54.2:
resolution: {integrity: sha512-n5r4HFbMmWsB4twG7tJLDN9gmBUeSPcsBZiWSE4DnYz9mJMAFqr2ID7+eGC9kpEnxExJ1epttwR59LEWCk8mtA==}
engines: {node: '>=18'}
hasBin: true
dev: true
/pluralize@8.0.0:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
engines: {node: '>=4'}
@@ -9887,6 +10180,10 @@ packages:
sisteransi: 1.0.5
dev: true
/proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
dev: true
/protocol-buffers-schema@3.6.0:
resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==}
dev: false
@@ -10397,6 +10694,10 @@ packages:
side-channel-weakmap: 1.0.2
dev: true
/siginfo@2.0.0:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
dev: true
/signal-exit@4.1.0:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
@@ -10508,6 +10809,10 @@ packages:
resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==}
dev: true
/stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
dev: true
/standard-as-callback@2.1.0:
resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==}
dev: true
@@ -10780,6 +11085,14 @@ packages:
resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
dev: true
/tinybench@2.9.0:
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
dev: true
/tinyexec@0.3.2:
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
dev: true
/tinyexec@1.0.1:
resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==}
@@ -10790,10 +11103,25 @@ packages:
fdir: 6.4.6(picomatch@4.0.3)
picomatch: 4.0.3
/tinypool@1.1.1:
resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==}
engines: {node: ^18.0.0 || >=20.0.0}
dev: true
/tinyqueue@2.0.3:
resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==}
dev: false
/tinyrainbow@2.0.0:
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
engines: {node: '>=14.0.0'}
dev: true
/tinyspy@4.0.3:
resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==}
engines: {node: '>=14.0.0'}
dev: true
/tmp-promise@3.0.3:
resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==}
dependencies:
@@ -10924,6 +11252,10 @@ packages:
magic-string: 0.30.17
unplugin: 2.3.5
/undici-types@6.21.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
dev: true
/undici-types@7.10.0:
resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
requiresBuild: true
@@ -11502,6 +11834,92 @@ packages:
fsevents: 2.3.3
dev: true
/vitest-environment-nuxt@1.0.1(@vue/test-utils@2.4.6)(happy-dom@18.0.1)(playwright-core@1.54.2)(typescript@5.9.2)(vitest@3.2.4):
resolution: {integrity: sha512-eBCwtIQriXW5/M49FjqNKfnlJYlG2LWMSNFsRVKomc8CaMqmhQPBS5LZ9DlgYL9T8xIVsiA6RZn2lk7vxov3Ow==}
dependencies:
'@nuxt/test-utils': 3.19.2(@vue/test-utils@2.4.6)(happy-dom@18.0.1)(playwright-core@1.54.2)(typescript@5.9.2)(vitest@3.2.4)
transitivePeerDependencies:
- '@cucumber/cucumber'
- '@jest/globals'
- '@playwright/test'
- '@testing-library/vue'
- '@vitest/ui'
- '@vue/test-utils'
- happy-dom
- jsdom
- magicast
- playwright-core
- typescript
- vitest
dev: true
/vitest@3.2.4(happy-dom@18.0.1):
resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@types/debug': ^4.1.12
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
'@vitest/browser': 3.2.4
'@vitest/ui': 3.2.4
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
'@edge-runtime/vm':
optional: true
'@types/debug':
optional: true
'@types/node':
optional: true
'@vitest/browser':
optional: true
'@vitest/ui':
optional: true
happy-dom:
optional: true
jsdom:
optional: true
dependencies:
'@types/chai': 5.2.2
'@vitest/expect': 3.2.4
'@vitest/mocker': 3.2.4(vite@7.1.1)
'@vitest/pretty-format': 3.2.4
'@vitest/runner': 3.2.4
'@vitest/snapshot': 3.2.4
'@vitest/spy': 3.2.4
'@vitest/utils': 3.2.4
chai: 5.2.1
debug: 4.4.1
expect-type: 1.2.2
happy-dom: 18.0.1
magic-string: 0.30.17
pathe: 2.0.3
picomatch: 4.0.3
std-env: 3.9.0
tinybench: 2.9.0
tinyexec: 0.3.2
tinyglobby: 0.2.14
tinypool: 1.1.1
tinyrainbow: 2.0.0
vite: 7.1.1(jiti@2.5.1)
vite-node: 3.2.4(jiti@2.5.1)
why-is-node-running: 2.3.0
transitivePeerDependencies:
- jiti
- less
- lightningcss
- msw
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
- terser
- tsx
- yaml
dev: true
/vscode-uri@3.1.0:
resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
dev: true
@@ -11520,6 +11938,10 @@ packages:
ufo: 1.6.1
dev: true
/vue-component-type-helpers@2.2.12:
resolution: {integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==}
dev: true
/vue-demi@0.14.10(vue@3.5.18):
resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
engines: {node: '>=12'}
@@ -11664,6 +12086,11 @@ packages:
- uglify-js
dev: true
/whatwg-mimetype@3.0.0:
resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
engines: {node: '>=12'}
dev: true
/whatwg-url@5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
dependencies:
@@ -11694,6 +12121,15 @@ packages:
isexe: 3.1.1
dev: true
/why-is-node-running@2.3.0:
resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
engines: {node: '>=8'}
hasBin: true
dependencies:
siginfo: 2.0.0
stackback: 0.0.2
dev: true
/winston-transport@4.9.0:
resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==}
engines: {node: '>= 12.0.0'}