From f560d2d54ab6b187f6088751ea0d93cae7eca0c5 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sat, 7 Dec 2024 05:56:14 +1100 Subject: [PATCH] [8.x] Preparation for High Contrast Mode, Kibana-Management domains (#202607) (#203304) # Backport This will backport the following commits from `main` to `8.x`: - [Preparation for High Contrast Mode, Kibana-Management domains (#202607)](https://github.com/elastic/kibana/pull/202607) ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) Co-authored-by: Tim Sullivan --- .../kbn-management/settings/application/index.tsx | 2 ++ .../settings/application/mocks/context.tsx | 3 +++ .../kbn-management/settings/application/services.tsx | 3 ++- .../kbn-management/settings/application/tsconfig.json | 1 + .../components/field_input/mocks/context.mock.tsx | 3 +++ .../settings/components/field_input/tsconfig.json | 1 + .../settings/components/field_row/mocks/context.tsx | 3 +++ .../settings/components/field_row/tsconfig.json | 1 + .../settings/components/form/mocks/context.tsx | 3 +++ .../settings/components/form/reload_page_toast.tsx | 11 +++++++++-- .../settings/components/form/services.tsx | 4 ++-- .../settings/components/form/tsconfig.json | 2 ++ .../kbn-management/settings/components/form/types.ts | 2 ++ .../console/public/types/plugin_dependencies.ts | 8 +++++++- src/plugins/dev_tools/public/plugin.ts | 4 ++-- src/plugins/dev_tools/public/types.ts | 8 +++++++- src/plugins/guided_onboarding/public/plugin.tsx | 2 +- .../components/management_app/management_app.tsx | 2 +- .../cross_cluster_replication/public/app/index.tsx | 2 +- .../index_management/public/application/index.tsx | 5 ++++- x-pack/plugins/index_management/public/types.ts | 2 ++ .../ingest_pipelines/public/application/index.tsx | 2 +- x-pack/plugins/painless_lab/public/plugin.tsx | 11 +---------- x-pack/plugins/painless_lab/public/types.ts | 8 +++++++- .../remote_clusters/public/application/index.d.ts | 2 +- x-pack/plugins/searchprofiler/public/plugin.ts | 3 +-- x-pack/plugins/searchprofiler/public/types.ts | 8 +++++++- .../client_integration/helpers/app_context.mock.tsx | 1 + x-pack/plugins/watcher/public/application/app.tsx | 2 ++ 29 files changed, 80 insertions(+), 29 deletions(-) diff --git a/packages/kbn-management/settings/application/index.tsx b/packages/kbn-management/settings/application/index.tsx index aac5bccdafb4d..35366a1132aed 100644 --- a/packages/kbn-management/settings/application/index.tsx +++ b/packages/kbn-management/settings/application/index.tsx @@ -27,6 +27,7 @@ export const KibanaSettingsApplication = ({ i18n, notifications, settings, + userProfile, theme, history, sectionRegistry, @@ -36,6 +37,7 @@ export const KibanaSettingsApplication = ({ { Context: ({ children }) => {children}, }; const theme = themeServiceMock.createStartContract(); + const userProfile = userProfileServiceMock.createStart(); return { analytics, i18n, theme, + userProfile, }; }; diff --git a/packages/kbn-management/settings/application/services.tsx b/packages/kbn-management/settings/application/services.tsx index 26bdc77ef3cea..6384ef0791e51 100644 --- a/packages/kbn-management/settings/application/services.tsx +++ b/packages/kbn-management/settings/application/services.tsx @@ -121,6 +121,7 @@ export const SettingsApplicationKibanaProvider: FC< const { docLinks, notifications, + userProfile, theme, i18n, settings, @@ -194,7 +195,7 @@ export const SettingsApplicationKibanaProvider: FC< return ( - + {children} diff --git a/packages/kbn-management/settings/application/tsconfig.json b/packages/kbn-management/settings/application/tsconfig.json index 182131a7e8714..3ebad4ae3d214 100644 --- a/packages/kbn-management/settings/application/tsconfig.json +++ b/packages/kbn-management/settings/application/tsconfig.json @@ -35,5 +35,6 @@ "@kbn/management-settings-section-registry", "@kbn/core-notifications-browser", "@kbn/core-chrome-browser", + "@kbn/core-user-profile-browser-mocks", ] } diff --git a/packages/kbn-management/settings/components/field_input/mocks/context.mock.tsx b/packages/kbn-management/settings/components/field_input/mocks/context.mock.tsx index 99cac7ae491bb..0e97f40195ee5 100644 --- a/packages/kbn-management/settings/components/field_input/mocks/context.mock.tsx +++ b/packages/kbn-management/settings/components/field_input/mocks/context.mock.tsx @@ -13,6 +13,7 @@ import { I18nProvider } from '@kbn/i18n-react'; import { KibanaRootContextProvider } from '@kbn/react-kibana-context-root'; import { themeServiceMock } from '@kbn/core-theme-browser-mocks'; import { analyticsServiceMock } from '@kbn/core-analytics-browser-mocks'; +import { userProfileServiceMock } from '@kbn/core-user-profile-browser-mocks'; import { I18nStart } from '@kbn/core-i18n-browser'; import { FieldInputProvider } from '../services'; @@ -20,6 +21,7 @@ import { FieldInputServices } from '../types'; const createRootMock = () => { const analytics = analyticsServiceMock.createAnalyticsServiceStart(); + const userProfile = userProfileServiceMock.createStart(); const i18n: I18nStart = { Context: ({ children }) => {children}, }; @@ -28,6 +30,7 @@ const createRootMock = () => { analytics, i18n, theme, + userProfile, }; }; diff --git a/packages/kbn-management/settings/components/field_input/tsconfig.json b/packages/kbn-management/settings/components/field_input/tsconfig.json index d971549abb2d4..d3fc7c27da7a9 100644 --- a/packages/kbn-management/settings/components/field_input/tsconfig.json +++ b/packages/kbn-management/settings/components/field_input/tsconfig.json @@ -30,5 +30,6 @@ "@kbn/core-analytics-browser-mocks", "@kbn/core-ui-settings-browser", "@kbn/code-editor", + "@kbn/core-user-profile-browser-mocks", ] } diff --git a/packages/kbn-management/settings/components/field_row/mocks/context.tsx b/packages/kbn-management/settings/components/field_row/mocks/context.tsx index ef2440a252bb7..a57b9e6d801d5 100644 --- a/packages/kbn-management/settings/components/field_row/mocks/context.tsx +++ b/packages/kbn-management/settings/components/field_row/mocks/context.tsx @@ -11,6 +11,7 @@ import React, { ReactChild } from 'react'; import { I18nProvider } from '@kbn/i18n-react'; import { KibanaRootContextProvider } from '@kbn/react-kibana-context-root'; +import { userProfileServiceMock } from '@kbn/core-user-profile-browser-mocks'; import { themeServiceMock } from '@kbn/core-theme-browser-mocks'; import { analyticsServiceMock } from '@kbn/core-analytics-browser-mocks'; import { I18nStart } from '@kbn/core-i18n-browser'; @@ -26,10 +27,12 @@ const createRootMock = () => { Context: ({ children }) => {children}, }; const theme = themeServiceMock.createStartContract(); + const userProfile = userProfileServiceMock.createStart(); return { analytics, i18n, theme, + userProfile, }; }; diff --git a/packages/kbn-management/settings/components/field_row/tsconfig.json b/packages/kbn-management/settings/components/field_row/tsconfig.json index fc77ee13c6dc8..0c1f8e31e4a59 100644 --- a/packages/kbn-management/settings/components/field_row/tsconfig.json +++ b/packages/kbn-management/settings/components/field_row/tsconfig.json @@ -30,5 +30,6 @@ "@kbn/core-theme-browser-mocks", "@kbn/core-i18n-browser", "@kbn/core-analytics-browser-mocks", + "@kbn/core-user-profile-browser-mocks", ] } diff --git a/packages/kbn-management/settings/components/form/mocks/context.tsx b/packages/kbn-management/settings/components/form/mocks/context.tsx index 20ee9b2d12aff..a55abd225f669 100644 --- a/packages/kbn-management/settings/components/form/mocks/context.tsx +++ b/packages/kbn-management/settings/components/form/mocks/context.tsx @@ -11,6 +11,7 @@ import React, { ReactChild } from 'react'; import { I18nProvider } from '@kbn/i18n-react'; import { KibanaRootContextProvider } from '@kbn/react-kibana-context-root'; +import { userProfileServiceMock } from '@kbn/core-user-profile-browser-mocks'; import { themeServiceMock } from '@kbn/core-theme-browser-mocks'; import { analyticsServiceMock } from '@kbn/core-analytics-browser-mocks'; import { I18nStart } from '@kbn/core-i18n-browser'; @@ -25,10 +26,12 @@ const createRootMock = () => { Context: ({ children }) => {children}, }; const theme = themeServiceMock.createStartContract(); + const userProfile = userProfileServiceMock.createStart(); return { analytics, i18n, theme, + userProfile, }; }; diff --git a/packages/kbn-management/settings/components/form/reload_page_toast.tsx b/packages/kbn-management/settings/components/form/reload_page_toast.tsx index a6594dc888d9c..25e22fb436adc 100644 --- a/packages/kbn-management/settings/components/form/reload_page_toast.tsx +++ b/packages/kbn-management/settings/components/form/reload_page_toast.tsx @@ -15,16 +15,23 @@ import { EuiButton, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { ToastInput } from '@kbn/core-notifications-browser'; import { I18nStart } from '@kbn/core-i18n-browser'; import { ThemeServiceStart } from '@kbn/core-theme-browser'; +import type { UserProfileService } from '@kbn/core-user-profile-browser'; export const DATA_TEST_SUBJ_PAGE_RELOAD_BUTTON = 'pageReloadButton'; +interface StartDeps { + theme: ThemeServiceStart; + i18n: I18nStart; + userProfile: UserProfileService; +} + /** * Utility function for returning a {@link ToastInput} for displaying a prompt for reloading the page. * @param theme The {@link ThemeServiceStart} contract. * @param i18nStart The {@link I18nStart} contract. * @returns A toast. */ -export const reloadPageToast = (theme: ThemeServiceStart, i18nStart: I18nStart): ToastInput => { +export const reloadPageToast = (startDeps: StartDeps): ToastInput => { return { title: i18n.translate('management.settings.form.requiresPageReloadToastDescription', { defaultMessage: 'One or more settings require you to reload the page to take effect.', @@ -43,7 +50,7 @@ export const reloadPageToast = (theme: ThemeServiceStart, i18nStart: I18nStart): , - { i18n: i18nStart, theme } + startDeps ), color: 'success', toastLifeTimeMs: 15000, diff --git a/packages/kbn-management/settings/components/form/services.tsx b/packages/kbn-management/settings/components/form/services.tsx index 49bd4ef7d6223..05d77191cbdc0 100644 --- a/packages/kbn-management/settings/components/form/services.tsx +++ b/packages/kbn-management/settings/components/form/services.tsx @@ -46,7 +46,7 @@ export const FormKibanaProvider: FC> = children, ...deps }) => { - const { settings, notifications, docLinks, theme, i18n } = deps; + const { settings, notifications, docLinks, ...startDeps } = deps; const services: Services = { saveChanges: (changes, scope: UiSettingsScope) => { @@ -57,7 +57,7 @@ export const FormKibanaProvider: FC> = return Promise.all(arr); }, showError: (message: string) => notifications.toasts.addDanger(message), - showReloadPagePrompt: () => notifications.toasts.add(reloadPageToast(theme, i18n)), + showReloadPagePrompt: () => notifications.toasts.add(reloadPageToast(startDeps)), }; return ( diff --git a/packages/kbn-management/settings/components/form/tsconfig.json b/packages/kbn-management/settings/components/form/tsconfig.json index 8fbe9249a9538..073882ccf4b48 100644 --- a/packages/kbn-management/settings/components/form/tsconfig.json +++ b/packages/kbn-management/settings/components/form/tsconfig.json @@ -34,5 +34,7 @@ "@kbn/management-settings-utilities", "@kbn/core-analytics-browser-mocks", "@kbn/core-ui-settings-common", + "@kbn/core-user-profile-browser-mocks", + "@kbn/core-user-profile-browser", ] } diff --git a/packages/kbn-management/settings/components/form/types.ts b/packages/kbn-management/settings/components/form/types.ts index 7e140823f0c23..76b5f2897540d 100644 --- a/packages/kbn-management/settings/components/form/types.ts +++ b/packages/kbn-management/settings/components/form/types.ts @@ -17,6 +17,7 @@ import { I18nStart } from '@kbn/core-i18n-browser'; import { ThemeServiceStart } from '@kbn/core-theme-browser'; import { ToastsStart } from '@kbn/core-notifications-browser'; import { UiSettingsScope } from '@kbn/core-ui-settings-common'; +import { UserProfileService } from '@kbn/core-user-profile-browser'; /** * Contextual services used by a {@link Form} component. @@ -42,6 +43,7 @@ interface KibanaDependencies { globalClient: Pick; }; theme: ThemeServiceStart; + userProfile: UserProfileService; i18n: I18nStart; /** The portion of the {@link ToastsStart} contract used by this component. */ notifications: { diff --git a/src/plugins/console/public/types/plugin_dependencies.ts b/src/plugins/console/public/types/plugin_dependencies.ts index 859bb8a1b1011..3f8d32695777f 100644 --- a/src/plugins/console/public/types/plugin_dependencies.ts +++ b/src/plugins/console/public/types/plugin_dependencies.ts @@ -8,7 +8,12 @@ */ import type { FC } from 'react'; -import type { AnalyticsServiceStart, I18nStart, ThemeServiceStart } from '@kbn/core/public'; +import type { + AnalyticsServiceStart, + I18nStart, + ThemeServiceStart, + UserProfileService, +} from '@kbn/core/public'; import { HomePublicPluginSetup, HomePublicPluginStart } from '@kbn/home-plugin/public'; import { DevToolsSetup } from '@kbn/dev-tools-plugin/public'; import { UsageCollectionSetup, UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; @@ -21,6 +26,7 @@ export interface ConsoleStartServices { analytics: Pick; i18n: I18nStart; theme: Pick; + userProfile: UserProfileService; } export interface AppSetupUIPluginDependencies { diff --git a/src/plugins/dev_tools/public/plugin.ts b/src/plugins/dev_tools/public/plugin.ts index 8984243bf04b6..9dde73d2909e0 100644 --- a/src/plugins/dev_tools/public/plugin.ts +++ b/src/plugins/dev_tools/public/plugin.ts @@ -66,8 +66,8 @@ export class DevToolsPlugin implements Plugin { const [core] = await getStartServices(); const { application, chrome, executionContext } = core; - const { analytics, i18n: i18nStart, theme } = core; - const startServices = { analytics, i18n: i18nStart, theme }; + const { analytics, i18n: i18nStart, theme, userProfile } = core; + const startServices = { analytics, i18n: i18nStart, theme, userProfile }; this.docTitleService.setup(chrome.docTitle.change); this.breadcrumbService.setup(chrome.setBreadcrumbs); diff --git a/src/plugins/dev_tools/public/types.ts b/src/plugins/dev_tools/public/types.ts index aeba759fe31ea..2f729d2a0aac5 100644 --- a/src/plugins/dev_tools/public/types.ts +++ b/src/plugins/dev_tools/public/types.ts @@ -7,7 +7,12 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { AnalyticsServiceStart, I18nStart, ThemeServiceStart } from '@kbn/core/public'; +import { + AnalyticsServiceStart, + I18nStart, + ThemeServiceStart, + UserProfileService, +} from '@kbn/core/public'; export interface ConfigSchema { deeplinks: { @@ -19,4 +24,5 @@ export interface DevToolsStartServices { analytics: Pick; i18n: I18nStart; theme: Pick; + userProfile: UserProfileService; } diff --git a/src/plugins/guided_onboarding/public/plugin.tsx b/src/plugins/guided_onboarding/public/plugin.tsx index cc6821af4ea0e..e90a357d24c19 100755 --- a/src/plugins/guided_onboarding/public/plugin.tsx +++ b/src/plugins/guided_onboarding/public/plugin.tsx @@ -80,7 +80,7 @@ export class GuidedOnboardingPlugin application, notifications, }: { - startServices: Pick; + startServices: Pick; targetDomElement: HTMLElement; api: ApiService; application: ApplicationStart; diff --git a/src/plugins/management/public/components/management_app/management_app.tsx b/src/plugins/management/public/components/management_app/management_app.tsx index 849d8f9eb0341..39e38182ddbeb 100644 --- a/src/plugins/management/public/components/management_app/management_app.tsx +++ b/src/plugins/management/public/components/management_app/management_app.tsx @@ -116,7 +116,7 @@ export const ManagementApp = ({ dependencies, history, appBasePath }: Management }; return ( - + ; +type StartServices = Pick; const AppWithExecutionContext = ({ history, diff --git a/x-pack/plugins/index_management/public/application/index.tsx b/x-pack/plugins/index_management/public/application/index.tsx index 72821d6a194ae..10079830455ee 100644 --- a/x-pack/plugins/index_management/public/application/index.tsx +++ b/x-pack/plugins/index_management/public/application/index.tsx @@ -47,8 +47,9 @@ export const IndexManagementAppContext: React.FC analytics, i18n, theme, + userProfile, } = core; - const startServices = { analytics, i18n, overlays, theme }; + const startServices = { analytics, i18n, overlays, theme, userProfile }; const { services, setBreadcrumbs, uiSettings, settings, kibanaVersion } = dependencies; // theme is required by the CodeEditor component used to edit runtime field Painless scripts. @@ -61,6 +62,7 @@ export const IndexManagementAppContext: React.FC get: () => kibanaVersion, }, theme, + userProfile, }); const componentTemplateProviderValues = { @@ -122,6 +124,7 @@ interface KibanaReactContextServices { get: () => SemVer; }; theme: CoreStart['theme']; + userProfile: CoreStart['userProfile']; } // We override useKibana() from the react plugin to return a typed version for this app diff --git a/x-pack/plugins/index_management/public/types.ts b/x-pack/plugins/index_management/public/types.ts index c470398c31957..0432feffdf00d 100644 --- a/x-pack/plugins/index_management/public/types.ts +++ b/x-pack/plugins/index_management/public/types.ts @@ -10,6 +10,7 @@ import { I18nStart, OverlayStart, ThemeServiceStart, + UserProfileService, } from '@kbn/core/public'; import { CloudSetup } from '@kbn/cloud-plugin/public'; import { ConsolePluginStart } from '@kbn/console-plugin/public'; @@ -24,6 +25,7 @@ export interface IndexManagementStartServices { i18n: I18nStart; overlays: OverlayStart; theme: Pick; + userProfile: UserProfileService; } export interface SetupDependencies { diff --git a/x-pack/plugins/ingest_pipelines/public/application/index.tsx b/x-pack/plugins/ingest_pipelines/public/application/index.tsx index 9bc3ba7fe27ad..da54113331e68 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/index.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/index.tsx @@ -53,7 +53,7 @@ export interface AppServices { config: Config; } -type StartServices = Pick; +type StartServices = Pick; export interface CoreServices extends StartServices { http: HttpSetup; diff --git a/x-pack/plugins/painless_lab/public/plugin.tsx b/x-pack/plugins/painless_lab/public/plugin.tsx index 02ff77d5a862d..2579bbe1068cf 100644 --- a/x-pack/plugins/painless_lab/public/plugin.tsx +++ b/x-pack/plugins/painless_lab/public/plugin.tsx @@ -51,16 +51,7 @@ export class PainlessLabUIPlugin implements Plugin { const [core] = await getStartServices(); - const { - notifications, - docLinks, - chrome, - settings, - analytics, - i18n: i18nStart, - theme, - } = core; - const startServices = { analytics, i18n: i18nStart, theme }; + const { notifications, docLinks, chrome, settings, ...startServices } = core; const license = await firstValueFrom(licensing.license$); const licenseStatus = checkLicenseStatus(license); diff --git a/x-pack/plugins/painless_lab/public/types.ts b/x-pack/plugins/painless_lab/public/types.ts index 693488860aff0..f870f2aedbfc8 100644 --- a/x-pack/plugins/painless_lab/public/types.ts +++ b/x-pack/plugins/painless_lab/public/types.ts @@ -8,7 +8,12 @@ import { HomePublicPluginSetup } from '@kbn/home-plugin/public'; import { DevToolsSetup } from '@kbn/dev-tools-plugin/public'; import { LicensingPluginSetup } from '@kbn/licensing-plugin/public'; -import { AnalyticsServiceStart, I18nStart, ThemeServiceStart } from '@kbn/core/public'; +import { + AnalyticsServiceStart, + I18nStart, + ThemeServiceStart, + UserProfileService, +} from '@kbn/core/public'; export interface PluginDependencies { licensing: LicensingPluginSetup; @@ -20,4 +25,5 @@ export interface PainlessLabStartServices { analytics: Pick; i18n: I18nStart; theme: Pick; + userProfile: UserProfileService; } diff --git a/x-pack/plugins/remote_clusters/public/application/index.d.ts b/x-pack/plugins/remote_clusters/public/application/index.d.ts index 182cf0ea1b71d..38da9bad7ea46 100644 --- a/x-pack/plugins/remote_clusters/public/application/index.d.ts +++ b/x-pack/plugins/remote_clusters/public/application/index.d.ts @@ -17,5 +17,5 @@ export declare const renderApp: ( canUseAPIKeyTrustModel: boolean; }, history: ScopedHistory, - startServices: Pick + startServices: Pick ) => ReturnType; diff --git a/x-pack/plugins/searchprofiler/public/plugin.ts b/x-pack/plugins/searchprofiler/public/plugin.ts index 4d8cecaf31381..a1357add7e62f 100644 --- a/x-pack/plugins/searchprofiler/public/plugin.ts +++ b/x-pack/plugins/searchprofiler/public/plugin.ts @@ -47,8 +47,7 @@ export class SearchProfilerUIPlugin implements Plugin { const [coreStart] = await getStartServices(); - const { notifications, analytics, i18n: i18nStart, theme } = coreStart; - const startServices = { analytics, i18n: i18nStart, theme }; + const { notifications, ...startServices } = coreStart; const { renderApp } = await import('./application'); diff --git a/x-pack/plugins/searchprofiler/public/types.ts b/x-pack/plugins/searchprofiler/public/types.ts index bea00be58bacc..788b2a8693e53 100644 --- a/x-pack/plugins/searchprofiler/public/types.ts +++ b/x-pack/plugins/searchprofiler/public/types.ts @@ -9,12 +9,18 @@ import { HomePublicPluginSetup } from '@kbn/home-plugin/public'; import { DevToolsSetup } from '@kbn/dev-tools-plugin/public'; import { SharePluginSetup } from '@kbn/share-plugin/public'; import { LicensingPluginSetup } from '@kbn/licensing-plugin/public'; -import { AnalyticsServiceStart, I18nStart, ThemeServiceStart } from '@kbn/core/public'; +import { + AnalyticsServiceStart, + I18nStart, + ThemeServiceStart, + UserProfileService, +} from '@kbn/core/public'; export interface SearchProfilerStartServices { analytics: Pick; i18n: I18nStart; theme: Pick; + userProfile: UserProfileService; } export interface AppPublicPluginDependencies { diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/app_context.mock.tsx b/x-pack/plugins/watcher/__jest__/client_integration/helpers/app_context.mock.tsx index 8b8c19b855bfa..0b216332888ea 100644 --- a/x-pack/plugins/watcher/__jest__/client_integration/helpers/app_context.mock.tsx +++ b/x-pack/plugins/watcher/__jest__/client_integration/helpers/app_context.mock.tsx @@ -48,6 +48,7 @@ export const mockContextValue: AppDeps = { toasts: notificationServiceMock.createSetupContract().toasts, i18n: coreStart.i18n, theme: coreStart.theme, + userProfile: coreStart.userProfile, chartsTheme: { useChartsBaseTheme: jest.fn(), } as any, diff --git a/x-pack/plugins/watcher/public/application/app.tsx b/x-pack/plugins/watcher/public/application/app.tsx index 8156fb9a1ca29..a5e9596b2044d 100644 --- a/x-pack/plugins/watcher/public/application/app.tsx +++ b/x-pack/plugins/watcher/public/application/app.tsx @@ -16,6 +16,7 @@ import { ExecutionContextStart, ThemeServiceStart, I18nStart, + UserProfileService, } from '@kbn/core/public'; import type { SettingsStart } from '@kbn/core-ui-settings-browser'; @@ -44,6 +45,7 @@ export interface AppDeps { uiSettings: IUiSettingsClient; i18n: I18nStart; theme: ThemeServiceStart; + userProfile: UserProfileService; chartsTheme: ChartsPluginSetup['theme']; createTimeBuckets: () => any; licenseStatus$: Observable;