Egyéni bővítmények
Az egyéni bővítmény egy PHP osztály, amely megvalósítja a TailwindPHP\Plugin\PluginInterface felületet. Kap egy PluginAPI példányt, és ezzel regisztrál statikus és funkcionális segédosztályokat, komponenseket, valamint változatokat. A registerPlugin() segítségével történő regisztrálás után a bővítmény neve feloldható egy @plugin direktívában — ugyanígy működnek a beépített tipográfiai és űrlapbővítmények is.
PluginInterface
Valósítson meg három metódust:
namespace TailwindPHP\Plugin;
interface PluginInterface
{
public function getName(): string;
public function __invoke(PluginAPI $api, array $options = []): void;
public function getThemeExtensions(array $options = []): array;
}
- A
getName()adja vissza a@plugin "..."-ben használt azonosítót. - A
__invoke()futtatja a bővítményt, és mindent a$apisegítségével regisztrál. A$optionstömb tartalmazza az@pluginCSS blokkból származó értékeket. - A
getThemeExtensions()a segédosztályok létrehozása előtt egyesítendő tématértereket adja vissza (ha nincs ilyen, adjon vissza[]értéket).
Példa
use TailwindPHP\Plugin\PluginInterface;
use TailwindPHP\Plugin\PluginAPI;
class MyCustomPlugin implements PluginInterface
{
public function getName(): string
{
return 'my-custom-plugin';
}
public function __invoke(PluginAPI $api, array $options = []): void
{
// Static utilities
$api->addUtilities([
'.btn' => [
'padding' => '0.5rem 1rem',
'border-radius' => '0.25rem',
'font-weight' => '600',
],
'.btn-primary' => [
'background-color' => 'blue',
'color' => 'white',
],
]);
// Functional utilities (generates .gutter-sm, .gutter-md, .gutter-lg)
$api->matchUtilities(
[
'gutter' => fn ($value) => ['padding-inline' => $value],
],
['values' => ['sm' => '1rem', 'md' => '2rem', 'lg' => '3rem']]
);
// Component classes (sorted into the components layer)
$api->addComponents([
'.card' => [
'background-color' => 'white',
'border-radius' => '0.5rem',
'padding' => '1rem',
],
]);
// Custom variant (see the note below the API reference)
$api->addVariant('hocus', '&:hover, &:focus');
// Read a theme value
$primary = $api->theme('colors.blue.500', '#3b82f6');
}
public function getThemeExtensions(array $options = []): array
{
return []; // Return theme additions if needed
}
}
PluginAPI referencia
A API a TailwindCSS bővítmény API felületét követi:
| Metódus | Aláírás | Rendeltetés |
|---|---|---|
addBase |
addBase(array $css): void |
Alaprétegbeli stílusok hozzáadása. |
addUtilities |
addUtilities(array $utilities, array $options = []): void |
Szelektor szerint kulcsolt statikus segédosztályok regisztrálása. |
matchUtilities |
matchUtilities(array $utilities, array $options = []): void |
Funkcionális segédosztályok regisztrálása; a $options['values'] adja meg az értéktérképet, a $options['supportsNegativeValues'] pedig engedélyezi a negatív értékeket. |
addComponents |
addComponents(array $components, array $options = []): void |
Komponensosztályok regisztrálása (komponensréteg). |
matchComponents |
matchComponents(array $components, array $options = []): void |
Funkcionális komponensek regisztrálása értéktérképpel. |
addVariant |
addVariant(string $name, string|array $variant): void |
Statikus változat regisztrálása szelektorból. |
matchVariant |
matchVariant(string $name, callable $callback, array $options = []): void |
Funkcionális változat regisztrálása; az $options['values'] adja meg az értéktérképet. |
theme |
theme(string $path, mixed $defaultValue = null): mixed |
Témaérték beolvasása pontokkal elválasztott útvonal alapján (e.g. colors.blue.500). |
config |
config(?string $path = null, mixed $defaultValue = null): mixed |
Konfigurációs érték beolvasása pontokkal elválasztott útvonal alapján, vagy a teljes konfiguráció beolvasása, ha a $path értéke null. |
prefix |
prefix(string $className): string |
A beállított előtag alkalmazása egy osztálynévre. |
A matchUtilities, matchComponents és matchVariant részére átadott visszahívás az értéket, valamint egy második, modifier kulcsot tartalmazó argumentumtömböt kap.
Olyan segédosztályneveket válasszon, amelyeket a Tailwind még nem használ. Ha egy bővítmény segédosztálya megegyezik egy beépített nevével (például a tab-* névvel, amelyet a Tailwind a tab-size értékhez használ, mivel v4.3), mindkét deklaráció ugyanabba a szabályba kerül, és a beépített szabály szerepel később, ezért az érvényesül: a tab-4 bővítmény 7 értékhez rendelve is tab-size: 4-t állít elő.
Ismert probléma: a
addVariant()segítségével regisztrált változatok és amatchVariant()által regisztrált értékenkénti változatok nem alkalmazódnak a jelenlegi kiadásban. A fenti példában szereplőhocus:flex.hocus\:flex { display: flex; }-ra fordul,:hover/:focusszelektor nélkül (#10). A javításig a változatot a CSS fájlban, a@custom-varianthasználatával határozza meg; ez működik:@custom-variant hocus (&:hover, &:focus);.
Regisztrálás és használat
Regisztrálja a bővítménypéldányt, majd hivatkozzon rá a getName()-ből származó névvel:
use TailwindPHP\tw;
use function TailwindPHP\registerPlugin;
registerPlugin(new MyCustomPlugin());
$css = tw::generate(
'<div class="btn btn-primary card gutter-md">…</div>',
'@plugin "my-custom-plugin"; @import "tailwindcss/utilities.css";'
);
A @plugin direktíváról lásd a Bővítmények oldalt, a $api->theme() segítségével elérhető értékekről pedig a Téma oldalt.