['content' => ['message_text' => 'Welcome']], * 'visibility' => ['desktop' => true, 'mobile' => true], * 'is_enabled' => true * ]); * ``` * * @package ROITheme\Shared\Application\UseCases\SaveComponent */ final readonly class SaveComponentRequest { /** * @param string $componentName Nombre del componente a guardar (e.g., 'top_bar', 'footer_cta') * @param array $data Datos del componente (configuration, visibility, is_enabled, schema_version) */ public function __construct( private string $componentName, private array $data ) {} /** * Obtener nombre del componente * * @return string */ public function getComponentName(): string { return $this->componentName; } /** * Obtener datos del componente * * @return array */ public function getData(): array { return $this->data; } /** * Factory method: Crear desde array * * �til para crear desde datos POST/JSON * * @param array $data Array con keys 'component_name' y 'data' * @return self */ public static function fromArray(array $data): self { return new self( $data['component_name'] ?? '', $data['data'] ?? [] ); } }