Sign in

Dan Harrin

@danharrin.com
897 followers 92 following 86 posts

Co-creator of @filamentphp.com, software architect at Canyon GBS

PostsRepliesMedia
Dan Harrin @danharrin.com · 26/02/2026
Really appreciate all the kind comments about the new @filamentphp.com brand! Shout out to Emily @ Studio Hicks for designing our new identity and producing gorgeous custom art for it, and @zahirnia.com for that, iterating on the ideas, and building an incredible site!
Atlas the giraffe aside a TALL stack
1141
Dan Harrin @danharrin.com · 08/09/2025
Super excited for the first ever wire:live conference in Buffalo on Oct 28-29! Going to talk all about how Filament uses Livewire and Alpine internally to allow users to build interactive UIs using just PHP configuration objects. Tickets: wire-live.com
1161
Dan Harrin @danharrin.com · 16/04/2025
It's so exciting to see over 1 year's work on @filamentphp.com v4 come together - this video demo is the "static table data" feature. @leandrocfe.bsky.social built this example for the docs using the dummyjson.com API. Filtering, sorting and pagination is all done through the API. It works great!
4395
Dan Harrin @danharrin.com · 28/03/2025
If the same issue occurs multiple times, the message reflects that
0160
Dan Harrin @danharrin.com · 28/03/2025
Here's a feature in @filamentphp.com v4 I haven't spoken much about before: improved bulk processing In a bulk action, you can authorize individual records easily, and also report issues that occur during the process. These authorization responses and issues get collected and nicely printed! ✨
A flash notification in Filament with the following text:

Locale updated for 5 of 7
One of the selected users was an admin user.
One of the selected users already had the new locale so was not updated.
1473
Dan Harrin @danharrin.com · 13/03/2025
Here's an example of some prime components in a schema, in this example building content for a 2FA setup modal:
Text::make(__('filament-panels::auth/multi-factor/google-two-factor/actions/set-up.modal.content.qr_code.instruction'))
    ->color('neutral'),
Image::make(
    url: fn (): string => $googleTwoFactorAuthentication->generateQRCodeDataUri(decrypt($action->getArguments()['encrypted'])['secret']),
    alt: __('filament-panels::auth/multi-factor/google-two-factor/actions/set-up.modal.content.qr_code.alt'),
)
    ->imageHeight('12rem')
    ->alignCenter(),
Split::make([
    Text::make(__('filament-panels::auth/multi-factor/google-two-factor/actions/set-up.modal.content.text_code.instruction'))
        ->color('neutral')
        ->grow(false),
    Text::make(fn (): string => decrypt($action->getArguments()['encrypted'])['secret'])
        ->fontFamily(FontFamily::Mono)
        ->color('neutral')
        ->copyable()
        ->copyMessage(__('filament-panels::auth/multi-factor/google-two-factor/actions/set-up.modal.content.text_code.messages.copied'))
        ->grow(false),
])->from('sm'),
Section::make()
    ->schema([
        Text::make(__('filament-panels::auth/multi-factor/google-two-factor/actions/set-up.modal.content.recovery_codes.instruction'))
            ->weight(FontWeight::Bold)
            ->color('neutral'),
        UnorderedList::make(fn (): array => array_map(
180
Dan Harrin @danharrin.com · 11/03/2025
Here's a little Alpine.js tip: the `x-cloak` attribute gets removed from the DOM when Alpine is initialised, regardless of its value. As such, you can use the value of the attribute to customize its behaviour. Want it to hide the element after init (instead of show)? Or only cloak on large screens?
<style>
    [x-cloak=''],
    [x-cloak='x-cloak'],
    [x-cloak='1'] {
        display: none !important;
    }

    [x-cloak='inline-flex'] {
        display: inline-flex !important;
    }

    @media (max-width: 1023px) {
        [x-cloak='-lg'] {
            display: none !important;
        }
    }

    @media (min-width: 1024px) {
        [x-cloak='lg'] {
            display: none !important;
        }
    }
</style>
070
Dan Harrin @danharrin.com · 05/03/2025
Out with the plain blockquotes, in with the "Aside" components with differently styled variants. Still incredibly thankful to be using Astro and MDX, which makes these sorts of things quite easy to implement 🙏
New "Aside" components in the Filament documentation, highlighting important information
1130
Dan Harrin @danharrin.com · 02/03/2025
i found a bug in Filament
3180
Dan Harrin @danharrin.com · 22/02/2025
gracias, github 😂
GitHub assuming my comment "No" was written in Spanish
050
Dan Harrin @danharrin.com · 20/02/2025
In Filament 4, when using @filamentphp.com components outside of a panel, there is no Tailwind config preset (like in v3) or any extra setup. Tailwind 4 makes this easy. Only import the CSS files from the Filament packages you need, and we handle the Tailwind setup for you 🙂
1242
Dan Harrin @danharrin.com · 11/01/2025
Here’s the Filament Lego that Bricked-It created, looks good and its amazing how it is all using official parts! shop.bricked-it.com/products/fil...
Filament light bulb logo created in Lego
050
Dan Harrin @danharrin.com · 02/12/2024
Happy Monday! I finished the new v4 CLI for @filamentphp.com. Now I am working on some more v4 features that I have promised people over the past year 👍 Doing anything interesting with Filament this week?
3173
Dan Harrin @danharrin.com · 23/11/2024
After a few years of @filamentphp.com being part of my self employment, yesterday it became its own UK limited company! While this isn't going to change the framework, it's a step towards supporting larger sponsorship responsibilities and additional paid products or services in the future
Screenshot from the UK Government Companies House page for "Filament Technology Ltd"
7622
Dan Harrin @danharrin.com · 04/11/2024
Just merged in another big feature in for @filamentphp.com v4... native two-factor authentication! It's driver-based, so you can replace the "Google Authenticator-style app" with email (also a built-in driver) or SMS codes if you want. A dedicated `OneTimeCodeInput` form field too 🧑‍🎨
4324