PHP code example of eurym3d0n / tailwind-engine
1. Go to this page and download the library: Download eurym3d0n/tailwind-engine library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
eurym3d0n / tailwind-engine example snippets
use TailwindEngine\DSL\Tailwind;
$classes = Tailwind::new()
->add('flex items-center gap-4')
->add('mt-2', 'mt-8') // conflict: mt-8 wins
->add('text-lg', 'text-white') // no conflict: different families
->build();
echo $classes;
// flex items-center gap-4 text-lg text-white mt-8
// mt-4 and mt-8 are in the same family ('mt-') with no variant prefix.
// mt-8 overwrites mt-4.
Tailwind::new()->add('mt-4', 'mt-8')->build(); // "mt-8"
// mt-4 and mb-4 are in different families ('mt-' vs 'mb-').
// Both survive.
Tailwind::new()->add('mt-4', 'mb-4')->build(); // "mt-4 mb-4"
// text-lg (family: text-size) and text-red-500 (family: text-color)
// are in different families. Both survive.
Tailwind::new()->add('text-lg', 'text-red-500')->build(); // "text-lg text-red-500"
// 'mt-4' and 'hover:mt-8' do not conflict.
Tailwind::new()->add('mt-4', 'hover:mt-8')->build(); // "mt-4 hover:mt-8"
// 'hover:mt-4' and 'hover:mt-8' do conflict (same family, same variant).
Tailwind::new()->add('hover:mt-4', 'hover:mt-8')->build(); // "hover:mt-8"
Tailwind::new()
->add('hover:mt-4', 'bg-blue-600', 'flex', 'mt-2')
->build();
// "flex mt-2 bg-blue-600 hover:mt-4"
use TailwindEngine\DSL\Tailwind;
// Static constructor (zero-configuration, no DI container cepted)
$builder = $builder->add('flex', 'items-center gap-4');
// Conditionally append classes
$builder = $builder->addWhen($isActive, 'ring-2 ring-blue-500');
$builder = $builder->addUnless($isDisabled, 'cursor-pointer');
// Compile and return a TailwindString (implements Stringable)
$result = $builder->build();
echo $result; // use in string context directly
(string) $result; // explicit cast
$result->toString(); // explicit method
$base = Tailwind::new()->add('inline-flex items-center gap-2 rounded-lg px-4 py-2 font-semibold transition');
$primary = $base->add('bg-blue-600 text-white hover:bg-blue-700');
$danger = $base->add('bg-red-600 text-white hover:bg-red-700');
// $base is unaffected.
echo $primary->build(); // "inline-flex items-center ... bg-blue-600 text-white hover:bg-blue-700"
echo $danger->build(); // "inline-flex items-center ... bg-red-600 text-white hover:bg-red-700"
use TailwindEngine\Core\TailwindEngineFactory;
use TailwindEngine\Support\ValueObject\TailwindClassList;
$engine = TailwindEngineFactory::create();
$classes = new TailwindClassList(['flex items-center', 'bg-blue-600', 'mt-4 mt-8']);
$result = $engine->compile($classes);
echo $result; // "flex items-center bg-blue-600 mt-8"
use TailwindEngine\Core\FamilyRegistry;
class MyRegistry extends FamilyRegistry
{
public function getFamilies(): array
{
return array_merge(parent::getFamilies(), [
'my-custom-' => null,
'my-exact' => ['my-exact-sm', 'my-exact-lg'],
]);
}
public function getSortOrder(): array
{
// Insert the custom families at the desired sort position.
$order = parent::getSortOrder();
$insertAfter = array_search('opacity-', $order, true);
array_splice($order, $insertAfter + 1, 0, ['my-custom-', 'my-exact']);
return $order;
}
}
use TailwindEngine\Core\TailwindEngineFactory;
use TailwindEngine\DSL\Tailwind;
$engine = TailwindEngineFactory::create(new MyRegistry());
$builder = new Tailwind($engine);
echo $builder->add('my-custom-sm', 'my-custom-lg')->build();
// "my-custom-lg" (conflict resolved, last wins)
src/
Contract/
ClassFlattenerInterface.php
ClassSorterInterface.php
ConflictResolverInterface.php
FamilyResolverInterface.php
Core/
Registry/
AccessibilityFamilies.php
LayoutFamilies.php
FlexboxFamilies.php
GridFamilies.php
AlignmentFamilies.php
SizingFamilies.php
SpacingFamilies.php
TypographyFamilies.php
BackgroundFamilies.php
BorderFamilies.php
EffectFamilies.php
FilterFamilies.php
TransformFamilies.php
TransitionFamilies.php
InteractivityFamilies.php
SvgFamilies.php
ColumnFamilies.php
FamilyRegistry.php
FamilyResolver.php
ClassFlattener.php
ConflictResolver.php
ClassSorter.php
TailwindEngine.php
TailwindEngineFactory.php
DSL/
Tailwind.php
Support/
ValueObject/
TailwindClassList.php
TailwindString.php