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 (
+
+
+
Amazon Web Services
+
+ );
+ case 'GCP':
+ return (
+
+
+
Google Cloud Platform
+
+ );
+ case 'Azure':
+ return (
+
+
+
Microsoft Azure
+
+ );
+ case 'Tanzu':
+ return (
+
+
+
VMware Tanzu
+
+ );
+ case 'Openshift':
+ return (
+
+
+
Red Hat OpenShift
+
+ );
+ case 'K8s':
+ return (
+
+
+
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
-
- );
-
- const k8sTabContent = (
-
-
-
-
- Managed Kubernetes Service
-
- );
-
- const tanzuTabContent = (
-
-
-
-
- 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 @@
+
+
+
+
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
+
);
const CertificatesTabHeader = (
-
- 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 ;
+ return Amazon S3;
case 'GCS':
return (
-
- GCS
-
+
+ Google Cloud Storage
+
);
case 'AZ':
- return ;
+ return Azure Storage;
default:
return (
-
- 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
>
-
+
);
};