diff --git a/app/package-lock.json b/app/package-lock.json index 53e509d828..a33c272d40 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -12,6 +12,7 @@ "@formatjs/intl-pluralrules": "1.3.9", "@formatjs/intl-relativetimeformat": "4.5.1", "@formatjs/intl-utils": "1.6.0", + "@reportportal/ui-kit": "^0.0.1-alpha.8", "axios": "1.6.4", "c3": "0.7.20", "chart.js": "2.9.4", @@ -2251,6 +2252,40 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@floating-ui/core": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.1.tgz", + "integrity": "sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==", + "dependencies": { + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.4.tgz", + "integrity": "sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==", + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.9.tgz", + "integrity": "sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", + "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==" + }, "node_modules/@formatjs/ecma402-abstract": { "version": "1.11.4", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", @@ -3478,6 +3513,73 @@ "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-4.0.2.tgz", "integrity": "sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==" }, + "node_modules/@reportportal/ui-kit": { + "version": "0.0.1-alpha.8", + "resolved": "https://registry.npmjs.org/@reportportal/ui-kit/-/ui-kit-0.0.1-alpha.8.tgz", + "integrity": "sha512-LxxQzseIcrIpEZ0Ip7eDcBvNbZModPOihWSIlBSdS2ni8thu42SL56ENvYKZTpXomcM9pkTVMuMwxVETOVpoyA==", + "dependencies": { + "@floating-ui/react-dom": "^2.0.1", + "classnames": "^2.3.2", + "downshift": "^6.1.12", + "framer-motion": "^10.15.2", + "rc-scrollbars": "^1.1.6" + }, + "engines": { + "node": ">=16.x" + }, + "peerDependencies": { + "react": "17.x-18.x", + "react-dom": "17.x-18.x" + } + }, + "node_modules/@reportportal/ui-kit/node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, + "node_modules/@reportportal/ui-kit/node_modules/downshift": { + "version": "6.1.12", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.12.tgz", + "integrity": "sha512-7XB/iaSJVS4T8wGFT3WRXmSF1UlBHAA40DshZtkrIscIN+VC+Lh363skLxFTvJwtNgHxAMDGEHT4xsyQFWL+UA==", + "dependencies": { + "@babel/runtime": "^7.14.8", + "compute-scroll-into-view": "^1.0.17", + "prop-types": "^15.7.2", + "react-is": "^17.0.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "react": ">=16.12.0" + } + }, + "node_modules/@reportportal/ui-kit/node_modules/framer-motion": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.18.0.tgz", + "integrity": "sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==", + "dependencies": { + "tslib": "^2.4.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@reportportal/ui-kit/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, "node_modules/@samverschueren/stream-to-observable": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", @@ -21518,6 +21620,19 @@ "rc": "cli.js" } }, + "node_modules/rc-scrollbars": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/rc-scrollbars/-/rc-scrollbars-1.1.6.tgz", + "integrity": "sha512-Tr/7dE7JUR4t2Zx50egsC0qLBXsUxez7NK97V3/0BLyNIdZXTy9eEA9Dk7SybZvTgK4VLZbyNlteIvMmesRT1A==", + "dependencies": { + "dom-css": "^2.1.0", + "raf": "^3.4.1" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/rc-slider": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.1.1.tgz", diff --git a/app/package.json b/app/package.json index 143f7e8c7b..80ef900d91 100644 --- a/app/package.json +++ b/app/package.json @@ -25,6 +25,7 @@ "@formatjs/intl-pluralrules": "1.3.9", "@formatjs/intl-relativetimeformat": "4.5.1", "@formatjs/intl-utils": "1.6.0", + "@reportportal/ui-kit": "^0.0.1-alpha.8", "axios": "1.6.4", "c3": "0.7.20", "chart.js": "2.9.4", @@ -103,10 +104,10 @@ "@babel/polyfill": "7.12.1", "@babel/preset-env": "7.23.3", "@babel/preset-react": "7.23.3", + "@cfaester/enzyme-adapter-react-18": "0.7.1", "@pmmmwh/react-refresh-webpack-plugin": "0.5.10", "@sowtame/webpack-subresource-integrity": "2.0.0", "@types/jest": "24.9.0", - "@cfaester/enzyme-adapter-react-18": "0.7.1", "axios-mock-adapter": "1.17.0", "babel-eslint": "10.0.3", "babel-loader": "8.2.3", diff --git a/app/src/componentLibrary/autocompletes/common/autocompleteOptions.jsx b/app/src/componentLibrary/autocompletes/common/autocompleteOptions.jsx index e377c282d7..1a80c266d4 100644 --- a/app/src/componentLibrary/autocompletes/common/autocompleteOptions.jsx +++ b/app/src/componentLibrary/autocompletes/common/autocompleteOptions.jsx @@ -18,7 +18,7 @@ import { Component } from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames/bind'; import { ScrollWrapper } from 'components/main/scrollWrapper'; -import { BubblesPreloader } from 'components/preloaders/bubblesPreloader'; +import { BubblesLoader } from '@reportportal/ui-kit'; import { autocompleteVariantType, singleAutocompleteOptionVariantType } from './propTypes'; import { AutocompletePrompt } from './autocompletePrompt'; import { AutocompleteOption } from './autocompleteOption'; @@ -71,7 +71,7 @@ export class AutocompleteOptions extends Component { return ( <> - + {!createWithoutConfirmation && this.renderNewItem(options)} diff --git a/app/src/componentLibrary/plainTable/plainTable.jsx b/app/src/componentLibrary/plainTable/plainTable.jsx index 3a212f65a5..53748e6f3d 100644 --- a/app/src/componentLibrary/plainTable/plainTable.jsx +++ b/app/src/componentLibrary/plainTable/plainTable.jsx @@ -16,7 +16,7 @@ import PropTypes from 'prop-types'; import classNames from 'classnames/bind'; -import { BubblesPreloader } from 'components/preloaders/bubblesPreloader'; +import { BubblesLoader } from '@reportportal/ui-kit'; import { PlainTableHeader } from './plainTableHeader'; import { columnPropTypes } from './propTypes'; import { PlainTableBody } from './plainTableBody'; @@ -26,7 +26,7 @@ const cx = classNames.bind(styles); export const PlainTable = ({ columns, data, actions, isLoading }) => isLoading ? ( - + ) : (
diff --git a/app/src/components/extensionLoader/extensionLoader.jsx b/app/src/components/extensionLoader/extensionLoader.jsx index fb470acd62..a146d7745b 100644 --- a/app/src/components/extensionLoader/extensionLoader.jsx +++ b/app/src/components/extensionLoader/extensionLoader.jsx @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { ErrorBoundary } from 'components/containers/errorBoundary'; -import { BubblesPreloader } from 'components/preloaders/bubblesPreloader'; +import { BubblesLoader } from '@reportportal/ui-kit'; import { createImportProps } from 'controllers/plugins/uiExtensions/createImportProps'; import { ExtensionError } from './extensionError'; import { extensionType } from './extensionTypes'; @@ -22,7 +22,7 @@ function ExtensionLoader({ extension, withPreloader, ...componentProps }) { const extensionImportProps = createImportProps(pluginName); return ( - : null}> + : null}> {Component ? : null} ); diff --git a/app/src/components/integrations/elements/bts/btsPropertiesForIssueForm/btsPropertiesForIssueForm.jsx b/app/src/components/integrations/elements/bts/btsPropertiesForIssueForm/btsPropertiesForIssueForm.jsx index 70d9a7448f..c16710628d 100644 --- a/app/src/components/integrations/elements/bts/btsPropertiesForIssueForm/btsPropertiesForIssueForm.jsx +++ b/app/src/components/integrations/elements/bts/btsPropertiesForIssueForm/btsPropertiesForIssueForm.jsx @@ -21,7 +21,7 @@ import { defineMessages, injectIntl } from 'react-intl'; import track from 'react-tracking'; import classNames from 'classnames/bind'; import { fetch } from 'common/utils'; -import { BubblesPreloader } from 'components/preloaders/bubblesPreloader'; +import { BubblesLoader } from '@reportportal/ui-kit'; import { projectIdSelector } from 'controllers/pages'; import { projectInfoSelector } from 'controllers/project'; import { showNotification, NOTIFICATION_TYPES } from 'controllers/notification'; @@ -414,7 +414,7 @@ export class BtsPropertiesForIssueForm extends Component { return (
{loading && !this.state.issueType ? ( - + ) : ( {!disabled && ( @@ -451,7 +451,7 @@ export class BtsPropertiesForIssueForm extends Component { )} {loading ? ( - + ) : ( { return (
{loading ? ( - + ) : ( <> ( -
- {Array(bubblesCount) - .fill(null) - .map((item, index) => ( - // eslint-disable-next-line react/no-array-index-key -
- ))} -
-); -BubblesPreloader.propTypes = { - color: PropTypes.string, - bubblesCount: PropTypes.number, - customClassName: PropTypes.string, -}; -BubblesPreloader.defaultProps = { - color: '#1a9cb0', - bubblesCount: 7, - customClassName: '', -}; diff --git a/app/src/components/preloaders/bubblesPreloader/bubblesPreloader.scss b/app/src/components/preloaders/bubblesPreloader/bubblesPreloader.scss deleted file mode 100644 index b2e358951d..0000000000 --- a/app/src/components/preloaders/bubblesPreloader/bubblesPreloader.scss +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2021 EPAM Systems - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -.bubbles-preloader { - position: relative; -} - -.bubble { - position: absolute; - width: 6px; - height: 6px; - border-radius: 50%; - background: $COLOR--white-two; - transform: scale(0.3); - animation: bubbles 2.5s infinite linear; -} - -.bubble:nth-child(1) { - left: 0; - animation-delay: 0.1s; -} - -.bubble:nth-child(2) { - left: 7px; - animation-delay: 0.3s; -} - -.bubble:nth-child(3) { - left: 14px; - animation-delay: 0.5s; -} - -.bubble:nth-child(4) { - left: 21px; - animation-delay: 0.7s; -} - -.bubble:nth-child(5) { - left: 28px; - animation-delay: 0.9s; -} - -.bubble:nth-child(6) { - left: 35px; - animation-delay: 1.1s; -} - -.bubble:nth-child(7) { - left: 42px; - animation-delay: 1.3s; -} - -@keyframes bubbles { - 20%, - 60% { - transform: scale(0.5); - } - 40% { - transform: scale(1); - } -} diff --git a/app/src/components/preloaders/bubblesPreloader/index.js b/app/src/components/preloaders/bubblesPreloader/index.js deleted file mode 100644 index f0c597a8f4..0000000000 --- a/app/src/components/preloaders/bubblesPreloader/index.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2021 EPAM Systems - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { BubblesPreloader } from './bubblesPreloader'; diff --git a/app/src/controllers/plugins/uiExtensions/createImportProps.js b/app/src/controllers/plugins/uiExtensions/createImportProps.js index b744a2a1f1..57532f9267 100644 --- a/app/src/controllers/plugins/uiExtensions/createImportProps.js +++ b/app/src/controllers/plugins/uiExtensions/createImportProps.js @@ -106,7 +106,7 @@ import { } from 'controllers/notification'; import { SpinningPreloader } from 'components/preloaders/spinningPreloader'; import { DottedPreloader } from 'components/preloaders/dottedPreloader'; -import { BubblesPreloader } from 'components/preloaders/bubblesPreloader'; +import { BubblesLoader } from '@reportportal/ui-kit'; import { FieldProvider } from 'components/fields/fieldProvider'; import { FieldErrorHint } from 'components/fields/fieldErrorHint'; import { SimpleBreadcrumbs } from 'components/main/simpleBreadcrumbs'; @@ -296,7 +296,7 @@ export const createImportProps = (pluginName) => ({ AttributeListFormField, Breadcrumbs, PlainTable, - BubblesPreloader, + BubblesLoader, }, componentLibrary: { DraggableRuleList }, HOCs: { diff --git a/app/src/index.jsx b/app/src/index.jsx index 847e728086..20d9cd3f5a 100644 --- a/app/src/index.jsx +++ b/app/src/index.jsx @@ -27,6 +27,7 @@ import 'reset-css/reset.css'; import 'common/css/fonts/fonts.scss'; import 'common/css/common.scss'; import 'c3/c3.css'; +import '@reportportal/ui-kit/dist/style.css'; import { initPluginRegistration } from 'controllers/plugins/uiExtensions/registerPlugin'; diff --git a/app/src/pages/inside/profilePage/modals/loaderBlock/loaderBlock.jsx b/app/src/pages/inside/profilePage/modals/loaderBlock/loaderBlock.jsx index 1dc3ad8476..cdede6dbf9 100644 --- a/app/src/pages/inside/profilePage/modals/loaderBlock/loaderBlock.jsx +++ b/app/src/pages/inside/profilePage/modals/loaderBlock/loaderBlock.jsx @@ -16,7 +16,7 @@ import React from 'react'; import classNames from 'classnames/bind'; -import { BubblesPreloader } from 'components/preloaders/bubblesPreloader'; +import { BubblesLoader } from '@reportportal/ui-kit'; import PropTypes from 'prop-types'; import styles from './loaderBlock.scss'; @@ -26,7 +26,7 @@ export const LoaderBlock = ({ text, className }) => { return (
- +
{text}
diff --git a/app/src/pages/inside/projectSettingsPageContainer/content/elements/labeledPreloader/labeledPreloader.jsx b/app/src/pages/inside/projectSettingsPageContainer/content/elements/labeledPreloader/labeledPreloader.jsx index ccc865e3c6..d24b358aa8 100644 --- a/app/src/pages/inside/projectSettingsPageContainer/content/elements/labeledPreloader/labeledPreloader.jsx +++ b/app/src/pages/inside/projectSettingsPageContainer/content/elements/labeledPreloader/labeledPreloader.jsx @@ -17,14 +17,14 @@ import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames/bind'; -import { BubblesPreloader } from 'components/preloaders/bubblesPreloader'; +import { BubblesLoader } from '@reportportal/ui-kit'; import styles from './labeledPreloader.scss'; const cx = classNames.bind(styles); export const LabeledPreloader = ({ text }) => ( - + {text} ); diff --git a/app/src/pages/inside/projectSettingsPageContainer/content/integrations/integrations.jsx b/app/src/pages/inside/projectSettingsPageContainer/content/integrations/integrations.jsx index f4477e663e..df203f1523 100644 --- a/app/src/pages/inside/projectSettingsPageContainer/content/integrations/integrations.jsx +++ b/app/src/pages/inside/projectSettingsPageContainer/content/integrations/integrations.jsx @@ -22,7 +22,7 @@ import { pluginsLoadingSelector, availablePluginsSelector, } from 'controllers/plugins'; -import { BubblesPreloader } from 'components/preloaders/bubblesPreloader'; +import { BubblesLoader } from '@reportportal/ui-kit'; import { updatePagePropertiesAction, PROJECT_SETTINGS_TAB_PAGE, @@ -64,7 +64,7 @@ export const Integrations = () => { }, [query, plugins]); if (loading) { - return ; + return ; } const onItemClick = (pluginData) => { dispatch( diff --git a/app/src/pages/inside/projectSettingsPageContainer/generalTab/generalTab.jsx b/app/src/pages/inside/projectSettingsPageContainer/generalTab/generalTab.jsx index dffec11970..0a6a3b5fc3 100644 --- a/app/src/pages/inside/projectSettingsPageContainer/generalTab/generalTab.jsx +++ b/app/src/pages/inside/projectSettingsPageContainer/generalTab/generalTab.jsx @@ -41,7 +41,7 @@ import { projectIdSelector } from 'controllers/pages'; import { showNotification, NOTIFICATION_TYPES } from 'controllers/notification'; import { langSelector } from 'controllers/lang'; import { SpinningPreloader } from 'components/preloaders/spinningPreloader'; -import { BubblesPreloader } from 'components/preloaders/bubblesPreloader'; +import { BubblesLoader } from '@reportportal/ui-kit'; import { Button } from 'componentLibrary/button'; import { Dropdown } from 'componentLibrary/dropdown'; import { PROJECT_SETTINGS_GENERAL_TAB_EVENTS } from 'analyticsEvents/projectSettingsPageEvents'; @@ -431,7 +431,7 @@ export class GeneralTab extends Component { {processingData && (
- + {this.props.intl.formatMessage(COMMON_LOCALE_KEYS.processData)} diff --git a/app/src/pages/inside/stepPage/modals/makeDecisionModal/makeDecisionTabs/makeDecisionTabs.jsx b/app/src/pages/inside/stepPage/modals/makeDecisionModal/makeDecisionTabs/makeDecisionTabs.jsx index 7a240c8913..289cc4f68c 100644 --- a/app/src/pages/inside/stepPage/modals/makeDecisionModal/makeDecisionTabs/makeDecisionTabs.jsx +++ b/app/src/pages/inside/stepPage/modals/makeDecisionModal/makeDecisionTabs/makeDecisionTabs.jsx @@ -18,7 +18,7 @@ import PropTypes from 'prop-types'; import classNames from 'classnames/bind'; import { useState } from 'react'; import { useIntl } from 'react-intl'; -import { BubblesPreloader } from 'components/preloaders/bubblesPreloader'; +import { BubblesLoader } from '@reportportal/ui-kit'; import Parser from 'html-react-parser'; import ExternalLinkIcon from 'common/img/go-to-another-page-inline.svg'; import { @@ -111,7 +111,7 @@ export const MakeDecisionTabs = ({ {loadingMLSuggest && (
- +

{formatMessage(messages.analyzingSuggestions)}

diff --git a/app/src/pages/inside/uniqueErrorsPage/emptyUniqueErrors/emptyUniqueErrors.jsx b/app/src/pages/inside/uniqueErrorsPage/emptyUniqueErrors/emptyUniqueErrors.jsx index 1a3ca01f9c..ded995746e 100644 --- a/app/src/pages/inside/uniqueErrorsPage/emptyUniqueErrors/emptyUniqueErrors.jsx +++ b/app/src/pages/inside/uniqueErrorsPage/emptyUniqueErrors/emptyUniqueErrors.jsx @@ -28,7 +28,7 @@ import { loadingSelector } from 'controllers/uniqueErrors'; import { fetchParentLaunchSuccessAction } from 'controllers/testItem/actionCreators'; import { GhostButton } from 'components/buttons/ghostButton'; import { SpinningPreloader } from 'components/preloaders/spinningPreloader'; -import { BubblesPreloader } from 'components/preloaders/bubblesPreloader'; +import { BubblesLoader } from '@reportportal/ui-kit'; import { RP_CLUSTER_LAST_RUN } from '../constants'; import { messages } from '../messages'; import styles from './emptyUniqueErrors.scss'; @@ -92,7 +92,7 @@ export class EmptyUniqueErrors extends Component { return ( <>
- +

{formatMessage(messages.inProgressAnalysisText)} diff --git a/app/src/routes/pageSwitcher.jsx b/app/src/routes/pageSwitcher.jsx index a8b271282f..9c8875d2bd 100644 --- a/app/src/routes/pageSwitcher.jsx +++ b/app/src/routes/pageSwitcher.jsx @@ -19,6 +19,7 @@ import { connect } from 'react-redux'; import { PropTypes } from 'prop-types'; import { HTML5Backend } from 'react-dnd-html5-backend'; import { DndProvider } from 'react-dnd'; +import { ThemeProvider } from '@reportportal/ui-kit'; import { ModalContainer } from 'components/main/modal'; import { pageNames } from 'controllers/pages/constants'; import { pageSelector, isInitialDispatchDoneSelector } from 'controllers/pages'; @@ -64,17 +65,19 @@ export default class PageSwitcher extends React.Component { return (

- - {mode === 'development' && } - - - - - - - - - + + + {mode === 'development' && } + + + + + + + + + +
); }