From 509740e2a04888e49ba37a39441d9675c01ae5b0 Mon Sep 17 00:00:00 2001 From: Sergey Karmanov Date: Mon, 25 May 2026 02:15:34 +0300 Subject: [PATCH] =?UTF-8?q?refactor:=20=D0=BD=D0=B0=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B8=D0=BB=20=D0=BB=D0=B8=D0=BD=D1=82=D0=B5=D1=80=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=82=D0=B8=D0=B2=20=D1=81=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D1=82=D1=81=D0=BA=D0=BE=D0=B3=D0=BE=20css?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/eslint.config.ts | 2 + frontend/package.json | 1 + frontend/pnpm-lock.yaml | 42 +++++++++++ frontend/src/components/layout/AppTopbar.vue | 3 - frontend/src/components/ui/CoinChip.vue | 4 - frontend/src/views/AboutView.vue | 2 +- .../src/views/admin/AdminDashboardView.vue | 50 ------------- frontend/src/views/auth/LoginView.vue | 74 ------------------- frontend/src/views/student/DashboardView.vue | 9 --- .../views/teacher/TeacherAnalyticsView.vue | 5 -- .../views/teacher/TeacherDashboardView.vue | 9 --- 11 files changed, 46 insertions(+), 155 deletions(-) diff --git a/frontend/eslint.config.ts b/frontend/eslint.config.ts index 89fdc89..4b4d3f3 100644 --- a/frontend/eslint.config.ts +++ b/frontend/eslint.config.ts @@ -3,6 +3,7 @@ import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescri import pluginVue from 'eslint-plugin-vue' import pluginOxlint from 'eslint-plugin-oxlint' import skipFormatting from 'eslint-config-prettier/flat' +import vueScopedCss from 'eslint-plugin-vue-scoped-css' // To allow more languages other than `ts` in `.vue` files, uncomment the following lines: // import { configureVueProject } from '@vue/eslint-config-typescript' @@ -19,6 +20,7 @@ export default defineConfigWithVueTs( ...pluginVue.configs['flat/essential'], vueTsConfigs.recommended, + ...vueScopedCss.configs.recommended, ...pluginOxlint.buildFromOxlintConfigFile('.oxlintrc.json'), diff --git a/frontend/package.json b/frontend/package.json index 38aad31..759a3bb 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -30,6 +30,7 @@ "eslint-config-prettier": "^10.1.8", "eslint-plugin-oxlint": "~1.60.0", "eslint-plugin-vue": "~10.8.0", + "eslint-plugin-vue-scoped-css": "^3.1.0", "jiti": "^2.6.1", "npm-run-all2": "^8.0.4", "oxlint": "~1.60.0", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index d623233..e9d1756 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -45,6 +45,9 @@ importers: eslint-plugin-vue: specifier: ~10.8.0 version: 10.8.0(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.7.0))) + eslint-plugin-vue-scoped-css: + specifier: ^3.1.0 + version: 3.1.0(eslint@10.3.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.7.0))) jiti: specifier: ^2.6.1 version: 2.7.0 @@ -863,6 +866,9 @@ packages: error-stack-parser-es@1.0.5: resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} + es-toolkit@1.46.1: + resolution: {integrity: sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==} + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -882,6 +888,20 @@ packages: peerDependencies: oxlint: ~1.60.0 + eslint-plugin-vue-scoped-css@3.1.0: + resolution: {integrity: sha512-R9XLrIZaP6QGz9b4kO2K4+lP4NcO2TKcw71zBtIYCoqqTk5ja1ySruYAllBT2LPIJVQ4NZaB2IFSvLjLEpYqQA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: '>=9.38.0' + postcss-scss: ^4.0.3 + postcss-styl: ^0.12.0 + vue-eslint-parser: '>=7.1.0' + peerDependenciesMeta: + postcss-scss: + optional: true + postcss-styl: + optional: true + eslint-plugin-vue@10.8.0: resolution: {integrity: sha512-f1J/tcbnrpgC8suPN5AtdJ5MQjuXbSU9pGRSSYAuF3SHoiYCOdEX6O22pLaRyLHXvDcOe+O5ENgc1owQ587agA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1327,6 +1347,12 @@ packages: pkg-types@2.3.1: resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + postcss-selector-parser@7.1.1: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} @@ -2430,6 +2456,8 @@ snapshots: error-stack-parser-es@1.0.5: {} + es-toolkit@1.46.1: {} + escalade@3.2.0: {} escape-string-regexp@4.0.0: {} @@ -2443,6 +2471,16 @@ snapshots: jsonc-parser: 3.3.1 oxlint: 1.60.0 + eslint-plugin-vue-scoped-css@3.1.0(eslint@10.3.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.7.0))): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) + es-toolkit: 1.46.1 + eslint: 10.3.0(jiti@2.7.0) + postcss: 8.5.14 + postcss-safe-parser: 7.0.1(postcss@8.5.14) + postcss-selector-parser: 7.1.1 + vue-eslint-parser: 10.4.0(eslint@10.3.0(jiti@2.7.0)) + eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.7.0))): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) @@ -2851,6 +2889,10 @@ snapshots: exsolve: 1.0.8 pathe: 2.0.3 + postcss-safe-parser@7.0.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 diff --git a/frontend/src/components/layout/AppTopbar.vue b/frontend/src/components/layout/AppTopbar.vue index 46656eb..af1709f 100644 --- a/frontend/src/components/layout/AppTopbar.vue +++ b/frontend/src/components/layout/AppTopbar.vue @@ -297,9 +297,6 @@ onBeforeUnmount(() => { flex-shrink: 0; cursor: pointer; } -.brand-icon { - color: var(--color-text); -} .brand-name { font-size: 20px; font-weight: 800; diff --git a/frontend/src/components/ui/CoinChip.vue b/frontend/src/components/ui/CoinChip.vue index 9325b84..d9e7b4b 100644 --- a/frontend/src/components/ui/CoinChip.vue +++ b/frontend/src/components/ui/CoinChip.vue @@ -46,8 +46,4 @@ defineEmits<{ click: [] }>() font-size: 14px; color: var(--color-coin-chip-text); } -.coin-label { - font-size: 12px; - color: var(--color-coin-chip-label); -} diff --git a/frontend/src/views/AboutView.vue b/frontend/src/views/AboutView.vue index 756ad2a..79c9b0f 100644 --- a/frontend/src/views/AboutView.vue +++ b/frontend/src/views/AboutView.vue @@ -4,7 +4,7 @@ - diff --git a/frontend/src/views/teacher/TeacherDashboardView.vue b/frontend/src/views/teacher/TeacherDashboardView.vue index c79049e..778eec1 100644 --- a/frontend/src/views/teacher/TeacherDashboardView.vue +++ b/frontend/src/views/teacher/TeacherDashboardView.vue @@ -104,15 +104,6 @@ watch(() => auth.user?.id, fetchTeacherLectures) grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; } -.visibility { - display: flex; - flex-direction: column; - gap: 8px; -} -.visibility-meta { - font-size: 13px; - color: var(--color-text-secondary); -} .upcoming { display: flex; flex-direction: column;