genealabs/laravel-multi-step-progressbar

302,369 63
Install
composer require genealabs/laravel-multi-step-progressbar
Latest Version:10.0.0
PHP:^8.2
License:MIT
Last Updated:Mar 28, 2026
Links: GitHub  ·  Packagist
Maintainer: mikebronner

Multi-Step Progressbar for Laravel

Version Compatibility

Laravel PHP Package
10.x 8.2-8.5 1.x
11.x 8.2-8.5 1.x
12.x 8.2-8.5 1.x
13.x 8.2-8.5 1.x

Installation

composer require genealabs/laravel-multi-step-progressbar

Implementation

The progress-bar is implemented via a Blade component:

    <x-multi-step-progressbar
        :model="$record"
        :stepData="$stepData"
    ></x-multi-step-progressbar>

Model

The $record model represents the model that stores the information submitted in the various forms traversed. It will be passed into each view of the steps defined in $stepData and can be used to fill in the forms on each step. What it exactly contains is completely up to you.

Step Data

$stepData is a collection of ProgressbarItem model instances.

Data Points

Each step has the following properties:

  • step: the number of the step, presented in sequence.
  • url: the URL of the view to load for the given step.
  • title: will be displayed on the active step in the progress-bar. Leave blank to not show anything.
  • description: will be displayed on the active step in the progress-bar. Leave blank to not show anything.
  • canJumpAhead: designates if the user can jump to the step once it has been filled out.

Collection

You can create this as follows:

$stepData = collect()
    ->push((new ProgressbarItem)->fill([
        "step" => 1,
        "url" => route("wizards.record-analysis.edit", ["record" => $record, "step" => "1"]),
        "title" => "Create Document",
        "description" => "",
        "canJumpAhead" => true,
    ]))
    ->push((new ProgressbarItem)->fill([
        "step" => 2,
        "url" => route("wizards.record-analysis.edit", ["record" => $record, "step" => "2"]),
        "title" => "Search Sources",
        "description" => "",
        "canJumpAhead" => (bool) $record->title,
    ]))
    ->push((new ProgressbarItem)->fill([
        "step" => 3,
        "url" => route("wizards.record-analysis.edit", ["record" => $record, "step" => "3"]),
        "title" => "Create Source",
        "description" => "",
        "canJumpAhead" => ($record->source || $record->wherein),
    ]))
    // ...

Configuration

<?php

return [
    "sprites" => [
        "hidden" => [
            "bar" => "",
        ],
        // not previously visited step
        "unvisited" => [
            "bar" => asset("images/assets/progress-bar/unactivated-bar.png"),
            "middle-pip" => asset("images/assets/progress-bar/unactivated-middle.png"),
            "last-pip" => asset("images/assets/progress-bar/unactivated-end.png"),
        ],
        // previously visited step
        "visited" => [
            "first-pip" => asset("images/assets/progress-bar/activated-start.png"),
            "bar" => asset("images/assets/progress-bar/activated-bar.png"),
            "middle-pip" => asset("images/assets/progress-bar/activated-middle.png"),
            "last-pip" => asset("images/assets/progress-bar/activated-end.png"),
        ],
        // current step, and previously visited
        "active" => [
            "first-pip" => asset("images/assets/progress-bar/active-current-start.png"),
            "middle-pip" => asset("images/assets/progress-bar/active-activated-middle.png"),
            "last-pip" => asset("images/assets/progress-bar/active-current-end.png"),
        ],
        // current and max visited step
        "max-active" => [
            "first-pip" => asset("images/assets/progress-bar/active-current-start.png"),
            "middle-pip" => asset("images/assets/progress-bar/active-current-middle.png"),
            "last-pip" => asset("images/assets/progress-bar/active-current-end.png"),
        ],
        // max step, not current, previously visited
        "max-visited" => [
            "middle-pip" => asset("images/assets/progress-bar/activated-current-middle.png"),
            "last-pip" => asset("images/assets/progress-bar/activated-current-end.png"),
        ],
    ]
];

Related Packages

gabrieloliverio/laravel5-generators

Database metadata-based generators for Laravel 5

1
erirk/paypalpayment

laravel-paypalpayment is simple package help you process direct credit card paym...

0
doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

628,058,007 9,707
laravel/framework

The Laravel Framework.

576,155,700 34,907
laravel/tinker

Powerful REPL for the Laravel framework.

485,678,092 7,440