{% set classes = [
  'c-form-item__' ~ type,
  modifier_classes ? modifier_classes : '',
]|join(' ')|trim %}

{% set attributes_to_add = {
  class: classes,
} %}

{# ID #}
{% if id is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'id': id ~ '',
  }) %}
{% endif %}

{# Name #}
{% if name is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'name': name ~ '',
  }) %}
{% endif %}

{# Input Type #}
{% if type is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'type': type ~ '',
  }) %}
{% endif %}

{# Accept #}
{% if accept is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'accept': accept ~ '',
  }) %}
{% endif %}

{# Autocomplete #}
{% if autocomplete is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'autocomplete': autocomplete ~ '',
  }) %}
{% endif %}

{# Autofocus #}
{% if is_autofocus %}
  {% set attributes_to_add = attributes_to_add|merge({
    'autofocus': 'autofocus',
  }) %}
{% endif %}

{# Checked #}
{% if is_checked %}
  {% set attributes_to_add = attributes_to_add|merge({
    'checked': 'checked',
  }) %}
{% endif %}

{# Disabled #}
{% if disabled or is_disabled %}
  {% set attributes_to_add = attributes_to_add|merge({
    'disabled': 'disabled',
  }) %}
{% endif %}

{# Form #}
{% if form_id is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'form': form_id ~ '',
  }) %}
{% endif %}

{# Max #}
{% if max is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'max': max ~ '',
  }) %}
{% endif %}

{# Max Length #}
{% if max_length is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'maxlength': max_length ~ '',
  }) %}
{% endif %}

{# Min #}
{% if min is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'min': min ~ '',
  }) %}
{% endif %}

{# Multiple #}
{% if is_multiple %}
  {% set attributes_to_add = attributes_to_add|merge({
    'multiple': 'multiple',
  }) %}
{% endif %}

{# Pattern #}
{% if pattern is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'pattern': pattern ~ '',
  }) %}
{% endif %}

{# Placeholder #}
{% if placeholder is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'placeholder': placeholder ~ '',
  }) %}
{% endif %}

{# Required #}
{% if required or is_required %}
  {% set attributes_to_add = attributes_to_add|merge({
    'required': 'required',
    'aria-required': 'true',
  }) %}
{% endif %}

{# Input Size #}
{% if size is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'size': size ~ '',
  }) %}
{% endif %}

{# Step #}
{% if step is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'step': step ~ '',
  }) %}
{% endif %}

{# Value #}
{% if value is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'value': value ~ '',
  }) %}
{% endif %}

{# Described By #}
{% if described_by is not empty %}
  {% set attributes_to_add = attributes_to_add|merge({
    'aria-describedby': described_by ~ '',
  }) %}
{% endif %}

<input {{ add_attributes(attributes_to_add)}}>
