← 全部模板

Bento 总览 <Bento />

6 张不同尺寸的卡片组成全局概览,每张都能展开为全屏详情,卡片标题、编号和主数字以共享元素动画过渡。

分组
总览 · 紧跟封面
组件
Bento · #bento
交互
点击或 Tab + Enter 展开;Esc 返回并把焦点还给原卡片;详情打开时方向键不会翻页。

适合

  • 需要一页讲清“这是什么”,并允许听众按兴趣深入
  • 有 6 个并列主题,其中 1 个是最重要的(放在第 1 格)

不适合

  • 主题不足 6 个:不要凑数,改用 NumberedColumns
  • 每个主题的详情你说不出一张图或一张表:详情页会空洞
  • 一份演示里使用超过一次

内容上限

1cards 必须正好 6 张;顺序即位置:1 大卡(左),2–3 宽卡(右上),4–6 小卡(底部)
2标题必须预先断行且不会自动换行:第 1 格 1 行;第 2–3 格 ≤ 2 行 × 8 字;第 4–6 格 1 行 ≤ 12 字
3summary 1 行;lead ≤ 70 字
4feature.stats 正好 3 项,value ≤ 7 个字符

字段

字段类型
cards · 必填BentoCard[6]id, title[], summary, lead, source, mini?, detail, aside?, figure?
feature · 必填BentoFeature第 1 格专用:numeral, codename?, pill?, date?, stats[3]
labelstring无障碍名称
card.miniReactNode卡片上的小图形(第 2–6 格),纯 DOM/CSS,参考 decks/release/minis.tsx
card.detail · 必填ReactNode详情页右栏:图表、代码对照、表格,参考 decks/release/details.tsx
card.figure{ value, unit?, caption }详情页左下的锚点大数字
card.asideReactNode替代 figure 的自定义块,例如一条命令

示例代码

<Bento
  cards={[
    { id: 'release', title: ['Lumen 13'], summary: '…', lead: '…', source: '…', detail: <ReleaseVisual /> },
    { id: 'apt', title: ['APT 源改用', 'deb822 格式'], summary: '…', lead: '…', source: '…',
      mini: <MiniCode />, detail: <AptVisual />, aside: <AptAside /> },
    // …共 6 张
  ]}
  feature={{ numeral: '13', codename: 'aurora', pill: 'Stable', date: '2025.08.09',
    stats: [{ label: '软件包总数', value: '69,830+' }, { label: '官方架构', value: '7' }, { label: '支持周期', value: '5 年' }] }}
/>