Complete Next.js website with Docker containerization: - Next.js 14 with TypeScript and Tailwind CSS - Responsive design with modern UI components - Hero section, features showcase, testimonials - FAQ section with comprehensive content - Contact forms and newsletter signup - Docker production build with Nginx - Health checks and monitoring support - SEO optimization and performance tuning Ready for integration as git submodule in main CHORUS project. Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
196 lines
3.8 KiB
TypeScript
196 lines
3.8 KiB
TypeScript
// Global type definitions for CHORUS Services website
|
|
|
|
export interface ChorusComponent {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
icon: string;
|
|
color: string;
|
|
features: string[];
|
|
status: 'active' | 'development' | 'planned';
|
|
}
|
|
|
|
export interface ServiceFeature {
|
|
title: string;
|
|
description: string;
|
|
icon: React.ReactNode;
|
|
color?: string;
|
|
}
|
|
|
|
export interface NavigationItem {
|
|
key: string;
|
|
label: string;
|
|
href: string;
|
|
icon?: React.ReactNode;
|
|
children?: NavigationItem[];
|
|
}
|
|
|
|
export interface SEOData {
|
|
title: string;
|
|
description: string;
|
|
keywords?: string[];
|
|
ogImage?: string;
|
|
canonicalUrl?: string;
|
|
}
|
|
|
|
export interface AnimationVariant {
|
|
hidden: {
|
|
opacity: number;
|
|
y?: number;
|
|
x?: number;
|
|
scale?: number;
|
|
};
|
|
visible: {
|
|
opacity: number;
|
|
y?: number;
|
|
x?: number;
|
|
scale?: number;
|
|
transition?: {
|
|
duration?: number;
|
|
delay?: number;
|
|
ease?: string;
|
|
staggerChildren?: number;
|
|
};
|
|
};
|
|
}
|
|
|
|
export interface ContactForm {
|
|
name: string;
|
|
email: string;
|
|
company?: string;
|
|
message: string;
|
|
subject?: string;
|
|
}
|
|
|
|
export interface PerformanceMetrics {
|
|
throughput: number;
|
|
latency: number;
|
|
accuracy: number;
|
|
uptime: number;
|
|
}
|
|
|
|
export interface PricingTier {
|
|
id: string;
|
|
name: string;
|
|
price: number;
|
|
period: 'month' | 'year';
|
|
features: string[];
|
|
recommended?: boolean;
|
|
description: string;
|
|
}
|
|
|
|
export interface TeamMember {
|
|
id: string;
|
|
name: string;
|
|
role: string;
|
|
bio: string;
|
|
avatar?: string;
|
|
social?: {
|
|
linkedin?: string;
|
|
twitter?: string;
|
|
github?: string;
|
|
};
|
|
}
|
|
|
|
export interface BlogPost {
|
|
id: string;
|
|
title: string;
|
|
excerpt: string;
|
|
content: string;
|
|
author: string;
|
|
publishedAt: string;
|
|
updatedAt?: string;
|
|
tags: string[];
|
|
featuredImage?: string;
|
|
readTime: number;
|
|
}
|
|
|
|
export interface APIResponse<T = any> {
|
|
success: boolean;
|
|
data?: T;
|
|
error?: string;
|
|
message?: string;
|
|
}
|
|
|
|
export interface LoadingState {
|
|
isLoading: boolean;
|
|
error?: string | null;
|
|
}
|
|
|
|
// Theme-related types
|
|
export interface ThemeColors {
|
|
primary: string;
|
|
secondary: string;
|
|
success: string;
|
|
warning: string;
|
|
error: string;
|
|
info: string;
|
|
background: string;
|
|
surface: string;
|
|
text: string;
|
|
}
|
|
|
|
// Component prop types
|
|
export interface BaseComponentProps {
|
|
className?: string;
|
|
children?: React.ReactNode;
|
|
id?: string;
|
|
'data-testid'?: string;
|
|
}
|
|
|
|
export interface ResponsiveProps {
|
|
xs?: number;
|
|
sm?: number;
|
|
md?: number;
|
|
lg?: number;
|
|
xl?: number;
|
|
xxl?: number;
|
|
}
|
|
|
|
// Event handler types
|
|
export type ClickHandler = (event: React.MouseEvent<HTMLElement>) => void;
|
|
export type SubmitHandler<T = any> = (values: T) => void | Promise<void>;
|
|
export type ChangeHandler<T = any> = (value: T) => void;
|
|
|
|
// Utility types
|
|
export type Prettify<T> = {
|
|
[K in keyof T]: T[K];
|
|
} & {};
|
|
|
|
export type Optional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
export type Required<T, K extends keyof T> = T & {
|
|
[P in K]-?: T[P];
|
|
};
|
|
|
|
// Status types
|
|
export type Status = 'idle' | 'loading' | 'success' | 'error';
|
|
export type Size = 'small' | 'medium' | 'large';
|
|
export type Variant = 'primary' | 'secondary' | 'outline' | 'ghost';
|
|
|
|
// CHORUS-specific types
|
|
export interface ChorusMetrics {
|
|
whoosh: PerformanceMetrics;
|
|
bzzz: PerformanceMetrics;
|
|
slurp: PerformanceMetrics;
|
|
cooee: PerformanceMetrics;
|
|
}
|
|
|
|
export interface SystemHealth {
|
|
overall: 'healthy' | 'warning' | 'critical';
|
|
components: {
|
|
[key in 'whoosh' | 'bzzz' | 'slurp' | 'cooee']: 'online' | 'offline' | 'maintenance';
|
|
};
|
|
lastUpdated: string;
|
|
}
|
|
|
|
export interface OrchestrationTask {
|
|
id: string;
|
|
name: string;
|
|
type: 'processing' | 'analysis' | 'transformation' | 'monitoring';
|
|
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
component: 'whoosh' | 'bzzz' | 'slurp' | 'cooee';
|
|
startTime?: string;
|
|
endTime?: string;
|
|
progress?: number;
|
|
result?: any;
|
|
} |