defmodule Observer.Web.Layouts do @moduledoc """ This module provides layouts ## References: * https://github.com/oban-bg/oban_web/blob/main/lib/oban/web/components/layouts.ex """ use Observer.Web, :html alias Observer.Web.Components.Icons @static_path Application.app_dir(:observer_web, ["priv", "static"]) @external_resource Path.join(@static_path, "app.css") @external_resource Path.join(@static_path, "app.js") @css @static_path |> Path.join("app.css") |> File.read!() @js @static_path |> Path.join("app.js") |> File.read!() def render("app.css"), do: @css def render("app.js"), do: @js embed_templates "layouts/*" def logo(assigns) do ~H"""

Observer WEB

""" end def nav(assigns) do ~H""" """ end def footer(assigns) do assigns = assign(assigns, oss_version: Application.spec(:observer_web, :vsn) ) ~H""" """ end attr :name, :string attr :version, :string defp version(assigns) do ~H""" {@name} {if @version, do: "v#{@version}", else: "–"} """ end defp link_class(curr, page) do base = "flex items-center px-4 py-2.5 text-sm font-bold transition-all duration-200 text-gray-900 rounded-lg group" if curr == page do base <> " bg-gray-100" else base <> " hover:text-white hover:bg-indigo-500" end end end