MoonAssets (moon_assets v0.3.0)

Hex.pm Hexdocs.pm

MoonAssets

Moon Assets is a HEX package that serves icons and assets for Phoenix projects built with TailwindCSS.

Installation

The package can be installed by adding moon_assets to your list of dependencies in a mix.exs file:

def deps do
  [
    {:moon_assets, "~> 0.3"}
  ]
end

Install moon_assets dependency:

mix deps.get

Add a required moon-assets-preset preset to a tailwind.config.js file. Replace PATH_TO_DEPS_FOLDER with the actual deps folder path.

module.exports = {
  presets: [
    require("PATH_TO_DEPS_FOLDER/moon_assets/lib/moon-assets-preset"),
  ],
};

Define an icon function in a core_components.ex file with a "moon-" pattern match. You may define another icon function with different pattern matches, in case you need it.

attr :name, :string, required: true
attr :class, :string, default: nil
attr :rest, :global

def icon(%{name: "moon-" <> _} = assigns) do
  ~H"""
  <span class={[@name, @class]} {@rest} />
  """
end

Basic usage

To use an icon component, specify a name attribute where moon- is required by TailwindCSS to properly identify a necessary icon and generate a class in your app's CSS file.

<.icon name="moon-adventure" />

Customization

To additionally style an icon add class attribute. Use text-COLOR utility class for changing icon color, and size-XX utility class for specifying width and height of an icon.

<.icon name="moon-adventure" class="text-chichi" />
<.icon name="moon-adventure" class="size-6" />
OSZAR »