Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Loading states mapping update for Borealis #8260

Closed
wants to merge 65 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
1ff189d
[Theme] Base theme setup (#8030)
mgadewoll Oct 23, 2024
39e60d6
[Visual Refresh] Update Typography scale (#8103)
mgadewoll Oct 31, 2024
22b2d6c
[Visual Refresh] Setup semantic color tokens (#8097)
mgadewoll Oct 31, 2024
b6df1f3
[Visual Refresh] Design changes (#8111)
mgadewoll Nov 5, 2024
5e49686
fix: correct skeleton mapping
mgadewoll Nov 5, 2024
e33639a
refactor: prevent double background for seleton animation
mgadewoll Nov 5, 2024
c8aaaad
[Visual Refresh] Fix theme package builds (#8120)
mgadewoll Nov 7, 2024
68ced5b
[Visual Refresh] Provide legacy JSON theme tokens (#8115)
mgadewoll Nov 7, 2024
9f5f807
[Visual Refresh] Update vis colors and palettes (#8112)
mgadewoll Nov 7, 2024
baf3eee
chore: cleanup package.json
mgadewoll Nov 7, 2024
d8a5251
[Visual Refresh] Provide legacy JSON tokens via EUI (#8125)
mgadewoll Nov 11, 2024
7f7f303
[Visual Refresh] Fix computed border token mapping (#8170)
mgadewoll Nov 20, 2024
08c1e56
[Visual Refresh] Fix euiColorFullShade Sass variable mapping (#8178)
mgadewoll Nov 22, 2024
939cf97
chore: add licenses to eui-theme-borealis and eui-theme-common
tkajtoch Nov 20, 2024
9c846e4
chore: bump versions of `@elastic/eui-theme-borealis` and `@elastic/e…
tkajtoch Nov 27, 2024
98d81ac
build(eui): move `@elastic/eui-theme-common` to dependencies
tkajtoch Nov 27, 2024
5ebf470
chore(eui): bump version of `@elastic/eui`
tkajtoch Nov 27, 2024
060530d
[Visual Refresh] Add forms.maxWidth token (#8221)
mgadewoll Dec 11, 2024
0cbe955
[Visual Refresh] Update color token mappings (#8211)
mgadewoll Dec 12, 2024
c934fe7
[Visual Refresh] Set darker shade for subdued text (#8224)
ryankeairns Dec 12, 2024
4618641
[Visual Refresh] Remove support for accentSecondary badges (#8227)
mgadewoll Dec 13, 2024
963a999
[Visual Refresh] Introduce shared popover arrow styles to Borealis (#…
mgadewoll Dec 13, 2024
2f8376e
chore: update versions
tkajtoch Dec 16, 2024
d9185e7
test: update snapshot
tkajtoch Dec 17, 2024
d5ef329
chore: update versions
tkajtoch Dec 17, 2024
48232d4
[Visual Refresh] Add severity vis colors (#8247)
mgadewoll Dec 18, 2024
e136ce3
[Visual Refresh] Fix transparent color variable definitions (#8249)
mgadewoll Dec 18, 2024
f581efb
chore: update token deprecation JSDOC
mgadewoll Dec 19, 2024
c11b692
[Visual Refresh] Update `EuiToken` colors (#8250)
ryankeairns Dec 19, 2024
b597a53
chore: update versions
tkajtoch Dec 18, 2024
4410c9c
chore: update versions
tkajtoch Dec 19, 2024
615e56b
[Visual Refresh] Correct severity palette order for Amsterdam (#8254)
acstll Jan 7, 2025
99a8d5b
[Theme] Base theme setup (#8030)
mgadewoll Oct 23, 2024
8715070
[Visual Refresh] Update Typography scale (#8103)
mgadewoll Oct 31, 2024
f9b081f
[Visual Refresh] Setup semantic color tokens (#8097)
mgadewoll Oct 31, 2024
2e1cc64
[Visual Refresh] Design changes (#8111)
mgadewoll Nov 5, 2024
b507bb0
fix: correct skeleton mapping
mgadewoll Nov 5, 2024
9efd0c0
refactor: prevent double background for seleton animation
mgadewoll Nov 5, 2024
b8b6069
[Visual Refresh] Fix theme package builds (#8120)
mgadewoll Nov 7, 2024
9d647ed
[Visual Refresh] Provide legacy JSON theme tokens (#8115)
mgadewoll Nov 7, 2024
14281ab
[Visual Refresh] Update vis colors and palettes (#8112)
mgadewoll Nov 7, 2024
d6d0075
chore: cleanup package.json
mgadewoll Nov 7, 2024
b0d5736
[Visual Refresh] Provide legacy JSON tokens via EUI (#8125)
mgadewoll Nov 11, 2024
9ae61b1
[Visual Refresh] Fix computed border token mapping (#8170)
mgadewoll Nov 20, 2024
e199b81
[Visual Refresh] Fix euiColorFullShade Sass variable mapping (#8178)
mgadewoll Nov 22, 2024
07b5579
chore: add licenses to eui-theme-borealis and eui-theme-common
tkajtoch Nov 20, 2024
8ab1cc8
chore: bump versions of `@elastic/eui-theme-borealis` and `@elastic/e…
tkajtoch Nov 27, 2024
cb07ab7
build(eui): move `@elastic/eui-theme-common` to dependencies
tkajtoch Nov 27, 2024
07ab297
chore(eui): bump version of `@elastic/eui`
tkajtoch Nov 27, 2024
8dea907
[Visual Refresh] Add forms.maxWidth token (#8221)
mgadewoll Dec 11, 2024
c5af491
[Visual Refresh] Update color token mappings (#8211)
mgadewoll Dec 12, 2024
cd2ad55
[Visual Refresh] Set darker shade for subdued text (#8224)
ryankeairns Dec 12, 2024
dfb1367
[Visual Refresh] Remove support for accentSecondary badges (#8227)
mgadewoll Dec 13, 2024
3695e96
[Visual Refresh] Introduce shared popover arrow styles to Borealis (#…
mgadewoll Dec 13, 2024
f4e35ac
chore: update versions
tkajtoch Dec 16, 2024
2bdbb5a
test: update snapshot
tkajtoch Dec 17, 2024
91d93ee
chore: update versions
tkajtoch Dec 17, 2024
568747f
[Visual Refresh] Add severity vis colors (#8247)
mgadewoll Dec 18, 2024
63410a1
[Visual Refresh] Fix transparent color variable definitions (#8249)
mgadewoll Dec 18, 2024
d7b4209
chore: update token deprecation JSDOC
mgadewoll Dec 19, 2024
c8a2673
[Visual Refresh] Update `EuiToken` colors (#8250)
ryankeairns Dec 19, 2024
14f1296
chore: update versions
tkajtoch Dec 18, 2024
3c951b0
chore: update versions
tkajtoch Dec 19, 2024
d1e1f1c
[Visual Refresh] Correct severity palette order for Amsterdam (#8254)
acstll Jan 7, 2025
31f3739
Merge branch 'eui-theme/borealis' of https://github.com/elastic/eui i…
ek-so Jan 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .buildkite/scripts/pipelines/pipeline_deploy_new_docs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ analytics_vault="secret/ci/elastic-eui/analytics"
export DOCS_BASE_URL="/${bucket_directory}"
export DOCS_GOOGLE_TAG_MANAGER_ID="$(retry 5 vault read -field=google_tag_manager_id "${analytics_vault}")"

yarn workspaces foreach -Rpt --from @elastic/eui-website run build
yarn workspace @elastic/eui-website run build:workspaces

echo "+++ Configuring environment for website deployment"

Expand Down
18 changes: 9 additions & 9 deletions .buildkite/scripts/pipelines/pipeline_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,53 +29,53 @@ COMMAND=""
case $TEST_TYPE in
lint)
echo "[TASK]: Running linters"
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui lint"
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui build:workspaces && yarn --cwd packages/eui lint"
;;

unit:ts)
echo "[TASK]: Running .ts and .js unit tests"
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui test-unit --node-options=--max_old_space_size=2048 --testMatch=non-react"
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui build:workspaces && yarn --cwd packages/eui test-unit --node-options=--max_old_space_size=2048 --testMatch=non-react"
;;

unit:tsx:16)
echo "[TASK]: Running Jest .tsx tests against React 16"
DOCKER_OPTIONS+=(--env BUILDKITE_ANALYTICS_TOKEN="$(retry 5 vault read -field=jest_token_react16 "${buildkite_analytics_vault}")")
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui test-unit --node-options=--max_old_space_size=2048 --react-version=16 --testMatch=react"
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui build:workspaces && yarn --cwd packages/eui test-unit --node-options=--max_old_space_size=2048 --react-version=16 --testMatch=react"
;;

unit:tsx:17)
echo "[TASK]: Running Jest .tsx tests against React 17"
DOCKER_OPTIONS+=(--env BUILDKITE_ANALYTICS_TOKEN="$(retry 5 vault read -field=jest_token_react17 "${buildkite_analytics_vault}")")
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui test-unit --node-options=--max_old_space_size=2048 --react-version=17 --testMatch=react"
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui build:workspaces && yarn --cwd packages/eui test-unit --node-options=--max_old_space_size=2048 --react-version=17 --testMatch=react"
;;

unit:tsx)
echo "[TASK]: Running Jest .tsx tests against React 18"
DOCKER_OPTIONS+=(--env BUILDKITE_ANALYTICS_TOKEN="$(retry 5 vault read -field=jest_token_react18 "${buildkite_analytics_vault}")")
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui test-unit --node-options=--max_old_space_size=2048 --testMatch=react"
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui build:workspaces && yarn --cwd packages/eui test-unit --node-options=--max_old_space_size=2048 --testMatch=react"
;;

cypress:16)
echo "[TASK]: Running Cypress tests against React 16"
DOCKER_OPTIONS+=(--env BUILDKITE_ANALYTICS_TOKEN="$(retry 5 vault read -field=cypress_token_react16 "${buildkite_analytics_vault}")")
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui cypress install && yarn --cwd packages/eui test-cypress --node-options=--max_old_space_size=2048 --react-version=16"
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui build:workspaces && yarn --cwd packages/eui cypress install && yarn --cwd packages/eui test-cypress --node-options=--max_old_space_size=2048 --react-version=16"
;;

cypress:17)
echo "[TASK]: Running Cypress tests against React 17"
DOCKER_OPTIONS+=(--env BUILDKITE_ANALYTICS_TOKEN="$(retry 5 vault read -field=cypress_token_react17 "${buildkite_analytics_vault}")")
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui cypress install && yarn --cwd packages/eui test-cypress --node-options=--max_old_space_size=2048 --react-version=17"
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui build:workspaces && yarn --cwd packages/eui cypress install && yarn --cwd packages/eui test-cypress --node-options=--max_old_space_size=2048 --react-version=17"
;;

cypress:18)
echo "[TASK]: Running Cypress tests against React 18"
DOCKER_OPTIONS+=(--env BUILDKITE_ANALYTICS_TOKEN="$(retry 5 vault read -field=cypress_token_react18 "${buildkite_analytics_vault}")")
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui cypress install && yarn --cwd packages/eui test-cypress --node-options=--max_old_space_size=2048"
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui build:workspaces && yarn --cwd packages/eui cypress install && yarn --cwd packages/eui test-cypress --node-options=--max_old_space_size=2048"
;;

cypress:a11y)
echo "[TASK]: Running Cypress accessibility tests against React 18"
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui cypress install && yarn --cwd packages/eui run test-cypress-a11y --node-options=--max_old_space_size=2048"
COMMAND="/opt/yarn*/bin/yarn --cwd packages/eui && yarn --cwd packages/eui build:workspaces && yarn --cwd packages/eui cypress install && yarn --cwd packages/eui run test-cypress-a11y --node-options=--max_old_space_size=2048"
;;

*)
Expand Down
1 change: 1 addition & 0 deletions .buildkite/scripts/release/step_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ echo "+++ :yarn: Installing dependencies"
yarn

echo "+++ :yarn: Building @elastic/eui"
yarn build:workspaces
yarn build

echo "+++ :yarn: Built @elastic/eui"
3 changes: 2 additions & 1 deletion packages/docusaurus-theme/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@
"@docusaurus/theme-common": "^3.5.2",
"@docusaurus/utils-validation": "^3.5.2",
"@elastic/datemath": "^5.0.3",
"@elastic/eui": "97.2.0",
"@elastic/eui": "workspace:^",
"@elastic/eui-docgen": "workspace:^",
"@elastic/eui-theme-borealis": "workspace:^",
"@emotion/css": "^11.11.2",
"@emotion/react": "^11.11.4",
"@types/react-window": "^1.8.8",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,23 +36,24 @@ const getDemoActionsBarStyles = (euiTheme: UseEuiTheme) => {
&:last-child {
// border radius should be 1px smaller to work nicely
// with the wrapper border width of 1px
border-radius: 0 0 calc(var(--docs-demo-border-radius) - 1px) calc(var(--docs-demo-border-radius) - 1px);
border-radius: 0 0 calc(var(--docs-demo-border-radius) - 1px)
calc(var(--docs-demo-border-radius) - 1px);
}
`,
button: css`
background: var(--eui-background-color-primary-opaque);
background: var(--eui-background-color-primary);
border: 1px solid var(--eui-border-color-primary);
margin-right: auto;
`,
};
}
};

export const DemoActionsBar = ({
isSourceOpen,
setSourceOpen,
onClickOpenInCodeSandbox,
onClickReloadExample,
onClickCopyToClipboard
onClickCopyToClipboard,
}: DemoActionsBarProps) => {
const styles = useEuiMemoizedStyles(getDemoActionsBarStyles);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ export const NavbarItem = (props: Props) => {
} = props;

const isBrowser = useIsBrowser();
const { theme } = useContext(AppThemeContext);
const { colorMode } = useContext(AppThemeContext);

const isDarkMode = theme === 'dark';
const isDarkMode = colorMode === 'dark';

const styles = useEuiMemoizedStyles(getStyles);
const cssStyles = [
Expand Down
58 changes: 47 additions & 11 deletions packages/docusaurus-theme/src/components/theme_context/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,39 @@ import {
useState,
} from 'react';
import useIsBrowser from '@docusaurus/useIsBrowser';
import { EUI_THEMES, EuiProvider, EuiThemeColorMode } from '@elastic/eui';
import {
EuiProvider,
EuiThemeAmsterdam,
EuiThemeColorMode,
} from '@elastic/eui';
import { EuiThemeBorealis } from '@elastic/eui-theme-borealis';

import { EuiThemeOverrides } from './theme_overrides';

const EUI_THEME_NAMES = EUI_THEMES.map(
({ value }) => value
) as EuiThemeColorMode[];
const EXPERIMENTAL_THEMES = [
{
text: 'Borealis',
value: EuiThemeBorealis.key,
provider: EuiThemeBorealis,
},
];

export const AVAILABLE_THEMES = [
{
text: 'Amsterdam',
value: EuiThemeAmsterdam.key,
provider: EuiThemeAmsterdam,
},
...EXPERIMENTAL_THEMES,
];

const EUI_COLOR_MODES = ['light', 'dark'] as EuiThemeColorMode[];

const defaultState = {
theme: EUI_THEME_NAMES[0] as EuiThemeColorMode,
changeTheme: (themeValue: EuiThemeColorMode) => {},
colorMode: EUI_COLOR_MODES[0] as EuiThemeColorMode,
changeColorMode: (colorMode: EuiThemeColorMode) => {},
theme: AVAILABLE_THEMES[0]!,
changeTheme: (themeValue: string) => {},
};

export const AppThemeContext = createContext(defaultState);
Expand All @@ -24,25 +46,39 @@ export const AppThemeProvider: FunctionComponent<PropsWithChildren> = ({
children,
}) => {
const isBrowser = useIsBrowser();
const [theme, setTheme] = useState<EuiThemeColorMode>(() => {
const [colorMode, setColorMode] = useState<EuiThemeColorMode>(() => {
if (isBrowser) {
return localStorage.getItem('theme') as EuiThemeColorMode ?? defaultState.theme;
return (
(localStorage.getItem('theme') as EuiThemeColorMode) ??
defaultState.colorMode
);
}

return defaultState.theme;
return defaultState.colorMode;
});

const [theme, setTheme] = useState(defaultState.theme);

const handleChangeTheme = (themeValue: string) => {
const themeObj = AVAILABLE_THEMES.find((t) => t.value === themeValue);

setTheme((currentTheme) => themeObj ?? currentTheme);
};

return (
<AppThemeContext.Provider
value={{
colorMode,
theme,
changeTheme: setTheme,
changeColorMode: setColorMode,
changeTheme: handleChangeTheme,
}}
>
<EuiProvider
globalStyles={false}
modify={EuiThemeOverrides}
colorMode={theme}
colorMode={colorMode}
theme={theme.provider}
>
{children}
</EuiProvider>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
import { useContext, useEffect, useState } from 'react';
import { css } from '@emotion/react';
import {
EuiAvatar,
EuiButtonEmpty,
euiFocusRing,
EuiListGroup,
EuiListGroupItem,
EuiPopover,
useEuiMemoizedStyles,
useEuiTheme,
UseEuiTheme,
} from '@elastic/eui';

import { AppThemeContext, AVAILABLE_THEMES } from '../theme_context';

const getStyles = (euiThemeContext: UseEuiTheme) => {
const { euiTheme } = euiThemeContext;

return {
button: css`
padding: 0;
`,
listItem: css`
.euiListGroupItem__button:focus-visible {
// overriding the global "outset" style to ensure the focus style is not cut off
${euiFocusRing(euiThemeContext, 'inset', {
color: euiTheme.colors.primary,
})};
}
`,
};
};

export const ThemeSwitcher = () => {
const { euiTheme } = useEuiTheme();
const [currentTheme, setCurrentTheme] = useState(
AVAILABLE_THEMES[0]?.value ?? ''
);
const [isPopoverOpen, setPopoverOpen] = useState(false);
const { theme, changeTheme } = useContext(AppThemeContext);

useEffect(() => {
changeTheme(currentTheme);
}, [currentTheme]);

const styles = useEuiMemoizedStyles(getStyles);

const button = (
<EuiButtonEmpty
size="s"
color="text"
css={styles.button}
onClick={() => setPopoverOpen((isOpen) => !isOpen)}
aria-label={`${theme.text} theme`}
>
<EuiAvatar name={theme.text} size="s" color={euiTheme.colors.primary} />
</EuiButtonEmpty>
);

return (
<EuiPopover
isOpen={isPopoverOpen}
closePopover={() => setPopoverOpen(false)}
button={button}
panelPaddingSize="xs"
repositionOnScroll
aria-label="EUI theme list"
>
<EuiListGroup>
{AVAILABLE_THEMES &&
AVAILABLE_THEMES.map((theme) => {
const isCurrentTheme = currentTheme === theme.value;

const handleOnClick = () => {
setCurrentTheme(theme.value);
};

return (
<EuiListGroupItem
key={theme.value}
css={styles.listItem}
label={theme.text}
size="xs"
isActive={isCurrentTheme}
color={isCurrentTheme ? 'primary' : 'text'}
onClick={handleOnClick}
/>
);
})}
</EuiListGroup>
</EuiPopover>
);
};
12 changes: 6 additions & 6 deletions packages/docusaurus-theme/src/theme/ColorModeToggle/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,20 @@ function ColorModeToggle({
onChange,
...rest
}: WrappedProps): JSX.Element {
const { theme, changeTheme } = useContext(AppThemeContext);
const { colorMode, changeColorMode } = useContext(AppThemeContext);

useEffect(() => {
changeTheme(value);
changeColorMode(value);
}, []);

const handleOnChange = (themeName: EuiThemeColorMode) => {
changeTheme(themeName);
onChange?.(themeName);
const handleOnChange = (colorMode: EuiThemeColorMode) => {
changeColorMode(colorMode);
onChange?.(colorMode);
};

return (
<OriginalColorModeToggle
value={theme}
value={colorMode}
onChange={handleOnChange}
{...rest}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import type { Props } from '@theme-original/EditThisPage';
import { EuiButton, useEuiMemoizedStyles, UseEuiTheme } from '@elastic/eui';
// @ts-ignore - eui only has module declarations for '@elastic/eui/src/themes/amsterdam/global_styling/mixins/button'
// but importing from /src results in "Module not found" error
import { euiButtonColor } from '@elastic/eui/lib/themes/amsterdam/global_styling/mixins/button';
import { euiButtonColor } from '@elastic/eui/lib/global_styling/mixins/_button';

const getStyles = (theme: UseEuiTheme) => {
const { euiTheme } = theme;
Expand Down
4 changes: 2 additions & 2 deletions packages/docusaurus-theme/src/theme/Logo/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ function LogoThemedImage({
alt: string;
imageClassName?: string;
}) {
const { theme } = useContext(AppThemeContext);
const isDarkMode = theme === 'dark';
const { colorMode } = useContext(AppThemeContext);
const isDarkMode = colorMode === 'dark';

const styles = useEuiMemoizedStyles(getStyles);

Expand Down
Loading
Loading