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>
102 lines
3.1 KiB
TypeScript
102 lines
3.1 KiB
TypeScript
import { SupportTicket, DashboardStats, FAQ } from '../types'
|
|
|
|
export const mockSupportTickets: SupportTicket[] = [
|
|
{
|
|
id: 'ticket-1',
|
|
userId: 'user-1',
|
|
projectId: 'proj-1',
|
|
subject: 'Update product images',
|
|
description: 'We need to replace the product images with higher resolution versions.',
|
|
status: 'in-progress',
|
|
priority: 'medium',
|
|
createdAt: new Date('2024-10-12'),
|
|
updatedAt: new Date('2024-10-14'),
|
|
},
|
|
{
|
|
id: 'ticket-2',
|
|
userId: 'user-1',
|
|
projectId: 'proj-2',
|
|
subject: 'Chatbot training data review',
|
|
description: 'Please review and update the FAQ responses for the customer service bot.',
|
|
status: 'open',
|
|
priority: 'low',
|
|
createdAt: new Date('2024-10-14'),
|
|
updatedAt: new Date('2024-10-14'),
|
|
},
|
|
{
|
|
id: 'ticket-3',
|
|
userId: 'user-1',
|
|
subject: 'Billing inquiry',
|
|
description: 'Question about the invoice from September.',
|
|
status: 'resolved',
|
|
priority: 'low',
|
|
createdAt: new Date('2024-09-20'),
|
|
updatedAt: new Date('2024-09-22'),
|
|
},
|
|
]
|
|
|
|
export const mockDashboardStats: DashboardStats = {
|
|
totalProjects: 2,
|
|
activeProjects: 2,
|
|
pendingTickets: 1,
|
|
totalSpent: 330, // EUR
|
|
}
|
|
|
|
export const mockFAQs: FAQ[] = [
|
|
{
|
|
id: 'faq-1',
|
|
question: 'How long does it take to complete a website?',
|
|
answer: 'Delivery times depend on the tier you choose: Starter (3 days), Growth (7 days), and Pro (14 days). Complex projects may take longer.',
|
|
category: 'General',
|
|
},
|
|
{
|
|
id: 'faq-2',
|
|
question: 'What payment methods do you accept?',
|
|
answer: 'We accept all major credit cards, PayPal, and Stripe Link for secure payments.',
|
|
category: 'Billing',
|
|
},
|
|
{
|
|
id: 'faq-3',
|
|
question: 'Can I request revisions?',
|
|
answer: 'Yes! The Starter tier includes 2 revisions, Growth includes 5, and Pro offers unlimited revisions.',
|
|
category: 'Services',
|
|
},
|
|
{
|
|
id: 'faq-4',
|
|
question: 'Do you offer ongoing support?',
|
|
answer: 'Yes, we provide various support packages. Pro tier customers get priority support and a dedicated account manager.',
|
|
category: 'Support',
|
|
},
|
|
{
|
|
id: 'faq-5',
|
|
question: 'How does the AI automation work?',
|
|
answer: 'We train AI models on your specific business data and FAQs. The chatbot learns to handle customer inquiries automatically.',
|
|
category: 'AI Services',
|
|
},
|
|
{
|
|
id: 'faq-6',
|
|
question: 'Is my data secure?',
|
|
answer: 'Absolutely. We use industry-standard encryption and security measures. Your data is never shared with third parties.',
|
|
category: 'Security',
|
|
},
|
|
]
|
|
|
|
export function getTicketsByUserId(userId: string): SupportTicket[] {
|
|
return mockSupportTickets.filter(ticket => ticket.userId === userId)
|
|
}
|
|
|
|
export function getOpenTickets(userId: string): SupportTicket[] {
|
|
return mockSupportTickets.filter(
|
|
ticket => ticket.userId === userId && ticket.status !== 'closed'
|
|
)
|
|
}
|
|
|
|
export function getDashboardStats(userId: string): DashboardStats {
|
|
// In a real app, this would calculate stats based on actual data
|
|
return mockDashboardStats
|
|
}
|
|
|
|
export function getAllFAQs(): FAQ[] {
|
|
return mockFAQs
|
|
}
|