defmodule AshHqWeb.Components.DocSidebar do use Surface.Component alias AshHqWeb.Routes alias Surface.Components.LivePatch prop class, :css_class, default: "" prop libraries, :list, required: true prop extension, :any, default: nil prop guide, :any, default: nil prop library, :any, default: nil prop library_version, :any, default: nil prop selected_versions, :map, default: %{} prop id, :string, required: true prop dsl, :any, required: true prop module, :any, required: true prop sidebar_state, :map, required: true prop collapse_sidebar, :event, required: true prop expand_sidebar, :event, required: true def render(assigns) do ~F""" """ end defp render_dsls(assigns, dsls, path) do ~F""" """ end def render_icon(assigns, "Resource") do ~F""" """ end def render_icon(assigns, "Api") do ~F""" """ end def render_icon(assigns, "DataLayer") do ~F""" """ end def render_icon(assigns, "Flow") do ~F""" """ end def render_icon(assigns, "Notifier") do ~F""" """ end def render_icon(assigns, "Registry") do ~F""" """ end def render_icon(assigns, _) do ~F""" """ end defp guides_by_category(guides) do guides |> Enum.group_by(& &1.category) |> Enum.sort_by(fn {category, _guides} -> Enum.find_index(["Guides", "Concepts", "Info"], &(&1 == category)) || :infinity end) |> Enum.map(fn {category, guides} -> {category, Enum.sort_by(guides, & &1.order)} end) end defp selected_version_name(library, selected_versions) do case Enum.find(library.versions, &(&1.id == selected_versions[library.id])) do nil -> nil version -> version.version end end defp get_extensions(library, selected_versions) do case Enum.find(library.versions, &(&1.id == selected_versions[library.id])) do nil -> [] version -> version.extensions end end end