diff --git a/packages/eui/.loki/reference/chrome_desktop_Layout_EuiBottomBar_Playground.png b/packages/eui/.loki/reference/chrome_desktop_Layout_EuiBottomBar_Playground.png index 0e846cd94d6..9fdbb5f4f2d 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Layout_EuiBottomBar_Playground.png and b/packages/eui/.loki/reference/chrome_desktop_Layout_EuiBottomBar_Playground.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Multi.png b/packages/eui/.loki/reference/chrome_desktop_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Multi.png index 012997da2b2..89086b64ec4 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Multi.png and b/packages/eui/.loki/reference/chrome_desktop_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Multi.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Single.png b/packages/eui/.loki/reference/chrome_desktop_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Single.png index e8b3ef6aded..29494bac354 100644 Binary files a/packages/eui/.loki/reference/chrome_desktop_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Single.png and b/packages/eui/.loki/reference/chrome_desktop_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Single.png differ diff --git a/packages/eui/.loki/reference/chrome_desktop_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_High_Contrast.png b/packages/eui/.loki/reference/chrome_desktop_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_High_Contrast.png new file mode 100644 index 00000000000..6bb58932d0e Binary files /dev/null and b/packages/eui/.loki/reference/chrome_desktop_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_High_Contrast.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Layout_EuiBottomBar_Playground.png b/packages/eui/.loki/reference/chrome_mobile_Layout_EuiBottomBar_Playground.png index 8c39832ab66..17d0c9f0672 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Layout_EuiBottomBar_Playground.png and b/packages/eui/.loki/reference/chrome_mobile_Layout_EuiBottomBar_Playground.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Multi.png b/packages/eui/.loki/reference/chrome_mobile_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Multi.png index f2769fefd26..1a006e04af8 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Multi.png and b/packages/eui/.loki/reference/chrome_mobile_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Multi.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Single.png b/packages/eui/.loki/reference/chrome_mobile_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Single.png index 34ab0a5ceae..ea990687571 100644 Binary files a/packages/eui/.loki/reference/chrome_mobile_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Single.png and b/packages/eui/.loki/reference/chrome_mobile_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_Checkable_Single.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_High_Contrast.png b/packages/eui/.loki/reference/chrome_mobile_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_High_Contrast.png new file mode 100644 index 00000000000..89f1f28be1b Binary files /dev/null and b/packages/eui/.loki/reference/chrome_mobile_Navigation_EuiKeyPadMenu_EuiKeyPadMenu_High_Contrast.png differ diff --git a/packages/eui/src/components/bottom_bar/bottom_bar.styles.ts b/packages/eui/src/components/bottom_bar/bottom_bar.styles.ts index eb6dd268e90..df1d825f765 100644 --- a/packages/eui/src/components/bottom_bar/bottom_bar.styles.ts +++ b/packages/eui/src/components/bottom_bar/bottom_bar.styles.ts @@ -7,8 +7,9 @@ */ import { css, keyframes } from '@emotion/react'; -import { euiCanAnimate } from '../../global_styling'; import { UseEuiTheme, shade } from '../../services'; +import { euiCanAnimate, logicalCSS } from '../../global_styling'; +import { highContrastModeStyles } from '../../global_styling/functions/high_contrast'; import { euiShadowFlat } from '../../themes/amsterdam/global_styling/mixins'; const euiBottomBarAppear = keyframes` @@ -30,8 +31,12 @@ export const euiBottomBarStyles = (euiThemeContext: UseEuiTheme) => { // Base // `color` is inherited from the wrapping `EuiThemeProvider colorMode="dark"` euiBottomBar: css` - ${euiShadowFlat(euiThemeContext)} - background: ${shade(euiTheme.colors.lightestShade, 0.5)}; + background-color: ${shade(euiTheme.colors.lightestShade, 0.5)}; + ${logicalCSS('border-top', euiTheme.border.thin)} + ${highContrastModeStyles(euiThemeContext, { + none: euiShadowFlat(euiThemeContext), + })} + ${euiCanAnimate} { animation: ${euiBottomBarAppear} ${euiTheme.animation.slow} ${euiTheme.animation.resistance}; diff --git a/packages/eui/src/components/image/image.styles.ts b/packages/eui/src/components/image/image.styles.ts index 0fd1c6e3d2a..b192f5862ea 100644 --- a/packages/eui/src/components/image/image.styles.ts +++ b/packages/eui/src/components/image/image.styles.ts @@ -8,6 +8,7 @@ import { css } from '@emotion/react'; import { logicalCSS } from '../../global_styling'; +import { highContrastModeStyles } from '../../global_styling/functions/high_contrast'; import { UseEuiTheme } from '../../services'; import { euiShadow } from '../../themes/amsterdam/global_styling/mixins'; @@ -27,9 +28,12 @@ export const euiImageStyles = (euiThemeContext: UseEuiTheme) => ({ position: relative; ${logicalCSS('max-height', '80vh')} ${logicalCSS('max-width', '80vw')} + ${highContrastModeStyles(euiThemeContext, { + preferred: `border: ${euiThemeContext.euiTheme.border.thin};`, + })} `, hasShadow: css` - ${euiShadow(euiThemeContext, 's')} + ${euiShadow(euiThemeContext, 's', { borderAllInHighContrastMode: true })} `, // Sizes // These sizes are mostly suggestions. Don't look too hard for meaning in their values. diff --git a/packages/eui/src/components/key_pad_menu/key_pad_menu.stories.tsx b/packages/eui/src/components/key_pad_menu/key_pad_menu.stories.tsx index 8f0ca82aa02..e730c3e30bd 100644 --- a/packages/eui/src/components/key_pad_menu/key_pad_menu.stories.tsx +++ b/packages/eui/src/components/key_pad_menu/key_pad_menu.stories.tsx @@ -223,3 +223,40 @@ export const CheckableMulti: Story = { }, render: (args) => , }; + +export const HighContrast: Story = { + tags: ['vrt-only'], + globals: { highContrastMode: true }, + args: { + children: [ + + + , + + + , + + + , + + + , + + + , + + + , + ], + }, +}; diff --git a/packages/eui/src/components/key_pad_menu/key_pad_menu_item.styles.ts b/packages/eui/src/components/key_pad_menu/key_pad_menu_item.styles.ts index 36b74f003ef..5c851c77aff 100644 --- a/packages/eui/src/components/key_pad_menu/key_pad_menu_item.styles.ts +++ b/packages/eui/src/components/key_pad_menu/key_pad_menu_item.styles.ts @@ -15,6 +15,7 @@ import { euiCanAnimate, euiFontSize, } from '../../global_styling'; +import { highContrastModeStyles } from '../../global_styling/functions/high_contrast'; import { euiShadow } from '../../themes/amsterdam/global_styling/mixins'; import { euiScreenReaderOnly } from '../accessibility'; @@ -38,12 +39,17 @@ export const euiKeyPadMenuItemStyles = (euiThemeContext: UseEuiTheme) => { } `, enabled: css` - &:hover, - &:focus, - &:focus-within { + &:is(:hover, :focus, :focus-within) { cursor: pointer; text-decoration: underline; - ${euiShadow(euiThemeContext, 's')} + + ${highContrastModeStyles(euiThemeContext, { + none: euiShadow(euiThemeContext, 's'), + // Use `outline` instead of border to avoid affecting absolutely positioned children + preferred: ` + outline: ${euiTheme.border.width.thin} solid ${euiTheme.colors.primary}; + `, + })} ${euiCanAnimate} { .euiKeyPadMenuItem__icon { @@ -61,11 +67,19 @@ export const euiKeyPadMenuItemStyles = (euiThemeContext: UseEuiTheme) => { color: ${euiTheme.colors.title}; background-color: ${euiTheme.focus.backgroundColor}; - &, - &:hover, - &:focus, - &:focus-within { + &:is(*, :hover, :focus, :focus-within) { color: ${euiTheme.colors.primaryText}; + + ${highContrastModeStyles(euiThemeContext, { + // Skip checkable items (which render a