Use Fluxon elements for universal search

This commit is contained in:
Claudio Ortolina
2025-07-05 19:28:57 +01:00
parent 16b6a5fd74
commit f5092e32c5
5 changed files with 18 additions and 39 deletions
@@ -38,10 +38,15 @@
</div> </div>
</div> </div>
<div class="flex space-x-2 md:space-x-4 items-center"> <div class="flex space-x-2 md:space-x-4 items-center">
<MusicLibraryWeb.SearchComponents.search_trigger <.button
variant="ghost"
title={gettext("Search (Ctrl+K)")}
phx-click="open_modal" phx-click="open_modal"
phx-target="#universal-search" phx-target="#universal-search"
/> >
<span class="sr-only">{gettext("Search (Ctrl+K)")}</span>
<.icon name="hero-magnifying-glass" class="h-5 w-5" />
</.button>
<.dropdown placement="bottom-end"> <.dropdown placement="bottom-end">
<:toggle> <:toggle>
<button class="flex items-center gap-x-2"> <button class="flex items-center gap-x-2">
@@ -9,37 +9,6 @@ defmodule MusicLibraryWeb.SearchComponents do
alias MusicLibrary.Records.Record alias MusicLibrary.Records.Record
@doc """
Renders a search trigger button that opens the universal search modal.
## Examples
<.search_trigger />
"""
attr :class, :string, default: ""
attr :rest, :global, include: ~w(phx-click phx-target)
def search_trigger(assigns) do
~H"""
<button
type="button"
class={[
"flex items-center justify-center h-9 w-9 rounded-lg",
"text-zinc-500 dark:text-zinc-400",
"hover:text-zinc-700 dark:hover:text-zinc-300",
"hover:bg-zinc-100 dark:hover:bg-zinc-800",
"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 dark:focus:ring-offset-zinc-900",
"transition-colors duration-200",
@class
]}
title="Search (Ctrl+K)"
{@rest}
>
<.icon name="hero-magnifying-glass" class="h-5 w-5" />
</button>
"""
end
@doc """ @doc """
Renders a search result item for records. Renders a search result item for records.
@@ -24,16 +24,11 @@
name="hero-magnifying-glass" name="hero-magnifying-glass"
class="absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-gray-400" class="absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-gray-400"
/> />
<input <.input
type="text"
name="query" name="query"
placeholder="Search records and artists..." placeholder="Search records and artists..."
value={@search_query} value={@search_query}
phx-debounce="300" phx-debounce="300"
class="w-full pl-10 pr-4 py-3 border border-gray-300 dark:border-gray-600 rounded-lg
bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100
focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:focus:ring-blue-400
placeholder-gray-500 dark:placeholder-gray-400"
phx-hook="SearchInput" phx-hook="SearchInput"
id="universal-search-input" id="universal-search-input"
/> />
+5
View File
@@ -1169,3 +1169,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "to open this search" msgid "to open this search"
msgstr "" msgstr ""
#: lib/music_library_web/components/layouts/app.html.heex
#, elixir-autogen, elixir-format
msgid "Search (Ctrl+K)"
msgstr ""
+5
View File
@@ -1169,3 +1169,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "to open this search" msgid "to open this search"
msgstr "" msgstr ""
#: lib/music_library_web/components/layouts/app.html.heex
#, elixir-autogen, elixir-format
msgid "Search (Ctrl+K)"
msgstr ""