defmodule Shino.UI.Attrs do @moduledoc """ Provides attrs related components. ## Examples ```heex <:item name="Subtotal">$299.00 <:item name="Shipping">$5.00 <:item name="Tax">$25.00 ``` Or: ```heex Subtotal $299.00 Shipping $5.00 Tax $25.00 ``` """ use Shino.UI, :component @doc """ Rendrs an attr list. > It's a simplified version of the lits built by `` and its > associated components. """ attr :class, :any, default: nil attr :rest, :global slot :item, required: true do attr :name, :string, required: true end def list(assigns) do ~H"""
<%= item.name %>
<%= render_slot(item) %>
""" end @doc """ The root contains all the parts of an attr list. """ attr :class, :any, default: nil attr :rest, :global slot :inner_block, required: true def root(assigns) do ~H"""
<%= render_slot(@inner_block) %>
""" end @doc """ Renders an attr item. """ attr :class, :any, default: nil attr :rest, :global slot :inner_block, required: true def item(assigns) do ~H"""
<%= render_slot(@inner_block) %>
""" end @doc """ Renders an attr name. """ attr :class, :any, default: nil attr :rest, :global slot :inner_block, required: true def name(assigns) do ~H"""
<%= render_slot(@inner_block) %>
""" end @doc """ Renders an attr value. """ attr :class, :any, default: nil attr :rest, :global slot :inner_block, required: true def value(assigns) do ~H"""
<%= render_slot(@inner_block) %>
""" end end