sloane.sh/lib/sloane_sh/layouts/partials.ex

35 lines
1 KiB
Elixir
Raw Normal View History

defmodule SloaneSH.Layouts.Partials do
@moduledoc """
HTML partials for use in HTML layouts
"""
2024-02-23 22:41:26 -05:00
require EEx
2024-02-23 22:41:26 -05:00
EEx.function_from_string(
:def,
:header,
~S"""
2024-02-24 10:32:07 -05:00
<header class="flex flex-row justify-between gap-2 border-b border-neutral-700 pb-4 mb-2" data-pagefind-ignore>
<div class="flex flex-col gap-2">
2024-02-24 08:43:08 -05:00
<a href="/"><h1 class="text-2xl">sloane.sh</h1></a>
2024-02-24 10:32:07 -05:00
<nav class="flex flex-row gap-2 text-xl">
<a href="/" class="<%= cx(underline: attrs[:permalink] == "/") %>">home</a>
2024-02-24 10:32:07 -05:00
<a href="/posts" class="<%= cx(underline: Map.get(attrs, :permalink, "") =~ ~r[^/posts]) %>">posts</a>
<a href="/search" class="<%= cx(underline: attrs[:permalink] == "/search") %>">search</a>
2024-02-23 22:41:26 -05:00
</nav>
2024-02-24 08:43:08 -05:00
</div>
</header>
2024-02-23 22:41:26 -05:00
""",
[:ctx, :attrs]
)
defp cx(classes) do
classes
|> Enum.map(fn
{_, _} = t -> t
c -> {c, true}
end)
|> Enum.filter(fn {_, v} -> !!v end)
|> Enum.map_join(" ", fn {class, _} -> class end)
end
end