diff --git a/frontend/src/app/agents/[agentsId]/page.jsx b/frontend/src/app/agents/[agentsId]/page.jsx index 9d482c0..06e1fa7 100644 --- a/frontend/src/app/agents/[agentsId]/page.jsx +++ b/frontend/src/app/agents/[agentsId]/page.jsx @@ -9,10 +9,13 @@ import Prompts from "@/app/components/prompts/Prompts"; import useAgentForm from "@/app/hooks/useAgentForm"; import Alert from "@/app/components/alerts/Alert"; import Checkbox from "@/app/components/customCheckbox/Checkbox"; +import useIsMobile from "@/app/hooks/useIsMobile"; const ViewAgentPage = () => { - const [useVpn, setUseVpn] = useState(true); - const [enableLoki, setEnableLoki] = useState(true); + const [useVpn, setUseVpn] = useState(false); + const [enableLoki, setEnableLoki] = useState(false); + const isMobile = useIsMobile(); + const { register, handleSubmit, @@ -50,7 +53,7 @@ const ViewAgentPage = () => { {/* AGENT FORM */}
-

Agent Details

+ {isMobile ? "" :

Agent Details

}
@@ -90,35 +93,51 @@ const ViewAgentPage = () => { } /> - {/* Agent endpoint */} -
-
-

Tailscale Device Prefix

- {/*

*

*/} + {useVpn ? ( + <> +
+
+

Tailscale Device Prefix

+

*

+
+ + +
+ +
+
+

Tailscale Port

+

*

+
+ + +
+ + ) : ( +
+
+

Agent Endpoint

+

*

+
+ +
- - -
-
-
-

Tailscale Port

- {/*

*

*/} -
- - -
+ )}
- {/* Header */}

Loki Integration (Optional)

diff --git a/frontend/src/app/agents/[agentsId]/styles.module.css b/frontend/src/app/agents/[agentsId]/styles.module.css index 14d5251..747bd53 100644 --- a/frontend/src/app/agents/[agentsId]/styles.module.css +++ b/frontend/src/app/agents/[agentsId]/styles.module.css @@ -6,7 +6,6 @@ flex: 1 0 0; align-self: stretch; } - .createAgentContainer { display: flex; justify-content: center; @@ -30,7 +29,7 @@ .headerContainer { display: flex; align-items: flex-start; - gap: 17px; + gap: 50px; align-self: stretch; } .headerContainer > div { @@ -66,7 +65,6 @@ } .labelContainer > p { color: #d2d3e1; - color: color(display-p3 0.8235 0.8275 0.8784); font-family: Inter; font-size: 16px; font-style: normal; @@ -80,9 +78,59 @@ .lokiContainer { display: flex; + width: 100%; width: 548px; padding: 24px; flex-direction: column; align-items: flex-start; gap: 24px; } + +@media (max-width: 1024px) { + .createAgentContainer { + display: flex; + padding: 16px 16px; /*did some math 32 ang orig top*/ + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + gap: 24px; + height: calc(100vh - 100px - 60px); + align-self: stretch; + } + .div { + display: none; + } + .inputMainContainer { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 16px; + padding: 0px; + /* align-self: stretch; */ + } + .lokiContainer { + display: flex; + gap: 16px; + align-self: stretch; + border-radius: 8px; + width: 500px; + padding: 24px 0 0 0; + } +} + +@media (max-width: 768px) { + .inputMainContainer { + align-self: stretch; + width: 100%; + } + .lokiContainer { + width: 100%; + } + .inputContainer { + width: 100%; + } + .headerTxt > p { + font-size: 16px; + font-weight: 400; + } +} diff --git a/frontend/src/app/agents/add/page.jsx b/frontend/src/app/agents/add/page.jsx index f9abc0d..fda12c8 100644 --- a/frontend/src/app/agents/add/page.jsx +++ b/frontend/src/app/agents/add/page.jsx @@ -9,10 +9,12 @@ import Prompts from "@/app/components/prompts/Prompts"; import useAgentForm from "@/app/hooks/useAgentForm"; import Alert from "@/app/components/alerts/Alert"; import Checkbox from "@/app/components/customCheckbox/Checkbox"; +import useIsMobile from "@/app/hooks/useIsMobile"; const AddAgentPage = () => { const [useVpn, setUseVpn] = useState(false); const [enableLoki, setEnableLoki] = useState(false); + const isMobile = useIsMobile(); const { register, handleSubmit, @@ -40,7 +42,7 @@ const AddAgentPage = () => { state="add" requiredButtons={["title", "save"]} /> - + {isMobile ? "" : } {/* Create agent Container */}
{ onSubmit={handleSubmit(onSubmit)} >
-
{/* AGENT FORM */}
-

Agent Details

+ {isMobile ? "" :

Agent Details

}
@@ -93,19 +94,48 @@ const AddAgentPage = () => { } /> - {/* Agent endpoint */} -
-
-

Agent Endpoint

-

*

+ {useVpn ? ( + <> +
+
+

Tailscale Device Prefix

+

*

+
+ + +
+ +
+
+

Tailscale Port

+

*

+
+ + +
+ + ) : ( +
+
+

Agent Endpoint

+

*

+
+ +
- - -
+ )}
diff --git a/frontend/src/app/agents/add/styles.module.css b/frontend/src/app/agents/add/styles.module.css index fd43530..0814210 100644 --- a/frontend/src/app/agents/add/styles.module.css +++ b/frontend/src/app/agents/add/styles.module.css @@ -4,7 +4,6 @@ align-items: flex-start; gap: 10px; flex: 1 0 0; - padding-top: 48px; align-self: stretch; } @@ -14,9 +13,10 @@ align-items: flex-start; align-self: stretch; /* Ibalhin ni ang padding sa formcontainer maoang nasa figma */ + padding-top: 48px; gap: 16px; flex: 1 1 auto; - height: calc(100vh - 100px - 48px - 110px); + height: calc(100vh - 100px - 5px - 110px); overflow-y: auto; scrollbar-width: none; } @@ -31,17 +31,9 @@ .headerContainer { display: flex; align-items: flex-start; - gap: 17px; align-self: stretch; } -.headerContainer > div { - display: flex; - flex-direction: column; - justify-content: center; - align-items: flex-start; - gap: 5px; - flex: 1 0 0; -} + .headerTxt > p { /* width: 163px; */ align-self: stretch; @@ -87,3 +79,52 @@ align-items: flex-start; gap: 24px; } + +@media (max-width: 1024px) { + .createAgentContainer { + display: flex; + padding: 16px 16px; /*did some math 32 ang orig top*/ + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + height: calc(100vh - 100px - 5px - 50px); + gap: 24px; + align-self: stretch; + } + .div { + display: none; + } + .inputMainContainer { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 16px; + padding: 0px; + /* align-self: stretch; */ + } + .lokiContainer { + display: flex; + gap: 16px; + align-self: stretch; + border-radius: 8px; + width: 500px; + padding: 24px 0 0 0; + } +} + +@media (max-width: 768px) { + .inputMainContainer { + align-self: stretch; + width: 100%; + } + .lokiContainer { + width: 100%; + } + .inputContainer { + width: 100%; + } + .headerTxt > p { + font-size: 16px; + font-weight: 400; + } +} diff --git a/frontend/src/app/components/icons/plus.jsx b/frontend/src/app/components/icons/plus.jsx new file mode 100644 index 0000000..d8ca33d --- /dev/null +++ b/frontend/src/app/components/icons/plus.jsx @@ -0,0 +1,32 @@ +import React from "react"; + +const plus = () => { + return ( + <> + + + + + + ); +}; + +export default plus; diff --git a/frontend/src/app/components/mobileToggleTab/Toggle.jsx b/frontend/src/app/components/mobileToggleTab/Toggle.jsx new file mode 100644 index 0000000..14941b4 --- /dev/null +++ b/frontend/src/app/components/mobileToggleTab/Toggle.jsx @@ -0,0 +1,39 @@ +import React from "react"; +import styles from "./styles.module.css"; +import MobileSearchBar from "@/app/components/mobileSearchBar/MobileSearchBar"; +import useIsMobile from "@/app/hooks/useIsMobile"; +import PlusIcon from "../icons/plus"; + +const Toggle = ({ tabs = [], activeTab, onChange }) => { + const isMobile = useIsMobile(); + + return ( +
+
+ {tabs.map((tab) => ( + + ))} +
+ + {isMobile && activeTab === "permissions" && ( +
+
+ +
+ + +
+ )} +
+ ); +}; + +export default Toggle; diff --git a/frontend/src/app/components/mobileToggleTab/styles.module.css b/frontend/src/app/components/mobileToggleTab/styles.module.css new file mode 100644 index 0000000..77d5fd1 --- /dev/null +++ b/frontend/src/app/components/mobileToggleTab/styles.module.css @@ -0,0 +1,61 @@ +.toggleContainer { + display: none; +} + +@media (max-width: 950px) { + .toggleContainer { + display: flex; + flex-direction: column; + align-self: stretch; + gap: 16px; + } + .buttonToggles { + display: flex; + align-items: flex-start; + gap: 16px; + align-self: stretch; + } + .container { + display: flex; + align-items: center; + gap: 16px; + flex: 1 0 0; + padding: 8px 0; + } + .searchBar { + width: 100%; + } + + .container > button { + display: flex; + padding: 8px; + border: none; + justify-content: center; + align-items: end; + gap: 12px; + border-radius: 6px; + background: #27293b; + } + + .buttonStyle { + display: flex; + background: none; + border: none; + padding: 24px 4px 16px 4px; + flex-direction: column; + justify-content: center; + align-items: flex-start; + gap: 5px; + color: #85869b; + font-family: Inter; + font-size: 18px; + font-style: normal; + font-weight: 400; + line-height: normal; + letter-spacing: 0.18px; + } + .active { + border-bottom: 1px solid #959aff; + color: #959aff; + } +} diff --git a/frontend/src/app/components/navbar/navleft/styles.module.css b/frontend/src/app/components/navbar/navleft/styles.module.css index 09043f0..64bde6c 100644 --- a/frontend/src/app/components/navbar/navleft/styles.module.css +++ b/frontend/src/app/components/navbar/navleft/styles.module.css @@ -91,7 +91,7 @@ background: #2d3143; box-shadow: 0 2px 15px 0 rgba(0, 0, 0, 0.25); position: absolute; - z-index: 4; + z-index: 30; top: 100%; margin-top: 8px; left: 0; diff --git a/frontend/src/app/components/navbar/navright/styles.module.css b/frontend/src/app/components/navbar/navright/styles.module.css index 288f9d3..5445557 100644 --- a/frontend/src/app/components/navbar/navright/styles.module.css +++ b/frontend/src/app/components/navbar/navright/styles.module.css @@ -16,10 +16,9 @@ gap: 10px; border-radius: 6px; } -.profileBadge:hover { +.profileBadgeButton:hover { border-radius: 6px; background: #21232f; - background: color(display-p3 0.1294 0.1373 0.1804); } .nameRole { display: flex; @@ -79,12 +78,10 @@ left: 0; border-radius: 6px; background: #2d3144; - background: color(display-p3 0.1787 0.1913 0.2605); box-shadow: 0 2px 15px 0 rgba(0, 0, 0, 0.25); - box-shadow: 0 2px 15px 0 color(display-p3 0 0 0 / 0.25); cursor: pointer; position: absolute; - z-index: 10; + z-index: 30; top: 100%; margin-top: 3px; animation-name: dropDownAnimation; diff --git a/frontend/src/app/components/permissions/Permissions.jsx b/frontend/src/app/components/permissions/Permissions.jsx index 51a0519..c3a2cc2 100644 --- a/frontend/src/app/components/permissions/Permissions.jsx +++ b/frontend/src/app/components/permissions/Permissions.jsx @@ -3,54 +3,30 @@ import DeleteIcon from "../icons/delete"; import FileIcon from "../icons/file"; import editUserStyle from "./styles.module.css"; import React from "react"; +import PlusIcon from "../icons/plus"; const Permissions = ({ sampleData = [] }) => { return ( <> {/* Permissions */} -
- {/* Add permissions */} -
-
- {/* Header */} -
-

Permissions

-
-
- - - - -
-
+
+
+

Permissions

+
+ {/* Button ni */} +
+
- {sampleData.length === 0 ? ( - // Default Message -
-

No permission added yet

-
- ) : ( - // Sampple Data(static) - sampleData.map((perm, index) => { + {sampleData.length === 0 ? ( +
+

No permission added yet

+
+ ) : ( +
+ {sampleData.map((perm, index) => { return (
@@ -62,9 +38,9 @@ const Permissions = ({ sampleData = [] }) => {
); - }) - )} -
+ })} +
+ )}
); diff --git a/frontend/src/app/components/permissions/styles.module.css b/frontend/src/app/components/permissions/styles.module.css index 891783d..c83249c 100644 --- a/frontend/src/app/components/permissions/styles.module.css +++ b/frontend/src/app/components/permissions/styles.module.css @@ -1,19 +1,3 @@ -.imanginaryDiv { - padding: 18px; -} -.userPermissions { - display: flex; - flex-direction: column; - align-items: flex-start; - flex: 1 0 0; - align-self: stretch; - border-radius: 6px; - height: calc(100vh - 175px); - position: relative; - overflow: auto; - scrollbar-width: none; -} - .permissionsContainer { display: flex; padding: 24px; @@ -22,7 +6,6 @@ align-self: stretch; border-radius: 6px; background: #1d1e2a; - background: color(display-p3 0.1138 0.1191 0.1616); } .permissionsHeader { display: flex; @@ -39,9 +22,7 @@ align-items: flex-start; gap: 5px; flex: 1 0 0; - color: #d2d3e1; - color: color(display-p3 0.8235 0.8275 0.8784); font-family: Inter; font-size: 20px; font-style: normal; @@ -58,27 +39,26 @@ gap: 5px; border-radius: 6px; background: #27293b; - background: color(display-p3 0.1529 0.1608 0.2275); } -.svgContainer > div { +.svgContainer > button { display: flex; padding: 8px; + border: none; justify-content: center; align-items: center; gap: 12px; border-radius: 6px; background: #27293b; - background: color(display-p3 0.1529 0.1608 0.2275); } .permissionDefaultState { - display: flex; + align-items: center; + gap: 12px; + flex: 1 0 0; + align-self: stretch; height: 43.813px; padding: 8px 16px; - justify-content: center; - align-items: center; - align-self: stretch; } .permissionDefaultState p { display: flex; @@ -88,29 +68,28 @@ flex: 1 0 0; align-self: stretch; color: #85869b; - color: color(display-p3 0.5216 0.5255 0.6); font-family: Inter; font-size: 16px; font-style: normal; font-weight: 400; line-height: normal; } - +.permissionsList { + width: 100%; +} .permissions { display: flex; height: 43.813px; - padding: 8px 16px; + padding: 8px 8px 8px 16px; justify-content: space-between; align-items: center; align-self: stretch; border-bottom: 0.5px solid #2e3042; - border-bottom: 0.5px solid color(display-p3 0.1831 0.189 0.2535); } + .permissions:hover { border-bottom: 1px solid rgba(129, 135, 255, 0.25); - border-bottom: 1px solid color(display-p3 0.5098 0.5294 1 / 0.25); background: rgba(129, 135, 255, 0.05); - background: color(display-p3 0.5098 0.5294 1 / 0.05); } .permissionsItem { display: flex; @@ -121,7 +100,6 @@ } .permissionsItem > p { color: #d2d3e1; - color: color(display-p3 0.8235 0.8275 0.8784); font-family: Inter; font-size: 16px; font-style: normal; @@ -151,35 +129,40 @@ stroke: color(display-p3 1 1 1); border-radius: 100px; border: 1px solid #959aff; - border: 1px solid color(display-p3 0.5892 0.6031 0.9766); background: linear-gradient(180deg, #696b95 0%, #20202d 100%); - background: linear-gradient( - 180deg, - color(display-p3 0.4118 0.4196 0.5725) 0%, - color(display-p3 0.1241 0.1265 0.1725) 100% - ); } -.permissionDefaultState { - display: flex; - height: 43.813px; - padding: 8px 16px; - justify-content: center; - align-items: center; - align-self: stretch; -} -.permissionDefaultState p { - display: flex; - justify-content: center; - align-items: center; - gap: 12px; - flex: 1 0 0; - align-self: stretch; - color: #85869b; - color: color(display-p3 0.5216 0.5255 0.6); - font-family: Inter; - font-size: 16px; - font-style: normal; - font-weight: 400; - line-height: normal; +@media (max-width: 768px) { + .permissionsContainer { + border-radius: 4px; + padding: 0 0 24px 0; + } + .permissionsHeader { + padding: 12px 16px; + } + + .permissionsHeader > p { + color: #fff; + font-size: 18px; + align-self: stretch; + } + + .svgContainer { + display: none; + } + .permissionDefaultState { + gap: 12px; + align-self: stretch; + padding: 24px 16px 0 16px; + } + .permissionsList { + padding-top: 16px; + } + .permissions { + padding: 8px 16px; + } + .permissionDefaultState > p { + font-weight: 500; + text-align: center; + } } diff --git a/frontend/src/app/credentials/add/page.jsx b/frontend/src/app/credentials/add/page.jsx index ebe2109..8c3fb85 100644 --- a/frontend/src/app/credentials/add/page.jsx +++ b/frontend/src/app/credentials/add/page.jsx @@ -8,6 +8,7 @@ import TextField from "@/app/components/fields/textfield"; import Prompts from "@/app/components/prompts/Prompts"; import useRoleForm from "@/app/hooks/useRolesForm"; import Alert from "@/app/components/alerts/Alert"; +import useIsMobile from "@/app/hooks/useIsMobile"; const AddCredentialPage = () => { const { @@ -18,7 +19,10 @@ const AddCredentialPage = () => { triggerAlert, setTriggerAlert, } = useRoleForm(); + const [selectedFile, setSelectedFile] = useState(null); + const isMobile = useIsMobile(); + // Click const handleFileChange = (e) => { const file = e.target.files[0]; @@ -27,6 +31,7 @@ const AddCredentialPage = () => { console.log(file); //send this to backend later } }; + // Drag/Drop const handleDrop = (e) => { e.preventDefault(); @@ -39,6 +44,7 @@ const AddCredentialPage = () => { const handleDragOver = (e) => { e.preventDefault(); }; + return (
{triggerAlert && ( @@ -59,7 +65,7 @@ const AddCredentialPage = () => { /> {/* Create Crediantial Container */}
- + {isMobile ? "" : } {
- {/* Upload File */}
- {/* Label */}
-

Upload File

+

Upload File

{/* Optional or Required */} -

(Optional)

{" "} + {/*

(Optional)

{" "} */}
{/* Upload File */}