 
       unquote(html_helpers())
     end
-  end<% end %>
+  end
 
-  def router do
+  def html do
     quote do
-      use Phoenix.Router, helpers: false
+      use Phoenix.Component
 
-      import Plug.Conn
-      import Phoenix.Controller<%= if @html do %>
-      import Phoenix.LiveView.Router<% end %>
+      # Import convenience functions from controllers
+      import Phoenix.Controller,
+        only: [get_csrf_token: 0, view_module: 1, view_template: 1]
+
+      # Include general helpers for rendering HTML
+      unquote(html_helpers())
     end
   end
 
-  def channel do
+  defp html_helpers do
     quote do
-      use Phoenix.Channel<%= if @gettext do %>
+      # HTML escaping functionality
+      import Phoenix.HTML
+      # Core UI components and translation
+      import <%= @web_namespace %>.CoreComponents<%= if @gettext do %>
       import <%= @web_namespace %>.Gettext<% end %>
+
+      # Shortcut for generating JS commands
+      alias Phoenix.LiveView.JS
+
+      # Routes generation with the ~p sigil
+      unquote(verified_routes())
     end
-  end
+  end<% end %>
 
   def verified_routes do
     quote do

defmodule <%= @web_namespace %> do
  @moduledoc """
  The entrypoint for defining your web interface, such
  as controllers, views, channels and so on.

  This can be used in your application as:

      use <%= @web_namespace %>, :controller
      use <%= @web_namespace %>, :view

  The definitions below will be executed for every view,
  controller, etc, so keep them short and clean, focused
  on imports, uses and aliases.

  Do NOT define functions inside the quoted expressions
  below. Instead, define any helper function in modules
  and import those modules here.
  """

  def static_paths, do: ~w(assets fonts images favicon.ico robots.txt)

  def controller do
    quote do

    end
  end

  @doc """
  When used, dispatch to the appropriate controller/view/etc.
  """
