From d7f2bbcc2c7f8e81f8df2a7fd44bed4b45da2048 Mon Sep 17 00:00:00 2001 From: Shu Ding Date: Fri, 2 Dec 2022 02:21:14 +0100 Subject: [PATCH] Polish the docs theme; rename options (#991) * adjust theme and nextra * add changeset * fix lint errors * rename readingTime * avoid var conflict --- .changeset/seven-timers-pretend.md | 6 +++++ packages/nextra-theme-docs/css/scrollbar.css | 8 ++++--- packages/nextra-theme-docs/css/styles.css | 6 ++++- .../src/components/navbar.tsx | 13 ++++++---- .../src/components/select.tsx | 4 ++-- .../src/components/sidebar.tsx | 11 ++------- packages/nextra-theme-docs/src/constants.tsx | 2 +- .../nextra-theme-docs/src/contexts/config.tsx | 7 ++---- .../src/utils/normalize-pages.ts | 3 +++ packages/nextra/src/compile.ts | 19 +++++---------- packages/nextra/src/components/button.tsx | 4 ++-- packages/nextra/src/components/code.tsx | 2 +- packages/nextra/src/components/pre.tsx | 2 +- packages/nextra/src/loader.ts | 24 +++++++++---------- packages/nextra/src/plugin.ts | 2 +- packages/nextra/src/types.ts | 10 ++++---- 16 files changed, 62 insertions(+), 61 deletions(-) create mode 100644 .changeset/seven-timers-pretend.md diff --git a/.changeset/seven-timers-pretend.md b/.changeset/seven-timers-pretend.md new file mode 100644 index 0000000000..e32d1d54b8 --- /dev/null +++ b/.changeset/seven-timers-pretend.md @@ -0,0 +1,6 @@ +--- +'nextra': patch +'nextra-theme-docs': patch +--- + +adjust docs theme; rename options diff --git a/packages/nextra-theme-docs/css/scrollbar.css b/packages/nextra-theme-docs/css/scrollbar.css index 3e7047a25e..def5f4ef85 100644 --- a/packages/nextra-theme-docs/css/scrollbar.css +++ b/packages/nextra-theme-docs/css/scrollbar.css @@ -4,16 +4,18 @@ scrollbar-gutter: stable; &::-webkit-scrollbar { - @apply nx-w-1.5 nx-h-1.5; + @apply nx-w-3 nx-h-1.5; } &::-webkit-scrollbar-track { @apply nx-bg-transparent; } &::-webkit-scrollbar-thumb { - @apply nx-rounded-[20px]; + @apply nx-rounded-[10px]; } &:hover::-webkit-scrollbar-thumb { - @apply nx-shadow-[inset_0_0_0_5px_var(--tw-shadow-color)]; + border: 3px solid transparent; + background-color: var(--tw-shadow-color); + background-clip: content-box; @apply nx-shadow-neutral-500/20 hover:nx-shadow-neutral-500/40; } diff --git a/packages/nextra-theme-docs/css/styles.css b/packages/nextra-theme-docs/css/styles.css index 3a3b2f57b9..84fded065e 100644 --- a/packages/nextra-theme-docs/css/styles.css +++ b/packages/nextra-theme-docs/css/styles.css @@ -36,11 +36,15 @@ summary { @media (max-width: 767px) { .nextra-sidebar-container { - @apply nx-fixed nx-pt-[calc(var(--nextra-navbar-height))] nx-top-0 nx-w-full nx-bottom-24 nx-z-[15] nx-overscroll-contain nx-bg-white dark:nx-bg-dark; + @apply nx-fixed nx-pt-[calc(var(--nextra-navbar-height))] nx-top-0 nx-w-full nx-bottom-0 nx-z-[15] nx-overscroll-contain nx-bg-white dark:nx-bg-dark; transition: transform 0.8s cubic-bezier(0.52, 0.16, 0.04, 1); will-change: transform, opacity; contain: layout style; backface-visibility: hidden; + & > .nextra-scrollbar { + mask-image: linear-gradient(to bottom, transparent, #000 20px), + linear-gradient(to left, #000 10px, transparent 10px); + } } .nextra-banner-container ~ div { .nextra-sidebar-container { diff --git a/packages/nextra-theme-docs/src/components/navbar.tsx b/packages/nextra-theme-docs/src/components/navbar.tsx index c8ab7b9bbc..e1b7496981 100644 --- a/packages/nextra-theme-docs/src/components/navbar.tsx +++ b/packages/nextra-theme-docs/src/components/navbar.tsx @@ -16,10 +16,13 @@ export type NavBarProps = { } const classes = { - link: cn('nx-text-sm contrast-more:nx-text-gray-700 contrast-more:dark:nx-text-gray-100'), + link: cn( + 'nx-text-sm contrast-more:nx-text-gray-700 contrast-more:dark:nx-text-gray-100' + ), active: cn('nx-subpixel-antialiased contrast-more:nx-font-bold'), - inactive: - cn('nx-text-gray-600 hover:nx-text-gray-800 dark:nx-text-gray-400 dark:hover:nx-text-gray-200') + inactive: cn( + 'nx-text-gray-600 hover:nx-text-gray-800 dark:nx-text-gray-400 dark:hover:nx-text-gray-200' + ) } function NavbarMenu({ @@ -53,7 +56,7 @@ function NavbarMenu({ leaveFrom="nx-opacity-100" leaveTo="nx-opacity-0" > - + {Object.entries(items || {}).map(([key, item]) => ( diff --git a/packages/nextra-theme-docs/src/components/select.tsx b/packages/nextra-theme-docs/src/components/select.tsx index 8fc7b41b7e..b1e5497411 100644 --- a/packages/nextra-theme-docs/src/components/select.tsx +++ b/packages/nextra-theme-docs/src/components/select.tsx @@ -64,7 +64,7 @@ export function Select({ ref={container} show={open} as={Listbox.Options} - className="nx-z-20 nx-max-h-64 nx-overflow-auto nx-rounded-md nx-border nx-border-black/5 nx-bg-white nx-py-1 nx-text-sm nx-shadow-lg dark:nx-border-white/20 dark:nx-bg-neutral-800" + className="nx-z-20 nx-max-h-64 nx-overflow-auto nx-rounded-md nx-border nx-border-black/5 nx-bg-white nx-py-1 nx-text-sm nx-shadow-lg dark:nx-border-white/10 dark:nx-bg-neutral-800" leave="nx-transition-opacity" leaveFrom="nx-opacity-100" leaveTo="nx-opacity-0" @@ -79,7 +79,7 @@ export function Select({ ? 'nx-bg-primary-50 nx-text-primary-500 dark:nx-bg-primary-500/10' : 'nx-text-gray-800 dark:nx-text-gray-100', 'nx-relative nx-cursor-pointer nx-whitespace-nowrap nx-py-1.5', - 'ltr:nx-pl-3 ltr:nx-pr-9 rtl:nx-pr-3 rtl:nx-pl-9' + 'nx-transition-colors ltr:nx-pl-3 ltr:nx-pr-9 rtl:nx-pr-3 rtl:nx-pl-9' ) } > diff --git a/packages/nextra-theme-docs/src/components/sidebar.tsx b/packages/nextra-theme-docs/src/components/sidebar.tsx index 392f48d977..0a46a5ac56 100644 --- a/packages/nextra-theme-docs/src/components/sidebar.tsx +++ b/packages/nextra-theme-docs/src/components/sidebar.tsx @@ -381,21 +381,14 @@ export function Sidebar({ )} ref={containerRef} > -
+
{renderComponent(config.search.component, { directories: flatDirectories })}
) : ( diff --git a/packages/nextra-theme-docs/src/contexts/config.tsx b/packages/nextra-theme-docs/src/contexts/config.tsx index de35db850a..50f1a6d801 100644 --- a/packages/nextra-theme-docs/src/contexts/config.tsx +++ b/packages/nextra-theme-docs/src/contexts/config.tsx @@ -16,10 +16,7 @@ import { import { MenuProvider } from './menu' type Config = DocsThemeConfig & - Pick< - PageOpts, - 'unstable_flexsearch' | 'newNextLinkBehavior' | 'title' | 'frontMatter' - > + Pick const ConfigContext = createContext({ title: '', @@ -41,7 +38,7 @@ export const ConfigProvider = ({ const extendedConfig: Config = { ...DEFAULT_THEME, ...themeConfig, - unstable_flexsearch: pageOpts.unstable_flexsearch, + flexsearch: pageOpts.flexsearch, newNextLinkBehavior: pageOpts.newNextLinkBehavior, title: pageOpts.title, frontMatter: pageOpts.frontMatter, diff --git a/packages/nextra-theme-docs/src/utils/normalize-pages.ts b/packages/nextra-theme-docs/src/utils/normalize-pages.ts index 985716cb8e..cc5488d2b2 100644 --- a/packages/nextra-theme-docs/src/utils/normalize-pages.ts +++ b/packages/nextra-theme-docs/src/utils/normalize-pages.ts @@ -249,6 +249,9 @@ export function normalizePages({ const pageItem: PageItem = getItem() docsItem.isUnderCurrentDocsTree = isCurrentDocsTree + if (type === 'separator') { + item.isUnderCurrentDocsTree = isCurrentDocsTree + } // This item is currently active, we collect the active path etc. if (a.route === route) { diff --git a/packages/nextra/src/compile.ts b/packages/nextra/src/compile.ts index 091fb963ec..094699be38 100644 --- a/packages/nextra/src/compile.ts +++ b/packages/nextra/src/compile.ts @@ -44,10 +44,7 @@ export async function compileMdx( source: string, loaderOptions: Pick< LoaderOptions, - | 'unstable_staticImage' - | 'unstable_flexsearch' - | 'unstable_defaultShowCopyCode' - | 'unstable_readingTime' + 'staticImage' | 'flexsearch' | 'defaultShowCopyCode' | 'readingTime' > & { mdxOptions?: LoaderOptions['mdxOptions'] & Pick @@ -66,11 +63,10 @@ export async function compileMdx( ...(mdxOptions.remarkPlugins || []), remarkGfm, remarkHeadings, - loaderOptions.unstable_staticImage && - ([remarkStaticImage, { filePath }] as any), - loaderOptions.unstable_flexsearch && - structurize(structurizedData, loaderOptions.unstable_flexsearch), - loaderOptions.unstable_readingTime && readingTime + loaderOptions.staticImage && ([remarkStaticImage, { filePath }] as any), + loaderOptions.flexsearch && + structurize(structurizedData, loaderOptions.flexsearch), + loaderOptions.readingTime && readingTime ].filter(truthy), rehypePlugins: [ ...(mdxOptions.rehypePlugins || []), @@ -80,10 +76,7 @@ export async function compileMdx( { ...rehypePrettyCodeOptions, ...mdxOptions.rehypePrettyCodeOptions } ], [rehypeMdxTitle, { name: '__nextra_title__' }], - [ - attachMeta, - { defaultShowCopyCode: loaderOptions.unstable_defaultShowCopyCode } - ] + [attachMeta, { defaultShowCopyCode: loaderOptions.defaultShowCopyCode }] ] }) try { diff --git a/packages/nextra/src/components/button.tsx b/packages/nextra/src/components/button.tsx index ade2a6a146..7de1f9a21e 100644 --- a/packages/nextra/src/components/button.tsx +++ b/packages/nextra/src/components/button.tsx @@ -8,8 +8,8 @@ export const Button = ({ return (