%# locals: (user:, placement: "right-start", offset: 16, intro_mode: false) %>
<% intro_mode = local_assigns.fetch(:intro_mode, false) %>
<%# `DS::Popover` (not `DS::Menu`) because the panel includes a
decorative profile header alongside the action items — `role="menu"`
would restrict AT users to menuitem-only navigation and hide the
user-info block. %>
<%= render DS::Popover.new(
variant: intro_mode ? "icon" : "avatar",
avatar_url: user.profile_image&.variant(:small)&.url,
initials: user.initials,
placement: placement,
offset: offset,
icon: "settings",
aria_label: t(".aria_label", default: "Open account menu")
) do |popover| %>
<%= popover.with_header do %>
<%= render "settings/user_avatar", avatar_url: user.profile_image&.variant(:small)&.url, initials: user.initials, lazy: true %>
<%= user.display_name %>
<% if user.display_name != user.email %>
<%= user.email %>
<% end %>
<% if self_hosted? %>
<%= t(".version") %>:
<%= link_to Sure.version.to_release_tag, "https://github.com/we-promise/sure/releases/tag/#{Sure.version.to_release_tag}", target: "_blank", class: "hover:underline" %>
<% if Sure.commit_sha.present? %>
(<%= link_to Sure.commit_sha.first(7), "https://github.com/we-promise/sure/commit/#{Sure.commit_sha}", target: "_blank", class: "hover:underline" %>)
<% end %>
<% end %>
<% end %>
<% popover.with_custom_content do %>
<%# `roving: false` keeps these items in the normal Tab order. The parent
`DS::Popover` has no arrow-key roving handler and is not a `role="menu"`
container, so the default `tabindex="-1"` would skip every item. %>
<%= render DS::MenuItem.new(
variant: "link",
roving: false,
text: t(".settings"),
icon: "settings",
href: intro_mode ? settings_profile_path : accounts_path(return_to: request.fullpath)
) %>
<%= render DS::MenuItem.new(variant: "link", roving: false, text: t(".changelog"), icon: "box", href: changelog_path) %>
<% if self_hosted? && !intro_mode %>
<%= render DS::MenuItem.new(variant: "link", roving: false, text: t(".feedback"), icon: "megaphone", href: feedback_path) %>
<% end %>
<%= render DS::MenuItem.new(variant: "link", roving: false, text: t(".contact"), icon: "message-square-more", href: "https://discord.gg/36ZGBsxYEK", target: "_blank", rel: "noopener noreferrer") %>
<%= render DS::MenuItem.new(variant: "divider") %>
<%= render DS::MenuItem.new(variant: "button", roving: false, text: t(".log_out"), icon: "log-out", href: session_path(Current.session), method: :delete) %>
<% end %>
<% end %>