<?php 
// examples/html_element_example.php 
 
// Use Composer's autoloader 
require_once __DIR__ . '/../vendor/autoload.php'; 
 
// Import necessary classes from the namespace 
use Hypertool\Html\HtmlElement; 
use Hypertool\Html\Div; 
use Hypertool\Html\Button; 
use Hypertool\Html\H1; 
use Hypertool\Html\Input; 
 
echo "--- HtmlElement Examples (with Namespace) ---\n\n"; 
 
// 1. Basic Element Creation 
echo "1. Basic Element Creation:\n"; 
$div = HtmlElement::div('Initial Content') // Using static factory 
    ->setId('my-div') 
    ->setClass('container'); 
$h1 = new H1('Main Title'); // Direct class instantiation (now namespaced) 
$div->add_child('title', $h1); 
$output1 = $div->output(); 
echo $output1 . "\n"; 
// Basic check 
if (strpos($output1, '<div id="my-div" class="container">') !== false && strpos($output1, '<h1>Main Title</h1>') !== false) { 
    echo "  [PASS] Basic div with h1 child created.\n"; 
} else { 
    echo "  [FAIL] Basic div creation failed.\n"; 
} 
echo "\n"; 
 
// 2. HTMX Attributes 
echo "2. HTMX Attributes:\n"; 
$button_htmx = HtmlElement::button('Load More') // Using static factory 
    ->setHxPost('/load-items') 
    ->setHxTarget('#item-list') 
    ->setHxSwap('beforeend') 
    ->setHxIndicator('#loading-spinner'); 
$output2 = $button_htmx->output(); 
echo $output2 . "\n"; 
// Basic check 
if (strpos($output2, 'hx-post="/load-items"') !== false && strpos($output2, 'hx-target="#item-list"') !== false) { 
    echo "  [PASS] HTMX attributes set correctly.\n"; 
} else { 
    echo "  [FAIL] HTMX attribute setting failed.\n"; 
} 
echo "\n"; 
 
// 3. Hyperscript Attribute 
echo "3. Hyperscript Attribute:\n"; 
$button_hs = HtmlElement::button('Toggle Class') // Using static factory 
    ->setHyperscript('on click toggle .active on me'); 
$output3 = $button_hs->output(); 
echo $output3 . "\n"; 
// Basic check 
if (strpos($output3, '_="on click toggle .active on me"') !== false) { 
    echo "  [PASS] Hyperscript attribute set correctly.\n"; 
} else { 
    echo "  [FAIL] Hyperscript attribute setting failed.\n"; 
} 
echo "\n"; 
 
// 4. Combining HTMX and Hyperscript 
echo "4. Combining HTMX and Hyperscript:\n"; 
$input = HtmlElement::input() // Using static factory 
    ->setType('text') 
    ->setHxTrigger('keyup changed delay:500ms') 
    ->setHxGet('/validate-username') 
    ->setHyperscript('on htmx:afterRequest if my.value is "" remove .error from me else add .error to me'); 
$output4 = $input->output(); 
echo $output4 . "\n"; 
// Basic check 
if (strpos($output4, 'hx-trigger="keyup changed delay:500ms"') !== false && strpos($output4, '_="on htmx:afterRequest') !== false) { 
    echo "  [PASS] Combined HTMX/Hyperscript attributes set correctly.\n"; 
} else { 
    echo "  [FAIL] Combined HTMX/Hyperscript attribute setting failed.\n"; 
} 
echo "\n"; 
 
?>
 
 |