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 (
+
+ );
+}
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({