/
githubmirror
/
docusaurus
Обзор
Документация
Войти
/
githubmirror
/
docusaurus
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
packages/docusaurus-theme-classic/src/theme/Blog/Pages/BlogAuthorsPostsPage/index.tsx
82 строки
2 KB
Sébastien Lorber
refactor: prepare types for React 19 (#10746)
06 дек 2024, 20:03
Не верифицирован
06 дек 2024, 20:03
f9825af
Код
Авторство
О чём код?
/** * 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, {type ReactNode} from 'react'; import clsx from 'clsx'; import { PageMetadata, HtmlClassNameProvider, ThemeClassNames, } from '@docusaurus/theme-common'; import { useBlogAuthorPageTitle, BlogAuthorsListViewAllLabel, BlogAuthorNoPostsLabel, } from '@docusaurus/theme-common/internal'; import Link from '@docusaurus/Link'; import {useBlogMetadata} from '@docusaurus/plugin-content-blog/client'; import BlogLayout from '@theme/BlogLayout'; import BlogListPaginator from '@theme/BlogListPaginator'; import SearchMetadata from '@theme/SearchMetadata'; import type {Props} from '@theme/Blog/Pages/BlogAuthorsPostsPage'; import BlogPostItems from '@theme/BlogPostItems'; import Author from '@theme/Blog/Components/Author'; function Metadata({author}: Props): ReactNode { const title = useBlogAuthorPageTitle(author); return ( <> <PageMetadata title={title} /> <SearchMetadata tag="blog_authors_posts" /> </> ); } function ViewAllAuthorsLink() { const {authorsListPath} = useBlogMetadata(); return ( <Link href={authorsListPath}> <BlogAuthorsListViewAllLabel /> </Link> ); } function Content({author, items, sidebar, listMetadata}: Props): ReactNode { return ( <BlogLayout sidebar={sidebar}> <header className="margin-bottom--xl"> <Author as="h1" author={author} /> {author.description && <p>{author.description}</p>} <ViewAllAuthorsLink /> </header> {items.length === 0 ? ( <p> <BlogAuthorNoPostsLabel /> </p> ) : ( <> <hr /> <BlogPostItems items={items} /> <BlogListPaginator metadata={listMetadata} /> </> )} </BlogLayout> ); } export default function BlogAuthorsPostsPage(props: Props): ReactNode { return ( <HtmlClassNameProvider className={clsx( ThemeClassNames.wrapper.blogPages, ThemeClassNames.page.blogAuthorsPostsPage, )}> <Metadata {...props} /> <Content {...props} /> </HtmlClassNameProvider> ); }