defmodule SEO.OpenGraph.Profile do @moduledoc """ - `:first_name` - A name normally given to an individual by a parent or self-chosen. - `:last_name` - A name inherited from a family or marriage and by which the individual is commonly known. - `:username` - A short unique string to identify them. - `:gender` - Their gender. ### Resources - https://ogp.me/#type_profile """ use Phoenix.Component defstruct [ :first_name, :last_name, :username, :gender, namespace: "https://ogp.me/ns/profile#" ] @type t :: %__MODULE__{ namespace: String.t(), first_name: String.t(), last_name: String.t(), username: String.t(), gender: String.t() } def build(attrs, default \\ nil) def build(attrs, default) do SEO.Utils.merge_defaults(__MODULE__, attrs, default) end attr(:content, :any, required: true) attr(:property, :string, default: "profile") def meta(assigns) do case assigns[:content] do %__MODULE__{} -> ~H""" """ _url -> ~H""" """ end end end