memEx/lib/memex_web/components/topbar.ex

101 lines
3.3 KiB
Elixir
Raw Normal View History

2023-02-26 00:47:51 -05:00
defmodule MemexWeb.Components.Topbar do
2022-02-25 21:55:27 -05:00
@moduledoc """
Component that renders a topbar with user functions/links
"""
2023-02-26 00:47:51 -05:00
use MemexWeb, :component
2022-02-25 21:55:27 -05:00
2023-02-26 00:47:51 -05:00
alias Memex.Accounts
alias MemexWeb.{Endpoint, HomeLive}
2022-02-25 21:55:27 -05:00
def topbar(assigns) do
assigns =
%{results: [], title_content: nil, flash: nil, current_user: nil} |> Map.merge(assigns)
~H"""
<nav role="navigation" class="mb-8 px-8 py-4 w-full bg-primary-400">
<div class="flex flex-col sm:flex-row justify-between items-center">
<div class="mb-4 sm:mb-0 sm:mr-8 flex flex-row justify-start items-center space-x-2">
2023-01-26 00:28:34 -05:00
<.link
navigate={Routes.live_path(Endpoint, HomeLive)}
class="mx-2 my-1 leading-5 text-xl text-white hover:underline"
>
2023-02-26 00:47:51 -05:00
<%= gettext("Memex") %>
2023-01-26 00:28:34 -05:00
</.link>
2022-02-25 21:55:27 -05:00
<%= if @title_content do %>
<span class="mx-2 my-1">
|
</span>
<%= @title_content %>
<% end %>
</div>
<hr class="mb-2 sm:hidden hr-light" />
2022-05-05 21:07:02 -04:00
<ul class="flex flex-row flex-wrap justify-center items-center
text-lg text-white text-ellipsis">
2022-02-25 21:55:27 -05:00
<%= if @current_user do %>
2023-02-04 09:16:51 -05:00
<li :if={@current_user.role == :admin} class="mx-2 my-1">
<.link
navigate={Routes.invite_index_path(Endpoint, :index)}
class="text-white text-white hover:underline"
>
<%= gettext("Invites") %>
</.link>
</li>
2022-02-25 21:55:27 -05:00
<li class="mx-2 my-1">
2023-01-26 00:28:34 -05:00
<.link
2023-02-26 00:37:07 -05:00
href={Routes.user_settings_path(Endpoint, :edit)}
2023-01-26 00:28:34 -05:00
class="text-white text-white hover:underline truncate"
>
<%= @current_user.email %>
</.link>
2022-02-25 21:55:27 -05:00
</li>
<li class="mx-2 my-1">
2023-01-26 00:28:34 -05:00
<.link
href={Routes.user_session_path(Endpoint, :delete)}
method="delete"
data-confirm={dgettext("prompts", "Are you sure you want to log out?")}
>
2022-02-25 21:55:27 -05:00
<i class="fas fa-sign-out-alt"></i>
2023-01-26 00:28:34 -05:00
</.link>
2022-02-25 21:55:27 -05:00
</li>
2023-02-04 09:16:51 -05:00
<li
:if={
@current_user.role == :admin and function_exported?(Routes, :live_dashboard_path, 2)
}
class="mx-2 my-1"
>
<.link
navigate={Routes.live_dashboard_path(Endpoint, :home)}
class="text-white text-white hover:underline"
>
<i class="fas fa-gauge"></i>
</.link>
</li>
2022-02-25 21:55:27 -05:00
<% else %>
2023-02-04 09:16:51 -05:00
<li :if={Accounts.allow_registration?()} class="mx-2 my-1">
<.link
2023-02-26 00:37:07 -05:00
href={Routes.user_registration_path(Endpoint, :new)}
2023-02-04 09:16:51 -05:00
class="text-white text-white hover:underline truncate"
>
<%= dgettext("actions", "Register") %>
</.link>
</li>
2022-02-25 21:55:27 -05:00
<li class="mx-2 my-1">
2023-01-26 00:28:34 -05:00
<.link
2023-02-26 00:37:07 -05:00
href={Routes.user_session_path(Endpoint, :new)}
2023-01-26 00:28:34 -05:00
class="text-white text-white hover:underline truncate"
>
<%= dgettext("actions", "Log in") %>
</.link>
2022-02-25 21:55:27 -05:00
</li>
<% end %>
</ul>
</div>
</nav>
"""
end
end