ui-awesome / html
UI Awesome HTML Code Generator for PHP.
Installs: 6 939
Dependents: 5
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 1
pkg:composer/ui-awesome/html
Requires
- php: ^8.1
- ext-mbstring: *
- php-forge/awesome-widget: ^0.1.2
- ui-awesome/html-attribute: ^0.2
- ui-awesome/html-concern: ^0.2
- ui-awesome/html-core: ^0.1
- ui-awesome/html-helper: ^0.2
- ui-awesome/html-interop: ^0.1
Requires (Dev)
- maglnet/composer-require-checker: ^4.7
- php-forge/support: ^0.1
- phpunit/phpunit: ^10.5
- roave/infection-static-analysis-plugin: ^1.34
- symplify/easy-coding-standard: ^12.1
- vimeo/psalm: ^5.20
This package is auto-updated.
Last update: 2026-02-12 14:15:49 UTC
README
Html
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.
Features
Installation
composer require ui-awesome/html:^0.4
Quick start
This 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.
Document skeleton + composition + immutability
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();
Safe content vs raw HTML
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>
Powerful list composition
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();
Documentation
For detailed configuration options and advanced usage.