mirror of
https://github.com/facebook/docusaurus.git
synced 2025-04-30 18:58:36 +02:00
* [v2] tags to doc, same as tags to blog - [IN PROGRESS] - Addition of plugin-content-docs - Addition of DocTagsListPage in `docusaurus-theme-classic` ! Error exists for this commit towards the theme aspect and help required. Commit towards #3434 * docs: make tags list page work * temp: disable onBrokenLinks * theme bootstrap: create DocTagsListPage * DocTagsPage added and functionality too - individual doc tag page added to show docs for that specific tag * Added all Docs Tags Link * add some shared tag utils * move tag tests to _dogfooding * fix type * fix some tests * fix blog test * refactor blog post tags handling * better yaml tag examples * better dogfood md files * refactor and factorize theme tag components * finish DocTagDocListPage * Extract DocItemFooter + add inline tag list * minor fix * better typings * fix versions.test.ts tests * add tests for doc tags * fix tests * test toTagDocListProp * move shared theme code to tagUtils * Add new theme translation keys * move common theme code to tagUtils + add tests * update-code-translations should handle theme-common * update french translation * revert add translation * fix pluralization problem in theme.docs.tagDocListPageTitle * add theme component configuration options * add more tags tests * add documentation for docs tagging Co-authored-by: slorber <lorber.sebastien@gmail.com>
207 lines
6 KiB
TypeScript
207 lines
6 KiB
TypeScript
/**
|
|
* 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.
|
|
*/
|
|
|
|
declare module '@docusaurus/plugin-content-docs-types' {
|
|
type VersionBanner = import('./types').VersionBanner;
|
|
type GlobalDataVersion = import('./types').GlobalVersion;
|
|
type GlobalDataDoc = import('./types').GlobalDoc;
|
|
type VersionTag = import('./types').VersionTag;
|
|
|
|
export type {GlobalDataVersion, GlobalDataDoc};
|
|
|
|
export type PropVersionMetadata = {
|
|
pluginId: string;
|
|
version: string;
|
|
label: string;
|
|
banner: VersionBanner;
|
|
isLast: boolean;
|
|
docsSidebars: PropSidebars;
|
|
};
|
|
|
|
type PropsSidebarItemBase = {
|
|
customProps?: Record<string, unknown>;
|
|
};
|
|
|
|
export type PropSidebarItemLink = PropsSidebarItemBase & {
|
|
type: 'link';
|
|
href: string;
|
|
label: string;
|
|
};
|
|
|
|
export type PropSidebarItemCategory = PropsSidebarItemBase & {
|
|
type: 'category';
|
|
label: string;
|
|
items: PropSidebarItem[];
|
|
collapsed: boolean;
|
|
collapsible: boolean;
|
|
};
|
|
|
|
export type PropSidebarItem = PropSidebarItemLink | PropSidebarItemCategory;
|
|
|
|
export type PropSidebars = {
|
|
[sidebarId: string]: PropSidebarItem[];
|
|
};
|
|
|
|
export type PropTagDocListDoc = {
|
|
id: string;
|
|
title: string;
|
|
description: string;
|
|
permalink: string;
|
|
};
|
|
export type PropTagDocList = {
|
|
allTagsPath: string;
|
|
name: string; // normalized name/label of the tag
|
|
permalink: string; // pathname of the tag
|
|
docs: PropTagDocListDoc[];
|
|
};
|
|
|
|
export type PropTagsListPage = {
|
|
tags: {
|
|
name: string;
|
|
permalink: string;
|
|
count: number;
|
|
}[];
|
|
};
|
|
}
|
|
|
|
declare module '@theme/DocItem' {
|
|
import type {TOCItem} from '@docusaurus/types';
|
|
import type {PropVersionMetadata} from '@docusaurus/plugin-content-docs-types';
|
|
|
|
export type DocumentRoute = {
|
|
readonly component: () => JSX.Element;
|
|
readonly exact: boolean;
|
|
readonly path: string;
|
|
readonly sidebar?: string;
|
|
};
|
|
|
|
export type FrontMatter = {
|
|
readonly id: string;
|
|
readonly title: string;
|
|
readonly image?: string;
|
|
readonly keywords?: readonly string[];
|
|
/* eslint-disable camelcase */
|
|
readonly hide_title?: boolean;
|
|
readonly hide_table_of_contents?: boolean;
|
|
/* eslint-enable camelcase */
|
|
};
|
|
|
|
export type Metadata = {
|
|
readonly description?: string;
|
|
readonly title?: string;
|
|
readonly permalink?: string;
|
|
readonly editUrl?: string;
|
|
readonly lastUpdatedAt?: number;
|
|
readonly formattedLastUpdatedAt?: string;
|
|
readonly lastUpdatedBy?: string;
|
|
readonly version?: string;
|
|
readonly previous?: {readonly permalink: string; readonly title: string};
|
|
readonly next?: {readonly permalink: string; readonly title: string};
|
|
readonly tags: readonly {
|
|
readonly label: string;
|
|
readonly permalink: string;
|
|
}[];
|
|
};
|
|
|
|
export type Props = {
|
|
readonly route: DocumentRoute;
|
|
readonly versionMetadata: PropVersionMetadata;
|
|
readonly content: {
|
|
readonly frontMatter: FrontMatter;
|
|
readonly metadata: Metadata;
|
|
readonly toc: readonly TOCItem[];
|
|
readonly contentTitle: string | undefined;
|
|
(): JSX.Element;
|
|
};
|
|
};
|
|
|
|
const DocItem: (props: Props) => JSX.Element;
|
|
export default DocItem;
|
|
}
|
|
|
|
declare module '@theme/DocItemFooter' {
|
|
import type {Props} from '@theme/DocItem';
|
|
|
|
export default function DocItemFooter(props: Props): JSX.Element;
|
|
}
|
|
|
|
declare module '@theme/DocTagsListPage' {
|
|
import type {PropTagsListPage} from '@docusaurus/plugin-content-docs-types';
|
|
|
|
export type Props = PropTagsListPage;
|
|
export default function DocItemFooter(props: Props): JSX.Element;
|
|
}
|
|
|
|
declare module '@theme/DocVersionBanner' {
|
|
import type {PropVersionMetadata} from '@docusaurus/plugin-content-docs-types';
|
|
|
|
export type Props = {
|
|
readonly versionMetadata: PropVersionMetadata;
|
|
};
|
|
|
|
const DocVersionBanner: (props: Props) => JSX.Element;
|
|
export default DocVersionBanner;
|
|
}
|
|
|
|
declare module '@theme/DocPage' {
|
|
import type {PropVersionMetadata} from '@docusaurus/plugin-content-docs-types';
|
|
import type {DocumentRoute} from '@theme/DocItem';
|
|
|
|
export type Props = {
|
|
readonly location: {readonly pathname: string};
|
|
readonly versionMetadata: PropVersionMetadata;
|
|
readonly route: {
|
|
readonly path: string;
|
|
readonly component: () => JSX.Element;
|
|
readonly routes: DocumentRoute[];
|
|
};
|
|
};
|
|
|
|
const DocPage: (props: Props) => JSX.Element;
|
|
export default DocPage;
|
|
}
|
|
|
|
declare module '@theme/Seo' {
|
|
export type Props = {
|
|
readonly title?: string;
|
|
readonly description?: string;
|
|
readonly keywords?: readonly string[] | string;
|
|
readonly image?: string;
|
|
};
|
|
|
|
const Seo: (props: Props) => JSX.Element;
|
|
export default Seo;
|
|
}
|
|
|
|
declare module '@theme/hooks/useDocs' {
|
|
type GlobalPluginData = import('./types').GlobalPluginData;
|
|
type GlobalVersion = import('./types').GlobalVersion;
|
|
type ActivePlugin = import('./client/docsClientUtils').ActivePlugin;
|
|
type ActiveDocContext = import('./client/docsClientUtils').ActiveDocContext;
|
|
type DocVersionSuggestions = import('./client/docsClientUtils').DocVersionSuggestions;
|
|
|
|
export type {GlobalPluginData, GlobalVersion};
|
|
export const useAllDocsData: () => Record<string, GlobalPluginData>;
|
|
export const useDocsData: (pluginId?: string) => GlobalPluginData;
|
|
export const useActivePlugin: (
|
|
options: GetActivePluginOptions = {},
|
|
) => ActivePlugin | undefined;
|
|
export const useActivePluginAndVersion: (
|
|
options: GetActivePluginOptions = {},
|
|
) =>
|
|
| {activePlugin: ActivePlugin; activeVersion: GlobalVersion | undefined}
|
|
| undefined;
|
|
export const useVersions: (pluginId?: string) => GlobalVersion[];
|
|
export const useLatestVersion: (pluginId?: string) => GlobalVersion;
|
|
export const useActiveVersion: (
|
|
pluginId?: string,
|
|
) => GlobalVersion | undefined;
|
|
export const useActiveDocContext: (pluginId?: string) => ActiveDocContext;
|
|
export const useDocVersionSuggestions: (
|
|
pluginId?: string,
|
|
) => DocVersionSuggestions;
|
|
}
|