diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/Badge.php b/docs-assets/app/app/Livewire/Panels/Navigation/Badge.php
new file mode 100644
index 0000000000..72646eb579
--- /dev/null
+++ b/docs-assets/app/app/Livewire/Panels/Navigation/Badge.php
@@ -0,0 +1,24 @@
+getCurrentPanel()
+ ->navigationItems([
+ NavigationItem::make()
+ ->label('Orders')
+ ->url(fn(): string => '#')
+ ->icon('heroicon-o-shopping-cart')
+ ->badge(24),
+ ]);
+ }
+}
diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/BadgeColor.php b/docs-assets/app/app/Livewire/Panels/Navigation/BadgeColor.php
new file mode 100644
index 0000000000..ece5d77f20
--- /dev/null
+++ b/docs-assets/app/app/Livewire/Panels/Navigation/BadgeColor.php
@@ -0,0 +1,25 @@
+getCurrentPanel()
+ ->navigationItems([
+ NavigationItem::make()
+ ->label('Orders')
+ ->url(fn(): string => '#')
+ ->icon('heroicon-o-shopping-cart')
+ ->badge(32, Color::Red),
+ ]);
+ }
+}
diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/BadgeTooltip.php b/docs-assets/app/app/Livewire/Panels/Navigation/BadgeTooltip.php
new file mode 100644
index 0000000000..91abcd83ab
--- /dev/null
+++ b/docs-assets/app/app/Livewire/Panels/Navigation/BadgeTooltip.php
@@ -0,0 +1,25 @@
+getCurrentPanel()
+ ->navigationItems([
+ NavigationItem::make()
+ ->label('Users')
+ ->url(fn(): string => '#')
+ ->icon('heroicon-o-user-group')
+ ->badge(12)
+ ->badgeTooltip('The number of users'),
+ ]);
+ }
+}
diff --git a/docs-assets/app/resources/views/livewire/panels/navigation/badge-color.blade.php b/docs-assets/app/resources/views/livewire/panels/navigation/badge-color.blade.php
new file mode 100644
index 0000000000..42eb8c531d
--- /dev/null
+++ b/docs-assets/app/resources/views/livewire/panels/navigation/badge-color.blade.php
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/docs-assets/app/resources/views/livewire/panels/navigation/badge-tooltip.blade.php b/docs-assets/app/resources/views/livewire/panels/navigation/badge-tooltip.blade.php
new file mode 100644
index 0000000000..3a6cce8d18
--- /dev/null
+++ b/docs-assets/app/resources/views/livewire/panels/navigation/badge-tooltip.blade.php
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/docs-assets/app/resources/views/livewire/panels/navigation/badge.blade.php b/docs-assets/app/resources/views/livewire/panels/navigation/badge.blade.php
new file mode 100644
index 0000000000..42eb8c531d
--- /dev/null
+++ b/docs-assets/app/resources/views/livewire/panels/navigation/badge.blade.php
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/docs-assets/app/routes/web.php b/docs-assets/app/routes/web.php
index a6291ae06b..27994605d8 100644
--- a/docs-assets/app/routes/web.php
+++ b/docs-assets/app/routes/web.php
@@ -8,6 +8,9 @@ use App\Livewire\Infolists\EntriesDemo;
use App\Livewire\Infolists\LayoutDemo as InfolistsLayoutDemo;
use App\Livewire\NotificationsDemo;
use App\Livewire\Panels\Navigation\ActiveIcon;
+use App\Livewire\Panels\Navigation\Badge;
+use App\Livewire\Panels\Navigation\BadgeColor;
+use App\Livewire\Panels\Navigation\BadgeTooltip;
use App\Livewire\Panels\Navigation\ChangeIcon;
use App\Livewire\Panels\Navigation\CustomItems;
use App\Livewire\Panels\Navigation\DisabledNavigation;
@@ -56,5 +59,8 @@ Route::group(['prefix' => 'panels'], function () {
Route::get('top-navigation', TopNavigation::class);
Route::get('sidebar-collapsible-on-desktop', SidebarCollapsibleOnDesktop::class);
Route::get('sidebar-fully-collapsible-on-desktop', SidebarFullyCollapsibleOnDesktop::class);
+ Route::get('badge', Badge::class);
+ Route::get('badge-color', BadgeColor::class);
+ Route::get('badge-tooltip', BadgeTooltip::class);
});
});
diff --git a/docs-assets/screenshots/images/dark/panels/navigation/badge-color.jpg b/docs-assets/screenshots/images/dark/panels/navigation/badge-color.jpg
new file mode 100644
index 0000000000..83a35ebdb0
Binary files /dev/null and b/docs-assets/screenshots/images/dark/panels/navigation/badge-color.jpg differ
diff --git a/docs-assets/screenshots/images/dark/panels/navigation/badge-tooltip.jpg b/docs-assets/screenshots/images/dark/panels/navigation/badge-tooltip.jpg
new file mode 100644
index 0000000000..c57673279c
Binary files /dev/null and b/docs-assets/screenshots/images/dark/panels/navigation/badge-tooltip.jpg differ
diff --git a/docs-assets/screenshots/images/dark/panels/navigation/badge.jpg b/docs-assets/screenshots/images/dark/panels/navigation/badge.jpg
new file mode 100644
index 0000000000..6e4e8ca286
Binary files /dev/null and b/docs-assets/screenshots/images/dark/panels/navigation/badge.jpg differ
diff --git a/docs-assets/screenshots/images/light/panels/navigation/badge-color.jpg b/docs-assets/screenshots/images/light/panels/navigation/badge-color.jpg
new file mode 100644
index 0000000000..59b2e03d6b
Binary files /dev/null and b/docs-assets/screenshots/images/light/panels/navigation/badge-color.jpg differ
diff --git a/docs-assets/screenshots/images/light/panels/navigation/badge-tooltip.jpg b/docs-assets/screenshots/images/light/panels/navigation/badge-tooltip.jpg
new file mode 100644
index 0000000000..5f0ca05102
Binary files /dev/null and b/docs-assets/screenshots/images/light/panels/navigation/badge-tooltip.jpg differ
diff --git a/docs-assets/screenshots/images/light/panels/navigation/badge.jpg b/docs-assets/screenshots/images/light/panels/navigation/badge.jpg
new file mode 100644
index 0000000000..7bbed189ad
Binary files /dev/null and b/docs-assets/screenshots/images/light/panels/navigation/badge.jpg differ
diff --git a/docs-assets/screenshots/schema.js b/docs-assets/screenshots/schema.js
index b0255b9324..163f2d798c 100644
--- a/docs-assets/screenshots/schema.js
+++ b/docs-assets/screenshots/schema.js
@@ -2047,6 +2047,47 @@ export default {
await new Promise((resolve) => setTimeout(resolve, 500))
},
},
+ 'panels/navigation/badge': {
+ url: 'panels/navigation/badge',
+ selector: 'body',
+ viewport: {
+ width: 1080,
+ height: 640,
+ deviceScaleFactor: 0,
+ },
+ crop: (image) => {
+ return image.extract({ width: 650, height: 500, left: 0, top: 0 })
+ },
+ },
+ 'panels/navigation/badge-color': {
+ url: 'panels/navigation/badge-color',
+ selector: 'body',
+ viewport: {
+ width: 1080,
+ height: 640,
+ deviceScaleFactor: 0,
+ },
+ crop: (image) => {
+ return image.extract({ width: 650, height: 500, left: 0, top: 0 })
+ },
+ },
+ 'panels/navigation/badge-tooltip': {
+ url: 'panels/navigation/badge-tooltip',
+ selector: 'body',
+ viewport: {
+ width: 1080,
+ height: 640,
+ deviceScaleFactor: 0,
+ },
+ crop: (image) => {
+ return image.extract({ width: 750, height: 500, left: 0, top: 0 })
+ },
+ before: async (page) => {
+ await page.hover('.fi-badge')
+
+ await new Promise((resolve) => setTimeout(resolve, 500))
+ },
+ },
'tables/example': {
url: 'tables?table=example',
selector: 'body',
diff --git a/packages/panels/docs/06-navigation.md b/packages/panels/docs/06-navigation.md
index 69f3c8092d..de25807f48 100644
--- a/packages/panels/docs/06-navigation.md
+++ b/packages/panels/docs/06-navigation.md
@@ -70,6 +70,8 @@ public static function getNavigationBadge(): ?string
}
```
+
+
If a badge value is returned by `getNavigationBadge()`, it will display using the primary color by default. To style the badge contextually, return either `danger`, `gray`, `info`, `primary`, `success` or `warning` from the `getNavigationBadgeColor()` method:
```php
@@ -79,6 +81,8 @@ public static function getNavigationBadgeColor(): ?string
}
```
+
+
A custom tooltip for the navigation badge can be set in `$navigationBadgeTooltip`:
```php
@@ -94,6 +98,8 @@ public static function getNavigationBadgeTooltip(): ?string
}
```
+
+
## Grouping navigation items
You may group navigation items by specifying a `$navigationGroup` property on a [resource](resources/getting-started) and [custom page](pages):