릴리스: v1.2.21 티어표 카드와 좌측 레일 밀도 조정

This commit is contained in:
2026-03-30 17:58:51 +09:00
parent c1f0471f1f
commit 1a7ec50a93
10 changed files with 241 additions and 204 deletions

View File

@@ -13,12 +13,10 @@ const error = ref('')
const query = ref('')
function fmt(ts) {
return new Date(ts).toLocaleString(undefined, {
return new Date(ts).toLocaleDateString(undefined, {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
})
}
@@ -86,23 +84,22 @@ watch(
<div v-else class="boardCard__thumbPlaceholder">대표 썸네일</div>
</div>
<div class="boardCard__head">
<div class="boardCard__title">{{ tierList.title }}</div>
<div class="boardCard__author">
<img v-if="avatarSrcOf(tierList)" class="boardCard__avatar" :src="avatarSrcOf(tierList)" :alt="displayNameOf(tierList)" />
<div v-else class="boardCard__avatar boardCard__avatar--fallback">{{ avatarFallbackOf(tierList) }}</div>
<span>by {{ displayNameOf(tierList) }}</span>
<div class="boardCard__titleRow">
<div class="boardCard__title">{{ tierList.title }}</div>
<div class="favoriteStat" :title="tierList.isFavorited ? '이미 즐겨찾기한 티어표' : '즐겨찾기 수'">
{{ tierList.isFavorited ? '♥' : '♡' }} {{ tierList.favoriteCount || 0 }}
</div>
</div>
<div class="boardCard__metaRow">
<div class="boardCard__author">
<img v-if="avatarSrcOf(tierList)" class="boardCard__avatar" :src="avatarSrcOf(tierList)" :alt="displayNameOf(tierList)" />
<div v-else class="boardCard__avatar boardCard__avatar--fallback">{{ avatarFallbackOf(tierList) }}</div>
<span class="boardCard__authorName">{{ displayNameOf(tierList) }}</span>
</div>
<div class="boardCard__date">{{ fmt(tierList.updatedAt) }}</div>
</div>
</div>
</button>
<div class="boardCard__foot">
<div class="boardCard__meta">
<div>{{ tierList.gameId }}</div>
<div>{{ fmt(tierList.updatedAt) }}</div>
</div>
<div class="favoriteStat" :title="tierList.isFavorited ? '이미 즐겨찾기한 티어표' : '즐겨찾기 수'">
{{ tierList.isFavorited ? '★' : '☆' }} {{ tierList.favoriteCount || 0 }}
</div>
</div>
</article>
</div>
</section>
@@ -149,7 +146,7 @@ watch(
}
.list {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 18px;
}
.boardCard {
@@ -158,7 +155,6 @@ watch(
background: rgba(62, 62, 62, 0.82);
overflow: hidden;
display: grid;
gap: 10px;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
transition: transform 0.16s ease, background 0.16s ease;
}
@@ -174,20 +170,19 @@ watch(
text-align: left;
cursor: pointer;
display: grid;
gap: 10px;
}
.boardCard__thumbWrap {
width: 100%;
aspect-ratio: 16 / 9;
background: #555;
display: grid;
place-items: center;
padding: 14px 14px 0;
box-sizing: border-box;
}
.boardCard__thumb,
.boardCard__thumbPlaceholder {
width: 100%;
height: 100%;
display: block;
border-radius: 18px;
}
.boardCard__thumb {
object-fit: cover;
@@ -201,52 +196,66 @@ watch(
font-weight: 700;
}
.boardCard__head {
padding: 14px 14px 0;
padding: 16px 18px 18px;
display: grid;
gap: 10px;
}
.boardCard__titleRow,
.boardCard__metaRow {
display: flex;
gap: 12px;
align-items: center;
justify-content: space-between;
}
.boardCard__title {
min-width: 0;
font-weight: 800;
font-size: 18px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.boardCard__author {
min-width: 0;
display: inline-flex;
align-items: center;
gap: 8px;
font-size: 13px;
opacity: 0.86;
}
.boardCard__authorName {
min-width: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.boardCard__avatar {
width: 28px;
height: 28px;
border-radius: 999px;
width: 22px;
height: 22px;
border-radius: 6px;
object-fit: cover;
background: rgba(255, 255, 255, 0.08);
flex: 0 0 auto;
}
.boardCard__avatar--fallback {
display: grid;
place-items: center;
font-size: 12px;
font-size: 11px;
font-weight: 900;
}
.boardCard__foot {
padding: 0 14px 14px;
display: flex;
gap: 12px;
align-items: center;
justify-content: space-between;
}
.boardCard__meta {
display: grid;
gap: 4px;
opacity: 0.78;
font-size: 13px;
}
.boardCard__date,
.favoriteStat {
flex: 0 0 auto;
font-size: 13px;
color: rgba(255, 255, 255, 0.74);
color: rgba(255, 255, 255, 0.64);
white-space: nowrap;
}
@media (max-width: 1200px) {
@media (max-width: 1400px) {
.list {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
@media (max-width: 1024px) {
.list {
grid-template-columns: repeat(2, minmax(0, 1fr));
}