Current section
Files
Jump to
Current section
Files
src/gbr@ui@logo.erl
-module(gbr@ui@logo).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src\\gbr\\ui\\logo.gleam").
-export([new/1, text/2, src/2, icon/2, icon_only/2, src_dark/2, alt/2, href/2, class/2, class_content/2, class_small/2, render/1]).
-export_type([u_i_logo/0]).
-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 logo super element.\n"
"\n"
).
-opaque u_i_logo() :: {u_i_logo,
gbr@ui@core@el:u_i_el(),
gbr@ui@link:u_i_link(),
gleam@option:option(gbr@ui@img:u_i_img()),
gleam@option:option(list(gbr@ui@typo:u_i_typo()))}.
-file("src\\gbr\\ui\\logo.gleam", 43).
?DOC(
" New logotype image super element.\n"
"\n"
" - href: Link location on clicked\n"
).
-spec new(binary()) -> u_i_logo().
new(Href) ->
El = gbr@ui@core@el:new(<<"logo"/utf8>>),
Href@1 = gbr@ui@link:new(Href),
{u_i_logo, El, Href@1, none, none}.
-file("src\\gbr\\ui\\logo.gleam", 54).
?DOC(
" Set typos to logo text\n"
"\n"
" - text: `gbr/ui/typo` list to show logo text\n"
).
-spec text(u_i_logo(), list(gbr@ui@typo:u_i_typo())) -> u_i_logo().
text(In, Text) ->
{u_i_logo,
erlang:element(2, In),
erlang:element(3, In),
erlang:element(4, In),
{some, Text}}.
-file("src\\gbr\\ui\\logo.gleam", 64).
?DOC(
" Set logo img\n"
"\n"
" This function always create a new `gbr/ui/img` element.\n"
"\n"
" - src: Image source path `lustre/attribute.src`\n"
).
-spec src(u_i_logo(), binary()) -> u_i_logo().
src(In, Src) ->
Img = gbr@ui@img:new(Src),
{u_i_logo,
erlang:element(2, In),
erlang:element(3, In),
{some, Img},
erlang:element(5, In)}.
-file("src\\gbr\\ui\\logo.gleam", 72).
?DOC(" Set logo icon to dark mode.\n").
-spec icon(u_i_logo(), binary()) -> u_i_logo().
icon(In, Icon) ->
Img = gleam@option:map(
erlang:element(4, In),
fun(_capture) -> gbr@ui@img:small(_capture, Icon) end
),
{u_i_logo,
erlang:element(2, In),
erlang:element(3, In),
Img,
erlang:element(5, In)}.
-file("src\\gbr\\ui\\logo.gleam", 82).
?DOC(
" Set logo icon only show\n"
"\n"
" - icon_only: If show only icon or not\n"
).
-spec icon_only(u_i_logo(), boolean()) -> u_i_logo().
icon_only(In, Icon_only) ->
Img = gleam@option:map(
erlang:element(4, In),
fun(_capture) -> gbr@ui@img:small_only(_capture, Icon_only) end
),
{u_i_logo,
erlang:element(2, In),
erlang:element(3, In),
Img,
erlang:element(5, In)}.
-file("src\\gbr\\ui\\logo.gleam", 90).
?DOC(" Set logo img to dark mode.\n").
-spec src_dark(u_i_logo(), binary()) -> u_i_logo().
src_dark(In, Dark) ->
Img = gleam@option:map(
erlang:element(4, In),
fun(_capture) -> gbr@ui@img:dark(_capture, Dark) end
),
{u_i_logo,
erlang:element(2, In),
erlang:element(3, In),
Img,
erlang:element(5, In)}.
-file("src\\gbr\\ui\\logo.gleam", 98).
?DOC(" Set logo img alt text\n").
-spec alt(u_i_logo(), binary()) -> u_i_logo().
alt(In, Alt) ->
Img = gleam@option:map(
erlang:element(4, In),
fun(_capture) -> gbr@ui@img:alt(_capture, Alt) end
),
{u_i_logo,
erlang:element(2, In),
erlang:element(3, In),
Img,
erlang:element(5, In)}.
-file("src\\gbr\\ui\\logo.gleam", 106).
?DOC(" Set logotype href link.\n").
-spec href(u_i_logo(), binary()) -> u_i_logo().
href(In, Href) ->
Href@1 = gbr@ui@link:href(erlang:element(3, In), Href),
{u_i_logo,
erlang:element(2, In),
Href@1,
erlang:element(4, In),
erlang:element(5, In)}.
-file("src\\gbr\\ui\\logo.gleam", 114).
?DOC(" Set logo class attribute\n").
-spec class(u_i_logo(), binary()) -> u_i_logo().
class(In, Class) ->
Href = gbr@ui@link:class(erlang:element(3, In), Class),
{u_i_logo,
erlang:element(2, In),
Href,
erlang:element(4, In),
erlang:element(5, In)}.
-file("src\\gbr\\ui\\logo.gleam", 122).
?DOC(" Set log content class attribute\n").
-spec class_content(u_i_logo(), binary()) -> u_i_logo().
class_content(In, Class) ->
El = gbr@ui@core@el:class(erlang:element(2, In), Class),
{u_i_logo,
El,
erlang:element(3, In),
erlang:element(4, In),
erlang:element(5, In)}.
-file("src\\gbr\\ui\\logo.gleam", 130).
?DOC(" Set logo small class attribute\n").
-spec class_small(u_i_logo(), binary()) -> u_i_logo().
class_small(In, Class) ->
Img = gleam@option:map(
erlang:element(4, In),
fun(_capture) -> gbr@ui@img:class_small(_capture, Class) end
),
{u_i_logo,
erlang:element(2, In),
erlang:element(3, In),
Img,
erlang:element(5, In)}.
-file("src\\gbr\\ui\\logo.gleam", 138).
?DOC(" Render logo super element to `lustre/element.{type Element}`.\n").
-spec render(u_i_logo()) -> lustre@vdom@vnode:element(any()).
render(In) ->
{u_i_logo, El, Href, Img, Text} = In,
Icon_only = begin
_pipe = gleam@option:map(Img, fun gbr@ui@img:is_small_only/1),
gleam@option:unwrap(_pipe, false)
end,
Text@1 = case Icon_only of
false ->
_pipe@1 = gleam@option:map(
Text,
fun(_capture) ->
gbr@ui@typo:styled(
_capture,
<<"inline-block align-middle items-center"/utf8>>
)
end
),
gleam@option:unwrap(_pipe@1, lustre@element:none());
true ->
lustre@element:none()
end,
Img@1 = begin
_pipe@2 = gleam@option:map(Img, fun gbr@ui@img:at/1),
_pipe@3 = gleam@option:map(_pipe@2, fun gbr@ui@img:render/1),
gleam@option:unwrap(_pipe@3, [])
end,
Inner = lists:reverse([Text@1 | Img@1]),
Inner@1 = lustre@element@html:'div'(gbr@ui@core@el:attrs(El), Inner),
_pipe@4 = gbr@ui@link:at(Href, [Inner@1]),
gbr@ui@link:render(_pipe@4).