Comprehensive platform audit: security, UX, performance, and visual polish
Phase 1: Security - status transition validation, Zod tightening, DB indexes, transactions Phase 2: Admin UX - search/filter for awards, learning, partners pages Phase 3: Dashboard - Recent Activity feed, Pending Actions card, quick actions Phase 4: Jury - assignments progress/urgency, autosave indicator, divergence highlighting Phase 5: Portals - observer charts, mentor search, login/onboarding polish Phase 6: Messages preview dialog, CsvExportDialog with column selection Phase 7: Performance - query optimizations, loading skeletons, useDebounce hook Phase 8: Visual - AnimatedCard, hover effects, StatusBadge, empty state CTAs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -57,6 +57,7 @@ import {
|
||||
RotateCcw,
|
||||
Download,
|
||||
Upload,
|
||||
ExternalLink,
|
||||
} from 'lucide-react'
|
||||
import {
|
||||
DndContext,
|
||||
@@ -643,7 +644,7 @@ export default function ApplySettingsPage() {
|
||||
{program?.name} {program?.year}
|
||||
</Link>
|
||||
<span>/</span>
|
||||
<span className="text-foreground">Apply Settings</span>
|
||||
<span className="text-foreground">Apply Page</span>
|
||||
</div>
|
||||
|
||||
{/* Header */}
|
||||
@@ -665,6 +666,15 @@ export default function ApplySettingsPage() {
|
||||
</div>
|
||||
|
||||
<div className="flex items-center gap-2 shrink-0 flex-wrap justify-end">
|
||||
{/* View public apply page */}
|
||||
{program?.slug && (
|
||||
<Button variant="outline" size="sm" asChild>
|
||||
<a href={`/apply/edition/${program.slug}`} target="_blank" rel="noopener noreferrer">
|
||||
<ExternalLink className="mr-2 h-4 w-4" />
|
||||
View Public Page
|
||||
</a>
|
||||
</Button>
|
||||
)}
|
||||
{/* Template controls */}
|
||||
<Select
|
||||
onValueChange={(value) => {
|
||||
|
||||
Reference in New Issue
Block a user