upskill-event-manager/fix-css-final-polish.js
bengizmo 993a820a84 feat: Add comprehensive development artifacts to repository
- Add 26 documentation files including test reports, deployment guides, and troubleshooting documentation
- Include 3 CSV data files for trainer imports and user registration tracking
- Add 43 JavaScript test files covering mobile optimization, Safari compatibility, and E2E testing
- Include 18 PHP utility files for debugging, geocoding, and data analysis
- Add 12 shell scripts for deployment verification, user management, and database operations
- Update .gitignore with whitelist patterns for development files, documentation, and CSV data

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 12:26:11 -03:00

100 lines
No EOL
3 KiB
JavaScript
Executable file

#!/usr/bin/env node
/**
* Final CSS Polish - Clean up remaining syntax issues
*/
const fs = require('fs');
const path = require('path');
const CSS_DIR = './assets/css';
const cssFiles = [
'hvac-common.css',
'hvac-dashboard.css',
'hvac-registration.css',
'hvac-event-summary.css',
'hvac-email-attendees.css'
];
function polishCSS(content) {
// Remove semicolons after comments
content = content.replace(/\*\/\s*;/g, '*/');
// Fix duplicate property values on same line
content = content.replace(/([a-z-]+):\s*([^;]+);\s*\1:\s*([^;]+);\s*\/\*\s*IE fallback\s*\*\//g, '$1: $2; /* IE fallback */');
// Fix property values with duplicate values
content = content.replace(/([a-z-]+):\s*([^;]+);\s*([a-z-]+):\s*\2;\s*\/\*\s*IE fallback\s*\*\//g, '$1: $2; /* IE fallback */');
// Clean up duplicate transform properties
content = content.replace(/text-transform:\s*uppercase;\s*text-transform:\s*uppercase;/g, 'text-transform: uppercase;');
// Fix spacing issues
content = content.replace(/;\s*}/g, ';\n}');
content = content.replace(/{\s*}/g, '{ }');
// Remove empty lines within :root
content = content.replace(/(:root\s*{[^}]+)}/, (match, rootContent) => {
const cleaned = rootContent.replace(/\n\s*\n/g, '\n');
return cleaned + '}';
});
// Fix malformed selectors
content = content.replace(/\.filter-group;\s*input/g, '.filter-group input');
// Ensure proper closing braces
content = content.replace(/}\s*}\s*}\s*}\s*}/g, '}');
// Clean up excessive closing braces at end
content = content.replace(/}\s*$/, '}');
content = content.replace(/(}\s*){5,}$/g, '}');
return content;
}
function main() {
console.log('HVAC Community Events - Final CSS Polish');
console.log('='.repeat(60));
let totalPolished = 0;
for (const file of cssFiles) {
const filePath = path.join(CSS_DIR, file);
if (!fs.existsSync(filePath)) {
console.log(`⚠️ File not found: ${file}`);
continue;
}
try {
console.log(`\n🔧 Polishing: ${file}`);
// Read content
let content = fs.readFileSync(filePath, 'utf8');
const originalLength = content.length;
// Polish the CSS
content = polishCSS(content);
// Write back
fs.writeFileSync(filePath, content, 'utf8');
const newLength = content.length;
const diff = originalLength - newLength;
console.log(` ✅ Polished (${diff} chars removed)`);
totalPolished++;
} catch (error) {
console.error(` ❌ Error: ${error.message}`);
}
}
console.log('\n' + '='.repeat(60));
console.log(`✅ Successfully polished: ${totalPolished} files`);
}
if (require.main === module) {
main();
}