module Avo::ResourcesHelper

def field_wrapper(**args, &block)

def field_wrapper(**args, &block)
  render Avo::FieldWrapperComponent.new(**args) do
    capture(&block)
  end
end

def filter_wrapper(name: nil, index: nil, **args, &block)

def filter_wrapper(name: nil, index: nil, **args, &block)
  render layout: "layouts/avo/filter_wrapper", locals: {
    name: name,
    index: index
  } do
    capture(&block)
  end
end

def index_field_wrapper(**args, &block)

def index_field_wrapper(**args, &block)
  render Index::FieldWrapperComponent.new(**args) do
    capture(&block)
  end
end

def item_select_all_input

def item_select_all_input
  tag :input,
    type: "checkbox",
    name: t("avo.select_all"),
    title: t("avo.select_all"),
    class: "mx-3 rounded w-4 h-4 checked:bg-primary-400 focus:checked:!bg-primary-400",
    data: {
      action: "input->item-select-all#toggle",
      item_select_all_target: "checkbox",
      tippy: "tooltip",
    }
end

def item_selector_init(resource)

def item_selector_init(resource)
  "data-resource-name='#{resource.model_key}' data-resource-id='#{resource.record.to_param}' data-controller='item-selector'"
end

def item_selector_input(floating: false, size: :md)

def item_selector_input(floating: false, size: :md)
  tag :input,
    type: "checkbox",
    name: t("avo.select_item"),
    title: t("avo.select_item"),
    class: "mx-3 rounded checked:bg-primary-400 focus:checked:!bg-primary-400 #{floating ? "absolute inset-auto left-0 mt-3 z-10 hidden group-hover:block checked:block" : ""} #{size.to_sym == :lg ? "w-5 h-5" : "w-4 h-4"}",
    data: {
      action: 'input->item-selector#toggle input->item-select-all#selectRow',
      item_select_all_target: 'itemCheckbox',
      tippy: 'tooltip'
    }
end

def resource_grid(resources, resource)

def resource_grid(resources, resource)
  render partial: "avo/partials/resource_grid", locals: {
    resources: resources,
    resource: resource
  }
end

def resource_table(resources, resource)

def resource_table(resources, resource)
  render partial: "avo/partials/resource_table", locals: {
    resources: resources,
    resource: resource
  }
end