anish/maskable-entry
A powerful Filament PHP infolist component that enables seamless maskable entry. Features include maskable entry, preview functionality, and easy integration with Laravel. Perfect for maskable values in infolists.
219
12
| Install | |
|---|---|
composer require anish/maskable-entry |
|
| Latest Version: | v1.0.3 |
| PHP: | ^8.1 |
| License: | MIT |
| Last Updated: | Feb 10, 2026 |
| Links: | GitHub · Packagist |
Maintainer: anishregmi17
Filament Maskable Entry
A reusable maskable entry component for Filament Infolists.
A powerful Filament PHP infolist component that enables seamless maskable entry. Ideal for hiding and toggling sensitive values such as passwords, social security numbers, credit card numbers, and API keys.
Features
- 🔒 Maskable Display — Hide sensitive data with custom mask patterns
- 👁️ Toggle Visibility — One click to reveal or hide the actual value
- 🎨 Native Filament v4 & v5 Integration — Works like any infolist entry
- ⚙️ Fully Configurable — Custom patterns, masking characters, closures
- 📱 Responsive — Works across all device sizes
Requirements
- PHP 8.1+
- Laravel 10+
- Filament 4.x or 5.x
Installation
composer require anish/maskable-entry
The package auto-discovers its service provider—no manual setup required.
Basic Usage
use Anish\MaskableEntry\Components\MaskableEntry;
use Illuminate\Support\Facades\Auth;
use Filament\Schemas\Schema;
public static function configure(Schema $schema): Schema
{
return $schema->components([
MaskableEntry::make('social_security_number')
->maskValue('XXX-XX-XXXX')
->actualValue(fn ($record) => $record->social_security_number)
->toggleable(Auth::user()->can('view_social_security_number'))
->label('Social Security Number'),
]);
}
Note:
If you are using a custom theme add the plugin's views to your theme css file or your app's css file.
@source '../../../../vendor/anish/maskable-entry/resources/views/**/*.blade.php
Advanced Usage
Custom Mask Pattern
MaskableEntry::make('credit_card')
->maskValue('XXXX-XXXX-XXXX-XXXX')
->actualValue(fn ($record) => $record->credit_card_number)
->label('Credit Card Number');
Using a Closure for Actual Value
MaskableEntry::make('password')
->maskValue('XXXXXXXX')
->actualValue(fn (User $record) => $record->password)
->label('Password');
Available Methods
maskValue(string $value)
The pattern shown in masked mode.
Use X (or your custom char) to represent masked digits.
->maskValue('XXX-XX-XXXX')
actualValue(string|Closure|null $value)
Defines the value revealed on toggle.
->actualValue(fn ($record) => $record->social_security_number)
// or
->actualValue('123-45-6789')
Supports All Standard TextEntry Methods
MaskableEntry::make('field')
->maskValue('XXX-XX-XXXX')
->actualValue(fn ($record) => $record->value)
->label('Custom Label')
->placeholder('N/A')
->copyable()
->icon('heroicon-o-shield-check');
How It Works
- Masked State — Displays the mask pattern (
XXX-XX-XXXX) - Toggle Button — Eye icon switches visibility
- Revealed State — Shows the actual value formatted
- Formatting — Automatically aligns characters to mask structure
Testing
composer test
Code Style
This package uses Laravel Pint:
composer format
Contributing
Contributions are welcome!
Development Setup
- Clone the repo
composer install- Create a new branch
- Write your feature
- Run tests & Pint
- Submit PR
Security
If you find a security issue, please email: anishregminaglibang@gmail.com
Changelog
See CHANGELOG.
Credits
- Anish Regmi
- All Contributors
License
MIT