Back

MDX Kitchen Sink

02/20/2026Yeji Kim
docsmdx

πŸ”” Typography

(1) Headings

Heading은 1λΆ€ν„° 6κΉŒμ§€ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

heading1 - #

heading2 - ##

heading3 - ###

heading4 - ####

heading5 - #####

heading6 - ######


(2) Paragraph

일반적인 λ³Έλ¬Έ ν…μŠ€νŠΈμž…λ‹ˆλ‹€.

두 번째 λ¬Έλ‹¨μž…λ‹ˆλ‹€. 문단 μ‚¬μ΄μ˜ 간격이 μ μ ˆν•œμ§€ ν™•μΈν•©λ‹ˆλ‹€. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.


(3) Emphasis

이것은 bold ν…μŠ€νŠΈμž…λ‹ˆλ‹€.

이것은 italic ν…μŠ€νŠΈμž…λ‹ˆλ‹€.

이것은 bold italic ν…μŠ€νŠΈμž…λ‹ˆλ‹€.

이것은 strikethrough ν…μŠ€νŠΈμž…λ‹ˆλ‹€.


(4) Links

λ‚΄λΆ€ λ§ν¬λŠ” 같은 νƒ­μ—μ„œ μ—΄λ¦½λ‹ˆλ‹€.

μ™ΈλΆ€ λ§ν¬λŠ” μƒˆ νƒ­μ—μ„œ μ—΄λ¦½λ‹ˆλ‹€.


(5) Lists

Unordered List

  • 첫 번째 ν•­λͺ©
  • 두 번째 ν•­λͺ©
    • 쀑첩 ν•­λͺ© A
    • 쀑첩 ν•­λͺ© B
      • 더 κΉŠμ€ 쀑첩
  • μ„Έ 번째 ν•­λͺ©

Ordered List

  1. React μ»΄ν¬λ„ŒνŠΈ 섀계
  2. μƒνƒœ 관리 κ΅¬ν˜„
    1. 둜컬 μƒνƒœ μ •μ˜
    2. μ „μ—­ μƒνƒœ μ—°κ²°
  3. μŠ€νƒ€μΌλ§ 적용
  4. ν…ŒμŠ€νŠΈ μž‘μ„±

Task List

  • ν”„λ‘œμ νŠΈ 초기 μ„€μ •
  • λΌμš°νŒ… κ΅¬ν˜„
  • 닀크 λͺ¨λ“œ μ΅œμ ν™”
  • 배포

(6) Blockquote

쒋은 μ½”λ“œλŠ” κ·Έ 자체둜 졜고의 λ¬Έμ„œλ‹€. 주석을 달렀고 ν•  λ•Œ, μŠ€μŠ€λ‘œμ—κ²Œ 물어봐라. "이 주석이 ν•„μš” 없도둝 μ½”λ“œλ₯Ό κ°œμ„ ν•  수 μ—†μ„κΉŒ?"

β€” Steve McConnell

κ°‘μžκΈ° 뼈맞기...


(7) Inline Code

npm install λͺ…λ Ήμ–΄λ‘œ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈμ—μ„œ useState와 useEffectλ₯Ό μ‘°ν•©ν•˜λ©΄ λŒ€λΆ€λΆ„μ˜ μƒνƒœ 관리λ₯Ό μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 파일 κ²½λ‘œλŠ” src/components/mdx/callout.tsx처럼 ν‘œμ‹œλ©λ‹ˆλ‹€.


(8) Code Block

tsx
import { useState } from "react";
 
interface CounterProps {
  initial?: number;
}
 
export function Counter({ initial = 0 }: CounterProps) {
  const [count, setCount] = useState(initial);
 
  return (
    <button
      onClick={() => setCount((c) => c + 1)}
      className="rounded-lg bg-accent px-4 py-2 text-white"
    >
      Count: {count}
    </button>
  );
}
css
.container {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 1.5rem;
  padding: 2rem;
}
bash
# 개발 μ„œλ²„ μ‹€ν–‰
pnpm dev
 
# ν”„λ‘œλ•μ…˜ λΉŒλ“œ
pnpm build && pnpm start

(9) Table

κΈ°λŠ₯μ„€λͺ…μƒνƒœ
MDX λ Œλ”λ§λ§ˆν¬λ‹€μš΄ + JSX μ»΄ν¬λ„ŒνŠΈμ™„λ£Œ
닀크 λͺ¨λ“œμ‹œμŠ€ν…œ μ„€μ • μ—°λ™μ™„λ£Œ
λ‹€κ΅­μ–΄ν•œκ΅­μ–΄ / Englishμ™„λ£Œ
μŠ€λ„€μ΄ν¬ κ²Œμž„Canvas API κΈ°λ°˜μ™„λ£Œ
RSS ν”Όλ“œμžλ™ μƒμ„±μ˜ˆμ •

(10) Image

Next.js Logo


πŸ”” Custom Components

(11) Callout β€” Info (κΈ°λ³Έ)

κΈ°λ³Έ info μŠ€νƒ€μΌμ˜ μ½œμ•„μ›ƒμž…λ‹ˆλ‹€. 일반적인 μ •λ³΄λ‚˜ νŒμ„ 전달할 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. λ‚΄λΆ€μ—μ„œ bold, italic, code λ“± λ§ˆν¬λ‹€μš΄ 문법을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Callout β€” Info with Title

μ°Έκ³ 

title prop을 μ „λ‹¬ν•˜λ©΄ μ½œμ•„μ›ƒ 상단에 제λͺ©μ΄ ν‘œμ‹œλ©λ‹ˆλ‹€. μ€‘μš”ν•œ 정보λ₯Ό κ°•μ‘°ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

Callout β€” Warning

주의

variant="warning" μŠ€νƒ€μΌμž…λ‹ˆλ‹€. μ‚¬μš©μžκ°€ μ£Όμ˜ν•΄μ•Ό ν•  μ‚¬ν•­μ΄λ‚˜ 잠재적 문제λ₯Ό μ•ˆλ‚΄ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

Callout β€” Success

μ™„λ£Œ

variant="success" μŠ€νƒ€μΌμž…λ‹ˆλ‹€. 성곡적인 κ²°κ³Όλ‚˜ ꢌμž₯ 사항을 ν‘œμ‹œν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

Callout β€” Danger

μœ„ν—˜

variant="danger" μŠ€νƒ€μΌμž…λ‹ˆλ‹€. 치λͺ…적인 였λ₯˜λ‚˜ μ ˆλŒ€ ν•˜μ§€ 말아야 ν•  사항을 κ²½κ³ ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ rm -rf /λŠ” μ‹€ν–‰ν•˜μ§€ λ§ˆμ„Έμš”.


πŸ”” μ‘°ν•© ν…ŒμŠ€νŠΈ

(12) μ½”λ“œ 블둝 + Callout

μ‚¬μš©λ²•

μ•„λž˜μ™€ 같이 Callout μ»΄ν¬λ„ŒνŠΈλ₯Ό MDXμ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

mdx
<Callout variant="info" title="제λͺ©">
  μ½œμ•„μ›ƒ λ‚΄μš©μ„ 여기에 μž‘μ„±ν•©λ‹ˆλ‹€.
</Callout>

(13) 리슀트 + Bold + Code

  • compileMDX둜 MDX λ¬Έμžμ—΄μ„ React Elements둜 λ³€ν™˜
  • mdxComponents에 λ“±λ‘λœ μ»΄ν¬λ„ŒνŠΈλ₯Ό μžλ™ λ§€ν•‘
  • Tailwind Typography의 prose 클래슀둜 κΈ°λ³Έ μŠ€νƒ€μΌ 적용

(14) Blockquote + Link

MDXλ₯Ό μ‚¬μš©ν•˜λ©΄ λ§ˆν¬λ‹€μš΄ μ•ˆμ—μ„œ React μ»΄ν¬λ„ŒνŠΈλ₯Ό 자유둭게 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λΈ”λ‘œκ·ΈλŠ” next-mdx-remoteλ₯Ό 톡해 μ„œλ²„ μ‚¬μ΄λ“œμ—μ„œ MDXλ₯Ό μ»΄νŒŒμΌν•©λ‹ˆλ‹€.