mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-27 07:14:56 +00:00
53 lines
1.7 KiB
Lua
53 lines
1.7 KiB
Lua
---@class User
|
|
---@field id string User ID
|
|
---@field username string Display username
|
|
---@field email string? User email address
|
|
---@field role string User role/permission level
|
|
|
|
---@class UsersContext
|
|
---@field users User[]? List of users to display
|
|
|
|
---@class UIComponent
|
|
---@field type string Component type name
|
|
---@field props table? Component properties
|
|
---@field children table[]? Child components
|
|
|
|
local M = {}
|
|
|
|
---Renders a table displaying users with edit and delete actions
|
|
---@param ctx UsersContext Context data containing user list
|
|
---@return UIComponent Table component with user rows
|
|
function M.render(ctx)
|
|
local rows = {}
|
|
for _, u in ipairs(ctx.users or {}) do
|
|
rows[#rows + 1] = {
|
|
type = "TableRow",
|
|
children = {
|
|
{ type = "TableCell", props = { text = u.username } },
|
|
{ type = "TableCell", props = { text = u.email or "-" } },
|
|
{ type = "TableCell", props = { text = u.role } },
|
|
{ type = "TableCell", children = {
|
|
{ type = "Button", props = { size = "sm", text = "Edit", onClick = "editUser", data = u.id } },
|
|
{ type = "Button", props = { size = "sm", variant = "destructive", text = "Delete", onClick = "deleteUser", data = u.id } }
|
|
}}
|
|
}
|
|
}
|
|
end
|
|
return {
|
|
type = "Table",
|
|
children = {
|
|
{ type = "TableHeader", children = {
|
|
{ type = "TableRow", children = {
|
|
{ type = "TableHead", props = { text = "Username" } },
|
|
{ type = "TableHead", props = { text = "Email" } },
|
|
{ type = "TableHead", props = { text = "Role" } },
|
|
{ type = "TableHead", props = { text = "Actions" } }
|
|
}}
|
|
}},
|
|
{ type = "TableBody", children = rows }
|
|
}
|
|
}
|
|
end
|
|
|
|
return M
|