← All Packages /

Layup Page Builder

Extending a built-in widget

To modify an existing widget's behavior, extend its class:

<?php

declare(strict_types=1);

namespace App\Layup\Widgets;

use Crumbls\Layup\View\HeadingWidget;
use Filament\Forms\Components\Select;

class CustomHeadingWidget extends HeadingWidget
{
    public static function getType(): string
    {
        return 'custom-heading';
    }

    public static function getLabel(): string
    {
        return 'Custom Heading';
    }

    public static function getContentFormSchema(): array
    {
        return array_merge(parent::getContentFormSchema(), [
            Select::make('style')
                ->label('Style')
                ->options([
                    'default' => 'Default',
                    'underline' => 'With Underline',
                    'accent' => 'Accent Color',
                ]),
        ]);
    }
}

Replacing a built-in widget

To completely replace a built-in widget, use withoutWidgets() on the plugin and register your replacement:

use Crumbls\Layup\LayupPlugin;
use Crumbls\Layup\View\HeadingWidget;
use App\Layup\Widgets\CustomHeadingWidget;

LayupPlugin::make()
    ->withoutWidgets([HeadingWidget::class])
    ->widgets([CustomHeadingWidget::class]),

Removing widgets

Remove widgets you do not need:

use Crumbls\Layup\View\LoginWidget;
use Crumbls\Layup\View\CookieConsentWidget;

LayupPlugin::make()
    ->withoutWidgets([
        LoginWidget::class,
        CookieConsentWidget::class,
    ]),

Using only specific widgets

To start with no built-in widgets and register only the ones you need:

LayupPlugin::make()
    ->withoutConfigWidgets()
    ->widgets([
        \Crumbls\Layup\View\TextWidget::class,
        \Crumbls\Layup\View\HeadingWidget::class,
        \Crumbls\Layup\View\ImageWidget::class,
        \Crumbls\Layup\View\ButtonWidget::class,
        \App\Layup\Widgets\BannerWidget::class,
    ]),

Customizing widget views

Publish the Blade views to override rendering for any built-in widget:

php artisan vendor:publish --tag=layup-views

Views are published to resources/views/vendor/layup/components/. Edit the specific widget view (e.g., heading.blade.php) to change its HTML output.


Contributors

Thank you to everyone who has contributed to this package. Every pull request, bug report, and idea makes a difference.