+ <.header>
+ Listing Users
+ <:actions>
+ <.button variant="primary" navigate={~p"/users/new"}>
+ <.icon name="hero-plus" /> New User
+
+
+
+
+ <.table
+ id="users"
+ rows={@streams.users}
+ row_click={fn {_id, user} -> JS.navigate(~p"/users/#{user}") end}
+ >
+ <:col :let={{_id, user}} label="Id">{user.id}
+
+ <:col :let={{_id, user}} label="Email">{user.email}
+
+ <:action :let={{_id, user}}>
+
+ <.link navigate={~p"/users/#{user}"}>Show
+
+
+ <.link navigate={~p"/users/#{user}/edit"}>Edit
+
+
+ <:action :let={{id, user}}>
+ <.link
+ phx-click={JS.push("delete", value: %{id: user.id}) |> hide("##{id}")}
+ data-confirm="Are you sure?"
+ >
+ Delete
+
+
+
+
+ """
+ end
+
+ @impl true
+ def mount(_params, _session, socket) do
+ {:ok,
+ socket
+ |> assign(:page_title, "Listing Users")
+ |> stream(:users, Ash.read!(Mv.Accounts.User))}
+ end
+
+ @impl true
+ def handle_event("delete", %{"id" => id}, socket) do
+ user = Ash.get!(Mv.Accounts.User, id)
+ Ash.destroy!(user)
+
+ {:noreply, stream_delete(socket, :users, user)}
+ end
+end
diff --git a/lib/mv_web/live/user_live/show.ex b/lib/mv_web/live/user_live/show.ex
new file mode 100644
index 0000000..f2fa602
--- /dev/null
+++ b/lib/mv_web/live/user_live/show.ex
@@ -0,0 +1,38 @@
+defmodule MvWeb.UserLive.Show do
+ use MvWeb, :live_view
+
+ @impl true
+ def render(assigns) do
+ ~H"""
+