class Primer::Forms::TextField

def trailing_visual_component

def trailing_visual_component
  return @trailing_visual_component if defined?(@trailing_visual_component)
  visual = @input.trailing_visual
  # Render icon if specified
  @trailing_visual_component =
    if (icon_arguments = visual[:icon])
      Primer::Beta::Octicon.new(**icon_arguments)
    elsif (label_arguments = visual[:label])
      # Render label if specified
      label_arguments[:classes] = class_names(
        label_arguments.delete(:classes),
        "FormControl-input-trailingVisualLabel"
      )
      text = label_arguments.delete(:text)
      Primer::Beta::Label.new(**label_arguments).with_content(text)
    elsif (counter_arguments = visual[:counter])
      # Render counter if specified
      counter_arguments[:classes] = class_names(
        counter_arguments.delete(:classes),
        "FormControl-input-trailingVisualCounter"
      )
      Primer::Beta::Counter.new(**counter_arguments)
    elsif (truncate_arguments = visual[:text])
      # Render text if specified
      truncate_arguments[:classes] = class_names(
        truncate_arguments.delete(:classes),
        "FormControl-input-trailingVisualText"
      )
      text = truncate_arguments.delete(:text)
      Primer::Beta::Truncate.new(**truncate_arguments).with_content(text)
    end
end