PHPackages                             dewsign/nova-spaces - 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. dewsign/nova-spaces

ActivePackage[Admin Panels](/categories/admin)

dewsign/nova-spaces
===================

Spaces for Laravel Nova

v1.2.1(6y ago)13062MITPHPPHP &gt;=7.0.0CI failing

Since Nov 14Pushed 6y ago2 watchersCompare

[ Source](https://github.com/dewsign/nova-spaces)[ Packagist](https://packagist.org/packages/dewsign/nova-spaces)[ RSS](/packages/dewsign-nova-spaces/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (1)Dependencies (9)Versions (8)Used By (0)

Spaces for Laravel Nova
=======================

[](#spaces-for-laravel-nova)

Create "Spaces" to display throughout your website which can be populated with custom blocks.

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

[](#installation)

`composer require dewsign/nova-spaces`

`php artisan migrate`

Usage
-----

[](#usage)

To get started, you will need to create your first Space area. E.g. Sidebar or Upsells. You are free to structure the files as you wish or you can use the conventions from the examples if you prefer.

We simply use the default Nova folder to register our new space as it will load automatically.

```
// app/Nova/SidebarSpace.php

namespace App\Nova;

use Dewsign\NovaSpaces\Nova\Space;

class SidebarSpace extends Space
{
    public static $zone = 'sidebar';

    public static function label()
    {
        return __('Sidebar Items');
    }
}
```

The `$zone` is used to differentiate the various space areas in the database and code and avoids requiring new tables for each new space area.

Your new space zone should now be available within Nova, with the default custom link item as the only option.

Outputting the space (Blade)
----------------------------

[](#outputting-the-space-blade)

We don't currently make any assumptions about how you wish to render the space. Some helpers surrounding common usage are planned for the future though. For now please access the `Dewsign\NovaSpaces\Models\Space` model as you sould any other Eloquent model to retrieve the space items you require.

Here is a basic inline blade example.

```
@foreach(Space::active()->whereZone('sidebar')->get() as $spaceItem)
    {!! $spaceItem->view !!}
    {!! or !!}
    {{ $spaceItem->label }}
@endforeach
```

You can access any sub-items through the `spaces` relationship.

```
@foreach($spaceItem->spaces as $item)
    {!! $item->view !!}
@endforeach
```

Extending
---------

[](#extending)

You can create your own space item types by creating a couple of new files and loading them in. In short, you will need:

- An Eloquent Model, complete with migration / database
- A Nova resource to manage the content
- A blade view to render the item

```
// app/Space/Models/Section.php

use Dewsign\NovaSpaces\Models\SpaceItem;

class Section extends SpaceItem
{
    public static $repeaterBlockViewTemplate = 'space.section';

    public function resolveAction()
    {
        return $this->link_url;
    }

    public function resolveLabel($model = null)
    {
        return $model->title ?? $this->heading;
    }
}
```

```
// database/migrations/your_migration.php

Schema::create('space_sections', function (Blueprint $table) {
    $table->increments('id');
    $table->string('heading')->nullable();
    $table->text('content')->nullable();
    $table->string('link_url')->nullable();
    $table->string('link_title')->nullable();
    $table->timestamps();
});
```

```
// app/Space/Nova/Section.php

...
use Dewsign\NovaSpaces\Nova\Items\SpaceItem;

class Section extends SpaceItem
{
    public static $model = App\Space\Models\Section::class;

    public static $title = 'heading';

    public static $search = [
        'heading',
        'content',
        'link_url',
    ];

    public static function label()
    {
        return __('Section');
    }

    public function fields(Request $request)
    {
        return [
            Text::make('Heading'),
            Markdown::make('Content'),
            Text::make('Link Url'),
            Text::make('Link Title'),
        ];
    }
}
```

Finally, load the new space item through the `novaspaces` config

```
return [
    "repeaters" => [
        ...
        \App\Space\Nova\Section::class,
    ],
];
```

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 64.3% 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 ~89 days

Recently: every ~112 days

Total

6

Last Release

2285d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/767ab4e0eedaace1862603a74f2c37f2ef7f72811855d4748a3b8d02f3ad81df?d=identicon)[dewsign](/maintainers/dewsign)

---

Top Contributors

[![m2de](https://avatars.githubusercontent.com/u/17720020?v=4)](https://github.com/m2de "m2de (9 commits)")[![crumb1e](https://avatars.githubusercontent.com/u/18497168?v=4)](https://github.com/crumb1e "crumb1e (5 commits)")

###  Code Quality

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/dewsign-nova-spaces/health.svg)

```
[![Health](https://phpackages.com/badges/dewsign-nova-spaces/health.svg)](https://phpackages.com/packages/dewsign-nova-spaces)
```

###  Alternatives

[backpack/crud

Quickly build admin interfaces using Laravel, Bootstrap and JavaScript.

3.4k3.4M207](/packages/backpack-crud)[conedevelopment/root

Root is an admin package for Laravel applications.

3713.1k2](/packages/conedevelopment-root)[eveseat/web

SeAT Web Interface

2723.2k135](/packages/eveseat-web)

PHPackages © 2026

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