diff --git a/packages/framework/src/Framework/Features/Navigation/DocumentationSidebar.php b/packages/framework/src/Framework/Features/Navigation/DocumentationSidebar.php index ebbe51129c0..6cf239a9661 100644 --- a/packages/framework/src/Framework/Features/Navigation/DocumentationSidebar.php +++ b/packages/framework/src/Framework/Features/Navigation/DocumentationSidebar.php @@ -22,6 +22,11 @@ protected function generate(): void $this->items->put($route->getRouteKey(), NavItem::fromRoute($route)); } }); + + // If there are no pages other than the index page, we add it to the sidebar so that it's not empty + if ($this->items->count() === 0 && DocumentationPage::home() !== null) { + $this->items->push(NavItem::fromRoute(DocumentationPage::home(), group: 'other')); + } } public function hasGroups(): bool diff --git a/packages/framework/tests/Feature/Services/DocumentationSidebarTest.php b/packages/framework/tests/Feature/Services/DocumentationSidebarTest.php index b1cadcbd394..9ac37522cc1 100644 --- a/packages/framework/tests/Feature/Services/DocumentationSidebarTest.php +++ b/packages/framework/tests/Feature/Services/DocumentationSidebarTest.php @@ -376,6 +376,31 @@ public function test_is_group_active_for_index_page_with_no_groups() $this->assertFalse(DocumentationSidebar::create()->isGroupActive('foo')); } + public function test_index_page_added_to_sidebar_when_it_is_the_only_page() + { + Filesystem::touch('_docs/index.md'); + $sidebar = DocumentationSidebar::create(); + + $this->assertCount(1, $sidebar->items); + $this->assertEquals( + collect([NavItem::fromRoute(Routes::get('docs/index'))]), + $sidebar->items + ); + } + + public function test_index_page_not_added_to_sidebar_when_other_pages_exist() + { + $this->createTestFiles(1); + Filesystem::touch('_docs/index.md'); + $sidebar = DocumentationSidebar::create(); + + $this->assertCount(1, $sidebar->items); + $this->assertEquals( + collect([NavItem::fromRoute(Routes::get('docs/test-0'))]), + $sidebar->items + ); + } + protected function createTestFiles(int $count = 5): void { for ($i = 0; $i < $count; $i++) {