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