Skip to content
Lenso UI

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类型默认值描述
childrenReact.ReactNode-按键内容
variant`"default""light"`default
classNamestring-自定义 CSS 类

Kbd.Abbr

Prop类型默认值描述
titlestring-无障碍 title 属性(如 ⌘ 对应 "Command")
childrenReact.ReactNode-要显示的符号或文本(如 ⌘、⌥、⇧)
classNamestring-自定义 CSS 类

Kbd.Key

Prop类型默认值描述
childrenReact.ReactNode-按键文本内容
classNamestring-自定义 CSS 类

Kbd.Content Type

keyValue prop 可用的按键值:

Modifier KeysSpecial KeysNavigation KeysFunction Keys
commandenterupfn
shiftdeletedown
ctrlescapeleft
optiontabright
altspacepageup
wincapslockpagedown
helphome
end

相关组件