diff --git a/managed/ui/src/app/stylesheets/tabs.scss b/managed/ui/src/app/stylesheets/tabs.scss index a97b32283c36..991ab1ab7dc2 100644 --- a/managed/ui/src/app/stylesheets/tabs.scss +++ b/managed/ui/src/app/stylesheets/tabs.scss @@ -8,8 +8,7 @@ > li { > a { border: 1px solid #e2e2e1; - border: none; - border-bottom: none; + border: 1px solid transparent; min-width: 80px; text-align: center; color: #555; @@ -19,7 +18,7 @@ @include transition(0.35s); &:first-child { - margin-left: -1px; + margin-left: -1px; } @media (min-width: 768px) { diff --git a/managed/ui/src/components/config/ConfigProvider/DataCenterConfiguration.js b/managed/ui/src/components/config/ConfigProvider/DataCenterConfiguration.js index 08e55b66c1f1..874e2f3c5f1a 100644 --- a/managed/ui/src/components/config/ConfigProvider/DataCenterConfiguration.js +++ b/managed/ui/src/components/config/ConfigProvider/DataCenterConfiguration.js @@ -12,15 +12,72 @@ import { import { Tab, Row, Col } from 'react-bootstrap'; import { YBTabsPanel, YBTabsWithLinksPanel } from '../../panels'; import awsLogo from './images/aws.svg'; -import azureLogo from './images/azure.png'; +import azureLogo from './images/azure.svg'; import k8sLogo from './images/k8s.png'; import openshiftLogo from './images/redhat.png'; import tanzuLogo from './images/tanzu.png'; -import gcpLogo from './images/gcp.png'; +import gcpLogo from './images/gcp.svg'; import { isAvailable, showOrRedirect } from '../../../utils/LayoutUtils'; import './DataCenterConfiguration.scss'; class DataCenterConfiguration extends Component { + + getTabTitle = (type) => { + switch(type) { + case 'AWS': + return ( +
+ AWS + Amazon Web Services +
+ ); + case 'GCP': + return ( +
+ GCP + Google Cloud Platform +
+ ); + case 'Azure': + return ( +
+ Azure + Microsoft Azure +
+ ); + case 'Tanzu': + return ( +
+ VMware Tanzu + VMware Tanzu +
+ ); + case 'Openshift': + return ( +
+ Red Hat OpenShift + Red Hat OpenShift +
+ ); + case 'K8s': + return ( +
+ Managed Kubernetes + Managed Kubernetes Service +
+ ); + case 'Onprem': + return ( +
+ + On-Premises Datacenters +
+ ); + default: + return null; + } + } + render() { const { customer: { currentCustomer }, @@ -28,47 +85,11 @@ class DataCenterConfiguration extends Component { params } = this.props; showOrRedirect(currentCustomer.data.features, 'menu.config'); - - const onPremiseTabContent = ( -
- - On-Premises -
- Datacenters -
- ); - - const openshiftTabContent = ( - - - Red Hat OpenShift - - Red Hat OpenShift - - ); - - const k8sTabContent = ( - - - Managed Kubernetes - - Managed Kubernetes Service - - ); - - const tanzuTabContent = ( - - - VMware Tanzu - - VMware Tanzu - - ); - const defaultTab = isAvailable(currentCustomer.data.features, 'config.infra') ? 'cloud' : 'backup'; const activeTab = tab || defaultTab; + return (

Cloud Provider Configuration

@@ -90,7 +111,7 @@ class DataCenterConfiguration extends Component { > } + title={this.getTabTitle('AWS')} key="aws-tab" unmountOnExit={true} > @@ -98,7 +119,7 @@ class DataCenterConfiguration extends Component { } + title={this.getTabTitle('GCP')} key="gcp-tab" unmountOnExit={true} > @@ -106,29 +127,39 @@ class DataCenterConfiguration extends Component { } + title={this.getTabTitle('Azure')} key="azure-tab" unmountOnExit={true} > - + - + diff --git a/managed/ui/src/components/config/ConfigProvider/DataCenterConfiguration.scss b/managed/ui/src/components/config/ConfigProvider/DataCenterConfiguration.scss index 56b013f669f1..985f1d569480 100644 --- a/managed/ui/src/components/config/ConfigProvider/DataCenterConfiguration.scss +++ b/managed/ui/src/components/config/ConfigProvider/DataCenterConfiguration.scss @@ -2,7 +2,7 @@ @import '../../../_style/colors.scss'; -#config-tab-panel .tab-content { +#config-tab-panel .config-tabs .tab-content { min-height: 400px; padding-top: 20px; @@ -326,22 +326,82 @@ } .config-tabs .nav-tabs { + @media screen and (max-width: 1620px) { + > li { + width: calc(100%/7); + + > a { + margin-right: 0px; + } + } + } + + @media screen and (min-width: 768px) { + > li > a { + min-width: unset; + } + } + + li:not(.active) { + img, svg { + filter: grayscale(1) brightness(1.2); + } + :before { + filter: sepia(.6); + } + } + > li > a { - min-width: 180px; - min-height: 72px; - padding-bottom: 0; + height: 52px; + padding: 0 15px; + display: flex; + align-items: center; + justify-content: center; + + .title { + justify-content: left; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + + @media screen and (max-width: 980px) { + > span { + display: none; + } + } + } + img { - height: 50px; + height: 28px; + margin-right: 5px; &.aws-logo { - height: 42px; - margin-top: 5px; + width: 32px; + } + &.gcp-logo { + width: 30px; } &.azure-logo { - height: 30px; - margin-top: 8px; + height: 24px; + object-fit: cover; + width: 33px; + object-position: left; + } + &.s3-logo { + width: 28px; + object-fit: cover; + object-position: left; } + &.encryption-transit-icon { + height: 24px; + } + } + + .tab-logo { + font-size: x-large; + vertical-align: middle; + margin-right: 5px; } h3 { @@ -355,22 +415,6 @@ } } - .on-premise { - display: inline-block; - padding-top: 10px; - font-size: 16px; - font-weight: 500; - text-align: left; - line-height: 1; - - i { - float: left; - font-size: 36px; - padding-right: 8px; - color: #679; - } - } - .custom-tab { display: flex; align-items: center; @@ -382,10 +426,6 @@ } } - > li.active > a { - min-height: 72px; - } - .kubernetes-logo { width: 140px; height: auto; diff --git a/managed/ui/src/components/config/ConfigProvider/images/azure.png b/managed/ui/src/components/config/ConfigProvider/images/azure.png deleted file mode 100644 index 8519ad3d47c0..000000000000 Binary files a/managed/ui/src/components/config/ConfigProvider/images/azure.png and /dev/null differ diff --git a/managed/ui/src/components/config/ConfigProvider/images/azure.svg b/managed/ui/src/components/config/ConfigProvider/images/azure.svg new file mode 100644 index 000000000000..cd96a7d3724a --- /dev/null +++ b/managed/ui/src/components/config/ConfigProvider/images/azure.svg @@ -0,0 +1,72 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/managed/ui/src/components/config/ConfigProvider/images/gcp.png b/managed/ui/src/components/config/ConfigProvider/images/gcp.png deleted file mode 100644 index 436f2afa6be9..000000000000 Binary files a/managed/ui/src/components/config/ConfigProvider/images/gcp.png and /dev/null differ diff --git a/managed/ui/src/components/config/ConfigProvider/images/gcp.svg b/managed/ui/src/components/config/ConfigProvider/images/gcp.svg new file mode 100644 index 000000000000..66734be8b8ae --- /dev/null +++ b/managed/ui/src/components/config/ConfigProvider/images/gcp.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/managed/ui/src/components/config/ConfigProvider/images/gke.png b/managed/ui/src/components/config/ConfigProvider/images/gke.png deleted file mode 100644 index 0e434e31a09f..000000000000 Binary files a/managed/ui/src/components/config/ConfigProvider/images/gke.png and /dev/null differ diff --git a/managed/ui/src/components/config/Security/SecurityConfiguration.js b/managed/ui/src/components/config/Security/SecurityConfiguration.js index 9128b3260e1c..5ef0a766ccc7 100644 --- a/managed/ui/src/components/config/Security/SecurityConfiguration.js +++ b/managed/ui/src/components/config/Security/SecurityConfiguration.js @@ -5,17 +5,19 @@ import { Tab } from 'react-bootstrap'; import { YBTabsPanel } from '../../panels'; import KeyManagementConfigurationContainer from './KeyManagementConfigurationContainer'; import { CertificatesContainer } from './certificates'; +import encryptionTransitIcon from './images/encryption-transit-icon.png'; +import encryptionRestIcon from './images/encryption-rest-icon.png'; const EncryptionAtRestTabHeader = ( -
- Encryption
At Rest -
+ + Encryption at Rest Encryption At Rest + ); const CertificatesTabHeader = ( -
- Encryption
In Transit -
+ + Encryption in Transit Encryption In Transit + ); const TAB_AT_REST = 'encryption-at-rest'; diff --git a/managed/ui/src/components/config/Security/images/encryption-rest-icon.png b/managed/ui/src/components/config/Security/images/encryption-rest-icon.png new file mode 100644 index 000000000000..3e36d3391950 Binary files /dev/null and b/managed/ui/src/components/config/Security/images/encryption-rest-icon.png differ diff --git a/managed/ui/src/components/config/Security/images/encryption-transit-icon.png b/managed/ui/src/components/config/Security/images/encryption-transit-icon.png new file mode 100644 index 000000000000..6aa86f57b339 Binary files /dev/null and b/managed/ui/src/components/config/Security/images/encryption-transit-icon.png differ diff --git a/managed/ui/src/components/config/Storage/StorageConfiguration.js b/managed/ui/src/components/config/Storage/StorageConfiguration.js index d679969de32d..b89a3d92010d 100644 --- a/managed/ui/src/components/config/Storage/StorageConfiguration.js +++ b/managed/ui/src/components/config/Storage/StorageConfiguration.js @@ -15,6 +15,8 @@ import YBInfoTip from '../../common/descriptors/YBInfoTip'; import awss3Logo from './images/aws-s3.png'; import azureLogo from './images/azure_logo.svg'; +import gcsLogo from './images/gcs-logo.png'; +import nfsIcon from './images/nfs.svg'; import { isNonEmptyObject, isEmptyObject, @@ -69,20 +71,20 @@ const storageConfigTypes = { const getTabTitle = (configName) => { switch (configName) { case 'S3': - return AWS S3; + return AWS S3 Amazon S3; case 'GCS': return ( -

- GCS -

+ + Google Cloud Storage Google Cloud Storage + ); case 'AZ': - return Azure; + return Azure Azure Storage; default: return ( -

- NFS -

+ + NFS Network File System + ); } }; diff --git a/managed/ui/src/components/config/Storage/images/gcs-logo.png b/managed/ui/src/components/config/Storage/images/gcs-logo.png new file mode 100644 index 000000000000..b3957dfd55ce Binary files /dev/null and b/managed/ui/src/components/config/Storage/images/gcs-logo.png differ diff --git a/managed/ui/src/components/config/Storage/images/nfs.svg b/managed/ui/src/components/config/Storage/images/nfs.svg new file mode 100644 index 000000000000..cb3d76f8a9ab --- /dev/null +++ b/managed/ui/src/components/config/Storage/images/nfs.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/managed/ui/src/components/panels/YBTabsPanel/YBTabsWithLinksPanel.js b/managed/ui/src/components/panels/YBTabsPanel/YBTabsWithLinksPanel.js index 113519cfc379..4398e3059f36 100644 --- a/managed/ui/src/components/panels/YBTabsPanel/YBTabsWithLinksPanel.js +++ b/managed/ui/src/components/panels/YBTabsPanel/YBTabsWithLinksPanel.js @@ -41,9 +41,10 @@ class YBTabsWithLinksPanel extends Component { }; render() { - const { activeTab, defaultTab } = this.props; + const { activeTab, defaultTab, children } = this.props; const activeTabKey = activeTab || this.queryTabHandler() || defaultTab; - const links = this.props.children.map((item) => ( + const childTabs = Array.isArray(children) ? children : [children]; + const links = childTabs.map((item) => ( {links} - {this.props.children} + {children}
); diff --git a/managed/ui/src/components/universes/UniverseConnectModal/UniverseConnectModal.scss b/managed/ui/src/components/universes/UniverseConnectModal/UniverseConnectModal.scss index 920a5975a29b..f4022fbe6739 100644 --- a/managed/ui/src/components/universes/UniverseConnectModal/UniverseConnectModal.scss +++ b/managed/ui/src/components/universes/UniverseConnectModal/UniverseConnectModal.scss @@ -50,7 +50,6 @@ font-size: 14px; border-radius: 0; padding: 16px 12px 20px !important; - color: $YB_ORANGE; background-color: transparent; &.active { border: none; diff --git a/managed/ui/src/pages/Administration.scss b/managed/ui/src/pages/Administration.scss index 4ad3397da2a1..520b637104f5 100644 --- a/managed/ui/src/pages/Administration.scss +++ b/managed/ui/src/pages/Administration.scss @@ -1,10 +1,7 @@ @import '../components/universes/UniverseDetail/UniverseDetail'; -#administration-main-tabs > .tab-content { - padding: 0; -} - -// re-use tabs style from universe details -#administration-ha-subtab { - @extend .universe-detail; +#administration-ha-subtab { + .tab-content { + padding-top: 20px; + } } diff --git a/managed/ui/src/pages/Administration.tsx b/managed/ui/src/pages/Administration.tsx index e8771ea291d0..42ca08e1cb3c 100644 --- a/managed/ui/src/pages/Administration.tsx +++ b/managed/ui/src/pages/Administration.tsx @@ -3,7 +3,7 @@ import { Tab } from 'react-bootstrap'; import { browserHistory } from 'react-router'; import { Selector, useSelector } from 'react-redux'; import { RouteComponentProps } from 'react-router-dom'; -import { YBTabsPanel } from '../components/panels'; +import { YBTabsPanel, YBTabsWithLinksPanel } from '../components/panels'; import { showOrRedirect } from '../utils/LayoutUtils'; import { HAInstances, HAReplication } from '../components/ha'; import './Administration.scss'; @@ -49,13 +49,14 @@ export const Administration: FC> = ({ param }, [currentCustomer, params.tab, params.section]); return ( -
+

Platform Configuration

- > = ({ param activeTab={params.section} routePrefix={`/admin/${AdministrationTabs.HA}/`} id="administration-ha-subtab" + className="config-tabs" > Replication Configuration} unmountOnExit > Instance Configuration} unmountOnExit > - +
); };