defmodule PetalComponents.Card do
use Phoenix.Component
import PetalComponents.Helpers
# prop class, :string
# prop variant, :string
# slot default
def card(assigns) do
assigns =
assigns
|> assign_new(:class, fn -> "" end)
|> assign_new(:variant, fn -> "basic" end)
|> assign_rest(~w(class variant)a)
~H"""
<%= render_slot(@inner_block) %>
"""
end
# prop class, :string
# prop aspect_ratio_class, :string
# prop src, :string
def card_media(assigns) do
assigns =
assigns
|> assign_new(:class, fn -> "" end)
|> assign_new(:aspect_ratio_class, fn -> "aspect-video" end)
|> assign_new(:src, fn -> nil end)
|> assign_rest(~w(class aspect_ratio_class src)a)
~H"""
<%= if @src do %>
<% else %>
<% end %>
"""
end
# prop class, :string
# prop heading, :string
# prop category, :string
# prop category_color_class, :string
# slot default
def card_content(assigns) do
assigns =
assigns
|> assign_new(:class, fn -> "" end)
|> assign_new(:category_color_class, fn -> "text-primary-600 dark:text-primary-400" end)
|> assign_new(:inner_block, fn -> nil end)
|> assign_new(:category, fn -> nil end)
|> assign_new(:heading, fn -> nil end)
|> assign_rest(~w(class category_color_class inner_block category heading)a)
~H"""
<%= if @category do %>
<%= @category %>
<% end %>
<%= if @heading do %>
<%= @heading %>
<% end %>
<%= if @inner_block do %>
<%= render_slot(@inner_block) %>
<% end %>
"""
end
def card_footer(assigns) do
assigns =
assigns
|> assign_rest(~w(class)a)
~H"""
<%= render_slot(@inner_block) %>
"""
end
defp get_variant_classes(variant) do
case variant do
"basic" ->
"rounded-lg shadow-lg dark:shadow-2xl border border-gray-200 dark:border-none"
"outline" ->
"rounded-lg border border-gray-300 dark:border-gray-600"
end
end
end