Aksel v8은 --ax-* 토큰과 .aksel 컴포넌트 클래스를 사용합니다. 마이그레이션 가이드에 따르면 이전 .navds 클래스는 더 이상 작동하지 않으며 컴포넌트별 토큰도 제거되었습니다. 따라서 오래된 스크린샷을 바탕으로 만든 튜토리얼은 그럴듯해 보여도 구현 안내가 잘못되었을 수 있습니다.
이 페이지는 네이티브 CSS 버전을 8.18.0으로 고정하고 이에 맞는 React 설치 방법을 제공합니다. 미리보기는 일반 HTML와 함께 확인된 네이티브 테이블 클래스를 사용하며, 선택과 정렬은 애플리케이션의 JavaScript에서 처리합니다. 스타일시트를 다운로드하면 React Table이 생성된다고 주장하지 않습니다.
토큰 참조 문서에 따르면 글꼴 모음은 Source Sans 3, Source Sans Pro, Arial, sans-serif 순입니다. 보통 굵기는 400이며, 이름이 붙은 굵게 토큰은 600입니다. 본문 크기에는 14, 16, 18, 20px이 있고, 제목 역할은 24, 28, 32, 40px까지 제공됩니다.
로컬 미리보기는 글꼴 토큰을 Arial로 설정하고 상속된 글꼴 사용을 명시적으로 재정의하므로 원격 글꼴을 요청하지 않습니다. 이는 대체 글꼴을 사용한다는 점을 밝힌 것이며, Arial이 기본 Aksel 서체라고 주장하는 것이 아닙니다. 컴포넌트 텍스트 크기는 CSS에서 계속 제공합니다.
--ax-space-16은 1rem이고 --ax-space-24는 1.5rem입니다. v8의 기본 문법은 이러한 이름을 따릅니다. padding="space-16" 및 gap={{xs:"space-8",md:"space-16"}}처럼 사용하세요. 마이그레이션 지침을 확인하지 않은 채 이전 숫자형 간격 prop으로 대체하지 마세요.
문서에 정의된 모서리 반경 역할에는 2, 4, 8, 12, 16px과 full이 포함됩니다. 미리보기에서는 네이티브 테이블 크기를 유지하고 애플리케이션 컨트롤 주변에 space-24를 사용합니다. 64rem의 콘텐츠 너비는 이 페이지에서 선택한 값이며, 중단점 값은 확인한 스타일시트에서 가져옵니다.
네이티브 테이블에는 헤더, 본문, 행, 헤더 셀 및 데이터 셀에 각각 별도의 클래스가 있습니다. React에서 이에 해당하는 요소는 Table.Header, Table.Body, Table.Row, Table.HeaderCell 및 Table.DataCell입니다. 참조 열은 행 헤더이며, 각 열 헤더에는 scope=col을 지정합니다.
캡션에 항목의 이름을 지정합니다. 대기 일수는 수량이므로 오른쪽 정렬하고, 참조 ID는 왼쪽 정렬합니다. 좁은 화면에서는 카드 형태의 행으로 바꿔 테이블의 관계를 훼손하는 대신, 레이블이 있고 키보드로 포커스할 수 있는 영역 안에서 가로 스크롤을 제공합니다.
확인한 네이티브 CSS에서 중간 밀도 셀은 세로로 space-12, 가로로 space-8을 사용합니다. 작은 밀도는 세로로 space-4를, 큰 밀도는 세로로 space-16을 사용합니다. 밀도 선택기는 네이티브 수정자 클래스를 바꾸며, 뷰포트에 더 많은 정보를 넣기 위해 본문 글꼴 크기를 줄이지 않습니다.
Waiting days 헤더는 네이티브 스타일의 정렬 버튼입니다. 핸들러는 숫자 값을 정렬하고 해당 헤더의 aria-sort를 업데이트합니다. 이 변환은 애플리케이션이 담당합니다. React API도 마찬가지로 정렬 상태와 onSortChange를 제공하며, 임의의 도메인 레코드를 자동으로 정렬하지 않습니다.
Table 문서에서는 onRowClick만으로는 키보드 접근성을 보장할 수 없다고 안내합니다. 따라서 예제에서는 각 레코드에 레이블이 지정된 체크박스를 제공하고, 전체 선택용 체크박스도 제공합니다. 일부 행만 선택된 경우 전체 선택 체크박스는 불확정 상태가 됩니다.
정렬해도 안정적인 레코드 식별자를 기준으로 선택 상태를 유지합니다. 순서가 바뀔 때 체크 표시가 다른 레코드로 옮겨 가지 않도록 현재 행 인덱스를 선택 키로 사용하지 않습니다. 선택 항목 수는 공손한 상태 알림 영역에 업데이트됩니다. 선택한 레코드는 어디에도 전송되지 않습니다.
@navikt/ds-react와 @navikt/ds-css를 같은 버전으로 설치한 다음, 애플리케이션 루트에 가까운 곳에서 CSS를 한 번 불러옵니다. 패키지에는 이미 토큰이 포함되어 있습니다. 공식 CSS 가져오기 가이드에서는 전역 파일과 컴포넌트 파일을 세분화해 불러오는 방법도 지원하지만, 기본 파일은 필수이며 글꼴과 토큰을 제공하거나 명시적으로 대체해야 합니다.
Aksel는 CSS 레이어를 사용합니다. 컴포넌트 스타일을 의도치 않게 덮어쓰는 광범위한 비레이어 선택자는 피하세요. 애플리케이션의 사용자 지정 레이아웃에는 자체 클래스를 사용하세요. 독립형 미리보기에는 로컬 버전 관리 CSS와 의도적으로 대체한 글꼴이 사용됩니다. React 예제는 별도의 소스 검증된 통합 경로입니다.
Sources에서 완전한 예시를 다운로드하세요. README에 정확한 로컬 실행 명령이 안내되어 있습니다.
벤더 경로는 이 문서에 대한 상대 경로로 유지하세요. 아카이브에는 이 미리보기에 사용된 에셋이 모두 포함되어 있습니다.
04
Aksel 디자인 시스템 에이전트 설정
구현 시작점
미리보기에서는 네이티브 CSS 8.18.0을 로컬에서 렌더링합니다. React 구성은 소스로 검증했지만 별도로 빌드하지 않았습니다. 버전을 일치시키고 v7 navds 클래스와 v8 CSS를 함께 사용하지 마세요. Sources에 있는 전체 작업 예제 ZIP에는 미리보기에 필요한 정확한 의존성과 전체 문서도 포함되어 있습니다. 압축을 푼 디렉터리에서 python3 -m http.server 8080을 실행한 다음 http://localhost:8080/nav-aksel.html을 여세요. 모듈 기반 예제를 file://로 열지 마세요.
일치하는 8.18.0 CSS/React 패키지를 사용해 시맨틱 Aksel v8 테이블을 만드세요. 캡션, 열 헤더, 레코드 행 헤더를 유지하세요. 실제 ax 토큰과 space-* 프리미티브 속성을 사용하세요. aria-sort를 사용하는 숫자 정렬, 안정적인 ID를 기반으로 한 체크박스 선택, 불확정 상태를 지원하는 전체 선택 기능을 제공하세요. 키보드 상호작용에 onRowClick만 의존하지 마세요. 밝은 테마와 어두운 테마의 역할 토큰을 지원하고, 좁은 화면에는 레이블이 있는 가로 스크롤 영역을 제공하세요.
05
Aksel 디자인 시스템의 출처와 범위
NAV와 무관한 독립 예제 레코드입니다. 공개한 글꼴 대체 설정과 함께 네이티브 스타일시트를 사용합니다. 정렬, 선택, 레이아웃은 애플리케이션 동작이며 실제 혜택이나 사례 데이터는 표시하지 않습니다.