Spacious レイアウト
Docs レイアウトよりも余白を広くとったバージョン
<DocsLayout /> よりもゆったりとしたバージョンです。ページはサイドバーの横にあるインセットパネル内に配置され、ページ単位のアクションはパネルの上部に表示されます。
Spacious Layout

Base UI のみ
Spacious レイアウトは、Fumadocs UI の Base UI 版 (@fumadocs/base-ui) でのみ利用できます。
Install via Fumadocs CLI
For advanced customization that supported options cannot suffice.
npx @fumadocs/cli@latest customize使い方
fumadocs-ui/layouts/spacious を使用して、Spacious レイアウトを有効にします。
import { DocsLayout } from 'fumadocs-ui/layouts/spacious';
import { baseOptions } from '@/lib/layout.shared';
import { source } from '@/lib/source';
import type { ReactNode } from 'react';
export default function Layout({ children }: { children: ReactNode }) {
return (
<DocsLayout {...baseOptions()} tree={source.getPageTree()}>
{children}
</DocsLayout>
);
}ページの import も忘れずに更新してください。
import { ... } from 'fumadocs-ui/layouts/docs/page';
import { ... } from 'fumadocs-ui/layouts/spacious/page'; スタイル
Glass レイアウトと同様に、Spacious レイアウトのスタイルは CSS プリセットに含まれていないため、このレイアウトを使用しない限り余分なコストはかかりません。Tailwind CSS ファイルでインポートしてください。
@import 'tailwindcss';
@import 'fumadocs-ui/css/generated/spacious.css';
@import 'fumadocs-ui/css/neutral.css';
@import 'fumadocs-ui/css/preset.css';注意事項
- Spacious レイアウトはクライアントコンポーネントのため、サーバーコンポーネントからシリアライズできない props を渡すことはできません。
- デスクトップでは、ウィンドウではなくパネル内でページがスクロールします。
設定
オプションは Docs レイアウト から継承されますが、以下の点が若干異なります。
sidebarオプションはdefaultOpenLevelとprefetchのみを受け付けます。サイドバーは常に折りたたみ可能です。- 追加のオプションがあります(後述)。
レイアウトタブ
レイアウトタブは tabs prop で設定します。追加方法はリンク先のドキュメントを参照してください。タブはサイドバー上部のドロップダウンに表示されます。
import { DocsLayout } from 'fumadocs-ui/layouts/spacious';
import { baseOptions } from '@/lib/layout.shared';
import { source } from '@/lib/source';
import type { ReactNode } from 'react';
export default function Layout({ children }: { children: ReactNode }) {
return (
<DocsLayout
{...baseOptions()}
tabs={
{
// タブをカスタマイズ
}
}
tree={source.getPageTree()}
>
{children}
</DocsLayout>
);
}AIチャット
レイアウトに AIに質問 を表示するには、開閉状態と変更ハンドラーを含む aiChat オブジェクトを渡します。
panel オプションを指定すると、チャットパネルのレンダリングはレイアウト側で行われます。幅の広い画面ではページの横にドッキングされ(目次はページヘッダー内に移動します)、小さい画面ではページの上にフローティング表示されます。
'use client';
import { DocsLayout } from 'fumadocs-ui/layouts/spacious';
import { useState } from 'react';
export function Layout({ children }) {
const [open, setOpen] = useState(false);
return (
<DocsLayout
aiChat={{
open,
onOpenChange: setOpen,
panel: <MyChat />,
}}
// ...
>
{children}
</DocsLayout>
);
}スロット
Spacious レイアウトでは、共通のスロット(navTitle、themeSwitch、searchTrigger、languageSelect)に加えて、各パーツを上書きするための slots オプションが用意されています。
| スロット | 説明 |
|---|---|
header | モバイル表示時のナビゲーションバーです。 |
sidebar | サイドバー一式です。provider、main(デスクトップ)、drawer(モバイル)で構成されます。 |
actions | ページ右上のアクションです。言語切り替えやオプションメニューなどが含まれます。 |
import { DocsLayout } from 'fumadocs-ui/layouts/spacious';
<DocsLayout
slots={{
actions: MyActions,
}}
// ...
/>;Docs Page
ページコンポーネントは Docs Page とほぼ同じですが、いくつか違いがあります。
- 目次はデフォルトで
blockスタイルになります。 tableOfContentPopoverでは、ページヘッダー内の目次ドロップダウンと、モバイル表示時の目次バーを設定します。slots.tocには、ページヘッダー内のドロップダウン用にdropdownコンポーネントを渡せます。containerスロットはありません。
How is this guide?
最終更新日
