mirror of
https://github.com/hanzo-docs/docs.git
synced 2026-10-25 04:20:02 +00:00
UI: Support link item properties in menu items
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'fumadocs-ui': patch
|
||||
---
|
||||
|
||||
Support link item properties in menu items
|
||||
@@ -342,7 +342,7 @@ function SidebarLinkItem({
|
||||
return (
|
||||
<SidebarFolder {...props}>
|
||||
{item.url ? (
|
||||
<SidebarFolderLink href={item.url}>
|
||||
<SidebarFolderLink href={item.url} external={item.external}>
|
||||
{item.icon}
|
||||
{item.text}
|
||||
</SidebarFolderLink>
|
||||
|
||||
@@ -17,17 +17,6 @@ import { I18nLabel } from '@/contexts/i18n';
|
||||
import ClerkTOCItems from '@/components/layout/toc-clerk';
|
||||
import type { AnchorProviderProps } from 'fumadocs-core/toc';
|
||||
|
||||
/**
|
||||
* Apply `prose` on div
|
||||
*/
|
||||
export function PageProse(props: ComponentProps<'div'>) {
|
||||
return (
|
||||
<div {...props} className={cn('prose', props.className)}>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export function PageTOCTitle(props: ComponentProps<'h2'>) {
|
||||
return (
|
||||
<h3
|
||||
|
||||
@@ -235,7 +235,13 @@ function NavbarLinkItem({
|
||||
return (
|
||||
<NavbarMenu>
|
||||
<NavbarMenuTrigger {...props}>
|
||||
{item.url ? <Link href={item.url}>{item.text}</Link> : item.text}
|
||||
{item.url ? (
|
||||
<Link href={item.url} external={item.external}>
|
||||
{item.text}
|
||||
</Link>
|
||||
) : (
|
||||
item.text
|
||||
)}
|
||||
</NavbarMenuTrigger>
|
||||
<NavbarMenuContent>{children}</NavbarMenuContent>
|
||||
</NavbarMenu>
|
||||
|
||||
@@ -54,7 +54,9 @@ export function MenuLinkItem({
|
||||
<p className="mb-1 text-sm text-fd-muted-foreground">
|
||||
{item.url ? (
|
||||
<NavigationMenuLink asChild>
|
||||
<Link href={item.url}>{header}</Link>
|
||||
<Link href={item.url} external={item.external}>
|
||||
{header}
|
||||
</Link>
|
||||
</NavigationMenuLink>
|
||||
) : (
|
||||
header
|
||||
|
||||
@@ -8,6 +8,7 @@ import {
|
||||
import {
|
||||
type BaseLayoutProps,
|
||||
BaseLinkItem,
|
||||
type BaseLinkType,
|
||||
getLinks,
|
||||
type LinkItemType,
|
||||
} from '@/layouts/shared';
|
||||
@@ -481,9 +482,16 @@ function NavbarLinkItem({
|
||||
<Popover>
|
||||
<PopoverTrigger
|
||||
{...props}
|
||||
className={cn('inline-flex items-center gap-1.5', props.className)}
|
||||
className={cn(
|
||||
'inline-flex items-center gap-1.5 has-data-[active=true]:text-fd-primary',
|
||||
props.className,
|
||||
)}
|
||||
>
|
||||
{item.text}
|
||||
{item.url ? (
|
||||
<BaseLinkItem item={item as BaseLinkType}>{item.text}</BaseLinkItem>
|
||||
) : (
|
||||
item.text
|
||||
)}
|
||||
<ChevronDown className="size-3" />
|
||||
</PopoverTrigger>
|
||||
<PopoverContent className="flex flex-col">
|
||||
@@ -527,7 +535,7 @@ function SidebarLinkItem({
|
||||
return (
|
||||
<SidebarFolder {...props}>
|
||||
{item.url ? (
|
||||
<SidebarFolderLink href={item.url}>
|
||||
<SidebarFolderLink href={item.url} external={item.external}>
|
||||
{item.icon}
|
||||
{item.text}
|
||||
</SidebarFolderLink>
|
||||
|
||||
@@ -111,12 +111,11 @@ export interface ButtonItemType extends BaseLinkType {
|
||||
secondary?: boolean;
|
||||
}
|
||||
|
||||
export interface MenuItemType extends BaseItem {
|
||||
export interface MenuItemType extends Partial<BaseLinkType> {
|
||||
type: 'menu';
|
||||
icon?: ReactNode;
|
||||
text: ReactNode;
|
||||
|
||||
url?: string;
|
||||
items: (
|
||||
| (MainItemType & {
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user