41 lines
905 B
PHP
41 lines
905 B
PHP
<?php
|
|
|
|
namespace Modules\Builder\Components;
|
|
|
|
use Modules\Builder\Contracts\BuilderComponent;
|
|
|
|
final class HeadingComponent implements BuilderComponent
|
|
{
|
|
public function type(): string
|
|
{
|
|
return 'heading';
|
|
}
|
|
|
|
public function label(): string
|
|
{
|
|
return 'Heading';
|
|
}
|
|
|
|
public function category(): string
|
|
{
|
|
return 'Typography';
|
|
}
|
|
|
|
public function schema(): array
|
|
{
|
|
return ['text' => ['type' => 'text', 'required' => true], 'level' => ['type' => 'select', 'options' => [1, 2, 3, 4, 5, 6]]];
|
|
}
|
|
|
|
public function defaults(): array
|
|
{
|
|
return ['text' => 'Heading', 'level' => 2];
|
|
}
|
|
|
|
public function render(array $properties, array $context = []): string
|
|
{
|
|
$level = max(1, min(6, (int) ($properties['level'] ?? 2)));
|
|
|
|
return '<h'.$level.'>'.e($properties['text'] ?? '').'</h'.$level.'>';
|
|
}
|
|
}
|