You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: forms_helper.rb
    path of file: ./repos/mushroom-observer/app/helpers
    
    the code of the file until where you have to start completion: # frozen_string_literal: true

#  custom_file_field            # stylable file input field with
#                               # client-side size validation
#  date_select_opts

# helpers for form tags
# rubocop:disable Metrics/ModuleLength
module FormsHelper
  # Bootstrap submit button
  # <%= submit_button(form: f, button: button.t, center: true) %>
  def submit_button(**args)
    unless args[:form].is_a?(ActionView::Helpers::FormBuilder)
      return args[:button]
   
    
  def select_with_label(**args)
    args = auto_label_if_form_is_account_prefs(args)
    args = select_generate_default_options(args)
    args = check_for_optional_or_required_note(args)

    opts = separate_field_options_from_args(
      args, [:options, :select_opts, :start_year, :end_year]
    )
    opts[:class] = "form-control"
    opts[:class] += " w-auto" if args[:width] == :auto

    wrap_class = form_group_wrap_class(args)
    label_opts = field_label_opts(args)

    tag.div(class: wrap_class) do
      concat(args[:form].label(args[:field], args[:label], label_opts))
      concat(args[:between]) if args[:between].present?
      concat(args[:form].select(args[:field], args[:options],
                                args[:select_opts], opts))
      concat(args[:append]) if args[:append].present?
    end
  end