{{#let
  (has-block "prepend")
  (has-block "append")
  (arg-or-default @id (unique-id)) as |hasPrepend hasAppend inputId|
}}
  {{#let
    (class-names
      (if @icon "euiFieldNumber--withIcon")
      (if @fullWidth "euiFieldNumber--fullWidth")
      (if @compressed "euiFieldNumber--compressed")
      (if (or hasPrepend hasAppend) "euiFieldNumber--inGroup")
      (if @isLoading "euiFieldNumber--isLoading")
      "euiFieldNumber"
    ) as |classes|
  }}
    {{#if @controlOnly}}
      <input
        id={{@id}}
        class={{classes}}
        value={{@value}}
        min={{@min}}
        max={{@max}}
        type="number"
        ...attributes
        {{validatable-control @isInvalid}}
      />
    {{else}}
      <EuiFormControlLayout
        @icon={{@icon}}
        @clear={{@clear}}
        @fullWidth={{@fullWidth}}
        @isLoading={{@isLoading}}
        @compressed={{@compressed}}
        @readOnly={{@readOnly}}
        @useGroup={{or hasPrepend hasAppend}}
      >
        <:prepend as |prependClasses|>
          {{yield prependClasses inputId to="prepend"}}
        </:prepend>
        <:field>
          <input
            id={{inputId}}
            class={{classes}}
            value={{@value}}
            type="number"
            ...attributes
            {{validatable-control @isInvalid}}
          />
        </:field>
        <:append as |appendClasses|>
          {{yield appendClasses inputId to="append"}}
        </:append>
      </EuiFormControlLayout>
    {{/if}}
  {{/let}}
{{/let}}