Note: The Pattern Library is best viewed in Chrome or Firefox.
Button Colors:
Form Footer Buttons:
<!-- Button Color Examples -->
<button>Primary</button>
<button class="grey-button">Secondary</button>
<button class="green-button">Action</button>
<button class="red-button">Delete</button>
<!-- Form Footer Buttons -->
<div class="form-footer-controls">
<div class="button-group">
<button class="back-button">Back</button>
<div class="pull-right">
<button class="next-button">Next</button>
</div>
</div>
</div>
<div class="dol-help-callout">
Need Help? Email us: <a href="mailto:help-14c@dol.gov">help-14c@dol.gov</a>
</div>
<fieldset class="dol-form-sub-section">
<legend><h3>Application Type</h3></legend>
<hr>
[FORM FIELDS GO HERE]
</fieldset>
Each form subsection should be enclosed in a <fieldset>. The <h3> heading is inside the <legend> of the fieldset.
<fieldset class="dol-form-sub-section">
<legend class="hide">
<span id="thisHeadingLabel">Application Contact Person</span>
</legend>
<div class="dol-legend-h3-help">
<h3 aria-hidden="true">Application Contact Person</span></h3>
<helplink aria-controls="thisHeadingHelp" aria-describedby="thisHeadingLabel"></helplink>
</div>
<helptext id="thisHeadingHelp">This should be a person who can best answer questions concerning information contained on this application.</helptext>
<hr />
[FORM FIELDS GO HERE]
</fieldset>
Each form subsection should be enclosed in a <fieldset>.
The <legend> <span id> value should match the <helplink aria-describedby> value. The <helplink aria-controls> value should match the <helptext id> value.
Further explanation of the complexity of this pattern:
<div class="dol-form-question-block">
<label for="thisInput" class="dol-form-question-text">Employer's Trade Name</label>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<input id="thisInput" name="thisInput" type="text">
</div>
The <label for> value should match the <input id> and <input name> values.
<div class="dol-form-question-block">
<div class="dol-form-question-help">
<label for="thisInput" class="dol-form-question-text" id="thisInputLabel">Legal Name of Employer</label>
<helplink aria-controls="thisInputHelp" aria-describedby="thisInputLabel"></helplink>
</div>
<helptext id="thisInputHelp">[HELP TEXT GOES HERE]</helptext>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<input id="thisInput" name="thisInput" type="text">
</div>
The <label id> value should match the <helplink aria-describedby> value. The <helplink aria-controls> value should match the <helptext id> value.
<label for="thisInput">Name of Job or Contract</label>
<input id="thisInput" name="thisInput" type="text">
The <label for> value should match the <input id> and <input name> values.
<div class="dol-plain-label-help">
<label for="thisInput" id="thisInputLabel">Brief Description of Job/Task</label>
<helplink aria-controls="thisInputHelp" aria-describedby="thisInputLabel"></helplink>
</div>
<helptext id="thisInputHelp">[HELP TEXT GOES HERE]</helptext>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<input id="thisInput" name="thisInput" type="text">
The <label id> value should match the <helplink aria-describedby> value. The <helplink aria-controls> value should match the <helptext id> value.
<div class="dol-form-question-block" class="form-question-block">
<fieldset class="usa-fieldset-inputs usa-sans">
<legend class="dol-form-question-text">Is Service Contract Act (SCA)-covered work performed at this establishment / work site?</legend>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<ul class="usa-unstyled-list">
<li>
<input id="thisInputYes" type="radio" name="thisInput">
<label for="thisInputYes">Yes</label>
</li>
<li>
<input id="thisInputNo" type="radio" name="thisInput">
<label for="thisInputNo">No</label>
</li>
</ul>
</fieldset>
</div>
The form question itself is the <legend> of the fieldset. Each radio <input> has an associated <label>.
<div class="dol-form-question-block">
<fieldset class="usa-fieldset-inputs">
<legend class="hide"><span id="thisInputLabel">Does the Employer have a Trade Name?</span></legend>
<div class="dol-legend-help">
<span class="dol-form-question-text" aria-hidden="true">Does the Employer have a Trade Name?</span>
<helplink aria-controls="thisInputHelp" aria-describedby="thisInputLabel"></helplink>
</div>
<helptext id="thisInputHelp">Provide the trade name of the employer, if applicable.</helptext>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<ul class="usa-unstyled-list">
<li>
<input id="thisInputYes" type="radio" name="thisInput">
<label for="thisInputYes">Yes</label>
</li>
<li>
<input id="thisInputNo" type="radio" name="thisInput">
<label for="thisInputNo">No</label>
</li>
</ul>
</fieldset>
</div>
The form question itself is the <legend> of the fieldset. Each radio <input> has an associated <label>.
The <legend> <span id> value should match the <helplink aria-describedby> value. The <helplink aria-controls> value should match the <helptext id> value.
Further explanation of the complexity of this pattern:
<div class="dol-form-question-block">
<fieldset class="usa-fieldset-inputs usa-sans">
<legend class="dol-form-question-text">What type of establishment is this?</legend>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<ul class="usa-unstyled-list dol-list-help">
<li ng-repeat="">
<input id="thisInput" type="radio" name="thisInput" ng-value="" ng-model="">
<label id="thisInputLabel" for="thisInput">[LABEL GOES HERE]</label>
<helplink aria-controls="thisInputHelp" aria-describedby="thisInputLabel"></helplink>
<helptext id="thisInputHelp">
[HELP TEXT GOES HERE]
</helptext>
</li>
</ul>
</fieldset>
</div>
The form question itself is the <legend> of the fieldset. Each radio <input> has an associated <label>.
For each radio button, the <label id> value should match the <helplink aria-describedby> value. The <helplink aria-controls> value should match the <helptext id> value.
<div class="dol-form-question-block">
<fieldset class="dol-legend-plain usa-fieldset-inputs usa-sans">
<legend class="hide"><span id="thisInputLabel">Does worker perform work for this employer at any other work site?</span></legend>
<div class="dol-legend-help">
<span aria-hidden="true">Does worker perform work for this employer at any other work site?</span>
<helplink aria-controls="thisInputHelp" aria-describedby="thisInputLabel"></helplink>
</div>
<helptext id="thisInputHelp">
[HELP TEXT GOES HERE]
</helptext>
<div>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<ul class="usa-unstyled-list">
<li>
<input id="thisInputYes" type="radio" name="thisInput" ng-value="true">
<label for="thisInputYes">Yes</label>
</li>
<li>
<input id="thisInputNo" type="radio" name="thisInput" ng-value="false">
<label for="thisInputNo">No</label>
</li>
</ul>
</div>
</fieldset>
</div>
Use <fieldset class="dol-legend-plain"> for Secondary fieldsets.
The form question itself is the <legend> of the fieldset. Each radio <input> has an associated <label>.
The <legend> <span id> value should match the <helplink aria-describedby> value. The <helplink aria-controls> value should match the <helptext id> value.
Further explanation of the complexity of this pattern:
<div class="dol-form-question-block">
<label for="thisInput" class="dol-form-question-text">What is the most recently held certificate number for the main establishment?</label>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<input id="thisInput" name="thisInput" type="text" aria-describedby="thisInputExample" class="dol-side-example">
<span id="thisInputExample" class="dol-example-text">Example: 12-34567-H-890</span>
</div>
The <input aria-describedby> value should match the example text <span id> value.
<div class="dol-form-question-block">
<fieldset>
<legend class="hide"><span id="thisInputLabel">When did the Employer’s most recently completed fiscal quarter end?</span></legend>
<div class="dol-legend-help">
<span class="dol-form-question-text" aria-hidden="true">When did the Employer’s most recently completed fiscal quarter end?</span>
<helplink aria-controls="thisInputHelp" aria-describedby="thisInputLabel"></helplink>
</div>
<helptext id="thisInputHelp">[HELP TEXT GOES HERE]</helptext>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<date-field date-val=""></date-field>
</fieldset>
</div>
The form question itself is the <legend> of the fieldset. Each radio <input> has an associated <label>.
The <legend> <span id> value should match the <helplink aria-describedby> value. The <helplink aria-controls> value should match the <helptext id> value.
Further explanation of the complexity of this pattern:
<fieldset class="dol-legend-plain">
<legend>Date of Contact</legend>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<date-field date-val=""></date-field>
</fieldset>
Use <fieldset class="dol-legend-plain"> for Secondary fieldsets.
<div class="dol-form-question-block">
<fieldset>
<legend class="dol-form-question-text no-margin">Address of Establishment / Work Site</legend>
<div class="usa-form-large">
<div ng-class="">
<label for="thisInputAddress1">Street address</label>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<input id="thisInputAddress1" name="thisInputAddress1" type="text">
</div>
<div class="clearer" ng-class="">
<div class="usa-input-grid usa-input-grid-medium">
<label for="thisInputCity">City</label>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<input id="thisInputCity" name="thisInputCity" type="text">
</div>
<div class="usa-input-grid usa-input-grid-small">
<label for="thisInputState">State</label>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<state-field name="thisInputState" selected-state=""></state-field>
</div>
</div>
<div ng-class="">
<label for="thisInputZip">Zip Code</label>
<span class="usa-input-error-message" role="alert" tabindex="0"></span>
<input class="usa-input-medium" id="thisInputZip" name="thisInputZip" type="text" mask="99999" pattern=""
data-grouplength="5" data-delimiter="" data-politespace>
</div>
</div>
</fieldset>
</div>
Use <legend class="dol-form-question-text no-margin"> for proper styling.
The form question itself is the <legend> of the fieldset. Each <input> has an associated <label>.
File types accepted: PDF
<div class="dol-form-question-block" ng-class="">
<label for="thisFileUpload">Attach copies of all current SCA Wage Determinations for those contracts on which workers with disabilities are employed and earning subminimum wage.</label>
<span class="usa-input-error-message" role="alert"></span>
<attachment-field input-id="thisFileUpload" model-prefix="formDataModel" attachments="[]" />
</div>
The <label for> value should match the <attachment-field input-id> value.
Please see /section/wage-data or /section/work-sites for working tab examples.
<div id="" class="form-tabbed-section" ng-show="">
<a href class="form-tab active" ng-click="" aria-selected="true" ng-keyup="">
<div class="circle">1</div> Tab 1 Name
</a>
<a href class="form-tab" ng-click="" aria-selected="false" ng-keyup="">
<div class="circle">2</div> Tab 2 Name
</a>
</div>
Angular code is required for the tabs to function. Please see /section/wage-data or /section/work-sites for working tab examples.
<div class="section-results">
<h3>Assurances</h3>
<reviewbar errorstate=""></reviewbar>
<div ng-hide="">
<a href="" ng-click="">Review Assurances</a>
</div>
<button ng-click="" ng-show="">Edit Responses<span class="hide"> for Assurances</span></button>
</div>
Each "Edit Responses" button includes additional identifying text for screen readers only.