refactor: натравил форматтер на весь фронт

This commit is contained in:
serega404 committed 2026-05-25 02:06:11 +03:00
1 parent 24df65a13c
commit 98aaa86ec4
43 files changed
+1947 -657

No files matched your search

+70 -25
View File
@@ -41,8 +41,8 @@ const roleButtons = computed(() => {
if (!auth.user) return []
return auth.user.roles
.filter(role => role !== auth.user?.activeRole)
.map(role => ({
.filter((role) => role !== auth.user?.activeRole)
.map((role) => ({
role,
label: roleLabels[role],
to: roleTargets[role],
@@ -137,8 +137,7 @@ onBeforeUnmount(() => {
<span class="brand-name">UniVerse</span>
</div>
<div class="topbar-center">
</div>
<div class="topbar-center"></div>
<div class="topbar-right">
<CoinChip
@@ -172,7 +171,12 @@ onBeforeUnmount(() => {
<span class="slot-value">{{ enrollmentSlotText }}</span>
</button>
<button class="notif-btn" type="button" aria-label="Уведомления" @click="$router.push('/notifications')">
<button
class="notif-btn"
type="button"
aria-label="Уведомления"
@click="$router.push('/notifications')"
>
<AppIcon icon="bell" :size="18" />
<span class="notif-dot" v-if="auth.user && unreadCount > 0">
{{ unreadCount }}
@@ -192,7 +196,12 @@ onBeforeUnmount(() => {
<span class="avatar-name" v-if="auth.user">{{ formatUserName(auth.user.name) }}</span>
</button>
<div v-if="isProfileMenuOpen" class="profile-dropdown" role="menu" @keydown.esc.prevent="closeProfileMenu">
<div
v-if="isProfileMenuOpen"
class="profile-dropdown"
role="menu"
@keydown.esc.prevent="closeProfileMenu"
>
<button class="profile-menu-item" type="button" role="menuitem" @click="openProfile">
<AppIcon icon="user" :size="16" />
Профиль
@@ -208,7 +217,12 @@ onBeforeUnmount(() => {
role="menuitem"
@click="switchToRole(item.role, item.to)"
>
<AppIcon :icon="item.role === 'admin' ? 'shield' : item.role === 'teacher' ? 'chart-bar' : 'home'" :size="16" />
<AppIcon
:icon="
item.role === 'admin' ? 'shield' : item.role === 'teacher' ? 'chart-bar' : 'home'
"
:size="16"
/>
{{ item.label }}
</button>
</div>
@@ -223,7 +237,8 @@ onBeforeUnmount(() => {
<ModalDialog v-model="isCoinDialogOpen" title="Монеты UniVerse" icon="coin" size="sm">
<p>
В будущем монеты можно будет использовать во внутреннем магазине. Сейчас магазин еще не запущен, поэтому монеты просто копятся на вашем балансе.
В будущем монеты можно будет использовать во внутреннем магазине. Сейчас магазин еще не
запущен, поэтому монеты просто копятся на вашем балансе.
</p>
<template #footer>
<button class="btn-primary" type="button" @click="closeCoinDialog">ОК</button>
@@ -232,8 +247,8 @@ onBeforeUnmount(() => {
<ModalDialog v-model="isLevelDialogOpen" title="Уровень студента" icon="star" size="sm">
<p>
Уровень показывает ваш прогресс в UniVerse. Он растет вместе с активностью: посещением открытых лекций,
полезными отзывами и достижениями.
Уровень показывает ваш прогресс в UniVerse. Он растет вместе с активностью: посещением
открытых лекций, полезными отзывами и достижениями.
</p>
<template #footer>
<button class="btn-primary" type="button" @click="closeLevelDialog">Понятно</button>
@@ -242,11 +257,14 @@ onBeforeUnmount(() => {
<ModalDialog v-model="isSlotsDialogOpen" title="Слоты записи" icon="calendar" size="sm">
<p>
Слоты показывают, сколько открытых лекций уже занято в вашем текущем лимите. Когда лимит заполнен,
освободите слот отменой записи или повышайте уровень, чтобы получить больше возможностей.
Слоты показывают, сколько открытых лекций уже занято в вашем текущем лимите. Когда лимит
заполнен, освободите слот отменой записи или повышайте уровень, чтобы получить больше
возможностей.
</p>
<template #footer>
<button class="btn-secondary" type="button" @click="openMyLecturesFromSlotsDialog">Мои записи</button>
<button class="btn-secondary" type="button" @click="openMyLecturesFromSlotsDialog">
Мои записи
</button>
<button class="btn-primary" type="button" @click="closeSlotsDialog">Понятно</button>
</template>
</ModalDialog>
@@ -279,7 +297,9 @@ onBeforeUnmount(() => {
flex-shrink: 0;
cursor: pointer;
}
.brand-icon { color: var(--color-text); }
.brand-icon {
color: var(--color-text);
}
.brand-name {
font-size: 20px;
font-weight: 800;
@@ -288,7 +308,10 @@ onBeforeUnmount(() => {
-webkit-text-fill-color: transparent;
background-clip: text;
}
.topbar-center { flex: 1; max-width: 400px; }
.topbar-center {
flex: 1;
max-width: 400px;
}
.topbar-right {
display: flex;
align-items: center;
@@ -308,7 +331,10 @@ onBeforeUnmount(() => {
cursor: pointer;
font: inherit;
white-space: nowrap;
transition: background-color 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
transition:
background-color 0.18s ease,
border-color 0.18s ease,
box-shadow 0.18s ease;
}
.level-icon {
color: var(--color-primary);
@@ -336,7 +362,10 @@ onBeforeUnmount(() => {
cursor: pointer;
font: inherit;
white-space: nowrap;
transition: background-color 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
transition:
background-color 0.18s ease,
border-color 0.18s ease,
box-shadow 0.18s ease;
}
.level-chip:hover,
.slot-chip:hover {
@@ -371,7 +400,9 @@ onBeforeUnmount(() => {
border-radius: 50%;
transition: background 0.2s;
}
.notif-btn:hover { background: var(--color-black-a05); }
.notif-btn:hover {
background: var(--color-black-a05);
}
.notif-dot {
position: absolute;
top: -2px;
@@ -404,7 +435,7 @@ onBeforeUnmount(() => {
transition: all 0.2s;
}
.avatar:hover,
.avatar[aria-expanded="true"] {
.avatar[aria-expanded='true'] {
border-color: var(--color-primary-a50);
background: var(--color-white-a80);
box-shadow: 0 0 0 3px var(--color-primary-a12);
@@ -414,8 +445,14 @@ onBeforeUnmount(() => {
outline: 2px solid var(--color-primary-a45);
outline-offset: 2px;
}
.avatar-icon { color: var(--color-text-secondary); }
.avatar-name { font-size: 13px; font-weight: 600; color: var(--color-text); }
.avatar-icon {
color: var(--color-text-secondary);
}
.avatar-name {
font-size: 13px;
font-weight: 600;
color: var(--color-text);
}
.profile-dropdown {
position: fixed;
top: calc(var(--topbar-height) + 10px);
@@ -462,7 +499,9 @@ onBeforeUnmount(() => {
font-size: 13px;
font-weight: 600;
text-align: left;
transition: background 0.2s, color 0.2s;
transition:
background 0.2s,
color 0.2s;
}
.profile-menu-item:hover {
background: var(--color-primary-a10);
@@ -477,8 +516,14 @@ onBeforeUnmount(() => {
}
@media (max-width: 640px) {
.topbar-center { display: none; }
.brand-name { display: none; }
.avatar-name { display: none; }
.topbar-center {
display: none;
}
.brand-name {
display: none;
}
.avatar-name {
display: none;
}
}
</style>