Inputs are components that exist inside of containers. They're designed to let users author information or make choices.
.field
%label Default
%input.text-input.input--full{placeholder: "Placeholder", type: "text"}/
.field
%label Disabled
%input.text-input.input--full{disabled: "disabled", placeholder: "Placeholder", type: "text"}/
.field.field--invalid.field--required
%label Error
%input.text-input.input--full{placeholder: "Placeholder", type: "text"}/
.field__message Field can't be left blank.
<div class='field'>
<label>Default</label>
<input class='text-input input--full' placeholder='Placeholder' type='text'>
</div>
<div class='field'>
<label>Disabled</label>
<input class='text-input input--full' disabled placeholder='Placeholder' type='text'>
</div>
<div class='field field--invalid field--required'>
<label>Error</label>
<input class='text-input input--full' placeholder='Placeholder' type='text'>
<div class='field__message'>Field can't be left blank.</div>
</div>
= f.field :default do
= f.label :default, class: 'block-label'
= f.text_field :default, class: 'input--full', placeholder: 'Placeholder'
= f.field :disabled do
= f.label :disabled, class: 'block-label'
= f.text_field :disabled, class: 'input--full', placeholder: 'Placeholder', disabled: true
.field
%label Default
.input-group.input-group--full
.input-group__addon.fa.fa-dollar
%input.text-input.input--full{placeholder: "Placeholder", type: "text"}/
.field
%label Disabled
.input-group.input-group--full
.input-group__addon.fa.fa-dollar
%input.text-input.input--full{disabled: "disabled", placeholder: "Placeholder", type: "text"}/
.field.field--invalid.field--required
%label Error
.input-group.input-group--full
.input-group__addon.fa.fa-dollar
%input.text-input.input--full{placeholder: "Placeholder", type: "text"}/
.field__message Field can't be left blank.
<div class='field'>
<label>Default</label>
<div class='input-group input-group--full'>
<div class='input-group__addon fa fa-dollar'></div>
<input class='text-input input--full' placeholder='Placeholder' type='text'>
</div>
</div>
<div class='field'>
<label>Disabled</label>
<div class='input-group input-group--full'>
<div class='input-group__addon fa fa-dollar'></div>
<input class='text-input input--full' disabled placeholder='Placeholder' type='text'>
</div>
</div>
<div class='field field--invalid field--required'>
<label>Error</label>
<div class='input-group input-group--full'>
<div class='input-group__addon fa fa-dollar'></div>
<input class='text-input input--full' placeholder='Placeholder' type='text'>
</div>
<div class='field__message'>Field can't be left blank.</div>
</div>
= f.field :default do
= f.label :default, class: 'block-label'
.input-group.input-group--full
.input-group__addon.fa.fa-dollar
= f.text_field :default, class: 'input--full', placeholder: 'Placeholder'
= f.field :disabled do
= f.label :disabled, class: 'block-label'
.input-group.input-group--full
.input-group__addon.fa.fa-dollar
= f.text_field :disabled, class: 'input--full', placeholder: 'Placeholder', disabled: true
.field
%input.checkbox-input{type: "checkbox"}/
%label Default
.field
%label Block
%input.text-input.input--full{placeholder: "Placeholder", type: "text"}/
<div class='field'>
<input class='checkbox-input' type='checkbox'>
<label>Default</label>
</div>
<div class='field'>
<label>Block</label>
<input class='text-input input--full' placeholder='Placeholder' type='text'>
</div>
= f.field :default do
= f.check_box :default, class: 'checkbox-input'
= f.label :default
= f.field :block do
= f.label :block
= f.text_field :block, class: 'input--full', placeholder: 'Placeholder'
.field
%label Default
%select.select-input.input--full
%option.placeholder{value: ""} Select One
%option{value: "One"} One
.field
%label Disabled
%select.select-input.input--full{disabled: "disabled"}
%option.placeholder{value: ""} Select One
%option{value: "One"} One
.field.field--invalid
%label Error
%select.select-input.input--full
%option.placeholder{value: ""} Select One
%option{value: "One"} One
.field__message Field can't be left blank.
<div class='field'>
<label>Default</label>
<select class='select-input input--full'>
<option class='placeholder' value=''>Select One</option>
<option value='One'>One</option>
</select>
</div>
<div class='field'>
<label>Disabled</label>
<select class='select-input input--full' disabled='disabled'>
<option class='placeholder' value=''>Select One</option>
<option value='One'>One</option>
</select>
</div>
<div class='field field--invalid'>
<label>Error</label>
<select class='select-input input--full'>
<option class='placeholder' value=''>Select One</option>
<option value='One'>One</option>
</select>
<div class='field__message'>Field can't be left blank.</div>
</div>
= f.field :default do
= f.label :default, class: 'block-label'
= f.select :default, nil, {}, class: 'input--full' do
%option.placeholder{value: ''} Select One
= options_for_select(options)
= f.field :disabled do
= f.label :disabled, class: 'block-label'
= f.select :disabled, nil, {}, class: 'input--full', disabled: true do
%option.placeholder{value: ''} Select One
= options_for_select(options)
.field
%input.checkbox-input{type: "checkbox"}/
%label Default
.field
%input.checkbox-input{checked: "checked", type: "checkbox"}/
%label Checked
.field
%input.checkbox-input{disabled: "disabled", type: "checkbox"}/
%label Disabled
.field.field--invalid.field--required
%input.checkbox-input{type: "checkbox"}/
%label Error
.field__message Field can't be left blank.
<div class='field'>
<input class='checkbox-input' type='checkbox'>
<label>Default</label>
</div>
<div class='field'>
<input checked class='checkbox-input' type='checkbox'>
<label>Checked</label>
</div>
<div class='field'>
<input class='checkbox-input' disabled type='checkbox'>
<label>Disabled</label>
</div>
<div class='field field--invalid field--required'>
<input class='checkbox-input' type='checkbox'>
<label>Error</label>
<div class='field__message'>Field can't be left blank.</div>
</div>
= f.field :default do
= f.label :default
= f.check_box :default, class: 'checkbox-input'
= f.field :checked do
= f.label :checked
= f.check_box :checked, class: 'checkbox-input', checked: true
= f.field :disabled do
= f.label :disabled
= f.check_box :disabled, class: 'checkbox-input', disabled: true
.field
%input.radio-input{name: "example-radio", type: "radio"}/
%label Default
.field
%input.radio-input{checked: "checked", name: "example-radio", type: "radio"}/
%label Checked
.field
%input.radio-input{disabled: "disabled", name: "example-radio", type: "radio"}/
%label Disabled
.field.field--invalid.field--required
%input.radio-input{name: "example-radio", type: "radio"}/
%label Error
.field__message Field can't be left blank.
<div class='field'>
<input class='radio-input' name='example-radio' type='radio'>
<label>Default</label>
</div>
<div class='field'>
<input checked class='radio-input' name='example-radio' type='radio'>
<label>Checked</label>
</div>
<div class='field'>
<input class='radio-input' disabled name='example-radio' type='radio'>
<label>Disabled</label>
</div>
<div class='field field--invalid field--required'>
<input class='radio-input' name='example-radio' type='radio'>
<label>Error</label>
<div class='field__message'>Field can't be left blank.</div>
</div>
= f.field :default do
= f.label :default
= f.radio_button :default, class: 'radio-input'
= f.field :checked do
= f.label :checked
= f.radio_button :checked, class: 'radio-input', checked: true
= f.field :disabled do
= f.label :disabled
= f.radio_button :disabled, class: 'radio-input', disabled: true
.field
%label.toggle-input
%input{type: "checkbox"}/
.slider
.label Turned Off
.field
%label.toggle-input
%input{checked: "checked", type: "checkbox"}/
.slider
.label Turned On
.field
%label.toggle-input
%input{disabled: "disabled", type: "checkbox"}/
.slider
.label Disabled
<div class='field'>
<label class='toggle-input'>
<input type='checkbox'>
<div class='slider'></div>
<div class='label'>Turned Off</div>
</label>
</div>
<div class='field'>
<label class='toggle-input'>
<input checked type='checkbox'>
<div class='slider'></div>
<div class='label'>Turned On</div>
</label>
</div>
<div class='field'>
<label class='toggle-input'>
<input disabled type='checkbox'>
<div class='slider'></div>
<div class='label'>Disabled</div>
</label>
</div>
= f.field :default do
= f.label :default, class: 'toggle-input'
= f.check_box :default
= f.div, class: 'slider'
= f.div, class: 'label'
= f.field :checked do
= f.label :checked, class: 'toggle-input'
= f.check_box :checked, checked: true
= f.div, class: 'slider'
= f.div, class: 'label'
= f.field :disabled do
= f.label :disabled, class: 'toggle-input'
= f.check_box :disabled, disabled: true
= f.div, class: 'slider'
= f.div, class: 'label'
.field
%label Default
%textarea.textarea-input.input--full{placeholder: "Placeholder", type: "text"}
.field
%label Disabled
%textarea.textarea-input.input--full{disabled: "disabled", placeholder: "Placeholder", type: "text"}
.field.field--invalid.field--required
%label Error
%textarea.textarea-input.input--full{placeholder: "Placeholder", type: "text"}
.field__message Field can't be left blank.
<div class='field'>
<label>Default</label>
<textarea class='textarea-input input--full' placeholder='Placeholder' type='text'></textarea>
</div>
<div class='field'>
<label>Disabled</label>
<textarea class='textarea-input input--full' disabled placeholder='Placeholder' type='text'></textarea>
</div>
<div class='field field--invalid field--required'>
<label>Error</label>
<textarea class='textarea-input input--full' placeholder='Placeholder' type='text'></textarea>
<div class='field__message'>Field can't be left blank.</div>
</div>
= f.field :default do
= f.label :default, class: 'block-label'
= f.text_area :default, class: 'input--full', placeholder: 'Placeholder'
= f.field :disabled do
= f.label :disabled, class: 'block-label'
= f.text_area :disabled, class: 'input--full', placeholder: 'Placeholder', disabled: true
If these inputs aren't working in your situation, refer to the old Form page in our Style Guide: that should have analogous inputs for all of the types on this page. If you're looking for another input type, you'll have to go with a custom implementation (and then we'll discuss whether or not to include it in the system!).
Primary designer was Alex Couch; primary developer was Carlos Leon.