공공 서비스 및 교육 · 새 리소스

KERN 디자인 시스템.

검증된 타이포그래피, 의미에 맞는 테마, 펼침 영역, 되돌릴 수 있는 확인 흐름을 갖춘 네이티브 KERN 인터페이스를 만드세요.

OpenDesign 가이드8개 챕터참조 항목 16개독자적 적용 가이드
01

KERN 디자인 시스템 인터페이스 미리보기

메모를 수정하고, 취소하거나 삭제를 확인한 뒤 복원하고, 화면 모양을 전환해 보세요.

메모, 세부 정보 및 안전한 확인전체 예시 열기
네이티브 @kern-ux/native 2.8.2 CSS와 Fira Sans를 사용하며, 애플리케이션 동작은 독창적으로 구현되어 로컬에서만 작동합니다. · 구현 레퍼런스
02

KERN 디자인 시스템 디자인 참고 자료

@kern-ux/native 2.8.2에서 추출했습니다. 애플리케이션 레이아웃 선택 사항은 별도로 표시합니다.

타이포그래피와 도형

출처
이름 / 규칙값 / 구성용도
Default fontFira Sans패키지에 포함된 font-face 파일을 불러오세요. CSS만으로는 글꼴 파일이 로드되지 않습니다.
Static sizes16 / 18 / 21px작음, 중간, 큼 크기의 정적 텍스트입니다.
Adaptive sizes below 768px21 / 26 / 32 / 48px중간부터 2x-큰 크기까지의 적응형 타이포그래피입니다.
Adaptive sizes from 768px24 / 32 / 48 / 72px패키지는 이 미디어 쿼리에서 적응형 토큰을 변경합니다.
Font weights400 / 500 / 600일반, 중간, 세미볼드입니다.
Spacing0, 2, 4, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192px일정한 간격으로 증가하는 척도가 아니라 이름이 지정된 간격 토큰입니다.
Border widths0 / 1 / 2 / 4 / 8px기본 테두리 두께는 2px입니다.
Radii0 / 2 / 4 / 8px / 50%없음, 작음, 기본, 큼, 원형입니다.
Focus outline4px기본 focus-visible 윤곽선에는 문맥별 action 포커스 역할이 사용됩니다.
Specimen width800px기존 애플리케이션의 선택 사항이며 KERN 컨테이너 토큰이 아닙니다.

시맨틱 색상 매핑

출처
이름 / 규칙값 / 구성용도
Light textneutral-950--kern-color-layout-text-default
Dark textneutral-025테마가 바뀌면 동일한 시맨틱 역할의 색상도 바뀝니다.
Light actiondarkblue-700--kern-color-action-default입니다. on-action은 흰색입니다.
Dark actiondarkblue-300on-action은 검은색으로 바뀝니다.
Light / dark backgroundwhite / black--kern-color-layout-background-default
Theme overridedata-kern-theme="light" or "dark"명시적으로 지정한 속성이 시스템 설정에 우선합니다.
03

KERN 디자인 시스템 종합 가이드

실제 인터페이스를 위해 이 시스템을 선택하고 적용하고 검토하는 실용 가이드.

DESIGN-kern.md

완전한 안내와 구현 시작점, 소스 링크.

가이드 다운로드

KERN 디자인 시스템 네이티브 HTML 및 CSS와 브라우저 동작

패키지에서 제공하는 항목

KERN native 2.8.2에는 컴포넌트 CSS와 글꼴이 포함되어 있습니다. 이 예제는 해당 파일을 직접 가져옵니다. 버튼, textarea, Details, Dialog는 KERN 클래스가 적용된 네이티브 요소입니다. React provider나 JavaScript 컴포넌트 생성자는 필요하지 않습니다. 다이얼로그와 관련된 판단 로직은 애플리케이션에서 제공해야 합니다. 스타일만으로는 입력값이 지워지지 않습니다.

이 OpenDesign 가이드에서
  1. 버전을 고정한 네이티브 패키지를 설치합니다.
  2. 상대 경로를 유지한 채 스타일시트와 글꼴을 함께 복사합니다.
  3. 아래 전체 예제를 저장한 다음 해당 디렉터리를 HTTP로 제공합니다.

지원 사양 읽기

KERN 디자인 시스템의 Fira Sans와 적응형 타이포그래피

타이포그래피를 명시적으로 불러오기

kern.min.css에는 Fira Sans가 지정되어 있고, fonts/fira-sans.css에는 실제 font-face와 상대 경로의 WOFF2 에셋이 선언되어 있습니다. 글꼴 디렉터리를 그대로 유지해야 스타일시트에 올바른 글꼴이 지정되어 있는데도 다른 글꼴로 조용히 대체되는 일을 막을 수 있습니다. 정적 텍스트 크기는 16, 18, 21px로 유지되며, 적응형 제목 및 헤딩 토큰은 768px에서 바뀝니다. 계층 구조에는 제목 요소를 사용하고, 시각적 표현에는 적절한 KERN 클래스를 사용하세요. 이 예제에는 h1이 하나만 있으며 다이얼로그에는 별도의 h2가 지정되어 있습니다.

지원 사양 읽기

KERN 디자인 시스템의 간격, 너비, 반응형 레이아웃

토큰과 레이아웃 구성을 구분하기

KERN은 0~192px 범위의 이름이 지정된 간격 토큰을 제공하며, 작은 값에는 2px와 4px 단위의 간격도 포함됩니다. 테두리와 모서리 반경 토큰은 별도의 척도를 사용합니다. 이 예제는 세로 간격을 24px로 유지하고 작업 행을 줄바꿈할 수 있게 구성합니다. 콘텐츠 최대 너비 800px와 다이얼로그 최대 너비 560px는 명시적으로 지정한 애플리케이션별 선택 사항이며, 어느 쪽도 범용 KERN 컨테이너로 제시하지 않습니다. 화면이 좁을 때는 페이지 여백이 16px로 바뀌고 다이얼로그 너비는 뷰포트 안에 유지됩니다. 문서에 최소 뷰포트 높이를 적용하지 않으므로 다른 요소에 포함해도 크기 조정 피드백 루프가 발생하지 않습니다.

지원 사양 읽기

KERN 디자인 시스템의 시맨틱 색상과 외관

개별 16진수 값이 아니라 역할을 전환하기

패키지는 텍스트, 액션, 배경, 포커스에 시맨틱 CSS 속성을 사용합니다. 라이트 및 다크 팔레트는 이러한 역할의 색상을 함께 바꿉니다. 예를 들어 action-default는 라이트 모드에서 darkblue-700, 다크 모드에서 darkblue-300에 매핑되고, 전경색은 흰색에서 검은색으로 바뀝니다. 이 예제는 html에 data-kern-theme을 설정하고 눌림 상태를 표시하는 버튼을 제공합니다. 이 설정은 현재 문서에만 적용되며 저장되지 않습니다. 명시적 속성을 제거하면 스타일시트는 prefers-color-scheme을 따릅니다.

지원 사양 읽기

KERN 디자인 시스템의 라벨이 있는 편집 가능한 메모

안내를 계속 표시하기

textarea에는 kern-form-input 안에 kern-form-input__input을 사용하고, 입력 요소의 id를 가리키는 실제 label을 연결합니다. 안내 문구에는 별도의 id를 지정하고 aria-describedby로 입력 요소와 연결합니다. 선택 입력인 로컬 메모이므로, 이 예제에서는 필수 입력 오류나 서버 저장 기능을 만들어내지 않습니다. ‘예시 복원’을 선택하면 초기값을 설정하고 편집 가능한 필드에 포커스를 둡니다. 상태 영역은 라벨을 대체하거나 비활성 텍스트로 포커스를 옮기지 않고 결과를 알립니다.

지원 사양 읽기

KERN 디자인 시스템의 Details로 부가 정보 표시하기

공개 상태 관리는 브라우저에 맡기기

열린 상태는 details 요소가 관리하고 summary가 트리거 역할을 합니다. KERN은 표현을 위해 kern-details__header, 작은 제목 span, kern-details__body를 추가합니다. 이 예제에서는 보관 기간 정보를 부가 정보로 여기에 배치합니다. 필수 안내, 오류, 폐기 작업은 공개 영역 밖에 계속 표시합니다. 네이티브 키보드 동작으로 활성화할 수 있으므로 별도의 클릭 핸들러나 중복된 aria-expanded 상태가 필요하지 않습니다.

  • summary는 내용을 구체적이고 간결하게 설명하도록 작성하세요.
  • summary 안에 다른 버튼이나 링크를 넣지 마세요.
  • 서로 관련된 항목을 묶어 공개할 때는 Accordion을 사용하세요. 관련 없는 작업을 Details처럼 보이게 만들지 마세요.

지원 사양 읽기

KERN 디자인 시스템의 안전한 종료가 가능한 확인 다이얼로그

구조와 동작 제어

다이얼로그의 h2를 라벨로 사용하고, 짧은 결과 설명을 연결합니다. 헤더, 본문, 푸터에는 KERN에 문서화된 클래스를 사용합니다. showModal()은 네이티브 다이얼로그를 최상위 레이어에 표시하고, close()는 상호작용을 끝냅니다. autofocus를 통해 ‘메모 유지’에 초기 포커스를 둡니다. Escape를 누르면 텍스트를 변경하지 않고 닫히며, 닫힘 이벤트 리스너는 ‘메모 폐기’로 포커스를 돌려보냅니다. ‘예, 폐기’를 선택했을 때만 값이 변경됩니다. 데이터 삭제 확인이므로 배경 클릭으로는 다이얼로그를 닫지 않습니다. 이는 일반 예제의 배경 클릭 닫기 핸들러를 무분별하게 복사하는 대신, 중요한 결정을 위한 문서화된 지침을 따릅니다.

지원 사양 읽기

KERN 디자인 시스템의 통합과 적용 범위

필요한 의존성을 모두 포함해 배포하기

아래 설정은 버전을 정확히 지정한 패키지 하나를 설치하고 CSS과 글꼴 디렉터리를 복사합니다. 전체 예제에는 자체 레이아웃 CSS, 루트 테마 속성, DOM 구조, 이벤트 연결 코드가 포함되어 있습니다. 실제 양식에 통합한 뒤에는 다이얼로그의 두 가지 결과, Escape, 좁은 화면을 모두 테스트하세요. KERN 코드는 EUPL 라이선스로 제공되며, 웹사이트의 텍스트 및 그래픽 자료에는 CC BY-NC-SA가 적용됩니다. 이 독립적인 예제는 기관의 정체성을 복제하거나 서비스가 접근성 감사를 통과했다고 암시하지 않습니다. 실제 애플리케이션에는 데이터 영속성, 서버 측 검증, 전체 사용자 여정에 대한 평가가 여전히 필요합니다.

지원 사양 읽기

KERN 디자인 시스템 컴포넌트 예제

네이티브 메모 및 확인 다이얼로그 전체 예제

문서 마크업, 레이아웃 CSS, 애플리케이션 동작이 모두 포함되어 있습니다. 설정 블록을 사용해 에셋을 설치하세요.

html
<!doctype html><html lang="en" data-kern-theme="light"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>KERN workshop note</title><link rel="stylesheet" href="vendor/kern-2.8.2/kern.min.css"><link rel="stylesheet" href="vendor/kern-2.8.2/fonts/fira-sans.css"><style>body{margin:0;padding:clamp(16px,4vw,40px);color:var(--kern-color-layout-text-default)}main{max-width:800px;margin:auto;display:grid;gap:24px}.top,.actions{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.top{justify-content:space-between}.kern-dialog{max-width:min(560px,calc(100% - 32px))}textarea{width:100%;resize:vertical}#status{min-height:24px}.kern-details{width:100%}</style><main><div class="top"><span class="kern-preline">KERN · Native components</span><button class="kern-btn kern-btn--secondary" id="theme" aria-pressed="false"><span class="kern-label">Dark appearance</span></button></div><h1 class="kern-heading kern-heading--large">Workshop note</h1><p class="kern-body">Prepare a short note for your next workshop. This demonstration keeps edits only in this page.</p><div class="kern-form-input"><label class="kern-label" for="note">Your note</label><p class="kern-hint" id="hint">No personal information is needed. Nothing is submitted.</p><textarea class="kern-form-input__input" rows="5" id="note" aria-describedby="hint">Discuss accessible ways to collect workshop feedback.</textarea></div><details class="kern-details"><summary class="kern-details__header"><span class="kern-title kern-title--small">What happens to this note?</span></summary><div class="kern-details__body"><p class="kern-body">Edits live in this browser tab. Reloading restores the example text. Discarding clears the current note after confirmation; it does not delete a server record.</p></div></details><div class="actions"><button class="kern-btn kern-btn--primary" id="discard"><span class="kern-label">Discard note</span></button><button class="kern-btn kern-btn--secondary" id="restore"><span class="kern-label">Restore example</span></button></div><p id="status" class="kern-body" role="status"></p><dialog class="kern-dialog" id="confirm" aria-labelledby="confirm-title" aria-describedby="confirm-description"><header class="kern-dialog__header"><h2 class="kern-title kern-title--large" id="confirm-title">Discard this note?</h2></header><section class="kern-dialog__body"><p class="kern-body" id="confirm-description">Your current text will be cleared from this page. Choose Keep note to continue editing.</p></section><footer class="kern-dialog__footer"><button class="kern-btn kern-btn--secondary" id="keep" autofocus><span class="kern-label">Keep note</span></button><button class="kern-btn kern-btn--primary" id="clear"><span class="kern-label">Yes, discard</span></button></footer></dialog></main><script>const byId=id=>document.getElementById(id),note=byId('note'),modal=byId('confirm'),original=note.value;byId('discard').onclick=()=>modal.showModal();byId('keep').onclick=()=>modal.close('keep');byId('clear').onclick=()=>{note.value='';modal.close('discard');byId('status').textContent='Note discarded from this page.'};modal.addEventListener('close',()=>byId('discard').focus());byId('restore').onclick=()=>{note.value=original;byId('status').textContent='Example restored.';note.focus()};byId('theme').onclick=()=>{const dark=document.documentElement.dataset.kernTheme!=='dark';document.documentElement.dataset.kernTheme=dark?'dark':'light';byId('theme').setAttribute('aria-pressed',String(dark))};</script></html>

코드 참조

04

KERN 디자인 시스템 에이전트 설정

구현 시작점

빌드 단계나 UI 프레임워크가 필요하지 않습니다. CSS에서 상대 경로의 WOFF2 파일을 불러오므로 글꼴 디렉터리는 그대로 유지하세요. Sources의 완전한 작업 예제 ZIP에는 정확한 미리보기 종속 항목과 전체 문서도 포함되어 있습니다. 압축을 푼 뒤 해당 디렉터리에서 python3 -m http.server 8080을 실행하고 http://localhost:8080/kern.html을 여세요. 모듈을 사용하는 예제는 file://로 열지 마세요.

bash
npm install --save-exact @kern-ux/[email protected]
mkdir -p vendor/kern-2.8.2
cp node_modules/@kern-ux/native/dist/kern.min.css vendor/kern-2.8.2/
cp -R node_modules/@kern-ux/native/dist/fonts vendor/kern-2.8.2/
# Save the complete HTML example below as kern.html beside vendor/.
python3 -m http.server 8080
# Open http://localhost:8080/kern.html

프로젝트를 위한 프롬프트

에이전트 프롬프트
@kern-ux/native 2.8.2 CSS와 패키지에 포함된 Fira Sans를 사용해 로컬 워크숍 메모 예제를 만드세요. 레이블이 지정된 kern-form-input 텍스트 영역, 보조 네이티브 Details 공개 영역, 레이블이 지정된 헤더·본문·푸터가 있는 kern-dialog를 구성하세요. showModal()로 대화상자를 열고 Keep note에 자동으로 포커스를 둡니다. Escape를 누르면 텍스트를 바꾸지 않고 대화상자를 닫으며, Yes, discard를 선택한 경우에만 메모를 지우세요. 닫을 때 트리거로 포커스를 돌려보내고 Restore example을 제공하세요. 새 팔레트 토큰을 만들지 말고 data-kern-theme을 light와 dark 사이에서 전환하세요. 기존 애플리케이션의 너비 선택지를 그대로 유지하고 메모를 로컬에 보관하세요. 업로드나 서버 초안, 정부 서비스 관련 주장은 필요하지 않습니다.
05

KERN 디자인 시스템 출처 및 범위

KERN 코드를 사용한 독창적인 데모입니다. 정부 기관의 정체성, 영구 저장 또는 접근성 인증을 의미하지 않습니다.