'use client'; import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, } from '@/components/ui/sheet'; import type { PolicySettingSearchResult } from '@/lib/actions/policySettings'; import { formatDistanceToNow } from 'date-fns'; import { de } from 'date-fns/locale'; interface PolicyDetailSheetProps { policy: PolicySettingSearchResult | null; open: boolean; onOpenChange: (open: boolean) => void; } function isJsonString(str: string): boolean { if (!str || typeof str !== 'string') return false; const trimmed = str.trim(); return trimmed.startsWith('{') || trimmed.startsWith('['); } function formatJson(value: string): string { try { const parsed = JSON.parse(value); return JSON.stringify(parsed, null, 2); } catch { return value; } } export function PolicyDetailSheet({ policy, open, onOpenChange, }: PolicyDetailSheetProps) { if (!policy) return null; const isJson = isJsonString(policy.settingValue); const displayValue = isJson ? formatJson(policy.settingValue) : policy.settingValue; return ( {policy.settingName} Policy Setting Details
{/* Policy Name */}

Policy Name

{policy.policyName}

{/* Policy Type */}

Policy Type

{policy.policyType.replace(/([A-Z])/g, ' $1').trim()}

{/* Setting Name */}

Setting Name

{policy.settingName}

{/* Setting Value */}

Setting Value

{isJson ? (
                {displayValue}
              
) : (

{displayValue}

)}
{/* Last Synced */}

Last Synced

{formatDistanceToNow(new Date(policy.lastSyncedAt), { addSuffix: true, locale: de, })}

{new Date(policy.lastSyncedAt).toLocaleString('de-DE')}

); }