diff --git a/CHANGELOG.md b/CHANGELOG.md index 0afcd4a58..5cc8f8a88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,44 @@ + +## 1.7.0 (2015-05-18) + + +#### Bug Fixes + +* **forms packaging:** Do not rely on .h1 styles existing in the forms scss [finishes #92549350] ((28214d26)) +* **iconography:** fixed font-awesome peer dependency [] ((4dc7fb7e), closes (#91866334)) +* **modal:** + * Modals regain their fly-in behavior ((1704b413), closes (#94552398)) + * React Modals now display on open ((55366452), closes (#94552398)) +* **packaging:** + * Fix copyright holder name in css components ((f494575f), closes (#92150274)) + * Remove extra ../ from paths [] ((c2c1ef89), closes (#91991302)) +* **ribbons:** Update styleguide link in Ribbons component ((0b4720ac)) +* **test:** use buttons component in modal spec ((2cefe54d)) +* **tooltips:** Remove the default transparency from tooltips [#91368306] ((f9d649c7)) + + +#### Features + +* **alignment:** move alignment into npm ((abf1e7f7)) +* **back-to-top:** + * Add new back-to-top React component to docs ((79f79a70)) + * -published back-to-top css [finishes #91866360] ((0027e3e5)) +* **bordered-panel-title:** + * Add a React component for the new Panel Basic Alt ((d5a435a0)) + * Add new panel-basic-alt component ((11ba90aa)) +* **component-css-files:** Output individual CSS files per component ((acb5bb02)) +* **deprecated:** Deprecate some components ((4abcac55)) +* **fonts:** + * Add assets to typography and iconography components ((a2d1f58f)) + * Include fonts in typography component [#91437306] ((a99f0c86)) +* **iconography:** Publish iconography css component with dependencies [finishes #91866334] ((abbfbb10)) +* **links:** -published links component css [finishes #91888924] ((7b8c0908)) +* **maps:** Publish pui-css-maps component ((81ddf03d)) +* **prismjs:** Publish pui-prismjs ((acf08aec)) +* **react-expander:** Add Expander components to Pivotal UI. ((d1edc003)) +* **react-grids:** Extract and use grids npm package [finishes #90971838] ((769f247d)) +* **variables-and-mixins:** Publish pui-variables.scss and mixins.scss to npm ((7716f2f3)) + #### Deprecation warnings The following components are deprecated, and will be removed in the next major release: diff --git a/package.json b/package.json index 1c039dc29..8ceccc674 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "zeroclipboard": "^2.1.6" }, "description": "***", - "version": "1.6.0", + "version": "1.7.0", "main": "gulpfile.js", "dependencies": { "prismjs": "0.0.1", diff --git a/release/pui-v1.7.0/404.html b/release/pui-v1.7.0/404.html new file mode 100644 index 000000000..dc5d3485c --- /dev/null +++ b/release/pui-v1.7.0/404.html @@ -0,0 +1 @@ +

Whoops! 404 :(

diff --git a/release/pui-v1.7.0/ADDITIONAL_INTRO.html b/release/pui-v1.7.0/ADDITIONAL_INTRO.html new file mode 100644 index 000000000..3c300a6f4 --- /dev/null +++ b/release/pui-v1.7.0/ADDITIONAL_INTRO.html @@ -0,0 +1,895 @@ + + + + a brand new styleguide: + + + + + + + + + + + + + + +
+
+ +

These CSS components have been slated for removal in the next major release. +If your project uses any of these, please move the CSS into your own project. +We will not be maintaining it.

+ + +
+ + diff --git a/release/pui-v1.7.0/README.html b/release/pui-v1.7.0/README.html new file mode 100644 index 000000000..83f9d6f9e --- /dev/null +++ b/release/pui-v1.7.0/README.html @@ -0,0 +1,943 @@ + + + + a brand new styleguide: + + + + + + + + + + + + + + +
+
+ +

pui-prismjs

+

A default build of Prism for Pivotal UI. +This includes Prism and some common addons.

If you don't need all of the included languages/plugins and you would like a +smaller footprint, you can not use this package and roll your own!

+

Included languages

+ +

Included plugins

+ +

Installation

+

To install the package, from the command line, type:

+
+
npm install pui-prismjs
+
+
+

Usage

+
+
+
require('pui-prismjs');
+
+
+

Rolling your own

+

Install PrismJS:

+
+
npm install prismjs
+
+

Include the languages/plugins you need:

+
+
require('prismjs');
+require('prismjs/components/prism-ruby');
+require('prismjs/plugins/line-highlight/prism-line-highlight');
+/* ... */
+
+
+
+

This is a component of Pivotal UI. It is a Pivotal specific implementation of Bootstrap.

Styleguide +Github

(c) Copyright 2015 Pivotal Software, Inc. All Rights Reserved.

+ + +
+ + diff --git a/release/pui-v1.7.0/Staticfile b/release/pui-v1.7.0/Staticfile new file mode 100644 index 000000000..995c01649 --- /dev/null +++ b/release/pui-v1.7.0/Staticfile @@ -0,0 +1 @@ +# this is required for static file buildpack diff --git a/release/pui-v1.7.0/all.html b/release/pui-v1.7.0/all.html new file mode 100644 index 000000000..8c1b8da73 --- /dev/null +++ b/release/pui-v1.7.0/all.html @@ -0,0 +1,10916 @@ + + + + a brand new styleguide: All + + + + + + + + + + + + + + +
+
+ +

Accordions

+ + +

These are frequently used in combination with our panel components. They have a header and body.

Accordions can be used with any background color class, add them to the header and body.

NOTE: The 'alligators' (the > in the HAML below) are structural -- +without them, the browser renders the whitespace on the anchor tags, +and the images jump around by a few pixels when they're toggled.

Also see the select tabs for a toggle triggered by a select group.

+

Basic

+

Use this to expand and collapse content.

+
+
+ Look at this content. +
+
+
+
+
<a class="collapsed" data-toggle="collapse" href="#simple-collapse-example">
+  <div class="when-collapsed">
+    Expand me
+  </div>
+  <div class="when-expanded">
+    Collapse me
+  </div>
+</a>
+<div class="collapse" id="simple-collapse-example">
+  Look at this content.
+</div>
+
+ +
+
+ +

Sizes

+

Default accordion size:

+
+ +
+
+ This content should hide and show when the trigger is clicked. +
+
+
+ +
+
+
+
<div class="panel" id="accordion-1">
+  <div class="panel-heading-accordion bg-neutral-11 collapse-trigger collapsed" data-toggle="collapse" data-parent="#accordion-2" href="#myCollapse-1">
+    <div class="row">
+      <div class="col-md-23">
+        <h3 class="h5 collapse-title type-em-1 type-primary-2">My fancy application</h3>
+      </div>
+    </div>
+  </div>
+  <div class="panel-collapse collapse" id="myCollapse-1">
+    <div class="panel-body-accordion bg-neutral-11">
+      This content should hide and show when the trigger is clicked.
+    </div>
+  </div>
+</div>
+
+ +
+
+

Large accordion size:

+
+ +
+
+ This content should hide and show when the trigger is clicked. +
+
+
+
+
+
+
<div class="panel" id="accordion-2">
+  <div class="panel-heading-accordion-large bg-neutral-11 collapse-trigger collapsed" data-parent="#accordion-2" data-toggle="collapse" href="#myCollapse-2">
+    <div class="row">
+      <div class="col-md-23">
+        <h3 class="h5 collapse-title type-em-1 type-primary-2">My fancy application</h3>
+      </div>
+    </div>
+  </div>
+  <div class="panel-collapse collapse" id="myCollapse-2">
+    <div class="panel-body-accordion bg-neutral-11">
+      This content should hide and show when the trigger is clicked.
+    </div>
+  </div>
+</div>
+
+ +
+
+ +

Styles

+

Accordion with Divider:

This adds a divider between the accordion header and accordion body.

+
+ +
+
+ This content should hide and show when the trigger is clicked. +
+
+
+
+
+
+
<div class="panel" id="accordion-5">
+  <div class="panel-heading-accordion bg-neutral-11 collapse-trigger collapsed" data-parent="#accordion-3" data-toggle="collapse" href="#myCollapse-5">
+    <div class="row">
+      <div class="col-md-23">
+        <a>
+          <div class="when-collapsed-inline">
+            <i class="fa fa-caret-right collapse-icon"></i>
+          </div>
+          <div class="when-expanded-inline">
+            <i class="fa fa-caret-down collapse-icon"></i>
+          </div>
+        </a>
+        <h3 class="h5 collapse-title type-em-1 type-primary-2">My fancy application</h3>
+      </div>
+    </div>
+  </div>
+  <div class="panel-collapse collapse" id="myCollapse-5">
+    <div class="panel-body-accordion-divider bg-neutral-11">
+      This content should hide and show when the trigger is clicked.
+    </div>
+  </div>
+</div>
+
+ +
+
+

You can combine the accordion with any panel class to have a styled panel that opens and closes.

+

With Icons

+

Accordion with plus/minus icon:

+
+ +
+
+ This content should hide and show when the trigger is clicked. +
+
+
+
+
+
+
<div class="panel" id="accordion-3">
+  <div class="panel-heading-accordion-large collapse-trigger collapsed" data-parent="#accordion-2" data-toggle="collapse" href="#myCollapse-3">
+    <div class="row">
+      <div class="col-md-23">
+        <a>
+          <div class="when-collapsed-inline">
+            <i class="fa fa-plus-square collapse-icon"></i>
+          </div>
+          <div class="when-expanded-inline">
+            <i class="fa fa-minus-square collapse-icon"></i>
+          </div>
+        </a>
+        <h3 class="h5 collapse-title type-em-1 type-primary-2">My fancy application</h3>
+      </div>
+    </div>
+  </div>
+  <div class="panel-collapse collapse" id="myCollapse-3">
+    <div class="panel-body-accordion bg-neutral-11">
+      This content should hide and show when the trigger is clicked.
+    </div>
+  </div>
+</div>
+
+ +
+
+

Accordion with caret right/down icon:

+
+ +
+
+ This content should hide and show when the trigger is clicked. +
+
+
+
+
+
+
<div class="panel" id="accordion-4">
+  <div class="panel-heading-accordion collapse-trigger collapsed" data-parent="#accordion-3" data-toggle="collapse" href="#myCollapse-4">
+    <div class="row">
+      <div class="col-md-23">
+        <a>
+          <div class="when-collapsed-inline">
+            <i class="fa fa-caret-right collapse-icon"></i>
+          </div>
+          <div class="when-expanded-inline">
+            <i class="fa fa-caret-down collapse-icon"></i>
+          </div>
+        </a>
+        <h3 class="h5 collapse-title type-em-1 type-primary-2">My fancy application</h3>
+      </div>
+    </div>
+  </div>
+  <div class="panel-collapse collapse" id="myCollapse-4">
+    <div class="panel-body-accordion bg-neutral-11">
+      This content should hide and show when the trigger is clicked.
+    </div>
+  </div>
+</div>
+
+ +
+
+ +

Alerts

+ + +

s

Alerts are used to display flash messages to the user. When using alerts with simple one-line text, +wrap the text in a <p> with .em-high.

+
+

Success

+
+
+
+
+
<div class="alert alert-success">
+  <p class="em-high">Success</p>
+</div>
+
+ +
+
+

Alerts are also used to bring important notes to a user's attention. If the content of your alert +is a little more complicated, we would recommend using headings coupled with the content.

+
+
You should know...
+

There are some things you should note. Just in case you didn't figure it out already.

+
    +
  • thing 1
  • +
  • thing 2
  • +
+
+
+
+
+
<div class="alert alert-info">
+  <h5 class="em-high mtn">You should know...</h5>
+  <p>There are some things you should note. Just in case you didn't figure it out already.</p>
+  <ul>
+    <li>thing 1</li>
+    <li>thing 2</li>
+  </ul>
+</div>
+
+ +
+
+

If you want to include a link in your alert, use the class alert-link.

+
+
Important Link
+

+ It is very important that you + click here +

+
+
+
+
+
<div class="alert alert-warning">
+  <h5 class="em-high mtn">Important Link</h5>
+  <p>
+    It is very important that you
+    <a class="alert-link" href="http://bit.ly/1vkXaYb">click here</a>
+  </p>
+</div>
+
+ +
+
+ +

Alert Types

+

Our 4 alert types are:

+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ Everything is wonderful. + Be happy. +
+
+
+
+
+
+
<div class="alert alert-success">
+  <div class="media">
+    <div class="media-left">
+      <i class="fa fa-check-circle"></i>
+    </div>
+    <div class="media-body em-high">
+      Everything is wonderful.
+      <a class="alert-link" href="http://bit.ly/QCMZM5">Be happy.</a>
+    </div>
+  </div>
+</div>
+
+
+ +
+
+
+
+ +
+
+ Info for you. + Tell me more. +
+
+
+
+
+
+
<div class="alert alert-info">
+  <div class="media">
+    <div class="media-left">
+      <i class="fa fa-info-circle"></i>
+    </div>
+    <div class="media-body em-high">
+      Info for you.
+      <a class="alert-link" href="http://bit.ly/1DFns8H">Tell me more.</a>
+    </div>
+  </div>
+</div>
+
+
+ +
+
+
+
+ +
+
+ Warning: There is no parking on the dancefloor. + Be alert. +
+
+
+
+
+
+
<div class="alert alert-warning">
+  <div class="media">
+    <div class="media-left">
+      <i class="fa fa-exclamation-triangle"></i>
+    </div>
+    <div class="media-body em-high">
+      Warning: There is no parking on the dancefloor.
+      <a class="alert-link" href="http://bit.ly/1uM05DJ">Be alert.</a>
+    </div>
+  </div>
+</div>
+
+
+ +
+
+
+
+ +
+
+ Something has gone horribly awry. + You've made a huge mistake. +
+
+
+
+
+
+
+
<div class="alert alert-error">
+  <div class="media">
+    <div class="media-left">
+      <i class="fa fa-exclamation-triangle"></i>
+    </div>
+    <div class="media-body em-high">
+      Something has gone horribly awry.
+      <a class="alert-link" href="http://bit.ly/1rooFJV">You've made a huge mistake.</a>
+    </div>
+  </div>
+</div>
+
+
+ +
+
+ + +

Dismissable Alerts

+

By adding .alert-dismissable and a button, you can also make alerts dismissable.

+
+ +

Click the 'X' over there------>

+
+ +
+
+
+
<div class="alert alert-success alert-dismissable">
+  <button class="close" data-dismiss="alert">
+    <i class="fa fa-times"></i>
+  </button>
+  <p class="em-high">Click the 'X' over there------> </p>
+</div>
+
+ +
+
+

If a full-width dissmissable alert is desired, but the content needs to be aligned with +other content inside a container on the page (of a width 500px for this example), you might consider doing the following:

+
+
+
+
+ +
+
+ +
+
+ 3 new files available for Pivotal CF. + Mark all as viewed. +
+
+
+
+
+ +
+
+
+
<div class="pane bg-accent-5">
+  <div class="container pan" style="width:500px">
+    <div class="alert alert-info mtn">
+      <button class="close" data-dismiss="alert">
+        <i class="fa fa-times"></i>
+      </button>
+      <div class="media mtn">
+        <div class="media-left">
+          <i class="fa fa-info-circle"></i>
+        </div>
+        <div class="media-body em-high">
+          3 new files available for Pivotal CF.
+          <a class="type-sm alert-link" href="http://bit.ly/1DFns8H">Mark all as viewed.</a>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+
+ +
+
+ +

Alignment

+

The following classes can be used to for horizontal alignment.

+ + + + + + + + + + + + + + + + + + + +
+

+ .txt-l +

+
+
+
+
<p class="txt-l">
+  <code>.txt-l</code>
+</p>
+
+
+ +
+

+ .txt-c +

+
+
+
+
<p class="txt-c">
+  <code>.txt-c</code>
+</p>
+
+
+ +
+

+ .txt-r +

+
+
+
+
+
<p class="txt-r">
+  <code>.txt-r</code>
+</p>
+
+
+ +
+
+ +

On display: inline and display: table-cell elements, +the following classes can be used to for vertical alignment.

+
+ + + + + + +
+ .txt-t + + .txt-m + + .txt-b + + Distillery trust fund Neutra fingerstache plaid messenger bag. + Try-hard health goth PBR Helvetica hashtag. Try-hard narwhal letterpress, + crucifix selfies trust fund swag mustache quinoa chambray iPhone. +
+
+
+
+
<table class="table table-bordered">
+  <tr>
+    <td class="txt-t" width="20%">
+      <code>.txt-t</code>
+    </td>
+    <td class="txt-m" width="20%">
+      <code>.txt-m</code>
+    </td>
+    <td class="txt-b" width="20%">
+      <code>.txt-b</code>
+    </td>
+    <td width="40%">
+      Distillery trust fund Neutra fingerstache plaid messenger bag.
+      Try-hard health goth PBR Helvetica hashtag. Try-hard narwhal letterpress,
+      crucifix selfies trust fund swag mustache quinoa chambray iPhone.
+    </td>
+  </tr>
+</table>
+
+ +
+
+

If you need to vertically align an element that does not fit into those display types, +take a look at vertical alignment.

+

Avatars

+ + +

Regular avatars are expected to by 100px by 100px.

+
... +
+
+
+
<img alt="..." class="img-circle avatar" height="100" src="http://placehold.it/100x100" width="100">
+
+ +
+
+ +

Small Gravatar

+

Allows you to show a gravatar with the proper default 'image' (icon).

To use in a view, simply call

= render 'shared/gravatar_small', email: 'some@email.com'

+
+ + +
+
+ + +
+
+
+
+
<div class="gravatar gravatar-sm">
+  <img src="https://secure.gravatar.com/avatar/8b7970c372aabb936ca455127e04c959?s=20&amp;d=blank">
+  <i class="fa fa-user"></i>
+</div>
+<div class="gravatar gravatar-sm">
+  <img src="https://s.gravatar.com/avatar/c99bd3ce00444f946027741d5a5cd9e9?s=20&amp;d=blank">
+  <i class="fa fa-user"></i>
+</div>
+
+ +
+
+ +

Small with Envelope

+

Allows you to show a gravatar with an icon overlay.

To use in a view, simply call

= render 'shared/gravatar_small', email: 'some@email.com'

+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
<div class="gravatar gravatar-sm">
+  <img src="https://secure.gravatar.com/avatar/8b7970c372aabb936ca455127e04c959?s=20&amp;d=blank">
+  <i class="fa fa-user"></i>
+  <i class="overlay fa fa-envelope"></i>
+</div>
+<div class="gravatar gravatar-sm mlxl">
+  <img src="https://s.gravatar.com/avatar/c99bd3ce00444f946027741d5a5cd9e9?s=20&amp;d=blank">
+  <i class="fa fa-user"></i>
+  <i class="overlay fa fa-envelope"></i>
+</div>
+<div class="gravatar gravatar-sm mlxl">
+  <img src="https://secure.gravatar.com/avatar/8b7970c372aabb936ca455127e04c959?s=20&amp;d=blank">
+  <i class="fa fa-user highlight"></i>
+  <i class="overlay fa fa-check"></i>
+</div>
+<div class="gravatar gravatar-sm mlxl">
+  <img src="https://s.gravatar.com/avatar/c99bd3ce00444f946027741d5a5cd9e9?s=20&amp;d=blank">
+  <i class="fa fa-user"></i>
+  <i class="overlay fa fa-check"></i>
+</div>
+
+ +
+
+ +

Large Gravatar

+

Allows you to show a gravatar with the proper default 'image' (icon).

Large gravatar has a white background so it can be used on the edit profile form.

To use in a view, simply call

= render 'shared/gravatar_large', email: 'some@email.com'

+
+ + +
+
+ + +
+
+
+
+
<div class="gravatar gravatar-lg">
+  <img src="https://secure.gravatar.com/avatar/8b7970c372aabb936ca455127e04c959?s=80&amp;d=blank">
+  <i class="fa fa-user"></i>
+</div>
+<div class="gravatar gravatar-lg">
+  <img src="https://s.gravatar.com/avatar/c99bd3ce00444f946027741d5a5cd9e9?s=80&amp;d=blank">
+  <i class="fa fa-user"></i>
+</div>
+
+ +
+
+ +

Back to Top

+

You can use this component to scroll to the top of a page.

The button will be fixed to the bottom right hand corner of the page.

You can place the link anywhere in your markup, but best practices are either towards the top or bottom of your markup.

+
+
+
+
+
<a class="back-to-top" href="#" target="_blank" style="display: inline;"></a>
+
+ +
+
+ +

Backgrounds

+ + +

Background color classes can be applied to any element. See colors for a list of background classes.

+

Full Bleed

+

This example uses an about us hero image by default, but you can change it to any image you would like. +Keep in mind, blurry, treated images will look better when stretched to fit a particular content area.

+
+
+

Full bleed background image

+
+
+
+
+
+
<div class='pane bg-full-bleed'>
+  <div class='container'>
+    <h1 class='type-neutral-11 txt-c'>Full bleed background image</h1>
+  </div>
+</div>
+
+ +
+
+

To modify this component to use a custom image, use an inline background-image style like so:

+
+
+

Full bleed background image

+
+
+
+
+
+
<div class='pane bg-full-bleed' style="background-image: url(styleguide/such-awesome.jpg)">
+  <div class='container'>
+    <h1 class='type-neutral-11 txt-c'>Full bleed background image</h1>
+  </div>
+</div>
+
+ +
+
+ +

Overlays

+ +
+
+
+
+
.bg-cloud
+
+
+
+
+
+
.bg-glow
+
+
+
+ +

Buttons

+ + +

Button styles can be applied to any element. Typically you'll want to +use either a <button> or an <a> element:

+ + + + + + + + + + + + + + +
+
+
+
+
+
<button class="btn btn-primary">Button</button>
+
+
+ +
+ + +
+
+
<a class="btn btn-primary" href="http://trulia.com">Link</a>
+
+
+ +
+
+ +

If your button is actually a link to another page, please use the +<a> element, while if your button performs an action, such as submitting +a form or triggering some javascript event, then use a <button> element.

+

Full Width

+

There is an additional modifier that will make the button take the +full width of the container. It may be used with the any of the button +size and style modifiers.

Create block level buttons - those that span the full width of a parent - by adding .btn-block.

+
+
+
+
+
<button class="btn btn-primary btn-block">Full width button</button>
+
+ +
+
+ +

Sizes

+

There are two sizes for buttons: Large and default. Simply apply the +size modifier class for the desired size.

+ + + + + + + + + + + + + + +
+
+
+
+
+
<button class="btn btn-primary btn-lg">Large</button>
+
+
+ +
+
+
+
+
+
+
<button class="btn btn-primary">Default</button>
+
+
+ +
+
+ + +

Styles

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ButtonDisabledClassDescription
btn btn-defaultThis is what buttons look like, this is the go to button style.
btn btn-default-altThis is what buttons look like, this is the go to button style (on white backgrounds).
btn btn-primaryUse this button as the primary call to action
btn btn-lowlightUse this button for other actions, like cancel/dismiss
btn btn-dangerThis button is for delete actions, these actions should also have a confirmation dialog
btn btn-highlightUse this button for other important actions, e.g. restarting apps
btn btn-highlight-altUse this button for other important actions, e.g. marketing call to actions
+

Code

+ + +

This is your basic unstyled code sample:

+
class Foo
+  def bar
+    puts 'hi'
+  end
+end
+
+
+
+
<pre class="pre-unstyled"><code>class Foo
+  def bar
+    puts 'hi'
+  end
+end</code></pre>
+
+ +
+
+ +

Inline

+
+

This is an example of a paragraph with an inline code snippet within it.

+
+
+
+
<p>This is an example of a paragraph with <code>an inline code snippet</code> within it.</p>
+
+ +
+
+ +

Inline Dark

+
+

This is an example of a paragraph with a dark inline code snippet within it.

+
+
+
+
<p>This is an example of a paragraph with <code class="inline-dark">a dark inline code snippet</code> within it.</p>
+
+ +
+
+ +

Styled Code

+

In order to show syntax-highlighted code, you will need to apply a language specific class to the code tag. For example, .language-ruby.

There are several languages already available (and others available from the Prismjs.com website), including:

+
class Foo
+  def bar
+    puts 'hi'
+  end
+end
+
+
+
+
<pre><code class="language-ruby">class Foo
+  def bar
+    puts 'hi'
+  end
+end</code></pre>
+
+ +
+
+

Make it scrollable

+
class Foo
+  def bar
+    puts 'hi'
+  end
+
+  def bar
+    puts 'hi'
+  end
+
+  def bar
+    puts 'hi'
+  end
+
+  def bar
+    puts 'hi'
+  end
+
+  def bar
+    puts 'hi'
+  end
+
+  def bar
+    puts 'hi'
+  end
+
+  def bar
+    puts 'hi'
+  end
+end
+
+
+
+
<pre class="pre-scrollable"><code class="language-ruby">class Foo
+  def bar
+    puts 'hi'
+  end
+
+  def bar
+    puts 'hi'
+  end
+
+  def bar
+    puts 'hi'
+  end
+
+  def bar
+    puts 'hi'
+  end
+
+  def bar
+    puts 'hi'
+  end
+
+  def bar
+    puts 'hi'
+  end
+
+  def bar
+    puts 'hi'
+  end
+end</code></pre>
+
+ +
+
+

Scrollable with too little content:

+
class Foo
+  def bar
+    puts 'hi'
+  end
+end
+
+
+
+
<pre class="pre-scrollable"><code class="language-ruby">class Foo
+  def bar
+    puts 'hi'
+  end
+end</code></pre>
+
+ +
+
+

If you would like a set a default height, please add it manually.

+

Terminal Window

+

+
+
class Foo
+  def bar
+    puts 'hi'
+  end
+end
+
+class Bar
+  def bar
+    puts 'hi'
+  end
+end
+
+class Baz
+  def bar
+    puts 'hi'
+  end
+end
+
+class Bop
+  def bar
+    puts 'hi'
+  end
+end
+
+ +
+
+
+
<div class="terminal">
+  <pre><code class="language-ruby">class Foo
+  def bar
+    puts 'hi'
+  end
+end
+
+class Bar
+  def bar
+    puts 'hi'
+  end
+end
+
+class Baz
+  def bar
+    puts 'hi'
+  end
+end
+
+class Bop
+  def bar
+    puts 'hi'
+  end
+end</code></pre>
+</div>
+
+ +
+
+ +

Colors

+ + +

Our color pallet is composed of several different colors. At any given point in captures the current +evolution of our design and likely includes old and new colors. Whenever possible, evolve the old +colors rather than adding new ones.

+
+
+ Sass variables should only be used in variables.css.scss. +
+

+ They should never be used directly when building components, because it makes + it very hard to change the values later if you can't tell how they might have been used. + You should define your own variables that use these colors in variables.css.scss. +

+
+

This example shows proper use of Sass variables.

+
+
$tabs-active-bg-color: $gray-2;
+
+
+
+
+
+
+
+
    +
  • $gray-1
  • +
  • .bg-neutral-1
  • +
  • .type-neutral-1
  • +
+
+
+
+ +
+
+
+
+
    +
  • $gray-2
  • +
  • .bg-neutral-2
  • +
  • .type-neutral-2
  • +
+
+
+
+
+
+
+
+
    +
  • $gray-3
  • +
  • .bg-neutral-3
  • +
  • .type-neutral-3
  • +
+
+
+
+
+
+
+
+
    +
  • $gray-4
  • +
  • .bg-neutral-4
  • +
  • .type-neutral-4
  • +
+
+
+
+
+
+
+
+
    +
  • $gray-5
  • +
  • .bg-neutral-5
  • +
  • .type-neutral-5
  • +
+
+
+
+
+
+
+
+
    +
  • $gray-6
  • +
  • .bg-neutral-6
  • +
  • .type-neutral-6
  • +
+
+
+
+
+
+
+
+
    +
  • $gray-7
  • +
  • .bg-neutral-7
  • +
  • .type-neutral-7
  • +
+
+
+
+
+
+
+
+
    +
  • $gray-8
  • +
  • .bg-neutral-8
  • +
  • .type-neutral-8
  • +
+
+
+
+
+
+
+
+
    +
  • $gray-9
  • +
  • .bg-neutral-9
  • +
  • .type-neutral-9
  • +
+
+
+
+
+
+
+
+
    +
  • $gray-10
  • +
  • .bg-neutral-10
  • +
  • .type-neutral-10
  • +
+
+
+
+
+
+
+
+
    +
  • $gray-11
  • +
  • .bg-neutral-11
  • +
  • .type-neutral-11
  • +
+
+
+
+
+ +
+
+
+
+
+
    +
  • $dark-1
  • +
  • .bg-dark-1
  • +
  • .type-dark-1
  • +
+
+
+
+
+
+
+
+
    +
  • $dark-2
  • +
  • .bg-dark-2
  • +
  • .type-dark-2
  • +
+
+
+
+
+
+
+
+
    +
  • $dark-3
  • +
  • .bg-dark-3
  • +
  • .type-dark-3
  • +
+
+
+
+
+ +
+
+
+
+
+
    +
  • $brand-1
  • +
  • .bg-brand-1
  • +
  • .type-brand-1
  • +
+
+
+
+
+
+
+
+
    +
  • $brand-2
  • +
  • .bg-brand-2
  • +
  • .type-brand-2
  • +
+
+
+
+
+
+
+
+
    +
  • $brand-3
  • +
  • .bg-brand-3
  • +
  • .type-brand-3
  • +
+
+
+
+
+
+
+
+
    +
  • $brand-4
  • +
  • .bg-brand-4
  • +
  • .type-brand-4
  • +
+
+
+
+
+
+
+
+
    +
  • $brand-5
  • +
  • .bg-brand-5
  • +
  • .type-brand-5
  • +
+
+
+
+
+ +
+
+
+
+
+
    +
  • $accent-5
  • +
  • .bg-accent-5
  • +
  • .type-accent-5
  • +
+
+
+
+
+
+
+
+
    +
  • $accent-2
  • +
  • .bg-accent-2
  • +
  • .type-accent-2
  • +
+
+
+
+
+
+
+
+
    +
  • $accent-3
  • +
  • .bg-accent-3
  • +
  • .type-accent-3
  • +
+
+
+
+
+
+
+
+
    +
  • $accent-4
  • +
  • .bg-accent-4
  • +
  • .type-accent-4
  • +
+
+
+
+
+
+
+
+
    +
  • $accent-5
  • +
  • .bg-accent-5
  • +
  • .type-accent-5
  • +
+
+
+
+
+ +
+
+
+
+
+
    +
  • $error-1
  • +
  • .bg-error-1
  • +
  • .type-error-1
  • +
+
+
+
+
+
+
+
+
    +
  • $error-2
  • +
  • .bg-error-2
  • +
  • .type-error-2
  • +
+
+
+
+
+
+
+
+
    +
  • $error-3
  • +
  • .bg-error-3
  • +
  • .type-error-3
  • +
+
+
+
+
+
+
+
+
    +
  • $error-4
  • +
  • .bg-error-4
  • +
  • .type-error-4
  • +
+
+
+
+
+ +
+
+
+
+
+
    +
  • $warn-1
  • +
  • .bg-warn-1
  • +
  • .type-warn-1
  • +
+
+
+
+
+
+
+
+
    +
  • $warn-2
  • +
  • .bg-warn-2
  • +
  • .type-warn-2
  • +
+
+
+
+
+
+
+
+
    +
  • $warn-3
  • +
  • .bg-warn-3
  • +
  • .type-warn-3
  • +
+
+
+
+
+ +
+
+
+
+
+
    +
  • $success-1
  • +
  • .bg-success-1
  • +
  • .type-success-1
  • +
+
+
+
+
+
+
+
+
    +
  • $success-2
  • +
  • .bg-success-2
  • +
  • .type-success-2
  • +
+
+
+
+
+ +

Shadows & Glows

+ +
+
+
+
+
+
+
$shadow-1
+
+
+
+
+
+
$shadow-2
+
+
+
+
+
+
$shadow-3
+
+
+
+
+
+
$shadow-4
+
+
+
+
+
+
$glow-1
+
+
+
+
+
+
$glow-2
+
+
+
+
+
+
$glow-3
+
+
+
+
+
+
$glow-4
+
+
+
+
+
+
$glow-5
+
+
+
+
+

+

Console

+ + + +

Event List

+

This is a special list-group, with styles per-event for colors and icons.

+
+
+ Deprecation warning +
+

+ This component is deprecated. + To create this component, use a list group. +

+
+
+
    +
  • +
    +
    +
    +
    +
    +
    started app
    + user@example.com + 11/14/2014 at 03:05 PM UTC +
    +
    +
  • +
  • +
    +
    +
    +
    +
    +
    stopped app
    + user@example.com + 11/14/2014 at 03:05 PM UTC +
    +
    +
  • +
  • +
    +
    +
    +
    +
    +
    updated app
    + user@example.com + 11/14/2014 at 03:05 PM UTC +
    +
    +
  • +
  • +
    +
    +
    +
    +
    +
    scaled app
    + user@example.com + 11/14/2014 at 03:05 PM UTC +
    +
    +
  • +
  • +
    +
    +
    +
    +
    +
    app crashed
    + user@example.com + 11/14/2014 at 03:05 PM UTC +
    +
    +
  • +
  • +
    +
    +
    +
    +
    +
    created app
    + user@example.com + 11/14/2014 at 03:05 PM UTC +
    +
    +
  • +
  • +
    +
    +
    +
    +
    +
    renamed app
    + user@example.com + 11/14/2014 at 03:05 PM UTC +
    +
    +
  • +
+
+
+
+
<ul class="list-group event-list">
+  <li class="list-group-item started">
+    <div class="media">
+      <div class="media-left media-middle">
+        <div class="event-icon"></div>
+      </div>
+      <div class="media-body">
+        <div class="event-title">started app</div>
+        <span class="event-user">user@example.com</span>
+        <span class="event-timestamp">11/14/2014 at 03:05 PM UTC</span>
+      </div>
+    </div>
+  </li>
+  <li class="list-group-item stopped">
+    <div class="media">
+      <div class="media-left media-middle">
+        <div class="event-icon"></div>
+      </div>
+      <div class="media-body">
+        <div class="event-title">stopped app</div>
+        <span class="event-user">user@example.com</span>
+        <span class="event-timestamp">11/14/2014 at 03:05 PM UTC</span>
+      </div>
+    </div>
+  </li>
+  <li class="list-group-item updated">
+    <div class="media">
+      <div class="media-left media-middle">
+        <div class="event-icon"></div>
+      </div>
+      <div class="media-body">
+        <div class="event-title">updated app</div>
+        <span class="event-user">user@example.com</span>
+        <span class="event-timestamp">11/14/2014 at 03:05 PM UTC</span>
+      </div>
+    </div>
+  </li>
+  <li class="list-group-item scaled">
+    <div class="media">
+      <div class="media-left media-middle">
+        <div class="event-icon"></div>
+      </div>
+      <div class="media-body">
+        <div class="event-title">scaled app</div>
+        <span class="event-user">user@example.com</span>
+        <span class="event-timestamp">11/14/2014 at 03:05 PM UTC</span>
+      </div>
+    </div>
+  </li>
+  <li class="list-group-item crashed">
+    <div class="media">
+      <div class="media-left media-middle">
+        <div class="event-icon"></div>
+      </div>
+      <div class="media-body">
+        <div class="event-title">app crashed</div>
+        <span class="event-user">user@example.com</span>
+        <span class="event-timestamp">11/14/2014 at 03:05 PM UTC</span>
+      </div>
+    </div>
+  </li>
+  <li class="list-group-item created">
+    <div class="media">
+      <div class="media-left media-middle">
+        <div class="event-icon"></div>
+      </div>
+      <div class="media-body">
+        <div class="event-title">created app</div>
+        <span class="event-user">user@example.com</span>
+        <span class="event-timestamp">11/14/2014 at 03:05 PM UTC</span>
+      </div>
+    </div>
+  </li>
+  <li class="list-group-item renamed phn">
+    <div class="media">
+      <div class="media-left media-middle">
+        <div class="event-icon"></div>
+      </div>
+      <div class="media-body">
+        <div class="event-title">renamed app</div>
+        <span class="event-user">user@example.com</span>
+        <span class="event-timestamp">11/14/2014 at 03:05 PM UTC</span>
+      </div>
+    </div>
+  </li>
+</ul>
+
+ +
+
+ +

Panel Tile

+

Tile panels extend the behavior of flex panels. They provide an animated footer on hover, at the bottom of a fixed-height panel.

+ +
+
+
<ul class="list-cards list-card-1 list-cards-lg">
+  <li>
+    <a class="list-card-link panel panel-flex panel-tile bg-neutral-11" href="http://www.google.com/">
+      <div class="panel-body list-card-wrapper">
+        Hover to see secondary state.
+      </div>
+      <div class="panel-footer">
+        This is the footer
+      </div>
+    </a>
+  </li>
+</ul>
+
+ +
+
+ +

Traffic Lights

+

Traffic lights are used to show the status of the application. "On" is used for active applications, "off" for inactive, and "loading" for when the status is still loading.

+
+
+ Deprecation warning +
+

+ This component is deprecated. +

+
+
+ + + + + + + + + + + + + + + + + + + +
+

On

+
    +
  • + + 5 +
  • +
  • + + 1 +
  • +
  • + + 8 +
  • +
+
+
+
+
<h3>On</h3>
+<ul class="traffic-lights list-unstyled mvm">
+  <li class="green-light">
+    <i class="fa fa-circle"></i>
+    5
+  </li>
+  <li class="gray-light">
+    <i class="fa fa-circle"></i>
+    1
+  </li>
+  <li class="red-light">
+    <i class="fa fa-circle"></i>
+    8
+  </li>
+</ul>
+
+
+ +
+

Off

+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+
+
+
<h3>Off</h3>
+<ul class="traffic-lights list-unstyled mvm">
+  <li class="green-light off">
+    <i class="fa fa-circle"></i>
+  </li>
+  <li class="gray-light off">
+    <i class="fa fa-circle"></i>
+  </li>
+  <li class="red-light off">
+    <i class="fa fa-circle"></i>
+  </li>
+</ul>
+
+
+ +
+

Loading

+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+
+
+
+
<h3>Loading</h3>
+<ul class="traffic-lights list-unstyled mvm">
+  <li class="green-light off loading-green">
+    <i class="fa fa-circle"></i>
+  </li>
+  <li class="gray-light off loading-gray">
+    <i class="fa fa-circle"></i>
+  </li>
+  <li class="red-light off loading-red">
+    <i class="fa fa-circle"></i>
+  </li>
+</ul>
+
+
+ +
+
+ + +

Dividers

+

Dividers draw horizontal lines between different content groupings.

+

+
+
+
+
+
+
+
+
+
<hr class="divider-alternate-1"/>
+<hr class="divider-alternate-2"/>
+<div class="contrast-bar">
+  <hr class="divider-1"/>
+  <hr class="divider-2"/>
+</div>
+
+ +
+
+ +

Dropdowns

+ + +

Dropdowns are menus that can be triggered by buttons.

This is the basic bootstrap dropdown.

+
+
+
+
+
<div class="dropdown btn-group">
+  <button id="dropdown-button-1" class="dropdown-toggle btn btn-primary" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    Button Dropdown
+    <span class="caret"></span>
+  </button>
+  <ul class="dropdown-menu" role="menu" aria-labelledby="dropdown-button-1">
+    <li role="presentation">
+      <a href="http://www.google.com" role="menuitem">Google</a>
+    </li>
+    <li class="divider mvn"></li>
+    <li role="presentation">
+      <a href="http://www.yahoo.com" role="menuitem">Yahoo</a>
+    </li>
+    <li class="divider mvn"></li>
+    </li><li role="presentation">
+      <a href="http://www.aol.com" role="menuitem">Aol</a>
+    </li>
+  </ul>
+</div>
+
+ +
+
+ +
+
Dropdowns with dividers
+

+ If you want to add a divider between items in the dropdown, + add a `li.divider` between list items. +

+
+
+
+
+
+
+
<div class="dropdown btn-group">
+  <button id="drop3" data-toggle="dropdown" class="dropdown-toggle btn btn-link" type="button"><span>Link Dropdown</span><span class="caret"></span></button>
+  <ul class="dropdown-menu" role="menu" aria-labelledby="drop3">
+    <li role="presentation">
+      <a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Action</a>
+    </li>
+    <li role="presentation">
+      <a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Another action</a>
+    </li>
+    <li role="presentation">
+      <a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Something else here</a>
+    </li>
+    <li role="presentation">
+      <a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Separated link</a>
+    </li>
+  </ul>
+</div>
+
+ +
+
+ +
+
No links as dropdowns
+

+ Instead of using an a tag as a dropdown, + use a button.btn.btn-link. +

+
+

Here's a crazy-complex dropdown. Not for the faint of heart.

+ +
+
+
<div class="dropdown btn-group">
+  <button id="dropdown-button-2" class="dropdown-toggle btn btn-primary" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    dropdown trigger
+    <span class="caret"></span>
+  </button>
+  <ul class="dropdown-menu" role="menu" aria-labelledby="dropdown-button-2">
+    <li role="presentation">
+      <a href="#" role="menuitem" class="pvl">
+        <div class="media">
+          <div class="media-left media-middle prxl">
+            <i class="fa fa-check type-neutral-2"></i>
+          </div>
+          <div class="media-body" style="width: 400px;">
+            <h4 class="media-heading em-high type-neutral-3 mvn h5">updates and alerts</h4>
+            <span class="type-neutral-4">receive all tacos and burritos.</span>
+          </div>
+        </div>
+      </a>
+    </li>
+    <li role="presentation">
+      <a href="#" role="menuitem" class="pvl">
+        <div class="media">
+          <div class="media-left media-middle prxl">
+            <i class="fa fa-check type-neutral-2" style="visibility: hidden"></i>
+          </div>
+          <div class="media-body" style="width: 400px;">
+            <h4 class="media-heading em-high type-neutral-3 mvn h5">alerts only</h4>
+            <span class="type-neutral-4">only receive tacos when burritos are issued for this product and files.</span>
+          </div>
+        </div>
+      </a>
+    </li>
+    <li role="presentation">
+      <a href="#" role="menuitem" class="pvl">
+        <div class="media">
+          <div class="media-left media-middle prxl">
+            <i class="fa fa-check type-neutral-2" style="visibility: hidden"></i>
+          </div>
+          <div class="media-body" style="width: 400px;">
+            <h4 class="media-heading em-high type-neutral-3 mvn h5">none</h4>
+            <span class="type-neutral-4">do not receive any mexican food.</span>
+          </div>
+        </div>
+      </a>
+    </li>
+  </ul>
+</div>
+
+ +
+
+ + +

This is a notification dropdown with no notifications.

+
+
+
+
+
<div class="dropdown btn-group">
+  <a data-toggle="dropdown" class="dropdown-toggle btn btn-link" type="button">
+    <i class="fa fa-bell type-neutral-6 h2 mvn mrm"></i>
+  </a>
+  <ul class="dropdown-menu" role="menu">
+    <li role="presentation">
+      <div class="dropdown-notifications-none">
+        <i class="fa fa-bell type-neutral-6"></i>
+        <p class="type-neutral-4 em-alt mbn">No notifications</p>
+      </div>
+    </li>
+  </ul>
+</div>
+
+ +
+
+

This is a notification dropdown with notifications.

+ +
+
+
<div class="dropdown btn-group">
+  <a data-toggle="dropdown" class="dropdown-toggle btn btn-link" type="button">
+    <i class="fa fa-bell type-neutral-6 h2 mvn"></i>
+    <span class="dropdown-notifications-badge">2</span>
+  </a>
+  <ul class="dropdown-menu dropdown-notifications-list" role="menu">
+    <li role="presentation">
+      <a role="menuitem" href="https://twitter.com/fat">
+        <div class="media man pan">
+          <div class="media-left media-middle">
+            <h3 class="label label-primary mrm">New</h3>
+          </div>
+          <div class="media-body media-middle">
+            <h5 class="media-heading mbn type-dark-1">Notification</h5>
+            <p class="type-sm type-neutral-5 mvn">News for you</p>
+          </div>
+        </div>
+      </a>
+    </li>
+    <li role="presentation">
+      <a role="menuitem" href="https://twitter.com/fat">
+        <div class="media man pan">
+          <div class="media-left media-middle">
+            <h3 class="label label-primary mrm">New</h3>
+          </div>
+          <div class="media-body media-middle">
+            <h5 class="media-heading mbn type-dark-1">Pivotal-CF</h5>
+            <p class="type-sm type-neutral-5 mvn">1 New File Available</p>
+          </div>
+        </div>
+      </a>
+    </li>
+  </ul>
+</div>
+
+ +
+
+

This is a notification dropdown with alerts.

+ +
+
+
<div class="dropdown btn-group">
+  <a data-toggle="dropdown" class="dropdown-toggle btn btn-link" type="button">
+    <i class="fa fa-bell type-neutral-6 h2 mvn"></i>
+    <i class="fa fa-exclamation-triangle h4 type-warn-2 dropdown-notifications-alert"></i>
+  </a>
+  <ul class="dropdown-menu dropdown-notifications-list" role="menu">
+    <li role="presentation">
+      <a role="menuitem" href="https://twitter.com/fat">
+        <div class="media man pan">
+          <div class="media-left media-middle">
+            <i class="fa fa-exclamation-triangle type-warn-2 h4 mrm"></i>
+          </div>
+          <div class="media-body media-middle">
+            <h5 class="media-heading mbn type-dark-1">Product One</h5>
+            <p class="type-sm type-neutral-5 mvn">1 alert</p>
+          </div>
+        </div>
+      </a>
+    </li>
+    <li role="presentation">
+      <a role="menuitem" href="https://twitter.com/fat">
+        <div class="media man pan">
+          <div class="media-left media-middle">
+            <i class="fa fa-exclamation-triangle type-warn-2 h4 mrm"></i>
+          </div>
+          <div class="media-body media-middle">
+            <h5 class="media-heading mbn type-dark-1">Product Two</h5>
+            <p class="type-sm type-neutral-5 mvn">2 alerts</p>
+          </div>
+        </div>
+      </a>
+    </li>
+  </ul>
+</div>
+
+ +
+
+ +

Ellipsis

+

The type .type-ellipsis-1-line adds ellipsis to text when there is too much. Combine it with .col-md-* classes to get the width you want.

+
+
+ Deprecation warning +
+

+ The 2- and 3-line ellipsis are deprecated. +

+
+
+ + + + + + + + + + + + + + + + + + + +
+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+
+
+
+
<p class="type-ellipsis-1-line">
+  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+</p>
+
+
+ +
+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+
+
+
+
<p class="type-ellipsis-2-lines">
+  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+</p>
+
+
+ +
+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+
+
+
+
+
<p class="type-ellipsis-3-lines">
+  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+</p>
+
+
+ +
+
+ + +
+

+ Multi-line ellipsis only works on webkit. +

+
+ +

Embeds

+ + + +

Responsive

+

Allow browsers to determine video or slideshow dimensions based on the width of their containing block by creating an intrinsic ratio that will properly scale on any device.

Rules are directly applied to <iframe>, <embed>, and <object> elements; optionally use an explicit descendant class .embed-responsive-item when you want to match the styling for other attributes.

Pro-Tip! You don't need to include frameborder="0" in your <iframe>s as we override that for you.

+

16-by-9

+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
<h1 class="h2">16-by-9</h1>
+<div class="row">
+  <div class="col-md-5">
+    <div class="embed-responsive embed-responsive-16by9">
+      <iframe class="embed-responsive-item" src="//www.youtube.com/embed/JOCtdw9FG-s"></iframe>
+    </div>
+  </div>
+  <div class="col-md-7">
+    <div class="embed-responsive embed-responsive-16by9">
+      <iframe class="embed-responsive-item" src="//www.youtube.com/embed/JOCtdw9FG-s"></iframe>
+    </div>
+  </div>
+  <div class="col-md-12">
+    <div class="embed-responsive embed-responsive-16by9">
+      <iframe class="embed-responsive-item" src="//www.youtube.com/embed/JOCtdw9FG-s"></iframe>
+    </div>
+  </div>
+</div>
+
+ +
+
+
+

4-by-3

+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
<h1 class="h2">4-by-3</h1>
+<div class="row">
+  <div class="col-md-5">
+    <div class="embed-responsive embed-responsive-4by3">
+      <iframe class="embed-responsive-item" src="//www.youtube.com/embed/Awf45u6zrP0"></iframe>
+    </div>
+  </div>
+  <div class="col-md-7">
+    <div class="embed-responsive embed-responsive-4by3">
+      <iframe class="embed-responsive-item" src="//www.youtube.com/embed/Awf45u6zrP0"></iframe>
+    </div>
+  </div>
+  <div class="col-md-12">
+    <div class="embed-responsive embed-responsive-4by3">
+      <iframe class="embed-responsive-item" src="//www.youtube.com/embed/Awf45u6zrP0"></iframe>
+    </div>
+  </div>
+</div>
+
+ +
+
+ +

Autoselect Text Inputs

+

This form is used to show information that a user may wish to copy and paste somewhere.

+
+
+
+
+
<input class="auto-select form-control" data-behavior="AutoSelect" readonly="readonly" value="This should auto highlight"></input>
+
+ +
+
+ +

Checkboxes & Radios

+ + +

Checkboxes are for selecting one or several options in a list while radios are for selecting one option from many.

+

Default (stacked)

+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
<form class="styleguide-form" role="form">
+  <div class="checkbox">
+    <label>
+      <input type="checkbox">
+        Option one is this and that&mdash;be sure to include why it's great
+      </input>
+    </label>
+  </div>
+  <div class="radio">
+    <label>
+      <input id="optionsRadios1" name="optionsRadios" type="radio" value="option1" checked>
+        Option one is this and that&mdash;be sure to include why it's great
+      </input>
+    </label>
+  </div>
+  <div class="radio">
+    <label>
+      <input id="optionsRadios2" name="optionsRadios" type="radio" value="option2">
+        Option two can be something else and selecting it will deselect option one
+      </input>
+    </label>
+  </div>
+</form>
+
+ +
+
+ +

Inline Checkboxes & Radios

+

Use .checkbox-inline or .radio-inline class to a series of checkboxes or radios for controls appear on the same line.

+
+
+ + + +
+
+ + + +
+
+
+
+
+
<form class="styleguide-form" role="form">
+  <div class="form-group">
+    <label class="checkbox-inline">
+      <input id="inlineCheckbox1" type="checkbox" value="option1">
+        1
+      </input>
+    </label>
+    <label class="checkbox-inline">
+      <input id="inlineCheckbox2" type="checkbox" value="option2">
+        2
+      </input>
+    </label>
+    <label class="checkbox-inline">
+      <input id="inlineCheckbox3" type="checkbox" value="option3">
+        3
+      </input>
+    </label>
+  </div>
+  <div class="form-group">
+    <label class="radio-inline">
+      <input id="inlineradio1" type="radio" value="option1">
+        1
+      </input>
+    </label>
+    <label class="radio-inline">
+      <input id="inlineradio2" type="radio" value="option2">
+        2
+      </input>
+    </label>
+    <label class="radio-inline">
+      <input id="inlineradio3" type="radio" value="option3">
+        3
+      </input>
+    </label>
+  </div>
+</form>
+
+ +
+
+ +

Disabled Controls

+

Controls will occasionally need to be disabled. +You can do that by adding the disabled attribute. +Inputs, selects, checkboxes, fieldsets, buttons, and other form controls can all be disabled.

+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
<input class="form-control" type="text" placeholder="Disabled input here" disabled>
+
+
+ +
+
+
+
+
+
<select class="form-control" disabled>
+  <option>Option 1</option>
+  <option>Option 2</option>
+</select>
+
+
+ +
+
+
+
+
+
<label>
+  <input type="checkbox" disabled>
+  I'm disabled!
+</label>
+
+
+ +
+
+
+
+
+
+
<button class="btn" disabled>
+  Hi
+</button>
+
+
+ +
+
+ + +

Help Text

+

Help text +Block level help text for form controls.

+
+ + A block of help text that breaks onto a new line and may extend beyond one line. +
+
+
+
+
<form class="styleguide-form" role="form">
+  <input class="form-control" type="text"></input>
+  <span class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span>
+</form>
+
+ +
+
+ +

Inline Forms

+ + +

Add .form-inline to your <form> for left-aligned and inline-block controls. +This only applies to forms within viewports that are at least 768px wide.

+
+
+ Always add labels to every input. +
+

+ Screen readers will have trouble with your forms if you don't. + You can always hide the labels using the .sr-only class. +

+
+
+
+
+ + +
+
+ + +
+
+ +
+ +
+
+
+
+
<form class="styleguide-form form-inline" role="form">
+  <div class="form-group">
+    <label class="sr-only" for="exampleInputEmail2">Email address</label>
+    <input class="form-control" id="exampleInputEmail2" placeholder="Enter email" type="email"></input>
+  </div>
+  <div class="form-group">
+    <label class="sr-only" for="exampleInputPassword2">Password</label>
+    <input class="form-control" id="exampleInputPassword2" placeholder="Password" type="password"></input>
+  </div>
+  <div class="checkbox">
+    <label>
+      <input type="checkbox"></input>
+      Remember me
+    </label>
+  </div>
+  <button class="btn btn-primary" type="submit">Sign in</button>
+</form>
+
+ +
+
+ +

Inline Forms with Labels

+

Add .form-inline.inline-labels to your <form> for left-aligned and inline-block controls with labels inline with inputs.

+
+
+ + +
+
+ + +
+
+ +
+ +
+
+
+
+
<form class="styleguide-form form-inline inline-labels" role="form">
+  <div class="form-group">
+    <label for="exampleInputEmail2">Write a thing</label>
+    <input class="form-control" id="exampleInputEmail2" placeholder="Write a thing" type="email"></input>
+  </div>
+  <div class="form-group">
+    <label for="exampleSelect">Choose a thing</label>
+    <select class="form-control" id="exampleSelect">
+      <option>thing</option>
+    </select>
+  </div>
+  <div class="checkbox">
+    <label>
+      <input type="checkbox"></input>
+      Remember me
+    </label>
+  </div>
+  <button class="btn btn-primary" type="submit">Sign in</button>
+</form>
+
+ +
+
+ +

Inputs & Labels

+ + +

An input with the label top aligned (this is the default layout).

+
+
+ + +
+
+
+
+
+
<form class="styleguide-form" role="form">
+  <div class="form-group">
+    <label for="exampleInputEmail1">
+      <abbr title="required">*</abbr>
+      Email address
+    </label>
+    <input aria-required="true" class="form-control" id="exampleInputEmail1" placeholder="Enter email" required="required" type="email"></input>
+  </div>
+</form>
+
+ +
+
+

Use Bootstrap's predefined grid classes to align labels and groups of form controls in a horizontal +layout by adding .form-horizontal to the form. Doing so changes .form-groups to behave as grid rows, so no need for .row.

An input with the label left aligned

+
+
+
+ +
+
+ +
+
+
+
+
+
+
<form class="styleguide-form form-horizontal" role="form">
+  <div class="form-group">
+    <div class="col-md-6">
+      <label class="control-label" for="exampleInputEmail1">
+        <abbr title="required">*</abbr>
+        Email address
+      </label>
+    </div>
+    <div class="col-md-18">
+      <input aria-required="true" class="form-control" id="exampleInputEmail1" placeholder="Enter email" required="required" type="email"></input>
+    </div>
+  </div>
+</form>
+
+ +
+
+

An input with the label right aligned (N.B., control-label class provides the right alignment):

+
+
+ +
+ +
+
+
+
+
+
+
<form class="styleguide-form form-horizontal" role="form">
+  <div class="form-group">
+    <label class="col-md-6 control-label" for="exampleInputEmail1">
+      <abbr title="required">*</abbr>
+      Email address
+    </label>
+    <div class="col-md-18">
+      <input aria-required="true" class="form-control" id="exampleInputEmail1" placeholder="Enter email" required="required" type="email"></input>
+    </div>
+  </div>
+</form>
+
+ +
+
+

An unstyled inputs that doesn't have any of the default input styles

+
+ +
+
+
+
+
<form role="form">
+  <input class="unstyled" placeholder="This is a text input"></input>
+</form>
+
+ +
+
+ +

HTML5 Controls

+

Examples of standard form controls supported in an example form layout.

Inputs +Most common form control, text-based input fields. Includes support for +all HTML5 types: text, password, datetime, datetime-local, +date, month, time, week, number, email, url, search, +tel, and color.

+
+

+ Inputs will only be fully styled if their type is properly declared. +

+
+
+
+ +
+
+
+
+
<form class="styleguide-form" role="form">
+  <input class="form-control" placeholder="Text input" type="text"></input>
+</form>
+
+ +
+
+

Password field

+
+ +
+
+
+
+
<form class="styleguide-form" role="form">
+  <input class="form-control" placeholder="Password" type="password"></input>
+</form>
+
+ +
+
+

Date

+
+ +
+
+
+
+
<form class="styleguide-form" role="form">
+  <input class="form-control" placeholder="Date" type="date"></input>
+</form>
+
+ +
+
+

Number

+
+ +
+
+
+
+
<form class="styleguide-form" role="form">
+  <input class="form-control" placeholder="Number" type="number"></input>
+</form>
+
+ +
+
+

With a min/max and default starting value

+
+ +
+
+
+
+
<form class="styleguide-form" role="form">
+  <input class="form-control" placeholder="Number" type="number" min=0 max=2 value=1></input>
+</form>
+
+ +
+
+

With a different increment value

+
+ +
+
+
+
+
<form class="styleguide-form" role="form">
+  <input class="form-control" placeholder="Number" type="number" step=5></input>
+</form>
+
+ +
+
+

Email

Use this with fields that require email addresses to pop up the correct keyboard on mobile

+
+ +
+
+
+
+
<form class="styleguide-form" role="form">
+  <input class="form-control" placeholder="Email" type="email"></input>
+</form>
+
+ +
+
+

URL

Use this with fields that require urls to pop up the correct keyboard on mobile

+
+ +
+
+
+
+
<form class="styleguide-form" role="form">
+  <input class="form-control" placeholder="URL" type="url"></input>
+</form>
+
+ +
+
+

Telephone

Use this with fields that require telephone numbers to pop up the dialpad on mobile

+
+ +
+
+
+
+
<form class="styleguide-form" role="form">
+  <input class="form-control" placeholder="Telephone" type="tel"></input>
+</form>
+
+ +
+
+ +

Sizing

+

Set heights using the form control classes .input-lg and .input-sm. +Create larger or smaller form controls that match button sizes.

+ + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
<input class="form-control input-lg" placeholder=".input-lg" type="text">
+
+
+ +
+
+
+
+
+
<input class="form-control" placeholder="Default Input" type="text">
+
+
+ +
+
+
+
+
+
+
<input class="form-control input-sm" placeholder=".input-sm" type="text">
+
+
+ +
+
+ +

Set widths using grid column classes like .col-lg-*. +Wrap selects in grid columns, or any custom parent element, to easily enforce desired widths.

+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
<form class="styleguide-form" role="form">
+  <div class="row">
+    <div class="col-md-4">
+      <input class="form-control" placeholder=".col-xs-2" type="text"></input>
+    </div>
+    <div class="col-md-6">
+      <input class="form-control" placeholder=".col-xs-3" type="text"></input>
+    </div>
+    <div class="col-md-8">
+      <input class="form-control" placeholder=".col-xs-4" type="text"></input>
+    </div>
+  </div>
+</form>
+
+ +
+
+ +

Search Inputs

+

Use this input when creating a search component.

+
+
+
+
+
<div class="form-group form-group-search">
+  <input class="form-control" placeholder="This is a searchbox">
+  <i class="fa fa-search"></i>
+</div>
+
+ +
+
+ +

Read-Only Inputs

+

Add the readonly boolean attribute on an input to prevent user input and style the input as disabled.

+
+
+
+
+
<input class="form-control" type="text" placeholder="Readonly input here..." readonly>
+
+ +
+
+ +

Selects

+ + +

Selects are excellent to use because they will automatically +behave as expected cross browser on different devices. Prefer +them over a custom dropdown whenever possible.

+
+ +
+
+
+
+
<form class="styleguide-form" role="form">
+  <select class="form-control">
+    <option>default option</option>
+    <option>an option</option>
+    <option>another option</option>
+  </select>
+</form>
+
+ +
+
+ +

Sizing

+

Set heights using the form control classes .input-lg and .input-sm. +Create larger or smaller form controls that match button sizes.

+ + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
<select class="form-control input-lg">
+  <option>Option 1</option>
+  <option>Option 2</option>
+</select>
+
+
+ +
+
+
+
+
+
<select class="form-control" Input">
+  <option>Option 1</option>
+  <option>Option 2</option>
+</select>
+
+
+ +
+
+
+
+
+
+
<select class="form-control input-sm">
+  <option>Option 1</option>
+  <option>Option 2</option>
+</select>
+
+
+ +
+
+ +

Set widths using grid column classes like .col-lg-*. +Wrap inputs in grid columns, or any custom parent element, to easily enforce desired widths.

+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
<form class="styleguide-form" role="form">
+  <div class="row">
+    <div class="col-md-4">
+      <input class="form-control" placeholder=".col-xs-2" type="text"></input>
+    </div>
+    <div class="col-md-6">
+      <input class="form-control" placeholder=".col-xs-3" type="text"></input>
+    </div>
+    <div class="col-md-8">
+      <input class="form-control" placeholder=".col-xs-4" type="text"></input>
+    </div>
+  </div>
+</form>
+
+ +
+
+ +

Fancy Selects

+

This is a fancy select!

+
+ +
+ +
+
+
+
+
+
<form class="styleguide-form" role="form" style="width: 200px">
+  <label for="fancy-select">Description</label>
+  <div class="select-fancy">
+    <select class="form-control">
+      <option>Fancy Option 1</option>
+      <option>Fancy Option 2</option>
+    </select>
+  </div>
+</form>
+
+ +
+
+ +

Static Controls

+

When you need to place plain text next to a form label within a form, +use the .form-control-static class on a <p>.

Here's an example in a horizontal form:

+
+
+ +
+

email@example.com

+
+
+
+ +
+ +
+
+
+
+
+
+
<form class="form-horizontal styleguide-form" role="form">
+  <div class="form-group">
+    <label class="col-md-4 control-label">Email</label>
+    <div class="col-sm-10">
+      <p class="form-control-static">email@example.com</p>
+    </div>
+  </div>
+  <div class="form-group">
+    <label class="col-md-4 control-label" for="inputPassword">Password</label>
+    <div class="col-sm-10">
+      <input class="form-control" id="inputPassword" placeholder="Password" type="password"></input>
+    </div>
+  </div>
+</form>
+
+ +
+
+

Here's an example in a vertical form:

+
+
+ +

someguy@test.com

+
+
+ + +
+
+
+
+
+
<form class="styleguide-form" role="form">
+  <div class="form-group">
+    <label class="control-label">Email</label>
+    <p class="form-control-static">someguy@test.com</p>
+  </div>
+  <div class="form-group">
+    <label class="control-label" for="name">Name</label>
+    <input class="form-control" id="name" placeholder="name"></input>
+  </div>
+</form>
+
+ +
+
+ +

Text Areas

+

Text areas are used for larger amounts of input.

+
+
+ + +
+
+
+
+
+
<form class="styleguide-form" role="form">
+  <div class="form-group">
+    <label for="exampleTextAreaId">Description</label>
+    <textarea class="form-control" id="exampleTextAreaId" rows="3"></textarea>
+  </div>
+</form>
+
+ +
+
+ +

Toggle Switches

+

A toggle switch is a horizontally styled checkbox which represents true with blue and false with gray.

+
+ + +
+
+
+
+
<div class="form-group">
+  <input id="toggleSwitch" class="toggle-switch toggle-switch-lg" type="checkbox">
+  <label for="toggleSwitch">Toggle Switch</label>
+</div>
+
+ +
+
+ +

Validations

+

To show validation errors on a field, add .has-error to the field's form group. +This class can be used for all types of inputs.

Error messages should use the classes .help-block.has-error.

+ + + + + + + + + + + + + + +
+
+
+ + + + Error help text + +
+
+
+
+
+
<form class="styleguide-form" role="form">
+  <div class="form-group has-error">
+    <label class="control-label" for="inputError">
+      Input with error
+    </label>
+    <input id="inputError" class="form-control" type="text">
+    <span class="help-block has-error">
+      Error help text
+    </span>
+  </div>
+</form>
+
+
+ +
+
+
+
+ + + Error help text + +
+
+
+
+
+
+
+
<form class="styleguide-form" role="form">
+  <div class="form-group has-error">
+    <div class="checkbox">
+      <label class="control-label">
+        <input type="checkbox" value="">
+        Checkbox which needs to be checked
+      </label>
+      <span class="help-block has-error">
+        Error help text
+      </span>
+    </div>
+  </div>
+</form>
+
+
+ +
+
+ +

If you're doing client-side validation and want to show successful validation of a field, +add .has-success to the field's form group.

+
+

+ The .has-success class can only be used on inputs that have a text-box. +

+
+
+ + + + + + + + + +
+
+
+ + +
+
+
+
+
+
+
<form class="styleguide-form" role="form">
+  <div class="form-group has-success">
+    <label class="control-label" for="inputSuccess">
+      Input with success
+    </label>
+    <input id="inputSuccess" class="form-control" type="text">
+  </div>
+</form>
+
+
+ +
+
+ + +

Grids

+ + + +

+ Pivotal ui (via bootstrap) includes a responsive, mobile first fluid grid system that + appropriately scales up to 24 columns as the device or viewport size increases. + To work with the system, you need to treat mobile as your default + and build more complex layouts up from there. +

+ +

Introduction

+

Grid systems are used for creating page layouts through a series of rows and columns that house your content. +Here's how the bootstrap grid system works:

Columns are defined by two properties: +the breakpoint at which they start acting like columns, +and their relative width (on a scale of 24) beginning at this breakpoint. +For example:

Look to the examples for applying these principles to your code.

+

Media Queries

+

We use the following media queries in our sass files to create the key breakpoints in our grid system.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameSizeVariable Name
mobileno media query since this is the default in bootstrap
x-small480px$screen-xs-min
small768px$screen-sm-min
medium992px$screen-md-min
large1200px$screen-lg-min
x-large1800px$screen-xl-min
+

Grid Sizes

+

See how aspects of the bootstrap grid system work across multiple devices with a handy table.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ extra small devices + phones (≤768px) + + small devices + tablets (>768px) + + medium devices + laptops (>992px) + + large devices + desktops (>1200px) +
grid behaviorhorizontal at all timescollapsed to start, horizontal above breakpoints
container widthnone (auto)750px970px1170px
class prefix.col-xs-.col-sm-.col-md-.col-lg-
# of columns24
column widthauto~62px~81px~97px
gutter width30px (15px on each side of a column)
nestableyes
offsetsyes
column orderingyes
+ +

Examples

+

Using a single set of .col-md-* grid classes, +you can create a basic grid system that starts out stacked on mobile devices and tablet devices +(the extra small to small range) before becoming horizontal on desktop (medium) devices. +Place grid columns in any .row.

+
+

The .grid-show class in the examples is for demo purposes. Don't use it IRL.

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+
+
<div class="row grid-show">
+  <div class="col-md-2"></div>
+  <div class="col-md-2"></div>
+  <div class="col-md-2"></div>
+  <div class="col-md-2"></div>
+  <div class="col-md-2"></div>
+  <div class="col-md-2"></div>
+  <div class="col-md-2"></div>
+  <div class="col-md-2"></div>
+  <div class="col-md-2"></div>
+  <div class="col-md-2"></div>
+  <div class="col-md-2"></div>
+  <div class="col-md-2"></div>
+</div>
+
+<div class="row grid-show">
+  <div class="col-md-16"></div>
+  <div class="col-md-8"></div>
+</div>
+
+<div class="row grid-show">
+  <div class="col-md-8"></div>
+  <div class="col-md-8"></div>
+  <div class="col-md-8"></div>
+</div>
+
+<div class="row grid-show">
+  <div class="col-md-12"></div>
+  <div class="col-md-12"></div>
+</div>
+
+ +
+
+ +

Example: Mobile and Desktop

+

Don't want your columns to simply stack in smaller devices? +Use the extra small and medium device grid classes by adding .col-xs-* .col-md-* to your columns. +See the example below for a better idea of how it all works.

+
+
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+
+
+
+
<!-- stack the columns on mobile by making one full-width and the other half-width -->
+<div class="row grid-show">
+  <div class="col-xs-24 col-md-16"></div>
+  <div class="col-xs-12 col-md-8"></div>
+</div>
+
+<!-- columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
+<div class="row grid-show">
+  <div class="col-xs-12 col-md-8"></div>
+  <div class="col-xs-12 col-md-8"></div>
+  <div class="col-xs-12 col-md-8"></div>
+</div>
+
+<!-- columns are always 50% wide, on mobile and desktop -->
+<div class="row grid-show">
+  <div class="col-xs-12"></div>
+  <div class="col-xs-12"></div>
+</div>
+
+ +
+
+ +

Example: Mobile, Tablet, Desktops

+

Build on the previous example by creating even more dynamic and powerful layouts +with tablet .col-sm-* classes.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
<div class="row grid-show">
+  <div class="col-xs-24 col-sm-12 col-md-16"></div>
+  <div class="col-xs-12 col-md-8"></div>
+</div>
+<div class="row grid-show">
+  <div class="col-xs-12 col-sm-8"></div>
+  <div class="col-xs-12 col-sm-8"></div>
+  <!-- optional: clear the xs cols if their content doesn't match in height -->
+  <div class="clearfix visible-xs-block"></div>
+  <div class="col-xs-12 col-sm-8"></div>
+</div>
+
+ +
+
+ +

Example: Column Wrapping

+

If more than 24 columns are placed within a single row, each group of extra columns will, +as one unit, wrap onto a new line.

+
+
+
+
+
+
+
+
+
+
+
+
<div class="row grid-show">
+  <div class="col-xs-12"></div>
+  <div class="col-xs-12"></div>
+  <div class="col-xs-10"></div>
+  <div class="col-xs-10"></div>
+  <div class="col-xs-5"></div>
+  <div class="col-xs-6"></div>
+</div>
+
+ +
+
+

note In the second row, since 10 + 10 + 5 > 24, +the 5-column-wide div gets wrapped onto a new line as one contiguous unit. +Subsequent columns continue along the new line.

+

Gutter Sizes

+

You can change the size of a row's gutters with these classes.

+ + + + + + + + + + + + + + + +
ClassPadding between columns
default20px
.row-gutter-md10px
.row-gutter-sm5px

Here's what the gutters look like in action.

+ + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
<div class="row grid-show">
+  <div class="col-md-12" grid-content="Default gutter"></div>
+  <div class="col-md-12" grid-content="Default gutter"></div>
+</div>
+
+
+ +
+
+
+
+
+
+
+
+
<div class="row row-gutter-md grid-show">
+  <div class="col-md-12" grid-content="Medium gutter"></div>
+  <div class="col-md-12" grid-content="Medium gutter"></div>
+</div>
+
+
+ +
+
+
+
+
+
+
+
+
+
<div class="row row-gutter-sm grid-show">
+  <div class="col-md-12" grid-content="Small gutter"></div>
+  <div class="col-md-12" grid-content="Small gutter"></div>
+</div>
+
+
+ +
+
+ + +

Responsive Column Resets

+

With the four tiers of grids available you're bound to run into issues where, +at certain breakpoints, your columns don't clear quite right as one is taller than the other. +To fix that, use a combination of a .clearfix +and our responsive utility classes.

+
+
+
+ + +
+ +
+
+
+
+
+
+
<div class="row grid-show">
+  <div class="col-xs-12 col-sm-6" grid-content="this is a tall column"></div>
+  <div class="col-xs-12 col-sm-6"></div>
+
+  <!-- add the extra clearfix for only the required viewport -->
+  <div class="clearfix visible-xs-block"></div>
+
+  <div class="col-xs-12 col-sm-6"></div>
+  <div class="col-xs-12 col-sm-6"></div>
+</div>
+
+ +
+
+ +

Offsetting Columns

+

Move columns to the right using .col-md-offset-* classes. +These classes increase the left margin of a column by * columns. +For example, .col-md-offset-4 moves .col-md-4 over four columns.

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<div class="row grid-show">
+  <div class="col-md-8"></div>
+  <div class="col-md-8 col-md-offset-8"></div>
+</div>
+<div class="row grid-show">
+  <div class="col-md-6 col-md-offset-6"></div>
+  <div class="col-md-6 col-md-offset-6"></div>
+</div>
+<div class="row grid-show">
+  <div class="col-md-12 col-md-offset-6"></div>
+</div>
+
+ +
+
+ +

Column Ordering

+

Easily change the order of our built-in grid columns +with .col-md-push-* and .col-md-pull-* modifier classes. +This is useful if you want to change the order of columns at different screen sizes.

+
+
+
+
+
+
+
+
<div class="row grid-show">
+  <div class="col-md-18 col-md-push-6"></div>
+  <div class="col-md-6 col-md-pull-18"></div>
+</div>
+
+ +
+
+ +

Hoverable

+

This component is for showing hidden actions on hover. +If you put this on an element then hovering on that parent element will show the hidden element.

List example:

This can be used with any kind of list but the list group style seems to fit this use case best.

+
    +
  • + List Item 1 + Edit +
  • +
  • + List Item 2 + Edit +
  • +
  • + List Item 3 + Edit +
  • +
  • + Not hoverable +
  • +
+
+
+
+
<ul class="list-group" hoverable-group="true">
+  <li class="list-group-item" hoverable="true">
+    List Item 1
+    <a class="hovered" href="#">Edit</a>
+  </li>
+  <li class="list-group-item" hoverable="true">
+    List Item 2
+    <a class="hovered" href="#">Edit</a>
+  </li>
+  <li class="list-group-item" hoverable="true">
+    List Item 3
+    <a class="hovered" href="#">Edit</a>
+  </li>
+  <li class="list-group-item">
+    Not hoverable
+  </li>
+</ul>
+
+ +
+
+

Table example:

+
+ + + + + + + + + + + + + + + +
Name
+ Row 1 + Delete +
+ Row 2 + Delete +
+ Row 3 + Delete +
+ Not hoverable +
+
+
+
+
<table hoverable-group="true">
+  <tr>
+    <th>Name</th>
+  </tr>
+  <tr hoverable="true">
+    <td>
+      Row 1
+      <a class="hovered" href="#">Delete</a>
+    </td>
+  </tr>
+  <tr hoverable="<%= true %>">
+    <td>
+      Row 2
+      <a class="hovered" href="#">Delete</a>
+    </td>
+  </tr>
+  <tr hoverable="true">
+    <td>
+      Row 3
+      <a class="hovered" href="#">Delete</a>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      Not hoverable
+    </td>
+  </tr>
+</table>
+
+ +
+
+ +

Iconography

+ + +

We use Font Awesome for scalable vector icons that can be customized - size, color, drop shadow, +and anything that can be done with CSS. These icons will always match the font color.

Here are some commonly used icons:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ButtonClassDescription
.fa.fa-plusRenders our plus icon
.fa.fa-userRenders our person icon
.fa.fa-sort-downRenders our triangle icon
.fa.fa-cogRenders our gear icon
.fa.fa-timesRenders our 'x' icon
.fa.fa-checkRenders our check icon
.fa.fa-chevron-rightRenders our right chevron icon
.fa.fa-chevron-upRenders our down chevron icon
.fa.fa-chevron-downRenders our down chevron icon
.fa.fa-windowsRenders our Windows icon
.fa.fa-appleRenders our Apple icon
.fa.fa-linuxRenders our Linux icon
.fa.fa-pencilRenders our edit icon
.fa.fa-plus-circleRenders our second add icon
.fa.fa-trash-oRenders our delete icon
.fa.fa-squareRenders our square icon
.fa.fa-repeatRenders our refresh/restart icon
.fa.fa-playRenders our start icon
.fa.fa-downloadRenders our download icon
+
+
+
+
+
<i class="fa fa-download type-brand-3 title"></i>
+
+ +
+
+ +

Spinners

+

Spinners are used to show that some action is in progress. Spinners come in two sizes: large and small.

+ + + + + + + + + + + + + + +
+
+ +
+
+
+
+
<div class="spinner-lg bkg-default-5 out">
+  <i class="fa fa-spin fa-cog mtxl"></i>
+</div>
+
+
+ +
+
+ +
+
+
+
+
+
<div class="spinner-sm bkg-default-5 out">
+  <i class="fa fa-spin fa-cog mtxl"></i>
+</div>
+
+
+ +
+
+ + +

Images

+ + + +

Responsive

+

Images can be made responsive-friendly via the addition of the .img-responsive class. This applies max-width: 100%; and height: auto; to the image so that it scales nicely to the parent element. See bootstrap 3 for further documentation of this feature.

+
+
+ Responsive image +
+
+ Responsive image +
+
+ Responsive image +
+
+
+
+
+
<div class="row">
+  <div class="col-md-5">
+    <img alt="Responsive image" class="img-responsive" src="styleguide/such-awesome.jpg"/>
+  </div>
+  <div class="col-md-7">
+    <img alt="Responsive image" class="img-responsive" src="styleguide/such-awesome.jpg"/>
+  </div>
+  <div class="col-md-12">
+    <img alt="Responsive image" class="img-responsive" src="styleguide/such-awesome.jpg"/>
+  </div>
+</div>
+
+ +
+
+ +

Responsive SVG

+

SVG can be made responsive-friendly via the addition of the .svg-responsive class on a +wrapper div and the .svg-content class on the svg itself. You'll also need to to define +the height to width ratio as an inline padding bottom style on the .svg-responsive element like so:

+
+
<div class="svg-responsive" style="padding-bottom: 78.31%">
+  <svg class="svg-content" viewBox="38 45 125 120" preserveAspectRatio="xMinYMin meet">
+    ...
+  </svg>
+</div>
+
+

The padding-bottom should equal the height divided by the width of your specific svg.

For more information about setting up your svg, read this article about svg coordinates systems by Sara Soueidan.

+
+
+
+ + + + + + + + + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + +
+
+
+ +

Labels

+ + +

Labels are based on Bootstrap's labels. +Here's an example of a label on its own.

+ + + + + + + + + +
+
new +
+
+
+
+
<span class="label label-primary">new</span>
+
+
+ +
+
+ +

You can also place labels within HTML elements. +It will be sized based on the element's font size and its font modifiers.

+ + + + + + + + + + + + + + + + + + + +
+

I am a P. + new +

+
+
+
+
<p>I am a P.
+  <span class="label label-primary">new</span>
+</p>
+
+
+ +
+

I am an H3. + new +

+
+
+
+
<h3>I am an H3.
+  <span class="label label-primary">new</span>
+</h3>
+
+
+ +
+

I am an H3 with an H5 modifier. + new +

+
+
+
+
+
<h3 class="h5">I am an H3 with an H5 modifier.
+  <span class="label label-primary">new</span>
+</h3>
+
+
+ +
+
+ + +

Removable Labels

+

Removable labels are used as tags in an editable list. The user will either enter text or select content (i.e.: a dropdown item), and it will be styled as a removable label (most likely in a list). Developers who use these labels must implement the close functionality for when the user clicks the close button.

+
Removable + + +
+
+
+
<span class="label-removable">Removable
+  <a class="close-btn fa fa-close"></a>
+</span>
+
+ +
+
+ +

Layout Lists

+

Sometimes you might want to use lists to lay out elements on the page.

Inline lists and vertical divider lists +are particularly useful when you don't know the width of the element you want to layout, +or you want to vertically align it.

Use Card lists if you'd like to make a grid of vertically and horizontally aligned cards.

+

Links

+

Add the class link-text on any text links. +This will make the link underlined on hover (except lowlight links).

+ +
+
+
<a class="link-text" href="http://bitly.com/11vCzUx">
+  <i class="fa fa-plus"></i> Click me!
+</a>
+
+ +
+
+

There are four different kinds of links you can use to connect related content. +In most cases (unless the designer specifically asks for another type of link) +you should choose the default link.

+ + + + + + + + + + + + + + + + + + + + + + + + +
LinkClassDescription
default linklink-textImportant links
lowlight linklink-text link-lowlightLess important links
lowlight link alternatelink-text link-lowlight-altLess important links
inverse linklink-text link-inverseI go on a non-white background
+ +
+
+
Here's a <a class="link-text link-lowlight" href="http://bit.ly/1wO7Nhv">less important link</a>
+
+ +
+
+ +

Lists

+ + +

This section contains different list styles.

+

Breadcrumb

+

The .list-breadcrumb can be used to provide additional page navigation.

Breadcrumbs use their own monospace font-family.

+
+
+
+
+
<ul class="list-breadcrumb">
+  <li>
+    <a href="http://google.com">Parent</a>
+  </li>
+  <li>
+    <a href="http://google.com">Child</a>
+  </li>
+  <li class="current">
+    <span>Current Page</span>
+  </li>
+</ul>
+
+ +
+
+ +

Cards

+

As the browser width changes, list-cards fill in one after another. There are two card types, type-card-1 and +type-card-2. For this example, we've set both of them to stack on mobile sized screens.

+ + + + + + + + + + + + + + +
+
    +
  • +

    list-card-1

    +
  • +
+
+
+
+
<ul class="list-cards list-card-1 list-cards-xs">
+  <li class="bg-neutral-7">
+    <p>list-card-1</p>
+  </li>
+</ul>
+
+
+ +
+
    +
  • +

    list-card-2

    +
  • +
+
+
+
+
+
<ul class="list-cards list-card-2 list-cards-xs">
+  <li class="bg-neutral-7">
+    <p>list-card-2</p>
+  </li>
+</ul>
+
+
+ +
+
+ +

You can specify the breakpoint in which the cards stack by using the list-card-* classes. If the breakpoint is not +specified, the cards fill 100% of the list-cards width.

+ + + + + + + + + + + + + + + + + + + + + + + +
List Card BreakpointsClass Names
extra-small.list-card-xs
small.list-card-sm
medium.list-card-md
large.list-card-lg
extra-large.list-card-xl
+
+

The cards list should only be used in fully liquid layouts, otherwise grids are a better choice.

+
+

This is an example of a card list with the list-cards-xs stack point applied. +Resize the browser to see how cards stack on desktop sizes and expand on mobile sizes.

+
    +
  • +

    lorem ipsum 1

    +
  • +
  • +

    lorem ipsum 2

    +
  • +
  • +

    lorem ipsum 3

    +
  • +
  • +

    lorem ipsum 4

    +
  • +
  • +

    lorem ipsum 5

    +
  • +
  • +

    lorem ipsum 6

    +
  • +
  • +

    lorem ipsum 7

    +
  • +
  • +

    lorem ipsum 8

    +
  • +
+
+
+
+
<ul class="list-cards list-card-2 list-cards-xs">
+  <li class="bg-neutral-7">
+    <p>lorem ipsum 1</p>
+  </li>
+  <li class="bg-neutral-7">
+    <p>lorem ipsum 2</p>
+  </li>
+  <li class="bg-neutral-7">
+    <p>lorem ipsum 3</p>
+  </li>
+  <li class="bg-neutral-7">
+    <p>lorem ipsum 4</p>
+  </li>
+  <li class="bg-neutral-7">
+    <p>lorem ipsum 5</p>
+  </li>
+  <li class="bg-neutral-7">
+    <p>lorem ipsum 6</p>
+  </li>
+  <li class="bg-neutral-7">
+    <p>lorem ipsum 7</p>
+  </li>
+  <li class="bg-neutral-7">
+    <p>lorem ipsum 8</p>
+  </li>
+</ul>
+
+ +
+
+

If you would like custom card dimensions, in your sass include the makeCard mixin, like so: @include makeCard(height, width, name); +You can then access the class via .list-card-#{name}.

+

Clickable List Cards

+

If you want your list cards to function as links (i.e. be clickable), +wrap all the inner content in a with class list-card-link.

+ +
+
+
<ul class="list-cards list-card-1 list-cards-xs">
+  <li class="bg-neutral-7">
+    <a class="list-card-link" href="http://bit.ly/1sEyvH5">
+      <p>This entire list card is clickable!</p>
+    </a>
+  </li>
+  <li class="bg-neutral-7">
+    <a class="list-card-link" href="http://bit.ly/1sFaArX">
+      <p>This entire list card is clickable as well!</p>
+    </a>
+  </li>
+</ul>
+
+ +
+
+ +

Checked

+

Replaces the default bullet image with the font awesome checkmark.

+
    +
  • + feep +
  • +
  • + fop +
  • +
  • + meep +
  • +
+
+
+
+
<ul class="list-checked">
+  <li>
+    feep
+  </li>
+  <li>
+    fop
+  </li>
+  <li>
+    meep
+  </li>
+</ul>
+
+ +
+
+ +

Group

+

Use this list when you need simple gray borders between items

+
    +
  • + item 1 +
  • +
  • + item 2 +
  • +
  • + item 3 +
  • +
+
+
+
+
<ul class="list-group">
+  <li class="list-group-item">
+    item 1
+  </li>
+  <li class="list-group-item">
+    item 2
+  </li>
+  <li class="list-group-item">
+    item 3
+  </li>
+</ul>
+
+ +
+
+

Group lists are great for displaying lists of events +Here's an example from Console:

+
    +
  • +
    +
    + +
    +
    +
    + app crashed +
    +
    + user@example.com + 11/14/2014 at 4:00 PM UTC +
    +
    +
    +
  • + +
  • +
    +
    + +
    +
    +
    + stopped app +
    +
    + user@example.com + 11/14/2014 at 3:00 PM UTC +
    +
    +
    +
  • + +
  • +
    +
    + +
    +
    +
    + started app +
    +
    + user@example.com + 11/14/2014 at 2:00 PM UTC +
    +
    +
    +
  • +
+
+
+
+
<ul class="list-group">
+  <li class="list-group-item pln">
+    <div class="media">
+      <div class="media-left media-middle phxxl">
+        <i class="fa-exclamation-circle type-error-3 fa h2 man"></i>
+      </div>
+      <div class="media-body pbn">
+        <div class="type-neutral-2 mbs">
+          app crashed
+        </div>
+        <div class="type-neutral-4 small">
+          <span>user@example.com</span>
+          <span>11/14/2014 at 4:00 PM UTC</span>
+        </div>
+      </div>
+    </div>
+  </li>
+
+  <li class="list-group-item pln">
+    <div class="media">
+      <div class="media-left media-middle phxxl">
+        <i class="fa-stop type-neutral-5 fa h2 man"></i>
+      </div>
+      <div class="media-body pbn">
+        <div class="type-neutral-2 mbs">
+          stopped app
+        </div>
+        <div class="type-neutral-4 small">
+          <span>user@example.com</span>
+          <span>11/14/2014 at 3:00 PM UTC</span>
+        </div>
+      </div>
+    </div>
+  </li>
+
+  <li class="list-group-item pln">
+    <div class="media">
+      <div class="media-left media-middle phxxl">
+        <i class="fa-play type-brand-3 fa h2 man"></i>
+      </div>
+      <div class="media-body pbn">
+        <div class="type-neutral-2 mbs">
+          started app
+        </div>
+        <div class="type-neutral-4 small">
+          <span>user@example.com</span>
+          <span>11/14/2014 at 2:00 PM UTC</span>
+        </div>
+      </div>
+    </div>
+  </li>
+</ul>
+
+ +
+
+ +

Group Inverse

+

Use this list when you need simple gray borders between items on a dark background. It is very subtle. +html_example +<ul class="list-group-inverse"> + <li class="list-group-item"> + item 1 + </li> + <li class="list-group-item"> + item 2 + </li> + <li class="list-group-item"> + item 3 + </li> +</ul> +

+

Inline

+

An inline list is one of the three methods for laying out content (including grids and the media block).

+
    +
  • + feep +
  • +
  • + fop +
  • +
  • + meep +
  • +
+
+
+
+
<ul class="list-inline">
+  <li>
+    feep
+  </li>
+  <li>
+    fop
+  </li>
+  <li>
+    meep
+  </li>
+</ul>
+
+ +
+
+

You can use inline lists to lay out elements. Here's an example of a header next to a button:

+
+
+
+
+
<ul class="list-inline lhxl">
+  <li class="txt-m">
+    <h5 class="em-alt em-max">Bound Services</h5>
+  </li>
+  <li class="txt-m">
+    <a class="btn btn-default" target="_blank">Add from Marketplace</a>
+  </li>
+</ul>
+
+ +
+
+ +

Inline Divider

+

Places all list items on a single line with display: inline-block; and some light padding. The .list-inline-divider +also adds a simple gray border (add .list-inline-divider-light to make the border white).

+
+
+
+
+
<ul class="list-inline-divider">
+  <li><a class="type-em-1" href="http://google.com">Edit</a></li>
+  <li><a class="type-em-1" href="http://google.com">Invite</a></li>
+</ul>
+
+ +
+
+

Here's the same example on a dark background:

+
+ +
+
+
+
+
<div class="contrast-bar">
+  <ul class="list-inline-divider list-inline-divider-light">
+    <li><a class="type-em-1" href="http://google.com">Edit</a></li>
+    <li><a class="type-em-1" href="http://google.com">Invite</a></li>
+  </ul>
+</div>
+
+ +
+
+ +

Ordered

+
+
    +
  1. + feep +
  2. +
  3. + fop +
  4. +
  5. + meep +
  6. +
+
+
+
+
<ol>
+  <li>
+    feep
+  </li>
+  <li>
+    fop
+  </li>
+  <li>
+    meep
+  </li>
+</ol>
+
+ +
+
+ +

Steps

+

Use this list when you need to show the steps in a flow.

+
    +
  1. + Sign up Account +
  2. +
  3. + Create Organization +
  4. +
  5. + Do other things +
  6. +
  7. + And more things +
  8. +
+
+
+
+
<ol class="list-steps">
+  <li>
+    Sign up Account
+  </li>
+  <li class="current">
+    Create Organization
+  </li>
+  <li>
+    Do other things
+  </li>
+  <li>
+    And more things
+  </li>
+</ol>
+
+ +
+
+ +

Unordered

+
+
    +
  • + feep +
  • +
  • + fop +
  • +
  • + meep +
  • +
+
+
+
+
<ul class="list-unordered">
+  <li>
+    feep
+  </li>
+  <li>
+    fop
+  </li>
+  <li>
+    meep
+  </li>
+</ul>
+
+ +
+
+ +

Unstyled

+

Places all list items on a single line with display: inline-block; and some light padding. The .list-unstyled class can be applied to either a <ul> or and <ol>.

+
    +
  • + feep +
  • +
  • + fop +
  • +
  • + meep +
  • +
+
+
+
+
<ul class="list-unstyled">
+  <li>
+    feep
+  </li>
+  <li>
+    fop
+  </li>
+  <li>
+    meep
+  </li>
+</ul>
+
+ +
+
+ +

Vertical Divider

+

Use this list when you need larger gray borders between +items. It should be used in concert with grid column +sizes when you want the items to take a particular width.

We achieve equal height columns using the padding/margin hack, +so we need an additional .height-enforcer element to get the +right min-height.

+
    +
  • +
    + item 1 +
    +
  • +
  • +
    + item 2 +
    +
  • +
  • +
    + item 3, which is taller +
    +
  • +
+
+
+
+
<ul class="list-vertical-divider">
+  <li class="col-md-8">
+    <div class="height-enforcer">
+      item 1
+    </div>
+  </li>
+  <li class="col-md-8">
+    <div class="height-enforcer">
+      item 2
+    </div>
+  </li>
+  <li class="col-md-8">
+    <div class="height-enforcer" style="height: 200px">
+      item 3, which is taller
+    </div>
+  </li>
+</ul>
+
+ +
+
+
+
    +
  • +
    + item 1 +
    +
  • +
  • +
    + item 2 +
    +
  • +
  • +
    + item 3, which is taller +
    +
  • +
+
+
+
+
<ul class="list-vertical-divider-2">
+  <li class="col-md-8">
+    <div class="height-enforcer">
+      item 1
+    </div>
+  </li>
+  <li class="col-md-8">
+    <div class="height-enforcer">
+      item 2
+    </div>
+  </li>
+  <li class="col-md-8">
+    <div class="height-enforcer" style="height: 200px">
+      item 3, which is taller
+    </div>
+  </li>
+</ul>
+
+ +
+
+ +

List Spacing

+

Most lists come with built in default spacing that should work for you. However, if you find yourself needing to modify the spacing, you should do that with list spacing classes rather than whitespace classes. A single class can be applied to the list and all direct children will be modified. +The classes are constructed by specifying <type><location><size>.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type:
llistSpace on the inside of each of the li direct children of the element
Location:
hhorizontalAdds spacing to the left and right of the li.
vverticalAdds spacing to the top and bottom of the li.
Size:
xlextra largeAdds 21 pixels of space
llargeAdds 10 pixels of space
mmediumAdds 7 pixels of space
ssmallAdds 5 pixels of space
nnoneSets any existing space to 0
+ +

Vertical Spacing Options (n -> xl)

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+
+
+
<ul class="lvn">
+  <li>feep</li>
+  <li>fop</li>
+  <li>meep</li>
+</ul>
+
+
+ +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+
+
+
<ul class="lvs">
+  <li>feep</li>
+  <li>fop</li>
+  <li>meep</li>
+</ul>
+
+
+ +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+
+
+
<ul class="lvm">
+  <li>feep</li>
+  <li>fop</li>
+  <li>meep</li>
+</ul>
+
+
+ +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+
+
+
<ul class="lvl">
+  <li>feep</li>
+  <li>fop</li>
+  <li>meep</li>
+</ul>
+
+
+ +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+
+
+
+
<ul class="lvxl">
+  <li>feep</li>
+  <li>fop</li>
+  <li>meep</li>
+</ul>
+
+
+ +
+
+ + +

Horizontal Spacing Options (n -> xl)

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+
+
+
<ul class="list-inline lhn">
+  <li>feep</li>
+  <li>fop</li>
+  <li>meep</li>
+</ul>
+
+
+ +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+
+
+
<ul class="list-inline lhs">
+  <li>feep</li>
+  <li>fop</li>
+  <li>meep</li>
+</ul>
+
+
+ +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+
+
+
<ul class="list-inline lhm">
+  <li>feep</li>
+  <li>fop</li>
+  <li>meep</li>
+</ul>
+
+
+ +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+
+
+
<ul class="list-inline lhl">
+  <li>feep</li>
+  <li>fop</li>
+  <li>meep</li>
+</ul>
+
+
+ +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+
+
+
+
<ul class="list-inline lhxl">
+  <li>feep</li>
+  <li>fop</li>
+  <li>meep</li>
+</ul>
+
+
+ +
+
+ + +

Timeline

+

A Timeline is a graphical representation of sequenced events. The Timeline list components are used to order list items by timestamp.

We achieve equal width columns for the time stamp by using a display table hack, so we need an additional inline style on the first list-timeline-date to specify the desired width.

+
    +
  1. + + + java buildpack (offline) (2.5) + a minor release + +
  2. +
  3. + + + java buildpack (offline) (2.5) + a minor release + +
  4. +
  5. + + + java buildpack (offline) (2.5) + a minor release + +
  6. +
+
+
+
+
<ol class="list-timeline">
+  <li class="list-timeline-item">
+    <time datetime="2014-07-04" class="list-timeline-date" style="width: 150px;">1 day ago</time>
+    <span class="list-timeline-title">
+      java buildpack (offline) (2.5)
+      <span class="list-timeline-subtitle">a minor release</span>
+    </span>
+  </li>
+  <li class="list-timeline-item">
+    <time datetime="2014-07-04" class="list-timeline-date">1 day ago</time>
+    <span class="list-timeline-title">
+      java buildpack (offline) (2.5)
+      <span class="list-timeline-subtitle">a minor release</span>
+    </span>
+  </li>
+  <li class="list-timeline-item">
+    <time datetime="2014-07-04" class="list-timeline-date">1 day ago</time>
+    <span class="list-timeline-title">
+      java buildpack (offline) (2.5)
+      <span class="list-timeline-subtitle">a minor release</span>
+    </span>
+  </li>
+</ol>
+
+ +
+
+ +

Maps

+

Full width map with marker at Pivotal Labs SF location, and an optional informational overlay.

+
+
+
+
+
+
+
+

Location

+
Pivotal Software Inc.
+ 875 Howard Street
+ San Francisco, CA 94103 +
+

Support: support@run.pivotal.io

+

Twitter: @pivotalws

+
+
+
+
+
+
+
+
+
+
+
+
+
<script src="http://maps.googleapis.com/maps/api/js?libraries=places"></script>
+<div class='map-wrapper'>
+  <div class='pane'>
+    <div class='container pan'>
+      <div class='row'>
+        <div class='col-sm-6 col-md-8 col-sm-offset-1'>
+          <div class='map-overlay panel panel-basic bg-neutral-10 paxxl'>
+            <h3 class="h2">Location</h3>
+            <address class='h4 pvl'>Pivotal Software Inc.<br>
+              875 Howard Street<br>
+              San Francisco, CA 94103
+            </address>
+            <p class='h4'>Support: <a href='mailto:support@run.pivotal.io'>support@run.pivotal.io</a></p>
+            <p class='h4'>Twitter: <a href='https://twitter.com/pivotalws'>@pivotalws</a></p>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+  <div class='pane pane-map'>
+    <div id='labs-map'></div>
+  </div>
+</div>
+
+ +
+
+ +
+
+
var maps = (function() {
+  var self = this;
+  var map;
+
+  var mapOptions = {
+    placeId: "ChIJ9w1pfYiAhYAR45k8AD-TjhA",
+    center: new google.maps.LatLng(37.781787,-122.403911),
+    mapElementId: 'labs-map',
+    zoom: 18
+  };
+
+  var initialize = function() {
+    map = new google.maps.Map(document.getElementById(mapOptions.mapElementId), {
+      center: mapOptions.center,
+      zoom: mapOptions.zoom,
+      disableDefaultUI: true
+    });
+
+    var request = {
+      placeId: mapOptions.placeId
+    };
+
+    var service = new google.maps.places.PlacesService(map);
+    service.getDetails(request, createMarker);
+  };
+
+  var createMarker = function(place, status) {
+    if (status == google.maps.places.PlacesServiceStatus.OK) {
+      new google.maps.Marker({
+        map: map,
+        position: place.geometry.location
+      });
+    }
+  };
+
+  self.initialize = initialize;
+  return self;
+})();
+
+google.maps.event.addDomListener(window, 'load', maps.initialize);
+
+ +
+ + +

Marketing

+ + + +

Instance Scale

+

The instance scale widget is an svg and an associated code block. Include the SVG +and code in your page and the javascript and css will handle all of the behaviors. +Add the class .selected-group to the .instance-column you would like to be +highlighted on page load.

+
+
+ Deprecation warning +
+

+ This component is deprecated. +

+
+
+
+
+
+ + + + + + + + + + + + + + + Instances + + + + + 1 + + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + 6 + + + + + + + + + + + + + + + + + + + + + + + + + 8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ $ cf scale my_app -i 1
+
+
+
+
+
+
+
<div class="panel bg-neutral-11">
+  <div class="row">
+    <div class="col-md-12 col col-md-offset-6 col-sm-24 col-sm-offset-0">
+      <svg class="scale-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 531.415 353.659" preserveAspectRatio="xMinYMin meet" enable-background="new 0 0 531.415 353.659" xml:space="preserve">
+      <polygon fill="url(#bg-gradient)" points="8.33,299.979 70.081,247.747    143.06,235.539 186.568,180.328 240.571,149.701 288.082,110.127 351.705,84.419 432.399,75.015 527.396,4.019  527.396, 299.979  8.33,299.979"/>
+      <polyline fill="none" stroke="#D4D9DA" stroke-width="4.0103" stroke-miterlimit="10" points="8.33,299.979 70.081,247.747    143.06,235.539 186.568,180.328 240.571,149.701 288.082,110.127 351.705,84.419 432.399,75.015 527.396,4.019  "/>
+      <ellipse fill="#D4D9DA" cx="8.33" cy="299.979" rx="4.019" ry="4.039"/>
+      <ellipse fill="#D4D9DA" cx="69.568" cy="247.981" rx="4.019" ry="4.039"/>
+      <ellipse fill="#D4D9DA" cx="142.987" cy="234.989" rx="4.019" ry="4.039"/>
+      <ellipse fill="#D4D9DA" cx="186.935" cy="180.42" rx="4.019" ry="4.039"/>
+      <ellipse fill="#D4D9DA" cx="240.633" cy="149.178" rx="4.019" ry="4.039"/>
+      <ellipse fill="#D4D9DA" cx="289.064" cy="110.116" rx="4.019" ry="4.039"/>
+      <ellipse fill="#D4D9DA" cx="351.213" cy="84.598" rx="4.019" ry="4.039"/>
+      <ellipse fill="#D4D9DA" cx="432.796" cy="74.253" rx="4.019" ry="4.039"/>
+      <circle fill="#D4D9DA" cx="527.396" cy="4.019" r="4.019"/>
+
+      <text transform="matrix(1 0 0 1 0 347.8439)" fill="#8E8F8E" font-family="'SourceSansPro'" font-size="18">
+                                                                                                              Instances
+      </text>
+      <g class="instances-column selected-group" id="instances-1" filter="url(#desaturate-filter)">
+        <rect x="40" y="0" height="530" width="130" opacity="0" />
+        <text transform="matrix(1 0 0 1 105.1135 347.8439)" fill="#00A69E" font-family="'SourceSansPro'" font-size="18">
+          1
+        </text>
+        <path fill="#00A69E" d="M105.96 291.558l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L105.96 291.558z"/>
+        <path fill="#3F4950" d="M80.129 279.625v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L80.129 279.625z"/>
+        <path fill="#525D64" d="M131.001 278.331l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C132.209 278.859 131.726 278.475 131.001 278.331z"/>
+      </g>
+
+      <g class="instances-column" id="instances-4" filter="url(#desaturate-filter)">
+        <rect x="170" y="0" height="530" width="120" opacity="0" />
+        <text transform="matrix(1 0 0 1 224.4272 347.8439)" fill="#00A69E" font-family="'SourceSansPro'" font-size="18">
+        4
+        </text>
+        <path fill="#00A69E" d="M228.811 291.558l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L228.811 291.558z"/>
+        <path fill="#3F4950" d="M202.98 279.625v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L202.98 279.625z"/>
+        <path fill="#525D64" d="M253.853 278.331l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C255.06 278.859 254.577 278.475 253.853 278.331z"/>
+        <path fill="#00A69E" d="M228.811 255.697l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L228.811 255.697z"/>
+        <path fill="#3F4950" d="M202.98 243.765v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L202.98 243.765z"/>
+        <path fill="#525D64" d="M253.853 242.47l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C255.06 242.999 254.577 242.615 253.853 242.47z"/>
+        <path fill="#00A69E" d="M228.811 219.837l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L228.811 219.837z"/>
+        <path fill="#3F4950" d="M202.98 207.905v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L202.98 207.905z"/>
+        <path fill="#525D64" d="M253.853 206.61l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C255.06 207.138 254.577 206.755 253.853 206.61z"/>
+        <path fill="#00A69E" d="M228.811 183.977l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L228.811 183.977z"/>
+        <path fill="#3F4950" d="M202.98 172.044v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L202.98 172.044z"/>
+        <path fill="#525D64" d="M253.853 170.75l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C255.06 171.278 254.577 170.894 253.853 170.75z"/>
+
+      </g>
+      <g class="instances-column" id="instances-6" filter="url(#desaturate-filter)">
+        <rect x="290" y="0" height="530" width="130" opacity="0" />
+        <text transform="matrix(1 0 0 1 347.2788 347.8439)" fill="#00A69E" font-family="'SourceSansPro'" font-size="18">
+        6
+        </text>
+        <path fill="#00A69E" d="M351.125 291.558l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L351.125 291.558z"/>
+        <path fill="#3F4950" d="M325.294 279.625v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L325.294 279.625z"/>
+        <path fill="#525D64" d="M376.167 278.331l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C377.374 278.859 376.891 278.475 376.167 278.331z"/>
+        <path fill="#00A69E" d="M351.125 255.697l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L351.125 255.697z"/>
+        <path fill="#3F4950" d="M325.294 243.765v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L325.294 243.765z"/>
+        <path fill="#525D64" d="M376.167 242.47l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C377.374 242.999 376.891 242.615 376.167 242.47z"/>
+        <path fill="#00A69E" d="M351.125 219.837l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L351.125 219.837z"/>
+        <path fill="#3F4950" d="M325.294 207.905v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L325.294 207.905z"/>
+        <path fill="#525D64" d="M376.167 206.61l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C377.374 207.138 376.891 206.755 376.167 206.61z"/>
+        <path fill="#00A69E" d="M351.125 183.977l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L351.125 183.977z"/>
+        <path fill="#3F4950" d="M325.294 172.044v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L325.294 172.044z"/>
+        <path fill="#525D64" d="M376.167 170.75l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C377.374 171.278 376.891 170.894 376.167 170.75z"/>
+        <path fill="#00A69E" d="M351.125 148.116l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L351.125 148.116z"/>
+        <path fill="#3F4950" d="M325.294 136.184v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L325.294 136.184z"/>
+        <path fill="#525D64" d="M376.167 134.889l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C377.374 135.417 376.891 135.034 376.167 134.889z"/>
+        <path fill="#00A69E" d="M351.125 112.332l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L351.125 112.332z"/>
+        <path fill="#3F4950" d="M325.294 100.399v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L325.294 100.399z"/>
+        <path fill="#525D64" d="M376.167 99.105l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C377.374 99.633 376.891 99.249 376.167 99.105z"/>
+      </g>
+      <g class="instances-column another-class" id="instances-8" filter="url(#desaturate-filter)">
+        <rect x="420" y="0" height="530" width="130" opacity="0" />
+
+        <text transform="matrix(1 0 0 1 470.1294 347.8439)" fill="#00A69E" font-family="'SourceSansPro'" font-size="18">
+        8
+        </text>
+        <path fill="#00A69E" d="M474.514 291.558l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L474.514 291.558z"/>
+        <path fill="#3F4950" d="M448.683 279.625v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L448.683 279.625z"/>
+        <path fill="#525D64" d="M499.555 278.331l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C500.763 278.859 500.28 278.475 499.555 278.331z"/>
+        <path fill="#00A69E" d="M474.514 255.697l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L474.514 255.697z"/>
+        <path fill="#3F4950" d="M448.683 243.765v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L448.683 243.765z"/>
+        <path fill="#525D64" d="M499.555 242.47l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C500.763 242.999 500.28 242.615 499.555 242.47z"/>
+        <path fill="#00A69E" d="M474.514 219.837l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L474.514 219.837z"/>
+        <path fill="#3F4950" d="M448.683 207.905v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L448.683 207.905z"/>
+        <path fill="#525D64" d="M499.555 206.61l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C500.763 207.138 500.28 206.755 499.555 206.61z"/>
+        <path fill="#00A69E" d="M474.514 183.977l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L474.514 183.977z"/>
+        <path fill="#3F4950" d="M448.683 172.044v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L448.683 172.044z"/>
+        <path fill="#525D64" d="M499.555 170.75l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C500.763 171.278 500.28 170.894 499.555 170.75z"/>
+        <path fill="#00A69E" d="M474.514 148.116l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L474.514 148.116z"/>
+        <path fill="#3F4950" d="M448.683 136.184v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L448.683 136.184z"/>
+        <path fill="#525D64" d="M499.555 134.889l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C500.763 135.417 500.28 135.034 499.555 134.889z"/>
+        <path fill="#00A69E" d="M474.514 112.332l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958v-10.625L474.514 112.332z"/>
+        <path fill="#3F4950" d="M448.683 100.399v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L448.683 100.399z"/>
+        <path fill="#525D64" d="M499.555 99.105l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C500.763 99.633 500.28 99.249 499.555 99.105z"/>
+        <path fill="#00A69E" d="M474.514 76.395l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958V71.196L474.514 76.395z"/>
+        <path fill="#3F4950" d="M448.683 64.463v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L448.683 64.463z"/>
+        <path fill="#525D64" d="M499.555 63.168l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C500.763 63.696 500.28 63.313 499.555 63.168z"/>
+        <path fill="#00A69E" d="M474.514 40.535l-25.831-5.199v10.625c0 0.43 0.483 0.813 1.208 0.958l24.221 4.836c0.396 0.079 0.828 0.079 1.224 0l24.221-4.836c0.724-0.145 1.208-0.528 1.208-0.958V35.336L474.514 40.535z"/>
+        <path fill="#3F4950" d="M448.683 28.603v7.354l25.454 5.123c0.249 0.05 0.505 0.05 0.754 0.001l25.872-5.124v-7.432l-25.875 5.125c-0.247 0.049-0.501 0.049-0.748 0L448.683 28.603z"/>
+        <path fill="#525D64" d="M499.555 27.308l-24.22-4.836c-0.404-0.081-0.82-0.081-1.224 0l-24.22 4.836c-0.724 0.145-1.208 0.528-1.208 0.958v0.337l25.457 5.047c0.247 0.049 0.501 0.049 0.748 0l25.875-5.125v-0.259C500.763 27.836 500.28 27.453 499.555 27.308z"/>
+      </g>
+
+      <filter id="desaturate-filter" >
+      <feColorMatrix in="SourceGraphic"
+      type="saturate"
+      values="0" />
+      </filter>
+
+      <linearGradient id="bg-gradient" x1="0" x2="1" y1="0" y2="1">
+      <stop class="instances-gradient-stop-1" offset="0%"/>
+      <stop class="instances-gradient-stop-2" offset="90%"/>
+      </linearGradient>
+      </svg>
+    </div>
+  </div>
+</div>
+
+<div>
+<pre class="language-bash scale-code">
+<code>
+ $ cf scale my_app -i <span class="instance-count">1</span>
+</code>
+</pre>
+</div>
+
+ +
+
+ +

Media

+ + +

The default media displays a media object (images, video, audio) to the left or right of a content block.

+
+ + ... + +
+

Media heading

+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
+
+ +
+
+

Media heading

+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. +
+ + ... + +
+
+
+
+
<div class="media">
+  <a class="media-left" href="#">
+    <img alt="..." class="media-object" src="http://placehold.it/64x64"/>
+  </a>
+  <div class="media-body">
+    <h4 class="media-heading">Media heading</h4>
+    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
+  </div>
+</div>
+
+<div class="media">
+  <div class="media-body">
+    <h4 class="media-heading">Media heading</h4>
+    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
+  </div>
+  <a class="media-right" href="#">
+    <img alt="..." class="media-object" src="http://placehold.it/64x64"/>
+  </a>
+</div>
+
+ +
+
+

Wrap the image in a fixed-size .image-container to make sure the image isn't +larger than the container

+
+ +
+ ... +
+
+
+

Media heading

+

+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +

+
+
+
+
+
+
<div class="media">
+  <a class="media-left" href="#">
+    <div class="image-container" style="width: 100px; height: 50px;">
+      <img alt="..." class="media-object" src="http://placehold.it/64x64"/>
+    </div>
+  </a>
+  <div class="media-body">
+    <h4 class="media-heading">Media heading</h4>
+    <p>
+      Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
+    </p>
+  </div>
+</div>
+
+ +
+
+

You can also nest media objects inside of each other (useful for comment threads or articles lists).

+
+ + ... + +
+

Media heading

+

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.

+ + +
+ + ... + +
+

Nested media heading

+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. + + +
+ + ... + +
+

Nested media heading

+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. +
+
+
+
+ + +
+ + ... + +
+

Nested media heading

+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. +
+
+
+
+
+
+
+
<div class="media">
+  <a class="media-left" href="#" target="_blank">
+    <img alt="..." class="media-object" src="http://placehold.it/64x64">
+  </a>
+  <div class="media-body">
+    <h4 class="media-heading">Media heading</h4>
+    <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.</p>
+
+    <!-- Nested media object -->
+    <div class="media">
+      <a class="media-left" href="#" target="_blank">
+        <img alt="..." class="media-object" src="http://placehold.it/64x64">
+      </a>
+      <div class="media-body">
+        <h4 class="media-heading">Nested media heading</h4>
+        Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
+
+        <!-- Nested media object -->
+        <div class="media">
+          <a class="media-left" href="#" target="_blank">
+            <img alt="..." class="media-object" src="http://placehold.it/64x64">
+          </a>
+          <div class="media-body">
+            <h4 class="media-heading">Nested media heading</h4>
+            Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <!-- Nested media object -->
+    <div class="media">
+      <a class="media-left" href="#" target="_blank">
+        <img alt="..." class="media-object" src="http://placehold.it/64x64">
+      </a>
+      <div class="media-body">
+        <h4 class="media-heading">Nested media heading</h4>
+        Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
+      </div>
+    </div>
+  </div>
+</div>
+
+ +
+
+ +

Alignment

+

The images or other media can be aligned top, middle, or bottom. The default is top aligned.

+
+ + ... + +
+

Top aligned media

+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
+
+ +
+ + ... + +
+

Middle aligned media

+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
+
+ +
+ + ... + +
+

Bottom aligned media

+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
+
+
+
+
+
<div class="media">
+  <a class="media-left" href="#" target="_blank">
+    <img alt="..." class="media-object" src="http://placehold.it/40x40">
+  </a>
+  <div class="media-body">
+    <h4 class="media-heading">Top aligned media</h4>
+    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
+  </div>
+</div>
+
+<div class="media">
+  <a class="media-left media-middle" href="#" target="_blank">
+    <img alt="..." class="media-object" src="http://placehold.it/40x40">
+  </a>
+  <div class="media-body">
+    <h4 class="media-heading">Middle aligned media</h4>
+    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
+  </div>
+</div>
+
+<div class="media">
+  <a class="media-left media-bottom" href="#" target="_blank">
+    <img alt="..." class="media-object" src="http://placehold.it/40x40">
+  </a>
+  <div class="media-body">
+    <h4 class="media-heading">Bottom aligned media</h4>
+    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
+  </div>
+</div>
+
+ +
+
+ +

Stackable

+

You can also make the media block stack with grid columns. +Media objects switch from being stacked on top to being floated left of the media body as the screen size gets larger. +For example, .media-stackable-xs is stacked on screen sizes from 0-480px and then left floated on larger screens.

+
+ + ... + +
+

Extra-small stackable

+
+
+ +
+ + ... + +
+

Small stackable

+
+
+ +
+ + ... + +
+

Medium stackable

+
+
+ +
+ + ... + +
+

Large stackable

+
+
+
+
+
+
<div class="media media-stackable-xs">
+  <a class="media-left" href="#" target="_blank">
+    <img alt="..." class="media-object" src="http://placehold.it/100x100">
+  </a>
+  <div class="media-body">
+    <p>Extra-small stackable</p>
+  </div>
+</div>
+
+<div class="media media-stackable-sm">
+  <a class="media-left" href="#" target="_blank">
+    <img alt="..." class="media-object" src="http://placehold.it/100x100">
+  </a>
+  <div class="media-body">
+    <p>Small stackable</p>
+  </div>
+</div>
+
+<div class="media media-stackable-md">
+  <a class="media-left" href="#" target="_blank">
+    <img alt="..." class="media-object" src="http://placehold.it/100x100">
+  </a>
+  <div class="media-body">
+    <p>Medium stackable</p>
+  </div>
+</div>
+
+<div class="media media-stackable-lg">
+  <a class="media-left" href="#" target="_blank">
+    <img alt="..." class="media-object" src="http://placehold.it/100x100">
+  </a>
+  <div class="media-body">
+    <p>Large stackable</p>
+  </div>
+</div>
+
+ +
+
+ +

Modals

+

Modals bring desired content to the foreground and de-emphasize the rest of the page.

+ +

+

+ + + + + + + + +

Panes

+

Panes are horizontal groupings of content that are usually used to +span the full browser window width. It's going to look funny here, +a better way to view it is on the panes page.

You can combine up to two background classes on the pane component. +The one on the .pane element will span the full browser width. The +one on the .container element will be constrained to the content width.

+
+
+

This is a pane

+
+
+ +
+
+
+
<div class="pane bg-dark-1">
+  <div class="container bg-glow">
+    <h1 class="type-neutral-11">This is a pane</h1>
+  </div>
+</div>
+
+ +
+
+
+
+
+

This is a pane

+
+ A laptop showing Pivotal Web Services dashboard. +
+
+
+
+
+

This is another pane

+
+
+ +
+
+
+
<div class="pane pane-offset bg-dark-1">
+  <div class="container bg-glow">
+    <h1 class="type-neutral-11">This is a pane</h1>
+    <div class="pane-image">
+      <img class="img-responsive" src="styleguide/console-laptop.png" alt="A laptop showing Pivotal Web Services dashboard." />
+    </div>
+  </div>
+</div>
+<div class="pane bg-cloud">
+  <div class="container">
+    <h1>This is another pane</h1>
+  </div>
+</div>
+
+ +
+
+ +

Panels

+ + +

Panels are often used to group related content. They include box headers, footers, and can be combined with any backgrounds.

Panels are typically a combination of contours, backgrounds, and content including headers and footers. This section describes the contours.

+

Alternate

+

Alternate panels can be in a default, off, or danger state.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Alternate Panel +
+
+
+
+
+
<div class="panel panel-alt">
+  <div class="panel-body">
+    Alternate Panel
+  </div>
+</div>
+
+
+ +
+
+
+ Danger alternate panel +
+
+
+
+
+
<div class="panel panel-alt panel-danger">
+  <div class="panel-body">
+    Danger alternate panel
+  </div>
+</div>
+
+
+ +
+
+
+ Stopped alternate panel +
+
+
+
+
+
<div class="panel panel-alt panel-off">
+  <div class="panel-body">
+    Stopped alternate panel
+  </div>
+</div>
+
+
+ +
+
+
+ Off alternate panel +
+
+
+
+
+
<div class="panel panel-alt panel-empty">
+  <div class="panel-body">
+    Off alternate panel
+  </div>
+</div>
+
+
+ +
+
+
+ Editing alternate panel +
+
+
+
+
+
+
<div class="panel panel-alt panel-editing">
+  <div class="panel-body">
+    Editing alternate panel
+  </div>
+</div>
+
+
+ +
+
+ + +

Basic

+

By default, all the .panel does is apply a basic shadow and padding to contain some content. You can have it with or without a title.

+
+
+
Basic Title
+
+
+ Basic Panel +
+
+ +
+
+ Basic Panel +
+
+
+
+
+
<div class="panel panel-basic bg-neutral-11">
+  <div class="panel-header">
+    <h5 class="panel-title-alt">Basic Title</h5>
+  </div>
+  <div class="panel-body">
+    Basic Panel
+  </div>
+</div>
+
+<div class="panel panel-basic bg-neutral-11">
+  <div class="panel-body">
+    Basic Panel
+  </div>
+</div>
+
+ +
+
+ +

Basic Alternate

+

Basic alternate panels are panels with a border and shadow. You can have a panel-basic-alt with or without a title.

+
+
+
Basic Title Alt
+
+
+ Basic Panel +
+
+ +
+
+ Basic Panel +
+
+
+
+
+
<div class="panel panel-basic-alt">
+  <div class="panel-header">
+    <h5 class="panel-title-alt">Basic Title Alt</h5>
+  </div>
+  <div class="panel-body">
+    Basic Panel
+  </div>
+</div>
+
+<div class="panel panel-basic-alt">
+  <div class="panel-body">
+    Basic Panel
+  </div>
+</div>
+
+ +
+
+ +

Card

+

Using panels with card lists makes any .panel-body have a minimum "card" height.

+
    +
  • +
    + Card Panel +
    +
  • +
  • +
    + Card Panel +
    +
  • +
  • +
    + Card Panel +
    +
  • +
+
+
+
+
<ul class="list-cards list-cards-sm list-card-2">
+  <li class="panel panel-clickable-alt bg-neutral-11">
+    <div class="panel-body">
+      Card Panel
+    </div>
+  </li>
+  <li class="panel panel-clickable-alt bg-neutral-11">
+    <div class="panel-body">
+      Card Panel
+    </div>
+  </li>
+  <li class="panel panel-clickable-alt bg-neutral-11">
+    <div class="panel-body">
+      Card Panel
+    </div>
+  </li>
+</ul>
+
+ +
+
+ +

Clickable

+

These panels lighten on hover to indicate that they are clickable. +Please use them when a click on the panel triggers an action.

+ + + + + + + + + + + + + + +
+
+
+ Panel Clickable +
+
+
+
+
+
<div class="panel panel-clickable">
+  <div class="panel-body">
+    Panel Clickable
+  </div>
+</div>
+
+
+ +
+
+
+ Panel Clickable Alt +
+
+
+
+
+
+
<div class="panel panel-clickable-alt">
+  <div class="panel-body">
+    Panel Clickable Alt
+  </div>
+</div>
+
+
+ +
+
+ +

Sometimes you'll also want to adapt the way child elements look +based on a hover on the parent element. There are a few +helper classes for that.

+ + + + + + + + + + + + + + + + + + + +
+ + +
+
+
<a class="panel panel-clickable">
+  <div class="panel-body">
+    <p class="hover-target-1">
+      hover-target-1 - default text color => link color
+    </p>
+  </div>
+</a>
+
+
+ +
+ + +
+
+
<a class="panel panel-clickable">
+  <div class="panel-body">
+    <p class="hover-target-2">
+      hover-target-2 - light gray text => default text color
+    </p>
+  </div>
+</a>
+
+
+ +
+ + +
+
+
<a class="panel panel-clickable">
+  <div class="panel-body">
+    <p class="hover-target-3">
+      hover-target-3 - $gray-9 background => white background
+    </p>
+  </div>
+</a>
+
+
+ +
+
+ + +

Flex (Panel with Footer)

+

Flex panels let us put a footer at the bottom of a fixed-height panel. Any panel can flex. In browsers that don't +support flexbox, the footer will appear where it would naturally, likely right below the panel-body content.

By default, flex panels have no height. You must use an inline style to set the height.

+
+
Body Content
+ +
+
+
+
+
<div class="panel panel-flex bg-neutral-11" style="height:200px">
+  <div class="panel-body">Body Content</div>
+  <div class="panel-footer">Footer Content</div>
+</div>
+
+ +
+
+ +
+
+ Flex panels and list cards +
+

+ Flex panels are often used with list cards + as a way to give list cards footers. + Add the class list-card-wrapper on any flex panels inside list cards. +

+
+
+
+
+
+
+
<ul class="list-cards list-card-2 list-cards-sm">
+  <li class="panel panel-flex bg-neutral-11">
+    <div class="list-card-wrapper panel panel-flex">
+      <div class="panel-body">Body Content</div>
+      <div class="panel-footer">Footer Content</div>
+    </div>
+  </li>
+
+  <li class="panel panel-flex bg-neutral-11">
+    <form>
+      <div class="list-card-wrapper panel panel-flex">
+        <div class="panel-body">
+          <p>
+            It even works if your <code>list-card-wrapper</code> is nested in a form
+          </p>
+          <div class="form-group">
+            <input class="form-control" placeholder="Email">
+          </div>
+        </div>
+        <div class="panel-footer">Footer Content</div>
+      </div>
+    </form>
+  </li>
+
+  <li class="panel panel-flex bg-neutral-11">
+    <a class="list-card-link" href="http://wrd.cm/1e2A8uU">
+      <div class="list-card-wrapper panel panel-flex">
+        <div class="panel-body">Or in a link!</div>
+        <div class="panel-footer">Footer Content</div>
+      </div>
+    </a>
+  </li>
+</ul>
+
+ +
+
+ +

Highlight

+

This panel is used to highlight more important parts of the page.

+
+
+ Not Hoverable (use when the panel has no associated action, for instance if the action is disabled due to lack of permissions) +
+
+
+
+
+
<div class="panel panel-highlight">
+  <div class="panel-body">
+    Not Hoverable (use when the panel has no associated action, for instance if the action is disabled due to lack of permissions)
+  </div>
+</div>
+
+ +
+
+ +

Scrollable

+

The scrollable panel sets a fixed height of 183px and scrolls any content that is larger. If you want a different size, set an inline style on the .panel-scrollable.

+
+
+

Lo-fi fixie aute irony skateboard, officia pug. VHS Kickstarter semiotics elit ad. XOXO fashion axe Neutra aesthetic nihil, before they sold out seitan photo booth bitters paleo ea. XOXO mustache consectetur jean shorts wolf banh mi, food truck aute odio Neutra polaroid artisan mlkshk. Chillwave aesthetic hashtag, 3 wolf moon Neutra umami DIY swag eu veniam. Blue Bottle fap kale chips veniam kogi, placeat yr Portland nesciunt sustainable iPhone. Single-origin coffee messenger bag locavore Schlitz, ea farm-to-table aliquip anim umami master cleanse. Delectus selfies placeat, tilde hoodie qui selvage consectetur cred master cleanse readymade pop-up assumenda nisi. Eu deep v brunch McSweeney's. Raw denim aliquip Banksy, proident cred banjo qui placeat Brooklyn fashion axe crucifix normcore aesthetic. Esse Pinterest organic anim American Apparel, wolf next level Tumblr laboris normcore pop-up dolore lo-fi put a bird on it trust fund. Laborum organic authentic Williamsburg plaid, Wes Anderson dolore sunt chia small batch synth Carles cliche tilde. Food truck ethical freegan velit, Kickstarter semiotics labore American Apparel biodiesel street art gentrify trust fund. Selfies Austin ex, organic art party authentic ullamco kitsch plaid placeat roof party cornhole deserunt aute.

+
+
+
+
+
+
<div class="panel panel-scrollable bg-neutral-11">
+  <div class="panel-body">
+    <p>Lo-fi fixie aute irony skateboard, officia pug. VHS Kickstarter semiotics elit ad. XOXO fashion axe Neutra aesthetic nihil, before they sold out seitan photo booth bitters paleo ea. XOXO mustache consectetur jean shorts wolf banh mi, food truck aute odio Neutra polaroid artisan mlkshk. Chillwave aesthetic hashtag, 3 wolf moon Neutra umami DIY swag eu veniam. Blue Bottle fap kale chips veniam kogi, placeat yr Portland nesciunt sustainable iPhone. Single-origin coffee messenger bag locavore Schlitz, ea farm-to-table aliquip anim umami master cleanse. Delectus selfies placeat, tilde hoodie qui selvage consectetur cred master cleanse readymade pop-up assumenda nisi. Eu deep v brunch McSweeney's. Raw denim aliquip Banksy, proident cred banjo qui placeat Brooklyn fashion axe crucifix normcore aesthetic. Esse Pinterest organic anim American Apparel, wolf next level Tumblr laboris normcore pop-up dolore lo-fi put a bird on it trust fund. Laborum organic authentic Williamsburg plaid, Wes Anderson dolore sunt chia small batch synth Carles cliche tilde. Food truck ethical freegan velit, Kickstarter semiotics labore American Apparel biodiesel street art gentrify trust fund. Selfies Austin ex, organic art party authentic ullamco kitsch plaid placeat roof party cornhole deserunt aute.</p>
+  </div>
+</div>
+
+ +
+
+ +

Shadow

+

Shadow panels add a bottom shadow to the panel.

+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Shadow Panel +
+
+
+
+
+
<div class="panel panel-shadow-1 bg-neutral-11">
+  <div class="panel-body">
+    Shadow Panel
+  </div>
+</div>
+
+
+ +
+
+
+ Shadow Panel +
+
+
+
+
+
<div class="panel panel-shadow-2 bg-neutral-11">
+  <div class="panel-body">
+    Shadow Panel
+  </div>
+</div>
+
+
+ +
+
+
+ Shadow Panel +
+
+
+
+
+
<div class="panel panel-shadow-3 bg-neutral-11">
+  <div class="panel-body">
+    Shadow Panel
+  </div>
+</div>
+
+
+ +
+
+
+ Shadow Panel +
+
+
+
+
+
+
<div class="panel panel-shadow-4 bg-neutral-11">
+  <div class="panel-body">
+    Shadow Panel
+  </div>
+</div>
+
+
+ +
+
+ + +

Simple

+
+
+
+ Simple Panel +
+
+
+
+
+
<div class="panel panel-simple bg-neutral-11">
+  <div class="panel-body">
+    Simple Panel
+  </div>
+</div>
+
+ +
+
+ +

Print

+

Similar to the regular responsive classes, use these for toggling content for print.

+ + + + + + + + + + + + + + + + + + + + +
ClassesBrowserPrint
+ .visible-print-block
+ .visible-print-inline
+ .visible-print-inline-block +
Visible
.hidden-printVisible
+ +

Progress Bars

+

This section contains static progress bar styles.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ 0% +
+
+
+

+ 0 MB of 100 MB Used +

+
+
+
+
<div class="progress">
+  <div aria-valuemax="100" aria-valuemin="0" aria-valuenow="0" class="progress-bar" role="progressbar" style="width: 0%;">
+    <div class="label">
+      0%
+    </div>
+  </div>
+</div>
+<p>
+  0 MB of 100 MB Used
+</p>
+
+
+ +
+
+
+
+ 3% +
+
+
+

+ 3 MB of 100 MB Used +

+
+
+
+
<div class="progress">
+  <div aria-valuemax="100" aria-valuemin="0" aria-valuenow="3" class="progress-bar" role="progressbar" style="width: 3%;">
+    <div class="label">
+      3%
+    </div>
+  </div>
+</div>
+<p>
+  3 MB of 100 MB Used
+</p>
+
+
+ +
+
+
+
+ 9% +
+
+
+

+ 9 MB of 100 MB Used +

+
+
+
+
<div class="progress">
+  <div aria-valuemax="100" aria-valuemin="0" aria-valuenow="9" class="progress-bar" role="progressbar" style="width: 9%;">
+    <div class="label">
+      9%
+    </div>
+  </div>
+</div>
+<p>
+  9 MB of 100 MB Used
+</p>
+
+
+ +
+
+
+
+ 60% +
+
+
+

+ 60 MB of 100 MB Used +

+
+
+
+
<div class="progress">
+  <div aria-valuemax="100" aria-valuemin="0" aria-valuenow="60" class="progress-bar" role="progressbar" style="width: 60%;">
+    <div class="label">
+      60%
+    </div>
+  </div>
+</div>
+<p>
+  60 MB of 100 MB Used
+</p>
+
+
+ +
+
+
+
+ 90% +
+
+
+

+ 90 MB of 100 MB Used +

+
+
+
+
+
<div class="progress">
+  <div aria-valuemax="100" aria-valuemin="0" aria-valuenow="90" class="progress-bar" role="progressbar" style="width: 90%;">
+    <div class="label">
+      90%
+    </div>
+  </div>
+</div>
+<p>
+  90 MB of 100 MB Used
+</p>
+
+
+ +
+
+ + +

Responsive Utilities

+

Use a single or combination of the available classes for toggling content across viewport breakpoints.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Extra small devices + Phones (<768px) + + Small devices + Tablets (≥768px) + + Medium devices + Desktops (≥992px) + + Large devices + Desktops (≥1200px) +
.visible-xs-*Visible
.visible-sm-*Visible
.visible-md-*Visible
.visible-lg-*Visible
.hidden-xsVisibleVisibleVisible
.hidden-smVisibleVisibleVisible
.hidden-mdVisibleVisibleVisible
.hidden-lgVisibleVisibleVisible
+

The .visible-*-* classes for each breakpoint come in three variations, one for each CSS display property value listed below.

+ + + + + + + + + + + + + + + + + + + + + +
Group of classesCSS display
.visible-*-blockdisplay: block;
.visible-*-inlinedisplay: inline;
.visible-*-inline-blockdisplay: inline-block;
+

So, for extra small (xs) screens for example, the available .visible-*-* classes are:

+

Ribbons

+ + +

Ribbons should be used to call out access, status, environment, etc.

+

Banner

+

You can use a banner ribbon to let the team know which environment they're +working on.

+
+ Acceptance +
+
+
+
+
<div class="ribbon-banner">
+  Acceptance
+</div>
+
+ +
+
+ +

Ribbon

+
+ + + + + + + + + + + + + + +
+
British
+For British eyes only
+
+
+
+
<div class="inline-ribbon">British</div>
+<span class="mlm">For British eyes only</span>
+
+
+ +
+
Pivotal
+Wow this ribbon is so inline +
+
+
+
+
<div class="inline-ribbon ribbon-primary">Pivotal</div>
+<span class="mlm">Wow this ribbon is so inline</span>
+
+
+ +
+
+ + +

Tabs

+ + +

You can activate a tab or pill navigation without writing any JavaScript by simply specifying data-toggle="tab" on an element.

+

Highlight

+
+
+
+ +
+

Plan Features

+
+
Content 1
+
Content 2
+
Content 3
+
Content 4
+
+
+
+
+
+
+
+
<div class="tab-highlight">
+  <div class="row">
+    <div class="col-md-8">
+      <h1>Service Plans</h1>
+      <ul class="nav nav-stacked">
+        <li class="active">
+          <a data-toggle="tab" href="#home">
+            <div class="row">
+              <div class="col-md-10 tab-title">Spark</div>
+              <div class="col-md-14">Free</div>
+            </div>
+          </a>
+        </li>
+        <li>
+          <a data-toggle="tab" href="#profile">
+            <div class="row">
+              <div class="col-md-10 tab-title">Boost</div>
+              <div class="col-md-14">$10/month</div>
+            </div>
+          </a>
+        </li>
+        <li>
+          <a data-toggle="tab" href="#messages">
+            <div class="row">
+              <div class="col-md-10 tab-title">Amp</div>
+              <div class="col-md-14">$50/month</div>
+            </div>
+          </a>
+        </li>
+        <li>
+          <a data-toggle="tab" href="#settings">
+            <div class="row">
+              <div class="col-md-10 tab-title">
+                Shockingly long plan name is important to test
+              </div>
+              <div class="col-md-14">$1000/month</div>
+            </div>
+          </a>
+        </li>
+      </ul>
+    </div>
+    <div class="col-md-16">
+      <h1>Plan Features</h1>
+      <div class="tab-content">
+        <div class="tab-pane fade in active" id="home">Content 1</div>
+        <div class="tab-pane fade" id="profile">Content 2</div>
+        <div class="tab-pane fade" id="messages">Content 3</div>
+        <div class="tab-pane fade" id="settings">Content 4</div>
+      </div>
+    </div>
+  </div>
+</div>
+
+ +
+
+ +

Image

+

You can use any 130px by 130px svg for the icon in the center of the tab. Please add the class icon to any parts of the svg which form part of the icon. You may also use an icon font for the icon.

+
+ +
+
Agility Content
+
Choice Content
+
Open Source
+
+
+ +
+
+
+
<div class="tabs-images">
+  <ul class="list-inline nav-tabs-images">
+    <li class="active">
+      <a data-toggle="tab" href="#agility">
+        <span class="sr-only">Agility</span>
+        <svg class="icon-svg" x="0px" y="0px" height="130" width="130" enable-background="new 0 0 130 130" >
+          <g>
+            <path class="icon" d="M97.283,83.157H86.452c-2.555,3.305-5.781,6.066-9.478,8.067h20.31l4.489-3.945L97.283,83.157z"/>
+            <path class="icon" d="M62.788,38.586c-14.513,0-26.319,11.807-26.319,26.319c0,5.429,1.66,10.473,4.489,14.667h11.012
+              c-4.499-3.327-7.434-8.654-7.434-14.667c0-10.064,8.188-18.252,18.252-18.252S81.04,54.84,81.04,64.905
+              c0,6.013-2.935,11.34-7.434,14.667c-3.032,2.242-6.766,3.585-10.818,3.585H43.853h-4.729H28.292l4.482,4.122l-4.482,3.945h20.311
+              h14.185c7.43,0,14.145-3.099,18.935-8.067c1.066-1.106,2.033-2.308,2.895-3.585c2.83-4.194,4.489-9.238,4.489-14.667
+              C89.107,50.393,77.301,38.586,62.788,38.586z"/>
+          </g>
+        </svg>
+      </a>
+    </li>
+    <li>
+      <a data-toggle="tab" href="#choice">
+        <span class="sr-only">Choice</span>
+        <svg class="icon-svg" version="1.1" x="0px" y="0px"
+             viewBox="0 0 130 130" enable-background="new 0 0 130 130" xml:space="preserve">
+          <g>
+            <g>
+              <path class="icon" d="M59.642,57.905c0,1.65-1.35,3-3,3h-18c-1.65,0-3-1.35-3-3v-18c0-1.65,1.35-3,3-3h18c1.65,0,3,1.35,3,3V57.905z"/>
+            </g>
+            <g>
+              <path class="icon" d="M78.381,60.905c-1.65,0-3.675-1.169-4.5-2.598l-3.928-6.804c-0.825-1.429-0.825-3.767,0-5.196l3.928-6.804
+                c0.825-1.429,2.85-2.598,4.5-2.598h7.856c1.65,0,3.675,1.169,4.5,2.598l3.928,6.804c0.825,1.429,0.825,3.767,0,5.196l-3.928,6.804
+                c-0.825,1.429-2.85,2.598-4.5,2.598H78.381z"/>
+            </g>
+            <circle class="icon" cx="82.309" cy="79.905" r="12"/>
+            <g>
+              <path class="icon" d="M46.202,70.399c0.792-1.372,2.088-1.372,2.88,0l3.77,6.531c0.792,1.372,2.088,3.616,2.88,4.988l3.77,6.531
+                c0.792,1.372,0.144,2.494-1.44,2.494h-7.541c-1.584,0-4.175,0-5.759,0h-7.541c-1.584,0-2.232-1.122-1.44-2.494l3.77-6.531
+                c0.792-1.372,2.088-3.616,2.88-4.988L46.202,70.399z"/>
+            </g>
+          </g>
+        </svg>
+      </a>
+    </li>
+    <li>
+      <a data-toggle="tab" href="#open-source">
+        <span class="sr-only">Open Source</span>
+        <svg class="icon-svg" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 130 130" enable-background="new 0 0 130 130">
+          <path class="icon" d="M95.22,65.454c0-16.583-13.441-30.025-30.024-30.025c-16.583,0-30.026,13.442-30.026,30.025
+            c0,12.68,7.861,23.525,18.973,27.926l7.596-19.192c-3.477-1.377-5.937-4.767-5.937-8.734c0-5.188,4.207-9.393,9.394-9.393
+            c5.188,0,9.395,4.206,9.395,9.393c0,3.966-2.463,7.357-5.937,8.734l7.594,19.192C87.362,88.979,95.22,78.134,95.22,65.454z"/>
+        </svg>
+      </a>
+    </li>
+  </ul>
+  <div class="tab-content txt-c">
+    <div class="tab-pane fade in active" id="agility">Agility Content</div>
+    <div class="tab-pane fade" id="choice">Choice Content</div>
+    <div class="tab-pane fade" id="open-source">Open Source</div>
+  </div>
+</div>
+
+ +
+
+ +

Responsive

+
+
+
+
+ +
+ +
+
    +
  • + meep +
  • +
  • Content 1
  • +
  • + foo +
  • +
  • Content 2
  • +
  • + foo +
  • +
  • Content 3
  • +
  • + foo +
  • +
  • Content 4
  • +
+
+
+
+
+
+
+
<div class="tab-responsive">
+  <div class="row">
+    <div class="col-sm-5">
+      <ul class="nav hidden-xs">
+        <li class="active">
+          <a data-toggle="tab" href="#tab-responsive-1">meep</a>
+        </li>
+        <li>
+          <a data-toggle="tab" href="#tab-responsive-2">foo</a>
+        </li>
+        <li>
+          <a data-toggle="tab" href="#tab-responsive-3">bar</a>
+        </li>
+        <li>
+          <a data-toggle="tab" href="#tab-responsive-4">baz</a>
+        </li>
+      </ul>
+    </div>
+
+    <div class="col-sm-19">
+      <ul class="tab-content">
+        <li class="active">
+          <a class="visible-xs-block" data-toggle="tab" href="#tab-responsive-1">meep</a>
+        </li>
+        <li class="tab-pane active fade in" id="tab-responsive-1">Content 1</li>
+        <li>
+          <a class="visible-xs-block" data-toggle="tab" href="#tab-responsive-2">foo</a>
+        </li>
+        <li class="tab-pane fade" id="tab-responsive-2">Content 2</li>
+        <li>
+          <a class="visible-xs-block" data-toggle="tab" href="#tab-responsive-3">foo</a>
+        </li>
+        <li class="tab-pane fade" id="tab-responsive-3">Content 3</li>
+        <li>
+          <a class="visible-xs-block" data-toggle="tab" href="#tab-responsive-4">foo</a>
+        </li>
+        <li class="tab-pane fade" id="tab-responsive-4">Content 4</li>
+      </ul>
+    </div>
+  </div>
+</div>
+
+ +
+
+ +

Simple

+
+
+ + +
+
Spaces Content
+
Domains Content
+
Members Content
+
+
+
+
+
+
<div class="tab-simple">
+  <div class="tabs-action txt-r">
+    <a>Some Action</a>
+  </div>
+  <ul class="nav nav-tabs">
+    <li class="active">
+      <a data-toggle="tab" href="#spaces">Spaces</a>
+    </li>
+    <li>
+      <a data-toggle="tab" href="#domains">Domains</a>
+    </li>
+    <li>
+      <a data-toggle="tab" href="#members">Members</a>
+    </li>
+  </ul>
+  <div class="tab-content">
+    <div class="tab-pane fade in active" id="spaces">Spaces Content</div>
+    <div class="tab-pane fade" id="domains">Domains Content</div>
+    <div class="tab-pane fade" id="members">Members Content</div>
+  </div>
+</div>
+
+ +
+
+ +

Simple Alt

+

You do not need the .panel to wrap around .tab-simple-alt. We have it there to demonstrate the interaction on a neutral background.

+
+
+ +
+
Dashboard Content
+
Notifications Content
+
EULA Content
+
+
+
+
+
+
+
<div class="panel paxl bg-neutral-9">
+  <div class="tab-simple-alt">
+    <ul class="nav nav-tabs">
+      <li class="active">
+        <a data-toggle="tab" href="#dashboard">Dashboard</a>
+      </li>
+      <li>
+        <a data-toggle="tab" href="#notifications">Notifications</a>
+      </li>
+      <li>
+        <a data-toggle="tab" href="#eula">EULA</a>
+      </li>
+    </ul>
+    <div class="tab-content">
+      <div class="tab-pane fade in active" id="dashboard">Dashboard Content</div>
+      <div class="tab-pane fade" id="notifications">Notifications Content</div>
+      <div class="tab-pane fade" id="eula">EULA Content</div>
+    </div>
+  </div>
+</div>
+
+ +
+
+ +

Tables

+ + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
.tableBase table class, applies spacing and cross browser support. Unfortunately inherits some undesirable styles from bootstrap.
.table-hoverAdds a light blue background color to table rows when the user hovers over them (use to indicate clickability)
.table-stripedApplies zebra striping to a table.
.table-lightLightens the table background.
+

Scrollable

+

Table with borders where the contents of the table scroll but the header does not. +The default height of the scrollable table is 183px. There are four other sizes provided +which you can use by adding the following classes to the .table-scrollable element.

+ + + + + + + + + + + + + + + + + + + +
Table Scrollable sizesHeight
default183px
.table-scrollable-sm300px
.table-scrollable-md600px
.table-scrollable-lg900px

If you would like a custom size, please add an inline style to the .table-scrollable-body element.

Design Note: The table-scrollable is often paired with table-data and table-light as in our example.

+
+

+ You will need to specify the width of every column in both the thead and + the first row of the tbody. You can do this with inline width attributes. +

+
+
+
+
+ + + + + + + + + + + +
#StatusCPUMemoryDiskUptime
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
0Running0%4.16 MB6.75 MB27 min
1Running0%4.07 MB6.75 MB27 min
2Running0%4.07 MB6.75 MB25 min
3Running0%4.14 MB6.75 MB25 min
4Running0%4.08 MB6.75 MB25 min
5Running0%4.16 MB6.75 MB25 min
6Running0%4.07 MB6.75 MB25 min
7Running0%4.07 MB6.75 MB25 min
8Running0%4.03 MB6.75 MB25 min
9Running0%4.07 MB6.75 MB25 min
+
+
+
+
+
+
<div class="table-scrollable table-scrollable-sm">
+  <div class="table-scrollable-header">
+    <table class="table table-data table-light">
+      <thead>
+        <tr>
+          <th width="10%">#</th>
+          <th width="16%">Status</th>
+          <th width="12%">CPU</th>
+          <th width="16%">Memory</th>
+          <th width="16%">Disk</th>
+          <th width="30%">Uptime</th>
+        </tr>
+      </thead>
+    </table>
+  </div>
+  <div class="table-scrollable-body">
+    <table class="table table-data table-light">
+      <tbody>
+        <tr>
+          <td width="10%">0</td>
+          <td width="16%">Running</td>
+          <td width="12%">0%</td>
+          <td width="16%">4.16 MB</td>
+          <td width="16%">6.75 MB</td>
+          <td width="30%">27 min</td>
+        </tr>
+        <tr>
+          <td>1</td>
+          <td>Running</td>
+          <td>0%</td>
+          <td>4.07 MB</td>
+          <td>6.75 MB</td>
+          <td>27 min</td>
+        </tr>
+        <tr>
+          <td>2</td>
+          <td>Running</td>
+          <td>0%</td>
+          <td>4.07 MB</td>
+          <td>6.75 MB</td>
+          <td>25 min</td>
+        </tr>
+        <tr>
+          <td>3</td>
+          <td>Running</td>
+          <td>0%</td>
+          <td>4.14 MB</td>
+          <td>6.75 MB</td>
+          <td>25 min</td>
+        </tr>
+        <tr>
+          <td>4</td>
+          <td>Running</td>
+          <td>0%</td>
+          <td>4.08 MB</td>
+          <td>6.75 MB</td>
+          <td>25 min</td>
+        </tr>
+        <tr>
+          <td>5</td>
+          <td>Running</td>
+          <td>0%</td>
+          <td>4.16 MB</td>
+          <td>6.75 MB</td>
+          <td>25 min</td>
+        </tr>
+        <tr>
+          <td>6</td>
+          <td>Running</td>
+          <td>0%</td>
+          <td>4.07 MB</td>
+          <td>6.75 MB</td>
+          <td>25 min</td>
+        </tr>
+        <tr>
+          <td>7</td>
+          <td>Running</td>
+          <td>0%</td>
+          <td>4.07 MB</td>
+          <td>6.75 MB</td>
+          <td>25 min</td>
+        </tr>
+        <tr>
+          <td>8</td>
+          <td>Running</td>
+          <td>0%</td>
+          <td>4.03 MB</td>
+          <td>6.75 MB</td>
+          <td>25 min</td>
+        </tr>
+        <tr>
+          <td>9</td>
+          <td>Running</td>
+          <td>0%</td>
+          <td>4.07 MB</td>
+          <td>6.75 MB</td>
+          <td>25 min</td>
+        </tr>
+      </tbody>
+    </table>
+  </div>
+</div>
+
+ +
+
+ +

Alignment

+

See the alignment component for classes to use for table text alignment.

+

Data

+

This is a table used to display many rows of data (it is pretty much the default table). You can use grid column classes on th and td elements. See key-value table for example.

Design Note: The table-data is often paired with table-light as in our example.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service InstanceService PlanBound Apps
oracle-db-sctOracle DB12
oracle-db-sctOracle DB12
oracle-db-sctOracle DB12
oracle-db-sctOracle DB12
+
+
+
+
<table class="table table-data table-light">
+  <thead>
+    <tr>
+      <th>Service Instance</th>
+      <th>Service Plan</th>
+      <th>Bound Apps</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>oracle-db-sct</td>
+      <td>Oracle DB</td>
+      <td>12</td>
+    </tr>
+    <tr>
+      <td>oracle-db-sct</td>
+      <td>Oracle DB</td>
+      <td>12</td>
+    </tr>
+    <tr>
+      <td>oracle-db-sct</td>
+      <td>Oracle DB</td>
+      <td>12</td>
+    </tr>
+    <tr>
+      <td>oracle-db-sct</td>
+      <td>Oracle DB</td>
+      <td>12</td>
+    </tr>
+  </tbody>
+</table>
+
+ +
+
+ +

Key-Value

+

This table is used when the table headings are on the left. It looks better when you +specify column widths for the th/tds.

+
+ + + + + + + + + + + + + + + + + + + + + + +
Emailjoe@example.com
Current Password*******
First NameJoe
Last NameBobs
Phone415-555-0000
+
+
+
+
<table class="table table-key-value">
+  <tbody>
+    <tr>
+      <th class="col-md-8">Email</th>
+      <td class="col-md-16">joe@example.com</td>
+    </tr>
+    <tr>
+      <th class="col-md-8">Current Password</th>
+      <td class="col-md-16">*******</td>
+    </tr>
+    <tr>
+      <th class="col-md-8">First Name</th>
+      <td class="col-md-16">Joe</td>
+    </tr>
+    <tr>
+      <th class="col-md-8">Last Name</th>
+      <td class="col-md-16">Bobs</td>
+    </tr>
+    <tr>
+      <th class="col-md-8">Phone</th>
+      <td class="col-md-16">415-555-0000</td>
+    </tr>
+  </tbody>
+</table>
+
+ +
+
+ +

Tooltip

+

Tooltips are used to display extra information on hover. They can be used with any hoverable element.

The title attribute defines the text that appears on the tooltip. +The data-placement attribute defines the tooltip's placement. +If data-placement is not specified, the tooltip is placed on top by default.

+
+

+ Tooltips must be initialized with javascript: $(mySelector).tooltip(); +

+
+
+

+ Check out this + + tooltip on the left! + +

+ +

+ Check out this + + tooltip on the right! + +

+ +

+ +

+ +

+ +

+
+
+
+
<p>
+  Check out this
+  <a id="link-with-tooltip-1" href="#" data-toggle="tooltip" data-placement="left" title="I should be on the left">
+    tooltip on the left!
+  </a>
+</p>
+
+<p>
+  Check out this
+  <a id="link-with-tooltip-2" href="#" data-toggle="tooltip" data-placement="right" title="I should be on the right">
+    tooltip on the right!
+  </a>
+</p>
+
+<p>
+  <button id="button-with-tooltip-1" class="btn btn-default" data-toggle="tooltip" data-placement="top" title="I should be on the top">
+    Check out this tooltip on the top!
+  </button>
+</p>
+
+<p>
+  <button id="button-with-tooltip-2" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="I should be on the bottom">
+    Check out this tooltip on the bottom!
+  </button>
+</p>
+
+ +
+
+ +
+
+
$('#link-with-tooltip-1').tooltip();
+$('#link-with-tooltip-2').tooltip();
+$('#button-with-tooltip-1').tooltip();
+$('#button-with-tooltip-2').tooltip();
+
+ +
+ + +
+

+ If you want to use a tooltip on a disabled element, place the tooltip in a wrapper div with the class .button-with-tooltip-wrapper. +

+
+
+
+ +
+
+
+
+
<div id="disabled-button-with-tooltip" class="button-with-tooltip-wrapper" data-toggle="tooltip" data-placement="right" title="This button is totally disabled!">
+  <button type="button" class="btn btn-default" disabled=true>
+    Disabled button
+  </button>
+</div>
+
+ +
+
+ +
+
+
$('#disabled-button-with-tooltip').tooltip();
+
+ +
+ + +

Typography

+ + +

Source Sans Pro is our font family. +It can be used with the following modifiers to achieve a variety of effects.

+

Sizes

+

Set font sizes using headings and modifier classes.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

h1.title 42px

+
+
+
+
<h1 class="title">h1.title 42px</h1>
+
+
+ +
+

h1 31px

+
+
+
+
<h1>h1 31px</h1>
+
+
+ +
+

h2 25px

+
+
+
+
<h2>h2 25px</h2>
+
+
+ +
+

h3 20px

+
+
+
+
<h3>h3 20px</h3>
+
+
+ +
+

h4 18px

+
+
+
+
<h4>h4 18px</h4>
+
+
+ +
+
h5 16px
+
+
+
+
<h5>h5 16px</h5>
+
+
+ +
+
h6 13px
+
+
+
+
<h6>h6 13px</h6>
+
+
+ +
+

base font size 16px

+
+
+
+
<p>base font size 16px</p>
+
+
+ +
+

small text 14px

+
+
+
+
<p class="type-sm">small text 14px</p>
+
+
+ +
+

extra small text 12px

+
+
+
+
+
<p class="type-xs">extra small text 12px</p>
+
+
+ +
+
+ + +
+
+ Separating code and visual semantics +
+

+ Sometimes you may need to use a heading which has different visual and code semantics. + You can accomplish this by combining classes with elements + (classes take visual precedence over elements in this case). +

+
+
+ + + + + + + + + + + + + + +
+

I am a h1!

+
+
+
+
<h1 class="h2">I am a h1!</h1>
+
+
+ +
+

I am a h2!

+
+
+
+
+
<h2 class="h1">I am a h2!</h2>
+
+
+ +
+
+ +

If it's not a heading but you need similar visual treatment you can add just the class to any element.

+
+

+ Use headings when possible since they add semantic value. +

+
+
+ + + + + + + + + +
+
Heading level 2 on a div
+
+
+
+
+
<div class="h2">Heading level 2 on a div</div>
+
+
+ +
+
+ + +

Alignment

+

See the alignment component for classes to use for text alignment.

+

Colors

+

You can apply color to any text with the color classes.

+ + + + + + + + + +
+

I'm a brand color!

+
+
+
+
+
<p class="type-brand-3">I'm a brand color!</p>
+
+
+ +
+
+ +

Here's a table of all the color classes.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Type inverse

Type inverse

.type-inverse

Type neutral 1

Type neutral 1

.type-neutral-1

Type neutral 1

Type neutral 1

.type-neutral-1

Type neutral 2

Type neutral 2

.type-neutral-2

Type neutral 3

Type neutral 3

.type-neutral-3

Type neutral 4

Type neutral 4

.type-neutral-4

Type neutral 5

Type neutral 5

.type-neutral-5

Type neutral 6

Type neutral 6

.type-neutral-6

Type neutral 7

Type neutral 7

.type-neutral-7

Type neutral 8

Type neutral 8

.type-neutral-8

Type neutral 9

Type neutral 9

.type-neutral-9

Type neutral 10

Type neutral 10

.type-neutral-10

Type neutral 11

Type neutral 11

.type-neutral-11

Type dark 1

Type dark 1

.type-dark-1

Type dark 2

Type dark 2

.type-dark-2

Type dark 3

Type dark 3

.type-dark-3

Type accent 1

Type accent 1

.type-accent-1

Type accent 2

Type accent 2

.type-accent-2

Type accent 3

Type accent 3

.type-accent-3

Type accent 4

Type accent 4

.type-accent-4

Type accent 5

Type accent 5

.type-accent-5

Type brand 1

Type brand 1

.type-brand-1

Type brand 2

Type brand 2

.type-brand-2

Type brand 3

Type brand 3

.type-brand-3

Type brand 4

Type brand 4

.type-brand-4

Type brand 5

Type brand 5

.type-brand-5

Type error 1

Type error 1

.type-error-1

Type error 2

Type error 2

.type-error-2

Type error 3

Type error 3

.type-error-3

Type error 4

Type error 4

.type-error-4

Type success 1

Type success 1

.type-success-1

Type success 2

Type success 2

.type-success-2

Type warn 1

Type warn 1

.type-warn-1

Type warn 2

Type warn 2

.type-warn-2

Type warn 3

Type warn 3

.type-warn-3
+ +

Emphasis Modifiers

+

Type emphasis modifiers can be used on any type element.

+ + + + + + + + + +
+

Really Important

+

+ I mean reeeeeeeeeeeally +

+
+
+
+
+
<h1 class="em-high">Really Important</h1>
+<p>
+  I mean <span class="em-max">reeeeeeeeeeeally</span>
+</p>
+
+
+ +
+
+ +

Here's a table of all the emphasis modifier classes.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Low emphasis

+
+
+
+
<h1 class="em-low">Low emphasis</h1>
+
+
+ +
+

Default emphasis

+
+
+
+
<h1 class="em-default">Default emphasis</h1>
+
+
+ +
+

High emphasis

+
+
+
+
<h1 class="em-high">High emphasis</h1>
+
+
+ +
+

Maximum emphasis

+
+
+
+
<h1 class="em-max">Maximum emphasis</h1>
+
+
+ +
+

Emphasis alternate

+
+
+
+
+
<h1 class="em-alt">Emphasis alternate</h1>
+
+
+ +
+
+ + +

Vertical Align

+

The Aligner allows you to vertically align children to the top, center, or bottom. +Its height is set by default to 230px.

This component doesn't do any horizontal alignment. +You can use grids, or the text-alignment classes +.txt-l, .txt-r, and .txt-c with this component.

+
+

+ This component is not supported in IE10 and below. + While the content will appear, it will not be vertically aligned. +

+
+
+ +
+
+
<div class="aligner txt-c">
+  <a class="aligner-item" href="http://bitly.com/ZTHUDU">Centered content</a>
+</div>
+
+ +
+
+

Override the default height by setting an inline style like so:

+
+
+
+
+
<div class="aligner" style="height: 200px;">
+  <a class="aligner-item aligner-item-top" href="http://bit.ly/1wCDWdC">On Top</a>
+  <a class="aligner-item" href="http://bitly.com/ZTHUDU">Center</a>
+  <a class="aligner-item aligner-item-bottom" href="http://bit.ly/12TqYiL">Bottom</a>
+</div>
+
+ +
+
+

Note: the background colors in the example are just for display in the styleguide.

+

Whitespace

+ + + +

Standard

+

Should be used to modify the default spacing between objects (not between nodes of the same object) +Please use judiciously. You want to be using defaults most of the time, these are exceptions! +<type><location><size>

+ + + + + + + + + + + + + + + +
LetterDescription
p, mpadding, margin
a, t, r, b, l, h, vall, top, right, bottom, left, horizontal, vertical
n, s, m, l, xl, xxl, xxxl, xxxxlnone(0px), small(5px), medium(7px), large(10px), extra large(20px), extra extra large (40px), extra extra extra large (120px), extra extra extra extra large (140px)
+

A normal paragraph

+

A paragraph with large padding

+
+
+
+
<p>A normal paragraph</p>
+<p class="pal">A paragraph with large padding</p>
+
+ +
+
+ +

List

+

See list spacing.

+ + +
+ + diff --git a/release/pui-v1.7.0/bootstrap-sass/_bootstrap-compass.scss b/release/pui-v1.7.0/bootstrap-sass/_bootstrap-compass.scss new file mode 100644 index 000000000..82706c47c --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/_bootstrap-compass.scss @@ -0,0 +1,7 @@ +@function twbs-font-path($path) { + @return font-url($path, true); +} + +@function twbs-image-path($path) { + @return image-url($path, true); +} diff --git a/release/pui-v1.7.0/bootstrap-sass/_bootstrap-mincer.scss b/release/pui-v1.7.0/bootstrap-sass/_bootstrap-mincer.scss new file mode 100644 index 000000000..34132501f --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/_bootstrap-mincer.scss @@ -0,0 +1,17 @@ +// Mincer asset helper functions +// +// This must be imported into a .css.ejs.scss file. +// Then, <% %>-interpolations will be parsed as strings by Sass, and evaluated by EJS after Sass compilation. + + +@function twbs-font-path($path) { + // do something like following + // from "path/to/font.ext#suffix" to "<%- asset_path(path/to/font.ext)) + #suffix %>" + // from "path/to/font.ext?#suffix" to "<%- asset_path(path/to/font.ext)) + ?#suffix %>" + // or from "path/to/font.ext" just "<%- asset_path(path/to/font.ext)) %>" + @return "<%- asset_path('#{$path}'.replace(/[#?].*$/, '')) + '#{$path}'.replace(/(^[^#?]*)([#?]?.*$)/, '$2') %>"; +} + +@function twbs-image-path($file) { + @return "<%- asset_path('#{$file}') %>"; +} diff --git a/release/pui-v1.7.0/bootstrap-sass/_bootstrap-sprockets.scss b/release/pui-v1.7.0/bootstrap-sass/_bootstrap-sprockets.scss new file mode 100644 index 000000000..7d3069280 --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/_bootstrap-sprockets.scss @@ -0,0 +1,7 @@ +@function twbs-font-path($path) { + @return font-path($path); +} + +@function twbs-image-path($path) { + @return image-path($path); +} diff --git a/release/pui-v1.7.0/bootstrap-sass/_bootstrap.scss b/release/pui-v1.7.0/bootstrap-sass/_bootstrap.scss new file mode 100644 index 000000000..65204aad1 --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/_bootstrap.scss @@ -0,0 +1,50 @@ +// Core variables and mixins +@import "bootstrap/variables"; +@import "bootstrap/mixins"; + +// Reset and dependencies +@import "bootstrap/normalize"; +@import "bootstrap/print"; +@import "bootstrap/glyphicons"; + +// Core CSS +@import "bootstrap/scaffolding"; +@import "bootstrap/type"; +@import "bootstrap/code"; +@import "bootstrap/grid"; +@import "bootstrap/tables"; +@import "bootstrap/forms"; +@import "bootstrap/buttons"; + +// Components +@import "bootstrap/component-animations"; +@import "bootstrap/dropdowns"; +@import "bootstrap/button-groups"; +@import "bootstrap/input-groups"; +@import "bootstrap/navs"; +@import "bootstrap/navbar"; +@import "bootstrap/breadcrumbs"; +@import "bootstrap/pagination"; +@import "bootstrap/pager"; +@import "bootstrap/labels"; +@import "bootstrap/badges"; +@import "bootstrap/jumbotron"; +@import "bootstrap/thumbnails"; +@import "bootstrap/alerts"; +@import "bootstrap/progress-bars"; +@import "bootstrap/media"; +@import "bootstrap/list-group"; +@import "bootstrap/panels"; +@import "bootstrap/responsive-embed"; +@import "bootstrap/wells"; +@import "bootstrap/close"; + +// Components w/ JavaScript +@import "bootstrap/modals"; +@import "bootstrap/tooltip"; +@import "bootstrap/popovers"; +@import "bootstrap/carousel"; + +// Utility classes +@import "bootstrap/utilities"; +@import "bootstrap/responsive-utilities"; diff --git a/release/pui-v1.7.0/bootstrap-sass/bootstrap/_alerts.scss b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_alerts.scss new file mode 100644 index 000000000..e45de8305 --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_alerts.scss @@ -0,0 +1,68 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: $alert-padding; + margin-bottom: $line-height-computed; + border: 1px solid transparent; + border-radius: $alert-border-radius; + + // Headings for larger alerts + h4 { + margin-top: 0; + // Specified for the h4 to prevent conflicts of changing $headings-color + color: inherit; + } + // Provide class for links that match alerts + .alert-link { + font-weight: $alert-link-font-weight; + } + + // Improve alignment and spacing of inner content + > p, + > ul { + margin-bottom: 0; + } + > p + p { + margin-top: 5px; + } +} + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. +.alert-dismissible { + padding-right: ($alert-padding + 20); + + // Adjust close link position + .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } +} + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +.alert-success { + @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); +} +.alert-info { + @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); +} +.alert-warning { + @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); +} +.alert-danger { + @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); +} diff --git a/release/pui-v1.7.0/bootstrap-sass/bootstrap/_badges.scss b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_badges.scss new file mode 100644 index 000000000..c913f1444 --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_badges.scss @@ -0,0 +1,63 @@ +// +// Badges +// -------------------------------------------------- + + +// Base class +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: $font-size-small; + font-weight: $badge-font-weight; + color: $badge-color; + line-height: $badge-line-height; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: $badge-bg; + border-radius: $badge-border-radius; + + // Empty badges collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for badges in buttons + .btn & { + position: relative; + top: -1px; + } + .btn-xs & { + top: 0; + padding: 1px 5px; + } + + // [converter] extracted a& to a.badge + + // Account for badges in navs + .list-group-item.active > &, + .nav-pills > .active > a > & { + color: $badge-active-color; + background-color: $badge-active-bg; + } + .list-group-item > & { + float: right; + } + .list-group-item > & + & { + margin-right: 5px; + } + .nav-pills > li > a > & { + margin-left: 3px; + } +} + +// Hover state, but only for links +a.badge { + &:hover, + &:focus { + color: $badge-link-hover-color; + text-decoration: none; + cursor: pointer; + } +} diff --git a/release/pui-v1.7.0/bootstrap-sass/bootstrap/_breadcrumbs.scss b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_breadcrumbs.scss new file mode 100644 index 000000000..3641e333b --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_breadcrumbs.scss @@ -0,0 +1,26 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal; + margin-bottom: $line-height-computed; + list-style: none; + background-color: $breadcrumb-bg; + border-radius: $border-radius-base; + + > li { + display: inline-block; + + + li:before { + content: "#{$breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space + padding: 0 5px; + color: $breadcrumb-color; + } + } + + > .active { + color: $breadcrumb-active-color; + } +} diff --git a/release/pui-v1.7.0/bootstrap-sass/bootstrap/_button-groups.scss b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_button-groups.scss new file mode 100644 index 000000000..e761daaf4 --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_button-groups.scss @@ -0,0 +1,243 @@ +// +// Button groups +// -------------------------------------------------- + +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; // match .btn alignment given font-size hack above + > .btn { + position: relative; + float: left; + // Bring the "active" button to the front + &:hover, + &:focus, + &:active, + &.active { + z-index: 2; + } + } +} + +// Prevent double borders when buttons are next to each other +.btn-group { + .btn + .btn, + .btn + .btn-group, + .btn-group + .btn, + .btn-group + .btn-group { + margin-left: -1px; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + margin-left: -5px; // Offset the first child's margin + @include clearfix; + + .btn-group, + .input-group { + float: left; + } + > .btn, + > .btn-group, + > .input-group { + margin-left: 5px; + } +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + &:not(:last-child):not(.dropdown-toggle) { + @include border-right-radius(0); + } +} +// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + @include border-left-radius(0); +} + +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child { + > .btn:last-child, + > .dropdown-toggle { + @include border-right-radius(0); + } +} +.btn-group > .btn-group:last-child > .btn:first-child { + @include border-left-radius(0); +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-xs > .btn { @extend .btn-xs; } +.btn-group-sm > .btn { @extend .btn-sm; } +.btn-group-lg > .btn { @extend .btn-lg; } + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} + +// The clickable button for toggling the menu +// Remove the gradient and set the same inset shadow as the :active state +.btn-group.open .dropdown-toggle { + @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + + // Show no shadow for `.btn-link` since it has no other button styles. + &.btn-link { + @include box-shadow(none); + } +} + + +// Reposition the caret +.btn .caret { + margin-left: 0; +} +// Carets in other button sizes +.btn-lg .caret { + border-width: $caret-width-large $caret-width-large 0; + border-bottom-width: 0; +} +// Upside down carets for .dropup +.dropup .btn-lg .caret { + border-width: 0 $caret-width-large $caret-width-large; +} + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + > .btn, + > .btn-group, + > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + + // Clear floats so dropdown menus can be properly placed + > .btn-group { + @include clearfix; + > .btn { + float: none; + } + } + + > .btn + .btn, + > .btn + .btn-group, + > .btn-group + .btn, + > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } +} + +.btn-group-vertical > .btn { + &:not(:first-child):not(:last-child) { + border-radius: 0; + } + &:first-child:not(:last-child) { + border-top-right-radius: $border-radius-base; + @include border-bottom-radius(0); + } + &:last-child:not(:first-child) { + border-bottom-left-radius: $border-radius-base; + @include border-top-radius(0); + } +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + @include border-bottom-radius(0); + } +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + @include border-top-radius(0); +} + + +// Justified button groups +// ---------------------- + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + > .btn, + > .btn-group { + float: none; + display: table-cell; + width: 1%; + } + > .btn-group .btn { + width: 100%; + } + + > .btn-group .dropdown-menu { + left: auto; + } +} + + +// Checkbox and radio options +// +// In order to support the browser's form validation feedback, powered by the +// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use +// `display: none;` or `visibility: hidden;` as that also hides the popover. +// Simply visually hiding the inputs via `opacity` would leave them clickable in +// certain cases which is prevented by using `clip` and `pointer-events`. +// This way, we ensure a DOM element is visible to position the popover from. +// +// See https://github.com/twbs/bootstrap/pull/12794 and +// https://github.com/twbs/bootstrap/pull/14559 for more information. + +[data-toggle="buttons"] { + > .btn, + > .btn-group > .btn { + input[type="radio"], + input[type="checkbox"] { + position: absolute; + clip: rect(0,0,0,0); + pointer-events: none; + } + } +} diff --git a/release/pui-v1.7.0/bootstrap-sass/bootstrap/_buttons.scss b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_buttons.scss new file mode 100644 index 000000000..37bf259ed --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_buttons.scss @@ -0,0 +1,160 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +.btn { + display: inline-block; + margin-bottom: 0; // For input.btn + font-weight: $btn-font-weight; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + white-space: nowrap; + @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $border-radius-base); + @include user-select(none); + + &, + &:active, + &.active { + &:focus, + &.focus { + @include tab-focus; + } + } + + &:hover, + &:focus, + &.focus { + color: $btn-default-color; + text-decoration: none; + } + + &:active, + &.active { + outline: 0; + background-image: none; + @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + cursor: $cursor-disabled; + pointer-events: none; // Future-proof disabling of clicks + @include opacity(.65); + @include box-shadow(none); + } +} + + +// Alternate buttons +// -------------------------------------------------- + +.btn-default { + @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); +} +.btn-primary { + @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); +} +// Success appears as green +.btn-success { + @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border); +} +// Info appears as blue-green +.btn-info { + @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border); +} +// Warning appears as orange +.btn-warning { + @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border); +} +// Danger and error appear as red +.btn-danger { + @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); +} + + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link { + color: $link-color; + font-weight: normal; + border-radius: 0; + + &, + &:active, + &.active, + &[disabled], + fieldset[disabled] & { + background-color: transparent; + @include box-shadow(none); + } + &, + &:hover, + &:focus, + &:active { + border-color: transparent; + } + &:hover, + &:focus { + color: $link-hover-color; + text-decoration: underline; + background-color: transparent; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: $btn-link-disabled-color; + text-decoration: none; + } + } +} + + +// Button Sizes +// -------------------------------------------------- + +.btn-lg { + // line-height: ensure even-numbered height of button next to large input + @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large); +} +.btn-sm { + // line-height: ensure proper height of button next to small input + @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small); +} +.btn-xs { + @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $border-radius-small); +} + + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} diff --git a/release/pui-v1.7.0/bootstrap-sass/bootstrap/_carousel.scss b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_carousel.scss new file mode 100644 index 000000000..49db83fc4 --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_carousel.scss @@ -0,0 +1,267 @@ +// +// Carousel +// -------------------------------------------------- + + +// Wrapper for the slide container and indicators +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; + + > .item { + display: none; + position: relative; + @include transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + @include img-responsive; + line-height: 1; + } + + // WebKit CSS3 transforms for supported devices + @media all and (transform-3d), (-webkit-transform-3d) { + transition: transform .6s ease-in-out; + backface-visibility: hidden; + perspective: 1000; + + &.next, + &.active.right { + transform: translate3d(100%, 0, 0); + left: 0; + } + &.prev, + &.active.left { + transform: translate3d(-100%, 0, 0); + left: 0; + } + &.next.left, + &.prev.right, + &.active { + transform: translate3d(0, 0, 0); + left: 0; + } + } + } + + > .active, + > .next, + > .prev { + display: block; + } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: $carousel-control-width; + @include opacity($carousel-control-opacity); + font-size: $carousel-control-font-size; + color: $carousel-control-color; + text-align: center; + text-shadow: $carousel-text-shadow; + // We can't have this transition here because WebKit cancels the carousel + // animation if you trip this while in the middle of another animation. + + // Set gradients for backgrounds + &.left { + @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001)); + } + &.right { + left: auto; + right: 0; + @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5)); + } + + // Hover/focus state + &:hover, + &:focus { + outline: 0; + color: $carousel-control-color; + text-decoration: none; + @include opacity(.9); + } + + // Toggles + .icon-prev, + .icon-next, + .glyphicon-chevron-left, + .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + } + .icon-prev, + .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; + } + .icon-next, + .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; + } + .icon-prev, + .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + font-family: serif; + } + + + .icon-prev { + &:before { + content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) + } + } + .icon-next { + &:before { + content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) + } + } +} + +// Optional indicator pips +// +// Add an unordered list with the following class and add a list item for each +// slide your carousel holds. + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; + + li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid $carousel-indicator-border-color; + border-radius: 10px; + cursor: pointer; + + // IE8-9 hack for event handling + // + // Internet Explorer 8-9 does not support clicks on elements without a set + // `background-color`. We cannot use `filter` since that's not viewed as a + // background color by the browser. Thus, a hack is needed. + // + // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we + // set alpha transparency for the best results possible. + background-color: #000 \9; // IE8 + background-color: rgba(0,0,0,0); // IE9 + } + .active { + margin: 0; + width: 12px; + height: 12px; + background-color: $carousel-indicator-active-bg; + } +} + +// Optional captions +// ----------------------------- +// Hidden by default for smaller viewports +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: $carousel-caption-color; + text-align: center; + text-shadow: $carousel-text-shadow; + & .btn { + text-shadow: none; // No shadow for button elements in carousel-caption + } +} + + +// Scale up controls for tablets and up +@media screen and (min-width: $screen-sm-min) { + + // Scale up the controls a smidge + .carousel-control { + .glyphicon-chevron-left, + .glyphicon-chevron-right, + .icon-prev, + .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .glyphicon-chevron-left, + .icon-prev { + margin-left: -15px; + } + .glyphicon-chevron-right, + .icon-next { + margin-right: -15px; + } + } + + // Show and left align the captions + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + + // Move up the indicators + .carousel-indicators { + bottom: 20px; + } +} diff --git a/release/pui-v1.7.0/bootstrap-sass/bootstrap/_close.scss b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_close.scss new file mode 100644 index 000000000..62ce30fa3 --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_close.scss @@ -0,0 +1,35 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: ($font-size-base * 1.5); + font-weight: $close-font-weight; + line-height: 1; + color: $close-color; + text-shadow: $close-text-shadow; + @include opacity(.2); + + &:hover, + &:focus { + color: $close-color; + text-decoration: none; + cursor: pointer; + @include opacity(.5); + } + + // [converter] extracted button& to button.close +} + +// Additional properties for button version +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} diff --git a/release/pui-v1.7.0/bootstrap-sass/bootstrap/_code.scss b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_code.scss new file mode 100644 index 000000000..caa5f0630 --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_code.scss @@ -0,0 +1,69 @@ +// +// Code (inline and block) +// -------------------------------------------------- + + +// Inline and block code styles +code, +kbd, +pre, +samp { + font-family: $font-family-monospace; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: $code-color; + background-color: $code-bg; + border-radius: $border-radius-base; +} + +// User input typically entered via keyboard +kbd { + padding: 2px 4px; + font-size: 90%; + color: $kbd-color; + background-color: $kbd-bg; + border-radius: $border-radius-small; + box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); + + kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; + } +} + +// Blocks of code +pre { + display: block; + padding: (($line-height-computed - 1) / 2); + margin: 0 0 ($line-height-computed / 2); + font-size: ($font-size-base - 1); // 14px to 13px + line-height: $line-height-base; + word-break: break-all; + word-wrap: break-word; + color: $pre-color; + background-color: $pre-bg; + border: 1px solid $pre-border-color; + border-radius: $border-radius-base; + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: $pre-scrollable-max-height; + overflow-y: scroll; +} diff --git a/release/pui-v1.7.0/bootstrap-sass/bootstrap/_component-animations.scss b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_component-animations.scss new file mode 100644 index 000000000..1f76b8c0d --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_component-animations.scss @@ -0,0 +1,38 @@ +// +// Component animations +// -------------------------------------------------- + +// Heads up! +// +// We don't use the `.opacity()` mixin here since it causes a bug with text +// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. + +.fade { + opacity: 0; + @include transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + display: none; + visibility: hidden; + + &.in { display: block; visibility: visible; } + // [converter] extracted tr&.in to tr.collapse.in + // [converter] extracted tbody&.in to tbody.collapse.in +} + +tr.collapse.in { display: table-row; } + +tbody.collapse.in { display: table-row-group; } + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + @include transition-property(height, visibility); + @include transition-duration(.35s); + @include transition-timing-function(ease); +} diff --git a/release/pui-v1.7.0/bootstrap-sass/bootstrap/_dropdowns.scss b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_dropdowns.scss new file mode 100644 index 000000000..c7256e104 --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_dropdowns.scss @@ -0,0 +1,213 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: $caret-width-base solid; + border-right: $caret-width-base solid transparent; + border-left: $caret-width-base solid transparent; +} + +// The dropdown wrapper (div) +.dropdown { + position: relative; +} + +// Prevent the focus on the dropdown toggle when closing dropdowns +.dropdown-toggle:focus { + outline: 0; +} + +// The dropdown menu (ul) +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: $zindex-dropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + font-size: $font-size-base; + text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) + background-color: $dropdown-bg; + border: 1px solid $dropdown-fallback-border; // IE8 fallback + border: 1px solid $dropdown-border; + border-radius: $border-radius-base; + @include box-shadow(0 6px 12px rgba(0,0,0,.175)); + background-clip: padding-box; + + // Aligns the dropdown menu to right + // + // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + @include nav-divider($dropdown-divider-bg); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: $line-height-base; + color: $dropdown-link-color; + white-space: nowrap; // prevent links from randomly breaking onto new lines + } +} + +// Hover/Focus state +.dropdown-menu > li > a { + &:hover, + &:focus { + text-decoration: none; + color: $dropdown-link-hover-color; + background-color: $dropdown-link-hover-bg; + } +} + +// Active state +.dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: $dropdown-link-active-color; + text-decoration: none; + outline: 0; + background-color: $dropdown-link-active-bg; + } +} + +// Disabled state +// +// Gray out text and ensure the hover/focus state remains gray + +.dropdown-menu > .disabled > a { + &, + &:hover, + &:focus { + color: $dropdown-link-disabled-color; + } + + // Nuke hover/focus effects + &:hover, + &:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + @include reset-filter; + cursor: $cursor-disabled; + } +} + +// Open state for the dropdown +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + +// Menu positioning +// +// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown +// menu with the parent. +.dropdown-menu-right { + left: auto; // Reset the default from `.dropdown-menu` + right: 0; +} +// With v3, we enabled auto-flipping if you have a dropdown within a right +// aligned nav component. To enable the undoing of that, we provide an override +// to restore the default dropdown menu alignment. +// +// This is only for left-aligning a dropdown menu within a `.navbar-right` or +// `.pull-right` nav component. +.dropdown-menu-left { + left: 0; + right: auto; +} + +// Dropdown section headers +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: $font-size-small; + line-height: $line-height-base; + color: $dropdown-header-color; + white-space: nowrap; // as with > li > a +} + +// Backdrop to catch body clicks on mobile, etc. +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: ($zindex-dropdown - 10); +} + +// Right aligned dropdowns +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? + +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + border-top: 0; + border-bottom: $caret-width-base solid; + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; + } +} + + +// Component alignment +// +// Reiterate per navbar.less and the modified component alignment there. + +@media (min-width: $grid-float-breakpoint) { + .navbar-right { + .dropdown-menu { + right: 0; left: auto; + } + // Necessary for overrides of the default right aligned menu. + // Will remove come v4 in all likelihood. + .dropdown-menu-left { + left: 0; right: auto; + } + } +} diff --git a/release/pui-v1.7.0/bootstrap-sass/bootstrap/_forms.scss b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_forms.scss new file mode 100644 index 000000000..439657c0e --- /dev/null +++ b/release/pui-v1.7.0/bootstrap-sass/bootstrap/_forms.scss @@ -0,0 +1,548 @@ +// +// Forms +// -------------------------------------------------- + + +// Normalize non-controls +// +// Restyle and baseline non-control form elements. + +fieldset { + padding: 0; + margin: 0; + border: 0; + // Chrome and Firefox set a `min-width: min-content;` on fieldsets, + // so we reset that to ensure it behaves more like a standard block element. + // See https://github.com/twbs/bootstrap/issues/12359. + min-width: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: $line-height-computed; + font-size: ($font-size-base * 1.5); + line-height: inherit; + color: $legend-color; + border: 0; + border-bottom: 1px solid $legend-border-color; +} + +label { + display: inline-block; + max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) + margin-bottom: 5px; + font-weight: bold; +} + + +// Normalize form controls +// +// While most of our form styles require extra classes, some basic normalization +// is required to ensure optimum display with or without those classes to better +// address browser inconsistencies. + +// Override content-box in Normalize (* isn't specific enough) +input[type="search"] { + @include box-sizing(border-box); +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; // IE8-9 + line-height: normal; +} + +// Set the height of file controls to match text inputs +input[type="file"] { + display: block; +} + +// Make range inputs behave like textual form controls +input[type="range"] { + display: block; + width: 100%; +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Focus for file, radio, and checkbox +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + @include tab-focus; +} + +// Adjust output element +output { + display: block; + padding-top: ($padding-base-vertical + 1); + font-size: $font-size-base; + line-height: $line-height-base; + color: $input-color; +} + + +// Common form controls +// +// Shared size and type resets for form controls. Apply `.form-control` to any +// of the following form controls: +// +// select +// textarea +// input[type="text"] +// input[type="password"] +// input[type="datetime"] +// input[type="datetime-local"] +// input[type="date"] +// input[type="month"] +// input[type="time"] +// input[type="week"] +// input[type="number"] +// input[type="email"] +// input[type="url"] +// input[type="search"] +// input[type="tel"] +// input[type="color"] + +.form-control { + display: block; + width: 100%; + height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: $padding-base-vertical $padding-base-horizontal; + font-size: $font-size-base; + line-height: $line-height-base; + color: $input-color; + background-color: $input-bg; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid $input-border; + border-radius: $input-border-radius; + @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); + @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s); + + // Customize the `:focus` state to imitate native WebKit styles. + @include form-control-focus; + + // Placeholder + @include placeholder; + + // Disabled and read-only inputs + // + // HTML5 says that controls under a fieldset > legend:first-child won't be + // disabled if the fieldset is disabled. Due to implementation difficulty, we + // don't honor that edge case; we style them as disabled anyway. + &[disabled], + &[readonly], + fieldset[disabled] & { + cursor: $cursor-disabled; + background-color: $input-bg-disabled; + opacity: 1; // iOS fix for unreadable disabled content + } + + // [converter] extracted textarea& to textarea.form-control +} + +// Reset height for `textarea`s +textarea.form-control { + height: auto; +} + + +// Search inputs in iOS +// +// This overrides the extra rounded corners on search inputs in iOS so that our +// `.form-control` class can properly style them. Note that this cannot simply +// be added to `.form-control` as it's not specific enough. For details, see +// https://github.com/twbs/bootstrap/issues/11586. + +input[type="search"] { + -webkit-appearance: none; +} + + +// Special styles for iOS temporal inputs +// +// In Mobile Safari, setting `display: block` on temporal inputs causes the +// text within the input to become vertically misaligned. As a workaround, we +// set a pixel line-height that matches the given height of the input, but only +// for Safari. + +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: $input-height-base; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm { + line-height: $input-height-small; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg { + line-height: $input-height-large; + } +} + + +// Form groups +// +// Designed to help with the organization and spacing of vertical forms. For +// horizontal forms, use the predefined grid classes. + +.form-group { + margin-bottom: 15px; +} + + +// Checkboxes and radios +// +// Indent the labels to position radios/checkboxes as hanging controls. + +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; + + label { + min-height: $line-height-computed; // Ensure the input doesn't jump when there is no text + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; +} + +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing +} + +// Radios and checkboxes on same line +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; // space out consecutive inline controls +} + +// Apply same disabled cursor tweak as for inputs +// Some special care is needed because