mirror of
https://github.com/facebook/docusaurus.git
synced 2025-07-19 17:49:19 +02:00
Add docs
This commit is contained in:
parent
114875132b
commit
d7fb90e2d6
2 changed files with 49 additions and 6 deletions
|
@ -6,8 +6,8 @@ slug: /sidebar
|
||||||
|
|
||||||
Creating a sidebar is useful to:
|
Creating a sidebar is useful to:
|
||||||
|
|
||||||
- Group multiple **related documents**
|
- Group multiple **related documents** into an ordered tree
|
||||||
- **Display a sidebar** on each of those documents
|
- **Display a common sidebar** on each of those documents
|
||||||
- Provide **paginated navigation**, with next/previous button
|
- Provide **paginated navigation**, with next/previous button
|
||||||
|
|
||||||
To use sidebars on your Docusaurus site:
|
To use sidebars on your Docusaurus site:
|
||||||
|
@ -160,6 +160,20 @@ export default {
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Passing CSS classes {#passing-css-classes}
|
||||||
|
|
||||||
|
To pass CSS classes to a sidebar item, add the optional `className` attribute to any of the items. This is useful to apply visual customizations to specific sidebar items.
|
||||||
|
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
type: 'doc',
|
||||||
|
id: 'doc1',
|
||||||
|
// highlight-start
|
||||||
|
className: 'sidebar-item--highlighted',
|
||||||
|
// highlight-end
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
## Passing custom props {#passing-custom-props}
|
## Passing custom props {#passing-custom-props}
|
||||||
|
|
||||||
To pass in custom props to a sidebar item, add the optional `customProps` object to any of the items. This is useful to apply site customizations by swizzling React components rendering sidebar items.
|
To pass in custom props to a sidebar item, add the optional `customProps` object to any of the items. This is useful to apply site customizations by swizzling React components rendering sidebar items.
|
||||||
|
@ -177,6 +191,28 @@ To pass in custom props to a sidebar item, add the optional `customProps` object
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Passing a unique key {#passing-custom-props}
|
||||||
|
|
||||||
|
Passing a unique `key` attribute can help uniquely identify a sidebar item. Sometimes other attributes (such as `label`) are not enough to distinguish two sidebar items from each other.
|
||||||
|
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
type: 'category',
|
||||||
|
// highlight-start
|
||||||
|
label: 'API', // You may have multiple categories with this widespread label
|
||||||
|
key: 'api-for-feature-1', // and now, they can be uniquely identified
|
||||||
|
// highlight-end
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
:::info How is this useful?
|
||||||
|
|
||||||
|
Docusaurus only uses the `key` attribute to generate unique i18n translation keys. When a translation key conflict happens ([issue](https://github.com/facebook/docusaurus/issues/10913)), Docusaurus will tell you to apply a `key` to distinguish sidebar items.
|
||||||
|
|
||||||
|
Alternatively, you may have your own reasons for using the `key` attribute that will be passed to the respective sidebar item React components.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
## Sidebar Breadcrumbs {#sidebar-breadcrumbs}
|
## Sidebar Breadcrumbs {#sidebar-breadcrumbs}
|
||||||
|
|
||||||
By default, breadcrumbs are rendered at the top, using the "sidebar path" of the current page.
|
By default, breadcrumbs are rendered at the top, using the "sidebar path" of the current page.
|
||||||
|
|
|
@ -11,14 +11,14 @@ import TabItem from '@theme/TabItem';
|
||||||
import BrowserWindow from '@site/src/components/BrowserWindow';
|
import BrowserWindow from '@site/src/components/BrowserWindow';
|
||||||
```
|
```
|
||||||
|
|
||||||
We have introduced three types of item types in the example in the previous section: `doc`, `category`, and `link`, whose usages are fairly intuitive. We will formally introduce their APIs. There's also a fourth type: `autogenerated`, which we will explain in detail later.
|
The sidebar supports various item types:
|
||||||
|
|
||||||
- **[Doc](#sidebar-item-doc)**: link to a doc page, associating it with the sidebar
|
- **[Doc](#sidebar-item-doc)**: link to a doc page, associating it with the sidebar
|
||||||
- **[Link](#sidebar-item-link)**: link to any internal or external page
|
- **[Link](#sidebar-item-link)**: link to any internal or external page
|
||||||
- **[Category](#sidebar-item-category)**: creates a dropdown of sidebar items
|
- **[Category](#sidebar-item-category)**: creates a dropdown of sidebar items
|
||||||
- **[Autogenerated](autogenerated.mdx)**: generate a sidebar slice automatically
|
- **[Autogenerated](autogenerated.mdx)**: generate a sidebar slice automatically
|
||||||
- **[HTML](#sidebar-item-html)**: renders pure HTML in the item's position
|
- **[HTML](#sidebar-item-html)**: renders pure HTML in the item's position
|
||||||
- **[\*Ref](multiple-sidebars.mdx#sidebar-item-ref)**: link to a doc page, without making the item take part in navigation generation
|
- **[Ref](multiple-sidebars.mdx#sidebar-item-ref)**: link to a doc page, without making the item take part in navigation generation
|
||||||
|
|
||||||
## Doc: link to a doc {#sidebar-item-doc}
|
## Doc: link to a doc {#sidebar-item-doc}
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ type SidebarItemDoc =
|
||||||
type: 'doc';
|
type: 'doc';
|
||||||
id: string;
|
id: string;
|
||||||
label: string; // Sidebar label text
|
label: string; // Sidebar label text
|
||||||
|
key?: string; // Sidebar key to uniquely identify the item
|
||||||
className?: string; // Class name for sidebar label
|
className?: string; // Class name for sidebar label
|
||||||
customProps?: Record<string, unknown>; // Custom props
|
customProps?: Record<string, unknown>; // Custom props
|
||||||
}
|
}
|
||||||
|
@ -84,8 +85,10 @@ type SidebarItemLink = {
|
||||||
type: 'link';
|
type: 'link';
|
||||||
label: string;
|
label: string;
|
||||||
href: string;
|
href: string;
|
||||||
className?: string;
|
|
||||||
description?: string;
|
description?: string;
|
||||||
|
key?: string;
|
||||||
|
className?: string;
|
||||||
|
customProps?: Record<string, unknown>;
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -126,7 +129,9 @@ type SidebarItemHtml = {
|
||||||
type: 'html';
|
type: 'html';
|
||||||
value: string;
|
value: string;
|
||||||
defaultStyle?: boolean; // Use default menu item styles
|
defaultStyle?: boolean; // Use default menu item styles
|
||||||
|
key?: string;
|
||||||
className?: string;
|
className?: string;
|
||||||
|
customProps?: Record<string, unknown>;
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -173,8 +178,10 @@ type SidebarItemCategory = {
|
||||||
type: 'category';
|
type: 'category';
|
||||||
label: string; // Sidebar label text.
|
label: string; // Sidebar label text.
|
||||||
items: SidebarItem[]; // Array of sidebar items.
|
items: SidebarItem[]; // Array of sidebar items.
|
||||||
className?: string;
|
|
||||||
description?: string;
|
description?: string;
|
||||||
|
key?: string;
|
||||||
|
className?: string;
|
||||||
|
customProps?: Record<string, unknown>;
|
||||||
|
|
||||||
// Category options:
|
// Category options:
|
||||||
collapsible: boolean; // Set the category to be collapsible
|
collapsible: boolean; // Set the category to be collapsible
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue