Skip to content

Commit d44a4cf

Browse files
authored
Add onPrimary variant to KeybindingHint (#5414)
* Add `onPrimary` variant to `KeybindingHint` * Create flat-sheep-look.md
1 parent 9f5a9ac commit d44a4cf

File tree

5 files changed

+36
-7
lines changed

5 files changed

+36
-7
lines changed

.changeset/flat-sheep-look.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@primer/react": minor
3+
---
4+
5+
Add `onPrimary` `variant` to `KeybindingHint`

packages/react/src/KeybindingHint/KeybindingHint.examples.stories.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,16 @@ export const PrimaryButton: StoryObj<KeybindingHintProps> = {
2020
Submit
2121
</Button>
2222
),
23-
args: {keys: 'Mod+Enter', variant: 'onEmphasis'},
23+
args: {keys: 'Mod+Enter', variant: 'onPrimary'},
24+
}
25+
26+
export const DangerButton: StoryObj<KeybindingHintProps> = {
27+
render: args => (
28+
<Button variant="danger" trailingVisual={() => <KeybindingHint {...args} />}>
29+
Delete
30+
</Button>
31+
),
32+
args: {keys: 'Mod+Delete', variant: 'normal'},
2433
}
2534

2635
export const ActionListExample: StoryObj<KeybindingHintProps> = {

packages/react/src/KeybindingHint/KeybindingHint.features.stories.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,20 @@ export const SequenceFull = {args: {keys: sequence, format: 'full'}}
2222

2323
export const OnEmphasis: StoryObj<KeybindingHintProps> = {
2424
render: args => (
25-
<Box sx={{backgroundColor: 'accent.fg', p: 3}}>
25+
<Box sx={{backgroundColor: 'var(--bgColor-black)', p: 3}}>
2626
<KeybindingHint {...args} />
2727
</Box>
2828
),
2929
args: {keys: chord, variant: 'onEmphasis'},
3030
}
3131

32+
export const OnPrimary: StoryObj<KeybindingHintProps> = {
33+
render: args => (
34+
<Box sx={{backgroundColor: 'var(--button-primary-bgColor-rest)', p: 3}}>
35+
<KeybindingHint {...args} />
36+
</Box>
37+
),
38+
args: {keys: chord, variant: 'onPrimary'},
39+
}
40+
3241
export const Small = {args: {keys: chord, size: 'small'}}

packages/react/src/KeybindingHint/components/Chord.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,20 @@ const splitChord = (chord: string) =>
2929
.map(k => k.toLowerCase())
3030
.sort(compareLowercaseKeys)
3131

32+
const backgroundColors = {
33+
normal: 'var(--bgColor-transparent)',
34+
onEmphasis: 'var(--counter-bgColor-emphasis)',
35+
onPrimary: 'var(--button-primary-bgColor-active)',
36+
}
37+
3238
export const Chord = ({keys, format = 'condensed', variant = 'normal', size = 'normal'}: KeybindingHintProps) => (
3339
<Text
3440
sx={{
3541
display: 'inline-flex',
36-
bg: variant === 'onEmphasis' ? 'var(--counter-bgColor-emphasis)' : 'var(--bgColor-transparent)',
37-
color: variant === 'onEmphasis' ? 'var(--fgColor-onEmphasis)' : 'var(--fgColor-muted)',
42+
bg: backgroundColors[variant],
43+
color: variant === 'normal' ? 'var(--fgColor-muted)' : 'var(--fgColor-onEmphasis)',
3844
border: '1px solid',
39-
borderColor: variant === 'onEmphasis' ? 'transparent' : 'var(--borderColor-default)',
45+
borderColor: variant === 'normal' ? 'var(--borderColor-default)' : 'transparent',
4046
borderRadius: size === 'small' ? 1 : 2,
4147
fontWeight: 'normal',
4248
fontFamily: 'normal',

packages/react/src/KeybindingHint/props.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export type KeybindingHintFormat = 'condensed' | 'full'
22

3-
export type KeybindingHintVariant = 'normal' | 'onEmphasis'
3+
export type KeybindingHintVariant = 'normal' | 'onEmphasis' | 'onPrimary'
44

55
export interface KeybindingHintProps {
66
/**
@@ -24,7 +24,7 @@ export interface KeybindingHintProps {
2424
*/
2525
format?: KeybindingHintFormat
2626
/**
27-
* Set to `onEmphasis` for display on emphasis colors.
27+
* Set to `onEmphasis` for display on emphasis colors, and `onPrimary` for display on primary buttons.
2828
*/
2929
variant?: KeybindingHintVariant
3030
/**

0 commit comments

Comments
 (0)