From 91f48d348364b605c90c6d11768ddf221c9758be Mon Sep 17 00:00:00 2001 From: Lewis Carhart Date: Sat, 21 Mar 2026 16:27:45 +0000 Subject: [PATCH] refactor(framework-editor): update policy templates to use FrameworkEditorPolicyTemplate type - Replaced instances of PolicyTemplateItem and PolicyTemplate with FrameworkEditorPolicyTemplate in the policies page and related components. - Updated type definitions in PoliciesClientPage and PolicyDetailsClientPage to ensure consistency across the framework editor. - Enhanced type safety for policy handling in the framework editor. --- .../[frameworkId]/policies/page.tsx | 13 ++----------- .../(pages)/policies/PoliciesClientPage.tsx | 15 +++------------ .../[policyId]/PolicyDetailsClientPage.tsx | 11 ++--------- .../app/(pages)/policies/[policyId]/page.tsx | 19 +++++-------------- 4 files changed, 12 insertions(+), 46 deletions(-) diff --git a/apps/framework-editor/app/(pages)/frameworks/[frameworkId]/policies/page.tsx b/apps/framework-editor/app/(pages)/frameworks/[frameworkId]/policies/page.tsx index bff4edf9f..31e720ba8 100644 --- a/apps/framework-editor/app/(pages)/frameworks/[frameworkId]/policies/page.tsx +++ b/apps/framework-editor/app/(pages)/frameworks/[frameworkId]/policies/page.tsx @@ -1,18 +1,9 @@ import { serverApi } from '@/app/lib/api-server'; import { isAuthorized } from '@/app/lib/utils'; +import type { FrameworkEditorPolicyTemplate } from '@/db'; import { redirect } from 'next/navigation'; import { PoliciesClientPage } from '../../../policies/PoliciesClientPage'; -interface PolicyTemplateItem { - id: string; - name: string; - description: string; - frequency: string; - department: string; - createdAt: string | Date; - updatedAt: string | Date; -} - export default async function Page({ params, }: { @@ -24,7 +15,7 @@ export default async function Page({ const { frameworkId } = await params; const policies = - await serverApi(`/policy-template?frameworkId=${frameworkId}`); + await serverApi(`/policy-template?frameworkId=${frameworkId}`); return ; } diff --git a/apps/framework-editor/app/(pages)/policies/PoliciesClientPage.tsx b/apps/framework-editor/app/(pages)/policies/PoliciesClientPage.tsx index 48864c91e..9ef1196bb 100644 --- a/apps/framework-editor/app/(pages)/policies/PoliciesClientPage.tsx +++ b/apps/framework-editor/app/(pages)/policies/PoliciesClientPage.tsx @@ -2,6 +2,7 @@ import { apiClient } from '@/app/lib/api-client'; import { DataTable } from '@/app/components/DataTable'; +import type { FrameworkEditorPolicyTemplate } from '@/db'; import { Button } from '@trycompai/ui'; import { Link } from 'lucide-react'; import { useRouter } from 'next/navigation'; @@ -13,18 +14,8 @@ import { import { columns } from './components/columns'; import { CreatePolicyDialog } from './components/CreatePolicyDialog'; -interface PolicyItem { - id: string; - name: string; - description: string; - frequency: string; - department: string; - createdAt: string | Date; - updatedAt: string | Date; -} - interface PoliciesClientPageProps { - initialPolicies: PolicyItem[]; + initialPolicies: FrameworkEditorPolicyTemplate[]; emptyMessage?: string; frameworkId?: string; } @@ -44,7 +35,7 @@ export function PoliciesClientPage({ initialPolicies, emptyMessage, frameworkId [], ); - const handleRowClick = (policy: PolicyItem) => { + const handleRowClick = (policy: FrameworkEditorPolicyTemplate) => { router.push(`/policies/${policy.id}`); }; diff --git a/apps/framework-editor/app/(pages)/policies/[policyId]/PolicyDetailsClientPage.tsx b/apps/framework-editor/app/(pages)/policies/[policyId]/PolicyDetailsClientPage.tsx index e5c3bc00b..18d6b96fa 100644 --- a/apps/framework-editor/app/(pages)/policies/[policyId]/PolicyDetailsClientPage.tsx +++ b/apps/framework-editor/app/(pages)/policies/[policyId]/PolicyDetailsClientPage.tsx @@ -1,5 +1,6 @@ 'use client'; +import type { FrameworkEditorPolicyTemplate } from '@/db'; import { Button, Card, CardContent, CardDescription, CardHeader, CardTitle } from '@trycompai/ui'; import { PencilIcon, Trash2 } from 'lucide-react'; import { useRouter } from 'next/navigation'; @@ -7,16 +8,8 @@ import { useState } from 'react'; import { DeletePolicyDialog } from './components/DeletePolicyDialog'; import { EditPolicyDialog } from './components/EditPolicyDialog'; -interface PolicyItem { - id: string; - name: string; - description: string; - frequency: string; - department: string; -} - interface PolicyDetailsClientPageProps { - policy: PolicyItem; + policy: FrameworkEditorPolicyTemplate; } export function PolicyDetailsClientPage({ policy }: PolicyDetailsClientPageProps) { diff --git a/apps/framework-editor/app/(pages)/policies/[policyId]/page.tsx b/apps/framework-editor/app/(pages)/policies/[policyId]/page.tsx index 8b3eee806..1aaeef788 100644 --- a/apps/framework-editor/app/(pages)/policies/[policyId]/page.tsx +++ b/apps/framework-editor/app/(pages)/policies/[policyId]/page.tsx @@ -1,22 +1,13 @@ import PageLayout from '@/app/components/PageLayout'; import { serverApi } from '@/app/lib/api-server'; import { isAuthorized } from '@/app/lib/utils'; +import type { FrameworkEditorPolicyTemplate } from '@/db'; import '@/styles/editor.css'; +import type { JSONContent } from '@tiptap/react'; import { notFound, redirect } from 'next/navigation'; import { PolicyDetailsClientPage } from './PolicyDetailsClientPage'; import { PolicyEditorClient } from './PolicyEditorClient'; -interface PolicyTemplate { - id: string; - name: string; - description: string; - frequency: string; - department: string; - content: unknown; - createdAt: string; - updatedAt: string; -} - export default async function PolicyDetailPage({ params, }: { @@ -27,9 +18,9 @@ export default async function PolicyDetailPage({ const { policyId } = await params; - let policy: PolicyTemplate; + let policy: FrameworkEditorPolicyTemplate; try { - policy = await serverApi(`/policy-template/${policyId}`); + policy = await serverApi(`/policy-template/${policyId}`); } catch { notFound(); } @@ -45,7 +36,7 @@ export default async function PolicyDetailPage({ );