Packages

🎨 Gleam UI lustre library by @gleam-br

Current section

Files

Jump to
gbr_ui src gbr@ui@admin@avatar.erl
Raw

src/gbr@ui@admin@avatar.erl

-module(gbr@ui@admin@avatar).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src\\gbr\\ui\\admin\\avatar.gleam").
-export([success/1, alert/1, offline/1, xs/1, sm/1, new/1, md/1, lg/1, xl/1, xxl/1, render/1]).
-export_type([size/0, u_i_avatar/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 admin avatar super element\n"
"\n"
" **TODO: el.UIEl**\n"
"\n"
).
-type size() :: {size, binary(), binary()}.
-opaque u_i_avatar() :: {u_i_avatar,
binary(),
size(),
gleam@option:option(binary())}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 32).
-spec success(u_i_avatar()) -> u_i_avatar().
success(Avatar) ->
{u_i_avatar,
erlang:element(2, Avatar),
erlang:element(3, Avatar),
{some, <<"bg-success-500"/utf8>>}}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 36).
-spec alert(u_i_avatar()) -> u_i_avatar().
alert(Avatar) ->
{u_i_avatar,
erlang:element(2, Avatar),
erlang:element(3, Avatar),
{some, <<"bg-warning-500"/utf8>>}}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 40).
-spec offline(u_i_avatar()) -> u_i_avatar().
offline(Avatar) ->
{u_i_avatar,
erlang:element(2, Avatar),
erlang:element(3, Avatar),
{some, <<"bg-error-500"/utf8>>}}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 95).
-spec xs_() -> size().
xs_() ->
{size, <<"max-w-6 h-6"/utf8>>, <<"max-w-2 h-2"/utf8>>}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 44).
-spec xs(u_i_avatar()) -> u_i_avatar().
xs(In) ->
{u_i_avatar, erlang:element(2, In), xs_(), erlang:element(4, In)}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 99).
-spec sm_() -> size().
sm_() ->
{size, <<"max-w-8 h-8"/utf8>>, <<"max-w-2.5 h-2.5"/utf8>>}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 48).
-spec sm(u_i_avatar()) -> u_i_avatar().
sm(In) ->
{u_i_avatar, erlang:element(2, In), sm_(), erlang:element(4, In)}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 103).
-spec md_() -> size().
md_() ->
{size, <<"max-w-10 h-10"/utf8>>, <<"max-w-3 h-3"/utf8>>}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 28).
-spec new(binary()) -> u_i_avatar().
new(Img) ->
{u_i_avatar, Img, md_(), none}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 52).
-spec md(u_i_avatar()) -> u_i_avatar().
md(In) ->
{u_i_avatar, erlang:element(2, In), md_(), erlang:element(4, In)}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 107).
-spec lg_() -> size().
lg_() ->
{size, <<"max-w-12 h-12"/utf8>>, <<"max-w-3.5 h-3.5"/utf8>>}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 56).
-spec lg(u_i_avatar()) -> u_i_avatar().
lg(In) ->
{u_i_avatar, erlang:element(2, In), lg_(), erlang:element(4, In)}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 111).
-spec xl_() -> size().
xl_() ->
{size, <<"max-w-14 h-14"/utf8>>, <<"max-w-4 h-4"/utf8>>}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 60).
-spec xl(u_i_avatar()) -> u_i_avatar().
xl(In) ->
{u_i_avatar, erlang:element(2, In), xl_(), erlang:element(4, In)}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 115).
-spec xxl_() -> size().
xxl_() ->
{size, <<"max-w-16 h-16"/utf8>>, <<"max-w-4.5 h-4.5"/utf8>>}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 64).
-spec xxl(u_i_avatar()) -> u_i_avatar().
xxl(In) ->
{u_i_avatar, erlang:element(2, In), xxl_(), erlang:element(4, In)}.
-file("src\\gbr\\ui\\admin\\avatar.gleam", 119).
-spec avatar_class(size()) -> binary().
avatar_class(Size) ->
gleam@string:join(
[<<"relative w-full"/utf8>>,
erlang:element(2, Size),
<<"rounded-full"/utf8>>],
<<" "/utf8>>
).
-file("src\\gbr\\ui\\admin\\avatar.gleam", 68).
-spec render(u_i_avatar()) -> lustre@vdom@vnode:element(any()).
render(Avatar) ->
{u_i_avatar, Img, Size, State} = Avatar,
lustre@element@html:span(
[lustre@attribute:class(avatar_class(Size))],
[lustre@element@html:img(
[lustre@attribute:class(<<"overflow-hidden rounded-full"/utf8>>),
lustre@attribute:src(Img),
lustre@attribute:alt(<<"Avatar"/utf8>>)]
),
case State of
{some, Classes} ->
lustre@element@html:span(
[lustre@attribute:class(Classes),
lustre@attribute:class(erlang:element(3, Size)),
lustre@attribute:class(
<<"absolute bottom-0 right-0 w-full rounded-full border-[1.5px] border-white dark:border-gray-900"/utf8>>
)],
[]
);
none ->
lustre@element:none()
end]
).