diff --git a/lib/freedive_web/components/layouts/app.html.heex b/lib/freedive_web/components/layouts/app.html.heex index 42d93de..8088cb3 100644 --- a/lib/freedive_web/components/layouts/app.html.heex +++ b/lib/freedive_web/components/layouts/app.html.heex @@ -60,18 +60,30 @@ <.navbar_item has-dropdown is-hoverable> <.navbar_link> + + System <.navbar_dropdown> - <%!-- <.navbar_item> - <.link>Software Updates - + <.link href={~p"/updates"} class="navbar-item"> + + + + Software updates + <.navbar_divider /> - <.navbar_item> - <.link>Packages - --%> + <.link href={~p"/packages"} class="navbar-item"> + + + + Packages + <.link href={~p"/services"} class="navbar-item"> + + + Services @@ -79,20 +91,29 @@ <% end %> <.navbar_item has-dropdown is-hoverable> <.navbar_link> + + + Account <.navbar_dropdown> <%= if @current_user do %> <.link href={~p"/users/settings"} class="navbar-item"> + + + Settings <.link href={~p"/users/log_out"} method="delete" class="navbar-item"> + + + Log out <% else %> <.link href={~p"/users/log_in"} class="navbar-item"> - Log in + + Log in <% end %> diff --git a/lib/freedive_web/components/liliform.ex b/lib/freedive_web/components/liliform.ex index 78d3840..63bc131 100644 --- a/lib/freedive_web/components/liliform.ex +++ b/lib/freedive_web/components/liliform.ex @@ -204,6 +204,28 @@ defmodule Liliform.Components do """ end + @doc """ + Renders control. + """ + attr :class, :string, default: nil, doc: "the optional class of the control" + attr :rest, :global, doc: "the arbitrary HTML attributes to add to the control" + + slot :inner_block, required: true, doc: "the inner block that renders the control content" + + def control(assigns) do + assigns = + assigns + |> extend_class("control") + |> set_phx_attributes() + |> set_bulma_classes() + + ~H""" +
+ <%= render_slot(@inner_block) %> +
+ """ + end + @doc """ Renders section. """ @@ -864,6 +886,94 @@ defmodule Liliform.Components do """ end + @doc """ + Renders a panel. + """ + attr :class, :string, default: nil, doc: "the optional class of the panel" + attr :rest, :global, doc: "the arbitrary HTML attributes to add to the panel" + + slot :inner_block, required: true, doc: "the inner block that renders the panel content" + + def panel(assigns) do + assigns = + assigns + |> extend_class("panel") + |> set_phx_attributes() + |> set_bulma_classes() + + ~H""" ++ <%= render_slot(@inner_block) %> +
+ """ + end + + @doc """ + Renders a panel-tabs. + """ + attr :class, :string, default: nil, doc: "the optional class of the panel-tabs" + attr :rest, :global, doc: "the arbitrary HTML attributes to add to the panel-tabs" + + slot :inner_block, required: true, doc: "the inner block that renders the panel-tabs content" + + def panel_tabs(assigns) do + assigns = + assigns + |> extend_class("panel-tabs") + |> set_phx_attributes() + |> set_bulma_classes() + + ~H""" ++ <%= render_slot(@inner_block) %> +
+ """ + end + + @doc """ + Renders a panel-block. + """ + attr :class, :string, default: nil, doc: "the optional class of the panel-block" + attr :rest, :global, doc: "the arbitrary HTML attributes to add to the panel-block" + + slot :inner_block, required: true, doc: "the inner block that renders the panel-block content" + + def panel_block(assigns) do + assigns = + assigns + |> extend_class("panel-block") + |> set_phx_attributes() + |> set_bulma_classes() + + ~H""" +