<% frame_id = local_assigns.fetch(:frame_id, nil)
  page_key = local_assigns.fetch(:page_key, pagy.options[:page_key] || "page")
  limit_key = local_assigns.fetch(:limit_key, pagy.options[:limit_key] || "limit")
  limit_options = local_assigns.fetch(:limit_options, [15, 30, 60]).map(&:to_i)
  preserve_params = local_assigns.fetch(:preserve_params, {}).stringify_keys.except(page_key.to_s, limit_key.to_s)
  form_class = local_assigns.fetch(:form_class, "flex items-center gap-2")
  request_path = local_assigns.fetch(:request_path, request.path)
%>

<%= form_with url: request_path, method: :get, data: { turbo_frame: frame_id }, class: form_class, local: true do %>
  <% preserve_params.each do |k, v| %>
    <%= hidden_field_tag k, v %>
  <% end %>
  <%= hidden_field_tag page_key, 1 %>
  <label class="text-xs text-neutral-500 dark:text-neutral-300">Rows</label>
  <%= select_tag limit_key,
    options_for_select(limit_options, pagy.limit),
    class: "rounded-md border border-black/10 bg-white px-2 py-1 text-sm text-neutral-900 shadow-xs dark:border-white/10 dark:bg-neutral-900 dark:text-white",
    onchange: "this.form.requestSubmit()" %>
<% end %>
