로그인 버튼 컴포넌트
Source:
integrations/buttons.md· Live: https://docs.1pass.dev/integrations/buttons LLM-sanitized: internal links absolutized, VitePress containers → admonitions, line numbers in the Jump-to Index reference this rendered file (1-indexed).
📍 Jump-to Index
- L36-L57: ## 공통 CSS
- L58-L79: ## 1x1 — 아이콘 전용 (44×44)
- L80-L101: ## 2x1 — 인라인 (220×44)
- L102-L119: ## 4x1 — Hero (full-width × 56)
- L120-L146: ## 디자인 토큰 override 예시
- L147-L176: ## 프레임워크 인라인 (참고용)
- L149-L162: ### React / JSX
- L163-L172: ### Svelte
- L173-L176: ### Flutter (
logi_button.dart)
- L177-L186: ## 브랜드 가이드
- L187-L192: ## 다음 (예정)
로그인 버튼 컴포넌트
💡 Tip: RP 시작 라우트 경로 아래 예시는 모두
/auth/logi/start를 placeholder 로 사용합니다. 실제 경로는 RP 가 자체 결정합니다 (예:/auth/login,/sign-in,/api/auth/start). 자기 RP 의 OAuth 시작 라우트로 교체하세요.
logi SSO 버튼의 표준 사이즈 × 테마 조합. vanilla HTML + CSS variables — React/Vue/Svelte/Flutter 어느 스택에서도 복붙해서 색만 토큰으로 override 하면 그대로 동작합니다.
💡 Tip: 왜 vanilla 만 제공하나요 프레임워크별 NPM 패키지는 채택 데이터 본 후 Phase 2에 진행 예정입니다. 그 전에는 vanilla 가 모든 스택에서 동작하고, 디자인 변경 시 RP 가 한 줄로 token 만 바꿀 수 있어 가장 유연합니다.
QR 로그인 옵션은 logi 의 /oauth/authorize 페이지 안에 이미 통합돼 있어 별도 QR 버튼은 필요 없습니다 (QR 로그인 참고).
공통 CSS
한 번만 박아두면 아래 모든 사이즈가 동작합니다.
브랜드 아이콘:
🔴 canonical:
~/toy/logi/server/public/icon.svg를 그대로 사용. 모든 surface (web / iOS / Android / Flutter) 공통. 과거 동심원 3개 SVG (<circle r="9">+r="4.5"+r="1.4">) 패턴은 폐기됨 (2026-05-19) — 브랜드 인지도 부족으로 RP 마다 logi 로 인식되지 않아 사용자 혼란 발생. 어떤 사이즈에서도 동심원 사용 금지.
<img class="logi-btn__logo" src="/icon.svg" alt="" aria-hidden="true" /># RP 통합 시 1회 복사 (paths.assets 로 호스팅되는 위치로)
cp logi/server/public/icon.svg <your_rp>/public/logi-icon.svg1x1 — 아이콘 전용 (44×44)
사이드바 / FAB / 모바일 헤더 / 액션바 같이 좁은 공간 — 텍스트 없이 로고만.
<a href="/auth/logi/start" class="logi-btn logi-btn--1x1" aria-label="logi 로 로그인">
<img class="logi-btn__logo" src="/icon.svg" alt="" aria-hidden="true" />
</a>⚠️ Warning: 접근성 1x1 버튼은 텍스트가 없으므로
aria-label="logi 로 로그인"필수. 스크린리더가 의미 전달 못 하면 WCAG 2.1 4.1.2 위반.
2x1 — 인라인 (220×44)
로그인 폼 하단 / 모달 footer / "다른 방법으로 로그인" 옵션 묶음.
<a href="/auth/logi/start" class="logi-btn logi-btn--2x1">
<img class="logi-btn__logo" src="/icon.svg" alt="" aria-hidden="true" />
logi 로 로그인
</a>4x1 — Hero (full-width × 56)
메인 로그인 페이지의 primary CTA. 한 줄을 통째로 차지.
<a href="/auth/logi/start" class="logi-btn logi-btn--4x1">
<img class="logi-btn__logo" src="/icon.svg" alt="" aria-hidden="true" />
logi 로 로그인
</a>디자인 토큰 override 예시
RP 의 디자인 시스템에 맞추기:
/* Tailwind 프로젝트 */
:root {
--logi-button-bg: theme('colors.indigo.600');
--logi-button-fg: theme('colors.white');
--logi-button-radius: theme('borderRadius.md');
}
/* shadcn/ui */
:root {
--logi-button-bg: hsl(var(--primary));
--logi-button-fg: hsl(var(--primary-foreground));
--logi-button-radius: var(--radius);
}
/* Bootstrap */
:root {
--logi-button-bg: var(--bs-primary);
--logi-button-fg: #fff;
--logi-button-radius: var(--bs-border-radius);
}프레임워크 인라인 (참고용)
React / JSX
function LogiButton({ size = "2x1", theme = "dark", href = "/auth/logi/start" }) {
return (
<a href={href} className={`logi-btn logi-btn--${size} ${theme === "light" ? "logi-btn--light" : ""}`}
aria-label="logi 로 로그인">
<img className="logi-btn__logo" src="/icon.svg" alt="" aria-hidden="true" />
{size !== "1x1" && "logi 로 로그인"}
</a>
);
}Svelte
<a {href} class="logi-btn logi-btn--{size} {theme === 'light' ? 'logi-btn--light' : ''}"
aria-label="logi 로 로그인">
<img class="logi-btn__logo" src="/icon.svg" alt="" aria-hidden="true" />
{#if size !== "1x1"}logi 로 로그인{/if}
</a>Flutter (logi_button.dart)
별도 SDK 패키지로 분리 예정. 그 사이엔 flutter_web_auth_2 + IconButton/ElevatedButton 으로 위 사이즈 매트릭스를 직접 구성하세요. 색상은 Theme.of(context).colorScheme.primary 를 따르도록.
브랜드 가이드
| 항목 | 규칙 |
|---|---|
| 텍스트 | 한국어: "logi 로 로그인" / 영문: "Sign in with logi" / 일본어: "logi でログイン" |
| 로고 | /icon.svg (그라디언트 dot) — 그대로 사용. 변형 / 회전 / 색 분해 / 동심원 substitute ❌ |
| 최소 사이즈 | 32×32px (이보다 작으면 로고 식별 어려움) |
| 클리어 영역 | 버튼 둘레 = 로고 1/2 폭 만큼 비워두기 |
| 색 대비 | WCAG AA 4.5:1 이상 (light/dark 토큰 그대로 쓰면 충족) |
다음 (예정)
- NPM 패키지
@logi-auth/button-react/@logi-auth/button-vue/@logi-auth/button-svelte— 채택 데이터 보고 Phase 2 - CDN CSS
https://api.1pass.dev/buttons.css—<link rel="stylesheet">한 줄 통합 - Figma library — 디자이너 협업용