跳到主要内容

布局与卡片

参考资料

效果展示

项目概览
标题、正文与页脚共享同一个面板。
ReactTypeScriptCSS Modules
布局与业务内容可以分别维护。

页面布局

组件主要属性行为
PageContainerchildrenwidth居中限制内容宽度,默认最大 1120 px
Stackchildrengap纵向排列,默认间距 16 px
Clusterchildrengap横向排列并换行,默认间距 12 px
PageHeaderchildrenaside标题区域与附加内容
PageTitletitledescription页面标题与说明
PageContentchildrenasclassName页面正文容器,可选择元素类型

PageContainerStackCluster 支持原生 div 属性。widthgap 是像素数值,例如 width={960}gap={16}

486 Btsx
import { PageContainer, Panel, PanelBody, PanelFooter, PanelHeader, Stack } from '@lailai0916/ui';

export function ProjectPanel() {
return (
<PageContainer width={960}>
<Stack gap={24}>
<Panel>
<PanelHeader>
<h2>项目概览</h2>
</PanelHeader>
<PanelBody>应用自己的内容。</PanelBody>
<PanelFooter>最近更新于 2026 年 9 月。</PanelFooter>
</Panel>
</Stack>
</PageContainer>
);
}

PageTitle.title 保留 HTML 字符串接口,只能使用应用自己编写的可信内容。来自用户或远程数据的标题应使用普通 React 文本元素;文章标题可以选择接受 ReactNodeMDTitle

面板

Panel 使用 tone="default"tone="muted" 控制表面,feature 可强调面板。PanelHeaderPanelBodyPanelFooter 按需组合,均支持原生 div 属性。

面板不会代替语义标题,应在 PanelHeader 中使用符合页面层级的 h2h3 等元素。只需一层内容表面时,也可以使用 Card

卡片

组件必要属性可选属性
CardchildrenpaddingclassNamewrapperClassNamestyletohref
TitleCardtitlechildrenicondescriptioncountpaddingbodyAlignsize
LinkCardtitle,以及 tohrefdescriptionimagefallbackIconimageVariant
DataCardvaluelabeliconformat
ShareCardurltitledescriptionimage

CardLinkCardtohref 二选一;站内导航使用 to,并通过 LaikitProvider 接入路由。链接卡片内不要再放按钮或其他链接,以免嵌套交互元素。

TitleCard.sizemdsmplainbodyAligntopbottom。卡片保留外部焦点环,铺满卡片的图片如需裁剪,应由自己的图片容器设置溢出裁剪。

449 Btsx
import { DataCard, LaikitProvider, LinkCard, Stack } from '@lailai0916/ui';

export function ProjectCards() {
return (
<LaikitProvider locale="zh-Hans">
<Stack>
<DataCard value={42} label="组件" icon="lucide:boxes" />
<LinkCard
title="快速开始"
description="安装组件库并接入应用。"
to="/docs/project/ui/getting-started"
/>
</Stack>
</LaikitProvider>
);
}

DataCard.label 支持按语言选择单复数。英文使用 'Component|Components',中文使用单一形式 '组件',详见 框架接入