76 lines
1.8 KiB
PHP
76 lines
1.8 KiB
PHP
<?php
|
|
|
|
require_once __DIR__ . '/../vendor/autoload.php';
|
|
|
|
use PHPNative\Framework\Application;
|
|
use PHPNative\Ui\Widget\Button;
|
|
use PHPNative\Ui\Widget\Container;
|
|
use PHPNative\Ui\Widget\Label;
|
|
|
|
// Check PHP version
|
|
if (PHP_VERSION_ID < 80100) {
|
|
die("This demo requires PHP 8.1+ for Fiber support.\nYour version: " . PHP_VERSION . "\n");
|
|
}
|
|
|
|
$app = new Application('Button Example', 800, 600);
|
|
|
|
// Main container
|
|
$mainContainer = new Container(style: 'p-10 bg-gray-100');
|
|
|
|
// Title
|
|
$title = new Label(
|
|
text: 'Button Sizing Example',
|
|
style: 'text-xl text-black',
|
|
);
|
|
$mainContainer->addComponent($title);
|
|
|
|
// Button with m-10 p-10, should be: 12 (text) + 10 (padding-top) + 10 (padding-bottom) = 32px height
|
|
$button1 = new Button(
|
|
text: 'Click Me',
|
|
style: 'm-10 p-10 bg-blue-500 rounded-lg',
|
|
);
|
|
$mainContainer->addComponent($button1);
|
|
|
|
// Button with different padding
|
|
$button2 = new Button(
|
|
text: 'Another Button',
|
|
style: 'm-5 p-15 bg-green-500 rounded-lg',
|
|
onClick: function () {
|
|
echo 'test2';
|
|
},
|
|
);
|
|
$mainContainer->addComponent($button2);
|
|
|
|
// Button with no padding
|
|
$button3 = new Button(
|
|
text: 'No Padding',
|
|
style: 'm-10 bg-red-500 rounded-lg',
|
|
);
|
|
$mainContainer->addComponent($button3);
|
|
|
|
// Container with multiple labels (should stack)
|
|
$labelContainer = new Container(style: 'm-10 p-10 bg-white rounded-lg');
|
|
$labelContainer->addComponent(new Label(
|
|
text: 'Label 1',
|
|
style: 'text-black',
|
|
));
|
|
$labelContainer->addComponent(new Label(
|
|
text: 'Label 2',
|
|
style: 'text-black',
|
|
));
|
|
$labelContainer->addComponent(new Label(
|
|
text: 'Label 3',
|
|
style: 'text-black',
|
|
));
|
|
$mainContainer->addComponent($labelContainer);
|
|
|
|
// Info text
|
|
$info = new Label(
|
|
text: 'Containers should auto-size to their content',
|
|
style: 'text-black m-10',
|
|
);
|
|
$mainContainer->addComponent($info);
|
|
|
|
$app->setRoot($mainContainer);
|
|
$app->run();
|