v4.0.0: UNIARE 리브랜딩·레이아웃·덱 UX 개선
제품명·헤더 로고 이미지 통일, 덱 이름 변경·조회 수 제거, 썸네일 홀드 미리보기를 누르는 동안만 표시하도록 수정하고 Tailwind CSS를 재빌드했다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -8,12 +8,14 @@
|
||||
<link rel="stylesheet" href="./style/app-shell.css" />
|
||||
<link rel="stylesheet" href="./style/auth-header.css" />
|
||||
<link rel="stylesheet" href="./style/deck-history.css" />
|
||||
<title>내 덱 관리 - UADECK</title>
|
||||
<title>내 덱 관리 - UNIARE</title>
|
||||
</head>
|
||||
<body class="app-page deck-history-page">
|
||||
<nav class="app-nav">
|
||||
<div class="app-nav-inner">
|
||||
<a href="/" class="app-brand">UADECK <span>v4.0.0</span></a>
|
||||
<a href="/" class="app-brand">
|
||||
<img src="/images/assets/uniare-h48.png" alt="UNIARE" class="app-brand-logo" />
|
||||
</a>
|
||||
<div id="auth-header-slot"></div>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -278,7 +280,7 @@
|
||||
${visibilityBadge}
|
||||
</div>
|
||||
<h2 class="deck-card-title">${title}</h2>
|
||||
<div class="deck-card-meta">${escapeHtml(t('deckViews', '조회'))} ${d.view_count} · ${date}</div>
|
||||
<div class="deck-card-meta">${date}</div>
|
||||
<div class="deck-card-actions deck-card-actions--primary">
|
||||
${favoriteButtonHtml(d.share_code)}
|
||||
<button type="button" class="deck-card-btn deck-card-btn-load" data-load="${escapeHtml(d.share_code)}" data-series="${escapeHtml(d.series)}" data-name="${escapeHtml(d.series_name || '')}">${escapeHtml(t('deckLoad', '불러오기'))}</button>
|
||||
@@ -288,6 +290,7 @@
|
||||
</button>
|
||||
<div class="deck-card-more-menu hidden" role="menu">
|
||||
<button type="button" class="deck-card-more-item" role="menuitem" data-copy="${escapeHtml(d.share_code)}">${escapeHtml(t('deckCopyLink', '링크 복사'))}</button>
|
||||
<button type="button" class="deck-card-more-item" role="menuitem" data-rename="${escapeHtml(d.share_code)}" data-current-name="${escapeHtml(getDeckTitle(d))}">${escapeHtml(t('deckRename', '이름 변경'))}</button>
|
||||
<button type="button" class="deck-card-more-item" role="menuitem" data-toggle="${escapeHtml(d.share_code)}" data-public="${isPublic ? '1' : '0'}">${escapeHtml(toggleLabel)}</button>
|
||||
<button type="button" class="deck-card-more-item deck-card-more-item--danger" role="menuitem" data-delete="${escapeHtml(d.share_code)}">${escapeHtml(t('deckDelete', '삭제'))}</button>
|
||||
</div>
|
||||
@@ -441,6 +444,33 @@
|
||||
return;
|
||||
}
|
||||
|
||||
const renameBtn = e.target.closest('[data-rename]');
|
||||
if (renameBtn) {
|
||||
const code = renameBtn.dataset.rename;
|
||||
const current = renameBtn.dataset.currentName || '';
|
||||
const newName = prompt(t('deckRenamePrompt', '새 덱 이름을 입력하세요'), current);
|
||||
if (newName === null) return;
|
||||
const trimmed = newName.trim();
|
||||
if (!trimmed) {
|
||||
alert(t('deckRenameEmpty', '이름을 입력해 주세요.'));
|
||||
return;
|
||||
}
|
||||
if (trimmed === current) {
|
||||
closeAllDeckMenus();
|
||||
return;
|
||||
}
|
||||
try {
|
||||
await UaDeckApi.updateDeck(code, { name: trimmed });
|
||||
const deck = allDecks.find((d) => d.share_code === code);
|
||||
if (deck) deck.name = trimmed;
|
||||
closeAllDeckMenus();
|
||||
renderDeckList();
|
||||
} catch (err) {
|
||||
alert(err.message || t('deckRenameFailed', '이름 변경에 실패했습니다.'));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
const toggleBtn = e.target.closest('[data-toggle]');
|
||||
if (toggleBtn) {
|
||||
const code = toggleBtn.dataset.toggle;
|
||||
|
||||
Reference in New Issue
Block a user