From cee114089a6b1e21adece7c5afcb9b10b483f83f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20R=C3=A9?= Date: Fri, 21 Mar 2025 11:37:40 +0400 Subject: [PATCH] Update remaining page headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Émile Ré --- apps/console/src/layouts/ConsoleLayout.tsx | 19 +- .../console/src/pages/ControlOverviewPage.tsx | 14 +- apps/console/src/pages/CreateControlPage.tsx | 14 +- apps/console/src/pages/CreatePeoplePage.tsx | 42 +-- apps/console/src/pages/CreatePolicyPage.tsx | 23 +- apps/console/src/pages/PageHeader.tsx | 7 +- apps/console/src/pages/PeopleOverviewPage.tsx | 261 ++++++++++-------- apps/console/src/pages/PolicyOverviewPage.tsx | 120 ++++---- apps/console/src/pages/UpdateControlPage.tsx | 12 +- .../console/src/pages/UpdateFrameworkPage.tsx | 16 +- apps/console/src/pages/UpdatePolicyPage.tsx | 21 +- apps/console/src/pages/VendorOverviewPage.tsx | 9 +- 12 files changed, 300 insertions(+), 258 deletions(-) diff --git a/apps/console/src/layouts/ConsoleLayout.tsx b/apps/console/src/layouts/ConsoleLayout.tsx index 6accb98bf..07678863b 100644 --- a/apps/console/src/layouts/ConsoleLayout.tsx +++ b/apps/console/src/layouts/ConsoleLayout.tsx @@ -291,6 +291,7 @@ function BreadcrumbControlOverview() { {data.control?.name} + ); } @@ -306,6 +307,17 @@ function BreadcrumbCreateControl() { ); } +function BreadcrumbUpdateControl() { + return ( + <> + + + Update Control + + + ); +} + function BreadcrumbPolicyList() { const { organizationId } = useParams(); return ( @@ -413,7 +425,12 @@ export default function ConsoleLayout() { } - /> + > + } + /> + } diff --git a/apps/console/src/pages/ControlOverviewPage.tsx b/apps/console/src/pages/ControlOverviewPage.tsx index 39ebab779..f9c1b8b51 100644 --- a/apps/console/src/pages/ControlOverviewPage.tsx +++ b/apps/console/src/pages/ControlOverviewPage.tsx @@ -75,6 +75,7 @@ import type { ControlOverviewPageAssignTaskMutation as ControlOverviewPageAssign import type { ControlOverviewPageUnassignTaskMutation as ControlOverviewPageUnassignTaskMutationType } from "./__generated__/ControlOverviewPageUnassignTaskMutation.graphql"; import type { ControlOverviewPageOrganizationQuery$data } from "./__generated__/ControlOverviewPageOrganizationQuery.graphql"; import type { ControlOverviewPageUpdateControlStateMutation as ControlOverviewPageUpdateControlStateMutationType } from "./__generated__/ControlOverviewPageUpdateControlStateMutation.graphql"; +import { PageHeader } from "./PageHeader"; // Function to format ISO8601 duration to human-readable format const formatDuration = (isoDuration: string): string => { @@ -1131,10 +1132,11 @@ function ControlOverviewPageContent({ {data.control.name || "Control"} - Probo -
-
-
-

{data.control.name}

+
+
-
+ } + /> +
diff --git a/apps/console/src/pages/CreateControlPage.tsx b/apps/console/src/pages/CreateControlPage.tsx index d74c647a2..ecb97370f 100644 --- a/apps/console/src/pages/CreateControlPage.tsx +++ b/apps/console/src/pages/CreateControlPage.tsx @@ -21,6 +21,7 @@ import { CreateControlPageCreateControlMutation, ControlImportance, } from "./__generated__/CreateControlPageCreateControlMutation.graphql"; +import { PageHeader } from "./PageHeader"; const createControlMutation = graphql` mutation CreateControlPageCreateControlMutation( @@ -185,13 +186,12 @@ function CreateControlPageContent() { Create Control - Probo -
-
-

Create Control

-

- Create a new control for your framework -

-
+
+
diff --git a/apps/console/src/pages/CreatePeoplePage.tsx b/apps/console/src/pages/CreatePeoplePage.tsx index d4e9e01e4..055105c52 100644 --- a/apps/console/src/pages/CreatePeoplePage.tsx +++ b/apps/console/src/pages/CreatePeoplePage.tsx @@ -10,6 +10,7 @@ import { useToast } from "@/hooks/use-toast"; import { HelpCircle } from "lucide-react"; import { cn } from "@/lib/utils"; import { CreatePeoplePageCreatePeopleMutation } from "./__generated__/CreatePeoplePageCreatePeopleMutation.graphql"; +import { PageHeader } from "./PageHeader"; const createPeopleMutation = graphql` mutation CreatePeoplePageCreatePeopleMutation( @@ -153,10 +154,15 @@ function CreatePeoplePageContent() { Create Person - Probo Console +
+ - -
-
+ +
-
-
- - -
- +
+ + +
+ +
); } diff --git a/apps/console/src/pages/CreatePolicyPage.tsx b/apps/console/src/pages/CreatePolicyPage.tsx index d957d429f..858c5a0c0 100644 --- a/apps/console/src/pages/CreatePolicyPage.tsx +++ b/apps/console/src/pages/CreatePolicyPage.tsx @@ -14,13 +14,14 @@ import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { useToast } from "@/hooks/use-toast"; -import { FileText, Calendar, User } from "lucide-react"; +import { Calendar, User } from "lucide-react"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import PolicyEditor from "@/components/PolicyEditor"; import PeopleSelector from "@/components/PeopleSelector"; import { Suspense } from "react"; import type { CreatePolicyPageMutation } from "./__generated__/CreatePolicyPageMutation.graphql"; import type { CreatePolicyPageQuery as CreatePolicyPageQueryType } from "./__generated__/CreatePolicyPageQuery.graphql"; +import { PageHeader } from "./PageHeader"; const CreatePolicyQuery = graphql` query CreatePolicyPageQuery($organizationId: ID!) { @@ -159,20 +160,12 @@ function CreatePolicyForm({ Create Policy - Probo Console -
-
-
-
- -
-
-
-

Create Policy

-

- Create a new policy for your organization -

-
-
+
+
diff --git a/apps/console/src/pages/PageHeader.tsx b/apps/console/src/pages/PageHeader.tsx index 3d197fae0..c077f7fde 100644 --- a/apps/console/src/pages/PageHeader.tsx +++ b/apps/console/src/pages/PageHeader.tsx @@ -3,14 +3,16 @@ import { ReactNode } from "react"; export function PageHeader({ className, + children, title, actions, description, }: { className?: string; + children?: ReactNode; title: string; actions?: ReactNode; - description: string; + description?: string; }) { return (
@@ -22,7 +24,8 @@ export function PageHeader({ ) : ( )} - {description} + {description && {description}} + {children}
); } diff --git a/apps/console/src/pages/PeopleOverviewPage.tsx b/apps/console/src/pages/PeopleOverviewPage.tsx index 6b64f504e..d6e80a201 100644 --- a/apps/console/src/pages/PeopleOverviewPage.tsx +++ b/apps/console/src/pages/PeopleOverviewPage.tsx @@ -18,6 +18,7 @@ import type { PeopleOverviewPageQuery as PeopleOverviewPageQueryType } from "./_ import { useParams } from "react-router"; import { Helmet } from "react-helmet-async"; import { cn } from "@/lib/utils"; +import { PageHeader } from "./PageHeader"; const peopleOverviewPageQuery = graphql` query PeopleOverviewPageQuery($peopleId: ID!) { @@ -161,140 +162,156 @@ function PeopleOverviewPageContent({ return ( <> -
-
- handleFieldChange("fullName", value)} - /> + + Person - Probo + +
+ +
+
+ handleFieldChange("fullName", value)} + /> - - handleFieldChange("primaryEmailAddress", value) - } - /> + + handleFieldChange("primaryEmailAddress", value) + } + /> -
-
- - -
- {formData.additionalEmailAddresses.map((email, index) => ( -
- { - const newEmails = [...formData.additionalEmailAddresses]; - newEmails[index] = e.target.value; - handleFieldChange("additionalEmailAddresses", newEmails); - }} - /> - -
- ))} - -
-
- - -
-
-

Additional Information

-

- Additional details about the person -

+
+ +
+
+ {formData.additionalEmailAddresses.map((email, index) => ( +
+ { + const newEmails = [ + ...formData.additionalEmailAddresses, + ]; + newEmails[index] = e.target.value; + handleFieldChange( + "additionalEmailAddresses", + newEmails + ); + }} + /> + +
+ ))} + +
+
+
-
- - -
-
- - - +

+ Additional Information +

+

+ Additional details about the person +

+
+ +
+
+
+ + +
+
+ + + +
-
-
+ +
-
- {hasChanges && ( -
- - -
- )} + {hasChanges && ( +
+ + +
+ )} +
); } diff --git a/apps/console/src/pages/PolicyOverviewPage.tsx b/apps/console/src/pages/PolicyOverviewPage.tsx index ff4910a72..6fd35838d 100644 --- a/apps/console/src/pages/PolicyOverviewPage.tsx +++ b/apps/console/src/pages/PolicyOverviewPage.tsx @@ -18,6 +18,7 @@ import type { PolicyOverviewPageDeleteMutation } from "./__generated__/PolicyOve import { Helmet } from "react-helmet-async"; import "../styles/policy-content.css"; import { useToast } from "@/hooks/use-toast"; +import { PageHeader } from "./PageHeader"; const PolicyOverviewPageQuery = graphql` query PolicyOverviewPageQuery($policyId: ID!) { @@ -152,72 +153,65 @@ function PolicyOverviewPageContent({ {policy.name} - Probo Console -
-
-
-
-
- -
-
-
-

{policy.name}

-
- + +
-
-
-
- + - + + Download + +
+ } + > +
+ + {policy.status === "ACTIVE" ? "Active" : "Draft"} + + {policy.owner && ( +
+ + + {policy.owner.fullName} + +
+ )} + {policy.reviewDate && ( +
+ + Review: {formatDate(policy.reviewDate)} +
+ )}
-
+
diff --git a/apps/console/src/pages/UpdateControlPage.tsx b/apps/console/src/pages/UpdateControlPage.tsx index 4e5bdac3d..e0775eba2 100644 --- a/apps/console/src/pages/UpdateControlPage.tsx +++ b/apps/console/src/pages/UpdateControlPage.tsx @@ -28,6 +28,7 @@ import type { ControlState, ControlImportance, } from "./__generated__/UpdateControlPageUpdateControlMutation.graphql"; +import { PageHeader } from "./PageHeader"; const updateControlMutation = graphql` mutation UpdateControlPageUpdateControlMutation($input: UpdateControlInput!) { @@ -253,11 +254,12 @@ function UpdateControlPageContent({ Update Control - Probo -
-
-

Update Control

-

Update the control details

-
+
+ diff --git a/apps/console/src/pages/UpdateFrameworkPage.tsx b/apps/console/src/pages/UpdateFrameworkPage.tsx index 18d0160ff..dbf9c4f3a 100644 --- a/apps/console/src/pages/UpdateFrameworkPage.tsx +++ b/apps/console/src/pages/UpdateFrameworkPage.tsx @@ -18,6 +18,7 @@ import { HelpCircle } from "lucide-react"; import { cn } from "@/lib/utils"; import { UpdateFrameworkPageUpdateFrameworkMutation } from "./__generated__/UpdateFrameworkPageUpdateFrameworkMutation.graphql"; import { UpdateFrameworkPageQuery as UpdateFrameworkPageQueryType } from "./__generated__/UpdateFrameworkPageQuery.graphql"; +import { PageHeader } from "./PageHeader"; const updateFrameworkMutation = graphql` mutation UpdateFrameworkPageUpdateFrameworkMutation( @@ -87,7 +88,7 @@ function EditableField({ } className={cn( "w-full resize-none", - required && !value && "border-red-500", + required && !value && "border-red-500" )} placeholder={`Enter ${label.toLowerCase()}`} rows={4} @@ -134,7 +135,7 @@ function UpdateFrameworkPageContent({ const [commit, isInFlight] = useMutation( - updateFrameworkMutation, + updateFrameworkMutation ); const handleFieldChange = (field: keyof typeof formData, value: unknown) => { @@ -202,11 +203,12 @@ function UpdateFrameworkPageContent({ Update Framework - Probo -
-
-

Update Framework

-

Update the framework details

-
+
+ diff --git a/apps/console/src/pages/UpdatePolicyPage.tsx b/apps/console/src/pages/UpdatePolicyPage.tsx index c1f1b18e7..f65aa3c99 100644 --- a/apps/console/src/pages/UpdatePolicyPage.tsx +++ b/apps/console/src/pages/UpdatePolicyPage.tsx @@ -13,13 +13,14 @@ import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { toast } from "@/hooks/use-toast"; -import { FileText, Calendar, User } from "lucide-react"; +import { Calendar, User } from "lucide-react"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { Suspense } from "react"; import PolicyEditor from "@/components/PolicyEditor"; import PeopleSelector from "@/components/PeopleSelector"; import type { UpdatePolicyPageQuery as UpdatePolicyPageQueryType } from "./__generated__/UpdatePolicyPageQuery.graphql"; import type { UpdatePolicyPageMutation as UpdatePolicyPageMutationType } from "./__generated__/UpdatePolicyPageMutation.graphql"; +import { PageHeader } from "./PageHeader"; const UpdatePolicyPageQuery = graphql` query UpdatePolicyPageQuery($policyId: ID!, $organizationId: ID!) { @@ -151,18 +152,12 @@ function UpdatePolicyPageContent({ Update Policy - Probo Console -
-
-
-
- -
-
-
-

Update Policy

-

Update an existing policy

-
-
+
+
diff --git a/apps/console/src/pages/VendorOverviewPage.tsx b/apps/console/src/pages/VendorOverviewPage.tsx index 325c522be..73956d7c2 100644 --- a/apps/console/src/pages/VendorOverviewPage.tsx +++ b/apps/console/src/pages/VendorOverviewPage.tsx @@ -18,6 +18,7 @@ import type { VendorOverviewPageQuery as VendorOverviewPageQueryType } from "./_ import { useParams } from "react-router"; import { Helmet } from "react-helmet-async"; import { cn } from "@/lib/utils"; +import { PageHeader } from "./PageHeader"; const vendorOverviewPageQuery = graphql` query VendorOverviewPageQuery($vendorId: ID!) { @@ -205,8 +206,12 @@ function VendorOverviewPageContent({ return ( <> -
-
+ + Vendor - Probo + +
+ +