diff --git a/.changeset/warm-clouds-shine.md b/.changeset/warm-clouds-shine.md new file mode 100644 index 00000000..5096d154 --- /dev/null +++ b/.changeset/warm-clouds-shine.md @@ -0,0 +1,5 @@ +--- +"@hyperdx/app": patch +--- + +style: Rename sidenav background color tokens for clarity and update AppNav hover/focus states diff --git a/packages/app/src/components/AppNav/AppNav.module.scss b/packages/app/src/components/AppNav/AppNav.module.scss index 26188011..764328df 100644 --- a/packages/app/src/components/AppNav/AppNav.module.scss +++ b/packages/app/src/components/AppNav/AppNav.module.scss @@ -131,17 +131,17 @@ $transition-slow: 0.2s ease; &:hover { color: var(--color-text-sidenav-link-active); - background: var(--color-bg-sidenav-link); + background: var(--color-bg-sidenav-link-active); } &:focus-visible { outline: none; - background: var(--color-bg-sidenav-link); + background: var(--color-bg-sidenav-link-active); } &Active { color: var(--color-text-sidenav-link-active); - background: var(--color-bg-sidenav-link); + background: var(--color-bg-sidenav-link-active); } } @@ -178,7 +178,7 @@ $transition-slow: 0.2s ease; transform $transition-fast; &:hover { - background: var(--color-bg-sidenav-link-hover); + background: var(--color-bg-sidenav-link-active-hover); color: var(--color-text-sidenav-link-active); transform: scale(1.1); } @@ -213,12 +213,12 @@ $transition-slow: 0.2s ease; &:hover { color: var(--color-text-sidenav-link-active); - background: var(--color-bg-sidenav-link); + background: var(--color-bg-sidenav-link-active); } &:focus-visible { outline: none; - background: var(--color-bg-sidenav-link); + background: var(--color-bg-sidenav-link-active); } i { @@ -227,7 +227,7 @@ $transition-slow: 0.2s ease; &Active { color: var(--color-text-sidenav-link-active); - background: var(--color-bg-sidenav-link); + background: var(--color-bg-sidenav-link-active); } } @@ -308,7 +308,7 @@ $transition-slow: 0.2s ease; overflow: hidden; &:hover { - background: var(--color-bg-sidenav-link); + background: var(--color-bg-sidenav-link-active); } @include interactive-press; @@ -321,7 +321,7 @@ $transition-slow: 0.2s ease; width: fit-content; &:hover { - background: var(--color-bg-sidenav-link); + background: var(--color-bg-sidenav-link-active); } @include interactive-press; @@ -365,7 +365,7 @@ $transition-slow: 0.2s ease; border-color $transition-slow; &:hover { - background: var(--color-bg-sidenav-link); + background: var(--color-bg-sidenav-link-active); border-color: var(--color-border); } @@ -377,7 +377,7 @@ $transition-slow: 0.2s ease; background: transparent; &:hover { - background: var(--color-bg-sidenav-link); + background: var(--color-bg-sidenav-link-active); } @include interactive-press; diff --git a/packages/app/src/components/AppNav/AppNav.tsx b/packages/app/src/components/AppNav/AppNav.tsx index c693d6c2..6cf7d26f 100644 --- a/packages/app/src/components/AppNav/AppNav.tsx +++ b/packages/app/src/components/AppNav/AppNav.tsx @@ -120,18 +120,18 @@ function NewDashboardButton() { if (IS_LOCAL_MODE) { return ( - - - + ); } diff --git a/packages/app/src/theme/mantineTheme.ts b/packages/app/src/theme/mantineTheme.ts index 5d59c75f..ede8e5e8 100644 --- a/packages/app/src/theme/mantineTheme.ts +++ b/packages/app/src/theme/mantineTheme.ts @@ -9,6 +9,8 @@ import { Tooltip, } from '@mantine/core'; +import focusClasses from '../../styles/focus.module.scss'; + export const makeTheme = ({ fontFamily = '"IBM Plex Sans", monospace', }: { @@ -16,6 +18,7 @@ export const makeTheme = ({ }): MantineThemeOverride => ({ cursorType: 'pointer', fontFamily, + focusClassName: focusClasses.focusRing, primaryColor: 'green', primaryShade: 8, autoContrast: true, diff --git a/packages/app/src/theme/semanticColorsGrouped.ts b/packages/app/src/theme/semanticColorsGrouped.ts index c7360b6e..6885d599 100644 --- a/packages/app/src/theme/semanticColorsGrouped.ts +++ b/packages/app/src/theme/semanticColorsGrouped.ts @@ -34,7 +34,12 @@ export const semanticColorsGrouped = { ], icons: ['color-icon-primary', 'color-icon-muted'], overlay: ['color-overlay', 'color-backdrop'], - states: ['color-state-hover', 'color-state-selected', 'color-state-focus'], + states: [ + 'color-state-hover', + 'color-state-selected', + 'color-state-focus', + 'color-outline-focus', + ], json: [ 'color-json-string', 'color-json-number', diff --git a/packages/app/styles/_semantic-colors.scss b/packages/app/styles/_semantic-colors.scss index 603fff5b..527d2f25 100644 --- a/packages/app/styles/_semantic-colors.scss +++ b/packages/app/styles/_semantic-colors.scss @@ -7,8 +7,8 @@ --color-bg-muted: var(--mantine-color-dark-7); --color-bg-highlighted: rgb(55 58 64 / 70%); --color-bg-sidenav: var(--mantine-color-dark-9); - --color-bg-sidenav-link: var(--mantine-color-dark-6); - --color-bg-sidenav-link-hover: var(--mantine-color-dark-7); + --color-bg-sidenav-link-active: var(--mantine-color-dark-6); + --color-bg-sidenav-link-active-hover: var(--mantine-color-dark-7); --color-bg-header: var(--mantine-color-dark-9); --color-bg-hover: var(--mantine-color-dark-6); --color-bg-active: var(--mantine-color-dark-5); @@ -50,6 +50,7 @@ --color-state-hover: var(--mantine-color-dark-6); --color-state-selected: var(--mantine-color-dark-5); --color-state-focus: var(--mantine-color-dark-4); + --color-outline-focus: var(--mantine-color-green-4); /* Code / Misc UI */ --color-bg-code: var(--mantine-color-dark-8); @@ -104,8 +105,8 @@ --color-bg-muted: #f6f6fa; --color-bg-highlighted: rgb(230 232 237 / 70%); --color-bg-sidenav: var(--mantine-color-white); - --color-bg-sidenav-link: #f6f6fa; - --color-bg-sidenav-link-hover: var(--mantine-color-gray-2); + --color-bg-sidenav-link-active: #f6f6fa; + --color-bg-sidenav-link-active-hover: var(--mantine-color-gray-2); --color-bg-header: var(--mantine-color-gray-1); --color-bg-modal: var(--mantine-color-white); --color-bg-hover: var(--mantine-color-gray-3); @@ -148,6 +149,7 @@ --color-state-hover: var(--mantine-color-dark-3); --color-state-selected: var(--mantine-color-dark-4); --color-state-focus: var(--mantine-color-dark-5); + --color-outline-focus: var(--mantine-color-green-8); /* Code / Misc UI - inverted */ --color-bg-code: var(--mantine-color-dark-1); diff --git a/packages/app/styles/app.scss b/packages/app/styles/app.scss index 3edede13..c3979890 100644 --- a/packages/app/styles/app.scss +++ b/packages/app/styles/app.scss @@ -39,6 +39,13 @@ body { font-size: var(--mantine-font-size-sm); } +a:focus-visible, +button:focus-visible { + outline: 2px solid var(--color-outline-focus); + outline-offset: 2px; + border-radius: var(--mantine-radius-xs); +} + .accordion-button, .button, .form-control { diff --git a/packages/app/styles/focus.module.scss b/packages/app/styles/focus.module.scss new file mode 100644 index 00000000..0f21db49 --- /dev/null +++ b/packages/app/styles/focus.module.scss @@ -0,0 +1,5 @@ +.focusRing:focus-visible { + outline: 2px solid var(--color-outline-focus); + outline-offset: 2px; + border-radius: var(--mantine-radius-xs); +}