آموزش کاربردی تمام کامپوننتهای Fumadocs شامل Callout، Card، Accordion، Steps، Tabs، Files، InlineTOC و TypeTable؛ همراه با مثالهای کد آماده برای مستندسازی حرفهای در Next.js و MDX.
اگر مقاله «معرفی کامل Fumadocs» را خوانده باشید، میدانید که Fumadocs یک فریمورک مستندسازی مبتنی بر React و Next.js است. اما نقطهای که Fumadocs را واقعاً از یک Markdown ساده متمایز میکند، مجموعه کامپوننتهای آماده و واکنشگرای آن است؛ قطعاتی که به شما اجازه میدهند بهجای متن خشک، مستنداتی تعاملی، خوانا و حرفهای بسازید.
در این راهنما، بهصورت کاملاً عملی و با مثال اجرایی، تمام کامپوننتهای کلیدی Fumadocs — از بلوکهای کد پیشرفته گرفته تا Callout، Card، Accordion، Steps و Tabs — را قدمبهقدم بررسی میکنیم تا از همین امروز بتوانید در پروژه خودتان استفادهشان کنید.
Tabs، Accordion و Steps تجربهای پویاتر نسبت به متن ساده ایجاد میکنند.Callout، Cards و InlineTOC میتوانید مطالب را دستهبندی و برجسته کنید.پیشنیاز این مقاله
اگر هنوز با کلیت Fumadocs، معماری و نحوه نصب آن آشنا نیستید، پیشنهاد میکنیم ابتدا مقاله «معرفی کامل Fumadocs» را مطالعه کنید تا مفاهیم این راهنما برایتان کاملاً روشن باشد.
بلوکهای کد قلب هر مستند فنیاند. در Fumadocs، این بلوکها بسیار فراتر از یک <pre> ساده عمل میکنند و امکانات پیشرفتهای در اختیارتان میگذارند.
-- و ++برای نمایش یک قطعه کد ساده، کافی است آن را بین سه بکتیک (```) قرار دهید و زبان برنامهنویسی را مشخص کنید.
console.log('سلام دنیا از Fumadocs!');` ` `js
console.log('سلام دنیا از Fumadocs!');
` ` `نکته
تعیین زبان برنامهنویسی باعث میشود هایلایت سینتکس بهدرستی اعمال شود و خوانایی کد افزایش یابد.
با افزودن ویژگی title، میتوانید برای هر بلوک کد یک برچسب توضیحی قرار دهید؛ بهویژه زمانی مفید است که چند قطعه کد مرتبط را کنار هم نشان میدهید.
console.log('این یک کد با عنوان است');` ` `js title="فایل اصلی – index.js"
console.log('این یک کد با عنوان است');
` ` `شمارهگذاری خطوط به خواننده کمک میکند به بخشهای خاص کد ارجاع دهد. با lineNumbers میتوانید این ویژگی را فعال کنید و حتی نقطه شروع شمارهگذاری را تغییر دهید.
const greeting: string = 'Hello World';
console.log(greeting);function startFromTen() {
console.log('خط شماره ۱۰');
return true;
}با کامنتهای خاص میتوانید بخشهای مهم کد را برجسته کنید، تغییرات را نشان دهید یا روی یک خط خاص فوکوس کنید. این ویژگی برای آموزش گامبهگام و نمایش تغییرات کد بسیار کاربردی است.
| دستور | کاربرد |
|---|---|
// [!code highlight] | هایلایت یک خط کامل |
// [!code word:کلمه] | هایلایت یک کلمه خاص در کل کد |
// [!code --] | نمایش خط حذفشده (رنگ قرمز) |
// [!code ++] | نمایش خط اضافهشده (رنگ سبز) |
// [!code focus] | فوکوس روی یک خط خاص (بزرگنمایی) |
// خط برجسته شده
const component = <div>سلام دنیا</div>;
// کلمه برجسته شده
<div>Fumadocs</div>
// نمایش تفاوت (diff)
console.log('hewwo');
console.log('hello');
// فوکوس روی خط
return new ResizeObserver(() => {}); ` ` `tsx
const component = <div>سلام دنیا</div>; // [!code highlight]
/ / [!code word:Fumadocs]
<div>Fumadocs</div>
console.log('hewwo'); // [!code --]
console.log('hello'); // [!code ++]
return new ResizeObserver(() => {}); // [!code focus]
` ` `هشدار
استفاده بیش از حد از هایلایت و فوکوس در یک بلوک کد میتواند خواننده را گیج کند. این ویژگیها را فقط روی مهمترین خطوط اعمال کنید.
با قرار دادن چند بلوک کد کنار هم و اختصاص یک تب به هرکدام، کاربران بهراحتی بین نمونههای مختلف جابهجا میشوند. برای هر تب میتوانید آیکون هم تعیین کنید.
console.log('A');` ` `ts tab="<Building /> ساختمان"
console.log('A');
` ` `
` ` `ts tab="<RocketIcon /> موشک"
console.log('B');
` ` `
` ` `ts tab="بدون ایکون"
console.log('C');
` ` `با سینتکس npm، دستور نصب شما بهطور خودکار برای چهار پکیجمنیجر محبوب (npm, pnpm, yarn, bun) نمایش داده میشود؛ ویژگیای که برای مستندات کتابخانهها و فریمورکها بسیار کاربردی است.
npm install next -D` ` `npm
npm install next -D
` ` `با تگ <include> میتوانید محتوای یک فایل MDX دیگر را دقیقاً در همان نقطهای که قرار میدهید درج کنید. این ویژگی به شما اجازه میدهد بخشهای تکراری (هدر، فوتر، توضیحات مشترک) را در یک فایل مجزا نگه دارید و در چند صفحه از آن استفاده کنید.
این متن برای تست است
<include>./include.mdx</include>نکته
مسیر فایل باید نسبی باشد و فایل مورد نظر باید با پسوند .mdx ذخیره شده باشد.
کامپوننت Callout یک جعبه اطلاعرسانی زیبا و قابلتنظیم است که با رنگبندی و آیکونهای مختلف، نکات کلیدی، هشدارها، خطاها، موفقیتها یا ایدهها را برجسته نشان میدهد. استفاده از Callout در بخشهای حساس مستندات، راهنمایی خواننده را بهبود میبخشد.
| نوع | کاربرد | رنگ پیشفرض |
|---|---|---|
default | نکات عمومی و اطلاعات تکمیلی | آبی |
warn | هشدارها و موارد احتیاطی | زرد/نارنجی |
error | خطاها و مشکلات رایج | قرمز |
success | موفقیتها و بهترین روشها | سبز |
نکته (مقدار پیشفرض)
این یک نکته عمومی است که میتواند اطلاعات تکمیلی را در اختیار کاربر قرار دهد.
هشدار
قبل از اعمال تغییرات، حتماً از پروژه خود نسخه پشتیبان تهیه کنید.
ارور
این خطا زمانی رخ میدهد که وابستگیها بهدرستی نصب نشده باشند.
موفق
عملیات با موفقیت انجام شد. میتوانید مرحله بعد را شروع کنید.
<Callout title="نکته (مقدار پیشفرض)">
این یک نکته عمومی است ...
</Callout>
<Callout title="هشدار" type="warn">
قبل از اعمال تغییرات ...
</Callout>
<Callout title="ارور" type="error">
این خطا زمانی رخ میدهد ...
</Callout>
<Callout title="موفق" type="success">
عملیات با موفقیت انجام شد ...
</Callout>بهترین شیوه استفاده
از Callout بهعنوان ابزار «برجستهسازی نکات مهم» استفاده کنید، نه برای هر پاراگراف. استفاده بیشازحد، اثر بصری آن را کم میکند.
کارتها یکی از مؤثرترین روشها برای ارائه لینکها، معرفی ویژگیها، دستهبندی مطالب و ایجاد ناوبری بصری هستند. هر کارت میتواند آیکون، عنوان، توضیحات و لینک داشته باشد. در صورت نبود لینک، کارت بهصورت یک جعبه اطلاعاتی ساده عمل میکند.
در کمتر از ۵ دقیقه پروژه مستندسازی خود را راهاندازی کنید.
به مخزن رسمی Fumadocs در گیتهاب سر بزنید و مشارکت کنید.
این کارت فقط برای نمایش اطلاعات طراحی شده و قابلیت کلیک ندارد.
به صفحه اصلی وبسایت بازگردید.
<Cards>
<Card icon={<RocketIcon />} title="شروع سریع">
در کمتر از ۵ دقیقه پروژهی خود را راهاندازی کنید.
</Card>
{/* سایر کارتها ... */}
</Cards>نکته
ترتیب کارتها بهصورت خودکار با Grid چیده میشوند و در نمای موبایل بهصورت تکستونی نمایش داده میشوند.
آکاردئونها امکان میدهند محتوای حجیم و طولانی را در بخشهای قابلجمعشدن قرار دهید. این ویژگی برای سوالات متداول (FAQ)، توضیحات فنی طولانی و مستندات API ایدهآل است. (نمونه واقعی آن را در بخش «سوالات متداول» همین مقاله میبینید.)
type="single": فقط یک بخش در هر لحظه باز میماند (بستن خودکار بقیه بخشها)type="multiple": چند بخش میتوانند همزمان باز باشند (پیشفرض)<Accordions type="single">
<Accordion id="faq-1" value="1" title="چگونه Fumadocs را نصب کنم؟">
پاسخ توضیحی ...
</Accordion>
<Accordion id="faq-2" value="2" title="آیا Fumadocs از RTL پشتیبانی میکند؟">
پاسخ توضیحی ...
</Accordion>
</Accordions>وقتی میخواهید یک فرآیند یا آموزش را مرحلهبهمرحله توضیح دهید، کامپوننت Steps بهترین انتخاب است. هر Step بهطور خودکار شمارهگذاری میشود و فاصله مناسبی بین مراحل ایجاد میکند.
مرحله اول: نصب وابستگیها
با اجرای دستور npm install تمام وابستگیهای مورد نیاز را نصب کنید. مطمئن شوید نسخه Node.js بالای ۱۸ است.
مرحله دوم: راهاندازی سرور توسعه
با دستور npm run dev سرور محلی را اجرا کنید و مرورگر را به http://localhost:3000 ببرید.
مرحله سوم: ایجاد و ویرایش مستندات
فایلهای MDX خود را در پوشه content ایجاد یا ویرایش کنید. تغییرات بهطور خودکار در مرورگر بازتاب داده میشوند.
<Steps>
<Step>
**مرحله اول: نصب وابستگیها**
ابتدا با اجرای دستور `npm install` ...
</Step>
<Step>
**مرحله دوم: راهاندازی سرور توسعه**
با دستور `npm run dev` ...
</Step>
<Step>
**مرحله سوم: ایجاد و ویرایش مستندات**
فایلهای MDX خود را ...
</Step>
</Steps>این کامپوننتها برای نمایش درختواره دایرکتوری پروژه بسیار مفیدند. با Folder و File میتوانید پوشهها و فایلها را با قابلیت باز/بسته شدن (defaultOpen) نشان دهید و به خواننده کمک کنید ساختار پروژه را بهتر درک کند.
<Files>
<Folder name="app" defaultOpen>
<File name="layout.tsx" />
<File name="page.tsx" />
</Folder>
<Folder name="components">
<File name="button.tsx" />
</Folder>
<File name="package.json" />
</Files>برای نمایش تصاویر، از سینتکس استاندارد Markdown استفاده کنید. Fumadocs تصاویر را بهطور خودکار بهینه میکند و در صورت نیاز، قابلیت بزرگنمایی (Zoom) و متن جایگزین (Alt Text) را فراهم میکند.
نکته
همیشه برای تصاویر Alt Text توصیفی بنویسید تا هم سئو بهبود یابد و هم کاربران دارای محدودیت بینایی بتوانند از محتوا استفاده کنند. برای بزرگنمایی خودکار تصاویر هنگام کلیک، میتوانید کامپوننت ImageZoom را جایگزین تگ پیشفرض img کنید (در بخش کامپوننتهای تکمیلی توضیح داده شده).
کامپوننت InlineTOC یک فهرست مطالب کوچک و جمعوجور میسازد که میتوانید در هر نقطه از صفحه (معمولاً بالای مقاله) قرار دهید — دقیقاً همان چیزی که در ابتدای همین مقاله دیدید. این ابزار به کاربران کمک میکند بدون اسکرول طولانی، به بخشهای مختلف مقاله دسترسی داشته باشند.
<InlineTOC items={toc}>فهرست مطالب</InlineTOC>توجه
متغیر toc باید در صفحه تعریف شده باشد. در Fumadocs، این متغیر بهطور خودکار از عناوین موجود در صفحه (H2، H3 و غیره) استخراج میشود.
تبها راهی عالی برای ارائه محتوای مرتبط اما مجزا هستند؛ مثلاً کد یک تابع در چند زبان برنامهنویسی، یا توضیحات نصب برای چند سیستمعامل مختلف — دقیقاً همان الگویی که در سراسر همین مقاله برای نمایش «نمایش/کد» استفاده شده است. با تنظیم updateAnchor، لینک هر تب بهطور خودکار در آدرس مرورگر بهروزرسانی میشود که برای اشتراکگذاری دقیق محتوا بسیار مفید است.
console.log('سلام از Javascript!');fn main() {
println!("سلام از Rust!");
}#include <iostream>
int main() {
std::cout << "سلام از C++!" << std::endl;
return 0;
}<Tabs items={['Javascript', 'Rust', 'C++']} updateAnchor>
<Tab id="tab-js" value="Javascript">
` ` `js
console.log('سلام از Javascript!');
` ` `
</Tab>
<Tab id="tab-rs" value="Rust">
` ` `rust
fn main() { println!("سلام از Rust!"); }
` ` `
</Tab>
</Tabs>علاوه بر کامپوننتهای پرکاربردی که در بالا دیدید، Fumadocs چند کامپوننت تخصصیتر هم دارد که در مستندات فنی و پروژههای بزرگتر بسیار بهکار میآیند:
برای مستندسازی دستی پارامترها و Props یک تابع یا کامپوننت، بهصورت جدولی تمیز و خوانا؛ مناسب مستندات API و کتابخانههای کد.
جایگزینی برای تگ پیشفرض تصویر که با یک کلیک ساده، امکان بزرگنمایی تمامصفحه تصویر را به کاربر میدهد.
نواری در بالای صفحه برای اعلانهای مهم مثل انتشار نسخه جدید، تغییرات breaking یا پیامهای تبلیغاتی داخلی مستندات.
رندر نمودارهای Mermaid (فلوچارت، نمودار توالی و...) مستقیماً داخل بلوک کد MDX، بدون نیاز به ابزار جانبی.
<TypeTable
type={{
percentage: {
description: 'درصد موقعیت اسکرول برای نمایش دکمه بازگشت به بالا',
type: 'number',
default: 0.2,
},
}}
/>کی سراغ این کامپوننتها برویم؟
اگر مستندات شما یک کتابخانه کد یا API است، TypeTable و AutoTypeTable وقت زیادی برایتان صرفهجویی میکنند. اگر گالری تصویر یا اسکرینشات زیاد دارید، ImageZoom تجربه کاربری را بهشکل محسوسی بهتر میکند.
رعایت چند نکته کلیدی، کیفیت مستندات شما را چند پله بالا میبرد:
title میسازد)، H2 برای بخشهای اصلی و H3 برای زیربخشها استفاده کنید.Card به صفحات مرتبط درون سایت و منابع معتبر خارجی ارجاع دهید.اشتباه رایج
استفاده از هر کامپوننت فقط بهخاطر «قشنگ بودن» آن، مستندات را شلوغ میکند. هر کامپوننت باید یک هدف مشخص (هدایت، هشدار، مقایسه یا سادهسازی) داشته باشد.
در این راهنما، بهطور کامل با تمام کامپوننتهای کلیدی Fumadocs آشنا شدید: از بلوکهای کد پیشرفته گرفته تا Callout، Card، Accordion، Steps، Files، InlineTOC، Tabs و کامپوننتهای تخصصیتری مثل TypeTable و ImageZoom. هرکدام از این ابزارها با هدف بهبود تجربه کاربری، افزایش تعامل و سادهسازی تولید محتوا طراحی شدهاند.
با بهکارگیری درست این کامپوننتها، مستندات شما هم از نظر فنی غنیتر میشود و هم رتبه بهتری در موتورهای جستجو کسب میکند.
آشنایی با معماری، نصب، مقایسه با رقبا و دلایل انتخاب Fumadocs برای پروژه شما.
کد منبع، مشارکت در پروژه و پیگیری آخرین تغییرات Fumadocs.
کلمات کلیدی اصلی: Fumadocs, مستندسازی, Next.js, MDX, کامپوننت, بلوک کد, Callout, Card, Accordion, Steps, Tabs, InlineTOC, آموزش, راهنما, سئو
کلمات کلیدی فرعی: نمایش کد, هایلایت, شمارهگذاری خطوط, دیف, فوکوس, نصب پکیج, کارت تعاملی, فهرست مطالب, ساختار پوشه, TypeTable, ImageZoom, راستچین, RTL