Installation
import Aside from "@components/Aside.astro" import RadioGroup from "@components/RadioGroup.astro" import RadioGroupOption from "@components/RadioGroupOption.astro"
Filament requires the following to run:
- PHP 8.2+
- Laravel v11.28+
- Tailwind CSS v4.1+
Installation comes in two flavors, depending on whether you want to build an app using our panel builder or use the components within your app's Blade views:
## Installing the panel builder
Install the Filament Panel Builder by running the following commands in your Laravel project directory:
This will create and register a new [Laravel service provider](https://laravel.com/docs/providers) called `app/Providers/Filament/AdminPanelProvider.php`.
You can create a new user account using the following command:
Open `/admin` in your web browser, sign in, and [start building your app](../getting-started)!
composer require filament/filament:"^4.0"
php artisan filament:install --panels
php artisan make:filament-user
## Installing the individual components
Install the Filament components you want to use with Composer:
You can install additional packages later in your project without having to repeat these installation steps.
If you only want to use the set of [Blade UI components](../components), you'll need to require `filament/support` at this stage.
New Laravel projects
Get started with Filament components quickly by running a simple command. Note that this will overwrite any modified files in your app, so it's only suitable for new Laravel projects.
Existing Laravel projects
If you have an existing Laravel project, you can still install Filament, but should do so manually to preserve your existing functionality.
## Publishing configuration
Filament ships with a configuration file that allows you to override defaults shared across all packages. Publish it after installing the panel builder so you can review and customize the settings:
composer require
filament/tables:"^4.0"
filament/schemas:"^4.0"
filament/forms:"^4.0"
filament/infolists:"^4.0"
filament/actions:"^4.0"
filament/notifications:"^4.0"
filament/widgets:"^4.0"
To quickly set up Filament in a new Laravel project, run the following commands to install [Livewire](https://livewire.laravel.com), [Alpine.js](https://alpinejs.dev), and [Tailwind CSS](https://tailwindcss.com):
Run the following command to install the Filament frontend assets:
During scaffolding, if you have the [Notifications](../notifications) package installed, Filament will ask if you want to install the required Livewire component into your default layout file. This component is required if you want to send flash notifications to users through Filament.
php artisan filament:install --scaffold
npm install
npm run dev
Run the following command to install the Filament frontend assets:
### Installing Tailwind CSS
Run the following command to install Tailwind CSS and its Vite plugin, if you don't have those installed already:
### Configuring styles
To configure Filament's styles, you need to import the CSS files for the Filament packages you installed, usually in `resources/css/app.css`.
Depending on which combination of packages you installed, you can import only the necessary CSS files, to keep your app's CSS bundle size small:
### Configure the Vite plugin
If it isn't already set up, add the `@tailwindcss/vite` plugin to your Vite configuration (`vite.config.js`):
### Compiling assets
Compile your new CSS and JavaScript assets using `npm run dev`.
### Configuring your layout
If you don't have a Blade layout file yet, create it at `resources/views/components/layouts/app.blade.php` by running the following command:
Add the following code to your new layout file:
The important parts of this are the `@filamentStyles` in the `` of the layout, and the `@filamentScripts` at the end of the ``. Make sure to also include your app's compiled CSS and JavaScript files from Vite!
php artisan filament:install
npm install tailwindcss @tailwindcss/vite --save-dev
@import 'tailwindcss';
/* Required by all components */
@import '../../vendor/filament/support/resources/css/index.css';
/* Required by actions and tables */
@import '../../vendor/filament/actions/resources/css/index.css';
/* Required by actions, forms and tables */
@import '../../vendor/filament/forms/resources/css/index.css';
/* Required by actions and infolists */
@import '../../vendor/filament/infolists/resources/css/index.css';
/* Required by notifications */
@import '../../vendor/filament/notifications/resources/css/index.css';
/* Required by actions, infolists, forms, schemas and tables */
@import '../../vendor/filament/schemas/resources/css/index.css';
/* Required by tables */
@import '../../vendor/filament/tables/resources/css/index.css';
/* Required by widgets */
@import '../../vendor/filament/widgets/resources/css/index.css';
@variant dark (&:where(.dark, .dark *));
import { defineConfig } from 'vite'
import laravel from 'laravel-vite-plugin'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [
laravel({
input: ['resources/css/app.css', 'resources/js/app.js'],
refresh: true,
}),
tailwindcss(),
],
})
php artisan livewire:layout
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="application-name" content="{{ config('app.name') }}">
<meta name="csrf-token" content="{{ csrf_token() }}">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ config('app.name') }}</title>
<style>
[x-cloak] {
display: none !important;
}
</style>
@filamentStyles
@vite('resources/css/app.css')
</head>
<body class="antialiased">
{{ $slot }}
@livewire('notifications') {{-- Only required if you wish to send flash notifications --}}
@filamentScripts
@vite('resources/js/app.js')
</body>
</html>
php artisan vendor:publish --tag=filament-config