 defmodule <%= @web_namespace %> do
   @moduledoc """
   The entrypoint for defining your web interface, such
-  as controllers, views, channels and so on.
+  as controllers, components, channels, and so on.
 
   This can be used in your application as:
 
       use <%= @web_namespace %>, :controller
-      use <%= @web_namespace %>, :view
+      use <%= @web_namespace %>, :html
 
-  The definitions below will be executed for every view,
-  controller, etc, so keep them short and clean, focused
+  The definitions below will be executed for every controller,
+  component, 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.
+  below. Instead, define additional modules and import
+  those modules here.
   """
 
   def static_paths, do: ~w(assets fonts images favicon.ico robots.txt)
+
+  def router do
+    quote do
+      use Phoenix.Router, helpers: false
+
+      # Import common connection and controller functions to use in pipelines
+      import Plug.Conn
+      import Phoenix.Controller<%= if @html do %>
+      import Phoenix.LiveView.Router<% end %>
+    end
+  end
+
+  def channel do
+    quote do
+      use Phoenix.Channel
+    end
+  end
 
   def controller do
     quote do

    end
  end

  defp html_helpers do
    quote do<%= if @html do %>
      import Phoenix.HTML
      import <%= @web_namespace %>.CoreComponents

      alias Phoenix.LiveView.JS
<% end %><%= if @gettext do %>
      import <%= @web_namespace %>.Gettext<% end %>
      unquote(verified_routes())
    end
  end

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


      unquote(html_helpers())
    end
  end

  def html do
    quote do
      use Phoenix.Component

      # 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

  defp html_helpers do
    quote 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 %>

  def verified_routes do
    quote do
