Kbd 键盘按键
展示键盘快捷键与按键组合
用法
import { Kbd } from "@lenso/ui";此预览复用英文版适配,不代表中文源示例已完成本地实现。
"use client";// Adapted from HeroUI v3.2.6 (e385ac202b2cdb94b1bf6fa76d32c31c8259cc5e), Apache-2.0.import { Kbd } from "@lenso/ui";import * as stylex from "@stylexjs/stylex";import { s } from "../card/display.stylex";
export function Basic() { return ( <div {...stylex.props(s.row4)}> <Kbd> <Kbd.Abbr keyValue="command" /> <Kbd.Content>K</Kbd.Content> </Kbd> <Kbd> <Kbd.Abbr keyValue="shift" /> <Kbd.Content>P</Kbd.Content> </Kbd> <Kbd> <Kbd.Abbr keyValue="ctrl" /> <Kbd.Content>C</Kbd.Content> </Kbd> <Kbd> <Kbd.Abbr keyValue="option" /> <Kbd.Content>D</Kbd.Content> </Kbd> </div> );}Local adaptation source above. Derived from HeroUI v3.2.6 source.
组件结构
import { Kbd } from "@lenso/ui";
export default () => ( <Kbd> <Kbd.Abbr title="Command">⌘</Kbd.Abbr> <Kbd.Content>K</Kbd.Content> </Kbd>);示例
变体
此预览复用英文版适配,不代表中文源示例已完成本地实现。
"use client";// Adapted from HeroUI v3.2.6 (e385ac202b2cdb94b1bf6fa76d32c31c8259cc5e), Apache-2.0.import { Kbd } from "@lenso/ui";import * as stylex from "@stylexjs/stylex";import { s } from "../card/display.stylex";
export function Variants() { return ( <div {...stylex.props(s.column4)}> {[ { label: "Copy:", key: "C" }, { label: "Paste:", key: "V" }, { label: "Cut:", key: "X" }, ].map((action) => ( <div key={action.key} {...stylex.props(s.row2)}> <span>{action.label}</span> <Kbd> <Kbd.Abbr keyValue="command" /> <Kbd.Content>{action.key}</Kbd.Content> </Kbd> <Kbd variant="light"> <Kbd.Abbr keyValue="command" /> <Kbd.Content>{action.key}</Kbd.Content> </Kbd> </div> ))} </div> );}Local adaptation source above. Derived from HeroUI v3.2.6 source.
导航按键
此预览复用英文版适配,不代表中文源示例已完成本地实现。
"use client";// Adapted from HeroUI v3.2.6 (e385ac202b2cdb94b1bf6fa76d32c31c8259cc5e), Apache-2.0.import { Kbd } from "@lenso/ui";import * as stylex from "@stylexjs/stylex";import { s } from "../card/display.stylex";
export function NavigationKeys() { return ( <div {...stylex.props(s.column4)}> <div {...stylex.props(s.row2)}> <span {...stylex.props(s.textSm, s.muted)}>Arrow Keys:</span> <div {...stylex.props(s.row2)}> <Kbd> <Kbd.Abbr keyValue="up" /> </Kbd> <Kbd> <Kbd.Abbr keyValue="down" /> </Kbd> <Kbd> <Kbd.Abbr keyValue="left" /> </Kbd> <Kbd> <Kbd.Abbr keyValue="right" /> </Kbd> </div> </div> <div {...stylex.props(s.row2)}> <span {...stylex.props(s.textSm, s.muted)}>Page Navigation:</span> <div {...stylex.props(s.row2)}> <Kbd> <Kbd.Abbr keyValue="pageup" /> </Kbd> <Kbd> <Kbd.Abbr keyValue="pagedown" /> </Kbd> <Kbd> <Kbd.Abbr keyValue="home" /> </Kbd> <Kbd> <Kbd.Abbr keyValue="end" /> </Kbd> </div> </div> </div> );}Local adaptation source above. Derived from HeroUI v3.2.6 source.
行内用法
此预览复用英文版适配,不代表中文源示例已完成本地实现。
"use client";// Adapted from HeroUI v3.2.6 (e385ac202b2cdb94b1bf6fa76d32c31c8259cc5e), Apache-2.0.import { Kbd } from "@lenso/ui";import * as stylex from "@stylexjs/stylex";import { s } from "../card/display.stylex";
export function InlineUsage() { return ( <div> <p {...stylex.props(s.textSm)}> Press{" "} <Kbd> <Kbd.Content>Esc</Kbd.Content> </Kbd>{" "} to close the dialog. </p> <p {...stylex.props(s.textSm, s.space4)}> Use{" "} <Kbd> <Kbd.Abbr keyValue="command" /> <Kbd.Content>K</Kbd.Content> </Kbd>{" "} to open the command palette. </p> <p {...stylex.props(s.textSm, s.space4)}> Navigate with{" "} <Kbd> <Kbd.Abbr keyValue="up" /> </Kbd>{" "} and{" "} <Kbd> <Kbd.Abbr keyValue="down" /> </Kbd>{" "} arrow keys. </p> <p {...stylex.props(s.textSm, s.space4)}> Save your work with{" "} <Kbd> <Kbd.Abbr keyValue="command" /> <Kbd.Content>S</Kbd.Content> </Kbd>{" "} regularly. </p> </div> );}Local adaptation source above. Derived from HeroUI v3.2.6 source.
说明文字
此预览复用英文版适配,不代表中文源示例已完成本地实现。
"use client";// Adapted from HeroUI v3.2.6 (e385ac202b2cdb94b1bf6fa76d32c31c8259cc5e), Apache-2.0.import { Kbd } from "@lenso/ui";import * as stylex from "@stylexjs/stylex";import { s } from "../card/display.stylex";
export function InstructionalText() { return ( <div> <div {...stylex.props(s.kbdPanel)}> <h4 {...stylex.props(s.kbdHeading)}>Quick Actions</h4> <ul {...stylex.props(s.textSm)}> <li> • Open search:{" "} <Kbd> <Kbd.Abbr keyValue="command" /> <Kbd.Content>K</Kbd.Content> </Kbd> </li> <li {...stylex.props(s.space2)}> • Toggle sidebar:{" "} <Kbd> <Kbd.Abbr keyValue="command" /> <Kbd.Content>B</Kbd.Content> </Kbd> </li> <li {...stylex.props(s.space2)}> • New file:{" "} <Kbd> <Kbd.Abbr keyValue="command" /> <Kbd.Content>N</Kbd.Content> </Kbd> </li> <li {...stylex.props(s.space2)}> • Quick save:{" "} <Kbd> <Kbd.Abbr keyValue="command" /> <Kbd.Content>S</Kbd.Content> </Kbd> </li> </ul> </div> </div> );}Local adaptation source above. Derived from HeroUI v3.2.6 source.
特殊按键
此预览复用英文版适配,不代表中文源示例已完成本地实现。
"use client";// Adapted from HeroUI v3.2.6 (e385ac202b2cdb94b1bf6fa76d32c31c8259cc5e), Apache-2.0.import { Kbd } from "@lenso/ui";import * as stylex from "@stylexjs/stylex";import { s } from "../card/display.stylex";
export function SpecialKeys() { return ( <div> <p {...stylex.props(s.textSm)}> Press{" "} <Kbd> <Kbd.Abbr keyValue="enter" /> </Kbd>{" "} to confirm or{" "} <Kbd> <Kbd.Abbr keyValue="escape" /> </Kbd>{" "} to cancel. </p> <p {...stylex.props(s.textSm, s.space3)}> Use{" "} <Kbd> <Kbd.Abbr keyValue="tab" /> </Kbd>{" "} to navigate between form fields and{" "} <Kbd> <Kbd.Abbr keyValue="shift" /> <Kbd.Abbr keyValue="tab" /> </Kbd>{" "} to go back. </p> <p {...stylex.props(s.textSm, s.space3)}> Hold{" "} <Kbd> <Kbd.Abbr keyValue="space" /> </Kbd>{" "} to temporarily enable panning mode. </p> </div> );}Local adaptation source above. Derived from HeroUI v3.2.6 source.
自定义样式
Tailwind CSS
此预览复用英文版适配,不代表中文源示例已完成本地实现。
"use client";// Adapted from HeroUI v3.2.6 (e385ac202b2cdb94b1bf6fa76d32c31c8259cc5e), Apache-2.0.import { Kbd } from "@lenso/ui";import * as stylex from "@stylexjs/stylex";import { s } from "../card/display.stylex";
export function CustomStyles() { return ( <div {...stylex.props(s.row3)}> <Kbd xstyle={s.kbdAccent}> <Kbd.Abbr keyValue="command" /> <Kbd.Content>K</Kbd.Content> </Kbd> <Kbd xstyle={s.kbdDefault}> <Kbd.Abbr keyValue="shift" /> <Kbd.Content>P</Kbd.Content> </Kbd> </div> );}Local adaptation source above. Derived from HeroUI v3.2.6 source.
全局 CSS
可使用 @layer components 指令自定义 Kbd 组件类。
了解更多。
@layer components { .kbd { @apply bg-gray-100 dark:bg-gray-800 border-gray-300; }
.kbd__abbr { @apply font-bold; }
.kbd__content { @apply text-sm; }}样式参考
HeroUI 遵循 BEM 方法论,确保组件变体与状态可复用且易于自定义。
CSS 类
Kbd 组件使用以下 CSS 类(查看源码样式):
基础类 [!toc]
.kbd- 基础按键样式,含背景、边框与间距.kbd__abbr- 修饰键的缩写元素.kbd__content- 按键文本的内容包裹层
API 参考
Kbd
| Prop | 类型 | 默认值 | 描述 |
|---|---|---|---|
children | React.ReactNode | - | 按键内容 |
variant | `"default" | "light"` | default |
className | string | - | 自定义 CSS 类 |
Kbd.Abbr
| Prop | 类型 | 默认值 | 描述 |
|---|---|---|---|
title | string | - | 无障碍 title 属性(如 ⌘ 对应 "Command") |
children | React.ReactNode | - | 要显示的符号或文本(如 ⌘、⌥、⇧) |
className | string | - | 自定义 CSS 类 |
Kbd.Key
| Prop | 类型 | 默认值 | 描述 |
|---|---|---|---|
children | React.ReactNode | - | 按键文本内容 |
className | string | - | 自定义 CSS 类 |
Kbd.Content Type
keyValue prop 可用的按键值:
| Modifier Keys | Special Keys | Navigation Keys | Function Keys |
|---|---|---|---|
command | enter | up | fn |
shift | delete | down | |
ctrl | escape | left | |
option | tab | right | |
alt | space | pageup | |
win | capslock | pagedown | |
help | home | ||
end |