PHPackages                             wezlo/filament-workspace-tabs - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. wezlo/filament-workspace-tabs

ActiveLibrary[Admin Panels](/categories/admin)

wezlo/filament-workspace-tabs
=============================

Browser-like workspace tabs for Filament panels

1.0.0(2mo ago)8359↓33.3%1MITJavaScriptPHP ^8.2

Since Apr 9Pushed 2mo agoCompare

[ Source](https://github.com/mustafakhaleddev/filament-workspace-tabs)[ Packagist](https://packagist.org/packages/wezlo/filament-workspace-tabs)[ RSS](/packages/wezlo-filament-workspace-tabs/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (1)Dependencies (5)Versions (2)Used By (0)

Filament Workspace Tabs
=======================

[](#filament-workspace-tabs)

Browser-like tabs for Filament panels. Open multiple pages in tabs without losing context, drag to reorder, pin frequently accessed pages, and right-click for quick actions.

Features
--------

[](#features)

- **Tab per page** — Every navigation opens a new tab. Revisiting a URL activates the existing tab.
- **Drag to reorder** — Rearrange tabs via drag-and-drop (powered by SortableJS).
- **Pin tabs** — Double-click a tab to pin/unpin it. Pinned tabs can't be closed and stick to the left.
- **Context menu** — Right-click any tab for: Close, Close Others, Close to the Right, Duplicate, Pin/Unpin, Close All.
- **Recently closed** — Reopen closed tabs from the dropdown (last 50 stored).
- **Keyboard shortcuts** — `Ctrl+W` / `Cmd+W` to close the active tab.
- **Middle-click** — Middle-click or `Ctrl+click` sidebar links to open in a new tab.
- **Persistent** — Tabs survive page reloads via localStorage.
- **Dark mode** — Full support for Filament's dark mode.
- **SPA-ready** — Works with Filament's `->spa()` mode and Livewire's `wire:navigate`.

Requirements
------------

[](#requirements)

- PHP 8.2+
- Filament v4 or v5
- Laravel 11+

Installation
------------

[](#installation)

```
composer require wezlo/filament-workspace-tabs
```

Setup
-----

[](#setup)

### 1. Register the plugin

[](#1-register-the-plugin)

Add the plugin to your panel provider:

```
use Wezlo\FilamentWorkspaceTabs\WorkspaceTabsPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            WorkspaceTabsPlugin::make(),
        ]);
}
```

### 2. Add the Tailwind source

[](#2-add-the-tailwind-source)

Add the package views to your Filament theme CSS so Tailwind can scan utility classes:

```
/* resources/css/filament/{panel}/theme.css */
@source '../../../../vendor/wezlo/filament-workspace-tabs/resources/views/**/*';
```

Then rebuild your frontend assets:

```
npm run build
```

Configuration
-------------

[](#configuration)

All options are available as fluent methods on the plugin:

```
WorkspaceTabsPlugin::make()
    ->maxTabs(25)                          // Maximum open tabs (default: 20)
    ->persistKey('my_tabs')                // localStorage key prefix (default: 'filament_workspace_tabs')
    ->excludeUrls(['/admin/login'])        // URL prefixes to never track as tabs
    ->contextMenu(false)                   // Disable right-click context menu
    ->dragReorder(false)                   // Disable drag-to-reorder
```

Usage
-----

[](#usage)

Once installed, the tab bar appears below the topbar automatically.

ActionBehaviorClick sidebar linkOpens a new tabClick an existing tabSwitches to that tab (navigates to its URL)Middle-click / Ctrl+click a linkOpens in a new tab without navigatingClose button (x)Closes the tabDouble-click a tabPins / unpins the tabRight-click a tabOpens context menu`Ctrl+W` / `Cmd+W`Closes the active tabDrag a tabReorders it### Pinned tabs

[](#pinned-tabs)

Pinned tabs display a pin icon alongside the label, have an indigo left border, and cannot be closed until unpinned. They always stay to the left of unpinned tabs.

### Context menu options

[](#context-menu-options)

- **Close** — Close this tab (not available for pinned tabs)
- **Close Others** — Close all tabs except this one (respects pinned tabs)
- **Close to the Right** — Close all tabs to the right of this one
- **Duplicate** — Open the same URL in a new tab
- **Pin / Unpin** — Toggle the pinned state
- **Close All** — Close all unpinned tabs

### Recently closed

[](#recently-closed)

When tabs are closed, they're stored in a history list. Click the dropdown arrow on the right side of the tab bar to reopen any of the last 10 recently closed tabs.

How it works
------------

[](#how-it-works)

- Tab state (URLs, labels, order, pinned status) is stored client-side in `localStorage` using Alpine.js `$persist()`.
- Switching tabs triggers `Livewire.navigate()` for SPA-style page transitions.
- Page titles are automatically extracted from `document.title` on each navigation.
- The tab bar is injected via Filament's `TOPBAR_AFTER` render hook — no template modifications needed.
- The persist key is automatically scoped to the panel ID to avoid cross-panel tab bleed.

Publishing config
-----------------

[](#publishing-config)

```
php artisan vendor:publish --tag="filament-workspace-tabs-config"
```

License
-------

[](#license)

MIT

###  Health Score

44

—

FairBetter than 90% of packages

Maintenance88

Actively maintained with recent releases

Popularity23

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

61d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/25182746?v=4)[Mustafa Khaled](/maintainers/mustafakhaleddev)[@mustafakhaleddev](https://github.com/mustafakhaleddev)

---

Top Contributors

[![mustafakhaleddev](https://avatars.githubusercontent.com/u/25182746?v=4)](https://github.com/mustafakhaleddev "mustafakhaleddev (2 commits)")

---

Tags

laravelfilamentworkspacetabsbrowser-tabs

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/wezlo-filament-workspace-tabs/health.svg)

```
[![Health](https://phpackages.com/badges/wezlo-filament-workspace-tabs/health.svg)](https://phpackages.com/packages/wezlo-filament-workspace-tabs)
```

###  Alternatives

[awcodes/filament-quick-create

Plugin for Filament Admin that adds a dropdown menu to the header to quickly create new items.

249203.6k11](/packages/awcodes-filament-quick-create)[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3913.7k](/packages/rawilk-profile-filament-plugin)[mradder/filament-logger

Audit logging, activity tracking, exports, alerts, and dashboards for Filament admin panels.

2210.5k](/packages/mradder-filament-logger)[stephenjude/filament-jetstream

A Laravel starter kit built with Filament inspired by Jetstream.

17758.9k2](/packages/stephenjude-filament-jetstream)[stephenjude/filament-two-factor-authentication

Filament Two Factor Authentication: Google 2FA + Passkey Authentication

84192.9k7](/packages/stephenjude-filament-two-factor-authentication)[guava/filament-knowledge-base

A filament plugin that adds a knowledge base and help to your filament panel(s).

207140.2k1](/packages/guava-filament-knowledge-base)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
