icon

Morainev0.5.0

KbdGroup
elementskbd-group

KbdGroup

Group of keyboard shortcut keys supporting simultaneous chords and ordered sequences.

Import#

import { KbdGroup } from 'moraine'

Usage#

KbdGroup composes multiple Kbd keycaps. Use items for keys pressed at the same time, such as Ctrl + K. Use sequence for chords pressed one after another, such as Ctrl + K then Ctrl + S.

Slot Structure#

root
├── chord
│ ├── item (×n)
│ └── divider (between simultaneous keys)
└── sequenceDivider (between ordered chords)

Examples#

Basic#

function Basic() {
return <KbdGroup items={[{ value: 'Cmd', label: 'Command' }, 'K']} />
}

Sequences#

function Sequences() {
return (
<KbdGroup
sequence={[
[{ value: 'Ctrl', label: 'Control' }, 'K'],
['Ctrl', 'S'],
]}
/>
)
}

Custom Dividers#

function CustomDividers() {
return (
<KbdGroup
sequence={[
[{ value: 'Ctrl', label: 'Control' }, 'K'],
['Ctrl', 'S'],
]}
dividerRender={() => <span class="text-xs text-muted-foreground">/</span>}
sequenceDividerRender={() => <span class="text-xs text-muted-foreground"> & </span>}
/>
)
}

Sizes#

function Sizes() {
const SIZES = ['xs', 'sm', 'md', 'lg', 'xl'] as const
return (
<div class="flex flex-col gap-3 items-start">
<For each={SIZES}>
{(size) => <KbdGroup size={size} items={['Ctrl', size.toUpperCase()]} />}
</For>
</div>
)
}

API Reference#

Attributes#

Slotroot0 attributes
Container for one or more shortcut steps.
No attribute metadata for this slot.

Props#

PropTypeDefaultDescription
classClassValue
Class applied to the component root or trigger element.
classesKbdGroupT.Classes | undefined
dividerRenderComponentOrElement<KbdGroupT.DividerRenderProps> | undefined
Custom divider rendered between keys in the same group.
itemsKbdGroupT.Item[] | undefined
Keys pressed at the same time, such as Ctrl+K.
refJSX.HTMLElementTags["span"] extends { ref?: infer Ref; } ? Ref : never | undefined
sequenceKbdGroupT.Item[][] | undefined
Key groups pressed one after another, such as Ctrl+K then Ctrl+S.
sequenceDividerRenderComponentOrElement<KbdGroupT.DividerRenderProps> | undefined
Custom divider rendered between shortcut steps.
size"xs" | "sm" | "md" | "lg" | "xl" | undefined
styleJSX.CSSProperties | undefined
stylesKbdGroupT.Styles | undefined
variant"default" | "outline" | "invert" | undefined

Items#

PropTypeDefaultDescription
labelstring | undefined
Accessible label for assistive technology.
slotNamestring | undefined
Data slot used by the rendered keycap.
symbolboolean | undefinedtrue
Whether to resolve known key aliases to symbols.
value*KbdT.Key
Value displayed by the keycap or resolved through the static key aliases.