<p>InputBox is an input element that supports the following key features:</p>
<ul>
	<li>Responsive by default with multiple size support</li>
	<li>Validation display built in</li>
	<li>Input masking support</li>
	<li>Adornments - icon or text prefixes and suffixes</li>
</ul>

Width (control is responsive by default) :
```js
<>
    <div><InputBox placeholder="Default"/></div>
    <div><InputBox width="300px" placeholder="Fixed width (full width on mobile)"/></div>
    <div><InputBox width="300px" responsive={false} placeholder="Fixed width (on all devices)"/></div>
    <div><InputBox fullWidth placeholder="Full width (on all devices)"/></div>
</>
```


Sizing:
```js
<>
    <div><InputBox placeholder="Standard size"/></div>
    <div><InputBox width="250px" size="small" placeholder="Smaller layout for busy forms"/></div>
</>
```
Input masks:
```js
initialState = {
	usPhone: '',
    date: '',
    time: '',
    duration: ''
};
<>
    <div>
        <label>US phone number</label>
        <div>
            <InputBox
                value={state.usPhone}
                placeholder="(1xx) xxx-xxxx"
                onChange={e => {
                    setState({ usPhone: e.target.value });
                }}
                  mask={['(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
             />
        </div>
    </div>
    <div>
        <label>Date</label>
        <div>
        <InputBox
            value={state.date}
            placeholder="dd/mm/yyyy"
            onChange={e => {
                setState({ date: e.target.value });
            }}
            mask={[/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/]}
        />
        </div>
    </div>
    <div>
        <label>Time</label>
        <div>
            <InputBox
                value={state.time}
                placeholder="hh:mm"
                onChange={e => {
                    setState({ time: e.target.value });
                }}
                mask={[/\d/, /\d/, ':', /\d/, /\d/]}
            />
        </div>
    </div>
</>
```

Error state (no message):
```js
<InputBox error />
```

Error with message:
```js
<>
    <InputBox placeholder="standard" error="Please enter a value" />
    <InputBox placeholder="small" size="small" error="Please enter a value" />
</>
```

Disabled:
```js
<InputBox disabled />
```

Prefixes and suffixes:
```js
const Clock = require('components/Icons/Clock').default;
<>
    <div><InputBox width="110px" placeholder="hh:mm" mask={[/\d/, /\d/, ':', /\d/, /\d/]} suffix={{icon: Clock, color: "#3DB0F7", onClick: () => alert('clicked')}} /></div>
    <div><InputBox width="110px" placeholder="hh:mm" mask={[/\d/, /\d/, ':', /\d/, /\d/]} prefix={{icon: Clock, color: "#3DB0F7", onClick: () => alert('clicked')}} /></div>
    <div><InputBox width="110px" placeholder="0.00" prefix="$" /></div>
    <div><InputBox width="290px" placeholder="5" prefix="to nearest 5" /></div>
    <div><InputBox width="110px" placeholder="nnn" suffix="mm" /></div>
    <div><InputBox width="130px" placeholder="disabled" disabled suffix={{icon: Clock, color: "#3DB0F7", onClick: () => alert('clicked')}} /></div>
    <div><InputBox width="200px" size="small" placeholder="Smaller" suffix="hrs"/></div>
    <div><InputBox width="110px" size="small" placeholder="hh:mm" mask={[/\d/, /\d/, ':', /\d/, /\d/]} suffix={{icon: Clock, color: "#3DB0F7", onClick: () => alert('clicked')}} /></div>
</>
```

Custom icon colour:
```js
const Steam = require('components/Icons/Steam').default;
<>
    <div><InputBox width="110px" placeholder="cups" suffix={{ icon: Steam, color: 'red', onClick: () => alert('ouch')}} /></div>
</>
```
