lib/daisyui_components/stat.ex

defmodule DaisyUIComponents.Stat do
  @moduledoc """
  Stat component

  https://daisyui.com/components/stat


  """

  use DaisyUIComponents.Component

  attr :class, :string, default: nil
  attr :direction, :string, values: directions()
  attr :rest, :global
  slot :inner_block

  def stats(assigns) do
    assigns =
      assign(assigns, :class, [
        "stats",
        stats_direction(assigns[:direction]),
        assigns.class
      ])

    ~H"""
    <div class={@class} {@rest}>
      <%= render_slot(@inner_block) %>
    </div>
    """
  end

  # Direction
  defp stats_direction("vertical"), do: "stats-vertical"
  defp stats_direction("horizontal"), do: "stats-horizontal"
  defp stats_direction(_direction), do: nil

  attr :class, :string, default: nil
  attr :rest, :global
  slot :inner_block

  def stat(assigns) do
    assigns =
      assign(assigns, :class, [
        "stat",
        assigns.class
      ])

    ~H"""
    <div class={@class} {@rest}>
      <%= render_slot(@inner_block) %>
    </div>
    """
  end

  attr :class, :string, default: nil
  attr :rest, :global
  slot :inner_block

  def stat_title(assigns) do
    assigns =
      assign(assigns, :class, [
        "stat-title",
        assigns.class
      ])

    ~H"""
    <div class={@class} {@rest}>
      <%= render_slot(@inner_block) %>
    </div>
    """
  end

  attr :class, :string, default: nil
  attr :rest, :global
  slot :inner_block

  def stat_value(assigns) do
    assigns =
      assign(assigns, :class, [
        "stat-value",
        assigns.class
      ])

    ~H"""
    <div class={@class} {@rest}>
      <%= render_slot(@inner_block) %>
    </div>
    """
  end

  attr :class, :string, default: nil
  attr :rest, :global
  slot :inner_block

  def stat_desc(assigns) do
    assigns =
      assign(assigns, :class, [
        "stat-desc",
        assigns.class
      ])

    ~H"""
    <div class={@class} {@rest}>
      <%= render_slot(@inner_block) %>
    </div>
    """
  end

  attr :class, :string, default: nil
  attr :rest, :global
  slot :inner_block

  def stat_figure(assigns) do
    assigns =
      assign(assigns, :class, [
        "stat-figure",
        assigns.class
      ])

    ~H"""
    <div class={@class} {@rest}>
      <%= render_slot(@inner_block) %>
    </div>
    """
  end

  attr :class, :string, default: nil
  attr :rest, :global
  slot :inner_block

  def stat_actions(assigns) do
    assigns =
      assign(assigns, :class, [
        "stat-actions",
        assigns.class
      ])

    ~H"""
    <div class={@class} {@rest}>
      <%= render_slot(@inner_block) %>
    </div>
    """
  end
end