Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
lynx-admin-screens
lynx-admin-screens
lynxcms/admin
claude-code
livewire
blatui
admin-navigation
permissions
admin-routes
page-tree
theme-tokens

Extend the Lynx admin with new screens, navigation items and page tree presenters, built from the admin's BlatUI components. Use when adding a module's admin screen or changing how the admin looks.

Install
php artisan boost:add-skill lynxcms/admin

Save this content to: .claude/skills/lynx-admin-screens/SKILL.md

# Lynx admin screens

The admin is Livewire on BlatUI components, used as `<x-lynx-admin::ui.button>`, `<x-lynx-admin::ui.card>`, `<x-lynx-admin::ui.table>` and so on. Use them for new screens; colours come only from theme tokens (`bg-primary`, `text-muted-foreground`), never raw palette classes.

## A new screen

```php
use LynxCms\Admin\Admin;
use LynxCms\Admin\AdminAccess;
use LynxCms\Admin\Navigation;

Admin::routes(function (): void {
    Route::get('reports', ReportsController::class)->name('reports'); // route name lynx.admin.reports
});

app(Navigation::class)->add('Reports', 'lynx.admin.reports', order: 70, icon: 'chart-bar',
    visible: fn (): bool => app(AdminAccess::class)->allows('reports.view'));
```

Setup screens go in a sidebar section: add `group: Navigation::SETTINGS` or `group: Navigation::ACCESS`.

Wrap the view in the admin layout:

```blade
<x-lynx-admin::layout title="Reports" :crumbs="['Pages' => route('lynx.admin.pages')]">
    <x-lynx-admin::ui.page-header title="Reports" description="What happened this month." />
    <livewire:reports />
</x-lynx-admin::layout>
```

- Register the permission your screen needs: `lynx()->permissions()->register('reports.view', 'View reports')`.
- Writes from the screen go through Lynx actions, never directly to the database.
- Look and feel: `config('lynx-admin.appearance')` (base, theme, radius, font…) and BlatUI tokens in a stylesheet listed in `lynx-admin.stylesheets`.

## A branch the module edits itself

If the module keeps its content as pages under a system page (as menus do under `/_menus/`), register the branch: the site's page tree leaves it out, and the page editor sends its pages to your screen.

```php
app(\LynxCms\Admin\AdminBranches::class)->register('reports-root', fn ($page, $root): string => route('lynx.admin.reports', ['page' => $page->id]));
```

Give the branch's root page the `system` status so it stays after the other pages.

## Page tree rows

Implement `LynxCms\Admin\Tree\TreePresenter` (`title()`, `detail()`) and pass it to `<livewire:lynx-admin.page-tree :presenter="MyPresenter::class" />` to change how rows read.

Lynx admin screens

The admin is Livewire on BlatUI components, used as <x-lynx-admin::ui.button>, <x-lynx-admin::ui.card>, <x-lynx-admin::ui.table> and so on. Use them for new screens; colours come only from theme tokens (bg-primary, text-muted-foreground), never raw palette classes.

A new screen

use LynxCms\Admin\Admin;
use LynxCms\Admin\AdminAccess;
use LynxCms\Admin\Navigation;

Admin::routes(function (): void {
    Route::get('reports', ReportsController::class)->name('reports'); // route name lynx.admin.reports
});

app(Navigation::class)->add('Reports', 'lynx.admin.reports', order: 70, icon: 'chart-bar',
    visible: fn (): bool => app(AdminAccess::class)->allows('reports.view'));

Setup screens go in a sidebar section: add group: Navigation::SETTINGS or group: Navigation::ACCESS.

Wrap the view in the admin layout:

<x-lynx-admin::layout title="Reports" :crumbs="['Pages' => route('lynx.admin.pages')]">
    <x-lynx-admin::ui.page-header title="Reports" description="What happened this month." />
    <livewire:reports />
</x-lynx-admin::layout>
  • Register the permission your screen needs: lynx()->permissions()->register('reports.view', 'View reports').
  • Writes from the screen go through Lynx actions, never directly to the database.
  • Look and feel: config('lynx-admin.appearance') (base, theme, radius, font…) and BlatUI tokens in a stylesheet listed in lynx-admin.stylesheets.

A branch the module edits itself

If the module keeps its content as pages under a system page (as menus do under /_menus/), register the branch: the site's page tree leaves it out, and the page editor sends its pages to your screen.

app(\LynxCms\Admin\AdminBranches::class)->register('reports-root', fn ($page, $root): string => route('lynx.admin.reports', ['page' => $page->id]));

Give the branch's root page the system status so it stays after the other pages.

Page tree rows

Implement LynxCms\Admin\Tree\TreePresenter (title(), detail()) and pass it to <livewire:lynx-admin.page-tree :presenter="MyPresenter::class" /> to change how rows read.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect