diff --git a/lib/music_library_web/components/notes_component.ex b/lib/music_library_web/components/notes_component.ex
new file mode 100644
index 00000000..d501b9db
--- /dev/null
+++ b/lib/music_library_web/components/notes_component.ex
@@ -0,0 +1,76 @@
+defmodule MusicLibraryWeb.NotesComponent do
+ use MusicLibraryWeb, :live_component
+
+ alias MusicLibrary.Records
+
+ def open(id), do: Fluxon.open_dialog(id)
+
+ @impl true
+ def update(assigns, socket) do
+ changeset =
+ assigns.record
+ |> Records.change_record()
+
+ {:ok,
+ socket
+ |> assign(assigns)
+ |> assign(:form, to_form(changeset))}
+ end
+
+ @impl true
+ def render(assigns) do
+ ~H"""
+
+ <.sheet
+ id={@sheet_id}
+ placement="right"
+ class="min-w-xs sm:min-w-sm"
+ >
+ <.simple_form
+ for={@form}
+ id="record-notes-form"
+ phx-target={@myself}
+ phx-change="validate"
+ phx-auto-recover="recover_form"
+ phx-submit="save"
+ >
+ <.textarea class="w-full h-96" field={@form[:notes]} label={gettext("Notes")} />
+ <:actions>
+
+ <.button
+ variant="solid"
+ class="w-full md:w-auto"
+ phx-disable-with={gettext("Saving...")}
+ >
+ {gettext("Save")}
+
+
+
+
+
+
+ """
+ end
+
+ @impl true
+ def handle_event("validate", %{"record" => record_params}, socket) do
+ changeset = Records.change_record(socket.assigns.record, record_params)
+ {:noreply, assign(socket, form: to_form(changeset, action: :validate))}
+ end
+
+ def handle_event("save", %{"record" => record_params}, socket) do
+ case Records.update_record(socket.assigns.record, record_params) do
+ {:ok, _record} ->
+ {:noreply,
+ socket
+ |> put_toast(:info, gettext("Record updated successfully"))}
+
+ {:error, %Ecto.Changeset{} = changeset} ->
+ {:noreply, assign(socket, form: to_form(changeset))}
+ end
+ end
+
+ def handle_event("recover_form", params, socket) do
+ handle_event("validate", params, socket)
+ end
+end
diff --git a/lib/music_library_web/live/collection_live/show.html.heex b/lib/music_library_web/live/collection_live/show.html.heex
index c8931084..e4fb14bf 100644
--- a/lib/music_library_web/live/collection_live/show.html.heex
+++ b/lib/music_library_web/live/collection_live/show.html.heex
@@ -25,6 +25,18 @@
+
+<.live_component
+ id="record-notes"
+ sheet_id="record-notes-sheet"
+ module={MusicLibraryWeb.NotesComponent}
+ record={@record}
+/>
+
<.structured_modal
:if={@live_action == :edit}
id="record-modal"
diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot
index b933b3ae..8a76ec67 100644
--- a/priv/gettext/default.pot
+++ b/priv/gettext/default.pot
@@ -155,17 +155,20 @@ msgstr ""
msgid "Record imported successfully"
msgstr ""
+#: lib/music_library_web/components/notes_component.ex
#: lib/music_library_web/components/record_form_component.ex
#, elixir-autogen, elixir-format
msgid "Record updated successfully"
msgstr ""
+#: lib/music_library_web/components/notes_component.ex
#: lib/music_library_web/components/record_form_component.ex
#: lib/music_library_web/live/artist_live/form_component.ex
#, elixir-autogen, elixir-format
msgid "Save"
msgstr ""
+#: lib/music_library_web/components/notes_component.ex
#: lib/music_library_web/components/record_form_component.ex
#: lib/music_library_web/live/artist_live/form_component.ex
#: lib/music_library_web/live/online_store_template_live/form_component.ex
@@ -1310,3 +1313,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "No records released on this day."
msgstr ""
+
+#: lib/music_library_web/components/notes_component.ex
+#, elixir-autogen, elixir-format
+msgid "Notes"
+msgstr ""
+
+#: lib/music_library_web/live/collection_live/show.html.heex
+#, elixir-autogen, elixir-format
+msgid "Open Notes"
+msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po
index f44873da..bac31085 100644
--- a/priv/gettext/en/LC_MESSAGES/default.po
+++ b/priv/gettext/en/LC_MESSAGES/default.po
@@ -155,17 +155,20 @@ msgstr ""
msgid "Record imported successfully"
msgstr ""
+#: lib/music_library_web/components/notes_component.ex
#: lib/music_library_web/components/record_form_component.ex
#, elixir-autogen, elixir-format
msgid "Record updated successfully"
msgstr ""
+#: lib/music_library_web/components/notes_component.ex
#: lib/music_library_web/components/record_form_component.ex
#: lib/music_library_web/live/artist_live/form_component.ex
#, elixir-autogen, elixir-format
msgid "Save"
msgstr ""
+#: lib/music_library_web/components/notes_component.ex
#: lib/music_library_web/components/record_form_component.ex
#: lib/music_library_web/live/artist_live/form_component.ex
#: lib/music_library_web/live/online_store_template_live/form_component.ex
@@ -1310,3 +1313,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "No records released on this day."
msgstr ""
+
+#: lib/music_library_web/components/notes_component.ex
+#, elixir-autogen, elixir-format
+msgid "Notes"
+msgstr ""
+
+#: lib/music_library_web/live/collection_live/show.html.heex
+#, elixir-autogen, elixir-format
+msgid "Open Notes"
+msgstr ""