PanelProvider registration), making it easy to enable/disable without modifying core application logic. The separation of concerns (e.g., OpenInTabAction, TabbedPlugin) aligns with Laravel/PHP’s dependency injection and service container principles.localStorage for persistence across page navigations, which is a pragmatic choice for SPAs but may require adjustments for multi-tab browser sessions or SSO environments.HasTabbedActions trait and OpenInTabAction provide multiple entry points for adoption.Resource, Table, Livewire) limits its utility outside Filament ecosystems.TabbedPlugin::make()->defaultPage('view')) and per-action options (e.g., tabName(), hoverCardContent()), allowing alignment with existing UI/UX patterns.localStorage persistence may cause issues in:
localStorage is unreliable).lazyLoad()) and inactive tab destruction (destroyInactive()) mitigate memory usage, but unoptimized implementations could degrade performance in high-concurrency panels.x-html), risking XSS if user-provided data isn’t sanitized (mitigated by the package’s warning but still a responsibility of the integrator).canClose(), canPin()) must be carefully implemented to avoid privilege escalation.Filament Ecosystem Lock-In:
State Management:
localStorage persistence interact with:
Performance:
destroyInactive() enabled?UX/Accessibility:
Maintenance:
Customization:
tabbed:open, tabbed:close) could bridge Filament and frontend state.Pilot Phase:
UserResource) to test integration, performance, and UX.HasTabbedActions trait or OpenInTabAction to the resource’s table.PanelProvider with default settings.localStorage usage and tab switching behavior.Gradual Rollout:
View pages for tickets, orders).Edit/Create pages) with confirmOnClose() and closeOnSave().Advanced Customization:
PanelsRenderHook::PAGE_START) for full-width layouts.openFor() for related records (e.g., "View contact" in a ticket’s infolist).CustomEvent, localStorage). Test for:
filament.css).Ctrl+K for search).Prerequisites:
filament/support and filament/forms are up to date (required for Color and Actions).PanelProvider if not already present.Installation Order:
composer require jibaymcs/tabbed
PanelProvider before registering resources to ensure tab bar rendering hooks fire correctly.Resource Integration:
use HasTabbedActions to resources.OpenInTabAction to table configurations after other actions (to avoid UI clutter).Testing:
TabbedPlugin and OpenInTabAction to verify permissions and record resolution.openFor).Deployment:
How can I help you explore Laravel packages today?