릴리스: v1.2.16 메인 화면 사이드와 헤더 단순화
This commit is contained in:
@@ -294,41 +294,11 @@ async function logout() {
|
||||
|
||||
<aside class="rightRail" :class="{ 'rightRail--closed': !rightRailOpen }" :aria-hidden="!rightRailOpen">
|
||||
<template v-if="!usesLocalRightRail">
|
||||
<div class="rightRail__top">
|
||||
<button class="ghostIcon ghostIcon--iconOnly" type="button" aria-label="상태">
|
||||
<img :src="iconGridView" alt="" />
|
||||
</button>
|
||||
</div>
|
||||
<section class="contextCard">
|
||||
<div class="contextCard__label">Context</div>
|
||||
<h2 class="contextCard__title">{{ routeMeta.contextTitle }}</h2>
|
||||
<p class="contextCard__text">{{ routeMeta.contextText }}</p>
|
||||
<button class="contextCard__action" type="button" @click="routeMeta.action">
|
||||
<section class="rightRailAction">
|
||||
<button class="rightRailAction__button" type="button" @click="routeMeta.action">
|
||||
{{ routeMeta.actionLabel }}
|
||||
</button>
|
||||
</section>
|
||||
<section class="contextCard">
|
||||
<div class="contextCard__label">Account</div>
|
||||
<div class="contextStat">
|
||||
<span class="contextStat__name">현재 사용자</span>
|
||||
<span class="contextStat__value">{{ accountName }}</span>
|
||||
</div>
|
||||
<div class="contextStat">
|
||||
<span class="contextStat__name">권한</span>
|
||||
<span class="contextStat__value">{{ isAdmin ? 'Admin' : auth.user ? 'Member' : 'Guest' }}</span>
|
||||
</div>
|
||||
</section>
|
||||
<section class="contextCard contextCard--links">
|
||||
<div class="contextCard__label">Jump</div>
|
||||
<button class="contextLink" type="button" @click="$router.push('/')">
|
||||
<svg viewBox="0 0 24 24" aria-hidden="true"><path :d="railGlyph('link')" /></svg>
|
||||
<span>게임 목록으로</span>
|
||||
</button>
|
||||
<button v-if="auth.user" class="contextLink" type="button" @click="$router.push('/me')">
|
||||
<svg viewBox="0 0 24 24" aria-hidden="true"><path :d="railGlyph('link')" /></svg>
|
||||
<span>내 티어표 열기</span>
|
||||
</button>
|
||||
</section>
|
||||
</template>
|
||||
<div id="local-right-rail-root" class="localRightRailRoot"></div>
|
||||
</aside>
|
||||
@@ -733,83 +703,23 @@ async function logout() {
|
||||
gap: 18px;
|
||||
}
|
||||
|
||||
.localRightRailRoot {
|
||||
min-height: calc(100vh - 40px);
|
||||
}
|
||||
|
||||
.contextCard {
|
||||
.rightRailAction {
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
padding: 16px;
|
||||
border-radius: 18px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
background: rgba(255, 255, 255, 0.03);
|
||||
}
|
||||
|
||||
.contextCard__label {
|
||||
font-size: 12px;
|
||||
color: rgba(255, 255, 255, 0.42);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
}
|
||||
|
||||
.contextCard__title {
|
||||
margin: 0;
|
||||
font-size: 22px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.contextCard__text {
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
line-height: 1.6;
|
||||
color: rgba(255, 255, 255, 0.66);
|
||||
}
|
||||
|
||||
.contextCard__action {
|
||||
.rightRailAction__button {
|
||||
width: 100%;
|
||||
padding: 12px 14px;
|
||||
border-radius: 12px;
|
||||
border: 0;
|
||||
background: #4b7fe9;
|
||||
border-radius: 14px;
|
||||
border: 1px solid rgba(77, 127, 233, 0.96);
|
||||
background: rgba(77, 127, 233, 0.88);
|
||||
color: #fff;
|
||||
font-weight: 800;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.contextCard--links {
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.contextLink {
|
||||
width: 100%;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 10px;
|
||||
padding: 11px 12px;
|
||||
border-radius: 12px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
background: rgba(255, 255, 255, 0.03);
|
||||
color: rgba(255, 255, 255, 0.86);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.contextStat {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.contextStat__name {
|
||||
color: rgba(255, 255, 255, 0.56);
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.contextStat__value {
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
.localRightRailRoot {
|
||||
min-height: calc(100vh - 40px);
|
||||
}
|
||||
|
||||
.toastStack {
|
||||
|
||||
@@ -33,22 +33,6 @@ function goFreeform() {
|
||||
router.push('/editor/freeform/new')
|
||||
}
|
||||
|
||||
function goFavorites() {
|
||||
if (!auth.user) {
|
||||
router.push('/login?redirect=/favorites')
|
||||
return
|
||||
}
|
||||
router.push('/favorites')
|
||||
}
|
||||
|
||||
function goMyLists() {
|
||||
if (!auth.user) {
|
||||
router.push('/login?redirect=/me')
|
||||
return
|
||||
}
|
||||
router.push('/me')
|
||||
}
|
||||
|
||||
function thumbUrl(g) {
|
||||
if (!g.thumbnailSrc) return ''
|
||||
return toApiUrl(g.thumbnailSrc)
|
||||
@@ -63,19 +47,6 @@ function thumbUrl(g) {
|
||||
<h1 class="dashboardHero__title">Game Library</h1>
|
||||
<p class="dashboardHero__desc">자주 쓰는 게임 템플릿을 빠르게 고르고, 필요하면 바로 커스텀 티어표를 시작할 수 있어요.</p>
|
||||
</div>
|
||||
<div class="dashboardToolbar">
|
||||
<div class="dashboardToolbar__stat">
|
||||
<span class="dashboardToolbar__label">Visible Games</span>
|
||||
<strong class="dashboardToolbar__value">{{ games.length }}</strong>
|
||||
</div>
|
||||
<div class="dashboardToolbar__stat">
|
||||
<span class="dashboardToolbar__label">Account</span>
|
||||
<strong class="dashboardToolbar__value">{{ auth.user ? 'Ready' : 'Guest' }}</strong>
|
||||
</div>
|
||||
<button class="dashboardToolbar__ghost" @click="goFavorites">{{ auth.user ? '즐겨찾기 보기' : '로그인 후 즐겨찾기' }}</button>
|
||||
<button class="dashboardToolbar__ghost" @click="goMyLists">{{ auth.user ? '내 리스트 보기' : '로그인 후 내 리스트' }}</button>
|
||||
<button class="customTierBtn" @click="goFreeform">{{ auth.user ? '+ 커스텀 티어표 만들기' : '+ 로그인 후 커스텀 티어표 만들기' }}</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div v-if="error" class="error">{{ error }}</div>
|
||||
@@ -130,54 +101,6 @@ function thumbUrl(g) {
|
||||
line-height: 1.5;
|
||||
max-width: 720px;
|
||||
}
|
||||
.dashboardToolbar {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.dashboardToolbar__stat {
|
||||
display: grid;
|
||||
gap: 2px;
|
||||
min-width: 112px;
|
||||
padding: 12px 14px;
|
||||
border-radius: 14px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
background: rgba(255, 255, 255, 0.045);
|
||||
}
|
||||
.dashboardToolbar__label {
|
||||
font-size: 11px;
|
||||
color: rgba(255, 255, 255, 0.48);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
}
|
||||
.dashboardToolbar__value {
|
||||
font-size: 18px;
|
||||
font-weight: 900;
|
||||
}
|
||||
.dashboardToolbar__ghost,
|
||||
.customTierBtn {
|
||||
padding: 12px 14px;
|
||||
border-radius: 14px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
background: rgba(255, 255, 255, 0.06);
|
||||
color: rgba(255, 255, 255, 0.84);
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
transition:
|
||||
transform 0.16s ease,
|
||||
border-color 0.16s ease,
|
||||
background 0.16s ease;
|
||||
}
|
||||
.dashboardToolbar__ghost:hover,
|
||||
.customTierBtn:hover {
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
.customTierBtn {
|
||||
background: rgba(77, 127, 233, 0.88);
|
||||
border-color: rgba(77, 127, 233, 0.96);
|
||||
color: #fff;
|
||||
}
|
||||
.libraryGrid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
|
||||
Reference in New Issue
Block a user