diff --git a/frontend/src/app/credentials/add/page.jsx b/frontend/src/app/credentials/add/page.jsx
new file mode 100644
index 0000000..7a43b5c
--- /dev/null
+++ b/frontend/src/app/credentials/add/page.jsx
@@ -0,0 +1,32 @@
+import React from "react";
+import TopHeader from "@/app/components/topHeader/TopHeader";
+import globalStyle from "../../globalStyle.module.css";
+import createCredStyle from "./styles.module.css";
+import TopToolTip from "@/app/components/topToolTip/TopToolTip";
+
+const page = () => {
+ return (
+
+
+
+
+ {/* Create Crediantial Container */}
+
+
+
+ {/* Project Name Input Container */}
+
+
+
+
+
+
+ );
+};
+
+export default page;
diff --git a/frontend/src/app/credentials/add/styles.module.css b/frontend/src/app/credentials/add/styles.module.css
new file mode 100644
index 0000000..e18567e
--- /dev/null
+++ b/frontend/src/app/credentials/add/styles.module.css
@@ -0,0 +1,18 @@
+.createCredContainer {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 48px;
+ flex: 1 0 0;
+ align-self: stretch;
+}
+
+.inputFieldContainer {
+ display: flex;
+ padding: 24px;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ gap: 24px;
+ border-radius: 8px;
+}
diff --git a/frontend/src/app/roles/[rolesId]/page.jsx b/frontend/src/app/roles/[rolesId]/page.jsx
new file mode 100644
index 0000000..a4c006a
--- /dev/null
+++ b/frontend/src/app/roles/[rolesId]/page.jsx
@@ -0,0 +1,207 @@
+import React from "react";
+import TopHeader from "@/app/components/topHeader/TopHeader";
+import globalStyle from "../../globalStyle.module.css";
+import editRoleStyle from "./styles.module.css";
+
+const page = () => {
+ const sampleData = [
+ { permission: "organization.delete" },
+ { permission: "user.create" },
+ { permission: "user.list" },
+ { permission: "user.update" },
+ { permission: "robot.create" },
+ { permission: "user.delete" },
+ { permission: "robot.list" },
+ { permission: "robot.delete" },
+ { permission: "project.delete" },
+ { permission: "project.update" },
+ { permission: "service.create" },
+ { permission: "service.list" },
+ { permission: "service.delete" },
+ { permission: "service.update" },
+ ];
+ return (
+
+
+
+
+
+ {/* Input fields Container */}
+
+ {/* User Details */}
+
+ {/* Header */}
+
+ {/* Input fields */}
+
+
+
+ {/* Permissions */}
+
+ {/* Add permissions */}
+
+ {/* Header */}
+
+
+ {/* State text (static) */}
+ {sampleData.map((perm, index) => {
+ return (
+
+
+
+
{perm.permission}
+
+
+
+
+ );
+ })}
+
+
+
+
+
+
+
+ );
+};
+
+export default page;
diff --git a/frontend/src/app/roles/[rolesId]/styles.module.css b/frontend/src/app/roles/[rolesId]/styles.module.css
new file mode 100644
index 0000000..153020c
--- /dev/null
+++ b/frontend/src/app/roles/[rolesId]/styles.module.css
@@ -0,0 +1,292 @@
+.addRoleContainer {
+ display: flex;
+ padding: 36px 144px 72px 144px;
+ align-items: flex-start;
+ gap: 24px;
+ flex: 1 0 0;
+ align-self: stretch;
+}
+.inputFieldContainer {
+ display: flex;
+ align-items: flex-start;
+ gap: 24px;
+ flex: 1 0 0;
+ align-self: stretch;
+}
+.userDetails {
+ display: flex;
+ width: 400px;
+ padding: 24px 24px 48px 24px;
+ flex-direction: column;
+ align-items: flex-start;
+ border-radius: 6px;
+ background: #1d1e2a;
+ background: color(display-p3 0.1137 0.1176 0.1608);
+}
+.header {
+ display: flex;
+ padding-bottom: 24px;
+ align-items: flex-start;
+ gap: 17px;
+ align-self: stretch;
+}
+.header > div {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: flex-start;
+ gap: 5px;
+ flex: 1 0 0;
+}
+.header > div > p {
+ width: 163px;
+ color: #d2d3e1;
+ color: color(display-p3 0.8235 0.8275 0.8784);
+ font-family: Inter;
+ font-size: 20px;
+ font-style: normal;
+ font-weight: 500;
+ line-height: normal;
+}
+.fields {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 16px;
+ align-self: stretch;
+}
+.selectRoleContainer,
+.inputMainContainer {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 8px;
+ align-self: stretch;
+}
+.inputContainer {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 12px;
+ flex: 1 0 0;
+}
+.label {
+ display: flex;
+ align-items: flex-start;
+ gap: 2px;
+ align-self: stretch;
+}
+.label > p {
+ color: #d2d3e1;
+ color: color(display-p3 0.8235 0.8275 0.8784);
+ font-family: Inter;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+}
+.inputField {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 8px;
+ align-self: stretch;
+}
+.inputField > input {
+ display: flex;
+ height: 44px;
+ padding: 12px 16px;
+ flex-direction: column;
+ justify-content: center;
+ align-items: flex-start;
+ background: none;
+ gap: 10px;
+ align-self: stretch;
+ border-radius: 6px;
+ border: 1px solid #616583;
+ border: 1px solid color(display-p3 0.3843 0.3961 0.5057);
+}
+.inputField > input:hover {
+ border: 1px solid #616583;
+ border: 1px solid color(display-p3 0.3843 0.3961 0.5057);
+ background: rgba(75, 79, 109, 0.05);
+ background: color(display-p3 0.298 0.3098 0.4196 / 0.05);
+}
+
+.inputField input:focus {
+ outline: none;
+ border-radius: 6px;
+ border: 1px solid #959aff;
+ border: 1px solid color(display-p3 0.5892 0.6031 0.9766);
+ background: rgba(75, 79, 109, 0.25);
+ background: color(display-p3 0.298 0.3098 0.4196 / 0.25);
+ caret-color: #959aff;
+}
+.inputField input:focus::placeholder {
+ color: #4b4f6d;
+ color: color(display-p3 0.298 0.3098 0.4196);
+}
+
+.placeholderTxt::placeholder {
+ 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;
+}
+
+.userPermissions {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ flex: 1 0 0;
+ align-self: stretch;
+ border-radius: 6px;
+}
+.permissionsContainer {
+ display: flex;
+ padding: 24px;
+ flex-direction: column;
+ align-items: flex-start;
+ align-self: stretch;
+ border-radius: 6px;
+ background: #1d1e2a;
+ background: color(display-p3 0.1138 0.1191 0.1616);
+}
+.permissionsHeader {
+ display: flex;
+ padding-bottom: 24px;
+ align-items: flex-start;
+ gap: 17px;
+ align-self: stretch;
+}
+
+.permissionsHeader > p {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ 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;
+ font-weight: 500;
+ line-height: normal;
+ width: 163px;
+}
+.svgContainer {
+ display: flex;
+ width: 40px;
+ height: 40px;
+ flex-direction: column;
+ align-items: flex-end;
+ gap: 5px;
+ border-radius: 6px;
+ background: #27293b;
+ background: color(display-p3 0.1529 0.1608 0.2275);
+}
+
+.svgContainer > div {
+ display: flex;
+ padding: 8px;
+ 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;
+ 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;
+}
+
+.permissions {
+ display: flex;
+ height: 43.813px;
+ padding: 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;
+ align-items: center;
+ gap: 12px;
+ flex: 1 0 0;
+ align-self: stretch;
+}
+.permissionsItem > p {
+ color: #d2d3e1;
+ color: color(display-p3 0.8235 0.8275 0.8784);
+ font-family: Inter;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+}
+.deleteBtn {
+ display: flex;
+ align-items: center;
+ align-self: stretch;
+}
+.deleteSvg {
+ display: flex;
+ padding: 6px;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border: 1px solid #959aff00;
+ color: #969af9;
+ aspect-ratio: 1/1;
+ border-radius: 100px;
+}
+
+.deleteSvg:hover {
+ color: #fff;
+ stroke-width: 1px;
+ 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%
+ );
+}
diff --git a/frontend/src/app/roles/add/page.jsx b/frontend/src/app/roles/add/page.jsx
new file mode 100644
index 0000000..3b9fbc5
--- /dev/null
+++ b/frontend/src/app/roles/add/page.jsx
@@ -0,0 +1,120 @@
+import React from "react";
+import TopHeader from "@/app/components/topHeader/TopHeader";
+import globalStyle from "../../globalStyle.module.css";
+import addRoleStyle from "./styles.module.css";
+
+const page = () => {
+ return (
+
+
+
+
+
+ {/* Input fields Container */}
+
+ {/* User Details */}
+
+ {/* Header */}
+
+ {/* Input fields */}
+
+
+
+ {/* Permissions */}
+
+ {/* Add permissions */}
+
+ {/* Header */}
+
+
+ {/* State text (static) */}
+
+
No permission added yet
+
+
+
+
+
+
+
+
+ );
+};
+
+export default page;
diff --git a/frontend/src/app/roles/add/styles.module.css b/frontend/src/app/roles/add/styles.module.css
new file mode 100644
index 0000000..21c5f86
--- /dev/null
+++ b/frontend/src/app/roles/add/styles.module.css
@@ -0,0 +1,253 @@
+.addUserContainer {
+ display: flex;
+ padding: 36px 144px 72px 144px;
+ align-items: flex-start;
+ gap: 24px;
+ flex: 1 0 0;
+ align-self: stretch;
+}
+.inputFieldContainer {
+ display: flex;
+ align-items: flex-start;
+ gap: 24px;
+ flex: 1 0 0;
+ align-self: stretch;
+}
+.roleDetails {
+ display: flex;
+ width: 400px;
+ padding: 24px 24px 48px 24px;
+ flex-direction: column;
+ align-items: flex-start;
+ border-radius: 6px;
+ background: #1d1e2a;
+ background: color(display-p3 0.1137 0.1176 0.1608);
+}
+.header {
+ display: flex;
+ padding-bottom: 24px;
+ align-items: flex-start;
+ gap: 17px;
+ align-self: stretch;
+}
+.header > div {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: flex-start;
+ gap: 5px;
+ flex: 1 0 0;
+}
+.header > div > p {
+ width: 163px;
+ color: #d2d3e1;
+ color: color(display-p3 0.8235 0.8275 0.8784);
+ font-family: Inter;
+ font-size: 20px;
+ font-style: normal;
+ font-weight: 500;
+ line-height: normal;
+}
+.fields {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 16px;
+ align-self: stretch;
+}
+.selectRoleContainer,
+.inputMainContainer {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 8px;
+ align-self: stretch;
+}
+.inputContainer {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 12px;
+ flex: 1 0 0;
+}
+.label {
+ display: flex;
+ align-items: flex-start;
+ gap: 2px;
+ align-self: stretch;
+}
+.label > p {
+ color: #d2d3e1;
+ color: color(display-p3 0.8235 0.8275 0.8784);
+ font-family: Inter;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+}
+.inputField {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 8px;
+ align-self: stretch;
+}
+.inputField > input {
+ display: flex;
+ height: 44px;
+ padding: 12px 16px;
+ flex-direction: column;
+ justify-content: center;
+ align-items: flex-start;
+ background: none;
+ gap: 10px;
+ align-self: stretch;
+ border-radius: 6px;
+ border: 1px solid #616583;
+ border: 1px solid color(display-p3 0.3843 0.3961 0.5057);
+}
+.inputField > input:hover {
+ border: 1px solid #616583;
+ border: 1px solid color(display-p3 0.3843 0.3961 0.5057);
+ background: rgba(75, 79, 109, 0.05);
+ background: color(display-p3 0.298 0.3098 0.4196 / 0.05);
+}
+
+.inputField input:focus {
+ outline: none;
+ border-radius: 6px;
+ border: 1px solid #959aff;
+ border: 1px solid color(display-p3 0.5892 0.6031 0.9766);
+ background: rgba(75, 79, 109, 0.25);
+ background: color(display-p3 0.298 0.3098 0.4196 / 0.25);
+ caret-color: #959aff;
+}
+.inputField input:focus::placeholder {
+ color: #4b4f6d;
+ color: color(display-p3 0.298 0.3098 0.4196);
+}
+
+.placeholderTxt::placeholder {
+ 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;
+}
+
+/* Select Role Dropdown */
+.selectField {
+ display: flex;
+ height: 44px;
+ padding: 12px 16px;
+ align-self: stretch;
+ background: none;
+ border-radius: 6px;
+ border: 1px solid #616583;
+ border: 1px solid color(display-p3 0.3843 0.3961 0.5057);
+ color: #d2d3e1;
+ font-family: Inter;
+ font-size: 16px;
+ font-weight: 400;
+ appearance: none;
+}
+
+.selectField:focus {
+ outline: none;
+ border: 1px solid #959aff;
+ border: 1px solid color(display-p3 0.5892 0.6031 0.9766);
+ background: rgba(75, 79, 109, 0.25);
+ background: color(display-p3 0.298 0.3098 0.4196 / 0.25);
+}
+
+.rolePermissions {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ flex: 1 0 0;
+ align-self: stretch;
+ border-radius: 6px;
+}
+.permissionsContainer {
+ display: flex;
+ padding: 24px;
+ flex-direction: column;
+ align-items: flex-start;
+ align-self: stretch;
+ border-radius: 6px;
+ background: #1d1e2a;
+ background: color(display-p3 0.1138 0.1191 0.1616);
+}
+.permissionsHeader {
+ display: flex;
+ padding-bottom: 24px;
+ align-items: flex-start;
+ gap: 17px;
+ align-self: stretch;
+}
+
+.permissionsHeader > p {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ 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;
+ font-weight: 500;
+ line-height: normal;
+ width: 163px;
+}
+.svgContainer {
+ display: flex;
+ width: 40px;
+ height: 40px;
+ flex-direction: column;
+ align-items: flex-end;
+ gap: 5px;
+ border-radius: 6px;
+ background: #27293b;
+ background: color(display-p3 0.1529 0.1608 0.2275);
+}
+
+.svgContainer > div {
+ display: flex;
+ padding: 8px;
+ 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;
+ 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;
+}
diff --git a/frontend/src/app/roles/page.jsx b/frontend/src/app/roles/page.jsx
index e93ac5c..f6cbeb5 100644
--- a/frontend/src/app/roles/page.jsx
+++ b/frontend/src/app/roles/page.jsx
@@ -1,9 +1,14 @@
+"use client";
+
import React from "react";
import TopHeader from "../components/topHeader/TopHeader";
import globalStyle from "../globalStyle.module.css";
import styles from "./styles.module.css";
+import { useRouter } from "next/navigation";
const RolesPage = () => {
+ const router = useRouter();
+
const sampleData = [
{
name: "organization-owner",
@@ -41,16 +46,20 @@ const RolesPage = () => {
- | Email |
- Full Name |
- Date Created |
+ Name |
+ Organization ID |
+ Permissions |
|
- {sampleData.map((data, index) => {
+ {sampleData.map((data, role) => {
+ //role or user?
return (
-
+
router.push(`/roles/${role.id}`)}
+ >
| {data.name} |
{data.orgId} |
{data.permissions} |
diff --git a/frontend/src/app/users/[usersId]/page.jsx b/frontend/src/app/users/[usersId]/page.jsx
index eec86cb..d96bcb0 100644
--- a/frontend/src/app/users/[usersId]/page.jsx
+++ b/frontend/src/app/users/[usersId]/page.jsx
@@ -11,6 +11,14 @@ const page = () => {
{ permission: "user.update" },
{ permission: "robot.create" },
{ permission: "user.delete" },
+ { permission: "robot.list" },
+ { permission: "robot.delete" },
+ { permission: "project.delete" },
+ { permission: "project.update" },
+ { permission: "service.create" },
+ { permission: "service.list" },
+ { permission: "service.delete" },
+ { permission: "service.update" },
];
return (
@@ -62,7 +70,7 @@ const page = () => {
type="text"
name=""
id=""
- placeholder="Enter Email"
+ placeholder="nino.moonshot@gmail.com" //static
className={editUserStyle.placeholderTxt}
/>
@@ -81,7 +89,7 @@ const page = () => {
type="text"
name=""
id=""
- placeholder="Enter full name"
+ placeholder="Nino Paul Cervantes" //static
className={editUserStyle.placeholderTxt}
/>