Rename folders to match PHP PSR-4 autoloading conventions: - schemas → Schemas - shared → Shared - Wordpress → WordPress (in all locations) Fixes deployment issues on Linux servers where filesystem is case-sensitive. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
62 lines
2.0 KiB
PHP
62 lines
2.0 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace ROITheme\Shared\Domain\Contracts;
|
|
|
|
/**
|
|
* Interface CSSGeneratorInterface
|
|
*
|
|
* Contrato para servicios que generan CSS a partir de configuraciones de componentes.
|
|
* Define el comportamiento esperado para la generación de reglas CSS sin depender
|
|
* de implementaciones específicas o frameworks.
|
|
*
|
|
* Responsabilidades:
|
|
* - Generar CSS válido a partir de un selector y estilos
|
|
* - Formatear reglas CSS correctamente
|
|
* - Convertir nombres de propiedades (snake_case → kebab-case)
|
|
*
|
|
* NO responsable de:
|
|
* - Media queries (manejado por Renderer con clases Bootstrap)
|
|
* - Visibilidad responsive (manejado por Renderer)
|
|
* - Persistencia o caché de CSS
|
|
*
|
|
* @package ROITheme\Shared\Domain\Contracts
|
|
*/
|
|
interface CSSGeneratorInterface
|
|
{
|
|
/**
|
|
* Genera una regla CSS completa a partir de un selector y sus estilos.
|
|
*
|
|
* Convierte un array de estilos en una regla CSS válida y formateada.
|
|
* Los nombres de propiedades en snake_case se convierten automáticamente
|
|
* a kebab-case según el estándar CSS.
|
|
*
|
|
* Ejemplo:
|
|
* ```php
|
|
* $styles = [
|
|
* 'background_color' => '#FF8600',
|
|
* 'text_color' => '#FFFFFF',
|
|
* 'font_size' => '1rem',
|
|
* 'padding' => '1rem 0'
|
|
* ];
|
|
*
|
|
* $css = $generator->generate('.navbar', $styles);
|
|
*
|
|
* // Resultado:
|
|
* // .navbar {
|
|
* // background-color: #FF8600;
|
|
* // color: #FFFFFF;
|
|
* // font-size: 1rem;
|
|
* // padding: 1rem 0;
|
|
* // }
|
|
* ```
|
|
*
|
|
* @param string $selector Selector CSS (ej: '.navbar', '#header', 'body')
|
|
* @param array<string, string> $styles Array asociativo de propiedades CSS y sus valores
|
|
* Formato: ['property_name' => 'value']
|
|
*
|
|
* @return string Regla CSS completa y formateada, o string vacío si no hay estilos
|
|
*/
|
|
public function generate(string $selector, array $styles): string;
|
|
}
|