defmodule PetalComponents.Card do use Phoenix.Component import PetalComponents.Avatar import PetalComponents.Typography attr(:class, :any, default: nil, doc: "CSS class") attr(:variant, :string, default: "basic", values: ["basic", "outline"]) attr(:rest, :global) slot(:inner_block, required: false) def card(assigns) do ~H"""
{render_slot(@inner_block)}
""" end attr(:aspect_ratio_class, :any, default: "aspect-video", doc: "aspect ratio class") attr(:src, :string, default: nil, doc: "hosted image URL") attr(:class, :any, default: nil, doc: "CSS class") attr(:rest, :global) slot(:inner_block, required: false) def card_media(assigns) do ~H""" <%= if @src do %> <% else %>
<% end %> """ end attr(:heading, :string, default: nil, doc: "creates a heading") attr(:category, :string, default: nil, doc: "creates a category") attr(:category_color_class, :any, default: "pc-card__category--primary", doc: "sets a category color class" ) attr(:class, :any, default: nil, doc: "CSS class") attr(:rest, :global) slot(:inner_block, required: false) def card_content(assigns) do ~H"""
{@category}
{@heading}
{render_slot(@inner_block)}
""" end attr(:class, :any, default: nil, doc: "CSS class") attr(:rest, :global) slot(:inner_block, required: false) def card_footer(assigns) do ~H"""
{render_slot(@inner_block)}
""" end attr(:name, :string, required: true, doc: "The reviewer's name") attr(:username, :string, required: true, doc: "The reviewer's username") attr(:img, :string, required: true, doc: "URL of the reviewer's avatar") attr(:body, :string, required: true, doc: "The review text content") attr(:class, :string, default: "", doc: "Additional classes") attr(:rest, :global) def review_card(assigns) do ~H"""
<.avatar src={@img} alt={@name} size="md" />
<.p no_margin class="text-sm pc-review-name">{@name}

{@username}

<.p class="text-sm" no_margin>{@body}
""" end end