Complete frontend implementation with: - Next.js 16 with App Router and TypeScript - Tailwind CSS v4 with custom violet theme - shadcn/ui components with Lucide React icons - Landing page with hero, services, pricing, testimonials, FAQ - Service selection page with toggle - Login/Register pages with social auth UI - Multi-step checkout flow - Client dashboard with stats, projects, support tickets - Billing page with subscription, payment methods, invoices - All mock data and TypeScript types 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
69 lines
2.0 KiB
TypeScript
69 lines
2.0 KiB
TypeScript
import { Project, User } from '../types'
|
|
|
|
// Mock current user
|
|
export const mockCurrentUser: User = {
|
|
id: 'user-1',
|
|
email: 'alex@bakery.com',
|
|
name: 'Alex Johnson',
|
|
avatar: 'https://lh3.googleusercontent.com/a/default-user',
|
|
role: 'client',
|
|
}
|
|
|
|
export const mockProjects: Project[] = [
|
|
{
|
|
id: 'proj-1',
|
|
userId: 'user-1',
|
|
title: 'Bakery Website Redesign',
|
|
description: 'Modernizing the online presence with e-commerce integration for custom cake orders.',
|
|
type: 'web-design',
|
|
tier: 'growth',
|
|
status: 'development',
|
|
progress: 75,
|
|
thumbnail: 'https://images.unsplash.com/photo-1517433367423-c7e5b0f35086?w=400',
|
|
stages: [
|
|
{ name: 'Discovery', completed: true },
|
|
{ name: 'Design', completed: true },
|
|
{ name: 'Development', completed: false },
|
|
{ name: 'Content', completed: false },
|
|
],
|
|
createdAt: new Date('2024-10-01'),
|
|
updatedAt: new Date('2024-10-15'),
|
|
estimatedDelivery: new Date('2024-10-20'),
|
|
},
|
|
{
|
|
id: 'proj-2',
|
|
userId: 'user-1',
|
|
title: 'Customer Service Bot',
|
|
description: 'Training the model on your FAQs to handle initial customer inquiries automatically.',
|
|
type: 'ai-automation',
|
|
tier: 'growth',
|
|
status: 'design',
|
|
progress: 20,
|
|
thumbnail: 'https://images.unsplash.com/photo-1677442136019-21780ecad995?w=400',
|
|
stages: [
|
|
{ name: 'Setup', completed: true },
|
|
{ name: 'Training', completed: false },
|
|
{ name: 'Testing', completed: false },
|
|
],
|
|
createdAt: new Date('2024-10-10'),
|
|
updatedAt: new Date('2024-10-14'),
|
|
estimatedDelivery: new Date('2024-10-25'),
|
|
},
|
|
]
|
|
|
|
export function getProjectsByUserId(userId: string): Project[] {
|
|
return mockProjects.filter(p => p.userId === userId)
|
|
}
|
|
|
|
export function getProjectById(id: string): Project | undefined {
|
|
return mockProjects.find(p => p.id === id)
|
|
}
|
|
|
|
export function getActiveProjects(): Project[] {
|
|
return mockProjects.filter(p => p.status !== 'completed')
|
|
}
|
|
|
|
export function getCompletedProjects(): Project[] {
|
|
return mockProjects.filter(p => p.status === 'completed')
|
|
}
|