채널과 스레드
긴 논의는 스레드로 나누고 멘션은 한 목록에 모읍니다.
자세히 보기제품 밖의 첫 화면(마케팅 페이지)에 쓰는 블록입니다. 재질과 토큰은 제품과 같고, 다른 것은 큰 제목 단계와 블록 배치뿐입니다.
블록은 .uyoo-lp 컨테이너 안에 두고, 놓인 폭을 읽어 데스크톱 · 중간 · 모바일 배치를 스스로 고릅니다. 같은 마크업이 1360 페이지 · 문서의 열 · 390 휴대폰에서 각자 맞게 그려집니다. React 래퍼는 두지 않습니다(마케팅 앱이 마크업을 씁니다). 동작이 있는 곳은 FAQ 펼치기와 모바일 메뉴 둘이고, 둘 다 앱이 가집니다.
/* globals.css — 클래스는 @uyoolabs/ui/css 안의 css/carton/brand.css 에 있다 */
@import "tailwindcss";
@import "@uyoolabs/ui/css";
// 루트 layout — 랜딩도 UI 고딕(Noto Sans · Display)을 쓴다. 일본어 페이지는 fonts/app-ja 를 더한다
import "@uyoolabs/ui/fonts/app";이 열의 폭(중간 배치)에서 그린 한 페이지입니다. 넓은 화면 · 390 폭은 픽스처 brand-landing 에 있습니다.
2,400개 팀이 한결로 일합니다
아니요. 체험이 끝나기 3일 전에 알림을 보내고, 결제 수단을 등록한 경우에만 청구합니다. 등록하지 않으면 무료 요금제로 바뀝니다.
슬랙 · 팀즈에서 내보낸 파일을 올리면 채널과 메시지를 그대로 옮깁니다.
네. 녹화를 켜면 모든 참가자의 화면에 녹화 표시가 뜨고 동의를 받습니다.
기본은 서울 리전이고, 엔터프라이즈는 위치를 고릅니다.
다른 앱(터미널)은 data-tone="dark" 로 어둡게 둡니다. 손글씨는 화면 캡처 위의 펜 메모입니다.
$ hangyeol import ./slack-export.zip 채널 42개 · 메시지 18,204건을 읽었습니다 완료 멤버 연결 36 / 38
새 메신저 또 설치하기
이제 필요 없음
골격과 FAQ(APG Disclosure)
<div className="uyoo-lp"> {/* 컨테이너. 블록이 폭 600 · 900 · 960 에서 배치를 바꾼다 */}
<header className="uyoo-lp-nav" data-scrolled> {/* 스크롤하면 앱이 data-scrolled 를 단다 */}
<div className="uyoo-lp-wrap uyoo-lp-nav-in">
<a className="uyoo-lp-brand" href="/">…</a>
<nav aria-label="주요 메뉴">
<ul className="uyoo-lp-links">
<li><a className="uyoo-lp-link" aria-current="page" href="/">제품</a></li>
</ul>
</nav>
<div className="uyoo-lp-nav-end">
…버튼…
<button className="uyoo-lp-menu" aria-label="메뉴 열기" aria-expanded={open} aria-controls="menu">…</button>
</div>
</div>
</header>
<main>
<section className="uyoo-lp-hero">
<div className="uyoo-lp-wrap uyoo-lp-hero-grid">
<div>
<p className="uyoo-eyebrow">실시간 협업 플랫폼</p>
<h1 className="uyoo-display">채널, 회의, 문서를 한곳에서 이어 갑니다</h1>
<p className="uyoo-lead">…</p>
<div className="uyoo-lp-actions">…</div>
</div>
<div className="uyoo-window">…</div>
</div>
</section>
<section className="uyoo-lp-section"><div className="uyoo-lp-wrap">…</div></section>
</main>
<footer className="uyoo-lp-foot">…</footer>
</div><div className="uyoo-lp-faq-item">
<button className="uyoo-lp-faq-q" aria-expanded={open} aria-controls="faq-1" onClick={toggle}>
무료 체험이 끝나면 요금이 바로 청구됩니까? <IconChevronDown size={18} />
</button>
<p className="uyoo-lp-faq-a" id="faq-1" hidden={!open}>…</p>
</div>CSS 표면이라 props 대신 클래스와 상태 속성을 적습니다.
| 블록 | 클래스 | 상태 · 규칙 |
|---|---|---|
| 머리 내비 | uyoo-lp-nav · -nav-in · -brand · -links · -link · -nav-end · -menu | data-scrolled(아래 헤어라인) · aria-current="page"(600 + 2px 밑줄) · 600 미만에서 메뉴 버튼 하나로 |
| 제목 단계 | uyoo-eyebrow · uyoo-display · uyoo-headline · uyoo-lead | 크기는 컨테이너 폭(cqi)을 따른다. 대문자 · 음수 자간은 영어만 |
| 히어로 | uyoo-lp-hero · -hero-grid · -actions · -fine | 960 이상에서 1:1 두 칸 |
| 화면 프레임 | uyoo-window · -bar · -dots | 카드 두께 + 지붕 16. data-tone="dark" 는 테마와 관계없이 어두운 다른 앱(터미널) |
| 기능 3열 | uyoo-lp-grid3 · uyoo-lp-feature · -ficon · -ftitle · -fdesc | 폭 240 미만이면 작은 카드 |
| 로고 줄 | uyoo-lp-logos · -logos-cap · -logos-row · -logo | 카드에 담지 않는다. 한 색(보조 글자색) |
| 가격표 | uyoo-lp-pricing-bar · uyoo-lp-plan · -plan-name · -price · -checks · -plan-note | data-recommended(2px 경계 + '추천' 배지) |
| FAQ | uyoo-lp-faq-grid · -faq-list · -faq-item · -faq-q · -faq-a | aria-expanded 로 화살이 돈다 |
| CTA 띠 | uyoo-lp-cta | 마크의 앞면 색 면. primary 를 넓게 칠하지 않는다 |
| 바닥글 | uyoo-lp-foot · -foot-grid · -foot-about · -foot-h · -foot-links · -foot-lang · -foot-base | 파인 바닥 · 4열(모바일 2열) |
| 모바일 메뉴 내용 | uyoo-lp-menu-links · -menu-current · -menu-actions | 시트는 ./overlay Sheet side="bottom" |
| 손글씨 | uyoo-hand · uyoo-hand-stroke | 한 · 영만(일본어는 쓰지 않는다) |
랜드마크는 banner · navigation(aria-label) · main · contentinfo 입니다.
| 키 | 동작 |
|---|---|
| Tab | 건너뛰기 링크 → 브랜드 → 내비 링크 → 로그인 → 시작 → 히어로 버튼 순서 |
| Enter · Space (FAQ 행) | 답을 펼치고 접는다. 버튼의 aria-expanded 가 바뀐다 |
| Enter · Space (메뉴 버튼) | 모바일 메뉴 시트를 연다. 포커스는 닫기 버튼으로 간다 |
| Esc (메뉴 시트) | 시트를 닫고 포커스를 메뉴 버튼으로 돌린다 |
v1 에서 바뀐 이름(.uyoo-window-dark → data-tone · --landing-* · --window-* · --hand-ink)은 docs/migration/v2-brand.md 에 있습니다.