릴리스: v1.3.92 왼쪽 네비 활성 배경 애니메이션 추가

This commit is contained in:
2026-04-02 17:31:31 +09:00
parent c4d896ce36
commit 9bb64b52f3
4 changed files with 42 additions and 4 deletions

View File

@@ -67,6 +67,7 @@ const leftNavItems = computed(() => {
]
return items.filter((item) => !item.requiresAuth || (authReady.value && auth.user))
})
const activeLeftNavIndex = computed(() => leftNavItems.value.findIndex((item) => isRouteActive(item.path)))
const showRightRailAction = computed(() => false)
const showSettingsGuideButton = computed(() => route.name === 'profile')
const guideSteps = [
@@ -446,7 +447,12 @@ function submitGlobalSearch() {
<input v-model="searchQuery" class="searchStub__input" type="search" :placeholder="leftRailCollapsed ? '' : leftRailSearchPlaceholder" />
</form>
<nav class="leftNav">
<nav
class="leftNav"
:class="{ 'leftNav--hasActive': activeLeftNavIndex >= 0 }"
:style="{ '--left-nav-active-index': String(Math.max(activeLeftNavIndex, 0)) }"
>
<span class="leftNav__indicator" aria-hidden="true"></span>
<RouterLink
v-for="item in leftNavItems"
:key="item.key"
@@ -911,19 +917,45 @@ function submitGlobalSearch() {
}
.leftNav {
--left-nav-gap: 8px;
--left-nav-item-height: 50px;
position: relative;
display: grid;
gap: 8px;
gap: var(--left-nav-gap);
isolation: isolate;
}
.leftNav__indicator {
position: absolute;
top: 0;
left: 0;
right: 0;
height: var(--left-nav-item-height);
border-radius: 14px;
background: var(--theme-surface-soft-3);
transform: translateY(calc(var(--left-nav-active-index, 0) * (var(--left-nav-item-height) + var(--left-nav-gap))));
transition: transform 240ms ease, opacity 200ms ease;
opacity: 0;
z-index: 0;
pointer-events: none;
}
.leftNav--hasActive .leftNav__indicator {
opacity: 1;
}
.leftNav__item {
position: relative;
display: flex;
align-items: center;
min-height: var(--left-nav-item-height);
gap: 12px;
padding: 11px 12px;
border-radius: 14px;
color: var(--theme-text-muted);
text-decoration: none;
transition: background 180ms ease, color 180ms ease, transform 180ms ease;
z-index: 1;
}
.leftNav__label {
@@ -936,7 +968,6 @@ function submitGlobalSearch() {
.leftNav__item--active,
.leftNav__item.router-link-active {
background: var(--theme-surface-soft-3);
color: var(--theme-text-strong);
}
@@ -999,7 +1030,7 @@ function submitGlobalSearch() {
}
.appShell--leftCollapsed .leftNav {
gap: 10px;
--left-nav-gap: 10px;
}
.appShell--leftCollapsed .leftNav__item {