defmodule Phoenix.WebComponent.MaterialDesignIcons do @moduledoc """ Render 7000+ Material Design Icons """ use Phoenix.WebComponent, :html # alias Phoenix.LiveView.JS @icons ~W(<%= icons |> Enum.join(" ") %>) @spec icons() :: [String.t()] def icons(), do: @icons <%= for name <- icons do %> def <%= String.replace(name, "-", "_") %>(assigns) do assigns = assigns |> assign_new(:id, fn -> false end) |> assign_new(:class, fn -> false end) ~H""" <%= File.read!(Application.app_dir(:phoenix_webcomponent, "priv/mdi/svg/#{name}.svg")) |> String.replace(~r/]+>/, "") |> String.replace("", "") %> """ end <% end %> end