From 972c3c5de99e366cbce2d81250ba85b0f4845d09 Mon Sep 17 00:00:00 2001 From: FrankZamora Date: Mon, 1 Dec 2025 14:08:43 -0600 Subject: [PATCH] =?UTF-8?q?feat(critical-css):=20agregar=20TOC=20y=20CTA?= =?UTF-8?q?=20Let's=20Talk=20a=20CSS=20cr=C3=ADtico?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 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 --- .../CtaLetsTalk/Infrastructure/Ui/CtaLetsTalkRenderer.php | 2 +- .../Infrastructure/Ui/TableOfContentsRenderer.php | 2 +- Schemas/cta-lets-talk.json | 7 +++++++ Schemas/table-of-contents.json | 7 +++++++ Shared/Infrastructure/Services/CriticalCSSService.php | 2 ++ 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Public/CtaLetsTalk/Infrastructure/Ui/CtaLetsTalkRenderer.php b/Public/CtaLetsTalk/Infrastructure/Ui/CtaLetsTalkRenderer.php index 34382d7e..b15a3e52 100644 --- a/Public/CtaLetsTalk/Infrastructure/Ui/CtaLetsTalkRenderer.php +++ b/Public/CtaLetsTalk/Infrastructure/Ui/CtaLetsTalkRenderer.php @@ -137,7 +137,7 @@ final class CtaLetsTalkRenderer implements RendererInterface * @param array $data Datos del componente * @return string CSS generado */ - private function generateCSS(array $data): string + public function generateCSS(array $data): string { $css = ''; diff --git a/Public/TableOfContents/Infrastructure/Ui/TableOfContentsRenderer.php b/Public/TableOfContents/Infrastructure/Ui/TableOfContentsRenderer.php index 16139b22..8493ed26 100644 --- a/Public/TableOfContents/Infrastructure/Ui/TableOfContentsRenderer.php +++ b/Public/TableOfContents/Infrastructure/Ui/TableOfContentsRenderer.php @@ -203,7 +203,7 @@ final class TableOfContentsRenderer implements RendererInterface }, 20); } - private function generateCSS(array $data): string + public function generateCSS(array $data): string { $colors = $data['colors'] ?? []; $spacing = $data['spacing'] ?? []; diff --git a/Schemas/cta-lets-talk.json b/Schemas/cta-lets-talk.json index 97705694..bdea8bd7 100644 --- a/Schemas/cta-lets-talk.json +++ b/Schemas/cta-lets-talk.json @@ -42,6 +42,13 @@ "pages": "Solo páginas" }, "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 para optimizar LCP (componente above-the-fold)" } } }, diff --git a/Schemas/table-of-contents.json b/Schemas/table-of-contents.json index 7b39cf1a..f48efdc6 100644 --- a/Schemas/table-of-contents.json +++ b/Schemas/table-of-contents.json @@ -35,6 +35,13 @@ "editable": true, "options": ["all", "posts", "pages"], "description": "Tipos de contenido donde se muestra" + }, + "is_critical": { + "type": "boolean", + "label": "CSS Crítico", + "default": true, + "editable": true, + "description": "Inyectar CSS inline en para optimizar LCP (componente above-the-fold)" } } }, diff --git a/Shared/Infrastructure/Services/CriticalCSSService.php b/Shared/Infrastructure/Services/CriticalCSSService.php index 7e2c625a..99bafb8b 100644 --- a/Shared/Infrastructure/Services/CriticalCSSService.php +++ b/Shared/Infrastructure/Services/CriticalCSSService.php @@ -52,8 +52,10 @@ final class CriticalCSSService private const CRITICAL_RENDERERS = [ 'top-notification-bar' => \ROITheme\Public\TopNotificationBar\Infrastructure\Ui\TopNotificationBarRenderer::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, 'featured-image' => \ROITheme\Public\FeaturedImage\Infrastructure\Ui\FeaturedImageRenderer::class, + 'table-of-contents' => \ROITheme\Public\TableOfContents\Infrastructure\Ui\TableOfContentsRenderer::class ]; /**