Tighten header quick login layout

Shrink SNS circular buttons, move '간편로그인' label to the left, and hide the user/status badge until authenticated.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dsyoon
2026-02-07 18:17:21 +09:00
parent e6a8e23217
commit 3370ca562e
3 changed files with 33 additions and 31 deletions

View File

@@ -72,10 +72,10 @@
</button> </button>
<div class="user" id="user" hidden> <div class="user" id="user" hidden>
<span class="user-dot" aria-hidden="true"></span> <span class="user-dot" aria-hidden="true"></span>
<span class="user-text" id="userText">로그인 필요</span> <span class="user-text" id="userText"></span>
</div> </div>
<div class="sns-login" id="snsLogin" hidden> <div class="sns-login" id="snsLogin" hidden>
<span class="sns-label">SNS 간편로그인</span> <span class="sns-label">간편로그인</span>
<div class="sns-row"> <div class="sns-row">
<button class="sns-btn sns-naver" id="btnNaver" type="button" hidden aria-label="네이버로 로그인"> <button class="sns-btn sns-naver" id="btnNaver" type="button" hidden aria-label="네이버로 로그인">
<span class="sns-letter">N</span> <span class="sns-letter">N</span>

View File

@@ -435,16 +435,18 @@
} }
function updateAuthUi() { function updateAuthUi() {
// 항상 상태를 보여주고, 버튼은 상태에 따라 비활성/숨김 처리 // 로그인 전에는 사용자 배지를 숨김(요청: "로그인 설정 필요" 영역 제거)
if (!auth.user) {
el.user.hidden = true;
} else {
el.user.hidden = false; el.user.hidden = false;
const email = auth.user && auth.user.email ? String(auth.user.email) : ""; const email = auth.user && auth.user.email ? String(auth.user.email) : "";
const name = auth.user && auth.user.name ? String(auth.user.name) : ""; const name = auth.user && auth.user.name ? String(auth.user.name) : "";
let label = email ? email : name ? name : auth.user ? "로그인됨" : "로그인 필요"; const label = email ? email : name ? name : "로그인됨";
if (auth.mode === "misconfigured") label = "로그인 설정 필요";
if (auth.mode === "sdk_missing") label = "로그인 SDK 로드 실패";
el.userText.textContent = label; el.userText.textContent = label;
if (auth.authorized) el.user.setAttribute("data-auth", "ok"); if (auth.authorized) el.user.setAttribute("data-auth", "ok");
else el.user.removeAttribute("data-auth"); else el.user.removeAttribute("data-auth");
}
// 로그인 기능이 활성(enabled)일 때만 로그인/로그아웃 버튼을 의미 있게 노출 // 로그인 기능이 활성(enabled)일 때만 로그인/로그아웃 버튼을 의미 있게 노출
const enabled = auth.mode === "enabled"; const enabled = auth.mode === "enabled";

View File

@@ -182,34 +182,34 @@ html[data-theme="light"] .topbar {
.sns-login { .sns-login {
display: inline-flex; display: inline-flex;
flex-direction: column; flex-direction: row;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
padding: 10px 12px; padding: 0;
border-radius: 18px; border-radius: 12px;
border: 1px solid var(--border); border: 0;
background: rgba(255, 255, 255, 0.03); background: transparent;
} }
.sns-row { .sns-row {
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
gap: 14px; gap: 10px;
} }
.sns-label { .sns-label {
font-size: 15px; font-size: 13px;
font-weight: 800; font-weight: 800;
letter-spacing: -0.02em; letter-spacing: -0.02em;
color: var(--text); color: var(--muted2);
white-space: nowrap; white-space: nowrap;
} }
.sns-btn { .sns-btn {
width: 56px; width: 36px;
height: 56px; height: 36px;
border-radius: 999px; border-radius: 999px;
border: 2px solid rgba(0, 0, 0, 0.08); border: 1px solid rgba(0, 0, 0, 0.10);
display: grid; display: grid;
place-items: center; place-items: center;
cursor: pointer; cursor: pointer;
@@ -244,7 +244,7 @@ html[data-theme="light"] .topbar {
.sns-letter { .sns-letter {
font-weight: 900; font-weight: 900;
font-size: 24px; font-size: 16px;
color: #fff; color: #fff;
letter-spacing: -0.02em; letter-spacing: -0.02em;
} }
@@ -255,21 +255,21 @@ html[data-theme="light"] .topbar {
} }
.sns-kakao-bubble { .sns-kakao-bubble {
width: 20px; width: 14px;
height: 16px; height: 11px;
background: rgba(0, 0, 0, 0.82); background: rgba(0, 0, 0, 0.82);
border-radius: 8px; border-radius: 6px;
position: relative; position: relative;
} }
.sns-kakao-bubble::after { .sns-kakao-bubble::after {
content: ""; content: "";
position: absolute; position: absolute;
bottom: -5px; bottom: -4px;
left: 6px; left: 4px;
width: 0; width: 0;
height: 0; height: 0;
border: 5px solid transparent; border: 4px solid transparent;
border-top-color: rgba(0, 0, 0, 0.82); border-top-color: rgba(0, 0, 0, 0.82);
} }
@@ -280,7 +280,7 @@ html[data-theme="light"] .topbar {
.sns-google-g { .sns-google-g {
font-weight: 900; font-weight: 900;
font-size: 24px; font-size: 16px;
background: conic-gradient(from 210deg, #ea4335 0 25%, #fbbc05 25% 50%, #34a853 50% 75%, #4285f4 75% 100%); background: conic-gradient(from 210deg, #ea4335 0 25%, #fbbc05 25% 50%, #34a853 50% 75%, #4285f4 75% 100%);
-webkit-background-clip: text; -webkit-background-clip: text;
background-clip: text; background-clip: text;