diff --git a/lib/atomic/organizations/partner.ex b/lib/atomic/organizations/partner.ex index 1da523918..17a965143 100644 --- a/lib/atomic/organizations/partner.ex +++ b/lib/atomic/organizations/partner.ex @@ -27,6 +27,8 @@ defmodule Atomic.Organizations.Partner do field :description, :string field :notes, :string + field :banner, Atomic.Uploaders.Banner.Type + field :benefits, :string field :archived, :boolean, default: false field :image, Uploaders.PartnerImage.Type diff --git a/lib/atomic_web/components/avatar.ex b/lib/atomic_web/components/avatar.ex index c6bef703b..74163e109 100644 --- a/lib/atomic_web/components/avatar.ex +++ b/lib/atomic_web/components/avatar.ex @@ -44,7 +44,7 @@ defmodule AtomicWeb.Components.Avatar do ~H""" <%= if @src do %> - + <% else %> <%= if @auto_generate_initials do %> <%= extract_initials(@name) %> diff --git a/lib/atomic_web/live/partner_live/components/partner_card.ex b/lib/atomic_web/live/partner_live/components/partner_card.ex new file mode 100644 index 000000000..000bd41c2 --- /dev/null +++ b/lib/atomic_web/live/partner_live/components/partner_card.ex @@ -0,0 +1,52 @@ +defmodule AtomicWeb.PartnerLive.Components.PartnerCard do + @moduledoc false + use AtomicWeb, :component + + import AtomicWeb.Components.{Avatar, Gradient} + + attr :partner, :map, required: true + + def partner_card(assigns) do + ~H""" +
  • +
    +
    + <.gradient seed={@partner.id} class="rounded-t-lg" /> +
    +
    + +
    +
    +
    + <.avatar color={:light_zinc} class="" name={@partner.name} src={Uploaders.PartnerImage.url({@partner.image, @partner}, :original)} type={:company} size={:xl} /> +
    +
    +
    +

    <%= @partner.name %>

    + + +
    + <%= if @partner.location do %> +
    + <.icon name="hero-map-pin" class="my-1 h-4 w-4 text-zinc-400" /> +

    <%= @partner.location.name %>

    +
    + <% end %> +
    +
    +
    +

    + <%= Enum.map(String.split(@partner.benefits, "\n"), fn phrase -> %> + <%= if String.length(phrase) < 50 do %> + <%= phrase %>
    + <% else %> + <%= String.slice(phrase, 0..50) <> "..." %>
    + <% end %> + <% end) %> +

    +
    +
    +
  • + """ + end +end diff --git a/lib/atomic_web/live/partner_live/edit.html.heex b/lib/atomic_web/live/partner_live/edit.html.heex index 91ee4afa8..ca0057cdb 100644 --- a/lib/atomic_web/live/partner_live/edit.html.heex +++ b/lib/atomic_web/live/partner_live/edit.html.heex @@ -26,7 +26,7 @@ <% end %> -
    +
    <.live_component module={AtomicWeb.PartnerLive.FormComponent} organization={@current_organization} id={@partner.id || :new} title={@page_title} action={@live_action} partner={@partner} return_to={~p"/organizations/#{@current_organization}/partners"} />
    diff --git a/lib/atomic_web/live/partner_live/index.ex b/lib/atomic_web/live/partner_live/index.ex index 1af444675..4ff02917b 100644 --- a/lib/atomic_web/live/partner_live/index.ex +++ b/lib/atomic_web/live/partner_live/index.ex @@ -1,7 +1,8 @@ defmodule AtomicWeb.PartnerLive.Index do + import AtomicWeb.PartnerLive.Components.PartnerCard use AtomicWeb, :live_view - import AtomicWeb.Components.{Avatar, Button, Empty, Pagination, Tabs} + import AtomicWeb.Components.{Button, Empty, Pagination, Tabs} alias Atomic.Accounts alias Atomic.Organizations alias Atomic.Partners diff --git a/lib/atomic_web/live/partner_live/index.html.heex b/lib/atomic_web/live/partner_live/index.html.heex index bc897d6ad..15910f92e 100644 --- a/lib/atomic_web/live/partner_live/index.html.heex +++ b/lib/atomic_web/live/partner_live/index.html.heex @@ -33,34 +33,10 @@ <.empty_state url={~p"/organizations/#{@organization}/partners/new"} placeholder="partner" />
    <% else %> -