This commit implements a complete brand system overhaul including: TYPOGRAPHY SYSTEM: - Add Exo font family (Thin, Light, Regular, ExtraLight) as primary brand font - Implement SF Pro Display/Text hierarchy for UI components - Create comprehensive Typography component with all brand variants - Update all components to use new typography tokens DESIGN TOKEN SYSTEM: - Create complete design token system in theme/designTokens.ts - Define Carbon Black (#1a1a1a), Walnut Brown (#8B4513), Brushed Aluminum (#A8A8A8) palette - Implement CSS custom properties for consistent theming - Update Ant Design theme integration COMPONENT UPDATES: - Enhance Hero section with Exo Thin typography and improved layout - Update navigation with SF Pro font hierarchy - Redesign Button component with new variants and accessibility - Apply brand colors and typography across all showcase sections - Improve Footer with consistent brand application PERFORMANCE & ACCESSIBILITY: - Self-host Exo fonts for optimal loading performance - Implement proper font-display strategies - Add comprehensive accessibility audit documentation - Include responsive testing verification DOCUMENTATION: - Add brand system demo and implementation guides - Include QA testing reports and accessibility audits - Document design token usage and component patterns 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
68 lines
1.5 KiB
JavaScript
68 lines
1.5 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* CHORUS Services Website - Simplified Health Check Script
|
|
* Validates that Next.js server is running correctly
|
|
* Used by Docker HEALTHCHECK instruction
|
|
*/
|
|
|
|
const http = require('http');
|
|
const process = require('process');
|
|
|
|
const PORT = process.env.PORT || 80;
|
|
const TIMEOUT = 5000; // 5 seconds
|
|
|
|
/**
|
|
* Make HTTP request to check service health
|
|
* @returns {Promise<boolean>} - True if healthy
|
|
*/
|
|
function checkHealth() {
|
|
return new Promise((resolve) => {
|
|
const options = {
|
|
hostname: '127.0.0.1', // Force IPv4 instead of localhost
|
|
port: PORT,
|
|
path: '/',
|
|
method: 'HEAD',
|
|
timeout: TIMEOUT,
|
|
headers: {
|
|
'User-Agent': 'HealthCheck/1.0'
|
|
}
|
|
};
|
|
|
|
const req = http.request(options, (res) => {
|
|
const isHealthy = res.statusCode >= 200 && res.statusCode < 400;
|
|
resolve(isHealthy);
|
|
});
|
|
|
|
req.on('error', () => {
|
|
resolve(false);
|
|
});
|
|
|
|
req.on('timeout', () => {
|
|
req.destroy();
|
|
resolve(false);
|
|
});
|
|
|
|
req.setTimeout(TIMEOUT);
|
|
req.end();
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Main health check function
|
|
*/
|
|
async function main() {
|
|
try {
|
|
const healthy = await checkHealth();
|
|
process.exit(healthy ? 0 : 1);
|
|
} catch (error) {
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
// Handle process signals
|
|
process.on('SIGTERM', () => process.exit(1));
|
|
process.on('SIGINT', () => process.exit(1));
|
|
|
|
// Run health check
|
|
main(); |