PHPackages                             wezlo/filament-docs - 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. [Localization &amp; i18n](/categories/localization)
4. /
5. wezlo/filament-docs

ActiveLibrary[Localization &amp; i18n](/categories/localization)

wezlo/filament-docs
===================

Multi-locale markdown documentation viewer for Filament — devs commit .md files, panel users read them with sidebar TOC, search, and locale switcher.

1.0.0(1mo ago)080MITPHPPHP ^8.2

Since May 1Pushed 1mo agoCompare

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

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

wezlo/filament-docs
===================

[](#wezlofilament-docs)

Multi-locale markdown documentation viewer for Filament. Devs commit `.md`files to git, panel users read them with a sidebar TOC, full-text search, in-page locale switcher, and copy-to-clipboard code blocks.

This is **prose** docs (guides, how-tos, FAQs) — not auto-generated reference. For schema-introspection docs, see `wezlo/filament-auto-docs`.

Install
-------

[](#install)

```
composer require wezlo/filament-docs
php artisan vendor:publish --tag=filament-docs-config
php artisan filament-docs:install        # scaffolds resources/docs/{en,ar}/...
php artisan filament-docs:index --force  # builds the search index
```

Register the plugin on your panel:

```
use Wezlo\FilamentDocs\FilamentDocsPlugin;

$panel->plugins([
    FilamentDocsPlugin::make()
        ->path('handbook')         // panel-relative URL: /admin/handbook
        ->locales(['en', 'ar'])
        ->defaultLocale('en')
        ->navigationGroup('Help')
        ->navigationIcon('heroicon-o-book-open'),
]);
```

### Tell Tailwind about the package's views (custom themes only)

[](#tell-tailwind-about-the-packages-views-custom-themes-only)

The package's prose CSS and copy-button JS load automatically via `FilamentAsset::register()` — nothing to wire up there. **But** the shipped Blade views use Tailwind utility classes for layout (grid, spacing, dark-mode), and if you use a custom Filament theme, Tailwind will purge those classes unless the package's views are in your theme's `@source` paths.

Add this line to your panel's theme file:

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

Then rebuild:

```
npm run build   # or: npm run dev
```

If you're on the default Filament theme (no `viteTheme(...)` on the panel), skip this step.

Author docs in markdown
-----------------------

[](#author-docs-in-markdown)

```
resources/docs/
├── _config.php            # optional: section icons, ordering, hidden patterns
├── en/
│   ├── 01-getting-started.md
│   └── 02-orders/
│       ├── 01-create-order.md
│       └── _section.yml   # optional: { title, icon }
└── ar/
    └── 01-getting-started.md

```

- Numeric prefix (`01-`, `02-`) controls order, stripped from titles.
- Folders become sections in the sidebar.
- Optional YAML frontmatter (`title:`, `icon:`).
- Missing translations fall back to the default locale with a banner.

### Localising section titles

[](#localising-section-titles)

Folder names are English-by-convention (`02-orders`, `site-panel`, `workforce`), so the sidebar and breadcrumbs need explicit translations for each section. There are two ways:

**Option 1 — single `resources/docs/_config.php` (recommended):**

```
return [
    'sections' => [
        'orders' => [
            'icon' => 'heroicon-o-shopping-cart',
            'order' => 2,
            'title' => [
                'en' => 'Orders',
                'ar' => 'الطلبات',
            ],
        ],
        'site-panel' => [
            'title' => ['en' => 'Site panel', 'ar' => 'لوحة الموقع'],
        ],
    ],
    'hidden' => [],
];
```

**Option 2 — per-locale `_section.yml`** (one per locale folder, useful when content teams own translations independently):

```
# resources/docs/ar/02-orders/_section.yml
title: الطلبات
icon: heroicon-o-shopping-cart
```

Both `title` and `icon` accept either a plain string or a locale-keyed map. Missing locales fall back to the default locale, then to `Str::headline(folderName)`.

Article titles are taken from the markdown's first `# Heading` (or frontmatter `title:`) and so are localised automatically by writing the markdown in each locale's tree.

Features
--------

[](#features)

- Sidebar TOC + breadcrumbs (auto-built from filesystem)
- Full-text search across all locales (toggle "Search all languages")
- In-page locale switcher with automatic RTL for `ar`/`he`/`fa`/`ur`
- GFM tables, task lists, fenced code, autolinks
- Heading anchors for deep-linking
- Copy-to-clipboard buttons on every code block
- File-mtime-keyed search cache (auto-invalidates on content changes)

Architecture
------------

[](#architecture)

```
Route /admin/{slug}/{path?}
   ↓
DocsPage (Livewire) — properties: $locale, $articleSlug, $search
   ↓ resolves locale (URL → app → config default)
   ↓ TreeBuilder walks resources/docs/{locale}, applies _config.php
   ↓ FilesystemDocSource->load() reads .md, falls back to default locale
   ↓ MarkdownRenderer (CommonMark + GFM + heading anchors) → HTML
   ↓ Searcher scores: title (×3) > heading (×2) > body (×1) + exact-phrase bonus

```

Custom doc sources
------------------

[](#custom-doc-sources)

Implement `Wezlo\FilamentDocs\Contracts\DocSource` and bind in a service provider — useful for DB-backed docs, S3-stored markdown, etc.

```
$this->app->bind(
    Wezlo\FilamentDocs\Contracts\DocSource::class,
    YourCustomSource::class,
);
```

Commands
--------

[](#commands)

CommandPurpose`php artisan filament-docs:install`Scaffold sample docs into `resources/docs/`.`php artisan filament-docs:index [--force]`Rebuild the search index.Configuration
-------------

[](#configuration)

Published to `config/filament-docs.php`. Key options:

- `content_path`, `default_locale`, `locales`, `rtl_locales`
- `route.slug`, `navigation.{group, icon, sort}`
- `search.{enabled, max_results, snippet_length, min_length}`
- `markdown.{gfm, heading_anchors}`

Testing
-------

[](#testing)

```
cd packages/wezlo/filament-docs
composer install
vendor/bin/pest --compact
```

License
-------

[](#license)

MIT

###  Health Score

42

—

FairBetter than 88% of packages

Maintenance92

Actively maintained with recent releases

Popularity13

Limited adoption so far

Community6

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

40d 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 (3 commits)")

---

Tags

laraveli18ndocumentationmultilingualmarkdownfilament

###  Code Quality

TestsPest

### Embed Badge

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

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

###  Alternatives

[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)[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3913.7k](/packages/rawilk-profile-filament-plugin)[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)[marcelweidum/filament-passkeys

Use passkeys in your filamentphp app

6643.3k](/packages/marcelweidum-filament-passkeys)[mominalzaraa/filament-localization

The first and only automatic Filament localization package with intelligent resource scanning, structured translation files, and comprehensive testing

101.6k](/packages/mominalzaraa-filament-localization)

PHPackages © 2026

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