defmodule PetalComponents.Typography do
use Phoenix.Component
@moduledoc """
Everything related to text. Headings, paragraphs and links
"""
# <.h1>Heading
# <.h1 label="Heading" />
# <.h1 label="Heading" class="mb-10" color_class="text-blue-500" />
def h1(assigns) do
~H"""
<%= if assigns[:label] do %>
<%= @label %>
<% else %>
<%= render_slot(@inner_block) %>
<% end %>
"""
end
def h2(assigns) do
~H"""
<%= if assigns[:label] do %>
<%= @label %>
<% else %>
<%= render_slot(@inner_block) %>
<% end %>
"""
end
def h3(assigns) do
~H"""
<%= if assigns[:label] do %>
<%= @label %>
<% else %>
<%= render_slot(@inner_block) %>
<% end %>
"""
end
def h4(assigns) do
~H"""
<%= if assigns[:label] do %>
<%= @label %>
<% else %>
<%= render_slot(@inner_block) %>
<% end %>
"""
end
def h5(assigns) do
~H"""
<%= if assigns[:label] do %>
<%= @label %>
<% else %>
<%= render_slot(@inner_block) %>
<% end %>
"""
end
defp get_heading_classes(base_classes, assigns) do
custom_classes = assigns[:class] || ""
color_classes = assigns[:color_class] || "text-gray-900 dark:text-white"
underline_classes = if assigns[:underline], do: " border-b border-gray-200 pb-2", else: ""
margin_classes = if assigns[:no_margin], do: "", else: "mb-3"
[base_classes, custom_classes, color_classes, underline_classes, margin_classes]
|> Enum.join(" ")
end
def p(assigns) do
~H"""
<%= render_slot(@inner_block) %>
"""
end
def link(assigns) do
assigns = assign_new(assigns, :variant, fn -> "primary" end)
~H"""
<%= render_slot(@inner_block) %>
"""
end
end