diff --git a/src/Foundation/HydeKernel.php b/src/Foundation/HydeKernel.php index c15f68b2..8a9df59f 100644 --- a/src/Foundation/HydeKernel.php +++ b/src/Foundation/HydeKernel.php @@ -49,7 +49,7 @@ class HydeKernel implements SerializableContract use Serializable; use Macroable; - final public const VERSION = '1.3.3'; + final public const VERSION = '1.3.4'; protected static self $instance; diff --git a/src/Framework/Features/Navigation/DocumentationSidebar.php b/src/Framework/Features/Navigation/DocumentationSidebar.php index ebbe5112..6cf239a9 100644 --- a/src/Framework/Features/Navigation/DocumentationSidebar.php +++ b/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/tests/Feature/Services/DocumentationSidebarTest.php b/tests/Feature/Services/DocumentationSidebarTest.php index b1cadcbd..9ac37522 100644 --- a/tests/Feature/Services/DocumentationSidebarTest.php +++ b/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++) {