pagination

    public function pagination()
    {
        return _class('html')->pagination([
            '1' => '#page-1',
            '2' => '#page-2',
            'prev' => '#page-1',
            'next' => '#page-2',
            '3' => '#page-3',
            '4' => '#page-4',
            '5' => '#page-5',
        ]);
    }
    public function pagination($data = [], $extra = [])
    {
        if ($this->_is_bs5) {
            return $this->_bs5()->pagination($data, $extra);
        }
        $extra['id'] = ($extra['id'] ?? null) ?: __FUNCTION__ . '_' . ($this->_ids[__FUNCTION__] = ($this->_ids[__FUNCTION__] ?? 0) + 1);
        $prev = $next = null;
        if (isset($data['prev'])) {
            $prev = ($data['prev'] ?? null);
            unset($data['prev']);
        }
        if (isset($data['next'])) {
            $next = ($data['next'] ?? null);
            unset($data['next']);
        }
        $items = [];
        // TODO: auto-detect current page and need of first. last
        if ($prev || $this->_pagination_state('prev', $extra) === 'disabled') {
            $items[] = $this->_pagination_item('prev', $prev, t('Prev'), $extra);
        }
        foreach ((array) $data as $page => $link) {
            $items[] = $this->_pagination_item($page, $link, $page, $extra);
        }
        if ($next || $this->_pagination_state('next', $extra) === 'disabled') {
            $items[] = $this->_pagination_item('next', $next, t('Next'), $extra);
        }
        [$size_class, $wrap_class] = $this->_pagination_classes($extra['size'] ?? '', $extra['align'] ?? '', $this->_is_bs3 ? 'bs3' : 'bs2');
        $class = strlen($size_class) ? trim($size_class . ' ' . ($extra['class'] ?? '')) : ($extra['class'] ?? null);
        if ($this->_is_bs3) {
            return '<div' . (strlen($wrap_class) ? ' class="' . $wrap_class . '"' : '') . '><ul class="pagination' . ($class ? ' ' . $class : '') . '" id="' . ($extra['id'] ?? null) . '">' . implode(PHP_EOL, $items) . '</ul></div>';
        }
        return '<div class="pagination' . ($class ? ' ' . $class : '') . '" id="' . ($extra['id'] ?? null) . '"><ul>' . implode(PHP_EOL, $items) . '</ul></div>';
    }