Sitemas menyediakan berbagai komponen MDX untuk memperkaya konten artikel Anda. Artikel ini adalah referensi lengkap semua komponen yang tersedia.

Cara Import Komponen

Di awal file MDX (setelah frontmatter), import komponen yang akan digunakan:

Import komponen
mdx
---
title: "Judul Artikel"
# ... frontmatter lainnya
---

import InfoBox from '@/components/mdx/InfoBox.astro';
import Terminal from '@/components/mdx/Terminal.astro';
import Steps from '@/components/mdx/Steps.astro';
import Step from '@/components/mdx/Step.astro';

Konten artikel dimulai di sini...

InfoBox

Menampilkan informasi penting dengan visual berbeda berdasarkan tipe.

Props

PropTypeRequiredDefaultDeskripsi
typestringNo"note"Tipe: note, tip, warning, danger
titlestringNo-Judul box

Contoh Penggunaan

InfoBox variants
mdx
<InfoBox type="note" title="Catatan">
Ini adalah catatan informasi umum.
</InfoBox>

<InfoBox type="tip" title="Tips">
Ini adalah tips berguna.
</InfoBox>

<InfoBox type="warning" title="Peringatan">
Hati-hati dengan langkah ini.
</InfoBox>

<InfoBox type="danger" title="Bahaya">
Jangan lakukan ini di production!
</InfoBox>

Hasil

Catatan

Ini adalah catatan informasi umum.

Tips

Ini adalah tips berguna.

Peringatan

Hati-hati dengan langkah ini.

Bahaya

Jangan lakukan ini di production!


Terminal

Menampilkan perintah terminal dengan tombol copy.

Props

PropTypeRequiredDeskripsi
titlestringNoJudul terminal
contentstringYesPerintah yang ditampilkan

Contoh

Terminal usage
mdx
<Terminal 
    title="Install dependencies"
    content="npm install"
/>

<Terminal 
    title="Multi-line commands"
    content="git add .
git commit -m 'Initial commit'
git push origin main"
/>

Hasil

Install dependencies
npm install

CodeBlock

Code block dengan syntax highlighting dan tombol copy.

Props

PropTypeRequiredDeskripsi
titlestringNoNama file atau deskripsi
langstringNoBahasa untuk highlighting

Contoh

Gunakan CodeBlock untuk menampilkan kode dengan syntax highlighting:

<CodeBlock title="app.js" lang="javascript">
// Your code here
const greeting = 'Hello World';
console.log(greeting);
</CodeBlock>

Steps dan Step

Menampilkan langkah-langkah tutorial secara terstruktur.

Props Steps

Tidak ada props khusus (wrapper component).

Props Step

PropTypeRequiredDeskripsi
titlestringYesJudul langkah

Contoh

Steps usage
mdx
<Steps>
  <Step title="Download Project">
    Download atau clone repository dari GitHub.
  </Step>
  
  <Step title="Install Dependencies">
    Jalankan `npm install` untuk install semua dependencies.
  </Step>
  
  <Step title="Run Development Server">
    Jalankan `npm run dev` dan buka browser.
  </Step>
</Steps>

Hasil

Download Project

Download atau clone repository dari GitHub.

Install Dependencies

Jalankan npm install untuk install semua dependencies.

Run Development Server

Jalankan npm run dev dan buka browser.


Accordion

Content yang bisa di-expand/collapse.

Props

PropTypeRequiredDeskripsi
titlestringYesJudul accordion

Contoh

Accordion usage
mdx
<Accordion title="Klik untuk melihat detail">
Ini adalah konten yang tersembunyi.
Bisa berisi **markdown** dan panjang sekali.
</Accordion>

Hasil

Klik untuk melihat detail

Ini adalah konten yang tersembunyi. Bisa berisi markdown dan panjang sekali.


Tabs dan TabPanel

Tab navigation untuk konten berbeda.

Props Tabs

PropTypeRequiredDeskripsi
tabsstring[]YesArray nama tab
defaultTabnumberNoIndex tab default (0-indexed)

Props TabPanel

PropTypeRequiredDeskripsi
indexnumberYesIndex panel (0-indexed)

Contoh

Tabs usage
mdx
<Tabs tabs={["Windows", "macOS", "Linux"]}>
  <TabPanel index={0}>
    Instruksi untuk Windows...
  </TabPanel>
  <TabPanel index={1}>
    Instruksi untuk macOS...
  </TabPanel>
  <TabPanel index={2}>
    Instruksi untuk Linux...
  </TabPanel>
</Tabs>

Hasil

Windows: Download installer dari website resmi dan jalankan setup wizard.

macOS: Install via Homebrew dengan brew install node.

Linux: Gunakan package manager distro Anda atau nvm.


Badge

Label visual untuk status atau kategori.

Props

PropTypeRequiredDeskripsi
variantstringNoVariant: default, success, warning, danger, info

Contoh

Badge usage
mdx
<Badge>Default</Badge>
<Badge variant="success">Success</Badge>
<Badge variant="warning">Warning</Badge>
<Badge variant="danger">Danger</Badge>
<Badge variant="info">Info</Badge>

Hasil

Default Success Warning Danger Info

Highlight

Highlight teks dengan warna accent.

Props

PropTypeRequiredDeskripsi
colorstringNoWarna: accent, success, warning, danger

Contoh

Highlight usage
mdx
<Highlight>Teks penting yang di-highlight</Highlight>

<Highlight color="success">Berhasil!</Highlight>

Hasil

Teks penting yang di-highlight

Spoiler

Konten tersembunyi yang perlu diklik untuk dilihat.

Props

PropTypeRequiredDeskripsi
labelstringNoLabel tombol reveal

Contoh

Spoiler usage
mdx
<Spoiler label="Lihat Jawaban">
Jawabannya adalah 42.
</Spoiler>

Hasil

Jawabannya adalah 42 — jawaban untuk pertanyaan ultimate tentang kehidupan, alam semesta, dan segalanya.


Figure

Gambar dengan caption dan optional tag.

Props

PropTypeRequiredDeskripsi
srcImageMetadataYesImport gambar
altstringYesAlt text
captionstringNoCaption gambar
tagstringNoTag overlay (e.g., “Screenshot”)

Contoh

Figure usage
mdx
import myImage from './screenshot.png';

<Figure 
  src={myImage}
  alt="Dashboard aplikasi"
  caption="Tampilan dashboard setelah login"
  tag="Screenshot"
/>

CompareTable

Tabel perbandingan dua kolom.

Props

PropTypeRequiredDeskripsi
headersstring[]YesHeader kolom [left, right]
rowsstring[][]YesArray rows [[left, right], …]

Contoh

CompareTable usage
mdx
<CompareTable 
  headers={["Vercel", "Netlify"]}
  rows={[
    ["100GB bandwidth", "100GB bandwidth"],
    ["6000 build mins", "300 build mins"],
    ["No forms", "Built-in forms"],
  ]}
/>

Hasil

Vercel Netlify
100GB bandwidth 100GB bandwidth
6000 build mins 300 build mins
No forms Built-in forms

CallToAction

Banner CTA dengan tombol action.

Props

PropTypeRequiredDeskripsi
titlestringYesJudul CTA
descriptionstringYesDeskripsi
buttonTextstringYesText tombol
buttonLinkstringYesURL tujuan
typestringNoVariant: accent, primary

Contoh

CallToAction usage
mdx
<CallToAction
  title="Mulai Sekarang"
  description="Pelajari lebih lanjut tentang Sitemas."
  buttonText="Lihat Dokumentasi"
  buttonLink="/blog/pengenalan-sitemas"
  type="accent"
/>

Hasil

Mulai Sekarang

Pelajari lebih lanjut tentang Sitemas.


Tips Penggunaan

1. Import Hanya yang Dipakai

// ✅ Bagus - import specific
import InfoBox from '@/components/mdx/InfoBox.astro';

// ❌ Jangan - tidak ada barrel export
import { InfoBox, Terminal } from '@/components/mdx';

2. Baris Kosong Penting

// ✅ Benar
Teks sebelum.

<InfoBox>
Konten box
</InfoBox>

Teks sesudah.

// ❌ Salah - bisa menyebabkan error
Teks sebelum.
<InfoBox>
Konten box
</InfoBox>
Teks sesudah.

3. Self-Closing vs Children

// Komponen dengan children
<InfoBox>
Konten di sini
</InfoBox>

// Komponen tanpa children (self-closing)
<Terminal title="Test" content="npm run dev" />

Langkah Selanjutnya

Pelajari SEO otomatis di Sitemas:

SEO Otomatis

Pahami bagaimana Sitemas mengoptimasi SEO secara otomatis.

Kesimpulan

Komponen MDX membuat artikel Anda lebih interaktif dan informatif. Gunakan kombinasi komponen yang tepat untuk:

  • InfoBox: Highlight informasi penting
  • Steps: Tutorial terstruktur
  • Tabs: Konten platform-specific
  • CodeBlock: Code dengan highlighting
  • CallToAction: Engage pembaca

Eksperimen dengan berbagai komponen untuk menemukan kombinasi terbaik untuk konten Anda!