menu

    public function menu()
    {
        return _class('html')->menu([
            11 => [
                'name' => 'Tools',
            ],
            22 => [
                'link' => '#blocks',
                'name' => 'Blocks editor',
                'parent_id' => 11,
            ],
            33 => [
                'link' => '#file_manager',
                'name' => 'File manager',
                'parent_id' => 11,
            ],
            44 => [
                'name' => 'Administration',
            ],
            55 => [
                'link' => '#admin',
                'name' => 'Admin accounts',
                'parent_id' => 44,
            ],
            66 => [
                'link' => '#admin_groups',
                'name' => 'Admin groups',
                'parent_id' => 44,
            ],
            77 => [
                'link' => '#admin_modules',
                'name' => 'Admin modules',
                'parent_id' => 44,
            ],
            88 => [
                'name' => 'Users',
                'parent_id' => 44,
            ],
            99 => [
                'link' => '#manage_users',
                'name' => 'User accounts',
                'parent_id' => 88,
            ],
            101 => [
                'link' => '#user_groups',
                'name' => 'User groups',
                'parent_id' => 88,
            ],
            102 => [
                'link' => '#user_modules',
                'name' => 'User modules',
                'parent_id' => 88,
            ],
            103 => [
                'name' => 'Content',
            ],
            104 => [
                'link' => '#static_pages',
                'name' => 'Static pages',
                'parent_id' => 103,
            ],
            105 => [
                'link' => '#manage_news',
                'name' => 'News',
                'parent_id' => 103,
            ],
            106 => [
                'link' => '#manage_comments',
                'name' => 'Comments',
                'parent_id' => 103,
            ],
        ]);
    }
    public function menu($data = [], $extra = [])
    {
        if ($this->_is_bs5) {
            return $this->_bs5()->menu($data, $extra);
        }
        $extra['id'] = ($extra['id'] ?? null) ?: __FUNCTION__ . '_' . ($this->_ids[__FUNCTION__] = ($this->_ids[__FUNCTION__] ?? 0) + 1);
        if ($data) {
            $data = $this->_recursive_sort_items($data);
        }
        $keys = array_keys($data);
        $keys_counter = array_flip($keys);
        $items = [];
        $ul_opened = false;
        foreach ((array) $data as $id => $item) {
            $next_key = $keys[$keys_counter[$id] + 1] ?? null;
            $next_item = $next_key !== null ? ($data[$next_key] ?? null) : null;
            $has_children = false;
            $close_li = 1;
            $close_ul = 0;
            if ($next_item) {
                if (($next_item['level'] ?? null) > ($item['level'] ?? null)) {
                    $has_children = true;
                }
                $close_li = ($item['level'] ?? null) - ($next_item['level'] ?? null) + 1;
                if ($close_li < 0) {
                    $close_li = 0;
                }
            }
            $badge = ($item['badge'] ?? null) ? ' <sup class="badge badge-' . (($item['class_badge'] ?? null) ?: 'info') . '">' . ($item['badge'] ?? null) . '</sup>' : '';
            $items[] = '
				<li class="dropdown">
					<a href="' . ($item['link'] ?? null) . '" class="dropdown-toggle">' . ($item['name'] ?? null) . $badge . ($has_children ? ' <b class="caret"></b>' : '') . '</a>';
            if ($has_children) {
                $ul_opened = true;
                $items[] = PHP_EOL . '<ul class="dropdown-menu sub-menu">' . PHP_EOL;
            } elseif ($close_li) {
                if ($ul_opened && ! $has_children && ($item['level'] ?? null) != ($next_item['level'] ?? null)) {
                    $ul_opened = false;
                    $close_ul = 1;
                }
                $tmp = str_repeat(PHP_EOL . ($close_ul ? '</li></ul>' : '</li>') . PHP_EOL, $close_li);
                if ($close_li > 1 && $close_ul) {
                    $tmp = substr($tmp, 0, -strlen('</ul>' . PHP_EOL)) . PHP_EOL;
                }
                $items[] = $tmp;
            }
        }
        return '<div class="navbar navbar-default' . (($extra['class'] ?? null) ? ' ' . ($extra['class'] ?? null) : '') . '" id="' . ($extra['id'] ?? null) . '">
					<div class="navbar-inner navbar-header">
						<ul class="nav navbar-nav">' . implode(PHP_EOL, (array) $items) . '</ul>
					</div>
				</div>';
    }
Menu widget based on bootstrap navbar markup.

https://getbootstrap.com/docs/3.4/components/#navbar