Explorar el Código

move ingress IP to cluster settings

Justin Rhee hace 3 años
padre
commit
9ceb896f22

+ 4 - 3
dashboard/src/components/TitleSection.tsx

@@ -65,20 +65,21 @@ const StyledTitleSection = styled.div`
   margin-bottom: 15px;
   margin-bottom: 15px;
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
+  height: 35px;
 `;
 `;
 
 
 const Icon = styled.img<{ width: string }>`
 const Icon = styled.img<{ width: string }>`
-  width: ${(props) => props.width || "28px"};
+  width: ${(props) => props.width || "25px"};
   margin-right: 16px;
   margin-right: 16px;
 `;
 `;
 
 
 const MaterialIcon = styled.span<{ width: string }>`
 const MaterialIcon = styled.span<{ width: string }>`
-  width: ${(props) => props.width || "28px"};
+  width: ${(props) => props.width || "25px"};
   margin-right: 16px;
   margin-right: 16px;
 `;
 `;
 
 
 const StyledTitle = styled.div<{ capitalize: boolean }>`
 const StyledTitle = styled.div<{ capitalize: boolean }>`
-  font-size: 24px;
+  font-size: 21px;
   font-weight: 600;
   font-weight: 600;
   user-select: text;
   user-select: text;
   text-transform: ${(props) => (props.capitalize ? "capitalize" : "")};
   text-transform: ${(props) => (props.capitalize ? "capitalize" : "")};

+ 2 - 2
dashboard/src/main/home/Home.tsx

@@ -529,7 +529,7 @@ export default withRouter(withAuth(Home));
 const ViewWrapper = styled.div`
 const ViewWrapper = styled.div`
   height: 100%;
   height: 100%;
   width: 100vw;
   width: 100vw;
-  padding-top: 10vh;
+  padding: 45px;
   overflow-y: auto;
   overflow-y: auto;
   display: flex;
   display: flex;
   flex: 1;
   flex: 1;
@@ -539,7 +539,7 @@ const ViewWrapper = styled.div`
 `;
 `;
 
 
 const DashboardWrapper = styled.div`
 const DashboardWrapper = styled.div`
-  width: calc(85%);
+  width: 100%;
   min-width: 300px;
   min-width: 300px;
   height: fit-content;
   height: fit-content;
 `;
 `;

+ 5 - 5
dashboard/src/main/home/cluster-dashboard/DashboardHeader.tsx

@@ -55,8 +55,9 @@ const Br = styled.div`
 
 
 const LineBreak = styled.div`
 const LineBreak = styled.div`
   width: calc(100% - 0px);
   width: calc(100% - 0px);
-  height: 2px;
-  background: #ffffff20;
+  height: 1px;
+  background: #494b4f;
+  width: 100%;
   margin: 10px 0px 35px;
   margin: 10px 0px 35px;
 `;
 `;
 
 
@@ -66,11 +67,10 @@ const TopRow = styled.div`
 `;
 `;
 
 
 const Description = styled.div`
 const Description = styled.div`
-  color: #aaaabb;
+  color: #8b949f;
   margin-top: 13px;
   margin-top: 13px;
   margin-left: 2px;
   margin-left: 2px;
   font-size: 13px;
   font-size: 13px;
-  line-height: 1.5em;
 `;
 `;
 
 
 const InfoLabel = styled.div`
 const InfoLabel = styled.div`
@@ -78,7 +78,7 @@ const InfoLabel = styled.div`
   height: 20px;
   height: 20px;
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
-  color: #7a838f;
+  color: #8b949f;
   font-size: 13px;
   font-size: 13px;
   > i {
   > i {
     color: #8b949f;
     color: #8b949f;

+ 105 - 7
dashboard/src/main/home/cluster-dashboard/dashboard/Dashboard.tsx

@@ -4,6 +4,7 @@ import styled from "styled-components";
 import { Context } from "shared/Context";
 import { Context } from "shared/Context";
 import TabSelector from "components/TabSelector";
 import TabSelector from "components/TabSelector";
 import TitleSection from "components/TitleSection";
 import TitleSection from "components/TitleSection";
+import api from "shared/api";
 
 
 import NodeList from "./NodeList";
 import NodeList from "./NodeList";
 
 
@@ -15,6 +16,11 @@ import { useLocation } from "react-router";
 import { getQueryParam } from "shared/routing";
 import { getQueryParam } from "shared/routing";
 import IncidentsTab from "./incidents/IncidentsTab";
 import IncidentsTab from "./incidents/IncidentsTab";
 
 
+import CopyToClipboard from "components/CopyToClipboard";
+import Loading from "components/Loading";
+
+import { DetailedIngressError } from "shared/types";
+
 type TabEnum = "nodes" | "settings" | "namespaces" | "metrics" | "incidents";
 type TabEnum = "nodes" | "settings" | "namespaces" | "metrics" | "incidents";
 
 
 const tabOptions: {
 const tabOptions: {
@@ -35,6 +41,8 @@ export const Dashboard: React.FunctionComponent = () => {
   const [currentTabOptions, setCurrentTabOptions] = useState(tabOptions);
   const [currentTabOptions, setCurrentTabOptions] = useState(tabOptions);
   const [isAuthorized] = useAuth();
   const [isAuthorized] = useAuth();
   const location = useLocation();
   const location = useLocation();
+  const [ingressIp, setIngressIp] = useState(null);
+  const [ingressError, setIngressError] = useState(null);
 
 
   const context = useContext(Context);
   const context = useContext(Context);
   const renderTab = () => {
   const renderTab = () => {
@@ -76,6 +84,68 @@ export const Dashboard: React.FunctionComponent = () => {
     setCurrentTab("nodes");
     setCurrentTab("nodes");
   }, [context.currentCluster]);
   }, [context.currentCluster]);
 
 
+  const renderIngressIp = (
+    ingressIp: string | undefined,
+    ingressError: DetailedIngressError
+  ) => {
+    if (typeof ingressIp !== "string") {
+      return (
+        <Url onClick={(e) => e.preventDefault()}>
+          <Loading />
+        </Url>
+      );
+    }
+
+    if (!ingressIp.length && ingressError) {
+      return (
+        <>
+          <Bolded>Ingress IP:</Bolded>
+          <span>{ingressError.message}</span>
+        </>
+      );
+    }
+
+    if (!ingressIp.length) {
+      return (
+        <>
+          <Bolded>Ingress IP:</Bolded>
+          <span>Ingress IP not available</span>
+        </>
+      );
+    }
+
+    return (
+      <CopyToClipboard
+        as={Url}
+        text={ingressIp}
+        wrapperProps={{ onClick: (e: any) => e.stopPropagation() }}
+      >
+        <Bolded>Ingress IP:</Bolded>
+        <span>{ingressIp}</span>
+        <i className="material-icons-outlined">content_copy</i>
+      </CopyToClipboard>
+    );
+  };
+
+  const updateClusterWithDetailedData = async () => {
+    try {
+      const res = await api.getCluster(
+        "<token>",
+        {},
+        { project_id: context.currentProject.id, cluster_id: context.currentCluster.id }
+      );
+      if (res.data) {
+        const { ingress_ip, ingress_error } = res.data;
+        setIngressIp(ingress_ip);
+        setIngressError(ingress_error);
+      }
+    } catch (error) {}
+  };
+
+  useEffect(() => {
+    updateClusterWithDetailedData();
+  }, []);
+
   return (
   return (
     <>
     <>
       <TitleSection>
       <TitleSection>
@@ -92,7 +162,10 @@ export const Dashboard: React.FunctionComponent = () => {
           </InfoLabel>
           </InfoLabel>
         </TopRow>
         </TopRow>
         <Description>
         <Description>
-          Cluster settings for {context.currentCluster.name}
+          {renderIngressIp(
+            ingressIp,
+            ingressError
+          )}
         </Description>
         </Description>
       </InfoSection>
       </InfoSection>
 
 
@@ -108,9 +181,9 @@ export const Dashboard: React.FunctionComponent = () => {
 };
 };
 
 
 const DashboardIcon = styled.div`
 const DashboardIcon = styled.div`
-  height: 45px;
-  min-width: 45px;
-  width: 45px;
+  height: 35px;
+  min-width: 35px;
+  width: 35px;
   border-radius: 5px;
   border-radius: 5px;
   margin-right: 17px;
   margin-right: 17px;
   display: flex;
   display: flex;
@@ -119,7 +192,7 @@ const DashboardIcon = styled.div`
   background: #676c7c;
   background: #676c7c;
   border: 2px solid #8e94aa;
   border: 2px solid #8e94aa;
   > i {
   > i {
-    font-size: 22px;
+    font-size: 18px;
   }
   }
 `;
 `;
 
 
@@ -129,7 +202,7 @@ const TopRow = styled.div`
 `;
 `;
 
 
 const Description = styled.div`
 const Description = styled.div`
-  color: #aaaabb;
+  color: #8b949f;
   margin-top: 13px;
   margin-top: 13px;
   margin-left: 2px;
   margin-left: 2px;
   font-size: 13px;
   font-size: 13px;
@@ -140,7 +213,7 @@ const InfoLabel = styled.div`
   height: 20px;
   height: 20px;
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
-  color: #7a838f;
+  color: #8b949f;
   font-size: 13px;
   font-size: 13px;
   > i {
   > i {
     color: #8b949f;
     color: #8b949f;
@@ -155,3 +228,28 @@ const InfoSection = styled.div`
   margin-left: 0px;
   margin-left: 0px;
   margin-bottom: 35px;
   margin-bottom: 35px;
 `;
 `;
+
+const Url = styled.a`
+  font-size: 13px;
+  user-select: text;
+  font-weight: 400;
+  display: flex;
+  align-items: center;
+  cursor: pointer;
+  > i {
+    margin-left: 10px;
+    font-size: 15px;
+  }
+
+  > span {
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+  }
+`;
+
+const Bolded = styled.span`
+  color: #8b949f;
+  margin-right: 6px;
+  white-space: nowrap;
+`;

+ 1 - 1
dashboard/src/main/home/cluster-dashboard/stacks/launch/index.tsx

@@ -45,7 +45,7 @@ const LaunchContainer = styled.div`
 `;
 `;
 
 
 const StyledLaunchFlow = styled.div`
 const StyledLaunchFlow = styled.div`
-  width: calc(100% - 100px);
+  width: calc(100%);
   margin-left: 50px;
   margin-left: 50px;
   min-width: 300px;
   min-width: 300px;
   margin-top: ${(props: { disableMarginTop?: boolean }) =>
   margin-top: ${(props: { disableMarginTop?: boolean }) =>

+ 1 - 113
dashboard/src/main/home/dashboard/ClusterList.tsx

@@ -6,15 +6,12 @@ import api from "shared/api";
 import {
 import {
   ClusterType,
   ClusterType,
   DetailedClusterType,
   DetailedClusterType,
-  DetailedIngressError,
 } from "shared/types";
 } from "shared/types";
 import Helper from "components/form-components/Helper";
 import Helper from "components/form-components/Helper";
 import { pushFiltered } from "shared/routing";
 import { pushFiltered } from "shared/routing";
 
 
 import { RouteComponentProps, withRouter } from "react-router";
 import { RouteComponentProps, withRouter } from "react-router";
 
 
-import CopyToClipboard from "components/CopyToClipboard";
-import Loading from "components/Loading";
 import Modal from "../modals/Modal";
 import Modal from "../modals/Modal";
 
 
 type PropsType = RouteComponentProps & {
 type PropsType = RouteComponentProps & {
@@ -71,30 +68,6 @@ class Templates extends Component<PropsType, StateType> {
     }
     }
   };
   };
 
 
-  updateClusterWithDetailedData = async (clusterId: number) => {
-    try {
-      const currentClusterIndex = this.state.clusters.findIndex(
-        (cluster) => cluster.id === clusterId
-      );
-      const res = await api.getCluster(
-        "<token>",
-        {},
-        { project_id: this.context.currentProject.id, cluster_id: clusterId }
-      );
-      if (res.data) {
-        this.setState((prevState) => {
-          const currentCluster = prevState.clusters[currentClusterIndex];
-          prevState.clusters.splice(currentClusterIndex, 1, {
-            ...currentCluster,
-            ingress_ip: res.data.ingress_ip,
-            ingress_error: res.data.ingress_error,
-          });
-          return prevState;
-        });
-      }
-    } catch (error) {}
-  };
-
   renderIcon = () => {
   renderIcon = () => {
     return (
     return (
       <DashboardIcon>
       <DashboardIcon>
@@ -103,58 +76,6 @@ class Templates extends Component<PropsType, StateType> {
     );
     );
   };
   };
 
 
-  renderIngressIp = (
-    clusterId: number,
-    ingressIp: string | undefined,
-    ingressError: DetailedIngressError
-  ) => {
-    if (typeof ingressIp !== "string") {
-      return (
-        <Url onClick={(e) => e.preventDefault()}>
-          <Loading />
-        </Url>
-      );
-    }
-
-    if (!ingressIp.length && ingressError) {
-      return (
-        <>
-          <Url
-            onClick={(e) => {
-              e.stopPropagation();
-              this.setState({ showErrorModal: { clusterId, show: true } });
-            }}
-          >
-            <Bolded>Ingress IP:</Bolded>
-            <span>{ingressError.message}</span>
-            <i className="material-icons">launch</i>
-          </Url>
-        </>
-      );
-    }
-
-    if (!ingressIp.length) {
-      return (
-        <Url>
-          <Bolded>Ingress IP:</Bolded>
-          <span>Ingress IP not available</span>
-        </Url>
-      );
-    }
-
-    return (
-      <CopyToClipboard
-        as={Url}
-        text={ingressIp}
-        wrapperProps={{ onClick: (e: any) => e.stopPropagation() }}
-      >
-        <Bolded>Ingress IP:</Bolded>
-        <span>{ingressIp}</span>
-        <i className="material-icons-outlined">content_copy</i>
-      </CopyToClipboard>
-    );
-  };
-
   renderClusters = () => {
   renderClusters = () => {
     return this.state.clusters.map(
     return this.state.clusters.map(
       (cluster: DetailedClusterType, i: number) => {
       (cluster: DetailedClusterType, i: number) => {
@@ -172,11 +93,6 @@ class Templates extends Component<PropsType, StateType> {
               {this.renderIcon()}
               {this.renderIcon()}
               <TemplateTitle>{cluster.name}</TemplateTitle>
               <TemplateTitle>{cluster.name}</TemplateTitle>
             </TitleContainer>
             </TitleContainer>
-            {this.renderIngressIp(
-              cluster.id,
-              cluster.ingress_ip,
-              cluster.ingress_error
-            )}
           </TemplateBlock>
           </TemplateBlock>
         );
         );
       }
       }
@@ -209,7 +125,6 @@ class Templates extends Component<PropsType, StateType> {
   render() {
   render() {
     return (
     return (
       <StyledClusterList>
       <StyledClusterList>
-        <Helper>Clusters connected to this project:</Helper>
         <TemplateList>{this.renderClusters()}</TemplateList>
         <TemplateList>{this.renderClusters()}</TemplateList>
         {this.renderErrorModal()}
         {this.renderErrorModal()}
       </StyledClusterList>
       </StyledClusterList>
@@ -320,31 +235,4 @@ const TemplateList = styled.div`
   grid-column-gap: 25px;
   grid-column-gap: 25px;
   grid-row-gap: 25px;
   grid-row-gap: 25px;
   grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
   grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
-`;
-
-const Url = styled.a`
-  width: 100%;
-  font-size: 13px;
-  user-select: text;
-  font-weight: 400;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  > i {
-    margin-left: 10px;
-    font-size: 15px;
-  }
-
-  > span {
-    overflow: hidden;
-    white-space: nowrap;
-    text-overflow: ellipsis;
-  }
-`;
-
-const Bolded = styled.div`
-  font-weight: 500;
-  color: #ffffff44;
-  margin-right: 6px;
-  white-space: nowrap;
-`;
+`;

+ 11 - 12
dashboard/src/main/home/dashboard/Dashboard.tsx

@@ -149,16 +149,16 @@ class Dashboard extends Component<PropsType, StateType> {
     let { currentProject, capabilities } = this.context;
     let { currentProject, capabilities } = this.context;
     let { onShowProjectSettings } = this;
     let { onShowProjectSettings } = this;
 
 
-    let tabOptions = [{ label: "Project Overview", value: "overview" }];
+    let tabOptions = [{ label: "Project overview", value: "overview" }];
 
 
     if (this.props.isAuthorized("cluster", "", ["get", "create"])) {
     if (this.props.isAuthorized("cluster", "", ["get", "create"])) {
-      tabOptions.push({ label: "Create a Cluster", value: "create-cluster" });
+      tabOptions.push({ label: "Create a cluster", value: "create-cluster" });
     }
     }
 
 
-    tabOptions.push({ label: "Provisioner Status", value: "provisioner" });
+    tabOptions.push({ label: "Provisioner status", value: "provisioner" });
 
 
     if (!capabilities?.provisioner) {
     if (!capabilities?.provisioner) {
-      tabOptions = [{ label: "Project Overview", value: "overview" }];
+      tabOptions = [{ label: "Project overview", value: "overview" }];
     }
     }
 
 
     return (
     return (
@@ -255,7 +255,7 @@ const TopRow = styled.div`
 `;
 `;
 
 
 const Description = styled.div`
 const Description = styled.div`
-  color: #aaaabb;
+  color: #8b949f;
   margin-top: 13px;
   margin-top: 13px;
   margin-left: 2px;
   margin-left: 2px;
   font-size: 13px;
   font-size: 13px;
@@ -266,7 +266,7 @@ const InfoLabel = styled.div`
   height: 20px;
   height: 20px;
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
-  color: #7a838f;
+  color: #8b949f;
   font-size: 13px;
   font-size: 13px;
   > i {
   > i {
     color: #8b949f;
     color: #8b949f;
@@ -299,24 +299,23 @@ const Overlay = styled.div`
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
   justify-content: center;
   justify-content: center;
-  font-size: 24px;
+  font-size: 21px;
   font-weight: 500;
   font-weight: 500;
   font-family: "Work Sans", sans-serif;
   font-family: "Work Sans", sans-serif;
   color: white;
   color: white;
 `;
 `;
 
 
 const DashboardImage = styled.img`
 const DashboardImage = styled.img`
-  height: 45px;
-  width: 45px;
+  height: 35px;
+  width: 35px;
   border-radius: 5px;
   border-radius: 5px;
-  box-shadow: 0 2px 5px 4px #00000011;
 `;
 `;
 
 
 const DashboardIcon = styled.div`
 const DashboardIcon = styled.div`
   position: relative;
   position: relative;
-  height: 45px;
+  height: 35px;
   margin-right: 17px;
   margin-right: 17px;
-  width: 45px;
+  width: 35px;
   border-radius: 5px;
   border-radius: 5px;
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;

+ 1 - 6
dashboard/src/main/home/integrations/Integrations.tsx

@@ -126,12 +126,7 @@ const Flex = styled.div`
   }
   }
 `;
 `;
 
 
-const TitleSectionAlt = styled(TitleSection)`
-  margin-left: -42px;
-  width: calc(100% + 42px);
-`;
-
 const StyledIntegrations = styled.div`
 const StyledIntegrations = styled.div`
-  width: calc(85%);
+  width: 100%;
   min-width: 300px;
   min-width: 300px;
 `;
 `;

+ 3 - 3
dashboard/src/main/home/launch/Launch.tsx

@@ -19,8 +19,8 @@ import TemplateList from "./TemplateList";
 import { capitalize } from "lodash";
 import { capitalize } from "lodash";
 
 
 const initialTabOptions = [
 const initialTabOptions = [
-  { label: "New Application", value: "porter" },
-  { label: "Community Add-ons", value: "community" },
+  { label: "New application", value: "porter" },
+  { label: "Community add-ons", value: "community" },
 ];
 ];
 
 
 type TabOption = {
 type TabOption = {
@@ -426,7 +426,7 @@ const Polymer = styled.div`
 `;
 `;
 
 
 const TemplatesWrapper = styled.div`
 const TemplatesWrapper = styled.div`
-  width: calc(85%);
+  width: 100%;
   overflow: visible;
   overflow: visible;
   min-width: 300px;
   min-width: 300px;
 `;
 `;

+ 2 - 5
dashboard/src/main/home/launch/launch-flow/LaunchFlow.tsx

@@ -363,9 +363,6 @@ const LaunchFlow: React.FC<PropsType> = (props) => {
 
 
   const renderCurrentPage = () => {
   const renderCurrentPage = () => {
     let { form, currentTab } = props;
     let { form, currentTab } = props;
-
-    console.log("i'm mr meseeks look at me:", form);
-
     if (currentPage === "source" && form?.hasSource) {
     if (currentPage === "source" && form?.hasSource) {
       return (
       return (
         <SourcePage
         <SourcePage
@@ -500,8 +497,8 @@ const Polymer = styled.div`
 `;
 `;
 
 
 const StyledLaunchFlow = styled.div`
 const StyledLaunchFlow = styled.div`
-  width: calc(90% - 130px);
+  width: calc(100% - 150px);
   min-width: 300px;
   min-width: 300px;
   margin-top: ${(props: { disableMarginTop: boolean }) =>
   margin-top: ${(props: { disableMarginTop: boolean }) =>
-    props.disableMarginTop ? "inherit" : "calc(40vh - 310px)"};
+    props.disableMarginTop ? "inherit" : "calc(40vh - 270px)"};
 `;
 `;

+ 2 - 2
dashboard/src/main/home/new-project/NewProject.tsx

@@ -117,7 +117,7 @@ export const NewProjectFC = () => {
               <BackButtonImg src={backArrow} />
               <BackButtonImg src={backArrow} />
             </BackButton>
             </BackButton>
           )}
           )}
-          <TitleSection>New Project</TitleSection>
+          <TitleSection>New project</TitleSection>
         </FadeWrapper>
         </FadeWrapper>
         <FadeWrapper delay="0.7s">
         <FadeWrapper delay="0.7s">
           <Helper>
           <Helper>
@@ -147,7 +147,7 @@ export const NewProjectFC = () => {
             />
             />
           </InputWrapper>
           </InputWrapper>
           <NewProjectSaveButton
           <NewProjectSaveButton
-            text="Create Project"
+            text="Create project"
             disabled={false}
             disabled={false}
             onClick={createProject}
             onClick={createProject}
             status={buttonStatus}
             status={buttonStatus}

+ 2 - 2
dashboard/src/main/home/onboarding/steps/ConnectRegistry/ConnectRegistry.tsx

@@ -122,9 +122,9 @@ const ConnectRegistry: React.FC<{}> = ({}) => {
           <BackButtonImg src={backArrow} />
           <BackButtonImg src={backArrow} />
         </BackButton>
         </BackButton>
       )}
       )}
-      <TitleSection>Getting Started</TitleSection>
+      <TitleSection>Getting started</TitleSection>
       <Subtitle>
       <Subtitle>
-        Step 2 of 3 - Connect an existing registry (Optional)
+        Step 2 of 3 - Connect an existing registry (optional)
         <DocsHelper
         <DocsHelper
           tooltipText="If you already have an existing image registry, you can connect your existing registry during project creation. If you don't have an image registry or don't know what that means, skip this step. Porter will handle the rest."
           tooltipText="If you already have an existing image registry, you can connect your existing registry during project creation. If you don't have an image registry or don't know what that means, skip this step. Porter will handle the rest."
           link={
           link={

+ 1 - 1
dashboard/src/main/home/onboarding/steps/ConnectSource.tsx

@@ -76,7 +76,7 @@ const ConnectSource: React.FC<{
 
 
   return (
   return (
     <div>
     <div>
-      <TitleSection>Getting Started</TitleSection>
+      <TitleSection>Getting started</TitleSection>
       <Subtitle>
       <Subtitle>
         Step 1 of 3 - Connect to GitHub
         Step 1 of 3 - Connect to GitHub
         <DocsHelper
         <DocsHelper

+ 1 - 1
dashboard/src/main/home/onboarding/steps/ProvisionResources/ProvisionResources.tsx

@@ -308,7 +308,7 @@ const ProvisionResources: React.FC<{}> = () => {
           <BackButtonImg src={backArrow} />
           <BackButtonImg src={backArrow} />
         </BackButton>
         </BackButton>
       )}
       )}
-      <TitleSection>Getting Started</TitleSection>
+      <TitleSection>Getting started</TitleSection>
       <Subtitle>
       <Subtitle>
         Step 3 of 3 - Provision resources
         Step 3 of 3 - Provision resources
         <DocsHelper
         <DocsHelper

+ 1 - 1
dashboard/src/main/home/project-settings/ProjectSettings.tsx

@@ -212,7 +212,7 @@ const Warning = styled.div`
 `;
 `;
 
 
 const StyledProjectSettings = styled.div`
 const StyledProjectSettings = styled.div`
-  width: calc(85%);
+  width: 100%;
   min-width: 300px;
   min-width: 300px;
   height: 100vh;
   height: 100vh;
 `;
 `;