Saltar al contenido
Filament Custom Theme
code

Detalles del ejemplo

Filament Custom Theme

Theme presets y utilidades para personalizar Filament v4 fácilmente.

Instalación

composer require cursosdesarrolloweb/filament-custom-theme

Uso Rápido

Aplica un tema prediseñado en tu PanelProvider:

use CursosDesarrolloWeb\CustomTheme\Themes\CorporateTheme;

public function panel(Panel $panel): Panel
{
    return CorporateTheme::make()->apply($panel);
}

Temas Disponibles

Tema Primary Gray Descripción
CorporateTheme Indigo Slate Profesional para aplicaciones empresariales
MinimalTheme Zinc Zinc Minimalista, enfocado en el contenido
VibrantTheme Fuchsia Neutral Colorido para aplicaciones creativas
DarkProTheme Emerald Zinc Dark mode elegante para desarrolladores
OceanTheme Cyan Slate Calmado y confiable

Personalizar un Preset

Todos los temas pueden personalizarse mediante métodos fluent:

use CursosDesarrolloWeb\CustomTheme\Themes\CorporateTheme;
use Filament\Enums\ThemeMode;

CorporateTheme::make()
    ->primaryColor('#3B82F6')
    ->dangerColor('#EF4444')
    ->grayColor('#64748B')
    ->logo(asset('images/logo.svg'))
    ->darkModeLogo(asset('images/logo-dark.svg'))
    ->favicon(asset('images/favicon.ico'))
    ->brandLogoHeight('2.5rem')
    ->themeMode(ThemeMode::Light)
    ->apply($panel);

Métodos Disponibles

Método Descripción
primaryColor($color) Color principal de la UI
dangerColor($color) Color para acciones destructivas
grayColor($color) Color base para fondos y textos
infoColor($color) Color para información
successColor($color) Color para éxito
warningColor($color) Color para advertencias
logo($url) Logo para modo claro
darkModeLogo($url) Logo para modo oscuro
favicon($url) Favicon de la aplicación
brandLogoHeight($height) Altura del logo (ej: 2rem)
themeMode($mode) Modo por defecto: Light, Dark, System

Colores Personalizados

Puedes usar colores hex, RGB o las constantes de Tailwind:

use Filament\Support\Colors\Color;

// Hex
CorporateTheme::make()->primaryColor('#6366f1');

// RGB string
CorporateTheme::make()->primaryColor('rgb(99, 102, 241)');

// Tailwind Color
CorporateTheme::make()->primaryColor(Color::Purple);

Crear tu Propio Tema

Extiende BaseTheme para crear temas reutilizables:

<?php

namespace App\Themes;

use CursosDesarrolloWeb\CustomTheme\Themes\BaseTheme;
use Filament\Enums\ThemeMode;
use Filament\Support\Colors\Color;

class MiTema extends BaseTheme
{
    protected array|string $primaryColor = '#6366f1';
    protected array|string $dangerColor = Color::Red;
    protected array|string $grayColor = Color::Slate;
    protected array|string $infoColor = Color::Sky;
    protected array|string $successColor = Color::Green;
    protected array|string $warningColor = Color::Amber;
    
    protected ?string $logo = '/images/logo.svg';
    protected ?ThemeMode $themeMode = ThemeMode::System;
}

Úsalo en tu panel:

use App\Themes\MiTema;

public function panel(Panel $panel): Panel
{
    return MiTema::make()->apply($panel);
}

Usando el Trait HasTheme

Para una integración más limpia, usa el trait en tu PanelProvider:

use CursosDesarrolloWeb\CustomTheme\Concerns\HasTheme;
use CursosDesarrolloWeb\CustomTheme\Themes\CorporateTheme;

class AdminPanelProvider extends PanelProvider
{
    use HasTheme;

    public function panel(Panel $panel): Panel
    {
        return $this->applyTheme($panel, CorporateTheme::class);
    }
}

Generador de Colores OKLCH

El paquete incluye un generador de paletas OKLCH para crear colores personalizados:

use CursosDesarrolloWeb\CustomTheme\Support\ColorGenerator;

// Generar paleta completa desde hex
$palette = ColorGenerator::fromHex('#6366f1');
// Retorna: [50 => 'oklch(...)', 100 => 'oklch(...)', ... 950 => 'oklch(...)']

// Generar paleta desde RGB
$palette = ColorGenerator::fromRgb(99, 102, 241);

// Convertir hex a OKLCH
$oklch = ColorGenerator::hexToOklch('#6366f1');
// Retorna: 'oklch(0.541 0.245 264.052)'

Requisitos

  • PHP 8.2+
  • Laravel 11+
  • Filament 4.x|5.x

Licencia

Propietario - Solo para suscriptores de CursosDesarrolloWeb.