ash_hq/lib/ash_hq_web/components/right_nav.ex

48 lines
1.6 KiB
Elixir
Raw Normal View History

2022-04-01 05:36:44 +13:00
defmodule AshHqWeb.Components.RightNav do
use Surface.Component
alias AshHqWeb.Routes
2022-04-01 09:59:53 +13:00
prop functions, :list, default: []
prop module, :string, required: true
2022-04-01 05:36:44 +13:00
def render(assigns) do
~F"""
2022-04-01 09:59:53 +13:00
<div id="right-nav" class="w-min hidden xl:flex flex-col overflow-y-scroll" phx-hook="RightNav">
<a id="right-nav-module-docs" class="hover:text-orange-300 right-nav" href="#module-docs">
{@module}
</a>
2022-04-01 14:29:58 +13:00
{#for %{type: :callback} = function <- @functions}
2022-04-02 08:11:17 +13:00
<a
id={"right-nav-callback-#{Routes.sanitize_name(function.name)}-#{function.arity}"}
class="hover:text-orange-300 right-nav"
href={"#function-#{Routes.sanitize_name(function.name)}-#{function.arity}"}
>
2022-04-01 14:29:58 +13:00
{"#{function.name}/#{function.arity}"}
</a>
{/for}
{#for %{type: :function} = function <- @functions}
2022-04-02 08:11:17 +13:00
<a
id={"right-nav-function-#{Routes.sanitize_name(function.name)}-#{function.arity}"}
class="hover:text-orange-300 right-nav"
href={"#macro-#{Routes.sanitize_name(function.name)}-#{function.arity}"}
>
2022-04-01 14:29:58 +13:00
{"#{function.name}/#{function.arity}"}
</a>
{/for}
{#for %{type: :macro} = function <- @functions}
2022-04-02 08:11:17 +13:00
<a
id={"right-nav-macro-#{Routes.sanitize_name(function.name)}-#{function.arity}"}
class="hover:text-orange-300 right-nav"
href={"#macro-#{Routes.sanitize_name(function.name)}-#{function.arity}"}
>
2022-04-01 05:36:44 +13:00
{"#{function.name}/#{function.arity}"}
</a>
{/for}
</div>
"""
end
end