인터랙티브 컴포넌트 가이드

Published

- 32 min read

Contents

이 문서는 아코디언, 탭, 콜아웃, 인용, FAQ, 코드블럭, 키보드, 다운로드 버튼 등 구조와 상호작용이 있는 서식 요소를 정리한 가이드입니다. 각 항목은 작성법과 렌더링 결과를 나란히 배치해 바로 복사해서 사용할 수 있습니다.

이 시리즈의 다른 가이드:

아코디언

아코디언은 :::zippy[제목] 디렉티브로 생성합니다. 클릭 전까지 내용이 접혀 있어 문서 길이를 줄이면서도 정보를 유지할 수 있습니다. 자주 조회하지 않는 상세 내용, 예외 처리 절차, 보조 정보를 담기에 적합합니다.

기본

단락, 목록, 코드블럭 등 마크다운 문법을 내부에 자유롭게 사용할 수 있습니다.

작성법

:::zippy[제목]
설명 단락, 목록, 코드 등 마크다운 문법을 함께 사용할 수 있습니다.
:::

렌더링 결과

예시 아코디언

아코디언은 긴 본문을 접어 두고 필요한 시점에만 펼쳐 읽도록 설계할 때 유용합니다. 운영 문서에서는 점검 기준, 예외 처리, 승인 조건을 한 덩어리로 묶어 제공하면 문서 길이를 줄이면서도 정보 누락을 막을 수 있습니다.

  • 정책 변경 사유와 적용 일정을 함께 기록
  • 담당자와 검수 완료 시각을 같은 블록에 기록
  • 실패 시 복구 절차를 단계형으로 제공

여러 개 연속

아코디언을 연속으로 배치하면 각 항목을 독립적으로 접고 펼칠 수 있습니다. 유사한 성격의 내용을 그룹으로 구성할 때 적합합니다.

작성법

:::zippy[설치 순서]
1. 배포 대상 버전과 변경 이력 확인
2. 사전 점검 체크리스트(로그/알림/헬스체크) 실행
3. 적용 순서에 맞춰 배포 명령 실행
4. 완료 후 모니터링 지표와 기능 상태 점검
:::
:::zippy[문제 해결]
- 배포 직후 오류가 발생하면 최근 변경 범위를 우선 확인
- 롤백 기준(오류율, 응답 지연, 실패 트랜잭션)을 문서 기준과 비교
- 권한/환경 변수/외부 API 상태를 순서대로 점검
:::

렌더링 결과

설치 순서
  1. 배포 대상 버전과 변경 이력 확인
  2. 사전 점검 체크리스트(로그/알림/헬스체크) 실행
  3. 적용 순서에 맞춰 배포 명령 실행
  4. 완료 후 모니터링 지표와 기능 상태 점검
문제 해결
  • 배포 직후 오류가 발생하면 최근 변경 범위를 우선 확인
  • 롤백 기준(오류율, 응답 지연, 실패 트랜잭션)을 문서 기준과 비교
  • 권한/환경 변수/외부 API 상태를 순서대로 점검

아코디언 내부에 다른 디렉티브 같이 사용

중첩 디렉티브를 사용할 때는 바깥 컨테이너의 콜론 개수를 한 단계 더 크게 잡아야 파싱이 안정적으로 동작합니다. :::zippy 안에 :::note를 쓰려면 바깥을 ::::zippy로 올려야 합니다.

작성법

::::zippy[고급 예시]
:::note
아코디언 안에서도 콜아웃 사용 가능
:::
`코드`나 목록도 함께 작성 가능
::::

렌더링 결과

고급 예시 (중첩 동작)

아래 예시는 아코디언 내부에서 콜아웃과 코드블럭을 함께 사용하는 구조입니다. 긴 안내 문서를 작성할 때 핵심 경고와 실행 예시를 한 섹션에서 제공하면 정보 전달이 쉬워집니다.

사전 승인 없이 운영 값을 직접 변경하지 않도록 기준 문구를 고정해 두면, 문서 해석 차이를 줄일 수 있습니다.

Terminal window
pnpm build
pnpm preview
  1. 변경 요청 번호 확인
  2. 승인자 확인
  3. 배포 후 상태 공유

탭은 ::::tabs + :::tab[탭명] 구조로 생성합니다. OS별 명령, 환경별 설정, 요약/상세 보기처럼 동일 주제를 여러 관점으로 나눠 제공할 때 유용합니다. 페이지 스크롤 없이 관련 정보를 한 위치에서 전환할 수 있어 문서 밀도를 높이는 데 효과적입니다.

기본 2탭

작성법

::::tabs
:::tab[요약]
이 탭은 변경 목적과 영향 범위를 먼저 전달해야 할 때 사용합니다.
- 변경 목적: 왜 이 문서를 수정했는지
- 영향 범위: 어떤 사용자/화면/기능이 달라지는지
- 확인 기준: 수정 후 무엇을 검증해야 하는지
:::
:::tab[상세]
이 탭은 실제 작업자가 그대로 따라할 수 있도록 절차 중심으로 작성합니다.
1. 사전 조건 확인
2. 실행 단계 수행
3. 결과 검증
4. 실패 시 복구 절차
:::
::::

렌더링 결과

    운영체제별 탭 (코드 포함)

    OS별로 명령이 다를 때 탭으로 분리하면 독자가 자신의 환경에 맞는 내용만 확인할 수 있습니다. 탭 안에 코드블럭을 포함할 때는 코드블럭 내부 백틱과 충돌이 없도록 쿼트 수준을 높여 작성합니다.

    작성법

    ::::tabs
    :::tab[Windows]
    Windows 환경에서는 설치 관리자 확인 후 실행 권한을 먼저 점검합니다.
    아래 명령은 환경 확인용 예시이며, 실제 작업 전 PATH와 버전 충돌 여부를 함께 확인하는 것이 좋습니다.
    ```powershell
    winget --version
    ```
    - 설치 경로 확인
    - 관리자 권한 필요 여부 확인
    - 실행 로그 저장 위치 확인
    :::
    :::tab[macOS]
    macOS 환경에서는 쉘 설정 파일(`.zshrc`, `.zprofile`) 반영 여부를 먼저 확인합니다.
    동일 명령이어도 사용자 셸 설정에 따라 결과가 달라질 수 있으므로 버전 정보와 경로 정보를 함께 기록합니다.
    ```bash
    sw_vers
    ```
    - OS 버전 기록
    - 셸 환경 변수 확인
    - 도구 경로 충돌 확인
    :::
    ::::

    렌더링 결과

      3탭 이상

      탭 수에는 제한이 없습니다. 3개 이상 사용할 때도 구조는 동일합니다.

      작성법

      ::::tabs
      :::tab[요약]
      의사결정자가 전체 변경 요지를 1분 내로 파악하는 상황을 가정합니다. 변경 목적, 기대 효과, 잠재 위험을 짧은 문장으로 정리하면 사전 승인 과정이 빨라집니다.
      :::
      :::tab[상세]
      실제 작업자가 따라갈 절차를 기준으로 작성합니다. 입력값 형식, 필수 옵션, 예외 처리 기준을 순서대로 제공하면 재현성이 올라갑니다.
      :::
      :::tab[트러블슈팅]
      장애 상황에서 바로 사용할 수 있는 점검 순서를 제공합니다. 로그 위치, 임계치 기준, 롤백 조건을 함께 명시하면 대응 시간이 줄어듭니다.
      :::
      ::::

      렌더링 결과

        탭 안에 콜아웃/코드 함께 사용

        탭 내부에 콜아웃을 중첩할 때는 바깥 컨테이너 콜론 수를 한 단계 더 올립니다. :::::tabs 안에서 ::::tab + :::note 형태로 사용합니다.

        작성법

        :::::tabs
        ::::tab[빠른 시작]
        :::note
        기본 옵션으로 먼저 실행한 뒤, 결과를 확인하고 고급 옵션을 단계적으로 적용합니다.
        :::
        1. 기본 설정 적용
        2. 결과 확인
        3. 필요 시 고급 옵션 적용
        ::::
        ::::tab[고급 설정]
        ```bash
        pnpm dev --host
        ```
        ```bash
        pnpm build && pnpm preview
        ```
        고급 설정은 로컬 재현이 끝난 뒤에만 운영 환경에 반영하는 것을 권장합니다.
        - 설정 변경 전후 비교값 기록
        - 실패 시 되돌릴 기준 명시
        - 검증 완료 시간과 담당자 기록
        ::::
        :::::

        중첩 디렉티브를 쓸 때는 바깥 컨테이너 콜론 수를 하나 더 늘리면 파싱 안정성이 올라갑니다.

        렌더링 결과

          콜아웃

          콜아웃은 본문 흐름 중에 독자의 시선을 끌어야 하는 정보를 강조 블록으로 표시합니다. :::note는 참고·안내용, :::caution은 주의가 필요한 경고·위험 내용에 사용합니다.

          note

          :::note는 선택 사항이거나 추가 확인이 필요한 내용을 안내할 때 사용합니다. 기능 동작에는 영향을 주지 않지만 독자가 알아두면 유용한 정보에 적합합니다.

          단일 라인

          작성법

          :::note
          이 설정은 선택 항목이며 기본값으로도 기능 사용이 가능합니다.
          :::

          렌더링 결과

          이 설정은 선택 항목이며 기본값으로도 기능 사용이 가능합니다.

          멀티 라인(다른 서식 포함)

          작성법

          :::note
          이 설정은 기능 동작에 필수는 아니지만, 문서 품질을 일정하게 유지하는 데 도움이 됩니다.
          문서 리뷰 시에는 아래 항목을 함께 점검하면 누락 가능성을 줄일 수 있습니다.
          - 필수/선택 옵션 구분
          - 기본값과 권장값 분리
          - 변경 이력 링크 연결
          검증 명령 예시: `pnpm build`<br />
          참고 문서: [문서 작성 규칙](https://example.com/docs/style-guide)
          :::

          렌더링 결과

          이 설정은 기능 동작에 필수는 아니지만, 문서 품질을 일정하게 유지하는 데 도움이 됩니다. 문서 리뷰 시에는 아래 항목을 함께 점검하면 누락 가능성을 줄일 수 있습니다.

          • 필수/선택 옵션 구분
          • 기본값과 권장값 분리
          • 변경 이력 링크 연결

          검증 명령 예시: pnpm build
          참고 문서: 문서 작성 규칙

          caution

          :::caution은 잘못 적용하면 장애나 데이터 손실로 이어질 수 있는 경고에 사용합니다. 운영 값 변경, 롤백 조건, 승인 필요 사항 등을 표시할 때 적합합니다.

          단일 라인

          작성법

          :::caution
          운영 값 변경은 승인 절차를 거친 뒤에만 진행합니다.
          :::

          렌더링 결과

          운영 값 변경은 승인 절차를 거친 뒤에만 진행합니다.

          멀티 라인(다른 서식 포함)

          작성법

          :::caution
          운영 환경 변경은 즉시 반영되므로 사전 점검 없이 적용하면 장애로 이어질 수 있습니다.
          아래 항목을 기준으로 변경 전후를 반드시 비교해 주세요.
          1. 오류율/응답 시간 기준치 확인
          2. 롤백 기준 및 담당자 확인
          3. 공지 문구와 실제 영향 범위 일치 여부 확인
          즉시 복구가 필요할 때는 `pnpm preview` 결과 확인 후 이전 버전으로 되돌립니다.<br />
          참고 문서: [릴리스 체크리스트](https://example.com/docs/release-checklist)
          :::

          렌더링 결과

          운영 환경 변경은 즉시 반영되므로 사전 점검 없이 적용하면 장애로 이어질 수 있습니다. 아래 항목을 기준으로 변경 전후를 반드시 비교해 주세요.

          1. 오류율/응답 시간 기준치 확인
          2. 롤백 기준 및 담당자 확인
          3. 공지 문구와 실제 영향 범위 일치 여부 확인

          즉시 복구가 필요할 때는 pnpm preview 결과 확인 후 이전 버전으로 되돌립니다.
          참고 문서: 릴리스 체크리스트

          인용

          :::quote[출처] 디렉티브는 외부 문구나 내부 정책 원칙을 강조해서 인용할 때 사용합니다. 일반 마크다운 > 인용문보다 시각적으로 더 부각됩니다. 대괄호 안에 출처나 제목을 적으면 하단에 표시됩니다.

          작성법

          :::quote[문서 작성 원칙]
          문서의 목적은 정보를 많이 담는 것이 아니라, 필요한 정보를 빠르게 찾고 같은 방식으로 재현할 수 있게 만드는 것입니다.
          :::

          렌더링 결과

          문서의 목적은 정보를 많이 담는 것이 아니라, 필요한 정보를 빠르게 찾고 같은 방식으로 재현할 수 있게 만드는 것입니다.

          문서 작성 원칙

          멀티 라인(다른 서식 포함)

          인용 블록 내부에도 마크다운 서식(목록, 링크, 인라인 코드)을 그대로 사용할 수 있습니다.

          작성법

          :::quote[문서 품질 기준]
          문서 업데이트는 기능 변경과 같은 수준으로 관리해야 하며, 아래 항목이 함께 갱신되어야 합니다.
          - 변경 목적
          - 영향 범위
          - 검증 결과
          참고 링크: [문서 작성 규칙](https://example.com/docs/style-guide)
          :::

          렌더링 결과

          문서 업데이트는 기능 변경과 같은 수준으로 관리해야 하며, 아래 항목이 함께 갱신되어야 합니다.

          • 변경 목적
          • 영향 범위
          • 검증 결과

          참고 링크: 문서 작성 규칙

          문서 품질 기준

          FAQ

          FAQ는 ::::faq + :::q[질문] 구조로 작성합니다. 동일한 질문이 반복되는 문서에서 응답 품질을 균일하게 유지할 때 효과적입니다. 질문 클릭 시 답변이 펼쳐지는 아코디언 방식으로 렌더링됩니다.

          작성법

          ::::faq
          :::q[FAQ 섹션은 어떤 상황에서 사용하는 것이 적절한가요?]
          FAQ는 동일한 질문이 반복되는 문서에서 응답 품질을 균일하게 유지할 때 효과적입니다.
          특히 안내 문서가 길어질수록 핵심 질문을 상단에 모아두면 탐색 시간이 줄어듭니다.
          - 정책/절차 문서: 공통 문의를 빠르게 안내
          - 설정 문서: 단계별 오류 원인을 분리해 설명
          - 배포 문서: 검수/복구 기준을 질문 단위로 정리
          :::
          :::q[답변 본문은 어느 정도 길이로 작성하는 것이 좋나요?]
          단문 한 줄로 끝내기보다, 핵심 설명 2~3문장과 보조 항목 목록을 함께 제공하는 구성이 안정적입니다.
          예를 들어 `필수 조건`, `예외 상황`, `확인 방법`을 분리하면 문서 해석 차이를 줄일 수 있습니다.
          1. 필수 조건을 먼저 제시합니다.
          2. 예외 상황을 별도 항목으로 구분합니다.
          3. 마지막에 확인 경로(링크/명령)를 제공합니다.
          참고 링크는 [문서 작성 규칙](https://example.com/docs/style-guide)처럼 명확한 이름으로 작성합니다.
          :::
          ::::

          렌더링 결과

          FAQ 섹션은 어떤 상황에서 사용하는 것이 적절한가요?

          FAQ는 동일한 질문이 반복되는 문서에서 응답 품질을 균일하게 유지할 때 효과적입니다. 특히 안내 문서가 길어질수록 핵심 질문을 상단에 모아두면 탐색 시간이 줄어듭니다.

          • 정책/절차 문서: 공통 문의를 빠르게 안내
          • 설정 문서: 단계별 오류 원인을 분리해 설명
          • 배포 문서: 검수/복구 기준을 질문 단위로 정리
          답변 본문은 어느 정도 길이로 작성하는 것이 좋나요?

          단문 한 줄로 끝내기보다, 핵심 설명 2~3문장과 보조 항목 목록을 함께 제공하는 구성이 안정적입니다. 예를 들어 필수 조건, 예외 상황, 확인 방법을 분리하면 문서 해석 차이를 줄일 수 있습니다.

          1. 필수 조건을 먼저 제시합니다.
          2. 예외 상황을 별도 항목으로 구분합니다.
          3. 마지막에 확인 경로(링크/명령)를 제공합니다.

          참고 링크는 문서 작성 규칙처럼 명확한 이름으로 작성합니다.

          코드블럭

          코드블럭은 astro-expressive-code 기반으로 렌더링됩니다. 언어 지정, 줄 강조, 텍스트 마킹, 파일명 표시, 터미널 스타일 등 다양한 옵션을 백틱 세 개 뒤에 붙여 사용합니다.

          기본

          언어를 지정하면 해당 언어 구문 강조(syntax highlighting)가 적용됩니다.

          작성법

          ```ts
          const documentTitle = 'Sample Documentation'
          ```

          렌더링 결과

          const documentTitle = 'Sample Documentation'

          라인 강조

          {n} 형식으로 강조할 줄 번호를 지정합니다. 범위는 {2-4}, 복수는 {1,3,5} 형식으로 사용합니다.

          작성법

          ```js {2-3}
          function demo() {
          return 'highlight'
          }
          ```

          렌더링 결과

          function demo() {
          return 'highlight'
          }

          텍스트/삽입/삭제 강조

          코드 내 특정 문자열을 강조하거나 추가/삭제 라인을 표시합니다. "string"으로 텍스트를, ins="추가" del="삭제"로 변경 라인을 나타낼 수 있습니다.

          작성법

          ```js "return true" ins="추가" del="삭제"
          function demo() {
          console.log('삭제')
          return true
          }
          ```

          렌더링 결과

          function demo() {
          console.log('삭제')
          return true
          }

          파일 경로 표시

          주석 첫 줄에 파일 경로를 작성하면 파일명 탭으로 표시됩니다. 코드가 어느 파일에 속하는지 명시할 때 사용합니다.

          작성법

          ```js
          // src/data/site.config.ts
          export const siteConfig = {
          	homeLayout: 'list',
          	tocLayout: 'content',
          	commentsEnabled: true
          }
          ```

          렌더링 결과

          src/data/site.config.ts
          export const siteConfig = {
          homeLayout: 'list',
          tocLayout: 'content',
          commentsEnabled: true
          }

          터미널 스타일

          언어를 bash, sh, powershell 등으로 지정하면 터미널 프레임이 적용됩니다. 쉘 명령 예시를 제공할 때 시각적으로 구분하기 쉬워집니다.

          작성법

          ```bash
          pnpm dev
          ```

          렌더링 결과

          Terminal window
          pnpm dev

          언어 미지정(일반 텍스트)

          언어를 모를 때는 text 또는 txt를 사용하면 안전합니다. 구문 강조 없이 고정폭 폰트만 적용됩니다. 환경 변수 목록처럼 특정 언어에 속하지 않는 내용에 적합합니다.

          작성법

          ```txt
          REGION=ap-northeast-2
          FEATURE_FLAG=true
          ```

          렌더링 결과

          REGION=ap-northeast-2
          FEATURE_FLAG=true

          줄바꿈 비활성화 + 줄번호

          wrap=false로 자동 줄바꿈을 끄면 긴 줄이 가로 스크롤로 유지됩니다. showLineNumbers를 추가하면 왼쪽에 줄 번호가 표시됩니다. 긴 단일 라인 코드의 길이를 그대로 보여줘야 할 때 유용합니다.

          작성법

          ```js wrap=false showLineNumbers
          const veryLongLine =
          'wrap=false 예시는 긴 한 줄 텍스트가 컨테이너 너비를 넘어갈 때 자동 줄바꿈이 되지 않고 가로 스크롤로 유지되는지 확인하는 용도입니다.'
          ```

          렌더링 결과

          const veryLongLine =
          'wrap=false 예시는 긴 한 줄 텍스트가 컨테이너 너비를 넘어갈 때 자동 줄바꿈이 되지 않고 가로 스크롤로 유지되는지 확인하는 용도입니다.'

          객체형 라인 마커(del/ins 범위)

          {"숫자":줄번호} 형식의 객체형 마커로 강조, 삭제, 추가 범위를 동시에 지정할 수 있습니다. 코드 변경 사항을 리뷰 형식으로 문서화할 때 유용합니다.

          작성법

          ```js title="astro.config.mjs" {"1":5} del={"2":7-8} ins={"3":10-12}
          import { defineConfig } from 'astro/config'
          import astroExpressiveCode from 'astro-expressive-code'
          export default defineConfig({
          integrations: [
          astroExpressiveCode({
          frames: {
          showCopyToClipboardButton: false
          },
          styleOverrides: {
          frames: {
          shadowColor: '#124'
          }
          }
          })
          ]
          })
          ```

          렌더링 결과

          astro.config.mjs
          import { defineConfig } from 'astro/config'
          import astroExpressiveCode from 'astro-expressive-code'
          export default defineConfig({
          integrations: [
          astroExpressiveCode({
          frames: {
          showCopyToClipboardButton: false
          },
          styleOverrides: {
          frames: {
          shadowColor: '#124'
          }
          }
          })
          ]
          })

          키보드

          HTML <kbd> 태그로 키보드 단축키를 표시합니다. 단축키 안내, 조작 설명, 도움말 문서에서 실제 키 입력 표현이 필요할 때 사용합니다. 마크다운 내에서 HTML 태그를 그대로 사용할 수 있습니다.

          작성법

          <kbd>Ctrl</kbd> + <kbd>C</kbd> 로 복사합니다.

          렌더링 결과

          Ctrl + C 로 복사합니다.

          멀티 라인(다른 서식 포함)

          목록과 함께 사용하면 단축키 목록을 깔끔하게 정리할 수 있습니다.

          작성법

          단축키 예시:
          - 복사: <kbd>Ctrl</kbd> + <kbd>C</kbd> — 선택한 내용을 클립보드에 저장합니다.
          - 붙여넣기: <kbd>Ctrl</kbd> + <kbd>V</kbd> — 클립보드 내용을 현재 위치에 삽입합니다.
          - 저장: <kbd>Ctrl</kbd> + <kbd>S</kbd> — 현재 파일을 즉시 저장합니다.
          운영체제별 차이는 [단축키 안내](https://example.com/docs/shortcuts) 문서에서 확인합니다.

          렌더링 결과

          단축키 예시:

          • 복사: Ctrl + C — 선택한 내용을 클립보드에 저장합니다.
          • 붙여넣기: Ctrl + V — 클립보드 내용을 현재 위치에 삽입합니다.
          • 저장: Ctrl + S — 현재 파일을 즉시 저장합니다.

          운영체제별 차이는 단축키 안내 문서에서 확인합니다.

          다운로드 버튼

          .center-button + .button CSS 클래스를 사용해 중앙 정렬된 다운로드 버튼을 만듭니다. 파일 배포, 패키지 제공, 외부 링크 유도 등에 사용합니다. href에 실제 파일 URL을 넣으면 됩니다.

          작성법

          <div class="center-button">
          <a href="https://example.com/file.zip" class="button">DOWNLOAD</a>
          </div>

          렌더링 결과

          멀티 라인(다른 서식 포함)

          버튼 아래에 안내 문구를 함께 배치할 수 있습니다. 버튼과 설명 텍스트 사이는 빈 줄로 구분해야 합니다.

          작성법

          <div class="center-button">
          <a href="https://example.com/docs/latest.zip" class="button">문서 패키지 다운로드</a>
          </div>
          <p>다운로드 전에는 버전 정보와 체크섬을 함께 확인하세요.</p>

          렌더링 결과

          다운로드 전에는 버전 정보와 체크섬을 함께 확인하세요.

          내부 문서 서식 규칙

          이 블로그 문서 작성 시 일관성을 유지하기 위한 기준 규칙입니다. 새 문서를 만들거나 기존 문서를 수정할 때 기준점으로 사용합니다.

          • 제목은 ##부터 시작 — #(h1)은 title 프론트매터가 대신하므로 본문에서는 사용하지 않습니다.
          • 한 섹션에는 한 주제만 작성 — 섹션이 길어지면 ###으로 하위 항목을 분리합니다.
          • 예시는 바로 복붙 가능한 형태로 작성 — 작성법과 렌더링 결과를 짝으로 배치합니다.
          • 내부 링크: [문서명](/슬러그/) 형식 — slug는 permalink 프론트매터 값과 일치해야 합니다.
          • 이미지/파일은 문서 폴더 안에 두고 ./파일명.png 또는 ![[파일명.png]]로 참조합니다.
          • 중첩 디렉티브 사용 시 바깥 컨테이너의 콜론 수를 한 단계 올려 파싱 안정성을 확보합니다.
          • draft: true로 설정한 문서는 프로덕션 빌드에서 제외되지만 로컬 개발 서버에서는 정상 노출됩니다.