Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: add link from every category index page to the guide page #7665

Merged
merged 2 commits into from Jun 23, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
44 changes: 23 additions & 21 deletions website/docs/guides/docs/sidebar/items.md
Expand Up @@ -230,28 +230,9 @@ With category links, clicking on a category can navigate you to another page.

Use category links to introduce a category of documents.

:::

#### Doc link {#category-doc-link}

A category can link to an existing document.

```js title="sidebars.js"
module.exports = {
docs: [
{
type: 'category',
label: 'Guides',
// highlight-start
link: {type: 'doc', id: 'introduction'},
// highlight-end
items: ['pages', 'docs', 'blog', 'search'],
},
],
};
```
Autogenerated categories can use the [`_category_.yml`](./autogenerated.md#category-item-metadata) file to declare the link.

See it in action on the [i18n introduction page](../../../i18n/i18n-introduction.md).
:::

#### Generated index page {#generated-index-page}

Expand Down Expand Up @@ -287,6 +268,27 @@ Use `generated-index` links as a quick way to get an introductory document.

:::

#### Doc link {#category-doc-link}

A category can link to an existing document.

```js title="sidebars.js"
module.exports = {
docs: [
{
type: 'category',
label: 'Guides',
// highlight-start
link: {type: 'doc', id: 'introduction'},
// highlight-end
items: ['pages', 'docs', 'blog', 'search'],
},
],
};
```

See it in action on the [i18n introduction page](../../../i18n/i18n-introduction.md).

#### Embedding generated index in doc page {#embedding-generated-index-in-doc-page}

You can embed the generated cards list in a normal doc page as well, as long as the doc is used as a category index page. To do so, you need to use the `DocCardList` component, paired with the `useCurrentSidebarCategory` hook.
Expand Down
38 changes: 38 additions & 0 deletions website/src/theme/DocCategoryGeneratedIndexPage/index.tsx
@@ -0,0 +1,38 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

import React from 'react';
import {useLayoutDoc} from '@docusaurus/theme-common';
import Link from '@docusaurus/Link';
import Translate from '@docusaurus/Translate';
import DocCategoryGeneratedIndexPage from '@theme-original/DocCategoryGeneratedIndexPage';
import type {Props} from '@theme/DocCategoryGeneratedIndexPage';

import styles from './styles.module.css';

export default function DocCategoryGeneratedIndexPageWrapper(
props: Props,
): JSX.Element {
const docPath = useLayoutDoc('guides/docs/sidebar/items', undefined)?.path;
return (
<>
<DocCategoryGeneratedIndexPage {...props} />
<p className={styles.footerTip}>
Josh-Cena marked this conversation as resolved.
Show resolved Hide resolved
<Translate
values={{
guideLink: (
<Link to={`${docPath}#category-link`}>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<Link to={`${docPath}#category-link`}>
<Link to={`${docPath}#generated-index-page`}>

Should it link to the parent of child heading? 🤔 not really sure what is best

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I deliberately linked to this section, and even reordered the headings, because I added an extra tip at the top about how this should be implemented with autogenerated.

<Translate>the generated index page guide</Translate>
</Link>
),
}}>
{'Want to implement the same page? Read {guideLink} to find out!'}
</Translate>
</p>
</>
);
}
@@ -0,0 +1,11 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

.footerTip {
font-size: 0.8rem;
margin-top: var(--ifm-paragraph-margin-bottom);
}
Expand Up @@ -60,7 +60,7 @@ module.exports = {
};
```

If you use the doc shorthand or [autogenerated](#sidebar-item-autogenerated) sidebar, you would lose the ability to customize the sidebar label through item definition. You can, however, use the `sidebar_label` markdown front matter within that doc, which has higher precedence over the `label` key in the sidebar item. Similarly, you can use `sidebar_custom_props` to declare custom metadata for a doc page.
If you use the doc shorthand or [autogenerated](#sidebar-item-autogenerated) sidebar, you would lose the ability to customize the sidebar label through item definition. You can, however, use the `sidebar_label` Markdown front matter within that doc, which has higher precedence over the `label` key in the sidebar item. Similarly, you can use `sidebar_custom_props` to declare custom metadata for a doc page.

:::note

Expand Down Expand Up @@ -230,28 +230,9 @@ With category links, clicking on a category can navigate you to another page.

Use category links to introduce a category of documents.

:::

#### Doc link {#category-doc-link}

A category can link to an existing document.
Autogenerated categories can use the [`_category_.yml`](./autogenerated.md#category-item-metadata) file to declare the link.

```js title="sidebars.js"
module.exports = {
docs: [
{
type: 'category',
label: 'Guides',
// highlight-start
link: {type: 'doc', id: 'introduction'},
// highlight-end
items: ['pages', 'docs', 'blog', 'search'],
},
],
};
```

See it in action on the [i18n introduction page](../../../i18n/i18n-introduction.md).
:::

#### Generated index page {#generated-index-page}

Expand Down Expand Up @@ -287,6 +268,27 @@ Use `generated-index` links as a quick way to get an introductory document.

:::

#### Doc link {#category-doc-link}

A category can link to an existing document.

```js title="sidebars.js"
module.exports = {
docs: [
{
type: 'category',
label: 'Guides',
// highlight-start
link: {type: 'doc', id: 'introduction'},
// highlight-end
items: ['pages', 'docs', 'blog', 'search'],
},
],
};
```

See it in action on the [i18n introduction page](../../../i18n/i18n-introduction.md).

#### Embedding generated index in doc page {#embedding-generated-index-in-doc-page}

You can embed the generated cards list in a normal doc page as well, as long as the doc is used as a category index page. To do so, you need to use the `DocCardList` component, paired with the `useCurrentSidebarCategory` hook.
Expand Down Expand Up @@ -404,8 +406,10 @@ You can express typical sidebar items without much customization more concisely

An item with type `doc` can be simply a string representing its ID:

```mdx-code-block
<Tabs>
<TabItem value="Longhand">
```

```js title="sidebars.js"
module.exports = {
Expand All @@ -420,8 +424,10 @@ module.exports = {
};
```

```mdx-code-block
</TabItem>
<TabItem value="Shorthand">
```

```js title="sidebars.js"
module.exports = {
Expand All @@ -433,8 +439,10 @@ module.exports = {
};
```

```mdx-code-block
</TabItem>
</Tabs>
```

So it's possible to simplify the example above to:

Expand Down Expand Up @@ -472,8 +480,10 @@ module.exports = {

A category item can be represented by an object whose key is its label, and the value is an array of subitems.

```mdx-code-block
<Tabs>
<TabItem value="Longhand">
```

```js title="sidebars.js"
module.exports = {
Expand All @@ -489,8 +499,10 @@ module.exports = {
};
```

```mdx-code-block
</TabItem>
<TabItem value="Shorthand">
```

```js title="sidebars.js"
module.exports = {
Expand All @@ -504,8 +516,10 @@ module.exports = {
};
```

```mdx-code-block
</TabItem>
</Tabs>
```

This permits us to simplify that example to:

Expand Down Expand Up @@ -553,8 +567,10 @@ Note how the two consecutive category shorthands are compressed into one object

Wherever you have an array of items that is reduced to one category shorthand, you can omit that enclosing array as well.

```mdx-code-block
<Tabs>
<TabItem value="Before">
```

```js title="sidebars.js"
module.exports = {
Expand All @@ -572,8 +588,10 @@ module.exports = {
};
```

```mdx-code-block
</TabItem>
<TabItem value="After">
```

```js title="sidebars.js"
module.exports = {
Expand All @@ -587,5 +605,7 @@ module.exports = {
};
```

```mdx-code-block
</TabItem>
</Tabs>
```