From 654b172ddb68734dfc70116ecaf042a6fe677aaa Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Mon, 16 Mar 2026 11:37:29 +0000 Subject: [PATCH] Fix UI inconsistencies across templates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace .separator with .dropdown_separator in 4 dropdown menus - Change gray-* to zinc-* color classes in online store templates - Wrap hardcoded page titles in gettext() in online store templates - Add consistent dark:text-zinc-200 to maintenance h3 subsections - Add text-zinc-900 dark:text-zinc-200 to scrobble section headers - Fix heading hierarchy (h1/h2 → h2/h3) in record set items - Align artist form modal header to text-lg font-semibold - Use size="xs" prop instead of class override on format badge - Add external link icon to wishlist online store buttons --- .../components/record_components.ex | 2 +- lib/music_library_web/live/artist_live/form.ex | 2 +- .../live/maintenance_live/index.ex | 10 +++++----- .../live/online_store_template_live/index.ex | 16 ++++++++-------- .../live/record_set_live/index.ex | 10 +++++----- .../live/record_set_live/show.ex | 10 +++++----- .../live/scrobble_live/index.ex | 4 +++- lib/music_library_web/live/scrobble_live/show.ex | 4 +++- .../live/scrobble_rules_live/index.ex | 2 +- lib/music_library_web/live/wishlist_live/show.ex | 5 +++++ priv/gettext/default.pot | 10 ++++++++++ priv/gettext/en/LC_MESSAGES/default.po | 10 ++++++++++ .../live/record_set_live/show_test.exs | 4 ++-- 13 files changed, 59 insertions(+), 30 deletions(-) diff --git a/lib/music_library_web/components/record_components.ex b/lib/music_library_web/components/record_components.ex index 8c82c796..e1aef7e0 100644 --- a/lib/music_library_web/components/record_components.ex +++ b/lib/music_library_web/components/record_components.ex @@ -407,7 +407,7 @@ defmodule MusicLibraryWeb.RecordComponents do defp format_badge(assigns) do ~H""" - <.badge class="text-xs md:text-sm"> + <.badge size="xs"> {@release |> ReleaseSearchResult.format() |> format_label()} """ diff --git a/lib/music_library_web/live/artist_live/form.ex b/lib/music_library_web/live/artist_live/form.ex index 64a3a7a2..314bb087 100644 --- a/lib/music_library_web/live/artist_live/form.ex +++ b/lib/music_library_web/live/artist_live/form.ex @@ -20,7 +20,7 @@ defmodule MusicLibraryWeb.ArtistLive.Form do ~H"""
-

+

{@artist.name}

diff --git a/lib/music_library_web/live/maintenance_live/index.ex b/lib/music_library_web/live/maintenance_live/index.ex index c8f36e20..04b9bb98 100644 --- a/lib/music_library_web/live/maintenance_live/index.ex +++ b/lib/music_library_web/live/maintenance_live/index.ex @@ -21,7 +21,7 @@ defmodule MusicLibraryWeb.MaintenanceLive.Index do

{gettext("Maintenance")}

-

+

{gettext("Records")}

@@ -61,7 +61,7 @@ defmodule MusicLibraryWeb.MaintenanceLive.Index do -

+

{gettext("Artists")}

@@ -127,7 +127,7 @@ defmodule MusicLibraryWeb.MaintenanceLive.Index do -

+

{gettext("Database")}

@@ -156,7 +156,7 @@ defmodule MusicLibraryWeb.MaintenanceLive.Index do -

+

{gettext("Assets")}

@@ -187,7 +187,7 @@ defmodule MusicLibraryWeb.MaintenanceLive.Index do -

+

{gettext("Emails")}

diff --git a/lib/music_library_web/live/online_store_template_live/index.ex b/lib/music_library_web/live/online_store_template_live/index.ex index 6d02b865..403904f3 100644 --- a/lib/music_library_web/live/online_store_template_live/index.ex +++ b/lib/music_library_web/live/online_store_template_live/index.ex @@ -27,7 +27,7 @@ defmodule MusicLibraryWeb.OnlineStoreTemplateLive.Index do

    @@ -42,7 +42,7 @@ defmodule MusicLibraryWeb.OnlineStoreTemplateLive.Index do src={favicon_url(template.url_template)} alt={template.name} /> -

    +

    {template.name}

    <.badge :if={template.enabled} color="success"> @@ -52,10 +52,10 @@ defmodule MusicLibraryWeb.OnlineStoreTemplateLive.Index do {gettext("Disabled")}
-
+

{template.url_template}

-

+

{template.description}

@@ -83,7 +83,7 @@ defmodule MusicLibraryWeb.OnlineStoreTemplateLive.Index do > {gettext("Edit")} - <.separator /> + <.dropdown_separator /> <.dropdown_button phx-click="delete" phx-value-id={template.id} @@ -133,19 +133,19 @@ defmodule MusicLibraryWeb.OnlineStoreTemplateLive.Index do defp apply_action(socket, :edit, %{"id" => id}) do socket - |> assign(:page_title, "Edit Online Store Template") + |> assign(:page_title, gettext("Edit Online Store Template")) |> assign(:template, OnlineStoreTemplates.get_template!(id)) end defp apply_action(socket, :new, _params) do socket - |> assign(:page_title, "New Online Store Template") + |> assign(:page_title, gettext("New Online Store Template")) |> assign(:template, %OnlineStoreTemplate{}) end defp apply_action(socket, :index, _params) do socket - |> assign(:page_title, "Online Store Templates") + |> assign(:page_title, gettext("Online Store Templates")) |> assign(:template, nil) end diff --git a/lib/music_library_web/live/record_set_live/index.ex b/lib/music_library_web/live/record_set_live/index.ex index 53642540..437cfc65 100644 --- a/lib/music_library_web/live/record_set_live/index.ex +++ b/lib/music_library_web/live/record_set_live/index.ex @@ -311,7 +311,7 @@ defmodule MusicLibraryWeb.RecordSetLive.Index do > {gettext("Edit")} - <.separator /> + <.dropdown_separator /> <.dropdown_button phx-click="delete_set" phx-value-id={@record_set.id} @@ -387,12 +387,12 @@ defmodule MusicLibraryWeb.RecordSetLive.Index do aria-hidden="true" /> -

+

<.artist_links joinphrase_class="text-sm" artists={item.record.artists} /> -

-

- {item.record.title}

+

+ {item.record.title} +

{format_label(item.record.format)} · {type_label(item.record.type)}

diff --git a/lib/music_library_web/live/record_set_live/show.ex b/lib/music_library_web/live/record_set_live/show.ex index 672a8762..bfb8de0b 100644 --- a/lib/music_library_web/live/record_set_live/show.ex +++ b/lib/music_library_web/live/record_set_live/show.ex @@ -41,7 +41,7 @@ defmodule MusicLibraryWeb.RecordSetLive.Show do > {gettext("Edit")} - <.separator /> + <.dropdown_separator /> <.dropdown_button phx-click="delete_set" data-confirm={gettext("Are you sure?")} @@ -122,12 +122,12 @@ defmodule MusicLibraryWeb.RecordSetLive.Show do aria-hidden="true" /> -

+

<.artist_links joinphrase_class="text-sm" artists={item.record.artists} /> -

-

- {item.record.title}

+

+ {item.record.title} +

{format_label(item.record.format)} · {type_label(item.record.type)}

diff --git a/lib/music_library_web/live/scrobble_live/index.ex b/lib/music_library_web/live/scrobble_live/index.ex index e6e200e4..7658acc4 100644 --- a/lib/music_library_web/live/scrobble_live/index.ex +++ b/lib/music_library_web/live/scrobble_live/index.ex @@ -22,7 +22,9 @@ defmodule MusicLibraryWeb.ScrobbleLive.Index do <%= if @search_results != [] && @selected_release_group == nil do %>
-

{gettext("Release Groups")}

+

+ {gettext("Release Groups")} +

    -

    {gettext("Tracks")}

    +

    + {gettext("Tracks")} +

    <.button :if={@can_scrobble} diff --git a/lib/music_library_web/live/scrobble_rules_live/index.ex b/lib/music_library_web/live/scrobble_rules_live/index.ex index 0b779cd6..560637f9 100644 --- a/lib/music_library_web/live/scrobble_rules_live/index.ex +++ b/lib/music_library_web/live/scrobble_rules_live/index.ex @@ -134,7 +134,7 @@ defmodule MusicLibraryWeb.ScrobbleRulesLive.Index do > {gettext("Edit")} - <.separator /> + <.dropdown_separator /> <.dropdown_button phx-click="delete" phx-value-id={scrobble_rule.id} diff --git a/lib/music_library_web/live/wishlist_live/show.ex b/lib/music_library_web/live/wishlist_live/show.ex index 435c6365..ade0ff80 100644 --- a/lib/music_library_web/live/wishlist_live/show.ex +++ b/lib/music_library_web/live/wishlist_live/show.ex @@ -234,6 +234,11 @@ defmodule MusicLibraryWeb.WishlistLive.Show do {template.name} + <.icon + name="hero-arrow-top-right-on-square" + class="h-3.5 w-3.5 text-zinc-400" + aria-hidden="true" + />
    diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 0285a483..7fb2ba8a 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -2293,3 +2293,13 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Timestamp" msgstr "" + +#: lib/music_library_web/live/online_store_template_live/index.ex +#, elixir-autogen, elixir-format +msgid "Edit Online Store Template" +msgstr "" + +#: lib/music_library_web/live/online_store_template_live/index.ex +#, elixir-autogen, elixir-format +msgid "New Online Store Template" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 4520c3ed..31a2bbfd 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -2293,3 +2293,13 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Timestamp" msgstr "" + +#: lib/music_library_web/live/online_store_template_live/index.ex +#, elixir-autogen, elixir-format +msgid "Edit Online Store Template" +msgstr "" + +#: lib/music_library_web/live/online_store_template_live/index.ex +#, elixir-autogen, elixir-format +msgid "New Online Store Template" +msgstr "" diff --git a/test/music_library_web/live/record_set_live/show_test.exs b/test/music_library_web/live/record_set_live/show_test.exs index ca5e9586..5512a6ec 100644 --- a/test/music_library_web/live/record_set_live/show_test.exs +++ b/test/music_library_web/live/record_set_live/show_test.exs @@ -28,8 +28,8 @@ defmodule MusicLibraryWeb.RecordSetLive.ShowTest do conn |> visit(~p"/record-sets/#{set}") - |> assert_has("h2", escape(r1.title)) - |> assert_has("h2", escape(r2.title)) + |> assert_has("h3", escape(r1.title)) + |> assert_has("h3", escape(r2.title)) end test "shows add record tile when set has no records", %{conn: conn} do