kingmaker/filament-flex-layout
Installation:
composer require kingmaker/filament-flex-layout
Ensure your Filament version is 3.3+ (check filament/filament package).
First Use Case:
Replace a default Split layout in a Form or Infolist with Flex:
use Kingmaker\FilamentFlexLayout\Components\Flex;
Flex::make()
->schema([
TextInput::make('name')->columnSpanFull(),
TextInput::make('description')->columnSpanFull(),
])
->horizontalArrangement(HorizontalArrangement::Start)
->gap(16),
Key Files:
app/Providers/FilamentServiceProvider.php (register if not auto-discovered).resources/views/vendor/filament/... (custom overrides if needed).Responsive Flex Layouts:
Use horizontalArrangement() with Filament’s responsive modifiers:
Flex::make()
->horizontalArrangement([
'sm' => HorizontalArrangement::Center,
'lg' => HorizontalArrangement::SpaceBetween,
])
->gap(16),
Conditional Gap: Dynamically adjust gaps based on context (e.g., form size):
Flex::make()
->gap(fn (Get) => Get::hasRecord() ? 24 : 16),
Nested Flex Containers:
Combine with other layouts (e.g., Columns, Tabs):
Tabs::make('tabs')->columns(2)
->tab('Tab 1', Flex::make()->schema([/* ... */]))
->tab('Tab 2', Flex::make()->schema([/* ... */])),
Column Span Compatibility:
Ensure child fields use columnSpanFull() or columnSpan('full') for full-width alignment.
TextInput::make('title')->columnSpanFull(),
Form Actions:
Place buttons in Flex for aligned action groups:
Flex::make()
->schema([
SubmitAction::make('save'),
Action::make('export')->color('gray'),
])
->horizontalArrangement(HorizontalArrangement::End),
Infolist Usage: Align labels/values dynamically:
Flex::make()
->schema([
TextEntry::make('user.name'),
TextEntry::make('user.email'),
])
->horizontalArrangement(HorizontalArrangement::SpaceBetween),
grow(false) Requirement:
grow(); otherwise, justify-content fails.TextInput::make('field')->grow(false),
CSS Conflicts:
gap or justify-content.!important in your package’s CSS or inspect Filament’s compiled styles.Filament v4+:
Flex exists in v4; this package is v3-only.Split with custom CSS for v4.Inspect Rendered HTML:
Check if flex-gap or justify-content classes are applied via browser dev tools.
<!-- Expected: -->
<div class="flex justify-start gap-4">
Log Schema: Debug layout structure with:
dd(Flex::make()->schema([/* ... */])->getSchema());
Custom Horizontal Arrangements:
Extend HorizontalArrangement enum:
namespace App\Enums;
use Kingmaker\FilamentFlexLayout\Enums\HorizontalArrangement as BaseArrangement;
enum CustomArrangement: string {
case CustomCenter = 'custom-center';
}
// Register in service provider.
Dynamic Gap Calculation:
Override gap logic in a custom Flex class:
class CustomFlex extends Flex {
public function gap($value): static {
return $this->state(['gap' => $value * 2]); // Double gap
}
}
Theme Integration: Sync gap sizes with Filament’s theme:
// config/filament.php
'gap' => [
'sm' => 8,
'md' => 16,
'lg' => 24,
],
How can I help you explore Laravel packages today?