-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] )] )] ).