A fluent, immutable PHP library for generating HTML elements with typed attribute helpers.
Safe by default content encoding, raw HTML when needed, and standards-compliant rendering.
composer require ui-awesome/html:^0.4This package provides immutable, fluent wrapper classes for common HTML elements.
It supports safe content encoding via content(), raw HTML via html(), and composition using element instances.
use UIAwesome\Html\Flow\{Div, Main, P};
use UIAwesome\Html\Heading\H1;
use UIAwesome\Html\Metadata\{Link, Meta, Title};
use UIAwesome\Html\Palpable\A;
use UIAwesome\Html\Root\{Body, Head, Html};
$baseLink = A::tag()->class('nav-link');
echo Html::tag()
->lang('en')
->html(
Head::tag()->html(
Meta::tag()->charset('utf-8'),
Meta::tag()->name('viewport')->content('width=device-width, initial-scale=1'),
Title::tag()->content('UI Awesome HTML'),
Link::tag()->rel('stylesheet')->href('/assets/app.css'),
),
Body::tag()->class('app')->html(
Main::tag()->class('container')->html(
H1::tag()->content('UI Awesome HTML'),
P::tag()->content('Build HTML with a fluent, immutable API.'),
Div::tag()->class('nav')->html(
$baseLink->href('/docs')->content('Documentation'),
$baseLink->href('/github')->content('GitHub'),
),
),
),
)
->render();use UIAwesome\Html\Flow\Div;
echo Div::tag()->content('<strong>encoded</strong>')->render();
// <div><strong>encoded</strong></div>
echo Div::tag()->html('<strong>raw</strong>')->render();
// <div>
// <strong>raw</strong>
// </div>Create ordered lists, unordered lists, and description lists with a fluent API.
use UIAwesome\Html\List\{Dl, Ol, Ul};
// Unordered list with items
$features = Ul::tag()
->class('feature-list')
->items(
'Immutable by design',
'Type-safe attributes',
'Fluent API',
'Standards-compliant',
);
// Ordered list with custom start and nested items
$steps = Ol::tag()
->class('steps')
->start(1)
->reversed(false)
->li('Install with Composer', 1)
->li('Create HTML elements', 2)
->li('Render to string', 3);
// Description list for metadata or glossaries
$metadata = Dl::tag()
->class('metadata-list')
->dt('Package')
->dd('ui-awesome/html')
->dt('Version')
->dd('0.4.0')
->dt('License')
->dd('BSD-3-Clause');
// Render all lists
$html = $features->render() . PHP_EOL . $steps->render() . PHP_EOL . $metadata->render();For detailed configuration options and advanced usage.