feat(src/assets/icons/icon-names.ts): добавляет новый иконку 'sprite' в список иконок

 feat(src/views/dev/TestView.vue): упрощает типизацию ответа от API для загрузки профилей
 feat(src/assets/icons/sprite.svg): добавляет новые иконки в спрайт
♻️ refactor(tsconfig.json): удаляет базовый URL из конфигурации TypeScript
This commit is contained in:
Oscar
2026-06-24 16:24:41 +03:00
parent a1261ce0db
commit ed51218249
6 changed files with 1395 additions and 1223 deletions

View File

@@ -13,35 +13,35 @@
"gen:api": "npx swagger-typescript-api@12.0.4 -p http://localhost:1337/api/docs-json -o ./src/api -n api.ts --axios --unwrap-response-data --extract-request-params --extract-request-body --single-http-client" "gen:api": "npx swagger-typescript-api@12.0.4 -p http://localhost:1337/api/docs-json -o ./src/api -n api.ts --axios --unwrap-response-data --extract-request-params --extract-request-body --single-http-client"
}, },
"dependencies": { "dependencies": {
"@floating-ui/vue": "^1.1.5", "@floating-ui/vue": "^2.0.0",
"@tanstack/vue-query": "^5.101.0", "@tanstack/vue-query": "^5.101.1",
"@tauri-apps/api": "^2", "@tauri-apps/api": "^2.11.1",
"@tauri-apps/plugin-dialog": "^2", "@tauri-apps/plugin-dialog": "^2.7.1",
"@tauri-apps/plugin-shell": "^2", "@tauri-apps/plugin-shell": "^2.3.5",
"@vuelidate/core": "^2.0.3", "@vuelidate/core": "^2.0.3",
"@vuelidate/validators": "^2.0.4", "@vuelidate/validators": "^2.0.4",
"@vueuse/core": "^11.0.0", "@vueuse/core": "^14.3.0",
"axios": "^1.7.7", "axios": "^1.18.1",
"esbuild": "^0.28.0", "esbuild": "^0.28.1",
"gsap": "^3.12.5", "gsap": "^3.15.0",
"leaflet": "^1.9.4", "leaflet": "^1.9.4",
"socket.io-client": "^4.8.3", "socket.io-client": "^4.8.3",
"vue": "^3.5.6", "vue": "^3.5.38",
"vue-router": "^4.4.5" "vue-router": "^5.1.0"
}, },
"devDependencies": { "devDependencies": {
"@antfu/eslint-config": "^9.0.0", "@antfu/eslint-config": "^9.0.0",
"@tailwindcss/vite": "^4.1.0", "@tailwindcss/vite": "^4.3.1",
"@tauri-apps/cli": "^2", "@tauri-apps/cli": "^2.11.3",
"@types/leaflet": "^1.9.12", "@types/leaflet": "^1.9.21",
"@vitejs/plugin-vue": "^5.1.4", "@vitejs/plugin-vue": "^6.0.7",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.5.0",
"eslint": "^10.4.1", "eslint": "^10.5.0",
"eslint-plugin-format": "^2.0.1", "eslint-plugin-format": "^2.0.1",
"sass": "^1.79.3", "sass": "^1.101.0",
"tailwindcss": "^4.1.0", "tailwindcss": "^4.3.1",
"typescript": "^5.6.2", "typescript": "^6.0.3",
"vite": "^6.0.3", "vite": "^8.1.0",
"vue-tsc": "^2.1.6" "vue-tsc": "^3.3.5"
} }
} }

2379
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -15,5 +15,6 @@ export type IconName =
| 'plus' | 'plus'
| 'search' | 'search'
| 'send' | 'send'
| 'sprite'
| 'trash' | 'trash'
| 'x' | 'x'

View File

@@ -53,6 +53,195 @@
<path d="M22 2L11 13"/> <path d="M22 2L11 13"/>
<path d="M22 2L15 22l-4-9-9-4 20-7z"/> <path d="M22 2L15 22l-4-9-9-4 20-7z"/>
</symbol> </symbol>
<symbol id="icon-sprite" viewBox="0 0 24 24">
<symbol id="icon-calendar" viewBox="0 0 24 24">
<path d="M8 2v4M16 2v4M3 10h18M3 6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
</symbol>
<symbol id="icon-chat" viewBox="0 0 24 24">
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
</symbol>
<symbol id="icon-check" viewBox="0 0 24 24">
<path d="M20 6L9 17l-5-5"/>
</symbol>
<symbol id="icon-chevron-left" viewBox="0 0 24 24">
<path d="M15 18l-6-6 6-6"/>
</symbol>
<symbol id="icon-chevron-right" viewBox="0 0 24 24">
<path d="M9 18l6-6-6-6"/>
</symbol>
<symbol id="icon-edit" viewBox="0 0 24 24">
<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/>
<path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/>
</symbol>
<symbol id="icon-flag" viewBox="0 0 24 24">
<path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1zM4 22v-7"/>
</symbol>
<symbol id="icon-grid" viewBox="0 0 24 24">
<path d="M3 3h7v7H3zm11 0h7v7h-7zM3 14h7v7H3zm11 0h7v7h-7z"/>
</symbol>
<symbol id="icon-heart" viewBox="0 0 24 24">
<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/>
</symbol>
<symbol id="icon-image" viewBox="0 0 24 24">
<rect x="3" y="3" width="18" height="18" rx="2"/>
<circle cx="8.5" cy="8.5" r="1.5"/>
<path d="M21 15l-5-5L5 21"/>
</symbol>
<symbol id="icon-mic" viewBox="0 0 24 24">
<rect x="9" y="1" width="6" height="11" rx="3"/>
<path d="M19 10v2a7 7 0 0 1-14 0v-2"/>
<path d="M12 19v4M8 23h8"/>
</symbol>
<symbol id="icon-person" viewBox="0 0 24 24">
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
<circle cx="12" cy="7" r="4"/>
</symbol>
<symbol id="icon-plus" viewBox="0 0 24 24">
<path d="M12 5v14M5 12h14"/>
</symbol>
<symbol id="icon-search" viewBox="0 0 24 24">
<circle cx="11" cy="11" r="7"/>
<path d="M21 21l-4.35-4.35"/>
</symbol>
<symbol id="icon-send" viewBox="0 0 24 24">
<path d="M22 2L11 13"/>
<path d="M22 2L15 22l-4-9-9-4 20-7z"/>
</symbol>
<symbol id="icon-sprite" viewBox="0 0 24 24">
<symbol id="icon-calendar" viewBox="0 0 24 24">
<path d="M8 2v4M16 2v4M3 10h18M3 6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
</symbol>
<symbol id="icon-chat" viewBox="0 0 24 24">
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
</symbol>
<symbol id="icon-check" viewBox="0 0 24 24">
<path d="M20 6L9 17l-5-5"/>
</symbol>
<symbol id="icon-chevron-left" viewBox="0 0 24 24">
<path d="M15 18l-6-6 6-6"/>
</symbol>
<symbol id="icon-chevron-right" viewBox="0 0 24 24">
<path d="M9 18l6-6-6-6"/>
</symbol>
<symbol id="icon-edit" viewBox="0 0 24 24">
<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/>
<path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/>
</symbol>
<symbol id="icon-flag" viewBox="0 0 24 24">
<path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1zM4 22v-7"/>
</symbol>
<symbol id="icon-grid" viewBox="0 0 24 24">
<path d="M3 3h7v7H3zm11 0h7v7h-7zM3 14h7v7H3zm11 0h7v7h-7z"/>
</symbol>
<symbol id="icon-heart" viewBox="0 0 24 24">
<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/>
</symbol>
<symbol id="icon-image" viewBox="0 0 24 24">
<rect x="3" y="3" width="18" height="18" rx="2"/>
<circle cx="8.5" cy="8.5" r="1.5"/>
<path d="M21 15l-5-5L5 21"/>
</symbol>
<symbol id="icon-mic" viewBox="0 0 24 24">
<rect x="9" y="1" width="6" height="11" rx="3"/>
<path d="M19 10v2a7 7 0 0 1-14 0v-2"/>
<path d="M12 19v4M8 23h8"/>
</symbol>
<symbol id="icon-person" viewBox="0 0 24 24">
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
<circle cx="12" cy="7" r="4"/>
</symbol>
<symbol id="icon-plus" viewBox="0 0 24 24">
<path d="M12 5v14M5 12h14"/>
</symbol>
<symbol id="icon-search" viewBox="0 0 24 24">
<circle cx="11" cy="11" r="7"/>
<path d="M21 21l-4.35-4.35"/>
</symbol>
<symbol id="icon-send" viewBox="0 0 24 24">
<path d="M22 2L11 13"/>
<path d="M22 2L15 22l-4-9-9-4 20-7z"/>
</symbol>
<symbol id="icon-sprite" viewBox="0 0 24 24">
<symbol id="icon-calendar" viewBox="0 0 24 24">
<path d="M8 2v4M16 2v4M3 10h18M3 6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
</symbol>
<symbol id="icon-chat" viewBox="0 0 24 24">
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
</symbol>
<symbol id="icon-check" viewBox="0 0 24 24">
<path d="M20 6L9 17l-5-5"/>
</symbol>
<symbol id="icon-chevron-left" viewBox="0 0 24 24">
<path d="M15 18l-6-6 6-6"/>
</symbol>
<symbol id="icon-chevron-right" viewBox="0 0 24 24">
<path d="M9 18l6-6-6-6"/>
</symbol>
<symbol id="icon-edit" viewBox="0 0 24 24">
<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/>
<path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/>
</symbol>
<symbol id="icon-flag" viewBox="0 0 24 24">
<path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1zM4 22v-7"/>
</symbol>
<symbol id="icon-grid" viewBox="0 0 24 24">
<path d="M3 3h7v7H3zm11 0h7v7h-7zM3 14h7v7H3zm11 0h7v7h-7z"/>
</symbol>
<symbol id="icon-heart" viewBox="0 0 24 24">
<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/>
</symbol>
<symbol id="icon-image" viewBox="0 0 24 24">
<rect x="3" y="3" width="18" height="18" rx="2"/>
<circle cx="8.5" cy="8.5" r="1.5"/>
<path d="M21 15l-5-5L5 21"/>
</symbol>
<symbol id="icon-mic" viewBox="0 0 24 24">
<rect x="9" y="1" width="6" height="11" rx="3"/>
<path d="M19 10v2a7 7 0 0 1-14 0v-2"/>
<path d="M12 19v4M8 23h8"/>
</symbol>
<symbol id="icon-person" viewBox="0 0 24 24">
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
<circle cx="12" cy="7" r="4"/>
</symbol>
<symbol id="icon-plus" viewBox="0 0 24 24">
<path d="M12 5v14M5 12h14"/>
</symbol>
<symbol id="icon-search" viewBox="0 0 24 24">
<circle cx="11" cy="11" r="7"/>
<path d="M21 21l-4.35-4.35"/>
</symbol>
<symbol id="icon-send" viewBox="0 0 24 24">
<path d="M22 2L11 13"/>
<path d="M22 2L15 22l-4-9-9-4 20-7z"/>
</symbol>
<symbol id="icon-trash" viewBox="0 0 24 24">
<path d="M3 6h18"/>
<path d="M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2"/>
<path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"/>
</symbol>
<symbol id="icon-x" viewBox="0 0 24 24">
<path d="M18 6L6 18M6 6l12 12"/>
</symbol>
</symbol>
<symbol id="icon-trash" viewBox="0 0 24 24">
<path d="M3 6h18"/>
<path d="M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2"/>
<path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"/>
</symbol>
<symbol id="icon-x" viewBox="0 0 24 24">
<path d="M18 6L6 18M6 6l12 12"/>
</symbol>
</symbol>
<symbol id="icon-trash" viewBox="0 0 24 24">
<path d="M3 6h18"/>
<path d="M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2"/>
<path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"/>
</symbol>
<symbol id="icon-x" viewBox="0 0 24 24">
<path d="M18 6L6 18M6 6l12 12"/>
</symbol>
</symbol>
<symbol id="icon-trash" viewBox="0 0 24 24"> <symbol id="icon-trash" viewBox="0 0 24 24">
<path d="M3 6h18"/> <path d="M3 6h18"/>
<path d="M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2"/> <path d="M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2"/>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -149,7 +149,7 @@ function addLog(type: LogEntry['type'], message: string) {
async function loadProfiles() { async function loadProfiles() {
loadingProfiles.value = true loadingProfiles.value = true
try { try {
const res = await axiosInstance.get<{ data: DevProfile[] }>('/api/v1/dev/profiles') const res = await axiosInstance.get<DevProfile[]>('/api/v1/dev/profiles')
profiles.value = res.data profiles.value = res.data
addLog('info', `Загружено профилей: ${profiles.value.length}`) addLog('info', `Загружено профилей: ${profiles.value.length}`)
} }
@@ -181,7 +181,7 @@ async function doReset(ids: string[]) {
return return
resetting.value = true resetting.value = true
try { try {
const res = await axiosInstance.delete<{ data: { deleted: Record<string, number>, reset: number } }>( const res = await axiosInstance.delete<{ deleted: Record<string, number>, reset: number }>(
`/api/v1/dev/reset-flow?profileIds=${ids.join(',')}`, `/api/v1/dev/reset-flow?profileIds=${ids.join(',')}`,
) )
const { deleted, reset } = res.data const { deleted, reset } = res.data

View File

@@ -4,7 +4,6 @@
"jsx": "preserve", "jsx": "preserve",
"lib": ["ES2020", "DOM", "DOM.Iterable"], "lib": ["ES2020", "DOM", "DOM.Iterable"],
"useDefineForClassFields": true, "useDefineForClassFields": true,
"baseUrl": ".",
"module": "ESNext", "module": "ESNext",
"moduleResolution": "bundler", "moduleResolution": "bundler",
"paths": { "paths": {