feat(critical-css): agregar TOC y CTA Let's Talk a CSS crítico
- Agregar campo is_critical a schemas table-of-contents.json y cta-lets-talk.json - Cambiar generateCSS() de private a public en TableOfContentsRenderer y CtaLetsTalkRenderer - Registrar table-of-contents y cta-lets-talk en CRITICAL_RENDERERS - Ahora 6 componentes inyectan CSS crítico inline en <head> Componentes críticos: - top-notification-bar - navbar - cta-lets-talk (NUEVO) - hero - featured-image - table-of-contents (NUEVO) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -137,7 +137,7 @@ final class CtaLetsTalkRenderer implements RendererInterface
|
|||||||
* @param array $data Datos del componente
|
* @param array $data Datos del componente
|
||||||
* @return string CSS generado
|
* @return string CSS generado
|
||||||
*/
|
*/
|
||||||
private function generateCSS(array $data): string
|
public function generateCSS(array $data): string
|
||||||
{
|
{
|
||||||
$css = '';
|
$css = '';
|
||||||
|
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ final class TableOfContentsRenderer implements RendererInterface
|
|||||||
}, 20);
|
}, 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function generateCSS(array $data): string
|
public function generateCSS(array $data): string
|
||||||
{
|
{
|
||||||
$colors = $data['colors'] ?? [];
|
$colors = $data['colors'] ?? [];
|
||||||
$spacing = $data['spacing'] ?? [];
|
$spacing = $data['spacing'] ?? [];
|
||||||
|
|||||||
@@ -42,6 +42,13 @@
|
|||||||
"pages": "Solo páginas"
|
"pages": "Solo páginas"
|
||||||
},
|
},
|
||||||
"description": "Define en qué páginas se mostrará el botón"
|
"description": "Define en qué páginas se mostrará el botón"
|
||||||
|
},
|
||||||
|
"is_critical": {
|
||||||
|
"type": "boolean",
|
||||||
|
"label": "CSS Crítico",
|
||||||
|
"default": true,
|
||||||
|
"editable": true,
|
||||||
|
"description": "Inyectar CSS inline en <head> para optimizar LCP (componente above-the-fold)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -35,6 +35,13 @@
|
|||||||
"editable": true,
|
"editable": true,
|
||||||
"options": ["all", "posts", "pages"],
|
"options": ["all", "posts", "pages"],
|
||||||
"description": "Tipos de contenido donde se muestra"
|
"description": "Tipos de contenido donde se muestra"
|
||||||
|
},
|
||||||
|
"is_critical": {
|
||||||
|
"type": "boolean",
|
||||||
|
"label": "CSS Crítico",
|
||||||
|
"default": true,
|
||||||
|
"editable": true,
|
||||||
|
"description": "Inyectar CSS inline en <head> para optimizar LCP (componente above-the-fold)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -52,8 +52,10 @@ final class CriticalCSSService
|
|||||||
private const CRITICAL_RENDERERS = [
|
private const CRITICAL_RENDERERS = [
|
||||||
'top-notification-bar' => \ROITheme\Public\TopNotificationBar\Infrastructure\Ui\TopNotificationBarRenderer::class,
|
'top-notification-bar' => \ROITheme\Public\TopNotificationBar\Infrastructure\Ui\TopNotificationBarRenderer::class,
|
||||||
'navbar' => \ROITheme\Public\Navbar\Infrastructure\Ui\NavbarRenderer::class,
|
'navbar' => \ROITheme\Public\Navbar\Infrastructure\Ui\NavbarRenderer::class,
|
||||||
|
'cta-lets-talk' => \ROITheme\Public\CtaLetsTalk\Infrastructure\Ui\CtaLetsTalkRenderer::class,
|
||||||
'hero' => \ROITheme\Public\Hero\Infrastructure\Ui\HeroRenderer::class,
|
'hero' => \ROITheme\Public\Hero\Infrastructure\Ui\HeroRenderer::class,
|
||||||
'featured-image' => \ROITheme\Public\FeaturedImage\Infrastructure\Ui\FeaturedImageRenderer::class,
|
'featured-image' => \ROITheme\Public\FeaturedImage\Infrastructure\Ui\FeaturedImageRenderer::class,
|
||||||
|
'table-of-contents' => \ROITheme\Public\TableOfContents\Infrastructure\Ui\TableOfContentsRenderer::class
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user