defmodule ElixirAiWeb.ChatMessage do
use Phoenix.Component
alias ElixirAiWeb.Markdown
alias Phoenix.LiveView.JS
attr :content, :string, required: true
def user_message(assigns) do
~H"""
<%= if @reasoning_content && @reasoning_content != "" do %>
JS.toggle_class("rotate-180", to: "##{@reasoning_id}-chevron")
}
aria-label="Toggle reasoning"
>
{Markdown.render(@reasoning_content)}
<% end %>
<%= for tool_call <- @tool_calls do %>
<%= if tool_call[:arguments] && tool_call[:arguments] != "" do %>
args {tool_call.arguments}
<% end %>
<%= if Map.has_key?(tool_call, :result) do %>
result {inspect(tool_call.result)}
<% end %>
<%= if Map.has_key?(tool_call, :error) do %>
error {tool_call.error}
<% end %>
<% end %>
<%= if @content && @content != "" do %>
{Markdown.render(@content)}
<% end %>
"""
end
end