Surface vs LiveView

@msaraiva @derek-zhou

Maybe I’ve misread Surface entirely and in that case I apologize from the bottom of my heart :bowing_man:

otherwise I’m wondering whether you would have 1-2 best practices you’d recommend regarding apps using something like

Issues in particular:

  1. LAYOUT I’m making great strides into “componentizing” Adam’s wonderful design - and using Surface certainly adds to the fun :heart: (my elixir-fu hardly affords offering the result in a public repo like surface-tailwind, but I’ll let you be the judges of that shortly) but I’m very much questioning the use of a single ‘root’ element like yours in mail_liv.ex with 30-40 ‘if some action’ top-level components, and the live-controller-view-what-you-call-them would be humongous
def handle_params(_params, _url, %Socket{assigns: %{live_action: :set_password}} = socket) do
    user = System.get_env("USER")

    {
      :noreply,
      socket
      |> clear_flash()
      |> assign(
        info: "Set password of #{user}",
        page_title: "Set password of #{user}",
        password_hash: nil,
        saved_password: "",
        password_prompt: "Pick a password: ",
        buttons: []
      )
    }
  end
  1. LINKS I’ve devoured your LIV repo, @derek-zhou and that seems to lean heavy on a kind of SPA concept but I’ve had a hard time finding the “links” where the user will LiveRedirect sort-of :slightly_frowning_face: