Get startedFoundationsComponentsPatternsRules

Code

Code 는 본문 속 짧은 코드를, CodeBlock 은 여러 줄 코드를 서식 그대로 보여줘요.

설치

pnpm dlx shadcn@latest add https://rebar.conmarket-landing.workers.dev/r/steel/code.json

Examples

Code (인라인)

Code 는 문장 안에 들어가는 짧은 코드 조각을 강조해요. 배경은 color.background.neutral, 글자는 코드 서체(font.code)이고 모서리는 radius.small 이에요. 본문 줄 높이를 그대로 물려받고, 길면 본문과 함께 줄바꿈돼요.

CodeBlock

CodeBlock 은 한 줄이 넘는 코드(함수, 설정 파일 전체 등)를 들여쓰기와 줄바꿈을 그대로 지켜 보여줘요. 기본으로 줄 번호가 보이고, 오른쪽 위에는 언어 이름과 복사 버튼이 마우스를 올리거나 포커스가 들어가면 나타나요.

원본은 PrismJS 로 문법 강조를 하지만, Steel 은 추가 의존성 없이 모든 코드를 단색(color.text)으로 보여줘요. language 는 표시 이름과 data-code-lang 속성에만 쓰여요.

줄 강조

highlight 에 강조할 줄을 쉼표로 적어요. "3", "1-5", "1-5,7,10-12" 처럼 범위와 단일 줄을 섞을 수 있어요. 강조된 줄은 배경이 한 단계 진해지고 줄 번호 왼쪽에 color.border.focused 막대가 붙어요.

줄 번호

firstLineNumber 로 시작 번호를 바꿀 수 있어요. 파일 중간을 잘라 보여줄 때 유용해요. 명령어처럼 줄 번호가 의미 없는 코드는 shouldShowLineNumbers={false} 로 숨겨요.

긴 줄 줄바꿈

기본은 긴 줄이 가로로 스크롤돼요. shouldWrapLongLines 를 켜면 줄바꿈해서 보여줘요. 스크롤이 생기면 코드 영역이 키보드로 포커스할 수 있는 영역(role="region")이 돼요.

양방향 문자 경고

코드에 양방향 제어 문자(U+202E, U+2066 등)가 있으면 보이는 순서와 실제 순서가 달라져 악성 코드를 숨길 수 있어요(Trojan Source). Code 와 CodeBlock 은 기본으로 이런 문자를 <U+202e> 같은 경고 표시로 드러내요. 끄려면 hasBidiWarnings={false} 를 써요.

Usage guidelines

  • 문장 속에 함수 이름, 명령어, 파일 경로, 설정 키처럼 짧은 코드가 나오면 Code 를 써요.
  • 한 줄보다 긴 코드, 여러 표현식이 이어지는 코드, 파일 일부를 보여줄 때는 CodeBlock 을 써요.
  • 설명하려는 부분이 있다면 highlight 로 해당 줄만 강조해 시선을 모아요. 너무 많은 줄을 강조하면 효과가 사라져요.
  • 사용자가 그대로 붙여 넣을 명령어는 복사 버튼을 켜 두고, 줄 번호는 끄는 편이 읽기 쉬워요.
  • 기본 스타일을 덮어쓸 때는 글자와 배경의 명도 대비를 4.5:1 이상으로 유지해요.
Do· 짧은 코드는 인라인
문장 안의 sprint.start() 같은 짧은 코드는 Code 로 감싸요.
Don't· 긴 코드를 인라인으로
여러 줄짜리 코드를 Code 에 넣으면 들여쓰기가 사라지고 읽기 어려워요. CodeBlock 을 써요.

Accessibility

  • Code 는 <code> 요소로, CodeBlock 은 <pre><code> 로 렌더링돼 스크린리더가 코드임을 알 수 있어요.
  • 줄 번호는 aria-hidden 과 user-select: none 이라 읽히지도, 복사되지도 않아요.
  • 강조된 줄 앞뒤에는 숨김 텍스트(highlightedStartText, highlightedEndText, 기본값 "강조 시작"/"강조 끝")가 들어가 스크린리더 사용자에게도 강조 구간을 알려요.
  • 가로 스크롤이 생기면 코드 영역이 tabIndex=0, role="region", aria-label(label) 을 가져 키보드 화살표로 스크롤할 수 있어요.
  • 복사 버튼은 IconButton 이라 Tab 으로 이동하고 Enter·Space 로 실행해요. 복사가 끝나면 aria-live 영역이 "클립보드에 복사했어요" 를 읽어 줘요.
  • 양방향 문자 경고는 시각용 표시를 aria-hidden 으로 감추고 대신 문자 코드를 숨김 <mark> 로 읽어 줘요.

Props

Code

Prop

Type

CodeBlock

Prop

Type

On this page