From b30a2af923feebc55fc6312737bf2c00c67f4cd9 Mon Sep 17 00:00:00 2001 From: jinhojang6 Date: Thu, 22 Jun 2023 00:39:01 +0900 Subject: [PATCH] refactor: refactor BlogLayout --- .../theme/BlogLayout/BlogPage.context.tsx | 15 ++++++ .../src/client/theme/BlogLayout/index.tsx | 52 +++++++++++++++++-- .../styles.module.scss | 10 +++- .../src/client/theme/BlogPostItems/index.tsx | 15 ------ 4 files changed, 71 insertions(+), 21 deletions(-) create mode 100644 packages/logos-docusaurus-theme/src/client/theme/BlogLayout/BlogPage.context.tsx rename packages/logos-docusaurus-theme/src/client/theme/{BlogPostItems => BlogLayout}/styles.module.scss (75%) diff --git a/packages/logos-docusaurus-theme/src/client/theme/BlogLayout/BlogPage.context.tsx b/packages/logos-docusaurus-theme/src/client/theme/BlogLayout/BlogPage.context.tsx new file mode 100644 index 0000000..dc10be4 --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/theme/BlogLayout/BlogPage.context.tsx @@ -0,0 +1,15 @@ +import React, { useContext } from 'react' + +export type BlogPageContextType = { + type?: 'list' | 'page' + blogTitle?: string + blogDescription?: string +} + +export const BlogPage = React.createContext({ + type: 'list', + blogTitle: '', + blogDescription: '', +}) + +export const useBlogPage = () => useContext(BlogPage) diff --git a/packages/logos-docusaurus-theme/src/client/theme/BlogLayout/index.tsx b/packages/logos-docusaurus-theme/src/client/theme/BlogLayout/index.tsx index 873a25d..848c64e 100644 --- a/packages/logos-docusaurus-theme/src/client/theme/BlogLayout/index.tsx +++ b/packages/logos-docusaurus-theme/src/client/theme/BlogLayout/index.tsx @@ -1,10 +1,14 @@ import clsx from 'clsx' import React from 'react' - -import BlogLayout from '@docusaurus/theme-classic/lib/theme/BlogLayout' import { Props } from '@theme/BlogLayout' import { ensureTrailingSlash } from '../../lib/string.utils' import useDocusaurusContext from '@docusaurus/useDocusaurusContext' +import { useBlogPluginData } from '@logos-theme/lib/useBlogPluginData' + +import { Typography } from '@acid-info/lsd-react' +import styles from './styles.module.scss' +import Layout from '@theme/Layout' +import BlogSidebar from '@theme/BlogSidebar' const useIsIndexPage = (props: Props) => { if (typeof window === 'undefined') return false @@ -27,14 +31,52 @@ const useIsIndexPage = (props: Props) => { export default function BlogLayoutWrapper(props: Props): JSX.Element { const { sidebar, toc, children, ...layoutProps } = props const isIndexPage = useIsIndexPage(props) + const hasSidebar = sidebar && sidebar.items.length > 0 + + const plugin = useBlogPluginData() return ( - + > + {isIndexPage && ( +
+ {plugin?.blogTitle && ( + + {plugin.blogTitle} + + )} + {plugin?.blogDescription && ( + + {plugin.blogDescription} + + )} +
+ )} + +
+
+ +
+ {children} +
+ {toc &&
{toc}
} +
+
+ ) } diff --git a/packages/logos-docusaurus-theme/src/client/theme/BlogPostItems/styles.module.scss b/packages/logos-docusaurus-theme/src/client/theme/BlogLayout/styles.module.scss similarity index 75% rename from packages/logos-docusaurus-theme/src/client/theme/BlogPostItems/styles.module.scss rename to packages/logos-docusaurus-theme/src/client/theme/BlogLayout/styles.module.scss index 7f49d4b..ddcca85 100644 --- a/packages/logos-docusaurus-theme/src/client/theme/BlogPostItems/styles.module.scss +++ b/packages/logos-docusaurus-theme/src/client/theme/BlogLayout/styles.module.scss @@ -1,7 +1,7 @@ @use '../../css/utils'; @use '../../css/lsd'; -.header { +.blogHeader { display: flex; flex-direction: column; left: 0; @@ -15,3 +15,11 @@ border-bottom: 1px solid rgb(var(--lsd-border-primary)); margin-bottom: 40px; } + +.blogTitle { + grid-column: span 24; +} + +.blogDescription { + grid-column: span 24; +} diff --git a/packages/logos-docusaurus-theme/src/client/theme/BlogPostItems/index.tsx b/packages/logos-docusaurus-theme/src/client/theme/BlogPostItems/index.tsx index d392f2d..08aab79 100644 --- a/packages/logos-docusaurus-theme/src/client/theme/BlogPostItems/index.tsx +++ b/packages/logos-docusaurus-theme/src/client/theme/BlogPostItems/index.tsx @@ -1,28 +1,13 @@ import React from 'react' import { BlogPostProvider } from '@docusaurus/theme-common/internal' import BlogPostItem from '@theme/BlogPostItem' -import { Typography } from '@acid-info/lsd-react' -import clsx from 'clsx' -import styles from './styles.module.scss' -import { useBlogPluginData } from '../../lib/useBlogPluginData' export default function BlogPostItems({ items, component: BlogPostItemComponent = BlogPostItem, }) { - const plugin = useBlogPluginData() - return ( <> -
- {plugin?.blogTitle && ( - {plugin.blogTitle} - )} - {plugin?.blogDescription && ( - {plugin.blogDescription} - )} -
- {items.map(({ content: BlogPostContent }) => (