mirror of
https://github.com/facebook/docusaurus.git
synced 2025-06-15 09:12:24 +02:00
refactor(blog): theme-common shouldn't depend on blog content plugins (#10313)
This commit is contained in:
parent
7544a2373d
commit
61d6858864
29 changed files with 111 additions and 76 deletions
52
.eslintrc.js
vendored
52
.eslintrc.js
vendored
|
@ -9,16 +9,18 @@ const OFF = 0;
|
||||||
const WARNING = 1;
|
const WARNING = 1;
|
||||||
const ERROR = 2;
|
const ERROR = 2;
|
||||||
|
|
||||||
const ClientRestrictedImportPatterns = [
|
// Prevent importing lodash, usually for browser bundle size reasons
|
||||||
// Prevent importing lodash in client bundle for bundle size
|
const LodashImportPatterns = ['lodash', 'lodash.**', 'lodash/**'];
|
||||||
'lodash',
|
|
||||||
'lodash.**',
|
// Prevent importing content plugins, usually for coupling reasons
|
||||||
'lodash/**',
|
const ContentPluginsImportPatterns = [
|
||||||
// Prevent importing server code in client bundle
|
'@docusaurus/plugin-content-blog',
|
||||||
'**/../babel/**',
|
'@docusaurus/plugin-content-blog/**',
|
||||||
'**/../server/**',
|
// TODO fix theme-common => docs dependency issue
|
||||||
'**/../commands/**',
|
// '@docusaurus/plugin-content-docs',
|
||||||
'**/../webpack/**',
|
// '@docusaurus/plugin-content-docs/**',
|
||||||
|
'@docusaurus/plugin-content-pages',
|
||||||
|
'@docusaurus/plugin-content-pages/**',
|
||||||
];
|
];
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
@ -408,7 +410,33 @@ module.exports = {
|
||||||
'no-restricted-imports': [
|
'no-restricted-imports': [
|
||||||
'error',
|
'error',
|
||||||
{
|
{
|
||||||
patterns: ClientRestrictedImportPatterns,
|
patterns: [
|
||||||
|
...LodashImportPatterns,
|
||||||
|
...ContentPluginsImportPatterns,
|
||||||
|
// Prevent importing server code in client bundle
|
||||||
|
'**/../babel/**',
|
||||||
|
'**/../server/**',
|
||||||
|
'**/../commands/**',
|
||||||
|
'**/../webpack/**',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: [
|
||||||
|
'packages/docusaurus-theme-common/src/**/*.{js,ts,tsx}',
|
||||||
|
'packages/docusaurus-utils-common/src/**/*.{js,ts,tsx}',
|
||||||
|
],
|
||||||
|
excludedFiles: '*.test.{js,ts,tsx}',
|
||||||
|
rules: {
|
||||||
|
'no-restricted-imports': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
patterns: [
|
||||||
|
...LodashImportPatterns,
|
||||||
|
...ContentPluginsImportPatterns,
|
||||||
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
@ -420,7 +448,7 @@ module.exports = {
|
||||||
'no-restricted-imports': [
|
'no-restricted-imports': [
|
||||||
'error',
|
'error',
|
||||||
{
|
{
|
||||||
patterns: ClientRestrictedImportPatterns.concat(
|
patterns: LodashImportPatterns.concat(
|
||||||
// Prevents relative imports between React theme components
|
// Prevents relative imports between React theme components
|
||||||
[
|
[
|
||||||
'../**',
|
'../**',
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
"@docusaurus/core": "3.4.0",
|
"@docusaurus/core": "3.4.0",
|
||||||
"@docusaurus/logger": "3.4.0",
|
"@docusaurus/logger": "3.4.0",
|
||||||
"@docusaurus/mdx-loader": "3.4.0",
|
"@docusaurus/mdx-loader": "3.4.0",
|
||||||
|
"@docusaurus/theme-common": "3.4.0",
|
||||||
"@docusaurus/types": "3.4.0",
|
"@docusaurus/types": "3.4.0",
|
||||||
"@docusaurus/utils": "3.4.0",
|
"@docusaurus/utils": "3.4.0",
|
||||||
"@docusaurus/utils-common": "3.4.0",
|
"@docusaurus/utils-common": "3.4.0",
|
||||||
|
|
|
@ -6,9 +6,24 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React, {useMemo, type ReactNode, useContext} from 'react';
|
import React, {useMemo, type ReactNode, useContext} from 'react';
|
||||||
import {ReactContextError} from '../utils/reactUtils';
|
import {ReactContextError} from '@docusaurus/theme-common/internal';
|
||||||
|
import useRouteContext from '@docusaurus/useRouteContext';
|
||||||
|
|
||||||
import type {PropBlogPostContent} from '@docusaurus/plugin-content-blog';
|
import type {
|
||||||
|
PropBlogPostContent,
|
||||||
|
BlogMetadata,
|
||||||
|
} from '@docusaurus/plugin-content-blog';
|
||||||
|
|
||||||
|
export function useBlogMetadata(): BlogMetadata {
|
||||||
|
const routeContext = useRouteContext();
|
||||||
|
const blogMetadata = routeContext?.data?.blogMetadata;
|
||||||
|
if (!blogMetadata) {
|
||||||
|
throw new Error(
|
||||||
|
"useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return blogMetadata as BlogMetadata;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The React context value returned by the `useBlogPost()` hook.
|
* The React context value returned by the `useBlogPost()` hook.
|
|
@ -1,20 +0,0 @@
|
||||||
/**
|
|
||||||
* 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 useRouteContext from '@docusaurus/useRouteContext';
|
|
||||||
import type {BlogMetadata} from '@docusaurus/plugin-content-blog';
|
|
||||||
|
|
||||||
export function useBlogMetadata(): BlogMetadata {
|
|
||||||
const routeContext = useRouteContext();
|
|
||||||
const blogMetadata = routeContext?.data?.blogMetadata;
|
|
||||||
if (!blogMetadata) {
|
|
||||||
throw new Error(
|
|
||||||
"useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return blogMetadata as BlogMetadata;
|
|
||||||
}
|
|
24
packages/docusaurus-plugin-content-blog/src/client/index.tsx
Normal file
24
packages/docusaurus-plugin-content-blog/src/client/index.tsx
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
/**
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export {
|
||||||
|
BlogPostProvider,
|
||||||
|
type BlogPostContextValue,
|
||||||
|
useBlogPost,
|
||||||
|
useBlogMetadata,
|
||||||
|
} from './contexts';
|
||||||
|
|
||||||
|
export {
|
||||||
|
useBlogListPageStructuredData,
|
||||||
|
useBlogPostStructuredData,
|
||||||
|
} from './structuredDataUtils';
|
||||||
|
|
||||||
|
export {
|
||||||
|
BlogSidebarItemList,
|
||||||
|
groupBlogSidebarItemsByYear,
|
||||||
|
useVisibleBlogSidebarItems,
|
||||||
|
} from './sidebarUtils';
|
|
@ -5,7 +5,7 @@
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {groupBlogSidebarItemsByYear} from '../blogUtils';
|
import {groupBlogSidebarItemsByYear} from './sidebarUtils';
|
||||||
import type {BlogSidebarItem} from '@docusaurus/plugin-content-blog';
|
import type {BlogSidebarItem} from '@docusaurus/plugin-content-blog';
|
||||||
|
|
||||||
describe('groupBlogSidebarItemsByYear', () => {
|
describe('groupBlogSidebarItemsByYear', () => {
|
|
@ -8,8 +8,8 @@
|
||||||
import React, {type ReactNode, useMemo} from 'react';
|
import React, {type ReactNode, useMemo} from 'react';
|
||||||
import {useLocation} from '@docusaurus/router';
|
import {useLocation} from '@docusaurus/router';
|
||||||
import Link from '@docusaurus/Link';
|
import Link from '@docusaurus/Link';
|
||||||
import {isSamePath} from './routesUtils';
|
import {groupBy} from '@docusaurus/theme-common';
|
||||||
import {groupBy} from './jsUtils';
|
import {isSamePath} from '@docusaurus/theme-common/internal';
|
||||||
import type {BlogSidebarItem} from '@docusaurus/plugin-content-blog';
|
import type {BlogSidebarItem} from '@docusaurus/plugin-content-blog';
|
||||||
|
|
||||||
function isVisible(item: BlogSidebarItem, pathname: string): boolean {
|
function isVisible(item: BlogSidebarItem, pathname: string): boolean {
|
|
@ -9,7 +9,8 @@ import {useBaseUrlUtils, type BaseUrlUtils} from '@docusaurus/useBaseUrl';
|
||||||
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
||||||
import {useBlogMetadata} from '@docusaurus/plugin-content-blog/client';
|
import {useBlogMetadata} from '@docusaurus/plugin-content-blog/client';
|
||||||
import type {Props as BlogListPageStructuredDataProps} from '@theme/BlogListPage/StructuredData';
|
import type {Props as BlogListPageStructuredDataProps} from '@theme/BlogListPage/StructuredData';
|
||||||
import {useBlogPost} from '../contexts/blogPost';
|
import {useBlogPost} from './contexts';
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
Blog,
|
Blog,
|
||||||
BlogPosting,
|
BlogPosting,
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Head from '@docusaurus/Head';
|
import Head from '@docusaurus/Head';
|
||||||
import {useBlogListPageStructuredData} from '@docusaurus/theme-common';
|
import {useBlogListPageStructuredData} from '@docusaurus/plugin-content-blog/client';
|
||||||
import type {Props} from '@theme/BlogListPage/StructuredData';
|
import type {Props} from '@theme/BlogListPage/StructuredData';
|
||||||
|
|
||||||
export default function BlogListPageStructuredData(props: Props): JSX.Element {
|
export default function BlogListPageStructuredData(props: Props): JSX.Element {
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import {blogPostContainerID} from '@docusaurus/utils-common';
|
import {blogPostContainerID} from '@docusaurus/utils-common';
|
||||||
import {useBlogPost} from '@docusaurus/theme-common/internal';
|
import {useBlogPost} from '@docusaurus/plugin-content-blog/client';
|
||||||
import MDXContent from '@theme/MDXContent';
|
import MDXContent from '@theme/MDXContent';
|
||||||
import type {Props} from '@theme/BlogPostItem/Content';
|
import type {Props} from '@theme/BlogPostItem/Content';
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import {useBlogPost} from '@docusaurus/theme-common/internal';
|
import {useBlogPost} from '@docusaurus/plugin-content-blog/client';
|
||||||
import {ThemeClassNames} from '@docusaurus/theme-common';
|
import {ThemeClassNames} from '@docusaurus/theme-common';
|
||||||
import EditMetaRow from '@theme/EditMetaRow';
|
import EditMetaRow from '@theme/EditMetaRow';
|
||||||
import TagsListInline from '@theme/TagsListInline';
|
import TagsListInline from '@theme/TagsListInline';
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import {useBlogPost} from '@docusaurus/theme-common/internal';
|
import {useBlogPost} from '@docusaurus/plugin-content-blog/client';
|
||||||
import BlogPostItemHeaderAuthor from '@theme/BlogPostItem/Header/Author';
|
import BlogPostItemHeaderAuthor from '@theme/BlogPostItem/Header/Author';
|
||||||
import type {Props} from '@theme/BlogPostItem/Header/Authors';
|
import type {Props} from '@theme/BlogPostItem/Header/Authors';
|
||||||
import styles from './styles.module.css';
|
import styles from './styles.module.css';
|
||||||
|
|
|
@ -9,10 +9,8 @@ import React from 'react';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import {translate} from '@docusaurus/Translate';
|
import {translate} from '@docusaurus/Translate';
|
||||||
import {usePluralForm} from '@docusaurus/theme-common';
|
import {usePluralForm} from '@docusaurus/theme-common';
|
||||||
import {
|
import {useDateTimeFormat} from '@docusaurus/theme-common/internal';
|
||||||
useBlogPost,
|
import {useBlogPost} from '@docusaurus/plugin-content-blog/client';
|
||||||
useDateTimeFormat,
|
|
||||||
} from '@docusaurus/theme-common/internal';
|
|
||||||
import type {Props} from '@theme/BlogPostItem/Header/Info';
|
import type {Props} from '@theme/BlogPostItem/Header/Info';
|
||||||
|
|
||||||
import styles from './styles.module.css';
|
import styles from './styles.module.css';
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import Link from '@docusaurus/Link';
|
import Link from '@docusaurus/Link';
|
||||||
import {useBlogPost} from '@docusaurus/theme-common/internal';
|
import {useBlogPost} from '@docusaurus/plugin-content-blog/client';
|
||||||
import type {Props} from '@theme/BlogPostItem/Header/Title';
|
import type {Props} from '@theme/BlogPostItem/Header/Title';
|
||||||
|
|
||||||
import styles from './styles.module.css';
|
import styles from './styles.module.css';
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import {useBlogPost} from '@docusaurus/theme-common/internal';
|
import {useBlogPost} from '@docusaurus/plugin-content-blog/client';
|
||||||
import BlogPostItemContainer from '@theme/BlogPostItem/Container';
|
import BlogPostItemContainer from '@theme/BlogPostItem/Container';
|
||||||
import BlogPostItemHeader from '@theme/BlogPostItem/Header';
|
import BlogPostItemHeader from '@theme/BlogPostItem/Header';
|
||||||
import BlogPostItemContent from '@theme/BlogPostItem/Content';
|
import BlogPostItemContent from '@theme/BlogPostItem/Content';
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import {BlogPostProvider} from '@docusaurus/theme-common/internal';
|
import {BlogPostProvider} from '@docusaurus/plugin-content-blog/client';
|
||||||
import BlogPostItem from '@theme/BlogPostItem';
|
import BlogPostItem from '@theme/BlogPostItem';
|
||||||
import type {Props} from '@theme/BlogPostItems';
|
import type {Props} from '@theme/BlogPostItems';
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import {PageMetadata} from '@docusaurus/theme-common';
|
import {PageMetadata} from '@docusaurus/theme-common';
|
||||||
import {useBlogPost} from '@docusaurus/theme-common/internal';
|
import {useBlogPost} from '@docusaurus/plugin-content-blog/client';
|
||||||
|
|
||||||
export default function BlogPostPageMetadata(): JSX.Element {
|
export default function BlogPostPageMetadata(): JSX.Element {
|
||||||
const {assets, metadata} = useBlogPost();
|
const {assets, metadata} = useBlogPost();
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Head from '@docusaurus/Head';
|
import Head from '@docusaurus/Head';
|
||||||
import {useBlogPostStructuredData} from '@docusaurus/theme-common';
|
import {useBlogPostStructuredData} from '@docusaurus/plugin-content-blog/client';
|
||||||
|
|
||||||
export default function BlogPostStructuredData(): JSX.Element {
|
export default function BlogPostStructuredData(): JSX.Element {
|
||||||
const structuredData = useBlogPostStructuredData();
|
const structuredData = useBlogPostStructuredData();
|
||||||
|
|
|
@ -8,7 +8,10 @@
|
||||||
import React, {type ReactNode} from 'react';
|
import React, {type ReactNode} from 'react';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import {HtmlClassNameProvider, ThemeClassNames} from '@docusaurus/theme-common';
|
import {HtmlClassNameProvider, ThemeClassNames} from '@docusaurus/theme-common';
|
||||||
import {BlogPostProvider, useBlogPost} from '@docusaurus/theme-common/internal';
|
import {
|
||||||
|
BlogPostProvider,
|
||||||
|
useBlogPost,
|
||||||
|
} from '@docusaurus/plugin-content-blog/client';
|
||||||
import BlogLayout from '@theme/BlogLayout';
|
import BlogLayout from '@theme/BlogLayout';
|
||||||
import BlogPostItem from '@theme/BlogPostItem';
|
import BlogPostItem from '@theme/BlogPostItem';
|
||||||
import BlogPostPaginator from '@theme/BlogPostPaginator';
|
import BlogPostPaginator from '@theme/BlogPostPaginator';
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*/
|
*/
|
||||||
import React, {memo, type ReactNode} from 'react';
|
import React, {memo, type ReactNode} from 'react';
|
||||||
import {useThemeConfig} from '@docusaurus/theme-common';
|
import {useThemeConfig} from '@docusaurus/theme-common';
|
||||||
import {groupBlogSidebarItemsByYear} from '@docusaurus/theme-common/internal';
|
import {groupBlogSidebarItemsByYear} from '@docusaurus/plugin-content-blog/client';
|
||||||
import Heading from '@theme/Heading';
|
import Heading from '@theme/Heading';
|
||||||
import type {Props} from '@theme/BlogSidebar/Content';
|
import type {Props} from '@theme/BlogSidebar/Content';
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import {translate} from '@docusaurus/Translate';
|
||||||
import {
|
import {
|
||||||
useVisibleBlogSidebarItems,
|
useVisibleBlogSidebarItems,
|
||||||
BlogSidebarItemList,
|
BlogSidebarItemList,
|
||||||
} from '@docusaurus/theme-common/internal';
|
} from '@docusaurus/plugin-content-blog/client';
|
||||||
import BlogSidebarContent from '@theme/BlogSidebar/Content';
|
import BlogSidebarContent from '@theme/BlogSidebar/Content';
|
||||||
import type {Props as BlogSidebarContentProps} from '@theme/BlogSidebar/Content';
|
import type {Props as BlogSidebarContentProps} from '@theme/BlogSidebar/Content';
|
||||||
import type {Props} from '@theme/BlogSidebar/Desktop';
|
import type {Props} from '@theme/BlogSidebar/Desktop';
|
||||||
|
|
|
@ -9,7 +9,7 @@ import React, {memo} from 'react';
|
||||||
import {
|
import {
|
||||||
useVisibleBlogSidebarItems,
|
useVisibleBlogSidebarItems,
|
||||||
BlogSidebarItemList,
|
BlogSidebarItemList,
|
||||||
} from '@docusaurus/theme-common/internal';
|
} from '@docusaurus/plugin-content-blog/client';
|
||||||
import {NavbarSecondaryMenuFiller} from '@docusaurus/theme-common';
|
import {NavbarSecondaryMenuFiller} from '@docusaurus/theme-common';
|
||||||
import BlogSidebarContent from '@theme/BlogSidebar/Content';
|
import BlogSidebarContent from '@theme/BlogSidebar/Content';
|
||||||
import type {Props} from '@theme/BlogSidebar/Mobile';
|
import type {Props} from '@theme/BlogSidebar/Mobile';
|
||||||
|
|
|
@ -32,7 +32,6 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/mdx-loader": "3.4.0",
|
"@docusaurus/mdx-loader": "3.4.0",
|
||||||
"@docusaurus/module-type-aliases": "3.4.0",
|
"@docusaurus/module-type-aliases": "3.4.0",
|
||||||
"@docusaurus/plugin-content-blog": "3.4.0",
|
|
||||||
"@docusaurus/plugin-content-docs": "3.4.0",
|
"@docusaurus/plugin-content-docs": "3.4.0",
|
||||||
"@docusaurus/plugin-content-pages": "3.4.0",
|
"@docusaurus/plugin-content-pages": "3.4.0",
|
||||||
"@docusaurus/utils": "3.4.0",
|
"@docusaurus/utils": "3.4.0",
|
||||||
|
|
|
@ -39,11 +39,6 @@ export {
|
||||||
filterDocCardListItems,
|
filterDocCardListItems,
|
||||||
} from './utils/docsUtils';
|
} from './utils/docsUtils';
|
||||||
|
|
||||||
export {
|
|
||||||
useBlogListPageStructuredData,
|
|
||||||
useBlogPostStructuredData,
|
|
||||||
} from './utils/structuredDataUtils';
|
|
||||||
|
|
||||||
export {usePluralForm} from './utils/usePluralForm';
|
export {usePluralForm} from './utils/usePluralForm';
|
||||||
|
|
||||||
export {useCollapsible, Collapsible} from './components/Collapsible';
|
export {useCollapsible, Collapsible} from './components/Collapsible';
|
||||||
|
|
|
@ -26,11 +26,6 @@ export {DocsVersionProvider, useDocsVersion} from './contexts/docsVersion';
|
||||||
export {DocsSidebarProvider, useDocsSidebar} from './contexts/docsSidebar';
|
export {DocsSidebarProvider, useDocsSidebar} from './contexts/docsSidebar';
|
||||||
|
|
||||||
export {DocProvider, useDoc, type DocContextValue} from './contexts/doc';
|
export {DocProvider, useDoc, type DocContextValue} from './contexts/doc';
|
||||||
export {
|
|
||||||
BlogPostProvider,
|
|
||||||
useBlogPost,
|
|
||||||
type BlogPostContextValue,
|
|
||||||
} from './contexts/blogPost';
|
|
||||||
|
|
||||||
export {
|
export {
|
||||||
useDocsPreferredVersionByPluginId,
|
useDocsPreferredVersionByPluginId,
|
||||||
|
@ -113,11 +108,6 @@ export {
|
||||||
type TOCHighlightConfig,
|
type TOCHighlightConfig,
|
||||||
} from './hooks/useTOCHighlight';
|
} from './hooks/useTOCHighlight';
|
||||||
|
|
||||||
export {
|
|
||||||
useVisibleBlogSidebarItems,
|
|
||||||
groupBlogSidebarItemsByYear,
|
|
||||||
BlogSidebarItemList,
|
|
||||||
} from './utils/blogUtils';
|
|
||||||
export {useDateTimeFormat} from './utils/IntlUtils';
|
export {useDateTimeFormat} from './utils/IntlUtils';
|
||||||
|
|
||||||
export {useHideableNavbar} from './hooks/useHideableNavbar';
|
export {useHideableNavbar} from './hooks/useHideableNavbar';
|
||||||
|
|
|
@ -6,6 +6,4 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/// <reference types="@docusaurus/module-type-aliases" />
|
/// <reference types="@docusaurus/module-type-aliases" />
|
||||||
/// <reference types="@docusaurus/plugin-content-blog" />
|
|
||||||
/// <reference types="@docusaurus/plugin-content-docs" />
|
/// <reference types="@docusaurus/plugin-content-docs" />
|
||||||
/// <reference types="@docusaurus/plugin-content-pages" />
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
import React, {useState} from 'react';
|
import React, {useState} from 'react';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import {useBlogPost} from '@docusaurus/theme-common/internal';
|
import {useBlogPost} from '@docusaurus/plugin-content-blog/client';
|
||||||
import ChangelogItemHeaderAuthor from '@theme/ChangelogItem/Header/Author';
|
import ChangelogItemHeaderAuthor from '@theme/ChangelogItem/Header/Author';
|
||||||
import IconExpand from '@theme/Icon/Expand';
|
import IconExpand from '@theme/Icon/Expand';
|
||||||
import type {Props} from '@theme/BlogPostItem/Header/Authors';
|
import type {Props} from '@theme/BlogPostItem/Header/Authors';
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import {useBlogPost} from '@docusaurus/theme-common/internal';
|
import {useBlogPost} from '@docusaurus/plugin-content-blog/client';
|
||||||
|
|
||||||
import BlogPostItemHeaderTitle from '@theme/BlogPostItem/Header/Title';
|
import BlogPostItemHeaderTitle from '@theme/BlogPostItem/Header/Title';
|
||||||
import BlogPostItemHeaderInfo from '@theme/BlogPostItem/Header/Info';
|
import BlogPostItemHeaderInfo from '@theme/BlogPostItem/Header/Info';
|
||||||
|
|
|
@ -10,7 +10,10 @@ import clsx from 'clsx';
|
||||||
import Translate from '@docusaurus/Translate';
|
import Translate from '@docusaurus/Translate';
|
||||||
import Link from '@docusaurus/Link';
|
import Link from '@docusaurus/Link';
|
||||||
import {HtmlClassNameProvider, ThemeClassNames} from '@docusaurus/theme-common';
|
import {HtmlClassNameProvider, ThemeClassNames} from '@docusaurus/theme-common';
|
||||||
import {BlogPostProvider, useBlogPost} from '@docusaurus/theme-common/internal';
|
import {
|
||||||
|
BlogPostProvider,
|
||||||
|
useBlogPost,
|
||||||
|
} from '@docusaurus/plugin-content-blog/client';
|
||||||
import BlogPostPageMetadata from '@theme/BlogPostPage/Metadata';
|
import BlogPostPageMetadata from '@theme/BlogPostPage/Metadata';
|
||||||
import BlogLayout from '@theme/BlogLayout';
|
import BlogLayout from '@theme/BlogLayout';
|
||||||
import ChangelogItem from '@theme/ChangelogItem';
|
import ChangelogItem from '@theme/ChangelogItem';
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue