refactor: натравил форматтер на весь фронт
This commit is contained in:
1 parent
24df65a13c
commit
98aaa86ec4
43 files changed
+1947
-657
No files matched your search
@@ -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>
|
||||
Reference in new issue
Block a user