본문으로 건너뛰기

시스템 상태 화면

404 · 403 · 500 · 점검. 무슨 일이 생겼는지 한 문장, 할 수 있는 일 하나 이상을 둡니다.

셸 밖에서는 SystemLayout(로고 · 가운데 빈 상태 · 바닥 정보)의 전체 화면이고, 셸 안에서는 내비를 그대로 두고 본문 자리에 Empty(page)만 둡니다. 빨강은 서버가 실패한 500 의 아이콘에만 쓰고, 찾을 수 없음 · 권한 없음 · 점검은 중립 · 정보로 말합니다. 오프라인은 화면을 막지 않고 셸 위 Banner(warn) 와 보낼 대기열로 다룹니다.

import
import { SystemLayout } from "@uyoolabs/ui/ui";
쓰는 경우
라우터의 not-found · 오류 경계 · 점검 응답처럼 셸을 그릴 수 없거나 그리지 않는 전체 화면에 씁니다.
쓰지 않는 경우
셸 안 화면에서 쓰지 않습니다(Empty page 로). 404 · 403 · 점검을 빨강으로 말하지 않습니다. 큰 일러스트 · 농담 문구로 원인을 가리지 않습니다. 스택 트레이스 · 내부 경로를 보이지 않습니다. 카드 하나의 실패로 화면 전체를 500 으로 바꾸지 않습니다. 오프라인 때 전체 화면을 막지 않습니다.
제목 · 포커스
브레드크럼이 없는 화면이라 제목이 h1 입니다(결정 #23). 문서 제목(<title>)이 상태를 말하고, 앱이 첫 포커스를 제목(tabIndex=-1)으로 옮깁니다.

셸 밖 — SystemLayout

머리(로고 · 상태 페이지) · 가운데 빈 상태 · 바닥(요청 ID · 시각).

uyoolabs

문제가 생겼습니다

잠시 뒤 다시 시도합니다. 계속되면 아래 요청 ID 로 지원팀에 문의합니다.
500 · 서버 오류

요청 IDreq_01J9Y2C8N4

셸 안 — Empty(page)

내비를 남겨 다른 곳으로 갈 길을 둡니다.

이 프로젝트를 볼 권한이 없습니다

결제 프로젝트는 관리자만 봅니다.

상태별 규칙

P-System-States 보드의 조립 규칙입니다.

상태원인 · 코드톤 · 아이콘할 수 있는 일
찾을 수 없음404 · 지움 · 주소 바뀜중립 · 검색홈 · 검색. 지운 것은 누가 언제 + 되돌리기(30일)
권한 없음403중립 · 자물쇠권한 요청(누구에게) · 다른 계정. 숨겨야 하는 자원은 404 로 답합니다(있음을 드러내지 않는다)
문제가 생김500 · 502 · 504오류 — 아이콘만 빨강다시 시도 · 지원팀 · 요청 ID 복사 · 시각
점검 중503 + Retry-After · 예정 공지정보 · 렌치상태 페이지. 끝나면 자동으로 다시 불러옵니다. 예정 시각은 UTC → 현지(시간대 글자)

키보드

키동작
Tab머리 링크 → 동작 버튼 → 바닥의 요청 ID 복사 → 바닥 링크 순서입니다. 제목은 탭 순서에 없습니다.
EnterSpace동작 버튼 · 복사 버튼을 누릅니다.

props

소스의 타입과 JSDoc 에서 생성한 표입니다. 컴포넌트를 고치면 pnpm gen 으로 다시 만듭니다.

SystemLayout

prop타입기본값설명
status필수"not-found" | "forbidden" | "error" | "maintenance"—아이콘 · 톤 · 기본 문구를 정한다. 빨강은 error(서버가 실패한 5xx)의 아이콘에만 쓴다
titleReactNode—없으면 status 의 기본 제목. 셸 밖 화면이라 h1 이다(W2-5 결정 #23)
descriptionReactNode—없으면 status 의 기본 설명(원인 + 할 일)
codestring—상태 코드 · 경로('404 · /w/hanbit/docs/old'). 작게 mono. 스택 · 내부 경로는 넣지 않는다
actionsReactNode—할 수 있는 일(홈으로 · 다시 시도 · 권한 요청). Button size="sm"
iconReactNode—없으면 status 의 아이콘(검색 · 자물쇠 · 경고 · 렌치)
titleAs"h1" | "h2""h1"제목 요소. 기본 h1. 문서 · 견본처럼 한 화면에 여럿 둘 때만 h2
titleIdstring—제목 id. 앱이 첫 포커스를 이 제목으로 옮긴다(tabIndex=-1)
logoReactNode—머리 왼쪽 로고 자리
headerEndReactNode—머리 오른쪽(상태 페이지 링크 · 로그인한 계정)
requestIdstring—지원팀이 서버 기록을 찾을 요청 ID. 주면 바닥 줄에 복사 버튼과 함께 보인다
occurredAtstring | Date—일이 생긴 시각(UTC). requestId 옆에 timeZone 의 시각으로 보인다
timeZonestring"Asia/Seoul"IANA 시간대. 기본 서울
footerReactNode—바닥 줄의 나머지(도움말 · 개인정보 처리방침 · 언어 · 마지막 확인 시각)
childrenReactNode—빈 상태 대신 다른 몸을 그릴 때
landmarkbooleantruefalse 면 몸을 main 대신 div 로 그린다(문서 · 견본 안에 여러 장 둘 때). 기본 true
lang"ko" | "en" | "ja"—
labelsPartial<SystemLayoutLabels>—
classNamestring—