패널 커스터마이징
📝 초안 (Draft)
이 문서는 검토 중입니다. 내용이 변경될 수 있습니다.
Filament 패널을 커스터마이징하는 방법을 설명합니다.
개요
Multi-SaaS Kit의 Level 0~6 계층 패널은 Filament v4를 기반으로 합니다. 각 패널을 프로젝트 요구사항에 맞게 커스터마이징할 수 있습니다.
테마 변경
패널별 색상
각 패널은 고유한 색상으로 구분됩니다:
| 패널 | 기본 색상 | 설정 |
|---|---|---|
| Platform | Red | Color::Red |
| SaaS | Orange | Color::Orange |
| Tenant | Blue | Color::Blue |
| Org | Teal | Color::Teal |
| Workspace | Indigo | Color::Indigo |
| Team | Green | Color::Green |
| App | Slate | Color::Slate |
// PanelProvider에서 색상 변경
->colors([
'primary' => Color::Blue,
'danger' => Color::Rose,
'warning' => Color::Amber,
'success' => Color::Green,
])
다크 모드
// 다크 모드 강제 적용
->darkMode(true)
// 사용자 선택 허용 (기본값)
->darkMode()
브랜드 로고
->brandLogo(asset('images/logo.svg'))
->darkModeBrandLogo(asset('images/logo-dark.svg'))
->brandLogoHeight('2rem')
메뉴 커스터마이징
네비게이션 그룹
// Resource에서 그룹 지정
protected static ?string $navigationGroup = '사용자 관리';
protected static ?int $navigationSort = 1;
조건부 네비게이션
// 특정 조건에서만 메뉴 표시
public static function shouldRegisterNavigation(): bool
{
return auth()->user()->level <= 2;
}
커스텀 메뉴 항목
// PanelProvider에서 직접 추가
->navigationItems([
NavigationItem::make('대시보드')
->icon('heroicon-o-home')
->isActiveWhen(fn () => request()->routeIs('dashboard'))
->url('/dashboard'),
])
위젯 추가
대시보드 위젯
namespace App\Filament\Platform\Widgets;
use Filament\Widgets\StatsOverviewWidget;
use Filament\Widgets\StatsOverviewWidget\Stat;
class StatsOverview extends StatsOverviewWidget
{
protected function getStats(): array
{
return [
Stat::make('총 테넌트', Tenant::count())
->description('활성 테넌트')
->color('success'),
Stat::make('총 사용자', User::count())
->description('전체 사용자 수')
->color('primary'),
];
}
}
위젯 등록
// PanelProvider에서 등록
->widgets([
StatsOverview::class,
RecentActivityWidget::class,
])
위젯 컬럼 조절
protected int | string | array $columnSpan = 'full';
// 또는
protected int | string | array $columnSpan = 2;
경로 변경
환경변수로 설정
# .env
PANEL_PATH_PLATFORM=admin-secret
PANEL_PATH_TENANT=customer
PANEL_PATH_APP=my
// PanelProvider에서 사용
->path(env('PANEL_PATH_PLATFORM', 'platform'))
nginx 별칭 설정
여러 경로로 같은 패널에 접근하려면:
# nginx.conf
location /shop {
rewrite ^/shop(.*)$ /team$1 last;
}
인증 커스터마이징
로그인 페이지
->login(CustomLoginPage::class)
회원가입
->registration(CustomRegisterPage::class)
// 또는 기본 활성화
->registration()