Files
chorus-services-website/types/index.ts
anthonyrawlins f343f89d24 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>
2025-08-01 22:45:06 +10:00

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;
}