diff --git a/apps/console/src/components/NavMain.tsx b/apps/console/src/components/NavMain.tsx index 74b37394f..0390f0cd4 100644 --- a/apps/console/src/components/NavMain.tsx +++ b/apps/console/src/components/NavMain.tsx @@ -145,9 +145,11 @@ function getNavItems(organizationId?: string): NavItem[] { : undefined, }, { - title: "Risk", + title: "Risks", icon: Shield, - url: organizationId ? `/organizations/${organizationId}/risk` : undefined, + url: organizationId + ? `/organizations/${organizationId}/risks` + : undefined, }, { title: "Frameworks", diff --git a/apps/console/src/components/ui/table.tsx b/apps/console/src/components/ui/table.tsx new file mode 100644 index 000000000..1031493c9 --- /dev/null +++ b/apps/console/src/components/ui/table.tsx @@ -0,0 +1,114 @@ +import * as React from "react"; + +import { cn } from "@/lib/utils"; + +const Table = React.forwardRef< + HTMLTableElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+ + +)); +Table.displayName = "Table"; + +const TableHeader = React.forwardRef< + HTMLTableSectionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)); +TableHeader.displayName = "TableHeader"; + +const TableBody = React.forwardRef< + HTMLTableSectionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)); +TableBody.displayName = "TableBody"; + +const TableFooter = React.forwardRef< + HTMLTableSectionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)); +TableFooter.displayName = "TableFooter"; + +const TableRow = React.forwardRef< + HTMLTableRowElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)); +TableRow.displayName = "TableRow"; + +const TableHead = React.forwardRef< + HTMLTableCellElement, + React.ThHTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +TableHead.displayName = "TableHead"; + +const TableCell = React.forwardRef< + HTMLTableCellElement, + React.TdHTMLAttributes +>(({ className, ...props }, ref) => ( + +)); +TableCell.displayName = "TableCell"; + +const TableCaption = React.forwardRef< + HTMLTableCaptionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +TableCaption.displayName = "TableCaption"; + +export { + Table, + TableHeader, + TableBody, + TableFooter, + TableHead, + TableRow, + TableCell, + TableCaption, +}; diff --git a/apps/console/src/pages/organizations/Routes.tsx b/apps/console/src/pages/organizations/Routes.tsx index 2dae27cfa..7f43c0185 100644 --- a/apps/console/src/pages/organizations/Routes.tsx +++ b/apps/console/src/pages/organizations/Routes.tsx @@ -9,9 +9,7 @@ import { CreatePeoplePage } from "./people/CreatePeoplePage"; import { PeoplePage } from "./people/PeoplePage"; import { CreateFrameworkPage } from "./frameworks/CreateFrameworkPage"; import { UpdateFrameworkPage } from "./frameworks/UpdateFrameworkPage"; -import { CreateMitigationPage } from "./frameworks/mitigations/CreateMitigationPage"; -import { MitigationPage } from "./frameworks/mitigations/MitigationPage"; -import { UpdateMitigationPage } from "./frameworks/mitigations/UpdateMitigationPage"; +import { MitigationPage } from "./mitigations/MitigationPage"; import { VendorPage } from "./vendors/VendorPage"; import { PolicyListPage } from "./policies/PolicyListPage"; import { CreatePolicyPage } from "./policies/CreatePolicyPage"; @@ -19,6 +17,8 @@ import { PolicyPage } from "./policies/PolicyPage"; import { UpdatePolicyPage } from "./policies/UpdatePolicyPage"; import { SettingsPage } from "./SettingsPage"; import { CreateOrganizationPage } from "./CreateOrganizationPage"; +import { MitigationListPage } from "./mitigations/MitigationListPage"; + import HomePage from "./HomePage"; import NotFoundPage from "../NotFoundPage"; @@ -38,18 +38,13 @@ export function OrganizationsRoutes() { path="frameworks/:frameworkId/update" element={} /> + } /> + } /> + {/* } /> } - /> - } - /> - } - /> + /> */} } /> } /> } /> diff --git a/apps/console/src/pages/organizations/frameworks/mitigations/CreateMitigationPage.tsx b/apps/console/src/pages/organizations/frameworks/mitigations/CreateMitigationPage.tsx deleted file mode 100644 index 39f05dd52..000000000 --- a/apps/console/src/pages/organizations/frameworks/mitigations/CreateMitigationPage.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { PageTemplateSkeleton } from "@/components/PageTemplate"; -import { ErrorBoundaryWithLocation } from "../../ErrorBoundary"; -import { Suspense } from "react"; -import { useLocation } from "react-router"; -import { lazy } from "@probo/react-lazy"; - -const CreateMitigationView = lazy(() => import("./CreateMitigationView")); - -export function CreateMitigationViewSkeleton() { - return ( - -
- - ); -} - -export function CreateMitigationPage() { - const location = useLocation(); - - return ( - } - > - - - - - ); -} diff --git a/apps/console/src/pages/organizations/frameworks/mitigations/CreateMitigationView.tsx b/apps/console/src/pages/organizations/frameworks/mitigations/CreateMitigationView.tsx deleted file mode 100644 index 43bc841e2..000000000 --- a/apps/console/src/pages/organizations/frameworks/mitigations/CreateMitigationView.tsx +++ /dev/null @@ -1,266 +0,0 @@ -import { Suspense, useState } from "react"; -import { useNavigate, useParams } from "react-router"; -import { graphql, useMutation, ConnectionHandler } from "react-relay"; -import { Button } from "@/components/ui/button"; -import { Card } from "@/components/ui/card"; -import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; -import { Textarea } from "@/components/ui/textarea"; -import { useToast } from "@/hooks/use-toast"; -import { HelpCircle } from "lucide-react"; -import { cn } from "@/lib/utils"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; -import { - CreateMitigationViewCreateMitigationMutation, - MitigationImportance, -} from "./__generated__/CreateMitigationViewCreateMitigationMutation.graphql"; -import { PageTemplate } from "@/components/PageTemplate"; -import { CreateMitigationViewSkeleton } from "./CreateMitigationPage"; - -const createMitigationMutation = graphql` - mutation CreateMitigationViewCreateMitigationMutation( - $input: CreateMitigationInput! - $connections: [ID!]! - ) { - createMitigation(input: $input) { - mitigationEdge @prependEdge(connections: $connections) { - node { - id - name - description - category - state - } - } - } - } -`; - -function EditableField({ - label, - value, - onChange, - type = "text", - helpText, - required, - multiline = false, -}: { - label: string; - value: string; - onChange: (value: string) => void; - type?: string; - helpText?: string; - required?: boolean; - multiline?: boolean; -}) { - return ( -
-
- - {helpText && ( -
- - {helpText} -
- )} -
- {multiline ? ( -