ash_hq/lib/ash_hq_web/components/right_nav.ex

65 lines
2.1 KiB
Elixir
Raw Normal View History

2022-04-01 05:36:44 +13:00
defmodule AshHqWeb.Components.RightNav do
@moduledoc "The right nav shown for functions in a module."
2022-04-01 05:36:44 +13:00
use Surface.Component
prop functions, :list, default: []
prop module, :string, required: true
2022-04-01 05:36:44 +13:00
def render(assigns) do
~F"""
<style>
a[aria-current] {
@apply text-primary-light-600;
}
:global(:dark):a[aria-current] {
@apply text-primary-dark-400;
}
</style>
<div id="right-nav" class="scroll-parent w-min hidden lg:flex flex-col pb-12" phx-hook="RightNav">
2022-09-08 15:02:18 +12:00
<a id="right-nav-module-docs" class="hover:text-primary-light-300 right-nav" href="#module-docs">
2022-04-01 09:59:53 +13:00
{@module}
</a>
2022-09-16 10:35:33 +12:00
{#for %{type: :type} = function <- @functions}
<a
id={"right-nav-type-#{function.sanitized_name}-#{function.arity}"}
2022-09-16 10:35:33 +12:00
class="hover:text-primary-light-300 right-nav"
href={"#type-#{function.sanitized_name}-#{function.arity}"}
>
{"#{function.name}/#{function.arity}"}
</a>
{/for}
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-#{function.sanitized_name}-#{function.arity}"}
2022-09-08 15:02:18 +12:00
class="hover:text-primary-light-300 right-nav"
2022-09-13 11:36:28 +12:00
href={"#callback-#{function.sanitized_name}-#{function.arity}"}
2022-04-02 08:11:17 +13:00
>
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-#{function.sanitized_name}-#{function.arity}"}
2022-09-08 15:02:18 +12:00
class="hover:text-primary-light-300 right-nav"
2022-09-08 03:53:36 +12:00
href={"#function-#{function.sanitized_name}-#{function.arity}"}
2022-04-02 08:11:17 +13:00
>
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-#{function.sanitized_name}-#{function.arity}"}
2022-09-08 15:02:18 +12:00
class="hover:text-primary-light-300 right-nav"
href={"#macro-#{function.sanitized_name}-#{function.arity}"}
2022-04-02 08:11:17 +13:00
>
2022-04-01 05:36:44 +13:00
{"#{function.name}/#{function.arity}"}
</a>
{/for}
</div>
"""
end
end