PHPackages                             moonshine/advanced - 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. moonshine/advanced

ActiveLibrary

moonshine/advanced
==================

Description

2.0.0(3mo ago)133.1k↓38.2%2MITPHPPHP ^8.2|^8.3|^8.4CI passing

Since Jan 26Pushed 3mo ago3 watchersCompare

[ Source](https://github.com/moonshine-software/advanced)[ Packagist](https://packagist.org/packages/moonshine/advanced)[ Docs](https://moonshine-laravel.com)[ RSS](/packages/moonshine-advanced/feed)WikiDiscussions 2.x Synced 1mo ago

READMEChangelog (10)Dependencies (4)Versions (14)Used By (0)

[![logo](https://github.com/moonshine-software/moonshine/raw/3.x/art/line-1.jpg)](https://github.com/moonshine-software/moonshine/raw/3.x/art/line-1.jpg)

MoonShine Advanced
==================

[](#moonshine-advanced)

Advanced Fields and Components

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

[](#requirements)

MoonShine AdvancedMoonShine1.x3.x2.x4.x[![Tests status](https://github.com/moonshine-software/advanced/workflows/tests/badge.svg)](https://github.com/moonshine-software/advanced/actions)[![Total Downloads](https://camo.githubusercontent.com/0fa4224241071c5f8f1894a842827228d4477b151e8a185c1cdaf8a412cb8a6d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d6f6f6e7368696e652f616476616e636564)](https://packagist.org/packages/moonshine/v)[![Latest Stable Version](https://camo.githubusercontent.com/09601b9e5fae421755cd10d432e5afaa6a328d6d3b658533d9051f60732870c9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d6f6f6e7368696e652f616476616e636564)](https://packagist.org/packages/moonshine/advanced)[![License](https://camo.githubusercontent.com/ea91a783c037c0bcd1795b1c01bb68cf66e6550059577d5fc6a385f6fc652c85/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6d6f6f6e7368696e652f616476616e636564)](https://packagist.org/packages/moonshine/advanced)

 [![Laravel 10+](https://camo.githubusercontent.com/67ff25342790de50f83c6313acb28d5fdd1d7931a63bf481f21ea769b7b1ca1c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31302b2d4646324432303f7374796c653d666f722d7468652d6261646765266c6f676f3d6c61726176656c)](https://laravel.com) [![PHP 8.1+](https://camo.githubusercontent.com/e0f3f4481fef29b2320c4adf7fa7b4da977fd87bb8b642832ebe759cd73040bf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312b2d3737374242343f7374796c653d666f722d7468652d6261646765266c6f676f3d706870)](https://laravel.com)

```
composer require moonshine/advanced
```

Stepper
-------

[](#stepper)

### Basic:

[](#basic)

```
use MoonShine\Advanced\Components\Stepper\Stepper;
use MoonShine\Advanced\Components\Stepper\Step;

Stepper::make([
    Step::make([
        Heading::make('Step 1 content')
    ], 'Step 1', 'Some description'),

    Step::make([
        FormBuilder::make()
    ], 'Step 2', 'Some description'),

    Step::make([
        // any components
    ], 'Step 3', 'Some description'),
])
```

### Async content:

[](#async-content)

```
Stepper::make([
    Step::make(title: 'Step', description: 'Some description')->async('/html')
])
```

Also with events:

```
Stepper::make([
    Step::make(title: 'Step', description: 'Some description')->async('/html', events: [
        AlpineJs::event(JsEvent::FRAGMENT_UPDATED, 'fragment-1')
    ])
])
```

### Events when switching a step

[](#events-when-switching-a-step)

Events when a step is changing:

```
Step::make(title: 'Step', description: 'Some description')
    ->whenChangingEvents([
        AlpineJs::event(JsEvent::FRAGMENT_UPDATED, 'fragment-2')
    ], once: false)
```

Events when a step is completed:

```
Step::make(title: 'Step', description: 'Some description')
    ->whenFinishEvents([
        AlpineJs::event(JsEvent::FRAGMENT_UPDATED, 'fragment-2')
    ], once: true)
```

The `once` parameter indicates once the events will be caused or with each change

### Content after completion

[](#content-after-completion)

When all the steps are completed, this set of components will be displayed on the page

```
Stepper::make([
    // ...
], finishComponent: [
    Heading::make('Thanks!')
]),
```

### The names of the buttons

[](#the-names-of-the-buttons)

```
Stepper::make([
    // ...
], nextText: 'Next step', finishText: 'Finish'),
```

### Modifying the button next step

[](#modifying-the-button-next-step)

```
Stepper::make([
    // ...
])->changeNextButton(function(ActionButton $btn, int $index) {
    return $btn->badge($index);
}),
```

### States

[](#states)

Active default step

```
Stepper::make([
    // ...
])->current(2),
```

Completed by default

```
Stepper::make([
    // ...
])->finished(),
```

### Locking

[](#locking)

You cannot go to the next step, you can switch to the next Schag only using the event (`go_to_step_ {index}: {stPper_name}`)

```
Step::make()->nextLock(),
```

The transition in the upper navigation is blocked:

```
Stepper::make([
    // ...
])->lock(),
```

Once all steps are completed, the top navigation is locked:

```
Stepper::make([
    // ...
])->lockWhenFinish(),
```

Async tabs
----------

[](#async-tabs)

```
use MoonShine\Advanced\Components\AsyncTabs\AsyncTabs;
use MoonShine\Advanced\Components\AsyncTabs\AsyncTab;

AsyncTabs::make([
    AsyncTab::make('Tab 1', '/html'),
    AsyncTab::make('Tab 2', '/html')->icon('users'),
]),
```

Link group
----------

[](#link-group)

```
use MoonShine\Advanced\Components\LinkGroup\LinkGroup;
use MoonShine\Advanced\Components\LinkGroup\LinkItem;

LinkGroup::make([
    LinkItem::make('/documentation', 'Documentation', 'Some description')->icon('arrow-right'),
    // ...
]),
```

Radio group
-----------

[](#radio-group)

```
use MoonShine\Advanced\Fields\RadioGroup;

RadioGroup::make('Sex')->options([
    1 => 'Male',
    2 => 'Female',
])->inline(),
```

Checkbox list
-------------

[](#checkbox-list)

```
use MoonShine\Advanced\Fields\CheckboxList;

CheckboxList::make('Plan')->options([
    1 => 'Basic',
    2 => 'Standard',
    3 => 'Pro',
])->inline(),
```

Button group
------------

[](#button-group)

```
use MoonShine\Advanced\Fields\ButtonGroup;

ButtonGroup::make('Plan')->options([
    1 => 'Basic',
    2 => 'Standard',
    3 => 'Pro',
])->multiple(),
```

SPA Menu
--------

[](#spa-menu)

```
use MoonShine\MenuManager\MenuItem;

protected function menu(): array
{
    return [
        MenuItem::make('Users', UserResource::class)->spa(),
    ];
}
```

Example
-------

[](#example)

```
public function stepForm(MoonShineRequest $request): MoonShineJsonResponse
{
    $request->validate([
        'name' => ['required'],
        'email' => ['required'],
    ]);

    return MoonShineJsonResponse::make()->events([
        'go_to_step_2:dashboard'
    ]);
}

protected function components(): iterable
{
    return [
        Stepper::make([
            Step::make([
                FormBuilder::make()
                    ->name('step_1_form')
                    ->asyncMethod('stepForm')
                    ->fields([
                        Grid::make([
                            Column::make([
                                Box::make([
                                    Text::make('Name'),
                                    Email::make('Email'),

                                    RadioGroup::make('Sex')->options([
                                        1 => 'Male',
                                        2 => 'Female',
                                    ])->inline(),
                                ])
                            ])->columnSpan(6),

                            Column::make([
                                Box::make([
                                    CheckboxList::make('Job title')->options([
                                        1 => 'Developer',
                                        2 => 'Team lead',
                                    ]),

                                    ButtonGroup::make('Plan')->options([
                                        1 => 'Free',
                                        2 => 'Basic',
                                        3 => 'Pro',
                                    ]),
                                ])
                            ])->columnSpan(6)
                        ])
                    ])
                    ->hideSubmit()
            ], 'Step 1', 'Tell us about yourself')->nextLock()->whenChangingEvents([
                AlpineJs::event(JsEvent::FORM_SUBMIT, 'step_1_form')
            ]),
            Step::make([
                AsyncTabs::make([
                    AsyncTab::make('How to use the project', '/html'),
                    AsyncTab::make('User agreement', '/html'),
                ]),
            ], 'Step 2', 'Rules')->icon('users'),

            Step::make([], 'Step 3', 'Finishing')->async('/html', events: [
                AlpineJs::event(JsEvent::FRAGMENT_UPDATED, 'time')
            ])->whenFinishEvents([
                AlpineJs::event(JsEvent::FRAGMENT_UPDATED, 'time')
            ]),
        ], [
            Heading::make('Thanks!'),
            LinkGroup::make([
                LinkItem::make('#', 'Link 1', 'Description 1')->icon('arrow-right'),
                LinkItem::make('#', 'Link 2'),
            ])
        ], 'Next', 'Finish')->name('dashboard')->lock(),

        Fragment::make([
            time()
        ])->name('time'),
    ];
}
```

###  Health Score

50

—

FairBetter than 96% of packages

Maintenance78

Regular maintenance activity

Popularity31

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity63

Established project with proven stability

 Bus Factor1

Top contributor holds 85% 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

Every ~27 days

Recently: every ~21 days

Total

14

Last Release

117d ago

Major Versions

1.x-dev → 2.0.02026-01-21

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1861327?v=4)[Danil Shutsky](/maintainers/lee-to)[@lee-to](https://github.com/lee-to)

---

Top Contributors

[![lee-to](https://avatars.githubusercontent.com/u/1861327?v=4)](https://github.com/lee-to "lee-to (68 commits)")[![DissNik](https://avatars.githubusercontent.com/u/12373059?v=4)](https://github.com/DissNik "DissNik (11 commits)")[![sentosango](https://avatars.githubusercontent.com/u/72351912?v=4)](https://github.com/sentosango "sentosango (1 commits)")

---

Tags

moonshinekeyword

###  Code Quality

TestsPHPUnit

Static AnalysisRector

### Embed Badge

![Health badge](/badges/moonshine-advanced/health.svg)

```
[![Health](https://phpackages.com/badges/moonshine-advanced/health.svg)](https://phpackages.com/packages/moonshine-advanced)
```

###  Alternatives

[donatello-za/rake-php-plus

Yet another PHP implementation of the Rapid Automatic Keyword Extraction algorithm (RAKE).

271865.1k10](/packages/donatello-za-rake-php-plus)[dotink/jin

Jsonified Ini Notation

1410.2k2](/packages/dotink-jin)

PHPackages © 2026

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