코드에서 토큰 쓰기
Atlassian 토큰을 Tailwind 유틸과 CSS 변수로 써요.
Steel 의 모든 시각 값은 디자인 토큰이에요. 색을 hex 로, 간격을 임의 px 로 적지 않고 토큰 이름으로 적어야 다크 모드와 토큰 업데이트가 자동으로 반영돼요.
이름 규칙
토큰 CSS 변수는 Atlassian 원본과 같은 이름(--ds-*)이에요. Tailwind 유틸은 원본 이름 앞에 ds- 를 붙여 그대로 써요. Atlassian 문서나 Figma 에서 본 토큰 이름을 점(.) 대신 하이픈(-)으로 이어 붙이면 돼요.
| Atlassian 토큰 | CSS 변수 | Tailwind 유틸 |
|---|---|---|
color.text | --ds-text | text-ds-text |
color.text.subtle | --ds-text-subtle | text-ds-text-subtle |
color.link | --ds-link | text-ds-link |
color.icon.subtle | --ds-icon-subtle | text-ds-icon-subtle |
color.background.brand.bold | --ds-background-brand-bold | bg-ds-background-brand-bold |
color.background.neutral.subtle.hovered | --ds-background-neutral-subtle-hovered | hover:bg-ds-background-neutral-subtle-hovered |
color.border.focused | --ds-border-focused | border-ds-border-focused, outline-ds-border-focused |
elevation.surface.raised | --ds-surface-raised | bg-ds-surface-raised |
elevation.shadow.overlay | --ds-shadow-overlay | shadow-ds-overlay |
space.200 | --ds-space-200 | p-ds-200, mt-ds-200, gap-ds-200 |
space.gap.medium | --ds-space-gap-medium | gap-ds-gap-medium |
radius.small | --ds-radius-small | rounded-ds-small |
border.width | --ds-border-width | border-(length:--ds-border-width) |
font.heading.medium | --ds-font-heading-medium | ds-font-heading-medium |
font.body | --ds-font-body | ds-font-body |
font.weight.semibold | --ds-font-weight-semibold | font-ds-semibold |
opacity.disabled | --ds-opacity-disabled | opacity-(--ds-opacity-disabled) |
원본 접두사 생략
색 토큰은 color. 을, 높이 토큰은 elevation. 을 뺀 이름이 CSS 변수가 돼요. Atlassian 의 token('color.text.subtle') 이 var(--ds-text-subtle) 을 돌려주는 것과 같은 규칙이에요.
색
색 토큰은 역할(text, icon, border, background, surface, link)과 의미(brand, danger, warning, success, information, discovery, neutral), 강도(subtlest → subtler → subtle → 기본 → bold → bolder), 상태(hovered, pressed)를 이어 붙인 이름이에요.
<div className="rounded-ds-small border border-ds-border-danger bg-ds-background-danger p-ds-150">
<p className="ds-font-body text-ds-text-danger">스프린트 마감일이 지났어요.</p>
</div>- 글자에는
text-ds-text*, 아이콘에는text-ds-icon*을 써요. 아이콘은 글자보다 한 단계 옅은 값이 따로 있어요. - 상호작용 요소는 기본·
hovered·pressed세 값을 짝으로 써요.
<button className="bg-ds-background-neutral-subtle hover:bg-ds-background-neutral-subtle-hovered active:bg-ds-background-neutral-subtle-pressed">
필터
</button>높이 (Elevation)
면(surface)과 그림자(shadow)는 항상 짝으로 써요. 다크 모드에서는 그림자 대신 면 색이 밝아져서 높이를 표현해요.
| 높이 | 면 | 그림자 | 예 |
|---|---|---|---|
| Sunken | bg-ds-surface-sunken | — | 보드 컬럼, 백로그 영역 |
| Default | bg-ds-surface | — | 페이지 기본 배경 |
| Raised | bg-ds-surface-raised | shadow-ds-raised | 카드, 보드의 이슈 카드 |
| Overlay | bg-ds-surface-overlay | shadow-ds-overlay | 드롭다운, 팝업, 모달, 플래그 |
<article className="rounded-ds-small bg-ds-surface-raised p-ds-150 shadow-ds-raised hover:bg-ds-surface-raised-hovered">
…
</article>간격
간격은 8px 를 기준으로 한 스케일이에요. 숫자는 8px 대비 백분율이라 100 = 8px, 200 = 16px 이에요.
| 토큰 | 값 | 토큰 | 값 |
|---|---|---|---|
ds-025 | 2px | ds-250 | 20px |
ds-050 | 4px | ds-300 | 24px |
ds-075 | 6px | ds-400 | 32px |
ds-100 | 8px | ds-500 | 40px |
ds-150 | 12px | ds-600 | 48px |
ds-200 | 16px | ds-800 / ds-1000 | 64px / 80px |
p-ds-*, px-ds-*, m-ds-*, gap-ds-*, space-y-ds-* 처럼 Tailwind 간격 유틸 어디에나 쓸 수 있어요. 의미 이름이 붙은 gap-ds-gap-small(6px), p-ds-inset-medium(16px) 같은 별칭도 있어요. 음수 간격은 -m-ds-100 또는 m-ds-negative-100 으로 써요.
모서리
| 유틸 | 값 | 쓰는 곳 |
|---|---|---|
rounded-ds-xsmall | 2px | 배지, 로젠지 같은 작은 표시 |
rounded-ds-small | 4px | 버튼, 입력, 카드 (기본) |
rounded-ds-medium | 6px | 큰 카드, 패널 |
rounded-ds-large | 8px | 모달, 팝업 같은 오버레이 |
rounded-ds-xlarge | 12px | 큰 컨테이너 |
rounded-ds-full | 9999px | 아바타, 토글 |
rounded-ds-tile | 25% | 타일 |
타이포그래피
ds-font-* 는 CSS font 단축 속성이라 크기·행간·굵기·서체를 한 번에 정해요. 굵기만 바꾸고 싶다면 font-ds-* 를 함께 써요.
<h2 className="ds-font-heading-medium text-ds-text">이번 스프린트</h2>
<p className="ds-font-body text-ds-text-subtle">담당자가 지정되지 않은 이슈가 3개 있어요.</p>
<span className="ds-font-body-small font-ds-semibold text-ds-text-subtlest">마지막 업데이트 5분 전</span>| 유틸 | 크기 / 행간 | 용도 |
|---|---|---|
ds-font-heading-xxlarge … ds-font-heading-xxsmall | 32/36 … 12/16 | 제목 |
ds-font-body-large | 16/24 | 긴 글 본문 |
ds-font-body | 14/20 | UI 기본 본문 |
ds-font-body-small | 12/16 | 보조 설명, 메타 정보 |
ds-font-metric-large / medium / small | 28 / 24 / 16 | 대시보드 숫자 |
ds-font-code | 0.875em | 인라인 코드 |
서체만 필요하면 font-ds-body, font-ds-heading, font-ds-code 를 써요.
포커스 링
ADS 포커스 링은 2px 외곽선을 2px 띄워서 그려요. 키보드로 포커스할 때만 보이도록 focus-visible 을 써요.
<a className="rounded-ds-small outline-2 outline-offset-2 outline-transparent focus-visible:outline-ds-border-focused">
보드 보기
</a>모션
--ds-motion-<이름>-duration / -curve 짝을 Tailwind 의 duration-(…), ease-(…) 로 써요.
<div className="transition-opacity duration-(--ds-motion-avatar-enter-duration) ease-(--ds-motion-avatar-enter-curve)" />CSS 변수 직접 쓰기
Tailwind 를 쓰지 않는 곳(CSS 모듈, 인라인 스타일, 차트 라이브러리 옵션 등)에서는 CSS 변수를 바로 써요.
.issue-card {
padding: var(--ds-space-150);
border-radius: var(--ds-radius-small);
background-color: var(--ds-surface-raised);
box-shadow: var(--ds-shadow-raised);
font: var(--ds-font-body);
color: var(--ds-text);
}
.issue-card:hover {
background-color: var(--ds-surface-raised-hovered);
}<span style={{ color: 'var(--ds-text-success)' }}>완료</span>Tailwind 임의값과 섞어 쓸 수도 있어요: shadow-[inset_0_0_0_1px_var(--ds-border-focused)].
하지 말아야 할 것
bg-ds-background-selected text-ds-text-selected 처럼 의미가 있는 토큰을 써요.bg-[#E9F2FE] 처럼 hex 를 직접 쓰면 다크 모드와 토큰 업데이트를 따라가지 못해요.dark:변형을 따로 쓰지 않아요. 토큰이.dark에서 알아서 바뀌어요.- 팔레트 변수(
--ds-palette-*)는 토큰 생성용이에요. 컴포넌트에서는 시맨틱 토큰만 써요. - 콘마켓(SEED 계열) 유틸(
bg-bg-*,text-fg-*,p-x4)은 Steel 에서 쓰지 않아요.