diff --git a/next-ui/.storybook/preview.ts b/next-ui/.storybook/preview.ts
index 40fa9edb..f49ee966 100644
--- a/next-ui/.storybook/preview.ts
+++ b/next-ui/.storybook/preview.ts
@@ -9,6 +9,7 @@ import { createPinia } from 'pinia'
import { PiniaColada } from '@pinia/colada'
import { PiniaColadaAutoRefetch } from '@pinia/colada-plugin-auto-refetch'
import { vueIntl } from '@/plugins/vue-intl'
+import 'virtual:uno.css'
initialize(
{
diff --git a/next-ui/dir2json.d.ts b/next-ui/dir2json.d.ts
index 62b99521..b74ff1ef 100644
--- a/next-ui/dir2json.d.ts
+++ b/next-ui/dir2json.d.ts
@@ -4,7 +4,9 @@
// noinspection JSUnusedGlobalSymbols
// Auto generated by vite-plugin-dir2json
declare module "*i18n?dir2json&ext=.json&1" {
- const json: {};
+ const json: {
+ "en": string;
+};
export default json;
}
diff --git a/next-ui/eslint.config.ts b/next-ui/eslint.config.ts
index 04f1ca4c..0dc7ba3a 100644
--- a/next-ui/eslint.config.ts
+++ b/next-ui/eslint.config.ts
@@ -1,5 +1,3 @@
-import storybook from 'eslint-plugin-storybook'
-
/**
* .eslint.js
*
@@ -10,6 +8,7 @@ import pluginVue from 'eslint-plugin-vue'
import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'
import formatjs from 'eslint-plugin-formatjs'
import eslintConfigPrettier from 'eslint-config-prettier'
+import storybook from 'eslint-plugin-storybook'
export default defineConfigWithVueTs(
{
diff --git a/next-ui/package-lock.json b/next-ui/package-lock.json
index b786116d..1cc66f54 100644
--- a/next-ui/package-lock.json
+++ b/next-ui/package-lock.json
@@ -35,6 +35,8 @@
"@testing-library/vue": "^8.1.0",
"@tsconfig/node22": "^22.0.2",
"@types/node": "^24.0.4",
+ "@unocss/eslint-config": "^66.3.1",
+ "@unocss/preset-icons": "^66.3.1",
"@vitejs/plugin-vue": "^5.2.4",
"@vitest/browser": "^3.2.4",
"@vitest/coverage-v8": "^3.2.4",
@@ -58,9 +60,9 @@
"sass-embedded": "^1.89.2",
"storybook": "^9.0.13",
"typescript": "^5.8.3",
+ "unocss": "^66.3.1",
"unplugin-auto-import": "^19.3.0",
"unplugin-fonts": "^1.1.1",
- "unplugin-icons": "^22.1.0",
"unplugin-vue-components": "^28.7.0",
"unplugin-vue-router": "^0.12.0",
"vite": "^6.3.5",
@@ -2116,6 +2118,22 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@quansync/fs": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@quansync/fs/-/fs-0.1.3.tgz",
+ "integrity": "sha512-G0OnZbMWEs5LhDyqy2UL17vGhSVHkQIfVojMtEWVenvj0V5S84VBgy86kJIuNsGDp2p7sTKlpSIpBUWdC35OKg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "quansync": "^0.2.10"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ },
"node_modules/@redocly/ajv": {
"version": "8.11.2",
"resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.11.2.tgz",
@@ -3259,6 +3277,563 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/@unocss/astro": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-66.3.1.tgz",
+ "integrity": "sha512-Jsx7Z4/aeiIn7wpDHYgoORk+Y7G0q6Gpt2NnJreS60Hfxa+0ru0KfQxs3A1f8NzSXqzf5FijtqOh2CdBiYsfFA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1",
+ "@unocss/reset": "66.3.1",
+ "@unocss/vite": "66.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@unocss/cli": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-66.3.1.tgz",
+ "integrity": "sha512-fuiGIDFLuAytj3FsrOZjzM4JKRMvL/e+14HR+6FEYt0NDkUBpeP4vrLKX63sJ0Vd9gUXLfUibYkFPANY0qbj9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.3.0",
+ "@unocss/config": "66.3.1",
+ "@unocss/core": "66.3.1",
+ "@unocss/preset-uno": "66.3.1",
+ "cac": "^6.7.14",
+ "chokidar": "^3.6.0",
+ "colorette": "^2.0.20",
+ "consola": "^3.4.2",
+ "magic-string": "^0.30.17",
+ "pathe": "^2.0.3",
+ "perfect-debounce": "^1.0.0",
+ "tinyglobby": "^0.2.14",
+ "unplugin-utils": "^0.2.4"
+ },
+ "bin": {
+ "unocss": "bin/unocss.mjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/cli/node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/@unocss/cli/node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@unocss/cli/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@unocss/cli/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@unocss/cli/node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/@unocss/config": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/config/-/config-66.3.1.tgz",
+ "integrity": "sha512-7gUsp7GgxWVOJr5Db8VRAUn5xq9JPhfofeaX/V/frMtXCYpKsNghfDquEu79iptBMC15vQopal09wnN6zYJWxQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1",
+ "unconfig": "^7.3.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/core": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/core/-/core-66.3.1.tgz",
+ "integrity": "sha512-a9Fbe+g4ub+YIGbnX3n6bNG8QKgQ7b/666atEZ1PQOd8PfzExN9v22OWc8SxOtn6ooyfYJcMavIf26qLasMCrg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/eslint-config": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/eslint-config/-/eslint-config-66.3.1.tgz",
+ "integrity": "sha512-gOGojNwITdhTORP+9rZ532bPwPN2kQyi8ZqOqHLq98FlVFdswaLlw1uyNto6aQokXf+WnfAUNECRHbC0ji2UeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/eslint-plugin": "66.3.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/eslint-plugin": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/eslint-plugin/-/eslint-plugin-66.3.1.tgz",
+ "integrity": "sha512-L2gM5XpLyLvfHaE9gMzB7B2UsRLKdCYqPxOHURzxyi8gXZeu7K1AH4XyMKD9ScC5Y5Df8fMITlS1ID7N1Xik7g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/utils": "^8.35.0",
+ "@unocss/config": "66.3.1",
+ "@unocss/core": "66.3.1",
+ "@unocss/rule-utils": "66.3.1",
+ "magic-string": "^0.30.17",
+ "synckit": "^0.11.8"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/extractor-arbitrary-variants": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-66.3.1.tgz",
+ "integrity": "sha512-fMVJ7ha/2DZ4FycyCJub2sPuCMsHuXT+OMAW/C9pA4KT50InvlzphAtVM67RVQA1iuQA2S042ghYaci8hLVPIw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/inspector": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-66.3.1.tgz",
+ "integrity": "sha512-9D9+GLgw3iLAa1cGMmk/i67xOnwpRxBJZf/CcD7hXwng/Y2qA+BwCk6+kwj7UbkDr9Ojae4AuKn65n5MJmzUaQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1",
+ "@unocss/rule-utils": "66.3.1",
+ "colorette": "^2.0.20",
+ "gzip-size": "^6.0.0",
+ "sirv": "^3.0.1",
+ "vue-flow-layout": "^0.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/inspector/node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@unocss/postcss": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-66.3.1.tgz",
+ "integrity": "sha512-Ubl1dcohDFItXuzlfwu2zQo55BL+rTrIw9x0F0EK+9+cG64SmwRJOf8fT8QwIKVgVLFOWud/22loE5P2/WBTmQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/config": "66.3.1",
+ "@unocss/core": "66.3.1",
+ "@unocss/rule-utils": "66.3.1",
+ "css-tree": "^3.1.0",
+ "postcss": "^8.5.6",
+ "tinyglobby": "^0.2.14"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
+ }
+ },
+ "node_modules/@unocss/preset-attributify": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-66.3.1.tgz",
+ "integrity": "sha512-MQQ/D2KNblNMMot9CBC9Ire4euPCLG8rl2rEApk/ac2pX+wurNav8D64QrE6ePPuDLLWSM79X3BXY4MRYk7yKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/preset-icons": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-66.3.1.tgz",
+ "integrity": "sha512-/YbX/17XIPeJfK3OIyBHnYs9nQgvCt0dNj6i42+ajRcvTFkDS1v5m3kFiExIfkMDvpfsl8t34zNugyM4piDepw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@iconify/utils": "^2.3.0",
+ "@unocss/core": "66.3.1",
+ "ofetch": "^1.4.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/preset-mini": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-66.3.1.tgz",
+ "integrity": "sha512-Zq5z57Ibyu3fOvn0bUujJHK7jpoUjXvXTCSqepsk134UVVYosJojgEcmnwVpDcvxY9+ydOe9/8OPQ26ZXzFd3Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1",
+ "@unocss/extractor-arbitrary-variants": "66.3.1",
+ "@unocss/rule-utils": "66.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/preset-tagify": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-66.3.1.tgz",
+ "integrity": "sha512-/ojg9r+K+W2x3DX12DgNQWD2RfPU2OJocP96iUjMnaTVvgweUqfaUXfGvhVsYe8hPjucw8nqGGZ6U8NHAnLyUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/preset-typography": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-66.3.1.tgz",
+ "integrity": "sha512-0fE3NG3uguJ1UwS5vmKTbUYmIafClrjG517kn0xxwLQMcvLYgitZn7LU6sN/3HgRZLYNy+V/KxEHD28i4A0TMg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1",
+ "@unocss/preset-mini": "66.3.1",
+ "@unocss/rule-utils": "66.3.1"
+ }
+ },
+ "node_modules/@unocss/preset-uno": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-66.3.1.tgz",
+ "integrity": "sha512-yVyjjt8vFYDnRL9UyaCt7dLPhclsgSjeIhe3sv/5fseyW9B3xorddOgnASxHr7QBoxOqVgNFudaIwe9L7/8Vsw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1",
+ "@unocss/preset-wind3": "66.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/preset-web-fonts": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-66.3.1.tgz",
+ "integrity": "sha512-aZQCPo11mOLx+JNdQlslFAtKB2Q3Aef9pAtk1WvqCFboErKFaoppaRThciBRM0GqqiNOHAplplw5lzHF6+lzbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1",
+ "ofetch": "^1.4.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/preset-wind": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-66.3.1.tgz",
+ "integrity": "sha512-gu74NXejsc/9BA02Y3l9iZUx6J6Fcff9LtsMOzttGxPyJLLqjMoXRzfUbeKbB1nCgEKCrXgr4UciPnstngVjmg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1",
+ "@unocss/preset-wind3": "66.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/preset-wind3": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/preset-wind3/-/preset-wind3-66.3.1.tgz",
+ "integrity": "sha512-1WUrhK/4uOmOjNC1/XwTvn/zS3SEnRNeMbp76y8CQiM6K/2L9wVp0XXhecrQ213vZixMG8zmbvIsZa/d4Di5ug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1",
+ "@unocss/preset-mini": "66.3.1",
+ "@unocss/rule-utils": "66.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/preset-wind4": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/preset-wind4/-/preset-wind4-66.3.1.tgz",
+ "integrity": "sha512-E02mA4wq2d/+bTvDl3AvDfOz9XI3c7lM8XBjScJ2eg50T1Cor4HwNtmw3N2NSvZK7oyU0EzynIX1+PdNVCJtFw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1",
+ "@unocss/extractor-arbitrary-variants": "66.3.1",
+ "@unocss/rule-utils": "66.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/reset": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-66.3.1.tgz",
+ "integrity": "sha512-XZdzIu4as1ZJ/dblWhBY+aGcoRLCXYewZg/lQOFVxq0tEn5+P3GUflY0HpsJrELxtt9oRSM9nT/f/fdqPtr/GQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/rule-utils": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-66.3.1.tgz",
+ "integrity": "sha512-URpCuWWRc+KfBZrnISiKaRO4R/XvxuEw/kHnv2JbhkSavdO0t0R+Rf/ACSKujmGnqpYshed15Q/BtU6YhFjZ5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "^66.3.1",
+ "magic-string": "^0.30.17"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/transformer-attributify-jsx": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-66.3.1.tgz",
+ "integrity": "sha512-bNkT+OxvZnADkPTpHptO7I6CvghlAR9SOcAZ32YHEzHlSnPgrSwmgte2+gMCGSncDmC16nsFERhhbJUV7ETxYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/transformer-compile-class": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-66.3.1.tgz",
+ "integrity": "sha512-JaybUxOLSDHgdoG3FRGSvDXirY0XvyfwDAgzJ9r/RkMV7cCT6Ak64/MF5mrEcqNoxbIm4DNSiKatjoEKSIfmqw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/transformer-directives": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-66.3.1.tgz",
+ "integrity": "sha512-AeozMJXZ1Vl0+W52dXFafK0ZsEiasyQeZXHFd+L7vrMod1CTVunNX3npYytkuPuyS941uj7s1gY4ycx0dY6Isg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1",
+ "@unocss/rule-utils": "66.3.1",
+ "css-tree": "^3.1.0"
+ }
+ },
+ "node_modules/@unocss/transformer-variant-group": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-66.3.1.tgz",
+ "integrity": "sha512-vn4uxb0YDSRhLgBZ1LrwzlsKEb9eV0PVil7+czcga4JV97O62DeiojWGlIBckPkqmKt9IyATjpBZhYci410hnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/core": "66.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@unocss/vite": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-66.3.1.tgz",
+ "integrity": "sha512-saf3KPlGGUhS8NP7Dt/nQpplNTHug5uMRM2gOBijtuCwb+ytt4pGKqhpqPnUzm2whKez8VKNxAnTMQgszG2rHQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.3.0",
+ "@unocss/config": "66.3.1",
+ "@unocss/core": "66.3.1",
+ "@unocss/inspector": "66.3.1",
+ "chokidar": "^3.6.0",
+ "magic-string": "^0.30.17",
+ "pathe": "^2.0.3",
+ "tinyglobby": "^0.2.14",
+ "unplugin-utils": "^0.2.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0"
+ }
+ },
+ "node_modules/@unocss/vite/node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/@unocss/vite/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@unocss/vite/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@unocss/vite/node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
"node_modules/@vitejs/plugin-vue": {
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz",
@@ -4646,6 +5221,20 @@
"node": ">= 8"
}
},
+ "node_modules/css-tree": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz",
+ "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.12.2",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
"node_modules/css.escape": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
@@ -4924,6 +5513,13 @@
"node": ">= 0.4"
}
},
+ "node_modules/duplexer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
+ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -5879,6 +6475,22 @@
"node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
}
},
+ "node_modules/gzip-size": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
+ "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "duplexer": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/happy-dom": {
"version": "18.0.1",
"resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-18.0.1.tgz",
@@ -7124,6 +7736,13 @@
"node": ">= 0.4"
}
},
+ "node_modules/mdn-data": {
+ "version": "2.12.2",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz",
+ "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
"node_modules/memorystream": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
@@ -7586,6 +8205,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/ofetch": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz",
+ "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "destr": "^2.0.3",
+ "node-fetch-native": "^1.6.4",
+ "ufo": "^1.5.4"
+ }
+ },
"node_modules/ohash": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
@@ -9930,6 +10561,22 @@
"integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==",
"license": "MIT"
},
+ "node_modules/unconfig": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-7.3.2.tgz",
+ "integrity": "sha512-nqG5NNL2wFVGZ0NA/aCFw0oJ2pxSf1lwg4Z5ill8wd7K4KX/rQbHlwbh+bjctXL5Ly1xtzHenHGOK0b+lG6JVg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@quansync/fs": "^0.1.1",
+ "defu": "^6.1.4",
+ "jiti": "^2.4.2",
+ "quansync": "^0.2.8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
"node_modules/unctx": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/unctx/-/unctx-2.4.1.tgz",
@@ -10006,6 +10653,52 @@
"node": ">= 4.0.0"
}
},
+ "node_modules/unocss": {
+ "version": "66.3.1",
+ "resolved": "https://registry.npmjs.org/unocss/-/unocss-66.3.1.tgz",
+ "integrity": "sha512-BlDiaVd6EWGjicbV+c4OX4pIHde87aNFImvD/O//vTc+LhB+gKpyFhaH1sEk/cwuvmO4qJgS9RtZROdduv4+gQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@unocss/astro": "66.3.1",
+ "@unocss/cli": "66.3.1",
+ "@unocss/core": "66.3.1",
+ "@unocss/postcss": "66.3.1",
+ "@unocss/preset-attributify": "66.3.1",
+ "@unocss/preset-icons": "66.3.1",
+ "@unocss/preset-mini": "66.3.1",
+ "@unocss/preset-tagify": "66.3.1",
+ "@unocss/preset-typography": "66.3.1",
+ "@unocss/preset-uno": "66.3.1",
+ "@unocss/preset-web-fonts": "66.3.1",
+ "@unocss/preset-wind": "66.3.1",
+ "@unocss/preset-wind3": "66.3.1",
+ "@unocss/preset-wind4": "66.3.1",
+ "@unocss/transformer-attributify-jsx": "66.3.1",
+ "@unocss/transformer-compile-class": "66.3.1",
+ "@unocss/transformer-directives": "66.3.1",
+ "@unocss/transformer-variant-group": "66.3.1",
+ "@unocss/vite": "66.3.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@unocss/webpack": "66.3.1",
+ "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@unocss/webpack": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
+ }
+ },
"node_modules/unplugin": {
"version": "2.3.5",
"resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.5.tgz",
@@ -10126,51 +10819,6 @@
"node": ">=18.12.0"
}
},
- "node_modules/unplugin-icons": {
- "version": "22.1.0",
- "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-22.1.0.tgz",
- "integrity": "sha512-ect2ZNtk1Zgwb0NVHd0C1IDW/MV+Jk/xaq4t8o6rYdVS3+L660ZdD5kTSQZvsgdwCvquRw+/wYn75hsweRjoIA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@antfu/install-pkg": "^1.0.0",
- "@iconify/utils": "^2.3.0",
- "debug": "^4.4.0",
- "local-pkg": "^1.0.0",
- "unplugin": "^2.2.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "@svgr/core": ">=7.0.0",
- "@svgx/core": "^1.0.1",
- "@vue/compiler-sfc": "^3.0.2 || ^2.7.0",
- "svelte": "^3.0.0 || ^4.0.0 || ^5.0.0",
- "vue-template-compiler": "^2.6.12",
- "vue-template-es2015-compiler": "^1.9.0"
- },
- "peerDependenciesMeta": {
- "@svgr/core": {
- "optional": true
- },
- "@svgx/core": {
- "optional": true
- },
- "@vue/compiler-sfc": {
- "optional": true
- },
- "svelte": {
- "optional": true
- },
- "vue-template-compiler": {
- "optional": true
- },
- "vue-template-es2015-compiler": {
- "optional": true
- }
- }
- },
"node_modules/unplugin-utils": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.2.4.tgz",
@@ -10753,6 +11401,16 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/vue-flow-layout": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/vue-flow-layout/-/vue-flow-layout-0.1.1.tgz",
+ "integrity": "sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "vue": "^3.4.37"
+ }
+ },
"node_modules/vue-inbrowser-compiler-independent-utils": {
"version": "4.71.1",
"resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-independent-utils/-/vue-inbrowser-compiler-independent-utils-4.71.1.tgz",
diff --git a/next-ui/package.json b/next-ui/package.json
index 104ec202..a12cf52f 100644
--- a/next-ui/package.json
+++ b/next-ui/package.json
@@ -52,6 +52,8 @@
"@testing-library/vue": "^8.1.0",
"@tsconfig/node22": "^22.0.2",
"@types/node": "^24.0.4",
+ "@unocss/eslint-config": "^66.3.1",
+ "@unocss/preset-icons": "^66.3.1",
"@vitejs/plugin-vue": "^5.2.4",
"@vitest/browser": "^3.2.4",
"@vitest/coverage-v8": "^3.2.4",
@@ -75,9 +77,9 @@
"sass-embedded": "^1.89.2",
"storybook": "^9.0.13",
"typescript": "^5.8.3",
+ "unocss": "^66.3.1",
"unplugin-auto-import": "^19.3.0",
"unplugin-fonts": "^1.1.1",
- "unplugin-icons": "^22.1.0",
"unplugin-vue-components": "^28.7.0",
"unplugin-vue-router": "^0.12.0",
"vite": "^6.3.5",
diff --git a/next-ui/src/auto-imports.d.ts b/next-ui/src/auto-imports.d.ts
index 5c7eea85..e4f89c5f 100644
--- a/next-ui/src/auto-imports.d.ts
+++ b/next-ui/src/auto-imports.d.ts
@@ -57,7 +57,6 @@ declare global {
const useCssModule: typeof import('vue')['useCssModule']
const useCssVars: typeof import('vue')['useCssVars']
const useId: typeof import('vue')['useId']
- const useLink: (typeof import('vue-router'))['useLink']
const useModel: typeof import('vue')['useModel']
const useRoute: typeof import('vue-router')['useRoute']
const useRouter: typeof import('vue-router')['useRouter']
diff --git a/next-ui/src/components/BuildCommit.vue b/next-ui/src/components/BuildCommit.vue
index 781e3db7..a28f0564 100644
--- a/next-ui/src/components/BuildCommit.vue
+++ b/next-ui/src/components/BuildCommit.vue
@@ -1,7 +1,7 @@
+
diff --git a/next-ui/src/components/app/drawer/menu/History.vue b/next-ui/src/components/app/drawer/menu/History.vue
index 6fac4b88..b548f980 100644
--- a/next-ui/src/components/app/drawer/menu/History.vue
+++ b/next-ui/src/components/app/drawer/menu/History.vue
@@ -8,10 +8,8 @@
id: 'l/To3S',
})
"
- :prepend-icon="mdiClockTimeFourOutline"
+ prepend-icon="i-mdi:clock-time-four-outline"
/>
-
+
diff --git a/next-ui/src/components/app/drawer/menu/Import.vue b/next-ui/src/components/app/drawer/menu/Import.vue
index 9fe731b9..544d3343 100644
--- a/next-ui/src/components/app/drawer/menu/Import.vue
+++ b/next-ui/src/components/app/drawer/menu/Import.vue
@@ -10,7 +10,7 @@
id: 'N7+QXi',
})
"
- :prepend-icon="mdiImport"
+ prepend-icon="i-mdi:import"
/>
@@ -38,6 +38,4 @@
-
+
diff --git a/next-ui/src/components/app/drawer/menu/Logout.vue b/next-ui/src/components/app/drawer/menu/Logout.vue
index ee18792c..e0251ceb 100644
--- a/next-ui/src/components/app/drawer/menu/Logout.vue
+++ b/next-ui/src/components/app/drawer/menu/Logout.vue
@@ -7,13 +7,12 @@
id: 'ti4Pzo',
})
"
- :prepend-icon="mdiPower"
+ prepend-icon="i-mdi:power"
@click="performLogout"
/>
+
diff --git a/next-ui/src/components/app/drawer/menu/Server.vue b/next-ui/src/components/app/drawer/menu/Server.vue
index e83c7a88..93a24da6 100644
--- a/next-ui/src/components/app/drawer/menu/Server.vue
+++ b/next-ui/src/components/app/drawer/menu/Server.vue
@@ -18,7 +18,7 @@
floating
color="info"
>
-
+
@@ -99,7 +99,6 @@