diff --git a/packages/theme-default/src/components/Nav/NavMenuGroup.tsx b/packages/theme-default/src/components/Nav/NavMenuGroup.tsx index 641a2ff38..ce1fba560 100644 --- a/packages/theme-default/src/components/Nav/NavMenuGroup.tsx +++ b/packages/theme-default/src/components/Nav/NavMenuGroup.tsx @@ -1,14 +1,13 @@ import { matchNavbar, type NavItem, - type NavItemWithChildren, type NavItemWithLink, - type NavItemWithLinkAndChildren, } from '@rspress/shared'; import { Link, Tag } from '@theme'; import Down from '@theme-assets/down'; import { useRef, useState } from 'react'; import { SvgWrapper } from '../SvgWrapper'; +import * as styles from './index.module.scss'; import { NavMenuSingleItem } from './NavMenuSingleItem'; export interface NavMenuGroupItem { @@ -42,21 +41,26 @@ function ActiveGroupItem({ item }: { item: NavItemWithLink }) { } function NormalGroupItem({ item }: { item: NavItemWithLink }) { + const content = ( +
+
+ {item.tag && } + {item.text} +
+
+ ); return (
- -
-
- {item.tag && } - {item.text} -
-
- + {item.link ? ( + {content} + ) : ( +
{content}
+ )}
); } @@ -96,21 +100,21 @@ export function NavMenuGroup(item: NavMenuGroupItem) { } return ; }; - const renderGroup = ( - item: NavItemWithChildren | NavItemWithLinkAndChildren, - ) => { - return ( -
- {'link' in item ? ( - renderLinkItem(item as NavItemWithLink) - ) : ( -

- {item.text} -

- )} - {item.items.map(renderLinkItem)} -
- ); + const renderGroup = (items: NavItem[]) => { + return items.map(item => { + return ( +
+ {'items' in item ? ( + <> + {renderLinkItem(item as NavItemWithLink)} + {renderGroup(item.items)} + + ) : ( + renderLinkItem(item) + )} +
+ ); + }); }; return (
{ return (
- {'items' in item ? renderGroup(item) : renderLinkItem(item)} + {'items' in item ? ( + <> + {renderLinkItem(item as NavItemWithLink)} + {renderGroup(item.items)} + + ) : ( + renderLinkItem(item) + )}
); })} diff --git a/packages/theme-default/src/components/Nav/NavMenuSingleItem.tsx b/packages/theme-default/src/components/Nav/NavMenuSingleItem.tsx index 89ade67eb..2174f7bdb 100644 --- a/packages/theme-default/src/components/Nav/NavMenuSingleItem.tsx +++ b/packages/theme-default/src/components/Nav/NavMenuSingleItem.tsx @@ -19,19 +19,23 @@ export function NavMenuSingleItem( ) { const { pathname } = item; const isActive = new RegExp(item.activeMatch || item.link).test(pathname); - - return ( + const content = ( +
+ + {item.text} + {item.rightIcon} +
+ ); + return item.link ? ( -
- - {item.text} - {item.rightIcon} -
+ {content} + ) : ( + content ); } diff --git a/packages/theme-default/src/components/Nav/index.module.scss b/packages/theme-default/src/components/Nav/index.module.scss index f2db3c6c3..f582c02a5 100644 --- a/packages/theme-default/src/components/Nav/index.module.scss +++ b/packages/theme-default/src/components/Nav/index.module.scss @@ -55,6 +55,9 @@ .rightNav { display: none; } +.navGroup { + padding-left: 1em; +} .singleItem { word-break: keep-all;