Skip to main content

lib/mix/tasks/skua.themes.ex

defmodule Mix.Tasks.Skua.Themes do
  @shortdoc "List the prepackaged Skua themes (for `mix skua.install --theme <name>`)"
  @moduledoc """
  Lists every prepackaged theme you can bake in with `mix skua.install --theme <name>`.

      mix skua.themes

  A theme writes its token overrides (dark + light) into your `assets/css/app.css`,
  so it's fully editable afterward. The default `mix skua.install` (no `--theme`)
  keeps Skua's built-in look — themes are opt-in.
  """
  use Mix.Task

  @impl Mix.Task
  def run(_args) do
    names = Skua.Themes.names()

    Mix.shell().info([
      :cyan,
      "\n  #{length(names)} Skua themes — apply with ",
      :reset,
      "mix skua.install --theme <name>",
      :cyan,
      ":\n",
      :reset
    ])

    Enum.each(names, fn n ->
      Mix.shell().info(["  ", :bright, String.pad_trailing(n, 18), :reset, Skua.Themes.title(n)])
    end)

    Mix.shell().info([
      :faint,
      "\n  Default `mix skua.install` keeps Skua's built-in palette — themes are opt-in.\n",
      :reset
    ])
  end
end