<%= tag.details class: details_classes, open: open, **details_opts do %> <%= tag.summary class: summary_classes do %> <% if summary_content? %> <% if variant == :default %> <%# `:default` summary is already `flex justify-between`, so caller-provided sibling divs get distributed directly. Wrapping would collapse them into a single flex child and kill the justify-between distribution. %> <%= summary_content %> <% else %> <%# Non-default summaries are `list-item` (no flex), so a flex caller div would shrink-wrap to content width and any `justify-between` inside has nothing to distribute. Wrap in `w-full` so caller flex rows stretch across the card. %>
<%= summary_content %>
<% end %> <% else %>
<% if align == :left %> <%= helpers.icon "chevron-right", class: "group-open:rotate-90 motion-safe:transition-transform motion-safe:duration-150" %> <% end %> <%= tag.span class: class_names("font-medium", align == :left ? "text-sm text-primary" : "text-xs uppercase text-secondary") do %> <%= title %> <% end %>
<% if align == :right %> <%= helpers.icon "chevron-down", class: "group-open:rotate-180 motion-safe:transition-transform motion-safe:duration-150" %> <% end %> <% end %> <% end %>
<%= content %>
<% end %>