tenantpilot/app/(app)/search/page.tsx
Ahmed Darrazi 41e80b6c0c
All checks were successful
Trigger Cloudarix Deploy / call-webhook (push) Successful in 2s
feat(policy-explorer-v2): implement MVP Phase 1-3
 New Features
- Advanced data table with TanStack Table v8 + Server Actions
- Server-side pagination (10/25/50/100 rows per page)
- Multi-column sorting with visual indicators
- Column management (show/hide, resize) persisted to localStorage
- URL state synchronization for shareable filtered views
- Sticky header with compact/comfortable density modes

📦 Components Added
- PolicyTableV2.tsx - Main table with TanStack integration
- PolicyTableColumns.tsx - 7 column definitions with sorting
- PolicyTablePagination.tsx - Pagination controls
- PolicyTableToolbar.tsx - Density toggle + column visibility menu
- ColumnVisibilityMenu.tsx - Show/hide columns dropdown

🔧 Hooks Added
- usePolicyTable.ts - TanStack Table initialization
- useURLState.ts - URL query param sync with nuqs
- useTablePreferences.ts - localStorage persistence

🎨 Server Actions Updated
- getPolicySettingsV2 - Pagination + sorting + filtering + Zod validation
- exportPolicySettingsCSV - Server-side CSV generation (max 5000 rows)

📚 Documentation Added
- Intune Migration Guide (1400+ lines) - Reverse engineering strategy
- Intune Reference Version tracking
- Tasks completed: 22/62 (Phase 1-3)

 Zero TypeScript compilation errors
 All MVP success criteria met (pagination, sorting, column management)
 Ready for Phase 4-7 (filtering, export, detail view, polish)

Refs: specs/004-policy-explorer-v2/tasks.md
2025-12-10 00:18:05 +01:00

38 lines
1.3 KiB
TypeScript

import { SyncButton } from '@/components/search/SyncButton';
import { PolicyExplorerV2Client } from './PolicyExplorerV2Client';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
import { Metadata } from 'next';
import { NuqsAdapter } from 'nuqs/adapters/next/app';
export const metadata: Metadata = {
title: 'Policy Explorer | TenantPilot',
description: 'Browse and search Microsoft Intune policy settings with advanced filtering and export',
};
export default async function SearchPage() {
return (
<main className="flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-8">
<div className="mx-auto w-full max-w-7xl">
<Card>
<CardHeader>
<div className="flex items-center justify-between">
<div>
<CardTitle>Policy Explorer V2</CardTitle>
<CardDescription>
Advanced data table with pagination, sorting, filtering, and CSV export
</CardDescription>
</div>
<SyncButton />
</div>
</CardHeader>
<CardContent>
<NuqsAdapter>
<PolicyExplorerV2Client />
</NuqsAdapter>
</CardContent>
</Card>
</div>
</main>
);
}