Design Components
Alerts
States: Base
Sample Code
<figure class="alert alert--success">
<a class="alert__icon-trigger" role="button" href="#">
<svg x="0px" y="0px" viewBox="0 0 16 16" class="alert__icon">
<g>
<path id="app-icon" class="st0" d="M0.8,1.7l13.2,13.2c0.4,0.4,1,0.4,1.4,0c0.4-0.4,0.4-1,0-1.4L2.2,0.3c-0.4-0.4-1-0.4-1.4,0 S0.4,1.4,0.8,1.7L0.8,1.7z M1.7,15.2L15.2,1.7c0.4-0.4,0.4-1,0-1.4c-0.4-0.4-1-0.4-1.4,0L0.3,13.8c-0.4,0.4-0.4,1,0,1.4 C0.7,15.6,1.3,15.6,1.7,15.2L1.7,15.2z"></path>
</g>
</svg>
</a>
<h5 class="alert__title">High fives! You have successfully completed an action.</h5>
</figure>
Component Usage
Alerts are to be used when a user needs to be notified of an action they took. For example, if a user creates a new account in the system, they should be notified if the action succeeds or fails. There are three styles of alerts: Success, warning and danger / failure. Depending on the action, the user should receive the appropriate response.
HTML Guidelines
This table gives you a quick overview of the CSS classes that can be applied to create alerts.
Class Name | Usage |
---|---|
.alert | This should be applied to the element you are styling to look like an alert. It is used to target alerts and hide them when the close icon is clicked.
|
.alert--success | This should be applied to the element you are styling to look like an alert. It provides the correct styles for the message being returned.
|
[aria-hidden="true"] | Set this on the alert when it is hidden from the view. |
[aria-hidden="false"] | Set this on the alert when it is visible in the view. |
Breadcrumbs
States: Base
Sample Code
<ul class="breadcrumb__list">
<li class="breadcrumb__item">
<a href="#" class="breadcrumb__link breadcrumb__link--active">Account Name</a>
</li>
<li class="breadcrumb__item">
<a href="#" class="breadcrumb__link breadcrumb__link--active">Site Name Goes Here</a>
</li>
<li class="breadcrumb__item">
<a href="#" class="breadcrumb__link breadcrumb__link--not-active">Pool Name Goes Here</a>
</li>
</ul>
Component Usage
Breadcrumbs are used to allow the user to move back up the account, site or pool tree. As the user dives deeper into an account's details, we need to provide a way for them move back to different levels without having to go back to the dashboard and then traverse back down.
HTML Guidelines
This table gives you a quick overview of the CSS classes that can be applied to create a breadcrumb list.
Class Name | Usage |
---|---|
.breadcrumb__list | This class name should be applied to an unordered list tag. It is the parent of the breadcrumb items.
|
.breadcrumb__item | This should be set on a list item. It requires a parent unordered list.
|
.breadcrumb__link | This should be set on an anchor tag and should be wrapped by a parent list item.
|
.breadcrumb__link--active | Apply this state to breadcrumb links that take the user back up the tree.
|
.breadcrumb__link--not-active | Apply this state to the current breadcrumb link. This will give the user a visual indication of where they are at in the tree.
|
Buttons
States: Base, Hover
Sample Code
<button class="button--primary">Action Title Here</button>
<button class="button--secondary">Action Title Here</button>
<button class="button--warning">Action Title Here</button>
<button class="button--disabled">Action Title Here</button>
<a href="#" role="button" class="button--primary">Action Title Here</a>
<a href="#" role="button" class="button--secondary">Action Title Here</a>
<a href="#" role="button" class="button--warning">Action Title Here</a>
<a href="#" role="button" class="button--disabled">Action Title Here</a>
Component Usage
Buttons should be used sparingly throughout the design of the application. They must serve a specific purpose or action. For instance, if the user is going to be creating a new site or pool, it is in our best interest to show them where they can do that in a bold way. However, if a user will not be preforming the action repeatedly or does not need to be warned of their actions, a link is best used. For example, creating a new account. This happens less frequently then creating sites and pools. It shouldn't draw as much attention.
HTML Guidelines
This table gives you a quick overview of the CSS classes that can be applied to create buttons.
Class Name | Usage |
---|---|
.button--primary | This class name should be applied to either an anchor tag or a button tag.
|
[role="button"] | Set this role on an anchor tag styled to behave like a button.
|
Form Elements
States: Base, Hover, Active
Sample Code
<!-- Standard Text Input -->
<label class="label">Standard Input</label>
<input type="text" name="text" placeholder="Placeholder text goes here" class="input--text">
<!-- Search Input -->
<label class="label">Search Input</label>
<input type="text" name="text" placeholder="Placeholder text goes here" class="input--text">
<!-- Disabled Input -->
<label class="label">Disabled Input</label>
<input type="text" name="text" placeholder="Can't type here" disabled="true" class="input--text">
<!-- Standard Select -->
<label class="label">Select Input</label>
<select>
<option>Select Option 1</option>
<option>Select Option 2</option>
<option>Select Option 3</option>
<option>Select Option 4</option>
<option>Select Option 5</option>
</select>
<!-- Disabled Select -->
<label class="label">Disabled Select Input</label>
<select class="select" disabled>
<option>Select Option 1</option>
<option>Select Option 2</option>
<option>Select Option 3</option>
<option>Select Option 4</option>
<option>Select Option 5</option>
</select>
<!-- Standard Radio Input -->
<label class="label label--radio-input">
<input type="radio" name="name" />
Standard Radio Input
</label>
Component Usage
There are a few different input types. The first is a standard input. This should be used for most form inputs. The type role might change, but the overall design stays the same. The second type is a search input. This type should be used when a user is preforming a search on a view or the application. Lastly, a select. This element should be used when a user needs to select one object from many.
HTML Guidelines
This table gives you a quick overview of the CSS classes that can be applied to create the standard form elements.
Class Name | Usage |
---|---|
.label | All standard form inputs should have a label to explain what data is expected.
|
input[type="text"] | This is the standard input type.
|
input[type="search"] | Set the input type to search for search inputs.
|
select | This is the standard select input type.
|
input[type="radio"] | This is the standard radio input type.
|
Links
States: Base, Hover
Sample Code
<a href="#" class="link--primary">Link Title Here</a>
<a href="#" class="link--secondary">Link Title Here</a>
<a href="#" class="link--warning">Link Title Here</a>
<a href="#" class="link--disabled">Link Title Here</a>
Component Usage
Links should be used to move a user from one page to another. The primary link is suggested in most cases. The exception to the rule is if a user is adding an item. Because we want to maintain a level of consistency, the secondary link (purple color) should be used. This will ensure it is the same color as the primary add button.
HTML Guidelines
This table gives you a quick overview of the CSS classes that can be applied to create links.
Class Name | Usage |
---|---|
.link--primary | This class name should be applied to an anchor tag.
|
Modals
States: Normal, Active
Sample Code
<button class="button--primary modal__trigger">Click for Modal</button>
<div class="modal">
<div class="modal__overlay" aria-hidden="true">
<div class="modal__container">
<a href="#" role="button" class="modal__close">
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="16px" height="16px" viewbox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="modal__close-icon">
<!-- Generator: Sketch 3.7.2 (28276) - http://www.bohemiancoding.com/sketch -->
<title>close-icon</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M6.58578645,7.53566887 L0.792893219,1.74277563 C0.402368927,1.35225134 0.402368927,0.719086361 0.792893219,0.328562069 C1.18341751,-0.061962223 1.81658249,-0.061962223 2.20710678,0.328562069 L7.99999997,6.12145525 L13.8285616,0.292893244 C14.2190858,-0.0976310618 14.8522508,-0.0976310841 15.2427751,0.292893194 C15.6332994,0.683417472 15.6332995,1.31658245 15.2427752,1.70710676 L9.41421353,7.53566882 L15.3600533,13.4815085 C15.7505775,13.8720328 15.7505775,14.5051978 15.3600533,14.8957221 C14.969529,15.2862464 14.336364,15.2862464 13.9458397,14.8957221 L8.00000002,8.94988243 L1.70710681,15.2427761 C1.31658253,15.6333004 0.683417549,15.6333004 0.292893244,15.2427761 C-0.0976310618,14.8522519 -0.0976310841,14.2190869 0.292893194,13.8285626 L6.58578645,7.53566887 Z" id="app-icon" fill="#ACACB4"></path>
</g>
</svg>
</a>
<div class="modal__body">
<header class="modal__header">
<h3 class="title">Modal Title</h3>
</header>
<p>Body text lorem ipsum dolor ipsum dolor sit sit possimus amet, consectetur adipisicing elit. Itaque, placeat, explicabo, veniam quos aperiam molestias eriam molestias molestiae suscipit ipsum enim quasi sit possimus quod atque nobis voluptas earum odit accusamus quibusdam. Body text lorem ipsum dolor ipsum dolor sit sit possimus amet.</p>
</div>
</div>
</div>
</div>
Component Usage
Modals are used as a way for the user to interact with the view without leaving it. For example, if the user clicks on an add site button from an account page, a modal should be revealed that allows the user to input data and create a new site. Modals should be single actions. Never use a modal as a step action or multi-part form.
Tables
States: Base, Active
Table Header | Table Header | Table Header | Table Header | Action | |
---|---|---|---|---|---|
Lorem ipsum dolor sit amet. | Lorem ipsum dolor sit amet. | 10,000 | 12,220 | View Delete | |
Lorem ipsum dolor sit amet. | Lorem ipsum dolor sit amet. | 10,000 | 12,220 | View Delete |
Sample Code
<table class="table table-alpha">
<thead>
<th>Table Header <i class="table__header__icon"><img src="../images/icons/functional/sort-icon.svg" /></i></th>
<th>Table Header <i class="table__header__icon"><img src="../images/icons/functional/sort-icon.svg" /></i></th>
<th>Table Header <i class="table__header__icon"><img src="../images/icons/functional/sort-icon.svg" /></i></th>
<th>Table Header <i class="table__header__icon"><img src="../images/icons/functional/sort-icon.svg" /></i></th>
<th>Action</th>
<th></th>
</thead>
<tbody>
<tr class="table__row">
<td>Lorem ipsum dolor sit amet.</td>
<td>Lorem ipsum dolor sit amet.</td>
<td>10,000</td>
<td>12,220</td>
<td>
<a href="#" class="link--primary margin-right--charlie">View</a>
<a href="#" class="link--warning">Delete</a>
</td>
<td class="table__expand">
<a href="#" class="table__expand-trigger">
<img class="table__expand-icon" src="../images/icons/functional/arrow-icon.svg" />
</a>
</td>
</tr>
<tr class="table__hidden" aria-hidden="true">
<td colspan="6" class="reset-padding">
<table class="table table-bravo">
<thead>
<th>Table Header</th>
<th>Table Header</th>
<th>Table Header</th>
<th>Table Header</th>
<th>Action</th>
</thead>
<tbody>
<tr>
<td>Lorem ipsum dolor sit amet</td>
<td>Lorem ipsum dolor sit</td>
<td>Lorem ipsum dolor sit</td>
<td>Lorem ipsum dolor sit</td>
<td>
<a href="#" class="link--primary margin-right--charlie">View</a>
<a href="#" class="link--warning">Delete</a>
</td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet</td>
<td>Lorem ipsum dolor sit</td>
<td>Lorem ipsum dolor sit</td>
<td>Lorem ipsum dolor sit</td>
<td>
<a href="#" class="link--primary margin-right--charlie">View</a>
<a href="#" class="link--warning">Delete</a>
</td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet</td>
<td>Lorem ipsum dolor sit</td>
<td>Lorem ipsum dolor sit</td>
<td>Lorem ipsum dolor sit</td>
<td>
<a href="#" class="link--primary margin-right--charlie">View</a>
<a href="#" class="link--warning">Delete</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr class="table__row">
<td>Lorem ipsum dolor sit amet.</td>
<td>Lorem ipsum dolor sit amet.</td>
<td>10,000</td>
<td>12,220</td>
<td>
<a href="#" class="link--primary margin-right--charlie">View</a>
<a href="#" class="link--warning">Delete</a>
</td>
<td class="table__expand">
<a href="#" class="table__expand-trigger">
<img class="table__expand-icon" src="../images/icons/functional/arrow-icon.svg" />
</a>
</td>
</tr>
<tr class="table__hidden" aria-hidden="true">
<td colspan="6" class="reset-padding">
<table class="table table-bravo">
<thead>
<th>Table Header</th>
<th>Table Header</th>
<th>Table Header</th>
<th>Table Header</th>
<th>Action</th>
</thead>
<tbody>
<tr>
<td>Lorem ipsum dolor sit amet</td>
<td>Lorem ipsum dolor sit</td>
<td>Lorem ipsum dolor sit</td>
<td>Lorem ipsum dolor sit</td>
<td>
<a href="#" class="link--primary margin-right--charlie">View</a>
<a href="#" class="link--warning">Delete</a>
</td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet</td>
<td>Lorem ipsum dolor sit</td>
<td>Lorem ipsum dolor sit</td>
<td>Lorem ipsum dolor sit</td>
<td>
<a href="#" class="link--primary margin-right--charlie">View</a>
<a href="#" class="link--warning">Delete</a>
</td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet</td>
<td>Lorem ipsum dolor sit</td>
<td>Lorem ipsum dolor sit</td>
<td>Lorem ipsum dolor sit</td>
<td>
<a href="#" class="link--primary margin-right--charlie">View</a>
<a href="#" class="link--warning">Delete</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
Component Usage
Tables are to be used for tabular data in the application. Tables are one of the most widely used components in the application. Additionally, as a way to peek inside of a site or pool without having to drill inside, the user can expand the table and see a layer down.
HTML Guidelines
This table gives you a quick overview of the CSS classes that can be applied to create a table.
Class Name | Usage |
---|---|
.table | Set this class on the table element. This class applies the base styles that all tables inherit.
|
.table-alpha | Set this class on the table element. This is the primary table class and should accompany the standard table class attribute.
|
.table-bravo | Set this class on the table element. This class should only be used for tables within tables. It applies slightly darker features.
|
.table__row | Set this class on the table row element of the parent table.
|
.table__hidden | Set this class on the table row element that contains a nested table.
|
[aria-hidden="true"] | Set this attribute on the table row element that contains a nested table that is current inactive.
|
[aria-hidden="false"] | Set this attribute on the table row element that contains the nested table when it is active.
|
.table__header__icon | Set this attribute on the table header element that contains an icon. For example a sort trigger.
|
Tabs
States: Base, Active
Sample Code
<ul class="tab__list">
<li class="tab__item">
<a href="#" class="tab__link tab__link--active">Tab Link One</a>
</li>
<li class="tab__item">
<a href="#" class="tab__link">Tab Link Two</a>
</li>
<li class="tab__item">
<a href="#" class="tab__link">Tab Link Three</a>
</li>
</ul>
Component Usage
Tabs should be used to separate views within views. The content should be related in some way. For example, the account view should be made up of three tabs: Account Details, Permaleased Numbers and Edit Account. The goal is to allow users to move from one section of an account, site or pool fluidly without having to search for navigation items or drill deep into the application.
HTML Guidelines
This table gives you a quick overview of the CSS classes that can be applied to create tabs.
Class Name | Usage |
---|---|
.tab__list | This class name should be applied to an unordered list element. It is the main wrapper to a tab list.
|
.tab__item | Set this on the list item. It must be nested inside of a tab list.
|
.tab__link | Set this class on the anchor item nested inside of a tab item.
|
.tab__link--active | Set this on the anchor item that is currently active. It applies the active tab link styles.
|
Status Bars
States: Base
Sample Code
<div class="status-bar--normal">
<h5 class="status-bar__title">25%</h5>
</div>
<div class="status-bar--caution">
<h5 class="status-bar__title">65%</h5>
</div>
<div class="status-bar--warning">
<h5 class="status-bar__title">95%</h5>
</div>
Component Usage
Status bars should be used to indicate the total number of phone numbers in use for an account. This component should give the user an indication of what accounts need attention and what ones are fine.
HTML Guidelines
This table gives you a quick overview of the CSS classes that can be applied to create status bars.
Class Name | Usage |
---|---|
.status-bar--normal | This class should be applied to a block level element.
|
.status-bar__title | This class should be applied to a header element and must be nested within the status bar element.
|