diogogpinto/filament-auth-ui-enhancer

This Filament plugin empowers you to transform your auth pages with ease, allowing you to make them truly stand out. It offers a flexible alternative to the default auth pages in the Filament Panels package.

v1.0.1 2024-10-22 15:59 UTC

This package is auto-updated.

Last update: 2024-11-22 16:32:10 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Filament Auth UI Enhancer

Looking for an easy way to customize the UI of your Auth Pages in your Filament Panel?

This Filament plugin empowers you to transform your auth pages with ease, allowing you to make them truly stand out. It offers a flexible alternative to the default auth pages in the Filament Panels package.

Setting it up is a breeze, and it comes packed with a variety of customizable features—plus, there’s a lot more to come! 🔥

Check out some examples you can create right out of the box:

Auth UI Enhancer Examples

Navigation

Installation

First, starting by installing the plugin via composer:

composer require diogogpinto/filament-auth-ui-enhancer

In an effort to align with Filament's theming methodology you will need to use a custom theme to use this plugin.

Important

If you have not set up a custom theme, follow the instructions in the Filament Docs first.

  1. Add the plugin's views to your tailwind.config.js file. (path: /resource/css/filament/admin)
content: [
    './vendor/diogogpinto/filament-auth-ui-enhancer/resources/**/*.blade.php',
]

Important

The above content should be placed in your filament theme's tailwind.config.js file, under the /resources/css/filament path

  1. Run npm run build in your terminal

Usage

To start using the plugin, you need to add the plugin to your plugins array in your filament panel.

use DiogoGPinto\AuthUIEnhancer\AuthUIEnhancerPlugin;

 ->plugins([
    AuthUIEnhancerPlugin::make(),
])

Auth Page Discovery

Default Auth Logic

If you don't have any custom classes on the auth methods of your Filament panel (login(), registration(), resetPassword() and emailVerification()), this plugin will work almost out of the box.

If your panel provider is setup like below, this plugin will automatically apply the changes to your UI.

$panel
    ->login()
    ->registration()

Custom Auth Logic

If you have custom logic in the mentioned methods, there is a simple way to make that UI pop, using a simple trait from this plugin. If your panel looks like the below:

$panel
    ->login(YourLoginClass::class)

Just add the following trait to YouLoginClass:

use DiogoGPinto\AuthUIEnhancer\Pages\Auth\Concerns\HasCustomLayout;

class YourLoginClass extends BaseLogin
{
    use HasCustomLayout;
}

Customizing the Auth UI

The view for this package divides your screen in two sections:

  • Form Panel - The panel that contains the form
  • Empty Panel - The panel that contains the image

Customizing the Form Panel

You can customize:

Form Position

'Form Position Examples'

You can make the form appear on the left side of the page or in the right side of the page.

->formPanelPosition('left')

Form Position on Mobile

'Mobile Form Position Examples'

On mobile devices, you can chose if the form appears above the empty container or below.

->mobileFormPanelPosition('bottom')

This method accepts top or bottom as arguments. You can also hide the empty panel on mobile (see below).

Form Panel Width

'Form Width Examples'

The form panel width has a default value of 50%. You can change it by adding the following method and passing the desired width.

->formPanelWidth('40%')

Sizes must be expressed in rem, %, px, em, vw, vh or pt.

Form Panel Background Color

'Form Background Color Examples'

You can change the form panel background color by using the following method:

use Filament\Support\Colors\Color;

->formPanelBackgroundColor(Color::Zinc, '300')

In this case, 300 is the shade of the color you want to use.

You can also set the color using HEX or RGB, like in a typical filament panel:

use Filament\Support\Colors\Color;

->formPanelBackgroundColor(Color::hex('#f0f0f0'))

Customizing the Empty Panel

You can customize:

Empty Panel Background Image and Image Opacity

'Empty Panel Background Examples'

You can set an image to be displayed on the empty panel, and control its opacity.

->emptyPanelBackgroundImageUrl('images/login.webp')

You can pass an asset url, with Laravel's function asset('images/login.webp').

If you would like to chance the image opacity of your image, you can use the following method:

->emptyPanelBackgroundImageOpacity('50%')

Empty Panel Background Color

'Empty Panel Background Color Examples'

The default background color is your panel's primary color. You can change the empty panel background color by using the following method:

use Filament\Support\Colors\Color;

->emptyPanelBackgroundColor(Color::Zinc, '300')

In this case, 300 is the shade of the color you want to use.

You can also set the color using HEX or RGB, like in a typical filament panel:

use Filament\Support\Colors\Color;

->emptyPanelBackgroundColor(Color::hex('#f0f0f0'))

Hide Empty Panel on Mobile Devices

You can just use the following method, so the empty panels disappears on mobile and the form container spans to full height:

->showEmptyPanelOnMobile(false)

Further Customization - CSS

You can create further customizations in your theme's CSS file. The following classes are avaliable:

/* Whole page wrapper */
.custom-auth-wrapper {}

/* Empty panel wrapper */
.custom-auth-empty-panel {}

/* Form panel wrapper */
.custom-auth-form-panel {}

/* Form wrapper */
.custom-auth-form-wrapper {}

Working Example

If you're just looking to plug and play some code into your Filament Panel, here's a working code so you can just insert into your plugins array:

use DiogoGPinto\AuthUIEnhancer\AuthUIEnhancerPlugin;
$panel
    ->plugins([
        AuthUIEnhancerPlugin::make()
            ->showEmptyPanelOnMobile(false)
            ->formPanelPosition('right')
            ->formPanelWidth('40%')
            ->emptyPanelBackgroundImageOpacity('70%')
            ->emptyPanelBackgroundImageUrl('https://images.pexels.com/photos/466685/pexels-photo-466685.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2')
    ]);

Warning

This is a random image URL I got from Pexels. If you want to use it in production or commercially you should check its license.

Todo

  • Render custom views on empty panel
  • Develop different layouts

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.