defmodule MvWeb.AuthOverrides do
  @moduledoc """
  UI customizations for AshAuthentication Phoenix components.

  ## Overrides
  - `SignIn` - Restricts form width to prevent full-width display
  - `Banner` - Replaces default logo with "Mitgliederverwaltung" text
  - `HorizontalRule` - Translates "or" text to German

  ## Documentation
  For complete reference on available overrides, see:
  https://hexdocs.pm/ash_authentication_phoenix/ui-overrides.html
  """
  use AshAuthentication.Phoenix.Overrides
  use Gettext, backend: MvWeb.Gettext

  # configure your UI overrides here

  # First argument to `override` is the component name you are overriding.
  # The body contains any number of configurations you wish to override
  # Below are some examples

  # For a complete reference, see https://hexdocs.pm/ash_authentication_phoenix/ui-overrides.html

  # override AshAuthentication.Phoenix.Components.Banner do
  #   set :image_url, "https://media.giphy.com/media/g7GKcSzwQfugw/giphy.gif"
  #   set :text_class, "bg-red-500"
  # end

  # Avoid full-width for the Sign In Form
  override AshAuthentication.Phoenix.Components.SignIn do
    set :root_class, "md:min-w-md"
  end

  # Replace banner logo with text
  override AshAuthentication.Phoenix.Components.Banner do
    set :text, "Mitgliederverwaltung"
    set :image_url, nil
  end

  # Translate the or in the horizontal rule to German
  override AshAuthentication.Phoenix.Components.HorizontalRule do
    set :text,
        Gettext.with_locale(MvWeb.Gettext, "de", fn ->
          Gettext.gettext(MvWeb.Gettext, "or")
        end)
  end

  # Hide AshAuthentication's Flash component since we use flash_group in root layout
  # This prevents duplicate flash messages
  override AshAuthentication.Phoenix.Components.Flash do
    set :message_class_info, "hidden"
    set :message_class_error, "hidden"
  end
end
