The Phoenix LiveView adapter for AshUi.
It discovers the routed screens in your Ash domains and mounts each one through a shared LiveView. For every screen it supplies the session, runs bound actions, reloads rows on notifications, and sends minimal LiveView diffs. The screens' UI structure and state stay in their resources.
def deps do
[
{:ash_ui, "~> 0.1.0"},
{:ash_ui_phoenix, "~> 0.1.0"}
]
endMount a domain's screens from the router:
defmodule MyAppWeb.Router do
use AshUi.Phoenix.Router, presets: []
ash_ui_browser_pipeline()
scope "/" do
pipe_through :browser
ash_ui_routes domains: [MyApp.Ui]
end
endServe the client runtime (phoenix.min.js, phoenix_live_view.min.js, and
ash_ui.min.js under /assets) from your endpoint:
plug AshUi.Phoenix.AssetsThe host keeps its endpoint, PubSub, sessions, authentication, and other
static assets. Screens declare their addresses with routes do and mount
through their own create :mount action. Route and query values bind to
mount arguments by name.
Authentication (optional)
The adapter doesn't require an authentication library. Without one, each
LiveView session carries the Ash tenant and context from the conn, and your
own on_mount hooks assign the actor.
To use AshAuthentication,
add {:ash_authentication_phoenix, "~> 2.0"} to your deps and enable the
preset. The adapter then resolves the signed-in user for every session, and
ash_ui_authentication_routes/1 mounts the sign-in, sign-out and callback
routes:
use AshUi.Phoenix.Router, presets: [AshUi.Phoenix.Presets.AshAuthentication]See DESIGN.md §8 for the adapter contract.