memEx/lib/memex_web/components/topbar.ex
2022-11-03 18:23:17 -04:00

115 lines
4.1 KiB
Elixir
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

defmodule MemexWeb.Components.Topbar do
@moduledoc """
Component that renders a topbar with user functions/links
"""
use MemexWeb, :component
alias Memex.Accounts
alias MemexWeb.{Endpoint, HomeLive}
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-900 text-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">
<%= live_redirect("memex",
to: Routes.live_path(Endpoint, HomeLive),
class: "mx-2 my-1 leading-5 text-xl text-primary-400 hover:underline"
) %>
<%= if @title_content do %>
<span class="mx-2 my-1">
|
</span>
<%= @title_content %>
<% end %>
</div>
<hr class="mb-2 sm:hidden hr-light" />
<ul class="flex flex-row flex-wrap justify-center items-center
text-lg text-primary-400 text-ellipsis">
<%= if @current_user do %>
<li class="mx-2 my-1">
<%= live_redirect(gettext("Notes"),
to: Routes.note_index_path(Endpoint, :index),
class: "text-primary-400 text-primary-400 hover:underline truncate"
) %>
</li>
<li class="mx-2 my-1">
<%= live_redirect(gettext("Contexts"),
to: Routes.context_index_path(Endpoint, :index),
class: "text-primary-400 text-primary-400 hover:underline truncate"
) %>
</li>
<li class="mx-2 my-1">
<%= live_redirect(gettext("Pipelines"),
to: Routes.pipeline_index_path(Endpoint, :index),
class: "text-primary-400 text-primary-400 hover:underline truncate"
) %>
</li>
<li class="mx-2 my-1 border-left border border-primary-400"></li>
<%= if @current_user.role == :admin do %>
<li class="mx-2 my-1">
<%= live_redirect(gettext("Invites"),
to: Routes.invite_index_path(Endpoint, :index),
class: "text-primary-400 text-primary-400 hover:underline"
) %>
</li>
<% end %>
<li class="mx-2 my-1">
<%= live_redirect(@current_user.email,
to: Routes.user_settings_path(Endpoint, :edit),
class: "text-primary-400 text-primary-400 hover:underline truncate"
) %>
</li>
<li class="mx-2 my-1">
<%= link to: Routes.user_session_path(Endpoint, :delete),
method: :delete,
data: [confirm: dgettext("prompts", "Are you sure you want to log out?")] do %>
<i class="fas fa-sign-out-alt"></i>
<% end %>
</li>
<%= if @current_user.role == :admin and function_exported?(Routes, :live_dashboard_path, 2) do %>
<li class="mx-2 my-1">
<%= live_redirect to: Routes.live_dashboard_path(Endpoint, :home),
class: "text-primary-400 text-primary-400 hover:underline" do %>
<i class="fas fa-gauge"></i>
<% end %>
</li>
<% end %>
<% else %>
<%= if Accounts.allow_registration?() do %>
<li class="mx-2 my-1">
<%= live_redirect(dgettext("actions", "Register"),
to: Routes.user_registration_path(Endpoint, :new),
class: "text-primary-400 text-primary-400 hover:underline truncate"
) %>
</li>
<% end %>
<li class="mx-2 my-1">
<%= live_redirect(dgettext("actions", "Log in"),
to: Routes.user_session_path(Endpoint, :new),
class: "text-primary-400 text-primary-400 hover:underline truncate"
) %>
</li>
<% end %>
</ul>
</div>
</nav>
"""
end
end