/** * PurgeCSS Configuration for ROI Theme * * Genera un subset de Bootstrap con SOLO las clases usadas en el tema. * * USO: * npx purgecss --config purgecss.config.js * * OUTPUT: * Assets/Vendor/Bootstrap/Css/bootstrap-subset.min.css * * @see https://purgecss.com/configuration.html */ module.exports = { // CSS a procesar css: ['Assets/Vendor/Bootstrap/Css/bootstrap.min.css'], // Archivos a analizar para encontrar clases usadas content: [ // Templates PHP principales '*.php', // Componentes Public (Renderers) 'Public/**/*.php', // Componentes Admin (FormBuilders) - también usan Bootstrap 'Admin/**/*.php', // Includes 'Inc/**/*.php', // Templates parts 'template-parts/**/*.php', // JavaScript (puede contener clases dinámicas) 'Assets/js/**/*.js', ], // Output output: 'Assets/Vendor/Bootstrap/Css/', // Safelist: Clases que SIEMPRE deben incluirse aunque no se detecten // (clases generadas dinámicamente, JavaScript, etc.) safelist: { // Clases exactas standard: [ // Estados de navbar scroll (JavaScript) 'scrolled', 'navbar-scrolled', // Bootstrap Collapse (JavaScript) 'show', 'showing', 'hiding', 'collapse', 'collapsing', // Estados de dropdown 'dropdown-menu', 'dropdown-item', 'dropdown-toggle', // Estados de form 'is-valid', 'is-invalid', 'was-validated', // Visually hidden (accesibilidad) 'visually-hidden', 'visually-hidden-focusable', // Screen reader 'sr-only', ], // Patrones regex deep: [ // Todas las variantes de col-* (grid responsive) /^col-/, // Todas las variantes de d-* (display) /^d-/, // Todas las variantes responsive de navbar /^navbar-expand/, // Margin/Padding responsive /^m[tbsexy]?-/, /^p[tbsexy]?-/, // Gap utilities /^gap-/, /^g-/, // Flex utilities /^flex-/, /^justify-/, /^align-/, // Text utilities /^text-/, /^fw-/, /^fs-/, // Background /^bg-/, // Border /^border/, /^rounded/, // Shadow /^shadow/, // Width/Height /^w-/, /^h-/, // Position /^position-/, /^top-/, /^bottom-/, /^start-/, /^end-/, // Overflow /^overflow-/, ], // Selectores con estos patrones en cualquier parte greedy: [ // Form controls /form-/, // Buttons /btn/, // Cards /card/, // Navbar /navbar/, /nav-/, // Tables /table/, // Alerts (usado en admin) /alert/, // Toast (consultas restantes) /toast/, // Badges /badge/, // Lists /list-/, ], }, // Variables CSS de Bootstrap (mantener todas) variables: true, // Keyframes de animaciones keyframes: true, // Font faces fontFace: true, // Rejected (para debugging - genera archivo con clases eliminadas) rejected: false, };