Navigation breadcrumbs for terminal UIs
Push / pop navigation items to build breadcrumbs. Track a stack of visited locations — useful for file explorers, menu trees, and shell history.
composer require sugarcraft/sugar-crumbs
use SugarCraft\Crumbs\NavStack;
// NavStack is a mutable stack: push() returns the same stack for chaining.
$nav = NavStack::new()
->push('Home', '/') // title, then any payload
->push('Settings', '/settings')
->push('Display', '/settings/display');
echo $nav->view(); // Home > Settings > Display
echo $nav->view(' / '); // Home / Settings / Display
$top = $nav->pop(); // NavigationItem: title 'Display', data '/settings/display'
$nav->depth(); // 2
| Class | Method | Description |
|---|---|---|
| NavStack | new() | Create navigation stack |
| NavStack | push(string $title, mixed $data = null): self | Push a navigation item (mutates; returns the stack) |
| NavStack | pop(): ?NavigationItem / popTo(int) / current() / parent() / depth() | Pop and inspect the stack |
| NavStack | view(string $separator = ' > ') / viewHtml() | Render breadcrumbs |
| NavStack | filter(query) | Filter breadcrumbs |
| NavigationItem | __construct(string $title, mixed $data = null) / title() | One stack entry |
| Breadcrumb | withZoneManager(?Manager) | Attach Manager for mouse-click zone tracking (candy-zone integration) |
| Breadcrumb | setSeparator(string) | Set separator between crumbs |
| Breadcrumb | setMaxWidth(int) | Truncate if total width exceeds limit |
| Breadcrumb | render(NavStack) | Render NavStack as breadcrumb string |
VHS-recorded GIFs of every example shipped with the library. Regenerated automatically on every push that touches the source.