import { PageHeader } from "../lark/page-header/page-header";
import { Breadcrumbs, Button } from "@lark-ui/core";
import { HouseIcon, CodeIcon, GlobeIcon } from "@phosphor-icons/react";
// Full-featured hero demo matching original
export function PageHeaderHeroDemo() {
return (
<PageHeader
className="w-full"
breadcrumbs={
<Breadcrumbs>
<Breadcrumbs.Link icon={<HouseIcon size={16} />} href="#">
Workers 与 Pages
</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Current>cloudflare-dev-platform</Breadcrumbs.Current>
</Breadcrumbs>
}
tabs={[
{ label: "概览", value: "overview" },
{ label: "指标", value: "metrics" },
{ label: "部署", value: "deployments" },
{ label: "绑定", value: "bindings" },
{ label: "可观测性", value: "observability" },
{ label: "设置", value: "settings" },
]}
defaultTab="overview"
onValueChange={(v) => console.log(v)}
>
<Button icon={<CodeIcon />} className="h-8">
编辑代码
</Button>
<Button icon={<GlobeIcon />} variant="primary" className="h-8">
访问
</Button>
</PageHeader>
);
}安装
PageHeader 是一个区块(block)——通过命令行工具(CLI)安装、 由你拥有且可自行定制的组件。与常规组件不同,区块会被复制到你的项目中, 因此你可以完全掌控代码。
1. 初始化 Lark 配置(仅首次需要)
npx @lark-ui/core init2. 安装区块
npx @lark-ui/core add PageHeader3. 从本地路径导入
// The path depends on your lark-ui.json blocksDir setting
// Default: src/components/lark/
import { PageHeader } from "./components/lark/page-header/page-header";用法
import { PageHeader } from "./components/lark/page-header/page-header";
import { Breadcrumbs } from "@lark-ui/core";
export default function Example() {
return (
<PageHeader
breadcrumbs={
<Breadcrumbs>
<Breadcrumbs.Link href="#">Home</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Link href="#">Projects</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Current>My Project</Breadcrumbs.Current>
</Breadcrumbs>
}
tabs={[
{ label: "Overview", value: "overview" },
{ label: "Settings", value: "settings" },
]}
defaultTab="overview"
onValueChange={(value) => {
console.log(value);
}}
/>
);
}示例
基础
import { PageHeader } from "../lark/page-header/page-header";
import { Breadcrumbs } from "@lark-ui/core";
// Basic breadcrumbs-only demo
export function PageHeaderBasicDemo() {
return (
<PageHeader
breadcrumbs={
<Breadcrumbs>
<Breadcrumbs.Link href="#">首页</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Current>仪表板</Breadcrumbs.Current>
</Breadcrumbs>
}
/>
);
}带图标
import { PageHeader } from "../lark/page-header/page-header";
import { Breadcrumbs } from "@lark-ui/core";
import { HouseIcon, GearIcon } from "@phosphor-icons/react";
// With icons in breadcrumbs
export function PageHeaderWithIconsDemo() {
return (
<PageHeader
breadcrumbs={
<Breadcrumbs>
<Breadcrumbs.Link icon={<HouseIcon size={16} />} href="#">
首页
</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Current icon={<GearIcon size={16} />}>
设置
</Breadcrumbs.Current>
</Breadcrumbs>
}
/>
);
}带标签页
import { PageHeader } from "../lark/page-header/page-header";
import { Breadcrumbs } from "@lark-ui/core";
// With tabs
export function PageHeaderWithTabsDemo() {
return (
<PageHeader
breadcrumbs={
<Breadcrumbs>
<Breadcrumbs.Link href="#">首页</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Current>设置</Breadcrumbs.Current>
</Breadcrumbs>
}
tabs={[
{ label: "常规", value: "general" },
{ label: "安全", value: "security" },
{ label: "通知", value: "notifications" },
]}
defaultTab="general"
/>
);
}带操作
import { PageHeader } from "../lark/page-header/page-header";
import { Breadcrumbs, Button } from "@lark-ui/core";
// With actions
export function PageHeaderWithActionsDemo() {
return (
<PageHeader
breadcrumbs={
<Breadcrumbs>
<Breadcrumbs.Link href="#">首页</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Link href="#">项目</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Current>我的项目</Breadcrumbs.Current>
</Breadcrumbs>
}
tabs={[
{ label: "概览", value: "overview" },
{ label: "设置", value: "settings" },
]}
defaultTab="overview"
>
<Button variant="primary" size="base">
部署
</Button>
</PageHeader>
);
}带标题
页面标题
import { PageHeader } from "../lark/page-header/page-header";
import { Breadcrumbs } from "@lark-ui/core";
// With title only
export function PageHeaderWithTitleDemo() {
return (
<PageHeader
breadcrumbs={
<Breadcrumbs>
<Breadcrumbs.Link href="#">首页</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Link href="#">产品</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Current>页面标题</Breadcrumbs.Current>
</Breadcrumbs>
}
title="页面标题"
/>
);
}带标题和描述
页面标题
以行动为导向、强调价值的描述,说明本页面的用途。可选的第二句用于补充使用场景或前置条件。
import { PageHeader } from "../lark/page-header/page-header";
import { Breadcrumbs } from "@lark-ui/core";
// With title and description
export function PageHeaderWithTitleDescriptionDemo() {
return (
<PageHeader
breadcrumbs={
<Breadcrumbs>
<Breadcrumbs.Link href="#">首页</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Link href="#">产品</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Current>页面标题</Breadcrumbs.Current>
</Breadcrumbs>
}
title="页面标题"
description="以行动为导向、强调价值的描述,说明本页面的用途。可选的第二句用于补充使用场景或前置条件。"
/>
);
}完整示例
组合面包屑导航、标题、描述、标签页和操作。
页面标题
以行动为导向、强调价值的描述,说明本页面的用途。
import { PageHeader } from "../lark/page-header/page-header";
import { Breadcrumbs, Button } from "@lark-ui/core";
import { PlusIcon } from "@phosphor-icons/react";
// Complete example with all features
export function PageHeaderCompleteDemo() {
return (
<PageHeader
breadcrumbs={
<Breadcrumbs>
<Breadcrumbs.Link href="#">首页</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Link href="#">产品</Breadcrumbs.Link>
<Breadcrumbs.Separator />
<Breadcrumbs.Current>页面标题</Breadcrumbs.Current>
</Breadcrumbs>
}
title="页面标题"
description="以行动为导向、强调价值的描述,说明本页面的用途。"
tabs={[
{ label: "概览", value: "overview" },
{ label: "分析", value: "analytics" },
{ label: "设置", value: "settings" },
]}
defaultTab="overview"
>
<Button variant="outline" size="sm">
导出
</Button>
<Button variant="primary" size="sm" icon={<PlusIcon size={16} />}>
新建项
</Button>
</PageHeader>
);
}API 参考
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| spacing | "compact" | "base" | "relaxed" | "base" | - |
| breadcrumbs | ReactNode | - | - |
| title | string | - | - |
| description | string | - | - |
| tabs | TabsItem[] | - | - |
| defaultTab | string | - | - |
| className | string | - | - |
| children | ReactNode | - | - |
TabsItem 标签页项
| 属性 | 类型 |
|---|---|
| label | string |
| value | string |