Initial commit: CHORUS Services marketing website
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>
This commit is contained in:
196
types/index.ts
Normal file
196
types/index.ts
Normal file
@@ -0,0 +1,196 @@
|
||||
// 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;
|
||||
}
|
||||
Reference in New Issue
Block a user