diff --git a/frontend/src/app/globals.css b/frontend/src/app/globals.css
index 90815f3..b2fdb45 100644
--- a/frontend/src/app/globals.css
+++ b/frontend/src/app/globals.css
@@ -41,3 +41,13 @@ a {
color-scheme: dark;
}
}
+::-webkit-scrollbar {
+ width: 8px; /* vertical */
+ height: 8px; /* horizontal */
+ background-color: transparent;
+}
+
+::-webkit-scrollbar-thumb {
+ border-radius: 2px;
+ background: #34384c;
+}
diff --git a/frontend/src/app/projects/view/add-from-scratch/page.jsx b/frontend/src/app/projects/view/add-from-scratch/page.jsx
index 43b1626..fcbbab2 100644
--- a/frontend/src/app/projects/view/add-from-scratch/page.jsx
+++ b/frontend/src/app/projects/view/add-from-scratch/page.jsx
@@ -1,8 +1,12 @@
-import React from "react";
+"use client";
+import React, { useState } from "react";
import globalStyle from "@/app/globalStyle.module.css";
import TopHeader from "@/app/components/topHeader/TopHeader";
import styles from "./styles.module.css";
+import variableStyles from "./variableStyles.module.css";
const AddServices = () => {
+ const [triggerVariableDropDown, setTriggerVariableDropDown] = useState(false);
+
return (
@@ -70,24 +74,272 @@ const AddServices = () => {
-
-
-
+
+
+
-
+
+
+
Memory Request (MB)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setTriggerVariableDropDown(!triggerVariableDropDown)
+ }
+ >
+
+
+ {triggerVariableDropDown && (
+
+
+
Environment Variables
+
+
+
+
+ )}
+
+
+
+
+
+
+
+
+
Environment Variables
+
+
+
+
+
+
No Environment Variables added
+
+
+
+
+
+
+
+
+
+
+
Name
+
Path
+
Size/Type
+
Access Mode
+
Storage Class
+
+
+
+
+
+
-
-
-
diff --git a/frontend/src/app/projects/view/add-from-scratch/styles.module.css b/frontend/src/app/projects/view/add-from-scratch/styles.module.css
index 1cbad83..56bed09 100644
--- a/frontend/src/app/projects/view/add-from-scratch/styles.module.css
+++ b/frontend/src/app/projects/view/add-from-scratch/styles.module.css
@@ -8,7 +8,7 @@
display: flex;
padding-top: 36px;
flex-direction: column;
-
+ width: 550px;
align-items: flex-start;
gap: 36px;
background: #191a24;
@@ -46,7 +46,22 @@
gap: 16px;
align-self: stretch;
}
-.fieldsCreateNew > div {
+.resource {
+ display: flex;
+ padding: 0 36px;
+ flex-direction: column;
+ align-items: flex-start;
+ align-self: stretch;
+}
+.resourceFields {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 16px;
+ align-self: stretch;
+}
+.fieldsCreateNew > div,
+.resourceFields > div {
display: flex;
justify-content: center;
align-items: center;
@@ -61,7 +76,8 @@
gap: 4px;
align-self: stretch;
}
-.fieldsCreateNew > div > div {
+.fieldsCreateNew > div > div,
+.resourceFields > div > div {
display: flex;
flex-direction: column;
justify-content: center;
@@ -69,7 +85,8 @@
gap: 12px;
flex: 1 0 0;
}
-.fieldsCreateNew > div > div p {
+.fieldsCreateNew > div > div p,
+.resourceFields > div > div p {
color: #d2d3e1;
font-size: 16px;
font-style: normal;
@@ -77,11 +94,14 @@
line-height: normal;
letter-spacing: 0.16px;
}
-.fieldsCreateNew > div > div p > span {
+.fieldsCreateNew > div > div p > span,
+.resourceFields > div > div p > span {
color: #85869b;
}
.fieldsCreateNew > div > div input,
-.fieldsCreateNew > div > div select {
+.fieldsCreateNew > div > div select,
+.resourceFields > div > div input,
+.resourceFields > div > div select {
display: flex;
padding: 12px;
flex-direction: column;
@@ -98,7 +118,8 @@
line-height: normal;
letter-spacing: 0.16px;
}
-.fieldsCreateNew > div > div input::placeholder {
+.fieldsCreateNew > div > div input::placeholder,
+.resourceFields > div > div input::placeholder {
color: #85869b;
}
.repositoryForm {
@@ -118,4 +139,113 @@
font-weight: 400;
line-height: normal;
letter-spacing: 0.16px;
+ cursor: pointer;
+}
+.repositoryForm:hover {
+ background: rgba(83, 89, 242, 0.1);
+}
+.additionalDetails {
+ display: flex;
+ padding: 0 36px 50px 36px;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 16px;
+ align-self: stretch;
+}
+.additionalDetails > div {
+ display: flex;
+ padding: 24px;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 10px;
+ align-self: stretch;
+ border-radius: 6px;
+ background: #1d1e2a;
+}
+.additionalDetails > div > div {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 16px;
+ align-self: stretch;
+}
+.additionalDetailsHeader {
+ display: flex;
+ padding-bottom: 24px;
+ align-items: flex-start;
+ gap: 17px;
+ align-self: stretch;
+}
+.additionalDetailsHeader div {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex: 1 0 0;
+}
+
+.additionalDetailsHeader p {
+ color: #d2d3e1;
+ font-size: 20px;
+ font-style: normal;
+ font-weight: 500;
+ line-height: normal;
+ letter-spacing: 0.2px;
+}
+.additionalDetailsFields {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 32px;
+ align-self: stretch;
+}
+.additionalDetailsFields > div {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 16px;
+ align-self: stretch;
+}
+.additionalDetailsFields > div > div {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 16px;
+ align-self: stretch;
+}
+.additionalDetailsFields > div > div > div {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: flex-start;
+ gap: 12px;
+ flex: 1;
+}
+.additionalDetailsFields p {
+ color: #d2d3e1;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+ letter-spacing: 0.16px;
+}
+.additionalDetailsFields input {
+ display: flex;
+ padding: 12px;
+ flex-direction: column;
+ align-items: flex-start;
+ width: 100%;
+ gap: 10px;
+ align-self: stretch;
+ background-color: transparent;
+ border-radius: 4px;
+ border: 1px solid #4b4f6d;
+ color: white;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+ letter-spacing: 0.16px;
+}
+.additionalDetailsFields input::placeholder {
+ color: #85869b;
}
diff --git a/frontend/src/app/projects/view/add-from-scratch/variableStyles.module.css b/frontend/src/app/projects/view/add-from-scratch/variableStyles.module.css
new file mode 100644
index 0000000..fa6f5c1
--- /dev/null
+++ b/frontend/src/app/projects/view/add-from-scratch/variableStyles.module.css
@@ -0,0 +1,232 @@
+.variables {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ flex: 1 0 0;
+ align-self: stretch;
+
+ background: #161720;
+}
+.variablesHeader {
+ display: flex;
+ padding: 8px 14px 8px 8px;
+ align-items: center;
+ gap: 10px;
+ align-self: stretch;
+ background: #161720;
+}
+.variablesHeader > div {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex: 1 0 0;
+}
+.searchContainer > div {
+ display: flex;
+ width: 310px;
+ padding: 8px 12px;
+ align-items: center;
+ gap: 9px;
+}
+.searchInputGroup {
+ display: flex;
+ align-items: center;
+ gap: 9px;
+}
+.searchInputGroup input {
+ color: white;
+ font-family: Inter;
+ font-size: 18px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+ letter-spacing: -0.09px;
+ outline: none;
+ background-color: transparent;
+ border: none;
+}
+.searchInputGroup input::placeholder {
+ color: #85869b;
+}
+.variablesHeaderDropDown {
+ display: flex;
+ width: 40px;
+ height: 40px;
+ flex-direction: column;
+ align-items: flex-end;
+ position: relative;
+ gap: 6px;
+}
+.variableHeaderDropdownButton {
+ display: flex;
+ padding: 8px;
+ justify-content: center;
+ align-items: center;
+ gap: 12px;
+ border-radius: 6px;
+ cursor: pointer;
+ background: #5359f2;
+ border: 1px solid #5358f200;
+}
+.variableHeaderDropdownButton:hover {
+ border-radius: 6px;
+ border: 1px solid #5359f2;
+ background: linear-gradient(180deg, #5359f2 0%, #2e3288 100%);
+}
+.dropDownContainer {
+ display: flex;
+ padding: 8px;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 6px;
+ border-radius: 6px;
+ background: #2d3144;
+ box-shadow: 0 2px 15px 0 rgba(0, 0, 0, 0.25);
+ animation-name: dropDownAnimation;
+ animation-duration: 200ms;
+}
+@keyframes dropDownAnimation {
+ 0% {
+ opacity: 0;
+ transform: translateY(-10%);
+ }
+ 100% {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+.dropDownContainer > div {
+ display: flex;
+ padding: 8px 12px;
+ align-items: center;
+ gap: 10px;
+ align-self: stretch;
+ text-wrap: nowrap;
+ width: 100%;
+}
+.dropDownContainer > div:hover {
+ background: #3c4159;
+}
+.dropDownContainer > div > div {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 12px;
+ color: #acb0ff;
+ font-family: Inter;
+ font-size: 18px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+}
+.variablesContentContainer {
+ display: flex;
+ padding: 8px;
+ align-items: flex-start;
+ flex: 1 0 0;
+ align-self: stretch;
+}
+.variablesContentContainer > div {
+ display: flex;
+ padding-bottom: 16px;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 8px;
+ height: calc(100vh - 242px);
+ overflow: auto;
+ flex: 1 0 0;
+}
+.variablesContent {
+ display: flex;
+ padding-bottom: 50px;
+ flex-direction: column;
+ align-items: flex-start;
+ align-self: stretch;
+ border-radius: 4px;
+ background: #1d1e2a;
+}
+.environmentVariablesContainer {
+ display: flex;
+ padding-bottom: 50px;
+ flex-direction: column;
+ align-items: flex-start;
+ align-self: stretch;
+}
+.environmentVariablesHeader {
+ display: flex;
+ padding: 12px 16px;
+ align-items: flex-start;
+ gap: 17px;
+ align-self: stretch;
+}
+.environmentVariablesHeader p {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: flex-start;
+ gap: 5px;
+ flex: 1 0 0;
+ color: #fff;
+ font-family: Inter;
+ font-size: 18px;
+ font-style: normal;
+ font-weight: 500;
+ line-height: normal;
+}
+.envVariablesHeader {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ align-self: stretch;
+}
+.envVariablesHeader > div {
+ display: flex;
+ padding: 12px 16px;
+ align-items: flex-start;
+ align-self: stretch;
+ border-bottom: 1px solid #2c2e3f;
+}
+.envVariablesHeader > div p {
+ display: flex;
+ align-items: flex-start;
+ flex: 1 0 0;
+ color: #85869b;
+ font-family: Inter;
+ font-size: 15px;
+ font-style: normal;
+ font-weight: 500;
+ line-height: normal;
+}
+.variableList {
+ display: flex;
+ padding: 24px 16px 0 16px;
+ align-items: flex-start;
+ align-self: stretch;
+}
+.emptyVariableList {
+ display: flex;
+ padding-bottom: 24px;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 10px;
+ flex: 1 0 0;
+}
+.emptyVariableList > div {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ align-self: stretch;
+}
+.emptyVariableList > div > div {
+ display: flex;
+ justify-content: center;
+ align-items: flex-start;
+ flex: 1 0 0;
+ color: #85869b;
+ text-align: center;
+ font-family: Inter;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 500;
+ line-height: normal;
+}