diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/[controlId]/page.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/[controlId]/page.tsx index 4804363287..76e5f59141 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/[controlId]/page.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/[controlId]/page.tsx @@ -49,7 +49,7 @@ export default async function SingleControlPage({ params }: PageProps) { label: "Controls", href: `/${session.session.activeOrganizationId}/controls`, }, - { label: control.name }, + { label: control.name, current: true }, ]} > diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/page.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/page.tsx index 24595407bf..c97d6fcf9d 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/page.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/page.tsx @@ -9,45 +9,45 @@ import { getControls } from "./data/queries"; import { ControlsTable } from "./components/controls-table"; interface ControlTableProps { - params: Promise<{ locale: string }>; - searchParams: Promise; + params: Promise<{ locale: string }>; + searchParams: Promise; } export default async function ControlsPage({ - params, - ...props + params, + ...props }: ControlTableProps) { - const { locale } = await params; - const searchParams = await props.searchParams; - const search = searchParamsCache.parse(searchParams); - const validFilters = getValidFilters(search.filters); - setStaticParamsLocale(locale); + const { locale } = await params; + const searchParams = await props.searchParams; + const search = searchParamsCache.parse(searchParams); + const validFilters = getValidFilters(search.filters); + setStaticParamsLocale(locale); - const promises = Promise.all([ - getControls({ - ...search, - filters: validFilters, - }), - ]); + const promises = Promise.all([ + getControls({ + ...search, + filters: validFilters, + }), + ]); - return ( - - - - ); + return ( + + + + ); } export async function generateMetadata({ - params, + params, }: { - params: Promise<{ locale: string }>; + params: Promise<{ locale: string }>; }): Promise { - const { locale } = await params; + const { locale } = await params; - setStaticParamsLocale(locale); - const t = await getI18n(); + setStaticParamsLocale(locale); + const t = await getI18n(); - return { - title: t("sidebar.policies"), - }; -} \ No newline at end of file + return { + title: t("sidebar.policies"), + }; +} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/(overview)/data/getEvidenceDashboard.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/(overview)/data/getEvidenceDashboard.ts index 9847cbcf7f..7d550abc8f 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/(overview)/data/getEvidenceDashboard.ts +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/(overview)/data/getEvidenceDashboard.ts @@ -1,12 +1,22 @@ -import type { Departments, Evidence } from "@comp/db/types"; +import type { + Departments, + Evidence, + EvidenceStatus, + Member, + User, + Frequency, +} from "@comp/db/types"; import { db } from "@comp/db"; import { cache } from "react"; -export type EvidenceStatus = "empty" | "draft" | "needsReview" | "upToDate"; +// Only define the dashboard-specific status which isn't in DB +type DashboardStatus = "empty" | "draft" | "needsReview" | "upToDate"; -export interface EvidenceWithStatus extends Omit { - status: EvidenceStatus; +// Extend the Evidence type with only what's needed for the dashboard +interface EvidenceWithStatus extends Omit { + status: DashboardStatus; assigneeEmail?: string; + dbStatus?: EvidenceStatus | null; } export interface EvidenceDashboardData { @@ -35,7 +45,11 @@ export const getEvidenceDashboard = cache( organizationId, }, include: { - assignee: true, + assignee: { + include: { + user: true, + }, + }, }, }); @@ -82,7 +96,7 @@ export const getEvidenceDashboard = cache( const isPastDue = nextReviewDate && nextReviewDate < now; - let status: EvidenceStatus; + let status: DashboardStatus; if (!hasContent && !isPublished) { // No files or links @@ -103,15 +117,13 @@ export const getEvidenceDashboard = cache( } // Extract assignee email if available - const assigneeEmail = item.assignee?.email || undefined; - - // Create a new object without the assignee property - const { assignee, ...evidenceWithoutAssignee } = item; + const assigneeEmail = item.assignee?.user?.email || undefined; return { - ...evidenceWithoutAssignee, + ...item, status, assigneeEmail, + dbStatus: item.status, }; }); @@ -173,7 +185,7 @@ export const getEvidenceDashboard = cache( if (firstAssigneeEmail) { const firstAssigneeItems = byAssignee[firstAssigneeEmail]; // Count items by status for the first assignee - const statusCounts = { + const statusCounts: Record = { empty: 0, draft: 0, needsReview: 0, diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/(overview)/layout.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/(overview)/layout.tsx deleted file mode 100644 index d92b10ff91..0000000000 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/(overview)/layout.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { auth } from "@comp/auth"; -import { getI18n } from "@/locales/server"; -import { SecondaryMenu } from "@comp/ui/secondary-menu"; -import { headers } from "next/headers"; - -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { - const t = await getI18n(); - - const session = await auth.api.getSession({ - headers: await headers(), - }); - - const user = session?.user; - const organizationId = session?.session.activeOrganizationId; - - return ( -
- - -
{children}
-
- ); -} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/PathProvider.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/PathProvider.tsx similarity index 96% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/PathProvider.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/PathProvider.tsx index cae029dbf7..a0510314fd 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/PathProvider.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/PathProvider.tsx @@ -55,7 +55,7 @@ export function PathProvider({ }, ]} showBackButton={showBackButton} - backButtonHref={`/${organizationId}/evidence/list`} + backButtonHref={`/${organizationId}/evidence/all`} backButtonLabel={translationBackButton} /> ); diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/assignEvidence.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/assignEvidence.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/assignEvidence.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/assignEvidence.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/deleteEvidenceFile.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/deleteEvidenceFile.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/deleteEvidenceFile.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/deleteEvidenceFile.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/getEvidenceFileUrl.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/getEvidenceFileUrl.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/getEvidenceFileUrl.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/getEvidenceFileUrl.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/publishEvidence.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/publishEvidence.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/publishEvidence.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/publishEvidence.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/toggleRelevance.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/toggleRelevance.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/toggleRelevance.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/toggleRelevance.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/updateEvidenceDepartment.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/updateEvidenceDepartment.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/updateEvidenceDepartment.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/updateEvidenceDepartment.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/updateEvidenceDetails.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/updateEvidenceDetails.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/updateEvidenceDetails.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/updateEvidenceDetails.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/updateEvidenceFrequency.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/updateEvidenceFrequency.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/updateEvidenceFrequency.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/updateEvidenceFrequency.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/updateEvidenceUrls.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/updateEvidenceUrls.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/updateEvidenceUrls.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/updateEvidenceUrls.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/uploadEvidenceFile.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/uploadEvidenceFile.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/actions/uploadEvidenceFile.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/actions/uploadEvidenceFile.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EditEvidenceForm.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EditEvidenceForm.tsx similarity index 86% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EditEvidenceForm.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EditEvidenceForm.tsx index ff8d301040..8b75ba5cda 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EditEvidenceForm.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EditEvidenceForm.tsx @@ -9,8 +9,8 @@ import { UrlSection } from "./UrlSection"; import { useEvidence } from "../hooks/useEvidence"; export function EditEvidenceForm() { - const { id } = useParams<{ id: string }>(); - const { data, isLoading, error, mutate } = useEvidence({ id }); + const { evidenceId } = useParams<{ evidenceId: string }>(); + const { data, isLoading, error, mutate } = useEvidence({ id: evidenceId }); const t = useI18n(); if (isLoading) { @@ -46,13 +46,13 @@ export function EditEvidenceForm() { diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EvidenceDepartmentSection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EvidenceDepartmentSection.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EvidenceDepartmentSection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EvidenceDepartmentSection.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EvidenceDetails.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EvidenceDetails.tsx similarity index 94% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EvidenceDetails.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EvidenceDetails.tsx index dd3eca4693..09fc3f9426 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EvidenceDetails.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EvidenceDetails.tsx @@ -5,6 +5,7 @@ import { FileIcon } from "lucide-react"; import type { EvidenceDetailsProps } from "../types"; import { EditEvidenceForm } from "./EditEvidenceForm"; import { ReviewSection } from "./ReviewSection"; +import PageWithBreadcrumb from "@/components/pages/PageWithBreadcrumb"; export function EvidenceDetails({ assignees, evidence }: EvidenceDetailsProps) { return ( diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EvidenceFrequencySection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EvidenceFrequencySection.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EvidenceFrequencySection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EvidenceFrequencySection.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EvidenceNextReviewSection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EvidenceNextReviewSection.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EvidenceNextReviewSection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EvidenceNextReviewSection.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EvidenceStatusSection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EvidenceStatusSection.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/EvidenceStatusSection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/EvidenceStatusSection.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/FileCard.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/FileCard.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/FileCard.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/FileCard.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/FileIcon.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/FileIcon.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/FileIcon.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/FileIcon.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/FileSection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/FileSection.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/FileSection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/FileSection.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/FileUpload.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/FileUpload.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/FileUpload.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/FileUpload.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/ReviewDateCard.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/ReviewDateCard.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/ReviewDateCard.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/ReviewDateCard.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/ReviewSection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/ReviewSection.tsx similarity index 98% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/ReviewSection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/ReviewSection.tsx index 527923e185..4f91bab51c 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/ReviewSection.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/ReviewSection.tsx @@ -25,9 +25,11 @@ import { SelectAssignee } from "../../../components/SelectAssignee"; interface ReviewSectionProps { evidence: Evidence & { - assignee: Member & { - user: User; - }; + assignee?: + | (Member & { + user: User; + }) + | null; }; lastPublishedAt: Date | null; frequency: Frequency | null; diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/UrlSection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/UrlSection.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/components/UrlSection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/components/UrlSection.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/hooks/useEvidence.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/hooks/useEvidence.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/hooks/useEvidence.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/hooks/useEvidence.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/hooks/useFileDelete.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/hooks/useFileDelete.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/hooks/useFileDelete.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/hooks/useFileDelete.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/hooks/useFilePreview.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/hooks/useFilePreview.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/hooks/useFilePreview.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/hooks/useFilePreview.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/hooks/useFileUpload.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/hooks/useFileUpload.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/hooks/useFileUpload.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/hooks/useFileUpload.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/hooks/useUrlManagement.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/hooks/useUrlManagement.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/hooks/useUrlManagement.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/hooks/useUrlManagement.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/page.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/page.tsx similarity index 64% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/page.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/page.tsx index d99d30dbb6..28f76ef65e 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/page.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/page.tsx @@ -1,21 +1,31 @@ +import { auth } from "@comp/auth"; import { db } from "@comp/db"; -import { EvidenceDetails } from "./components/EvidenceDetails"; import { headers } from "next/headers"; -import { auth } from "@comp/auth"; - +import { EvidenceDetails } from "./components/EvidenceDetails"; +import PageWithBreadcrumb from "@/components/pages/PageWithBreadcrumb"; interface EvidencePageProps { params: Promise<{ - id: string; + evidenceId: string; + orgId: string; }>; } export default async function EvidencePage({ params }: EvidencePageProps) { - const { id } = await params; + const { evidenceId, orgId } = await params; const assignees = await getAssignees(); - const evidence = await getEvidence(id); + const evidence = await getEvidence(evidenceId); - return ; + return ( + + + + ); } const getAssignees = async () => { @@ -50,7 +60,11 @@ const getEvidence = async (id: string) => { id, }, include: { - assignee: true, + assignee: { + include: { + user: true, + }, + }, }, }); diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/types.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/types.ts similarity index 84% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/types.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/types.ts index f325faefc8..f71ae3270d 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/types.ts +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[evidenceId]/types.ts @@ -21,12 +21,12 @@ export interface UploadFileResponse }> {} export interface EvidenceDetailsProps { - assignees: (Member & { - user: User; - })[]; evidence: Evidence & { - assignee: Member & { - user: User; - }; + assignee?: + | (Member & { + user: User; + }) + | null; }; + assignees: Array; } diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/layout.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/layout.tsx deleted file mode 100644 index cd01afd4bb..0000000000 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/[id]/layout.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { auth } from "@comp/auth"; -import { getI18n } from "@/locales/server"; -import { SecondaryMenu } from "@comp/ui/secondary-menu"; -import { headers } from "next/headers"; - -export default async function Layout({ - children, - params, -}: { - children: React.ReactNode; - params: Promise<{ id: string }>; -}) { - const t = await getI18n(); - const session = await auth.api.getSession({ - headers: await headers(), - }); - const user = session?.user; - const organizationId = session?.session.activeOrganizationId; - const { id } = await params; - - return ( -
- - -
{children}
-
- ); -} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/EvidenceList.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/EvidenceList.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/EvidenceList.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/EvidenceList.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/EvidenceListUIStates.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/EvidenceListUIStates.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/EvidenceListUIStates.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/EvidenceListUIStates.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/EvidenceSummaryCards.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/EvidenceSummaryCards.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/EvidenceSummaryCards.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/EvidenceSummaryCards.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/index.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/index.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/index.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/index.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/EvidenceFilters/ActiveFilterBadges.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/EvidenceFilters/ActiveFilterBadges.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/EvidenceFilters/ActiveFilterBadges.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/EvidenceFilters/ActiveFilterBadges.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/EvidenceFilters/index.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/EvidenceFilters/index.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/EvidenceFilters/index.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/EvidenceFilters/index.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/EvidenceListColumns.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/EvidenceListColumns.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/EvidenceListColumns.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/EvidenceListColumns.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/EvidenceListHeader.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/EvidenceListHeader.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/EvidenceListHeader.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/EvidenceListHeader.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/EvidenceListTable.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/EvidenceListTable.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/EvidenceListTable.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/EvidenceListTable.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/components/AssigneeAvatar.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/components/AssigneeAvatar.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/components/AssigneeAvatar.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/components/AssigneeAvatar.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/components/filterCategories.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/components/filterCategories.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/components/filterCategories.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/components/filterCategories.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/components/filterConfigs.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/components/filterConfigs.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/components/filterConfigs.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/components/filterConfigs.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/index.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/index.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/components/table/index.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/components/table/index.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/hooks/useEvidenceTableContext.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/hooks/useEvidenceTableContext.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/hooks/useEvidenceTableContext.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/hooks/useEvidenceTableContext.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/loading.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/loading.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/loading.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/loading.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/page.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/page.tsx similarity index 55% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/page.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/page.tsx index a65d876666..e286e0b5d6 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/page.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/page.tsx @@ -1,10 +1,12 @@ import { EvidenceList } from "./components/EvidenceList"; import { EvidenceTableProvider } from "./hooks/useEvidenceTableContext"; - +import PageWithBreadcrumb from "@/components/pages/PageWithBreadcrumb"; export default function EvidencePage() { return ( - + + + ); } diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/types.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/types.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/types.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/all/types.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/layout.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/layout.tsx new file mode 100644 index 0000000000..6a85cc439e --- /dev/null +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/layout.tsx @@ -0,0 +1,31 @@ +import { getI18n } from "@/locales/server"; +import { SecondaryMenu } from "@comp/ui/secondary-menu"; + +interface LayoutProps { + children: React.ReactNode; + params: Promise<{ policyId: string; orgId: string }>; +} + +export default async function Layout({ children, params }: LayoutProps) { + const t = await getI18n(); + const { orgId } = await params; + + return ( +
+ +
{children}
+
+ ); +} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/layout.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/layout.tsx deleted file mode 100644 index 99bf5a690a..0000000000 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/evidence/list/layout.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { auth } from "@comp/auth"; -import { getI18n } from "@/locales/server"; -import { SecondaryMenu } from "@comp/ui/secondary-menu"; -import { headers } from "next/headers"; - -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { - const t = await getI18n(); - const session = await auth.api.getSession({ - headers: await headers(), - }); - const user = session?.user; - const organizationId = session?.session.activeOrganizationId; - - return ( -
- - -
{children}
-
- ); -} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/[policyId]/page.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/[policyId]/page.tsx index 4b58dde86d..a286468011 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/[policyId]/page.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/[policyId]/page.tsx @@ -22,7 +22,7 @@ export default async function PolicyDetails({ diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/all/page.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/all/page.tsx index 37f3097bfd..854515fc6f 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/all/page.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/all/page.tsx @@ -32,7 +32,7 @@ export default async function PoliciesPage({ ]); return ( - + ); diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/layout.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/layout.tsx index ccacc06346..6d09cf22b7 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/layout.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/layout.tsx @@ -1,6 +1,5 @@ import { getI18n } from "@/locales/server"; import { SecondaryMenu } from "@comp/ui/secondary-menu"; -import { Separator } from "@comp/ui/separator"; interface LayoutProps { children: React.ReactNode; @@ -12,7 +11,7 @@ export default async function Layout({ children, params }: LayoutProps) { const { orgId } = await params; return ( -
+
setArchiveOpen("true")} title={ policy?.isArchived @@ -78,7 +78,7 @@ export function PolicyOverview({