Компонент Kbd предназначен для отображения клавиш или
комбинаций клавиш в интерфейсе приложения. Он имитирует стиль физических
кнопок на клавиатуре, что делает документацию, подсказки или инструкции
по горячим клавишам более наглядными и понятными.
В Chakra UI Kbd является семантическим элементом,
основанным на HTML-теге <kbd>, с готовыми стилями,
которые можно легко кастомизировать.
Базовое применение компонента выглядит следующим образом:
import { Kbd, Text } from "@chakra-ui/react";
function ShortcutExample() {
return (
<Text>
Чтобы скопировать текст, нажмите <Kbd>Ctrl</Kbd> + <Kbd>C</Kbd>
</Text>
);
}
Разбор кода:
<Kbd> автоматически придает клавише визуальный
стиль, похожий на физическую кнопку.+ или любой
другой разделитель, чтобы отобразить последовательность действий.Text, Heading, Box и т. д.),
сохраняя корректное отображение.Chakra UI предоставляет возможность изменять стили компонента
Kbd через системные пропсы:
<Kbd colorScheme="teal" fontSize="md" px={3} py={1} borderRadius="md">
Ctrl
</Kbd>
Ключевые пропсы:
colorScheme — задает цветовую схему для фона
клавиши.fontSize — размер шрифта внутри клавиши.px, py — горизонтальные и вертикальные
отступы, управляющие размерами «кнопки».borderRadius — скругление углов, которое может быть
использовано для стилистической настройки.Также доступна полная интеграция с темингом Chakra UI, что позволяет
глобально настраивать внешний вид всех Kbd через
extendTheme.
Для отображения сочетаний клавиш можно обернуть каждую клавишу в
отдельный компонент Kbd:
<HStack spacing={2}>
<Kbd>Shift</Kbd>
<Kbd>Alt</Kbd>
<Kbd>R</Kbd>
</HStack>
Особенности:
HStack из Chakra UI автоматически
распределяет клавиши по горизонтали с заданным промежутком.VStack.Kbd наследует все свойства Chakra UI по доступности:
aria-label) для описания функции клавиши, если это
необходимо.<Kbd aria-label="Сочетание клавиш для копирования">Ctrl + C</Kbd>
Для динамического отображения горячих клавиш удобно создавать отдельный компонент, который принимает массив клавиш:
function Shortcut({ keys }) {
return (
<HStack spacing={1}>
{keys.map((key) => (
<Kbd key={key}>{key}</Kbd>
))}
</HStack>
);
}
// Использование
<Shortcut keys={["Ctrl", "Shift", "S"]} />
Преимущества такого подхода:
Kbd идеально подходит для:
Tooltips).Пример с подсказкой:
<Tooltip label="Скопировать">
<Text>
Нажмите <Kbd>Ctrl</Kbd> + <Kbd>C</Kbd>
</Text>
</Tooltip>
Можно глобально настраивать стиль всех компонентов Kbd
через тему:
import { extendTheme } from "@chakra-ui/react";
const theme = extendTheme({
components: {
Kbd: {
baseStyle: {
px: 2,
py: 1,
borderRadius: "sm",
fontWeight: "bold",
bg: "gray.200",
color: "gray.800",
},
},
},
});
Возможности кастомизации:
baseStyle задает глобальные значения для всех
экземпляров Kbd.variants позволяют создавать разные стили для отдельных
случаев (например, primary, secondary).sizes управляют размерами клавиш.Компонент Kbd в Chakra UI сочетает в себе семантику
HTML, визуальную привлекательность и гибкость настройки, что делает его
идеальным инструментом для отображения горячих клавиш и улучшения UX
приложений на JavaScript.