A minimal Tabline plugin for Neovim, written in Lua. It is basically a drop-in replacement for tabline.vim but with a few differences.

With lazy.nvim:
{
    'crispgm/nvim-tabline',
    dependencies = { 'nvim-tree/nvim-web-devicons' }, -- optional
    config = true,
}
require('tabline').setup({opts})
require('tabline').setup({
    show_index = true,           -- show tab index
    show_modify = true,          -- show buffer modification indicator
    show_icon = false,           -- show file extension icon
    fnamemodify = ':t',          -- file name modifier string
                                 -- can be a function to modify buffer name
    modify_indicator = '[+]',    -- modify indicator
    no_name = 'No name',         -- no name buffer name
    brackets = { '[', ']' },     -- file name brackets surrounding
    inactive_tab_max_length = 0  -- max length of inactive tab titles, 0 to ignore
})
" Only if there are at least two tabs (default)
vim.opt.showtabline = 1
" Always
vim.opt.showtabline = 2
" Never
vim.opt.showtabline = 0
Vim's tabpage commands are powerful enough, :help tabpage for details.
If you need switch between tabs, here is a great tutorial.
The highlighting of the tab pages line follows vim settings. See :help setting-tabline for details.
nvim-tabline is not exactly a Lua translation. There are some differences for configuration:
show_index) and buffer modification indicator (show_modify).g:tablineclosebutton) is not supported.