mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-26 14:54:55 +00:00
53 lines
1.2 KiB
Lua
53 lines
1.2 KiB
Lua
-- Header user section
|
|
|
|
---@class User
|
|
---@field avatar? string
|
|
---@field name string
|
|
---@field role? string
|
|
|
|
---@class MenuItem
|
|
---@field label? string
|
|
---@field path? string
|
|
---@field action? string
|
|
---@field type? string
|
|
|
|
---@class AuthButtonsComponent
|
|
---@field type "auth_buttons"
|
|
---@field children MenuItem[]
|
|
|
|
---@class UserMenuComponent
|
|
---@field type "user_menu"
|
|
---@field avatar? string
|
|
---@field name? string
|
|
---@field items MenuItem[]
|
|
|
|
---@alias HeaderUserComponent AuthButtonsComponent|UserMenuComponent
|
|
|
|
---@param user? User
|
|
---@return HeaderUserComponent
|
|
local function user_section(user)
|
|
if not user then
|
|
return {
|
|
type = "auth_buttons",
|
|
children = {
|
|
{ type = "button", label = "Login", action = "navigate", path = "/login" },
|
|
{ type = "button", label = "Sign Up", action = "navigate", path = "/register" }
|
|
}
|
|
}
|
|
end
|
|
|
|
return {
|
|
type = "user_menu",
|
|
avatar = user.avatar,
|
|
name = user.name,
|
|
items = {
|
|
{ label = "Profile", path = "/profile" },
|
|
{ label = "Settings", path = "/settings" },
|
|
{ type = "divider" },
|
|
{ label = "Logout", action = "logout" }
|
|
}
|
|
}
|
|
end
|
|
|
|
return user_section
|