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 a02fb33..39bf989 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
@@ -18,7 +18,7 @@
}
.projectDetails {
display: flex;
- padding: 0 24px;
+ padding: 0 36px;
flex-direction: column;
align-items: flex-start;
gap: 10px;
@@ -146,7 +146,7 @@
}
.additionalDetails {
display: flex;
- padding: 0 36px 50px 36px;
+ padding: 20px;
flex-direction: column;
align-items: flex-start;
gap: 16px;
@@ -154,7 +154,7 @@
}
.additionalDetails > div {
display: flex;
- padding: 24px;
+ padding: 20px;
flex-direction: column;
align-items: flex-start;
gap: 10px;
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
index 98754a4..e90ceb2 100644
--- a/frontend/src/app/projects/view/add-from-scratch/variableStyles.module.css
+++ b/frontend/src/app/projects/view/add-from-scratch/variableStyles.module.css
@@ -138,7 +138,7 @@
}
.variablesContent {
display: flex;
- padding-bottom: 50px;
+ padding-bottom: auto;
flex-direction: column;
align-items: flex-start;
align-self: stretch;
@@ -167,7 +167,8 @@
}
.environmentVariablesContainer {
display: flex;
- padding-bottom: 50px;
+ min-height: 200px;
+ padding-bottom: auto;
flex-direction: column;
align-items: flex-start;
align-self: stretch;
From f16b78834c4ee94de672a49ac483f977b0391107 Mon Sep 17 00:00:00 2001
From: Laux Dev <2201104208@student.buksu.edu.ph>
Date: Mon, 2 Mar 2026 11:58:42 +0800
Subject: [PATCH 2/3]
---
.../src/app/projects/view/AddServicesModal/styles.module.css | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/frontend/src/app/projects/view/AddServicesModal/styles.module.css b/frontend/src/app/projects/view/AddServicesModal/styles.module.css
index 377c64c..19262a9 100644
--- a/frontend/src/app/projects/view/AddServicesModal/styles.module.css
+++ b/frontend/src/app/projects/view/AddServicesModal/styles.module.css
@@ -18,10 +18,10 @@
gap: 48px;
border-radius: 8px;
background: #21232f;
- animation-name: dropDownAnimation;
+ animation-name: modalAnimation;
animation-duration: 200ms;
}
-@keyframes dropDownAnimation {
+@keyframes modalAnimation {
0% {
opacity: 0;
transform: translateY(-10%);
From 1023990822bedb4dcec3956dd486b53fd7faf2d6 Mon Sep 17 00:00:00 2001
From: Laux Dev <2201104208@student.buksu.edu.ph>
Date: Mon, 2 Mar 2026 15:33:21 +0800
Subject: [PATCH 3/3] Add components
---
.../app/components/checkbox/styles.module.css | 2 +-
.../app/components/fields/styles.module.css | 9 +
.../src/app/components/icons/arrowDown.jsx | 28 ++
frontend/src/app/components/icons/warning.jsx | 38 ++
.../src/app/components/select/SelectField.jsx | 71 ++++
.../app/components/select/styles.module.css | 83 ++++
.../components/topHeader/styles.module.css | 8 +-
frontend/src/app/projects/add/page.jsx | 67 +--
.../app/projects/view/[servicesId]/page.jsx | 396 ++++++++++++++++++
.../view/[servicesId]/styles.module.css | 219 ++++++++++
.../[servicesId]/variableStyles.module.css | 253 +++++++++++
.../projects/view/add-from-scratch/page.jsx | 48 ++-
.../view/add-from-scratch/styles.module.css | 23 +-
frontend/src/app/projects/view/page.jsx | 79 +---
.../AddConfigMap/AddConfigMapModal.jsx | 3 +-
.../AddConfigMap/styles.module.css | 35 ++
.../AddVariableModal/AddVariableModal.jsx | 20 +-
.../AddVariableModal/styles.module.css | 14 +
.../AddVolumes/AddVolumeModal.jsx | 1 -
.../AddVolumes/styles.module.css | 1 +
20 files changed, 1234 insertions(+), 164 deletions(-)
create mode 100644 frontend/src/app/components/icons/arrowDown.jsx
create mode 100644 frontend/src/app/components/icons/warning.jsx
create mode 100644 frontend/src/app/components/select/SelectField.jsx
create mode 100644 frontend/src/app/components/select/styles.module.css
create mode 100644 frontend/src/app/projects/view/[servicesId]/page.jsx
create mode 100644 frontend/src/app/projects/view/[servicesId]/styles.module.css
create mode 100644 frontend/src/app/projects/view/[servicesId]/variableStyles.module.css
rename frontend/src/app/projects/view/{add-from-scratch => }/variableModals/AddConfigMap/AddConfigMapModal.jsx (97%)
rename frontend/src/app/projects/view/{add-from-scratch => }/variableModals/AddConfigMap/styles.module.css (85%)
rename frontend/src/app/projects/view/{add-from-scratch => }/variableModals/AddVariableModal/AddVariableModal.jsx (82%)
rename frontend/src/app/projects/view/{add-from-scratch => }/variableModals/AddVariableModal/styles.module.css (92%)
rename frontend/src/app/projects/view/{add-from-scratch => }/variableModals/AddVolumes/AddVolumeModal.jsx (97%)
rename frontend/src/app/projects/view/{add-from-scratch => }/variableModals/AddVolumes/styles.module.css (99%)
diff --git a/frontend/src/app/components/checkbox/styles.module.css b/frontend/src/app/components/checkbox/styles.module.css
index aa0ae6f..e1d38db 100644
--- a/frontend/src/app/components/checkbox/styles.module.css
+++ b/frontend/src/app/components/checkbox/styles.module.css
@@ -35,7 +35,7 @@
}
.check:checked + .switch .knob {
- transform: translateX(75%);
+ transform: translateX(78%);
background-color: white;
}
diff --git a/frontend/src/app/components/fields/styles.module.css b/frontend/src/app/components/fields/styles.module.css
index 1fd8258..7ecc249 100644
--- a/frontend/src/app/components/fields/styles.module.css
+++ b/frontend/src/app/components/fields/styles.module.css
@@ -25,6 +25,15 @@
border: 1px solid #959aff;
background: rgba(75, 79, 109, 0.25);
}
+.input:active::placeholder,
+.input:focus::placeholder {
+ color: #4b4f6d;
+ font-family: Inter;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+}
.input:hover {
background: rgba(75, 79, 109, 0.25);
}
diff --git a/frontend/src/app/components/icons/arrowDown.jsx b/frontend/src/app/components/icons/arrowDown.jsx
new file mode 100644
index 0000000..e83b8d8
--- /dev/null
+++ b/frontend/src/app/components/icons/arrowDown.jsx
@@ -0,0 +1,28 @@
+const ArrowDownIcon = ({
+ width = 18,
+ height = 18,
+ color = "#4C4F6B",
+
+ ...props
+}) => {
+ return (
+
+ );
+};
+
+export default ArrowDownIcon;
diff --git a/frontend/src/app/components/icons/warning.jsx b/frontend/src/app/components/icons/warning.jsx
new file mode 100644
index 0000000..58b78af
--- /dev/null
+++ b/frontend/src/app/components/icons/warning.jsx
@@ -0,0 +1,38 @@
+import React from "react";
+
+const WarningIcon = (props) => {
+ return (
+
+ );
+};
+
+export default WarningIcon;
diff --git a/frontend/src/app/components/select/SelectField.jsx b/frontend/src/app/components/select/SelectField.jsx
new file mode 100644
index 0000000..d155bc6
--- /dev/null
+++ b/frontend/src/app/components/select/SelectField.jsx
@@ -0,0 +1,71 @@
+"use client";
+import React, { useState, useRef, useEffect } from "react";
+import styles from "./styles.module.css";
+import ArrowDownIcon from "../icons/arrowDown";
+
+const SelectField = ({ label, options, ...props }) => {
+ const [showOptions, setShowOptions] = useState(false);
+ const [dropUp, setDropUp] = useState(false);
+
+ const selectRef = useRef(null);
+
+ const [currentSelected, setCurrentSelected] = useState({
+ label: label,
+ value: "",
+ });
+
+ useEffect(() => {
+ if (showOptions && selectRef.current) {
+ const rect = selectRef.current.getBoundingClientRect();
+ const spaceBelow = window.innerHeight - rect.bottom;
+ const spaceAbove = rect.top;
+ const dropdownHeight = 150;
+
+ if (spaceBelow < dropdownHeight && spaceAbove > dropdownHeight) {
+ setDropUp(true);
+ } else {
+ setDropUp(false);
+ }
+ }
+ }, [showOptions]);
+
+ return (
+
setShowOptions(!showOptions)}
+ {...props}
+ >
+
+
+
+ {showOptions && (
+
+ {options.map((opt, key) => {
+ return (
+
{
+ setCurrentSelected(opt);
+ setShowOptions(false);
+ }}
+ >
+
{opt.label}
+
+ );
+ })}
+
+ )}
+
+ );
+};
+
+export default SelectField;
diff --git a/frontend/src/app/components/select/styles.module.css b/frontend/src/app/components/select/styles.module.css
new file mode 100644
index 0000000..750fdb0
--- /dev/null
+++ b/frontend/src/app/components/select/styles.module.css
@@ -0,0 +1,83 @@
+.select {
+ display: flex;
+ padding: 12px;
+ align-items: flex-start;
+ align-items: center;
+ justify-content: space-between;
+ gap: 10px;
+ align-self: stretch;
+ border-radius: 4px;
+ border: 1px solid #4b4f6d;
+ background-color: transparent;
+ position: relative;
+}
+.label {
+ color: #858699;
+ font-family: Inter;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+}
+.selected {
+ color: white;
+}
+.optionsContainer {
+ display: flex;
+ padding: 6px;
+ flex-direction: column;
+ align-items: flex-start;
+ align-self: stretch;
+ position: absolute;
+ width: 100%;
+ left: 0;
+ border-radius: 6px;
+ border: 1px solid #353a4c;
+ background: #282b39;
+ animation-name: showDD;
+ animation-duration: 200ms;
+ z-index: 20;
+}
+
+@keyframes showDD {
+ 0% {
+ opacity: 0;
+ transform: translateY(-10%);
+ }
+ 100% {
+ opacity: 1;
+ transform: translateY(0%);
+ }
+}
+.optionsContainer > div {
+ display: flex;
+ padding: 8px;
+ align-items: center;
+ gap: 10px;
+ align-self: stretch;
+ border-radius: 4px;
+}
+.optionsContainer p {
+ color: #acb0ff;
+ font-family: Inter;
+ font-size: 18px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+}
+.optionsContainer > div:hover,
+.optionsContainer > div:hover p {
+ background: #3c4159;
+ color: white;
+}
+.optionsContainer {
+ top: 0%;
+ margin-top: 6px;
+}
+
+/* When flipping upward */
+.dropUp {
+ bottom: 0%;
+ top: auto;
+ margin-bottom: 6px;
+}
diff --git a/frontend/src/app/components/topHeader/styles.module.css b/frontend/src/app/components/topHeader/styles.module.css
index 2e358cb..e109419 100644
--- a/frontend/src/app/components/topHeader/styles.module.css
+++ b/frontend/src/app/components/topHeader/styles.module.css
@@ -44,7 +44,7 @@
display: flex;
justify-content: flex-end;
align-items: center;
- gap: 10px;
+ gap: 5px;
}
.searchBarContainer {
display: flex;
@@ -55,14 +55,14 @@
}
.button {
display: flex;
- padding: 8px 12px;
+ padding: 7px 15px;
justify-content: center;
align-items: center;
- gap: 8px;
+ gap: 10px;
+ border-radius: 6px;
border-radius: 6px;
border: 0.5px solid #8187ff;
background: rgba(83, 89, 242, 0.25);
- cursor: pointer;
}
.button:hover {
background: linear-gradient(180deg, #5359f2 0%, #2e3288 100%);
diff --git a/frontend/src/app/projects/add/page.jsx b/frontend/src/app/projects/add/page.jsx
index 8d9a2e8..d691efc 100644
--- a/frontend/src/app/projects/add/page.jsx
+++ b/frontend/src/app/projects/add/page.jsx
@@ -3,6 +3,9 @@ import globalStyle from "../../globalStyle.module.css";
import TopHeader from "@/app/components/topHeader/TopHeader";
import styles from "./styles.module.css";
import TopToolTip from "@/app/components/topToolTip/TopToolTip";
+import TextField from "@/app/components/fields/textfield";
+import SelectField from "@/app/components/select/SelectField";
+import WarningIcon from "@/app/components/icons/warning";
const AddProject = () => {
return (
@@ -24,37 +27,9 @@ const AddProject = () => {
-
+
-
+
The name is already in used. You can try another.
@@ -66,7 +41,7 @@ const AddProject = () => {