defmodule PhoenixUI.Components.Icon.VideoCamera do @moduledoc false use Phoenix.Component @default_color "primary" @default_size :md ### Variants ########################## def outline(assigns), do: assigns |> assign(:variant, :outline) |> build_component() def solid(assigns), do: assigns |> assign(:variant, :solid) |> build_component() ### Normalize Assigns ########################## defp build_component(assigns) do assigns |> assign_new(:color, fn -> @default_color end) |> assign_new(:size, fn -> @default_size end) |> apply_root_assigns() |> generate_markup() end ### Markup ########################## defp generate_markup(%{variant: :outline} = assigns) do ~H""" """ end defp generate_markup(%{variant: :solid} = assigns) do ~H""" """ end ### Root Assigns ########################## defp apply_root_assigns(assigns) do framework = Application.get_env(:phoenix_ui, :css_framework) attrs = Map.drop(assigns, [ :__changed__, :class, :color, :element, :inner_block, :size, :variant ]) class = Enum.join( [ get_color_css(framework, assigns), get_size_css(framework, assigns), Map.get(assigns, :class) ], " " ) assign(assigns, root_attrs: attrs, root_class: class ) end defp get_color_css(:tailwind_css, %{color: color}), do: "text-#{color}-500" defp get_size_css(:tailwind_css, %{size: :xs}), do: "h-2 w-2" defp get_size_css(:tailwind_css, %{size: :sm}), do: "h-4 w-4" defp get_size_css(:tailwind_css, %{size: :md}), do: "h-6 w-6" defp get_size_css(:tailwind_css, %{size: :lg}), do: "h-8 w-8" end