Current section
Files
Jump to
Current section
Files
src/gbr@ui@admin@header.erl
-module(gbr@ui@admin@header).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src\\gbr\\ui\\admin\\header.gleam").
-export([logo/2, user/2, toggle_mobile/1, toggle_sidebar/1, toggle_dropdown/1, at/1, on_mobile/2, on_sidebar/2, on_dropdown/2, on_submit/2, on_darkmode/2, new/1, render/1]).
-export_type([u_i_header/0, u_i_header_render/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
"\n"
" 🔝 Gleam UI header super element\n"
"\n"
).
-opaque u_i_header() :: {u_i_header,
gbr@ui@core@el:u_i_el(),
gleam@option:option(gbr@ui@logo:u_i_logo()),
gleam@option:option(gbr@ui@admin@user:u_i_user()),
boolean(),
boolean()}.
-opaque u_i_header_render(PKG) :: {u_i_header_render,
u_i_header(),
gleam@option:option(PKG),
gleam@option:option(PKG),
gleam@option:option(PKG),
gleam@option:option(fun((binary()) -> PKG)),
gleam@option:option(PKG)}.
-file("src\\gbr\\ui\\admin\\header.gleam", 80).
?DOC(" Set header logo\n").
-spec logo(u_i_header(), gbr@ui@logo:u_i_logo()) -> u_i_header().
logo(In, Logo) ->
Logo@1 = begin
_pipe = gbr@ui@logo:class(Logo, <<"lg:hidden"/utf8>>),
{some, _pipe}
end,
{u_i_header,
erlang:element(2, In),
Logo@1,
erlang:element(4, In),
erlang:element(5, In),
erlang:element(6, In)}.
-file("src\\gbr\\ui\\admin\\header.gleam", 90).
?DOC(" Set header user\n").
-spec user(u_i_header(), gbr@ui@admin@user:u_i_user()) -> u_i_header().
user(In, User) ->
{u_i_header,
erlang:element(2, In),
erlang:element(3, In),
{some, User},
erlang:element(5, In),
erlang:element(6, In)}.
-file("src\\gbr\\ui\\admin\\header.gleam", 96).
?DOC(" Toggle mobile screen\n").
-spec toggle_mobile(u_i_header()) -> u_i_header().
toggle_mobile(In) ->
{u_i_header,
erlang:element(2, In),
erlang:element(3, In),
erlang:element(4, In),
erlang:element(5, In),
not erlang:element(6, In)}.
-file("src\\gbr\\ui\\admin\\header.gleam", 102).
?DOC(" Toggle sidebar open\n").
-spec toggle_sidebar(u_i_header()) -> u_i_header().
toggle_sidebar(In) ->
{u_i_header,
erlang:element(2, In),
erlang:element(3, In),
erlang:element(4, In),
not erlang:element(5, In),
erlang:element(6, In)}.
-file("src\\gbr\\ui\\admin\\header.gleam", 108).
?DOC(" Toggle dropdown user info\n").
-spec toggle_dropdown(u_i_header()) -> u_i_header().
toggle_dropdown(In) ->
User = begin
_pipe = erlang:element(4, In),
gleam@option:map(_pipe, fun gbr@ui@admin@user:toggle/1)
end,
{u_i_header,
erlang:element(2, In),
erlang:element(3, In),
User,
erlang:element(5, In),
erlang:element(6, In)}.
-file("src\\gbr\\ui\\admin\\header.gleam", 122).
?DOC(
" New render header element\n"
"\n"
" - in: Header info\n"
" - logo: Logo info\n"
" - user: User render element\n"
).
-spec at(u_i_header()) -> u_i_header_render(any()).
at(In) ->
{u_i_header_render, In, none, none, none, none, none}.
-file("src\\gbr\\ui\\admin\\header.gleam", 139).
?DOC(
" On mobile screen toggle\n"
"\n"
" Uses with `toggle_mobile`\n"
"\n"
" When chance or open in mobile screen\n"
).
-spec on_mobile(u_i_header_render(PKM), PKM) -> u_i_header_render(PKM).
on_mobile(In, On_app) ->
{u_i_header_render,
erlang:element(2, In),
{some, On_app},
erlang:element(4, In),
erlang:element(5, In),
erlang:element(6, In),
erlang:element(7, In)}.
-file("src\\gbr\\ui\\admin\\header.gleam", 149).
?DOC(
" On sidebar toggle\n"
"\n"
" Uses with `toggle_sidebar`\n"
"\n"
" When sidebar button is clicked\n"
).
-spec on_sidebar(u_i_header_render(PKP), PKP) -> u_i_header_render(PKP).
on_sidebar(In, On_sidebar) ->
{u_i_header_render,
erlang:element(2, In),
erlang:element(3, In),
{some, On_sidebar},
erlang:element(5, In),
erlang:element(6, In),
erlang:element(7, In)}.
-file("src\\gbr\\ui\\admin\\header.gleam", 159).
?DOC(
" On dropdown user info toggle\n"
"\n"
" Uses with `toggle_dropdown`\n"
"\n"
" When header user element is clicked\n"
).
-spec on_dropdown(u_i_header_render(PKS), PKS) -> u_i_header_render(PKS).
on_dropdown(In, On_dropdown) ->
{u_i_header_render,
erlang:element(2, In),
erlang:element(3, In),
erlang:element(4, In),
erlang:element(5, In),
erlang:element(6, In),
{some, On_dropdown}}.
-file("src\\gbr\\ui\\admin\\header.gleam", 169).
?DOC(
" On submit header generic event\n"
"\n"
" Uses when TODO?\n"
"\n"
" When clicked generic button TODO?\n"
).
-spec on_submit(u_i_header_render(PKV), fun((binary()) -> PKV)) -> u_i_header_render(PKV).
on_submit(In, Onsubmit) ->
{u_i_header_render,
erlang:element(2, In),
erlang:element(3, In),
erlang:element(4, In),
erlang:element(5, In),
{some, Onsubmit},
erlang:element(7, In)}.
-file("src\\gbr\\ui\\admin\\header.gleam", 177).
?DOC(
" On dark mode toggle\n"
"\n"
" When dark mode button is clicked\n"
).
-spec on_darkmode(u_i_header_render(PKY), PKY) -> u_i_header_render(PKY).
on_darkmode(In, On_darkmode) ->
{u_i_header_render,
erlang:element(2, In),
erlang:element(3, In),
erlang:element(4, In),
{some, On_darkmode},
erlang:element(6, In),
erlang:element(7, In)}.
-file("src\\gbr\\ui\\admin\\header.gleam", 70).
?DOC(
" New header super element\n"
"\n"
" - id: Identification html element\n"
" - sidebar: Logo info\n"
" - appnav: User info\n"
).
-spec new(binary()) -> u_i_header().
new(Id) ->
El = begin
_pipe = gbr@ui@core@el:new(Id),
gbr@ui@core@el:class(
_pipe,
<<"sticky top-0 z-99999 flex w-full border-gray-200 lg:border-b bg-white dark:border-gray-800 dark:bg-gray-900"/utf8>>
)
end,
{u_i_header, El, none, none, false, false}.
-file("src\\gbr\\ui\\admin\\header.gleam", 185).
?DOC(
" Render header super element\n"
"\n"
" - at: Render header element info\n"
).
-spec render(u_i_header_render(PLB)) -> lustre@vdom@vnode:element(PLB).
render(At) ->
{u_i_header_render,
In,
On_app,
On_sidebar,
On_darkmode,
On_submit,
On_dropdown} = At,
{u_i_header, El, Logo, User, Sidebar, Appnav} = In,
Logo@1 = begin
_pipe = gleam@option:map(Logo, fun gbr@ui@logo:render/1),
gleam@option:unwrap(_pipe, lustre@element:none())
end,
User@2 = begin
_pipe@1 = gleam@option:map(User, fun gbr@ui@admin@user:at/1),
_pipe@2 = gleam@option:map(
_pipe@1,
fun(_capture) ->
gbr@ui@admin@user:on_submit_opt(_capture, On_submit)
end
),
_pipe@3 = gleam@option:map(
_pipe@2,
fun(_capture@1) ->
gbr@ui@admin@user:on_dropdown_opt(_capture@1, On_dropdown)
end
),
_pipe@4 = gleam@option:map(_pipe@3, fun gbr@ui@admin@user:render/1),
_pipe@5 = gleam@option:map(
_pipe@4,
fun(User@1) ->
lustre@element@html:'div'(
[lustre@attribute:class(
<<"2xsm:gap-3 flex items-center gap-2"/utf8>>
)],
[User@1]
)
end
),
gleam@option:unwrap(_pipe@5, lustre@element:none())
end,
Attrs = gbr@ui@core@el:attrs(El),
lustre@element@html:header(
Attrs,
[lustre@element@html:'div'(
[lustre@attribute:class(
<<"flex grow flex-col items-center justify-between lg:flex-row lg:px-6"/utf8>>
)],
[lustre@element@html:'div'(
[lustre@attribute:class(
<<"flex w-full items-center justify-between gap-2 border-b border-gray-200 px-3 py-3 sm:gap-4 lg:justify-normal lg:border-b-0 lg:px-0 lg:py-4 dark:border-gray-800"/utf8>>
)],
[gbr@ui@admin@button:sidebar(
<<"header-toggle-sidebar"/utf8>>,
Sidebar,
On_sidebar
),
Logo@1,
gbr@ui@admin@button:app_nav(
<<"header-toggle-appnav"/utf8>>,
Appnav,
On_app
)]
),
lustre@element@html:'div'(
[lustre@attribute:class(
<<"shadow-theme-md w-full items-center justify-between gap-4 px-5 py-4 lg:flex lg:justify-end lg:px-0 lg:shadow-none"/utf8>>
),
lustre@attribute:classes(
[{<<"flex"/utf8>>, Appnav},
{<<"hidden"/utf8>>, not Appnav}]
)],
[lustre@element@html:'div'(
[lustre@attribute:class(
<<"2xsm:gap-3 flex items-center gap-2"/utf8>>
)],
[gbr@ui@admin@button:dark_mode(
<<"header-btn-toggle-darkmode"/utf8>>,
On_darkmode
)]
),
User@2]
)]
)]
).