# PicImpact Full UI Redesign — Implementation Plan > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. **Goal:** Redesign PicImpact's entire UI inspired by Afilmory — immersive masonry gallery, fullscreen photo viewer with inspector panel, split-screen auth, and streamlined admin. **Architecture:** 4 independent phases. Each phase is a PR-ready deliverable. Phases modify different page areas with minimal overlap. **Tech Stack:** Next.js 16, React 19, Tailwind CSS v4, motion/react, Radix UI, shadcn/ui, Zustand, SWR **Reference:** https://github.com/Afilmory/afilmory --- ## Phase 1: Gallery Redesign (Highest Visual Impact) ### Task 1.1: Replace Dock Menu with Fixed Top Navigation Bar **Files:** - Delete: `components/layout/dock-menu.tsx` (replace entirely) - Create: `components/layout/top-nav.tsx` - Modify: `app/(default)/layout.tsx` - Modify: `components/ui/origin/dock.tsx` (may keep for admin or remove) **What to build:** A fixed top navigation bar with blur background: ```tsx
{/* Blur backdrop */}
``` Update `app/(default)/layout.tsx` to use `` instead of ``, add `pt-12` to content area. --- ### Task 1.2: Redesign Default Gallery — Immersive Masonry **Files:** - Rewrite: `components/layout/theme/default/default-gallery.tsx` - Rewrite: `components/album/blur-image.tsx` - Create: `components/gallery/masonry-photo-item.tsx` - Modify: `style/globals.css` (add hover overlay utilities) **What to build:** **MasonryPhotoItem** — the core gallery item: ```tsx
router.push(`/preview/${photo.id}`)} > {/* Thumbhash placeholder */} {photo.blurhash && } {/* Image with hover zoom */} {photo.title {/* Hover overlay — bottom gradient + info */}
{/* Title */}

{photo.title}

{/* EXIF grid — 2x2 frosted badges */} {photo.exif && (
{photo.exif.f_number && (
ƒ/{photo.exif.f_number}
)} {/* Same pattern for shutter_speed, focal_length_35mm, iso_speed_rating */}
)}
{/* Live Photo badge */} {photo.type === 2 && (
Live
)}
``` **Default Gallery** — CSS columns-based masonry: ```tsx
{photos.map(photo => (
))}
``` Using CSS `columns` for true masonry layout — simpler than JS-based masonry and natively supported. --- ### Task 1.3: Update Simple Gallery for Immersive Style **Files:** - Rewrite: `components/layout/theme/simple/simple-gallery.tsx` - Rewrite: `components/gallery/simple/gallery-image.tsx` Simple gallery becomes a single-column editorial layout: - Full-width images with generous vertical spacing - Title + EXIF below each image (not hover) - No cards, no shadows — images float directly --- ### Task 1.4: Update Tag Gallery Page **Files:** - Modify: `app/(default)/tag/[...tag]/page.tsx` Use the same masonry layout and `MasonryPhotoItem` component. Add a tag header pill showing the active filter. --- ## Phase 2: Fullscreen Photo Viewer ### Task 2.1: Build Fullscreen Viewer Shell **Files:** - Rewrite: `app/@modal/(...)preview/[id]/modal.tsx` - Rewrite: `app/@modal/(...)preview/[id]/page.tsx` - Create: `components/viewer/photo-viewer.tsx` - Create: `components/viewer/photo-viewer-controls.tsx` **What to build:** Fullscreen viewer with dark backdrop, centered image, navigation: ```tsx
{/* Main image area */}
{/* Close button — top left */} {/* Previous / Next arrows */} {/* Image */}
{/* Inspector panel — desktop only */}
``` Keyboard: `←` `→` navigate, `Escape` close, `i` toggle inspector. --- ### Task 2.2: Build Inspector Panel **Files:** - Create: `components/viewer/inspector-panel.tsx` - Refactor from: `components/album/preview-image.tsx` and `preview-image-exif.tsx` Right-side panel (320px) containing: - Photo title (font-display, text-xl) - Camera + lens badge - 2x2 EXIF grid (frosted glass cards matching hover overlay style) - Date & location - Collapsible histogram / tone analysis - Download original link - Tags Mobile: Same content in a bottom Drawer (using Vaul or existing Drawer component). --- ### Task 2.3: Integrate WebGL Viewer **Files:** - Modify: `components/viewer/photo-viewer.tsx` - Keep: `components/album/progressive-image.tsx` (WebGL logic) Integrate existing WebGL viewer into the new fullscreen shell. Double-click or pinch to zoom. --- ### Task 2.4: Left/Right Navigation with Transition **Files:** - Modify: `components/viewer/photo-viewer.tsx` - Create: `hooks/use-photo-navigation.ts` Hook that manages: - Current photo index in album - Keyboard arrow navigation - Touch swipe detection - Preload adjacent images - `AnimatePresence` with `translateX` + opacity transition --- ## Phase 3: Login/Signup Redesign ### Task 3.1: Split-Screen Login Page **Files:** - Rewrite: `app/login/page.tsx` - Rewrite: `components/login/user-from.tsx` **Desktop layout:** ```tsx
{/* Left: Featured photo */}
{/* Right: Login form */}

{siteName}

{/* form fields — no Card wrapper */} {/* Passkey / 2FA options */}
``` **Mobile:** Background image (darkened) + overlaid form. --- ### Task 3.2: Split-Screen Signup Page **Files:** - Rewrite: `app/sign-up/page.tsx` - Rewrite: `components/sign-up/sign-up-from.tsx` Same split-screen pattern as login. --- ## Phase 4: Admin Dashboard Redesign ### Task 4.1: Streamline Admin Layout **Files:** - Modify: `app/admin/layout.tsx` - Modify: `components/layout/admin/app-sidebar.tsx` Collapse sidebar to icon-only (48px) by default, expand on hover/click. Content area gets more room. --- ### Task 4.2: Redesign Dashboard Page **Files:** - Rewrite: `app/admin/page.tsx` Key metrics row (3 cards: photos / albums / storage) + recent uploads grid (masonry thumbnails). --- ### Task 4.3: Image Management — Grid/List Toggle **Files:** - Rewrite: `components/admin/list/list-image.tsx` - Modify: `components/admin/list/image-view.tsx` - Modify: `components/admin/list/image-edit-sheet.tsx` Add view toggle (grid | list). Grid = dense thumbnails with checkbox overlay. List = table rows with inline expand-to-edit. --- ### Task 4.4: Upload Page Enhancement **Files:** - Modify: `app/admin/upload/page.tsx` (or relevant upload page) - Modify: `components/admin/upload/simple-file-upload.tsx` - Modify: `components/admin/upload/livephoto-file-upload.tsx` Larger drag zone, inline progress bars, preview thumbnails during upload. --- ## Execution Order | Phase | Tasks | Impact | Est. Files | |-------|-------|--------|------------| | 1. Gallery | 4 tasks | Highest — what users see first | ~10 files | | 2. Viewer | 4 tasks | High — core photo experience | ~8 files | | 3. Auth | 2 tasks | Medium — first-time impression | ~4 files | | 4. Admin | 4 tasks | Lower — admin only | ~10 files | Start with Phase 1 for maximum visual impact.