% %i[label field error help after_help].each do |key| if (content = content_for(key).presence) flush_content_for key partial.section key, content end end %> <% form ||= current_fields_form # returns a struct with `label`, `placeholder`, and `help` methods. labels = labels_for(form, method) options ||= {} options[:id] ||= form.field_id(method) # options[:disabled] ||= !field_editable?(form.object, method) if user_signed_in? options[:placeholder] ||= labels.placeholder if labels.placeholder other_options ||= {} other_options[:help] = [other_options[:help], labels.help].compact.join(" ") if !other_options.key?(:required) other_options[:required] = options.fetch(:required) { presence_validated?(form.object, method) } end if other_options[:required] options[:"aria-required"] = true end errors = [method, method.to_s.gsub(/_id$/, '').to_sym].uniq.map { |attribute| form.object.errors.full_messages_for(attribute) }.flatten has_errors = errors.any? || partial.error? || other_options[:error].present? options[:class] = "#{options[:class]} block w-full rounded-md shadow-sm font-light dark:bg-slate-800 dark:text-slate-300" options[:class] += " text-base md:text-sm" # default to 16px on mobile to prevent zooming options[:class] += if has_errors " pr-10 border-red-500 text-red-900 placeholder-red-500 outline-none focus:ring-red-500 focus:border-red-500 dark:text-slate-300" else " focus:ring-primary-500 focus:border-primary-500 border-slate-300 dark:border-slate-900" end %>