diff --git a/CHANGELOG.md b/CHANGELOG.md index 819a22364..b61ccf365 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,32 @@ + +# 2.0.0-alpha.5 (2015-09-17) + + +### Bug Fixes + +* **autocomplete:** withRelatedTarget now merges properties in correct order ([ec27ae0](https://github.com/pivotal-cf/pivotal-ui/commit/ec27ae0)) +* **dividers:** reduce padding around large dividers to match small dividers ([b1a1906](https://github.com/pivotal-cf/pivotal-ui/commit/b1a1906)) +* **draggable-list:** draggable list callback is fixed ([0bdd107](https://github.com/pivotal-cf/pivotal-ui/commit/0bdd107)) +* **forms:** Changes input text color to be darker. ([df046bd](https://github.com/pivotal-cf/pivotal-ui/commit/df046bd)) +* **forms:** Remove help-inline class ([87a90a5](https://github.com/pivotal-cf/pivotal-ui/commit/87a90a5)) +* **react-bootstrap:** only require needed components from react bootstrap ([a2847f9](https://github.com/pivotal-cf/pivotal-ui/commit/a2847f9)) +* **sortable-table:** Clicking on sortable header doesn't select text ([a9ec8a0](https://github.com/pivotal-cf/pivotal-ui/commit/a9ec8a0)), closes [#103050640](https://github.com/pivotal-cf/pivotal-ui/issues/103050640) + +### Features + +* **react-animations:** remove pui-css-react-animations ([e944ad0](https://github.com/pivotal-cf/pivotal-ui/commit/e944ad0)) +* **stream-list:** Exports StreamListItem to use for StreamList ([387053e](https://github.com/pivotal-cf/pivotal-ui/commit/387053e)) + + +### BREAKING CHANGES + +* **forms:** help-inline class has been removed from forms ([87a90a5](https://github.com/pivotal-cf/pivotal-ui/commits/87a90a5)) +* **forms:** (sass variable) $input-color is now $neutral-3. ([df046bd](https://github.com/pivotal-cf/pivotal-ui/commits/df046bd)) +* **dividers:** (visual appearance) large dividers have less whitespace ([b1a1906](https://github.com/pivotal-cf/pivotal-ui/commits/b1a1906)) +* **draggable-list:** DraggableList callback onDrop is no longer passed to +list items - use onDragEnd instead to provide a callback. ([0bdd107](https://github.com/pivotal-cf/pivotal-ui/commits/0bdd107)) + + # 2.0.0-alpha.4 (2015-09-09) diff --git a/LATEST_CHANGES.md b/LATEST_CHANGES.md index 08e0326d2..2715ad2b9 100644 --- a/LATEST_CHANGES.md +++ b/LATEST_CHANGES.md @@ -1,17 +1,29 @@ - -# 2.0.0-alpha.4 (2015-09-09) + +# 2.0.0-alpha.5 (2015-09-17) ### Bug Fixes -* **dropdowns:** Adds default uniqueid to Dropdowns. ([161198a](https://github.com/pivotal-cf/pivotal-ui/commit/161198a)) -* **dropdowns:** Adds missing dependencies to React Dropdowns ([16f67cc](https://github.com/pivotal-cf/pivotal-ui/commit/16f67cc)) -* **dropdowns:** Fixes the highlighting on hover of dropdown items ([718bfdd](https://github.com/pivotal-cf/pivotal-ui/commit/718bfdd)) -* **overlay-trigger:** Adds missing lodash.uniqueid to React Overlay Triggers ([5373bd3](https://github.com/pivotal-cf/pivotal-ui/commit/5373bd396f25468d8d27e16e9a64379b681dde49)) +* **autocomplete:** withRelatedTarget now merges properties in correct order ([ec27ae0](https://github.com/pivotal-cf/pivotal-ui/commit/ec27ae0)) +* **dividers:** reduce padding around large dividers to match small dividers ([b1a1906](https://github.com/pivotal-cf/pivotal-ui/commit/b1a1906)) +* **draggable-list:** draggable list callback is fixed ([0bdd107](https://github.com/pivotal-cf/pivotal-ui/commit/0bdd107)) +* **forms:** Changes input text color to be darker. ([df046bd](https://github.com/pivotal-cf/pivotal-ui/commit/df046bd)) +* **forms:** Remove help-inline class ([87a90a5](https://github.com/pivotal-cf/pivotal-ui/commit/87a90a5)) +* **react-bootstrap:** only require needed components from react bootstrap ([a2847f9](https://github.com/pivotal-cf/pivotal-ui/commit/a2847f9)) +* **sortable-table:** Clicking on sortable header doesn't select text ([a9ec8a0](https://github.com/pivotal-cf/pivotal-ui/commit/a9ec8a0)), closes [#103050640](https://github.com/pivotal-cf/pivotal-ui/issues/103050640) + +### Features + +* **react-animations:** remove pui-css-react-animations ([e944ad0](https://github.com/pivotal-cf/pivotal-ui/commit/e944ad0)) +* **stream-list:** Exports StreamListItem to use for StreamList ([387053e](https://github.com/pivotal-cf/pivotal-ui/commit/387053e)) ### BREAKING CHANGES -* **buttons:** (sass variable): the button-skin-alternate mixin is no longer supported ([800c0f9](https://github.com/pivotal-cf/pivotal-ui/commits/800c0f9)) +* **forms:** help-inline class has been removed from forms ([87a90a5](https://github.com/pivotal-cf/pivotal-ui/commits/87a90a5)) +* **forms:** (sass variable) $input-color is now $neutral-3. ([df046bd](https://github.com/pivotal-cf/pivotal-ui/commits/df046bd)) +* **dividers:** (visual appearance) large dividers have less whitespace ([b1a1906](https://github.com/pivotal-cf/pivotal-ui/commits/b1a1906)) +* **draggable-list:** DraggableList callback onDrop is no longer passed to +list items - use onDragEnd instead to provide a callback. ([0bdd107](https://github.com/pivotal-cf/pivotal-ui/commits/0bdd107)) diff --git a/package.json b/package.json index 5e9117474..32b124db7 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "pivotal-ui", "private": true, "description": "***", - "version": "2.0.0-alpha.4", + "version": "2.0.0-alpha.5", "main": "gulpfile.js", "devDependencies": { "a11y": "^0.3.3", @@ -100,76 +100,76 @@ }, "dependencies": { "prismjs": "0.0.1", - "pui-css-alerts": "2.0.0-alpha.4", - "pui-css-alignment": "2.0.0-alpha.4", - "pui-css-autocomplete": "2.0.0-alpha.4", - "pui-css-avatars": "2.0.0-alpha.4", - "pui-css-back-to-top": "2.0.0-alpha.4", - "pui-css-backgrounds": "2.0.0-alpha.4", - "pui-css-bootstrap": "2.0.0-alpha.4", - "pui-css-buttons": "2.0.0-alpha.4", - "pui-css-button-group": "2.0.0-alpha.4", - "pui-css-code": "2.0.0-alpha.4", - "pui-css-colors": "2.0.0-alpha.4", - "pui-css-collapse": "2.0.0-alpha.4", - "pui-css-deprecated": "2.0.0-alpha.4", - "pui-css-dividers": "2.0.0-alpha.4", - "pui-css-dropdowns": "2.0.0-alpha.4", - "pui-css-ellipsis": "2.0.0-alpha.4", - "pui-css-embeds": "2.0.0-alpha.4", - "pui-css-forms": "2.0.0-alpha.4", - "pui-css-google-maps": "2.0.0-alpha.4", - "pui-css-grids": "2.0.0-alpha.4", - "pui-css-hoverable": "2.0.0-alpha.4", - "pui-css-iconography": "2.0.0-alpha.4", - "pui-css-images": "2.0.0-alpha.4", - "pui-css-labels": "2.0.0-alpha.4", - "pui-css-links": "2.0.0-alpha.4", - "pui-css-lists": "2.0.0-alpha.4", - "pui-css-media": "2.0.0-alpha.4", - "pui-css-modals": "2.0.0-alpha.4", - "pui-css-panels": "2.0.0-alpha.4", - "pui-css-panes": "2.0.0-alpha.4", - "pui-css-progress-bars": "2.0.0-alpha.4", - "pui-css-ribbons": "2.0.0-alpha.4", - "pui-css-spinners": "2.0.0-alpha.4", - "pui-css-tables": "2.0.0-alpha.4", - "pui-css-tabs": "2.0.0-alpha.4", - "pui-css-tooltips": "2.0.0-alpha.4", - "pui-css-traffic-lights": "2.0.0-alpha.4", - "pui-css-typography": "2.0.0-alpha.4", - "pui-css-vertical-alignment": "2.0.0-alpha.4", - "pui-css-whitespace": "2.0.0-alpha.4", + "pui-css-alerts": "2.0.0-alpha.5", + "pui-css-alignment": "2.0.0-alpha.5", + "pui-css-autocomplete": "2.0.0-alpha.5", + "pui-css-avatars": "2.0.0-alpha.5", + "pui-css-back-to-top": "2.0.0-alpha.5", + "pui-css-backgrounds": "2.0.0-alpha.5", + "pui-css-bootstrap": "2.0.0-alpha.5", + "pui-css-buttons": "2.0.0-alpha.5", + "pui-css-button-group": "2.0.0-alpha.5", + "pui-css-code": "2.0.0-alpha.5", + "pui-css-colors": "2.0.0-alpha.5", + "pui-css-collapse": "2.0.0-alpha.5", + "pui-css-deprecated": "2.0.0-alpha.5", + "pui-css-dividers": "2.0.0-alpha.5", + "pui-css-dropdowns": "2.0.0-alpha.5", + "pui-css-ellipsis": "2.0.0-alpha.5", + "pui-css-embeds": "2.0.0-alpha.5", + "pui-css-forms": "2.0.0-alpha.5", + "pui-css-google-maps": "2.0.0-alpha.5", + "pui-css-grids": "2.0.0-alpha.5", + "pui-css-hoverable": "2.0.0-alpha.5", + "pui-css-iconography": "2.0.0-alpha.5", + "pui-css-images": "2.0.0-alpha.5", + "pui-css-labels": "2.0.0-alpha.5", + "pui-css-links": "2.0.0-alpha.5", + "pui-css-lists": "2.0.0-alpha.5", + "pui-css-media": "2.0.0-alpha.5", + "pui-css-modals": "2.0.0-alpha.5", + "pui-css-panels": "2.0.0-alpha.5", + "pui-css-panes": "2.0.0-alpha.5", + "pui-css-progress-bars": "2.0.0-alpha.5", + "pui-css-ribbons": "2.0.0-alpha.5", + "pui-css-spinners": "2.0.0-alpha.5", + "pui-css-tables": "2.0.0-alpha.5", + "pui-css-tabs": "2.0.0-alpha.5", + "pui-css-tooltips": "2.0.0-alpha.5", + "pui-css-traffic-lights": "2.0.0-alpha.5", + "pui-css-typography": "2.0.0-alpha.5", + "pui-css-vertical-alignment": "2.0.0-alpha.5", + "pui-css-whitespace": "2.0.0-alpha.5", "pui-prismjs": "0.0.1", - "pui-react-alerts": "2.0.0-alpha.4", + "pui-react-alerts": "2.0.0-alpha.5", "pui-react-animation": "0.0.7", - "pui-react-back-to-top": "2.0.0-alpha.4", - "pui-react-buttons": "2.0.0-alpha.4", - "pui-react-collapse": "2.0.0-alpha.4", - "pui-react-dividers": "2.0.0-alpha.4", - "pui-react-draggable-list": "2.0.0-alpha.4", - "pui-react-dropdowns": "2.0.0-alpha.4", - "pui-react-expander": "2.0.0-alpha.4", - "pui-react-grids": "2.0.0-alpha.4", - "pui-react-iconography": "2.0.0-alpha.4", - "pui-react-images": "2.0.0-alpha.4", - "pui-react-labels": "2.0.0-alpha.4", - "pui-react-lists": "2.0.0-alpha.4", - "pui-react-media": "2.0.0-alpha.4", - "pui-react-modals": "2.0.0-alpha.4", - "pui-react-notifications": "2.0.0-alpha.4", - "pui-react-overlay-trigger": "2.0.0-alpha.4", - "pui-react-panels": "2.0.0-alpha.4", - "pui-react-panes": "2.0.0-alpha.4", - "pui-react-portals": "2.0.0-alpha.4", - "pui-react-radio": "2.0.0-alpha.4", - "pui-react-radio-group": "2.0.0-alpha.4", - "pui-react-ribbons": "2.0.0-alpha.4", - "pui-react-search-input": "2.0.0-alpha.4", - "pui-react-sortable-table": "2.0.0-alpha.4", - "pui-react-tabs": "2.0.0-alpha.4", - "pui-react-tooltip": "2.0.0-alpha.4", - "pui-react-typography": "2.0.0-alpha.4" + "pui-react-back-to-top": "2.0.0-alpha.5", + "pui-react-buttons": "2.0.0-alpha.5", + "pui-react-collapse": "2.0.0-alpha.5", + "pui-react-dividers": "2.0.0-alpha.5", + "pui-react-draggable-list": "2.0.0-alpha.5", + "pui-react-dropdowns": "2.0.0-alpha.5", + "pui-react-expander": "2.0.0-alpha.5", + "pui-react-grids": "2.0.0-alpha.5", + "pui-react-iconography": "2.0.0-alpha.5", + "pui-react-images": "2.0.0-alpha.5", + "pui-react-labels": "2.0.0-alpha.5", + "pui-react-lists": "2.0.0-alpha.5", + "pui-react-media": "2.0.0-alpha.5", + "pui-react-modals": "2.0.0-alpha.5", + "pui-react-notifications": "2.0.0-alpha.5", + "pui-react-overlay-trigger": "2.0.0-alpha.5", + "pui-react-panels": "2.0.0-alpha.5", + "pui-react-panes": "2.0.0-alpha.5", + "pui-react-portals": "2.0.0-alpha.5", + "pui-react-radio": "2.0.0-alpha.5", + "pui-react-radio-group": "2.0.0-alpha.5", + "pui-react-ribbons": "2.0.0-alpha.5", + "pui-react-search-input": "2.0.0-alpha.5", + "pui-react-sortable-table": "2.0.0-alpha.5", + "pui-react-tabs": "2.0.0-alpha.5", + "pui-react-tooltip": "2.0.0-alpha.5", + "pui-react-typography": "2.0.0-alpha.5" }, "scripts": { "test": "gulp ci --fatal", @@ -186,4 +186,4 @@ "url": "https://github.com/pivotal-cf/pivotal-ui/issues" }, "homepage": "https://github.com/pivotal-cf/pivotal-ui" -} +} \ No newline at end of file diff --git a/release/pui-v2.0.0-alpha.5/ADDITIONAL_INTRO.html b/release/pui-v2.0.0-alpha.5/ADDITIONAL_INTRO.html new file mode 100644 index 000000000..5e952399d --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/ADDITIONAL_INTRO.html @@ -0,0 +1,959 @@ + + + + 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.

+
+

This documentation generated using Hologram +

+ +
+
+ + diff --git a/release/pui-v2.0.0-alpha.5/README.html b/release/pui-v2.0.0-alpha.5/README.html new file mode 100644 index 000000000..273dff592 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/README.html @@ -0,0 +1,1007 @@ + + + + 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

+
  • Bash highlighting
  • +
  • C-like highlighting
  • +
  • CSS highlighting (w/ extras)
  • +
  • CoffeeScript highlighting
  • +
  • Go highlighting
  • +
  • HTTP highlighting
  • +
  • Java highlighting
  • +
  • JavaScript highlighting
  • +
  • Markup highlighting
  • +
  • PHP highlighting (w/ extras)
  • +
  • Python highlighting
  • +
  • Ruby highlighting
  • +
  • SCSS highlighting
  • +
+

Included plugins

+
  • Line highlighting
  • +
  • Line numbers
  • +
+

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.

+
+

This documentation generated using Hologram +

+ +
+
+ + diff --git a/release/pui-v2.0.0-alpha.5/Staticfile b/release/pui-v2.0.0-alpha.5/Staticfile new file mode 100644 index 000000000..995c01649 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/Staticfile @@ -0,0 +1 @@ +# this is required for static file buildpack diff --git a/release/pui-v2.0.0-alpha.5/all.html b/release/pui-v2.0.0-alpha.5/all.html new file mode 100644 index 000000000..06ba15267 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/all.html @@ -0,0 +1,11308 @@ + + + + a brand new styleguide: All + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ + + +

Accordions

+ + +

+ +npm install pui-css-collapse --save + +

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. +
+
+ +
+ +

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. +
+
+
+
+ +
+

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. +
+
+
+
+ +
+

Accordion with caret right/down icon:

+
+ +
+
+ This content should hide and show when the trigger is clicked. +
+
+
+
+ +
+ +

Alerts

+ + +

+ +npm install pui-css-alerts --save +

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

+
+
+ +
+

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
  • +
+
+
+ +
+

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 +

+
+
+ +
+ +

Alert Types

+

Our 4 alert types are:

+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ Everything is wonderful. + Be happy. +
+
+
+
+ + +
+
+
+
+ +
+
+ Info for you. + Tell me more. +
+
+
+
+ + +
+
+
+
+ +
+
+ Warning: There is no parking on the dancefloor. + Be alert. +
+
+
+
+ + +
+
+
+
+ +
+
+ Something has gone horribly awry. + You've made a huge mistake. +
+
+
+
+
+ + +
+
+ + +

Dismissable Alerts

+

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

+
+ +

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

+
+ +
+ +
+

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. +
+
+
+
+
+ +
+ +
+ +

Alignment

+

+ +npm install pui-css-alignment --save +

The following classes can be used to for horizontal alignment.

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

+ .txt-l +

+
+ + +
+

+ .txt-c +

+
+ + +
+

+ .txt-r +

+
+
+ + +
+
+ +

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

+
+ + + + + + +
+ This long text is used to expand the height of this + table so that we can demonstrate our verticle alignment classes + to the right. + + .txt-t + + .txt-m + + .txt-b +
+
+ +
+

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

+

Avatars

+ + +

+ +npm install pui-css-avatars --save + +

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

+
... +
+ +
+ +

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'

+
+ anonymous gravatar + +
+
+ nicole and some people + +
+
+ +
+ +

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'

+
+ anonymous gravatar + + +
+
+ nicole and some people + + +
+
+ anonymous gravatar + + +
+
+ nicole and some people + + +
+
+ +
+ +

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'

+
+ anonymous gravatar + +
+
+ nicole and some people + +
+
+ +
+ +

Back to Top

+

+ +npm install pui-css-back-to-top --save + +

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.

+
+
+ +
+ +

Backgrounds

+ + +

+ +npm install pui-css-backgrounds --save + +

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

+
+
+
+ +
+

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

+
+
+

Full bleed background image

+
+
+
+ +
+ +

Overlays

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

Buttons

+ + +

+ +npm install pui-css-buttons --save + +

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

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

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.

+
+
+ +
+ +

Sizes

+

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

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

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-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
+

Button Group

+

+ +npm install pui-css-button-group --save + +

Button groups wrap a series of buttons.

+
+ + + +
+
+ +
+ +

Code

+ + +

+ +npm install pui-css-code --save +

This is your basic unstyled code sample:

+
class Foo
+  def bar
+    puts 'hi'
+  end
+end
+
+ +
+ +

Inline

+
+

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

+
+ +
+ +

Inline Dark

+
+

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

+
+ +
+ +

Styled Code

+ +
+
+ Special installation instructions +
+

+ Our code is styled using PrismJS. + You will need some additional setup to get it to work: +

+ +
    +
  1. +

    Install pui-prismjs. This package provides the code parsing magic.

    +
    + + + npm install pui-prismjs --save + +
    +
  2. + +
  3. +

    Include `pui-prismjs` in your main javascript file:

    +
    + + require("pui-prismjs"); + +
    +
  4. + +
  5. +

    Install a PrismJs theme. This makes the code look pretty.

    +
    + + + npm install prismjs-<theme>-theme --save + +
    +

    The two light and dark Pivotal themes are:

    +
      +
    • prismjs-okaidia-theme
    • +
    • prismjs-default-theme
    • +
    +
  6. +
+
+

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:

  • Markup
  • +
  • CSS
  • +
  • C-like
  • +
  • JavaScript
  • +
  • Java
  • +
  • PHP
  • +
  • PHP
  • +
  • CoffeeScript
  • +
  • Sass
  • +
  • Bash
  • +
  • Python
  • +
  • HTTP
  • +
  • Ruby
  • +
  • Go
  • +
+
class Foo
+  def bar
+    puts 'hi'
+  end
+end
+
+ +
+

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
+
+ +
+

Scrollable with too little content:

+
class Foo
+  def bar
+    puts 'hi'
+  end
+end
+
+ +
+

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

+

Terminal Window

+ +
+
+ Special installation instructions +
+

+ You will need to follow the PrismJS installation instructions in + the styled code section. +

+
+

+
+
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
+
+ +
+ +
+ +

Colors

+ + +

+ +npm install pui-css-colors --save + +

Our color pallet is composed of several different colors. At any given point it 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;
+
+
+
+ +
+
+
+

neutral-1

+
+
+ +
+
+
+

neutral-2

+
+
+
+
+
+

neutral-3

+
+
+
+
+
+

neutral-4

+
+
+
+
+
+

neutral-5

+
+
+
+
+
+

neutral-6

+
+
+
+
+
+

neutral-7

+
+
+
+
+
+

neutral-8

+
+
+
+
+
+

neutral-9

+
+
+
+
+
+

neutral-10

+
+
+
+
+
+

neutral-11

+
+
+
+ +
+
+
+
+

dark-1

+
+
+
+
+
+

dark-2

+
+
+
+
+
+

dark-3

+
+
+
+
+
+

dark-4

+
+
+
+
+
+

dark-5

+
+
+
+
+
+

dark-6

+
+
+
+
+
+

dark-7

+
+
+
+
+
+

dark-8

+
+
+
+
+
+

dark-9

+
+
+
+
+
+

dark-10

+
+
+
+
+
+

dark-11

+
+
+
+ +
+
+
+
+

brand-1

+
+
+
+
+
+

brand-2

+
+
+
+
+
+

brand-3

+
+
+
+
+
+

brand-4

+
+
+
+
+
+

brand-5

+
+
+
+
+
+

brand-6

+
+
+
+
+
+

brand-7

+
+
+
+
+
+

brand-8

+
+
+
+
+
+

brand-9

+
+
+
+
+
+

brand-10

+
+
+
+
+
+

brand-11

+
+
+
+ +
+
+
+
+

accent-1

+
+
+
+
+
+

accent-2

+
+
+
+
+
+

accent-3

+
+
+
+
+
+

accent-4

+
+
+ +
+
+
+

accent-5

+
+
+
+
+
+

accent-6

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

error-1

+
+
+ +
+
+
+

error-2

+
+
+ +
+
+
+

error-3

+
+
+ +
+
+
+

error-4

+
+
+
+
+
+

error-5

+
+
+
+
+
+

error-6

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

warn-1

+
+
+
+
+
+

warn-2

+
+
+
+
+
+

warn-3

+
+
+
+
+
+

warn-4

+
+
+
+
+
+

warn-5

+
+
+
+
+
+

warn-6

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

success-1

+
+
+ +
+
+
+

success-2

+
+
+
+
+
+

success-3

+
+
+
+
+
+

success-4

+
+
+
+
+
+

success-5

+
+
+
+
+
+

success-6

+
+
+
+
+
+
+
+
+ +

Shadows & Glows

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

Dividers

+

+ +npm install pui-css-dividers --save + +

Dividers draw horizontal lines between different content groupings.

+

+
+
+ +
+
+

+
+
+ +
+ +

Dropdowns

+ + +

+ +npm install pui-css-dropdowns --save + +

Dropdowns are menus that can be triggered by buttons.

This is the basic bootstrap dropdown.

+
+
+ +
+ +
+
Dropdowns with dividers
+

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

+
+
+
+
+ +
+ +
+
Alignment
+

+ By default, a dropdown menu is automatically positioned 100% from the top and along the left side of its parent. + Add .dropdown-menu-right to a .dropdown-menu to right align the dropdown menu +

+
+
+
+
+ +
+ +
+
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.

+ + +
+ + +

This is a notification dropdown with no notifications.

+
+
+ +
+

This is a notification dropdown with notifications.

+ + +
+

Here's an example modifiying the size and the color of the bell

+
+
+ +
+

This is a notification dropdown with alerts.

+ + +
+ +

Ellipsis

+

+ +npm install pui-css-ellipsis --save + +

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

+ + + + + + + + + +
+

+ 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. +

+
+
+ + +
+
+ + +

Embeds

+ + + +

Responsive

+

+ +npm install pui-css-embeds --save + +

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

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

4-by-3

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

Autoselect Text Inputs

+

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

+
+ +
+ +
+ +

Checkboxes & Radios

+ + +

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

+

Default (stacked)

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

Inline Checkboxes & Radios

+

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

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

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.

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

Help Text

+

Help text +Block level help text for form controls.

+
+
+ +
+ +

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. +

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

Inline Forms with Labels

+

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

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

Inputs & Labels

+ + +

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

+
+
+ + +
+
+
+ +
+

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

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

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

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

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

+
+ + +
+
+ +
+ +

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. +

+
+
+
+ + +
+
+ +
+

Password field

+
+ + +
+
+ +
+

Date

+
+ + +
+
+ +
+

Number

+
+ + +
+
+ +
+

With a min/max and default starting value

+
+ + +
+
+ +
+

With a different increment value

+
+ + +
+
+ +
+

Email

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

+
+ + +
+
+ +
+

URL

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

+
+ + +
+
+ +
+

Telephone

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

+
+ + +
+
+ +
+ +

Sizing

+

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

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

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

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

Search Inputs

+

Use this input when creating a search component.

+
+ +
+ +
+ +

Read-Only Inputs

+

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

+
+ +
+ +
+ +

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.

+
+ +
+
+ +
+ +

Sizing

+

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

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

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

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

Fancy Selects

+

This is a fancy select!

+
+ +
+ +
+
+
+ +
+ +

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

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

Here's an example in a vertical form:

+
+
+ +

someguy@test.com

+
+
+ + +
+
+
+ +
+ +

Text Areas

+

Text areas are used for larger amounts of input.

+
+
+ + +
+
+
+ +
+ +

Toggle Switches

+

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

+
+ + +
+
+ +
+ +

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 + +
+
+
+ + +
+
+
+
+ + + Error help text + +
+
+
+
+
+ + +
+
+ +

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. +

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

Grids

+ + +

+ +npm install pui-css-grids --save + +

+

+ 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:

  • Rows must be placed within a .container for proper alignment and padding.

  • +
  • Use .row to create horizontal groups of columns.

  • +
  • Content should be placed within columns (e.g. .col-sm-11, .col-lg-6, etc.). +Only columns may be immediate children of rows.

  • +

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:

  • A column with the class .col-sm-11 will take up 100% of the container +for devices with screen-width < 768px (the extra small breakpoint), +and 11/24ths for devices ≥ 768px.

  • +
  • A column with the class .col-lg-6 will take up 100% of the container +for devices with < 1200px, +and 1/4th (6/24ths) for devices ≥ 1200px.

  • +
  • 3 .col-md-8 columns would fill a row for devices ≥ 992px. +They would each take up their own row on devices < 992px.

  • +
  • Use the .col-xs-* classes to use a grid on mobile.

  • +

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.

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

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.

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

Example: Mobile, Tablet, Desktops

+

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

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

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.

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

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.

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

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.

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

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.

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

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.

+
+
+
+
+
+ +
+ +

Hoverable

+

+ +npm install pui-css-hoverable --save + +

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 +
  • +
+
+ +
+

Table example:

+
+ + + + + + + + + + + + + + + +
Name
+ Row 1 + Delete +
+ Row 2 + Delete +
+ Row 3 + Delete +
+ Not hoverable +
+
+ +
+ +

Iconography

+ + +

+ +npm install pui-css-iconography --save + +

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
+
+
+ +
+ +

Iconography Sizing

+

To vary the size of the icons, use the .fa-h1 through .fa-h6 classes, .fa-title, .fa-sm, or .fa-xs +Don't use the typography size modifier classes (e.g. .title, .h1, .type-sm)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+Add Stuff
+
+ + +
+
+Add Stuff
+
+ + +
+
+Add Stuff
+
+ + +
+
+Add Stuff
+
+ + +
+
+Add Stuff
+
+ + +
+
+Add Stuff
+
+ + +
+
+Add Stuff
+
+ + +
+
+Add Stuff
+
+ + +
+
+Add Stuff
+
+ + +
+
+Add Stuff +
+
+ + +
+
+ + +

Spinners

+

+ +npm install pui-css-spinners --save + +

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

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

Images

+ + + +

Responsive

+

+ +npm install pui-css-images --save + +

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 +
+
+
+ +
+ +

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.

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

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.

+
+
+
+ + + + + + + + + + + + + + + Instances + + + + + 1 + + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + 6 + + + + + + + + + + + + + + + + + + + + + + + + + 8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ $ cf scale my_app -i 1
+
+
+
+
+ +
+ +

Labels

+ + +

+ +npm install pui-css-labels --save + +

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

+ + + + + + + + + +
+
new +
+
+ + +
+
+ +

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 +

+
+ + +
+

I am an H3. + new +

+
+ + +
+

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

+
+
+ + +
+
+ + +

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 + + +
+ +
+ +

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

+

+ +npm install pui-css-links --save + +

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

+ + +
+

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
inverse linklink-text link-inverseI go on a non-white background
+ + +
+ +

Lists

+ + +

+ +npm install pui-css-lists --save + +

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.

+
+
+ +
+ +

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

    +
  • +
+
+ + +
+
    +
  • +

    list-card-2

    +
  • +
+
+
+ + +
+
+ +

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

    +
  • +
+
+ +
+

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.

+ + +
+ +

Checked

+

Replaces the default bullet image with the font awesome checkmark.

+
    +
  • + feep +
  • +
  • + fop +
  • +
  • + meep +
  • +
+
+ +
+ +

Group

+

Use this list when you need simple gray borders between items

+
    +
  • + item 1 +
  • +
  • + item 2 +
  • +
  • + item 3 +
  • +
+
+ +
+

The "event list" from AppsManager can be built with a group list:

+
    +
  • +
    +
    + +
    +
    +
    + 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 +
    +
    +
    +
  • +
+
+ +
+ +

Group Inverse

+

Use this list when you need simple gray borders between items on a dark background. It is very subtle.

+
    +
  • + item 1 +
  • +
  • + item 2 +
  • +
  • + item 3 +
  • +
+
+ +
+ +

Inline

+

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

+
    +
  • + feep +
  • +
  • + fop +
  • +
  • + meep +
  • +
+
+ +
+

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

+
+
+ +
+ +

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.

+
+
+ +
+

Here's an example on a dark background (add .list-inline-divider-light to make the border white):

+
+
+ +
+ +

Ordered

+
+
    +
  1. + feep +
  2. +
  3. + fop +
  4. +
  5. + meep +
  6. +
+
+ +
+ +

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. +
+
+ +
+ +

Unordered

+
+
    +
  • + feep +
  • +
  • + fop +
  • +
  • + meep +
  • +
+
+ +
+ +

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 +
  • +
+
+ +
+ +

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 +
    +
  • +
+
+ +
+
+
    +
  • +
    + item 1 +
    +
  • +
  • +
    + item 2 +
    +
  • +
  • +
    + item 3, which is taller +
    +
  • +
+
+ +
+ +

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
  • +
+
+ + +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+ + +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+ + +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+ + +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+
+ + +
+
+ + +

Horizontal Spacing Options (n -> xl)

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+ + +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+ + +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+ + +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+ + +
+
    +
  • feep
  • +
  • fop
  • +
  • meep
  • +
+
+
+ + +
+
+ + +

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. +
+
+ +
+ +

Maps

+

+ +npm install pui-css-google-maps --save + +

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

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

Media

+ + +

+ +npm install pui-css-media --save + +

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

+
+ + demo placeholder for media + +
+

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. +
+ + demo placeholder for media + +
+
+ +
+

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

+
+ +
+ demo placeholder for media +
+
+
+

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. +

+
+
+
+ +
+

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

+
+ + demo placeholder for media + +
+

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.

+ + +
+ + demo placeholder for media + +
+

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. + + +
+ + demo placeholder for media + +
+

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. +
+
+
+
+ + +
+ + demo placeholder for media + +
+

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. +
+
+
+
+
+ +
+ +

Alignment

+

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

+
+ + demo placeholder for media + +
+

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. +
+
+ +
+ + demo placeholder for media + +
+

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. +
+
+ +
+ + demo placeholder for media + +
+

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. +
+
+
+ +
+ +

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.

+
+ + demo placeholder for media + +
+

Extra-small stackable

+
+
+ +
+ + demo placeholder for media + +
+

Small stackable

+
+
+ +
+ + demo placeholder for media + +
+

Medium stackable

+
+
+ +
+ + demo placeholder for media + +
+

Large stackable

+
+
+
+ +
+ +

Modals

+

+ +npm install pui-css-modals --save + +

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

+
+ + + + +
+ +
+ +

Panes

+

+ +npm install pui-css-panes --save + +

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

+
+
+ +
+ +
+
+
+
+

This is a pane

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

This is another pane

+
+
+ +
+ +
+ +

Panels

+ + +

+ +npm install pui-css-panels --save + +

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 +
+
+
+ + +
+
+
+ Danger alternate panel +
+
+
+ + +
+
+
+ Stopped alternate panel +
+
+
+ + +
+
+
+ Off alternate panel +
+
+
+ + +
+
+
+ Editing alternate panel +
+
+
+
+ + +
+
+ + +

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 +
+
+
+ +
+ +

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 +
+
+
+ +
+ +

Card

+

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

+
    +
  • +
    + Card Panel +
    +
  • +
  • +
    + Card Panel +
    +
  • +
  • +
    + Card Panel +
    +
  • +
+
+ +
+ +

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 +
+
+
+ + +
+
+
+ Panel Clickable Alt +
+
+
+
+ + +
+
+ +

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.

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

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
+ +
+
+ +
+ +
+
+ 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. +

+
+
+
+
+ +
+ +

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) +
+
+
+ +
+ +

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.

+
+
+
+ +
+ +

Shadow

+

Shadow panels add a bottom shadow to the panel.

+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Shadow Panel +
+
+
+ + +
+
+
+ Shadow Panel +
+
+
+ + +
+
+
+ Shadow Panel +
+
+
+ + +
+
+
+ Shadow Panel +
+
+
+
+ + +
+
+ + +

Simple

+
+
+
+ Simple Panel +
+
+
+ +
+ +

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.

+ + +
+ +

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

+

+ +npm install pui-css-progress-bars --save + +

This section contains static progress bar styles.

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

+ 0 MB of 100 MB Used +

+
+ + +
+
+
+
+ 3% +
+
+
+

+ 3 MB of 100 MB Used +

+
+ + +
+
+
+
+ 9% +
+
+
+

+ 9 MB of 100 MB Used +

+
+ + +
+
+
+
+ 60% +
+
+
+

+ 60 MB of 100 MB Used +

+
+ + +
+
+
+
+ 90% +
+
+
+

+ 90 MB of 100 MB Used +

+
+
+ + +
+
+ + +

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:

  • .visible-xs-block
  • +
  • .visible-xs-inline
  • +
  • .visible-xs-inline-block
  • +
+

Ribbons

+ + +

+ +npm install pui-css-ribbons --save + +

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

+ + + + + + + + + + + + + + +
+
British
+For British eyes only
+
+ + +
+
Pivotal
+Wow this ribbon is so inline +
+
+ + +
+
+ + +

Banner

+

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

+
+ Acceptance +
+
+ +
+ +

Tabs

+ + +

+ +npm install pui-css-tabs --save + +

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
+
+
+
+
+
+ +
+ +

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
+
+
+ +
+ +
+ +

Responsive

+
+
+
+
+ +
+ +
+
    +
  • + meep +
  • +
  • Content 1
  • +
  • + foo +
  • +
  • Content 2
  • +
  • + foo +
  • +
  • Content 3
  • +
  • + foo +
  • +
  • Content 4
  • +
+
+
+
+
+ +
+ +

Simple

+
+
+ + +
+
Spaces Content
+
Domains Content
+
Members Content
+
+
+
+ +
+ +

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
+
+
+
+
+ +
+ +

Tables

+ + +

+ +npm install pui-css-tables --save + +

+ + + + + + + + + + + + + + + + + + + +
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
+
+
+
+ +
+ +

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
+
+ +
+ +

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
+
+ +
+ +

Tooltip

+

+ +npm install pui-css-tooltips --save + +

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! + +

+ +

+ +

+ +

+ +

+
+ +
+ + + + +
+

+ 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. +

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

Traffic Lights

+

+ +npm install pui-css-traffic-lights --save + +

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.

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

On

+
    +
  • + + 5 +
  • +
  • + + 1 +
  • +
  • + + 8 +
  • +
+
+ + +
+

Off

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

Loading

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

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 31px

+
+ + +
+

h2 25px

+
+ + +
+

h3 20px

+
+ + +
+

h4 18px

+
+ + +
+
h5 16px
+
+ + +
+
h6 13px
+
+ + +
+

base font size 16px

+
+ + +
+

small text 14px

+
+ + +
+

extra small text 12px

+
+
+ + +
+
+ + +
+
+ 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!

+
+ + +
+

I am a 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
+
+
+ + +
+
+ + +

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!

+
+
+ + +
+
+ +

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 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 dark 4

Type dark 4

.type-dark-4

Type dark 5

Type dark 5

.type-dark-5

Type dark 6

Type dark 6

.type-dark-6

Type dark 7

Type dark 7

.type-dark-7

Type dark 8

Type dark 8

.type-dark-8

Type dark 9

Type dark 9

.type-dark-9

Type dark 10

Type dark 10

.type-dark-10

Type dark 11

Type dark 11

.type-dark-11

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 accent 6

Type accent 6

.type-accent-6

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 brand 6

Type brand 6

.type-brand-6

Type brand 7

Type brand 7

.type-brand-7

Type brand 8

Type brand 8

.type-brand-8

Type brand 9

Type brand 9

.type-brand-9

Type brand 10

Type brand 10

.type-brand-10

Type brand 11

Type brand 11

.type-brand-11

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 error 5

Type error 5

.type-error-5

Type error 6

Type error 6

.type-error-6

Type success 1

Type success 1

.type-success-1

Type success 2

Type success 2

.type-success-2

Type success 3

Type success 3

.type-success-3

Type success 4

Type success 4

.type-success-4

Type success 5

Type success 5

.type-success-5

Type success 6

Type success 6

.type-success-6

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

Type warn 4

Type warn 4

.type-warn-4

Type warn 5

Type warn 5

.type-warn-5

Type warn 6

Type warn 6

.type-warn-6
+ +

Emphasis Modifiers

+

Type emphasis modifiers can be used on any type element.

+ + + + + + + + + +
+

Really Important

+

+ I mean reeeeeeeeeeeally +

+
+
+ + +
+
+ +

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

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

Low emphasis

+
+ + +
+

Default emphasis

+
+ + +
+

High emphasis

+
+ + +
+

Maximum emphasis

+
+ + +
+

Emphasis alternate

+
+
+ + +
+
+ + +

Multiline Headings

+

Headings are spaced so their line height and padding are consistent on one or many lines.

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

One line heading

+
+ + +
+

I am a
multiline heading

+
+
+ + +
+
+ + +

Vertical Align

+

+ +npm install pui-css-vertical-alignment --save + +

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. +

+
+
+ + +
+

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

+
+
+ +
+

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

+

Whitespace

+ + +

+ +npm install pui-css-whitespace --save + +

+

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

+
+ +
+ +

List

+

See list spacing.

+
+

This documentation generated using Hologram +

+ +
+
+ + diff --git a/release/pui-v2.0.0-alpha.5/bootstrap-sass/_bootstrap-compass.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/_bootstrap-compass.scss new file mode 100644 index 000000000..8fbc3cda5 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/_bootstrap-compass.scss @@ -0,0 +1,9 @@ +@function twbs-font-path($path) { + @return font-url($path, true); +} + +@function twbs-image-path($path) { + @return image-url($path, true); +} + +$bootstrap-sass-asset-helper: true; diff --git a/release/pui-v2.0.0-alpha.5/bootstrap-sass/_bootstrap-mincer.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/_bootstrap-mincer.scss new file mode 100644 index 000000000..7ec465741 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/_bootstrap-mincer.scss @@ -0,0 +1,19 @@ +// 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}') %>"; +} + +$bootstrap-sass-asset-helper: true; diff --git a/release/pui-v2.0.0-alpha.5/bootstrap-sass/_bootstrap-sprockets.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/_bootstrap-sprockets.scss new file mode 100644 index 000000000..9fffc1eb4 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/_bootstrap-sprockets.scss @@ -0,0 +1,9 @@ +@function twbs-font-path($path) { + @return font-path($path); +} + +@function twbs-image-path($path) { + @return image-path($path); +} + +$bootstrap-sass-asset-helper: true; diff --git a/release/pui-v2.0.0-alpha.5/bootstrap-sass/_bootstrap.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/_bootstrap.scss new file mode 100644 index 000000000..598b007fc --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/_bootstrap.scss @@ -0,0 +1,56 @@ +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// 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-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_alerts.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_alerts.scss new file mode 100644 index 000000000..7d1e1fddd --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_alerts.scss @@ -0,0 +1,73 @@ +// +// 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-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_badges.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_badges.scss new file mode 100644 index 000000000..70002e085 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_badges.scss @@ -0,0 +1,68 @@ +// +// 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: middle; + 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 &, + .btn-group-xs > .btn & { + 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-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_breadcrumbs.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_breadcrumbs.scss new file mode 100644 index 000000000..3641e333b --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/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-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_button-groups.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_button-groups.scss new file mode 100644 index 000000000..43d235c42 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_button-groups.scss @@ -0,0 +1,244 @@ +// +// 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, + .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:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + @include border-right-radius(0); + } +} +.btn-group > .btn-group:last-child:not(:first-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: $btn-border-radius-base; + @include border-bottom-radius(0); + } + &:last-child:not(:first-child) { + border-bottom-left-radius: $btn-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-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_buttons.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_buttons.scss new file mode 100644 index 000000000..6452b709f --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_buttons.scss @@ -0,0 +1,168 @@ +// +// 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, $btn-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; + @include opacity(.65); + @include box-shadow(none); + } + + // [converter] extracted a& to a.btn +} + +a.btn { + &.disabled, + fieldset[disabled] & { + pointer-events: none; // Future-proof disabling of clicks on `` elements + } +} + + +// 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: $link-hover-decoration; + 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, $btn-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, $btn-border-radius-small); +} +.btn-xs { + @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-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-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_carousel.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_carousel.scss new file mode 100644 index 000000000..f7006780e --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_carousel.scss @@ -0,0 +1,269 @@ +// +// 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) { + @include transition-transform(0.6s ease-in-out); + @include backface-visibility(hidden); + @include perspective(1000px); + + &.next, + &.active.right { + @include translate3d(100%, 0, 0); + left: 0; + } + &.prev, + &.active.left { + @include translate3d(-100%, 0, 0); + left: 0; + } + &.next.left, + &.prev.right, + &.active { + @include 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%; + margin-top: -10px; + 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; + line-height: 1; + 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. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer + // + // 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-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_close.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_close.scss new file mode 100644 index 000000000..3b74d8a97 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_close.scss @@ -0,0 +1,36 @@ +// +// 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="#"`. +// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} diff --git a/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_code.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_code.scss new file mode 100644 index 000000000..caa5f0630 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/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-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_component-animations.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_component-animations.scss new file mode 100644 index 000000000..ca3b43ca7 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_component-animations.scss @@ -0,0 +1,37 @@ +// +// 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; + + &.in { display: block; } + // [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-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_dropdowns.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_dropdowns.scss new file mode 100644 index 000000000..aac84597a --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_dropdowns.scss @@ -0,0 +1,216 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: $caret-width-base dashed; + border-top: $caret-width-base solid \9; // IE8 + border-right: $caret-width-base solid transparent; + border-left: $caret-width-base solid transparent; +} + +// The dropdown wrapper (div) +.dropup, +.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 dashed; + border-bottom: $caret-width-base solid \9; // IE8 + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; + } +} + + +// 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-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_forms.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_forms.scss new file mode 100644 index 000000000..de4befdb6 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_forms.scss @@ -0,0 +1,611 @@ +// +// 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; +} + +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; // Note: This has no effect on s in CSS. + @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] & { + background-color: $input-bg-disabled; + opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655 + } + + &[disabled], + fieldset[disabled] & { + cursor: $cursor-disabled; + } + + // [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. See https://bugs.webkit.org/show_bug.cgi?id=139848 +// +// Note that as of 8.3, iOS doesn't support `datetime` or `week`. + +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + &.form-control { + line-height: $input-height-base; + } + + &.input-sm, + .input-group-sm & { + line-height: $input-height-small; + } + + &.input-lg, + .input-group-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: $form-group-margin-bottom; +} + + +// 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 { + position: relative; + 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 Star + +@at-root { + // Import the fonts + @font-face { + font-family: 'Glyphicons Halflings'; + src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot'), '#{$icon-font-path}#{$icon-font-name}.eot')); + src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot?#iefix'), '#{$icon-font-path}#{$icon-font-name}.eot?#iefix')) format('embedded-opentype'), + url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff2'), '#{$icon-font-path}#{$icon-font-name}.woff2')) format('woff2'), + url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff'), '#{$icon-font-path}#{$icon-font-name}.woff')) format('woff'), + url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.ttf'), '#{$icon-font-path}#{$icon-font-name}.ttf')) format('truetype'), + url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}'), '#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}')) format('svg'); + } +} + +// Catchall baseclass +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +// Individual icons +.glyphicon-asterisk { &:before { content: "\2a"; } } +.glyphicon-plus { &:before { content: "\2b"; } } +.glyphicon-euro, +.glyphicon-eur { &:before { content: "\20ac"; } } +.glyphicon-minus { &:before { content: "\2212"; } } +.glyphicon-cloud { &:before { content: "\2601"; } } +.glyphicon-envelope { &:before { content: "\2709"; } } +.glyphicon-pencil { &:before { content: "\270f"; } } +.glyphicon-glass { &:before { content: "\e001"; } } +.glyphicon-music { &:before { content: "\e002"; } } +.glyphicon-search { &:before { content: "\e003"; } } +.glyphicon-heart { &:before { content: "\e005"; } } +.glyphicon-star { &:before { content: "\e006"; } } +.glyphicon-star-empty { &:before { content: "\e007"; } } +.glyphicon-user { &:before { content: "\e008"; } } +.glyphicon-film { &:before { content: "\e009"; } } +.glyphicon-th-large { &:before { content: "\e010"; } } +.glyphicon-th { &:before { content: "\e011"; } } +.glyphicon-th-list { &:before { content: "\e012"; } } +.glyphicon-ok { &:before { content: "\e013"; } } +.glyphicon-remove { &:before { content: "\e014"; } } +.glyphicon-zoom-in { &:before { content: "\e015"; } } +.glyphicon-zoom-out { &:before { content: "\e016"; } } +.glyphicon-off { &:before { content: "\e017"; } } +.glyphicon-signal { &:before { content: "\e018"; } } +.glyphicon-cog { &:before { content: "\e019"; } } +.glyphicon-trash { &:before { content: "\e020"; } } +.glyphicon-home { &:before { content: "\e021"; } } +.glyphicon-file { &:before { content: "\e022"; } } +.glyphicon-time { &:before { content: "\e023"; } } +.glyphicon-road { &:before { content: "\e024"; } } +.glyphicon-download-alt { &:before { content: "\e025"; } } +.glyphicon-download { &:before { content: "\e026"; } } +.glyphicon-upload { &:before { content: "\e027"; } } +.glyphicon-inbox { &:before { content: "\e028"; } } +.glyphicon-play-circle { &:before { content: "\e029"; } } +.glyphicon-repeat { &:before { content: "\e030"; } } +.glyphicon-refresh { &:before { content: "\e031"; } } +.glyphicon-list-alt { &:before { content: "\e032"; } } +.glyphicon-lock { &:before { content: "\e033"; } } +.glyphicon-flag { &:before { content: "\e034"; } } +.glyphicon-headphones { &:before { content: "\e035"; } } +.glyphicon-volume-off { &:before { content: "\e036"; } } +.glyphicon-volume-down { &:before { content: "\e037"; } } +.glyphicon-volume-up { &:before { content: "\e038"; } } +.glyphicon-qrcode { &:before { content: "\e039"; } } +.glyphicon-barcode { &:before { content: "\e040"; } } +.glyphicon-tag { &:before { content: "\e041"; } } +.glyphicon-tags { &:before { content: "\e042"; } } +.glyphicon-book { &:before { content: "\e043"; } } +.glyphicon-bookmark { &:before { content: "\e044"; } } +.glyphicon-print { &:before { content: "\e045"; } } +.glyphicon-camera { &:before { content: "\e046"; } } +.glyphicon-font { &:before { content: "\e047"; } } +.glyphicon-bold { &:before { content: "\e048"; } } +.glyphicon-italic { &:before { content: "\e049"; } } +.glyphicon-text-height { &:before { content: "\e050"; } } +.glyphicon-text-width { &:before { content: "\e051"; } } +.glyphicon-align-left { &:before { content: "\e052"; } } +.glyphicon-align-center { &:before { content: "\e053"; } } +.glyphicon-align-right { &:before { content: "\e054"; } } +.glyphicon-align-justify { &:before { content: "\e055"; } } +.glyphicon-list { &:before { content: "\e056"; } } +.glyphicon-indent-left { &:before { content: "\e057"; } } +.glyphicon-indent-right { &:before { content: "\e058"; } } +.glyphicon-facetime-video { &:before { content: "\e059"; } } +.glyphicon-picture { &:before { content: "\e060"; } } +.glyphicon-map-marker { &:before { content: "\e062"; } } +.glyphicon-adjust { &:before { content: "\e063"; } } +.glyphicon-tint { &:before { content: "\e064"; } } +.glyphicon-edit { &:before { content: "\e065"; } } +.glyphicon-share { &:before { content: "\e066"; } } +.glyphicon-check { &:before { content: "\e067"; } } +.glyphicon-move { &:before { content: "\e068"; } } +.glyphicon-step-backward { &:before { content: "\e069"; } } +.glyphicon-fast-backward { &:before { content: "\e070"; } } +.glyphicon-backward { &:before { content: "\e071"; } } +.glyphicon-play { &:before { content: "\e072"; } } +.glyphicon-pause { &:before { content: "\e073"; } } +.glyphicon-stop { &:before { content: "\e074"; } } +.glyphicon-forward { &:before { content: "\e075"; } } +.glyphicon-fast-forward { &:before { content: "\e076"; } } +.glyphicon-step-forward { &:before { content: "\e077"; } } +.glyphicon-eject { &:before { content: "\e078"; } } +.glyphicon-chevron-left { &:before { content: "\e079"; } } +.glyphicon-chevron-right { &:before { content: "\e080"; } } +.glyphicon-plus-sign { &:before { content: "\e081"; } } +.glyphicon-minus-sign { &:before { content: "\e082"; } } +.glyphicon-remove-sign { &:before { content: "\e083"; } } +.glyphicon-ok-sign { &:before { content: "\e084"; } } +.glyphicon-question-sign { &:before { content: "\e085"; } } +.glyphicon-info-sign { &:before { content: "\e086"; } } +.glyphicon-screenshot { &:before { content: "\e087"; } } +.glyphicon-remove-circle { &:before { content: "\e088"; } } +.glyphicon-ok-circle { &:before { content: "\e089"; } } +.glyphicon-ban-circle { &:before { content: "\e090"; } } +.glyphicon-arrow-left { &:before { content: "\e091"; } } +.glyphicon-arrow-right { &:before { content: "\e092"; } } +.glyphicon-arrow-up { &:before { content: "\e093"; } } +.glyphicon-arrow-down { &:before { content: "\e094"; } } +.glyphicon-share-alt { &:before { content: "\e095"; } } +.glyphicon-resize-full { &:before { content: "\e096"; } } +.glyphicon-resize-small { &:before { content: "\e097"; } } +.glyphicon-exclamation-sign { &:before { content: "\e101"; } } +.glyphicon-gift { &:before { content: "\e102"; } } +.glyphicon-leaf { &:before { content: "\e103"; } } +.glyphicon-fire { &:before { content: "\e104"; } } +.glyphicon-eye-open { &:before { content: "\e105"; } } +.glyphicon-eye-close { &:before { content: "\e106"; } } +.glyphicon-warning-sign { &:before { content: "\e107"; } } +.glyphicon-plane { &:before { content: "\e108"; } } +.glyphicon-calendar { &:before { content: "\e109"; } } +.glyphicon-random { &:before { content: "\e110"; } } +.glyphicon-comment { &:before { content: "\e111"; } } +.glyphicon-magnet { &:before { content: "\e112"; } } +.glyphicon-chevron-up { &:before { content: "\e113"; } } +.glyphicon-chevron-down { &:before { content: "\e114"; } } +.glyphicon-retweet { &:before { content: "\e115"; } } +.glyphicon-shopping-cart { &:before { content: "\e116"; } } +.glyphicon-folder-close { &:before { content: "\e117"; } } +.glyphicon-folder-open { &:before { content: "\e118"; } } +.glyphicon-resize-vertical { &:before { content: "\e119"; } } +.glyphicon-resize-horizontal { &:before { content: "\e120"; } } +.glyphicon-hdd { &:before { content: "\e121"; } } +.glyphicon-bullhorn { &:before { content: "\e122"; } } +.glyphicon-bell { &:before { content: "\e123"; } } +.glyphicon-certificate { &:before { content: "\e124"; } } +.glyphicon-thumbs-up { &:before { content: "\e125"; } } +.glyphicon-thumbs-down { &:before { content: "\e126"; } } +.glyphicon-hand-right { &:before { content: "\e127"; } } +.glyphicon-hand-left { &:before { content: "\e128"; } } +.glyphicon-hand-up { &:before { content: "\e129"; } } +.glyphicon-hand-down { &:before { content: "\e130"; } } +.glyphicon-circle-arrow-right { &:before { content: "\e131"; } } +.glyphicon-circle-arrow-left { &:before { content: "\e132"; } } +.glyphicon-circle-arrow-up { &:before { content: "\e133"; } } +.glyphicon-circle-arrow-down { &:before { content: "\e134"; } } +.glyphicon-globe { &:before { content: "\e135"; } } +.glyphicon-wrench { &:before { content: "\e136"; } } +.glyphicon-tasks { &:before { content: "\e137"; } } +.glyphicon-filter { &:before { content: "\e138"; } } +.glyphicon-briefcase { &:before { content: "\e139"; } } +.glyphicon-fullscreen { &:before { content: "\e140"; } } +.glyphicon-dashboard { &:before { content: "\e141"; } } +.glyphicon-paperclip { &:before { content: "\e142"; } } +.glyphicon-heart-empty { &:before { content: "\e143"; } } +.glyphicon-link { &:before { content: "\e144"; } } +.glyphicon-phone { &:before { content: "\e145"; } } +.glyphicon-pushpin { &:before { content: "\e146"; } } +.glyphicon-usd { &:before { content: "\e148"; } } +.glyphicon-gbp { &:before { content: "\e149"; } } +.glyphicon-sort { &:before { content: "\e150"; } } +.glyphicon-sort-by-alphabet { &:before { content: "\e151"; } } +.glyphicon-sort-by-alphabet-alt { &:before { content: "\e152"; } } +.glyphicon-sort-by-order { &:before { content: "\e153"; } } +.glyphicon-sort-by-order-alt { &:before { content: "\e154"; } } +.glyphicon-sort-by-attributes { &:before { content: "\e155"; } } +.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } } +.glyphicon-unchecked { &:before { content: "\e157"; } } +.glyphicon-expand { &:before { content: "\e158"; } } +.glyphicon-collapse-down { &:before { content: "\e159"; } } +.glyphicon-collapse-up { &:before { content: "\e160"; } } +.glyphicon-log-in { &:before { content: "\e161"; } } +.glyphicon-flash { &:before { content: "\e162"; } } +.glyphicon-log-out { &:before { content: "\e163"; } } +.glyphicon-new-window { &:before { content: "\e164"; } } +.glyphicon-record { &:before { content: "\e165"; } } +.glyphicon-save { &:before { content: "\e166"; } } +.glyphicon-open { &:before { content: "\e167"; } } +.glyphicon-saved { &:before { content: "\e168"; } } +.glyphicon-import { &:before { content: "\e169"; } } +.glyphicon-export { &:before { content: "\e170"; } } +.glyphicon-send { &:before { content: "\e171"; } } +.glyphicon-floppy-disk { &:before { content: "\e172"; } } +.glyphicon-floppy-saved { &:before { content: "\e173"; } } +.glyphicon-floppy-remove { &:before { content: "\e174"; } } +.glyphicon-floppy-save { &:before { content: "\e175"; } } +.glyphicon-floppy-open { &:before { content: "\e176"; } } +.glyphicon-credit-card { &:before { content: "\e177"; } } +.glyphicon-transfer { &:before { content: "\e178"; } } +.glyphicon-cutlery { &:before { content: "\e179"; } } +.glyphicon-header { &:before { content: "\e180"; } } +.glyphicon-compressed { &:before { content: "\e181"; } } +.glyphicon-earphone { &:before { content: "\e182"; } } +.glyphicon-phone-alt { &:before { content: "\e183"; } } +.glyphicon-tower { &:before { content: "\e184"; } } +.glyphicon-stats { &:before { content: "\e185"; } } +.glyphicon-sd-video { &:before { content: "\e186"; } } +.glyphicon-hd-video { &:before { content: "\e187"; } } +.glyphicon-subtitles { &:before { content: "\e188"; } } +.glyphicon-sound-stereo { &:before { content: "\e189"; } } +.glyphicon-sound-dolby { &:before { content: "\e190"; } } +.glyphicon-sound-5-1 { &:before { content: "\e191"; } } +.glyphicon-sound-6-1 { &:before { content: "\e192"; } } +.glyphicon-sound-7-1 { &:before { content: "\e193"; } } +.glyphicon-copyright-mark { &:before { content: "\e194"; } } +.glyphicon-registration-mark { &:before { content: "\e195"; } } +.glyphicon-cloud-download { &:before { content: "\e197"; } } +.glyphicon-cloud-upload { &:before { content: "\e198"; } } +.glyphicon-tree-conifer { &:before { content: "\e199"; } } +.glyphicon-tree-deciduous { &:before { content: "\e200"; } } +.glyphicon-cd { &:before { content: "\e201"; } } +.glyphicon-save-file { &:before { content: "\e202"; } } +.glyphicon-open-file { &:before { content: "\e203"; } } +.glyphicon-level-up { &:before { content: "\e204"; } } +.glyphicon-copy { &:before { content: "\e205"; } } +.glyphicon-paste { &:before { content: "\e206"; } } +// The following 2 Glyphicons are omitted for the time being because +// they currently use Unicode codepoints that are outside the +// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle +// non-BMP codepoints in CSS string escapes, and thus can't display these two icons. +// Notably, the bug affects some older versions of the Android Browser. +// More info: https://github.com/twbs/bootstrap/issues/10106 +// .glyphicon-door { &:before { content: "\1f6aa"; } } +// .glyphicon-key { &:before { content: "\1f511"; } } +.glyphicon-alert { &:before { content: "\e209"; } } +.glyphicon-equalizer { &:before { content: "\e210"; } } +.glyphicon-king { &:before { content: "\e211"; } } +.glyphicon-queen { &:before { content: "\e212"; } } +.glyphicon-pawn { &:before { content: "\e213"; } } +.glyphicon-bishop { &:before { content: "\e214"; } } +.glyphicon-knight { &:before { content: "\e215"; } } +.glyphicon-baby-formula { &:before { content: "\e216"; } } +.glyphicon-tent { &:before { content: "\26fa"; } } +.glyphicon-blackboard { &:before { content: "\e218"; } } +.glyphicon-bed { &:before { content: "\e219"; } } +.glyphicon-apple { &:before { content: "\f8ff"; } } +.glyphicon-erase { &:before { content: "\e221"; } } +.glyphicon-hourglass { &:before { content: "\231b"; } } +.glyphicon-lamp { &:before { content: "\e223"; } } +.glyphicon-duplicate { &:before { content: "\e224"; } } +.glyphicon-piggy-bank { &:before { content: "\e225"; } } +.glyphicon-scissors { &:before { content: "\e226"; } } +.glyphicon-bitcoin { &:before { content: "\e227"; } } +.glyphicon-btc { &:before { content: "\e227"; } } +.glyphicon-xbt { &:before { content: "\e227"; } } +.glyphicon-yen { &:before { content: "\00a5"; } } +.glyphicon-jpy { &:before { content: "\00a5"; } } +.glyphicon-ruble { &:before { content: "\20bd"; } } +.glyphicon-rub { &:before { content: "\20bd"; } } +.glyphicon-scale { &:before { content: "\e230"; } } +.glyphicon-ice-lolly { &:before { content: "\e231"; } } +.glyphicon-ice-lolly-tasted { &:before { content: "\e232"; } } +.glyphicon-education { &:before { content: "\e233"; } } +.glyphicon-option-horizontal { &:before { content: "\e234"; } } +.glyphicon-option-vertical { &:before { content: "\e235"; } } +.glyphicon-menu-hamburger { &:before { content: "\e236"; } } +.glyphicon-modal-window { &:before { content: "\e237"; } } +.glyphicon-oil { &:before { content: "\e238"; } } +.glyphicon-grain { &:before { content: "\e239"; } } +.glyphicon-sunglasses { &:before { content: "\e240"; } } +.glyphicon-text-size { &:before { content: "\e241"; } } +.glyphicon-text-color { &:before { content: "\e242"; } } +.glyphicon-text-background { &:before { content: "\e243"; } } +.glyphicon-object-align-top { &:before { content: "\e244"; } } +.glyphicon-object-align-bottom { &:before { content: "\e245"; } } +.glyphicon-object-align-horizontal{ &:before { content: "\e246"; } } +.glyphicon-object-align-left { &:before { content: "\e247"; } } +.glyphicon-object-align-vertical { &:before { content: "\e248"; } } +.glyphicon-object-align-right { &:before { content: "\e249"; } } +.glyphicon-triangle-right { &:before { content: "\e250"; } } +.glyphicon-triangle-left { &:before { content: "\e251"; } } +.glyphicon-triangle-bottom { &:before { content: "\e252"; } } +.glyphicon-triangle-top { &:before { content: "\e253"; } } +.glyphicon-console { &:before { content: "\e254"; } } +.glyphicon-superscript { &:before { content: "\e255"; } } +.glyphicon-subscript { &:before { content: "\e256"; } } +.glyphicon-menu-left { &:before { content: "\e257"; } } +.glyphicon-menu-right { &:before { content: "\e258"; } } +.glyphicon-menu-down { &:before { content: "\e259"; } } +.glyphicon-menu-up { &:before { content: "\e260"; } } diff --git a/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_grid.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_grid.scss new file mode 100644 index 000000000..b15ca27bb --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_grid.scss @@ -0,0 +1,84 @@ +// +// Grid system +// -------------------------------------------------- + + +// Container widths +// +// Set the container width, and override it for fixed navbars in media queries. + +.container { + @include container-fixed; + + @media (min-width: $screen-sm-min) { + width: $container-sm; + } + @media (min-width: $screen-md-min) { + width: $container-md; + } + @media (min-width: $screen-lg-min) { + width: $container-lg; + } +} + + +// Fluid container +// +// Utilizes the mixin meant for fixed width containers, but without any defined +// width for fluid, full width layouts. + +.container-fluid { + @include container-fixed; +} + + +// Row +// +// Rows contain and clear the floats of your columns. + +.row { + @include make-row; +} + + +// Columns +// +// Common styles for small and large grid columns + +@include make-grid-columns; + + +// Extra small grid +// +// Columns, offsets, pushes, and pulls for extra small devices like +// smartphones. + +@include make-grid(xs); + + +// Small grid +// +// Columns, offsets, pushes, and pulls for the small device range, from phones +// to tablets. + +@media (min-width: $screen-sm-min) { + @include make-grid(sm); +} + + +// Medium grid +// +// Columns, offsets, pushes, and pulls for the desktop device range. + +@media (min-width: $screen-md-min) { + @include make-grid(md); +} + + +// Large grid +// +// Columns, offsets, pushes, and pulls for the large desktop device range. + +@media (min-width: $screen-lg-min) { + @include make-grid(lg); +} diff --git a/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_input-groups.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_input-groups.scss new file mode 100644 index 000000000..12f0c428c --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_input-groups.scss @@ -0,0 +1,167 @@ +// +// Input groups +// -------------------------------------------------- + +// Base styles +// ------------------------- +.input-group { + position: relative; // For dropdowns + display: table; + border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table + + // Undo padding and float of grid classes + &[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; + } + + .form-control { + // Ensure that the input is always above the *appended* addon button for + // proper border colors. + position: relative; + z-index: 2; + + // IE9 fubars the placeholder attribute in text inputs and the arrows on + // select elements in input groups. To fix it, we float the input. Details: + // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855 + float: left; + + width: 100%; + margin-bottom: 0; + } +} + +// Sizing options +// +// Remix the default form control sizing classes into new ones for easier +// manipulation. + +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + @extend .input-lg; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + @extend .input-sm; +} + + +// Display as table-cell +// ------------------------- +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; + + &:not(:first-child):not(:last-child) { + border-radius: 0; + } +} +// Addon and addon wrapper for buttons +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; // Match the inputs +} + +// Text input groups +// ------------------------- +.input-group-addon { + padding: $padding-base-vertical $padding-base-horizontal; + font-size: $font-size-base; + font-weight: normal; + line-height: 1; + color: $input-color; + text-align: center; + background-color: $input-group-addon-bg; + border: 1px solid $input-group-addon-border-color; + border-radius: $border-radius-base; + + // Sizing + &.input-sm { + padding: $padding-small-vertical $padding-small-horizontal; + font-size: $font-size-small; + border-radius: $border-radius-small; + } + &.input-lg { + padding: $padding-large-vertical $padding-large-horizontal; + font-size: $font-size-large; + border-radius: $border-radius-large; + } + + // Nuke default margins from checkboxes and radios to vertically center within. + input[type="radio"], + input[type="checkbox"] { + margin-top: 0; + } +} + +// Reset rounded corners +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + @include border-right-radius(0); +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + @include border-left-radius(0); +} +.input-group-addon:last-child { + border-left: 0; +} + +// Button input groups +// ------------------------- +.input-group-btn { + position: relative; + // Jankily prevent input button groups from wrapping with `white-space` and + // `font-size` in combination with `inline-block` on buttons. + font-size: 0; + white-space: nowrap; + + // Negative margin for spacing, position for bringing hovered/focused/actived + // element above the siblings. + > .btn { + position: relative; + + .btn { + margin-left: -1px; + } + // Bring the "active" button to the front + &:hover, + &:focus, + &:active { + z-index: 2; + } + } + + // Negative margin to only have a 1px border between the two + &:first-child { + > .btn, + > .btn-group { + margin-right: -1px; + } + } + &:last-child { + > .btn, + > .btn-group { + z-index: 2; + margin-left: -1px; + } + } +} diff --git a/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_jumbotron.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_jumbotron.scss new file mode 100644 index 000000000..439d23de2 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_jumbotron.scss @@ -0,0 +1,52 @@ +// +// Jumbotron +// -------------------------------------------------- + + +.jumbotron { + padding-top: $jumbotron-padding; + padding-bottom: $jumbotron-padding; + margin-bottom: $jumbotron-padding; + color: $jumbotron-color; + background-color: $jumbotron-bg; + + h1, + .h1 { + color: $jumbotron-heading-color; + } + + p { + margin-bottom: ($jumbotron-padding / 2); + font-size: $jumbotron-font-size; + font-weight: 200; + } + + > hr { + border-top-color: darken($jumbotron-bg, 10%); + } + + .container &, + .container-fluid & { + border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container + } + + .container { + max-width: 100%; + } + + @media screen and (min-width: $screen-sm-min) { + padding-top: ($jumbotron-padding * 1.6); + padding-bottom: ($jumbotron-padding * 1.6); + + .container &, + .container-fluid & { + padding-left: ($jumbotron-padding * 2); + padding-right: ($jumbotron-padding * 2); + } + + h1, + .h1 { + font-size: $jumbotron-heading-font-size; + } + } +} diff --git a/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_labels.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_labels.scss new file mode 100644 index 000000000..42ed6ea12 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_labels.scss @@ -0,0 +1,66 @@ +// +// Labels +// -------------------------------------------------- + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: $label-color; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; + + // [converter] extracted a& to a.label + + // Empty labels collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for labels in buttons + .btn & { + position: relative; + top: -1px; + } +} + +// Add hover effects, but only for links +a.label { + &:hover, + &:focus { + color: $label-link-hover-color; + text-decoration: none; + cursor: pointer; + } +} + +// Colors +// Contextual variations (linked labels get darker on :hover) + +.label-default { + @include label-variant($label-default-bg); +} + +.label-primary { + @include label-variant($label-primary-bg); +} + +.label-success { + @include label-variant($label-success-bg); +} + +.label-info { + @include label-variant($label-info-bg); +} + +.label-warning { + @include label-variant($label-warning-bg); +} + +.label-danger { + @include label-variant($label-danger-bg); +} diff --git a/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_list-group.scss b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_list-group.scss new file mode 100644 index 000000000..7cb83aab0 --- /dev/null +++ b/release/pui-v2.0.0-alpha.5/bootstrap-sass/bootstrap/_list-group.scss @@ -0,0 +1,130 @@ +// +// List groups +// -------------------------------------------------- + + +// Base class +// +// Easily usable on + + + +
+
+
+

neutral-2

+
+
+
+
+
+

neutral-3

+
+
+
+
+
+

neutral-4

+
+
+
+
+
+

neutral-5

+
+
+
+
+
+

neutral-6

+
+
+
+
+
+

neutral-7

+
+
+
+
+
+

neutral-8

+
+
+
+
+
+

neutral-9

+
+
+
+
+
+

neutral-10

+
+
+
+
+
+

neutral-11

+
+
+ + +
+
+
+
+

dark-1

+
+
+
+
+
+

dark-2

+
+
+
+
+
+

dark-3

+
+
+
+
+
+

dark-4

+
+
+
+
+
+

dark-5

+
+
+
+
+
+

dark-6

+
+
+
+
+
+

dark-7

+
+
+
+
+
+

dark-8

+
+
+
+
+
+

dark-9

+
+
+
+
+
+

dark-10

+
+
+
+
+
+

dark-11

+
+
+
+ +
+
+
+
+

brand-1

+
+
+
+
+
+

brand-2

+
+
+
+
+
+

brand-3

+
+
+
+
+
+

brand-4

+
+
+
+
+
+

brand-5

+
+
+
+
+
+

brand-6

+
+
+
+
+
+

brand-7

+
+
+
+
+
+

brand-8

+
+
+
+
+
+

brand-9

+
+
+
+
+
+

brand-10

+
+
+
+
+
+

brand-11

+
+
+
+ +
+
+
+
+

accent-1

+
+
+
+
+
+

accent-2

+
+
+
+
+
+

accent-3

+
+
+
+
+
+

accent-4

+
+
+ +
+
+
+

accent-5

+
+
+
+
+
+

accent-6

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

error-1

+
+
+ +
+
+
+

error-2

+
+
+ +
+
+
+

error-3

+
+
+ +
+
+
+

error-4

+
+
+
+
+
+

error-5

+
+
+
+
+
+

error-6

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

warn-1

+
+
+
+
+
+

warn-2

+
+
+
+
+
+

warn-3

+
+
+
+
+
+

warn-4

+
+
+
+
+
+

warn-5

+
+
+
+
+
+

warn-6

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

success-1

+
+
+ +
+
+
+

success-2

+
+
+
+
+
+

success-3

+
+
+
+
+
+

success-4

+
+
+
+
+
+

success-5

+
+
+
+
+
+

success-6

+
+
+
+
+
+
+
+
+ +*/ +.bg-neutral-1 { + background-color: #282828 !important; } + +.bg-neutral-2 { + background-color: #424242 !important; } + +.bg-neutral-3 { + background-color: #686868 !important; } + +.bg-neutral-4 { + background-color: #8d8e8e !important; } + +.bg-neutral-5 { + background-color: #b4b4b4 !important; } + +.bg-neutral-6 { + background-color: #c3c5c7 !important; } + +.bg-neutral-7 { + background-color: #d4d9d9 !important; } + +.bg-neutral-8 { + background-color: #e0e4e5 !important; } + +.bg-neutral-9 { + background-color: #ecefef !important; } + +.bg-neutral-10 { + background-color: #F8F8F8 !important; } + +.bg-neutral-11 { + background-color: white !important; } + +.bg-brand-1 { + background-color: #083330 !important; } + +.bg-brand-2 { + background-color: #0B4D48 !important; } + +.bg-brand-3 { + background-color: #025A53 !important; } + +.bg-brand-4 { + background-color: #0F6660 !important; } + +.bg-brand-5 { + background-color: #00776D !important; } + +.bg-brand-6 { + background-color: #138078 !important; } + +.bg-brand-7 { + background-color: #179990 !important; } + +.bg-brand-8 { + background-color: #00A79D !important; } + +.bg-brand-9 { + background-color: #1BB3A8 !important; } + +.bg-brand-10 { + background-color: #1FCCC0 !important; } + +.bg-brand-11 { + background-color: #D9FFFC !important; } + +.bg-accent-1 { + background-color: #135680 !important; } + +.bg-accent-2 { + background-color: #176799 !important; } + +.bg-accent-3 { + background-color: #1B78B3 !important; } + +.bg-accent-4 { + background-color: #1F8ACC !important; } + +.bg-accent-5 { + background-color: #229BE6 !important; } + +.bg-accent-6 { + background-color: #D9F0FF !important; } + +.bg-dark-1 { + background-color: #232B2F !important; } + +.bg-dark-2 { + background-color: #243641 !important; } + +.bg-dark-3 { + background-color: #3D4A51 !important; } + +.bg-dark-4 { + background-color: #4F6069 !important; } + +.bg-dark-5 { + background-color: #607580 !important; } + +.bg-dark-6 { + background-color: #788E9A !important; } + +.bg-dark-7 { + background-color: #A2B1B9 !important; } + +.bg-dark-8 { + background-color: #C5CED3 !important; } + +.bg-dark-9 { + background-color: #DFE5E8 !important; } + +.bg-dark-10 { + background-color: #EAEDEF !important; } + +.bg-dark-11 { + background-color: #F5F6F7 !important; } + +.bg-error-1 { + background-color: #801319 !important; } + +.bg-error-2 { + background-color: #99171D !important; } + +.bg-error-3 { + background-color: #B31B22 !important; } + +.bg-error-4 { + background-color: #CC1F27 !important; } + +.bg-error-5 { + background-color: #F2242F !important; } + +.bg-error-6 { + background-color: #FFD9DB !important; } + +.bg-warn-1 { + background-color: #806613 !important; } + +.bg-warn-2 { + background-color: #997B17 !important; } + +.bg-warn-3 { + background-color: #B38F1B !important; } + +.bg-warn-4 { + background-color: #CCA41F !important; } + +.bg-warn-5 { + background-color: #E6B822 !important; } + +.bg-warn-6 { + background-color: #FFF6D9 !important; } + +.bg-success-1 { + background-color: #4D8013 !important; } + +.bg-success-2 { + background-color: #5C9917 !important; } + +.bg-success-3 { + background-color: #6CB31B !important; } + +.bg-success-4 { + background-color: #7BCC1F !important; } + +.bg-success-5 { + background-color: #8AE622 !important; } + +.bg-success-6 { + background-color: #EDFFD9 !important; } + +/*doc +--- +title: Shadows & Glows +name: color_shadows_glows +parent: color +--- +
+
+
+
+
$shadow-1
+
+
+
+
$shadow-2
+
+
+
+
$shadow-3
+
+
+
+
$shadow-4
+
+
+
+
$glow-1
+
+
+
+
$glow-2
+
+
+
+
$glow-3
+
+
+
+
$glow-4
+
+
+
+
$glow-5
+
+
+
+
+
+*/ +.bg-glow-1 { + background-color: #FFFFFF !important; + background-color: rgba(255, 255, 255, 0.1) !important; } + +.bg-glow-2 { + background-color: #FFFFFF !important; + background-color: rgba(255, 255, 255, 0.2) !important; } + +.bg-glow-3 { + background-color: #FFFFFF !important; + background-color: rgba(255, 255, 255, 0.4) !important; } + +.bg-glow-4 { + background-color: #FFFFFF !important; + background-color: rgba(255, 255, 255, 0.6) !important; } + +.bg-glow-5 { + background-color: white !important; } + +.bg-shadow-1 { + background-color: #000000 !important; + background-color: rgba(0, 0, 0, 0.3) !important; } + +.bg-shadow-2 { + background-color: #000000 !important; + background-color: rgba(0, 0, 0, 0.14) !important; } + +.bg-shadow-3 { + background-color: #000000 !important; + background-color: rgba(0, 0, 0, 0.07) !important; } + +.bg-shadow-4 { + background-color: #000000 !important; + background-color: rgba(0, 0, 0, 0.035) !important; } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/*doc +--- +title: Accordions +name: accordion +categories: + - Objects + - All +--- + + + +npm install pui-css-collapse --save + + + + +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. + + +*/ +/*doc +--- +title: Basic +name: accordion_basic +parent: accordion +--- + +Use this to expand and collapse content. + +```html_example + +
+ Look at this content. +
+``` + +*/ +/*doc +--- +title: With Icons +name: accordion_with_icons +parent: accordion +--- + +Accordion with plus/minus icon: + +```html_example +
+ +
+
+ This content should hide and show when the trigger is clicked. +
+
+
+``` + +Accordion with caret right/down icon: + +```html_example +
+ +
+
+ This content should hide and show when the trigger is clicked. +
+
+
+``` +*/ +/*doc +--- +title: Styles +name: accordion_styles +parent: accordion +--- + +Accordion with Divider: + +This adds a divider between the accordion header and accordion body. + +```html_example +
+ +
+
+ This content should hide and show when the trigger is clicked. +
+
+
+``` + +You can combine the accordion with any panel class to have a styled panel that opens and closes. + +*/ +.when-collapsed { + display: none; } + +.when-expanded { + display: block; } + +.when-collapsed-inline { + display: none; } + +.when-expanded-inline { + display: inline; } + +.collapsed .when-collapsed { + display: block; } +.collapsed .when-expanded { + display: none; } +.collapsed .when-collapsed-inline { + display: inline; } +.collapsed .when-expanded-inline { + display: none; } + +.collapse-trigger { + cursor: pointer; } + .collapse-trigger .collapse-title { + display: inline-block; } + .collapse-trigger .collapse-icon { + display: inline-block; + width: 15px; + color: #686868; + margin-right: 5px; } + +.panel-heading-accordion { + position: relative; + padding: 10px 20px; + margin-bottom: 0px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.panel-body-accordion, .panel-body-accordion-divider, .panel-divider > .panel-heading + .panel-collapse > .panel-body { + margin: 0px; + padding: 30px 20px; } + +.panel-body-accordion-divider, .panel-divider > .panel-heading + .panel-collapse > .panel-body { + border-top: 2px solid rgba(0, 0, 0, 0.07); } + +.panel-title a { + display: block; } + + +@charset "UTF-8"; +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/* Transition mixins */ +/* Button Mixins */ +/*pending +--- +title: App Status +name: app_status +parent: console +--- + + + + +npm install pui-css-app-status --save + + + + +```html_example +
+
+
+
+
+ APP +
+

App Name

+
+
+ + +
+
+ +
+
+
+
+``` +*/ +@-webkit-keyframes loadingPulse { + 0% { + opacity: 0; } + + 50% { + opacity: 1; } + + 100% { + opacity: 0; } } + +@keyframes loadingPulse { + 0% { + opacity: 0; } + + 50% { + opacity: 1; } + + 100% { + opacity: 0; } } + +#app_status { + position: relative; } + #app_status #svg { + border-radius: 50%; + box-shadow: 0px 4px 0px rgba(0, 0, 0, 0.08); + background-color: #F8F8F8; } + #app_status #svg circle { + fill: #F8F8F8; + stroke: #F8F8F8; + stroke-dashoffset: 0; + -webkit-transition: stroke-dashoffset 1s cubic-bezier(0.55, 0.085, 0.68, 0.53); + transition: stroke-dashoffset 1s cubic-bezier(0.55, 0.085, 0.68, 0.53); + stroke-width: 10px; } + #app_status .content { + position: absolute; + top: 116px; + left: 13px; + width: 325px; } + #app_status .content .name { + text-align: center; } + #app_status .content .started-controls { + margin-top: 20px; + width: 150px; + position: absolute; + left: 87px; + opacity: 1; + visibility: visible; + -webkit-transition: opacity 0.5s ease-out; + transition: opacity 0.5s ease-out; } + #app_status .content .stopped-controls { + margin-top: 20px; + width: 58px; + opacity: 1; + visibility: visible; + position: absolute; + left: 134px; + -webkit-transition: opacity 0.5s ease-out; + transition: opacity 0.5s ease-out; } + #app_status .content .stopping-message, #app_status .content .starting-message, #app_status .content .scaling-message { + position: absolute; + opacity: 0; + visibility: hidden; + left: 120px; + margin-top: 20px; } + #app_status .content .just-stopped-message, #app_status .content .just-started-message { + position: absolute; + opacity: 0; + visibility: hidden; + left: 130px; + margin-top: -5px; + color: #b4b4b4; } + #app_status.stopped .started-controls { + opacity: 0; + visibility: hidden; } + #app_status.stopped #svg circle { + stroke: #b4b4b4; + stroke-dashoffset: 0; } + #app_status.started .stopped-controls { + opacity: 0; + visibility: hidden; } + #app_status.started #svg circle { + stroke: #025A53; + stroke-dashoffset: 0; } + #app_status.crashing .stopped-controls { + opacity: 0; + visibility: hidden; } + #app_status.crashing #svg circle { + stroke: #B31B22; + stroke-dashoffset: 0; } + #app_status.transitioning .started-controls, #app_status.transitioning .stopped-controls { + opacity: 0; + visibility: hidden; } + #app_status.begin-transitioning #svg circle { + stroke-dashoffset: -1070; } + #app_status.starting .starting-message { + opacity: 1; + visibility: visible; } + #app_status.starting.begin-transitioning .starting-message { + -webkit-transition: opacity 1000ms ease-out 600ms; + transition: opacity 1000ms ease-out 600ms; + -webkit-animation: loadingPulse 1.4s ease-in-out 600ms infinite; + animation: loadingPulse 1.4s ease-in-out 600ms infinite; } + #app_status.stopping .stopping-message { + opacity: 1; + visibility: visible; } + #app_status.stopping.begin-transitioning .stopping-message { + -webkit-transition: opacity 1000ms ease-out 600ms; + transition: opacity 1000ms ease-out 600ms; + -webkit-animation: loadingPulse 1.4s ease-in-out 600ms infinite; + animation: loadingPulse 1.4s ease-in-out 600ms infinite; } + #app_status.restarting .starting-message { + opacity: 1; + visibility: visible; } + #app_status.restarting.begin-transitioning .starting-message { + -webkit-transition: opacity 1000ms ease-out 600ms; + transition: opacity 1000ms ease-out 600ms; + -webkit-animation: loadingPulse 1.4s ease-in-out 600ms infinite; + animation: loadingPulse 1.4s ease-in-out 600ms infinite; } + #app_status.scaling .scaling-message { + opacity: 1; + visibility: visible; } + #app_status.scaling.scaling-with-restage.begin-transitioning .scaling-message { + -webkit-transition: opacity 1000ms ease-out 600ms; + transition: opacity 1000ms ease-out 600ms; + -webkit-animation: loadingPulse 1.4s ease-in-out 600ms infinite; + animation: loadingPulse 1.4s ease-in-out 600ms infinite; } + #app_status.scaling.scaling-without-restage .scaling-message { + -webkit-transition: opacity 1000ms ease-out 600ms; + transition: opacity 1000ms ease-out 600ms; + -webkit-animation: loadingPulse 1.4s ease-in-out 600ms infinite; + animation: loadingPulse 1.4s ease-in-out 600ms infinite; } + #app_status.scaling.scaling-without-restage #svg circle { + stroke-dashoffset: 0; } + #app_status.just-started .just-started-message { + -webkit-transition: opacity 0.5s ease-out; + transition: opacity 0.5s ease-out; + opacity: 1; + visibility: visible; } + #app_status.just-stopped .just-stopped-message { + -webkit-transition: opacity 0.5s ease-out; + transition: opacity 0.5s ease-out; + opacity: 1; + visibility: visible; } + +/*pending +--- +title: App Health Indicator +name: app_health_indicator +parent: console +--- + +This component indicates application health. It has two sizes, many states, and can be editable or not depending on user permissions. + +## States + +The application health indicator can be `.running`, `.warning_75`, `.warning_50`, `.warning_25`, `.warning_0`, `.stopped`. + +
+
+
+
+ + + + + +
100%
+
+
+
+
+
+
+ + + + + +
75%
+
+
+
+
+
+
+ + + + + +
50%
+
+
+
+
+
+
+ + + + + +
25%
+
+
+
+
+
+
+ + + + + +
0%
+
+
+
+
+
+
+ + + + + +
stopped
+
+
+
+
+ + +
+
+
+
+ + + + + +
100%
+
+
+
+
+
+
+ + + + + +
75%
+
+
+
+
+
+
+ + + + + +
50%
+
+
+
+
+
+
+ + + + + +
25%
+
+
+
+
+
+
+ + + + + +
0%
+
+
+
+
+
+
+ + + + + +
stopped
+
+
+
+
+ +## Sizes + +The application health indicator can be large or small using the `.health` and `.health health-indicator-large` classes. + +
+
+

Small

+
+
+ + + + + + +
100%
+
+
+
+
+

large

+
+
+ + + + + + +
100%
+
+
+
+
+ +## Enforcing Permissions + +Depending if the user has permission to start and stop applications, the application health indicator will be `.editable` or not. + +
+
+

Not Editable

+
+
+ + + + + + +
100%
+
+
+
+
+

Editable

+
+
+ + + + + + +
100%
+
+
+
+
+ +These states are handled automatically when you use the `application_state_indicator()` +helper in your templates. The latter parameter determines the size. The first +parameter is the application affected by the actions of the application health indicator. + +```erb +<%= application_state_indicator(application) %> +<%= application_state_indicator(application, {:large_indicator: true}) %> +``` + +*/ +.health { + width: 40px; + position: relative; } + .health form { + margin: 0; } + .health input:focus { + outline: none; } + .health .value { + position: absolute; + top: 0px; + left: 0px; + line-height: 40px; + width: 40px; + font-size: 10px; + text-align: center; + text-transform: uppercase; + letter-spacing: -1px; + z-index: 2; } + .health .indicator { + background-position: center; + background-repeat: no-repeat; + background-color: transparent; + border: none; + width: 40px; + height: 40px; + box-shadow: none; + margin: 0; + display: inline-block; + vertical-align: middle; + position: relative; + z-index: 1; } + .health.editable:hover:before { + content: "\f04d"; + font-family: FontAwesome; + color: #1B78B3; + position: absolute; + top: 50%; + left: 50%; + cursor: pointer; + z-index: 0; + font-size: 12px; + margin-top: -8px; + margin-left: -5px; } + .health form { + position: relative; } + .health form:before { + content: ""; + height: 100%; + width: 100%; + position: absolute; + border-radius: 300px; + border: 7px solid #d4d9d9; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); } + .health.health-indicator-large form:before { + border-width: 12px; } + .health.running form:before { + border-color: #00A79D; } + .health.stopped form:before { + border-color: #d4d9d9; } + .health.stopped.editable:hover:before { + content: "\f04b"; + font-family: FontAwesome; + font-size: 15px; + margin-top: -11px; + margin-left: -4px; } + .health.warning_0 form:before { + border-color: #99171D; } + .health.warning_25 form:before { + border-top-color: #99171D; } + .health.warning_50 form:before { + border-top-color: #99171D; + border-right-color: #99171D; } + .health.warning_75 form:before { + border-color: #99171D #99171D #99171D #d4d9d9; } + .health.editable:hover .value { + display: none; } + +.health-indicator-large { + width: 64px; + height: 64px; + margin: auto; + font-size: 14px; + width: 64px; } + .health-indicator-large.editable:hover:before { + font-size: 20px; + margin-top: -14px; + margin-left: -8px; } + .health-indicator-large.stopped.editable:hover:before { + font-size: 20px; + margin-top: -14px; + margin-left: -6px; } + .health-indicator-large .value { + line-height: 64px; + width: 64px; + font-size: 14px; } + .health-indicator-large .indicator { + width: 64px; + height: 64px; } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/*doc +--- +title: Instance Scale +name: instance_scale +categories: + - Objects + - all +--- + + +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. + +```html_example +
+
+
+ + + + + + + + + + + + + + + Instances + + + + + 1 + + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + 6 + + + + + + + + + + + + + + + + + + + + + + + + + 8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ $ cf scale my_app -i 1
+
+
+
+``` +*/ +.scale-svg .instances-column:hover, .scale-svg .selected-group { + -webkit-filter: none; + filter: none; } +.scale-svg .instances-gradient-stop-1 { + stop-color: #ecefef; } +.scale-svg .instances-gradient-stop-2 { + stop-color: rgba(255, 255, 255, 0); } + +/*pending +--- +title: Toggle +name: toggle +categories: + - Objects + - All +--- + + +Use this class for sections that can switch into an 'edit' mode. + +```html_example +
+
+ I'm viewing... + Edit +
+
+ I'm editing... + Cancel +
+
+``` + +*/ +/*pending +--- +title: Data Behavior +name: toggle_data_behavior +parent: toggle +--- + +Use this class for sections that can switch into an 'edit' mode. + +```html_example +
} +
+ I'm viewing... + Edit +
+
+ I'm editing... + Cancel +
+
+``` + +*/ +.toggle .toggle-show { + display: block; } +.toggle .toggle-edit { + display: none; } +.toggle.edit .toggle-show { + display: none; } +.toggle.edit .toggle-edit { + display: block; } + +/*pending +--- +title: Angular +name: toggle_angular +parent: toggle +--- + +Use this class for sections that have two different viewable states. + +```html_example +
+
+ This is the default content + Toggle State +
+
+ This is the secondary content + Toggle State +
+
+``` + +*/ +.state-toggle .state-content-default { + display: block; } +.state-toggle .state-content-secondary { + display: none; } +.state-toggle.state-secondary .state-content-default { + display: none; } +.state-toggle.state-secondary .state-content-secondary { + display: block; } + +/*pending +--- +title: No JavaScript +name: no_js +categories: + - Utilities + - All +--- +### Javascript + +Try disabling js and rendering this page. + +```html_example +

Won't show if browser doesn't support JS.

+``` + +*/ +.no-js .invisible-no-js { + visibility: hidden; } + +/*doc +--- +title: Dividers +name: divider +categories: + - Elements + - All +--- + + + +npm install pui-css-dividers --save + + + + +Dividers draw horizontal lines between different content groupings. + +```html_example +
+
+``` + +```html_inverse_example +
+
+``` + +*/ +.divider-alternate-1 { + border: 1px solid #000000; + border: 1px solid rgba(0, 0, 0, 0.1); + border-width: 1px 0 0 0; } + +.divider-alternate-2 { + border: 3px solid #000000; + border: 3px solid rgba(0, 0, 0, 0.1); + border-width: 3px 0 0 0; } + +.divider-1 { + border: 1px solid #FFFFFF; + border: 1px solid rgba(255, 255, 255, 0.1); + border-width: 1px 0 0 0; } + +.divider-2 { + border: 3px solid #FFFFFF; + border: 3px solid rgba(255, 255, 255, 0.1); + border-width: 3px 0 0 0; } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/*doc +--- +title: Dropdowns +name: dropdown +categories: + - Objects + - All +--- + + + +npm install pui-css-dropdowns --save + + + + +Dropdowns are menus that can be triggered by buttons. + +This is the basic bootstrap dropdown. + +```html_example + +``` + +
+
Dropdowns with dividers
+

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

+
+ +```html_example + +``` + +
+
Alignment
+

+ By default, a dropdown menu is automatically positioned 100% from the top and along the left side of its parent. + Add .dropdown-menu-right to a .dropdown-menu to right align the dropdown menu +

+
+ +```html_example + +``` + +
+
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. + +```html_example + +``` + +*/ +.dropdown { + display: inline-block; } + +.dropdown-menu { + box-shadow: 0 2px 0 rgba(211, 217, 217, 0.5); + background-color: white; + border: 1px solid #d4d9d9; + padding: 0 0; } + .dropdown-menu > li > a { + color: #607580; + font-weight: 600; } + .dropdown-menu > li > a:hover { + color: #607580; + background-color: #f0f0f0; } + .dropdown-menu.dropdown-border > li > a { + padding-top: 7px; + padding-bottom: 7px; + border-bottom: 1px solid #ecefef; } + +/*doc +--- +title: Notifications +name: dropdown_notification +parent: dropdown +--- + +This is a notification dropdown with no notifications. + +```html_example + +``` + +This is a notification dropdown with notifications. + +```html_example + +``` + +Here's an example modifiying the size and the color of the bell + +```html_example + +``` + +This is a notification dropdown with alerts. + +```html_example + +``` +*/ +.dropdown-notifications-none { + width: 200px; + text-align: center; + padding: 20px; } + .dropdown-notifications-none .fa { + font-size: 42px; + padding-bottom: 7px; + color: #c3c5c7; } + +.dropdown-notifications .caret { + display: none; } +.dropdown-notifications.open .btn-link.dropdown-toggle { + color: #c3c5c7; + box-shadow: none; } +.dropdown-notifications .btn-link:active, .dropdown-notifications .btn-link.active { + color: #c3c5c7; + background-color: transparent; } +.dropdown-notifications .dropdown-toggle { + color: #c3c5c7; + font-size: 25px; } + .dropdown-notifications .dropdown-toggle .dropdown-notifications-title { + margin: 0; + position: relative; } + .dropdown-notifications .dropdown-toggle .dropdown-notifications-badge { + border-radius: 1000em; + background-color: #00A79D; + color: white; + text-align: center; + font-weight: 900; + padding: 0.25em; + line-height: 0.75em; + min-width: 1.25em; } + .dropdown-notifications .dropdown-toggle .dropdown-notifications-alert { + color: #B38F1B; } + .dropdown-notifications .dropdown-toggle .dropdown-notifications-alert, .dropdown-notifications .dropdown-toggle .dropdown-notifications-badge { + position: absolute; + font-size: 0.75em; + top: -0.2em; + left: 0.75em; + right: auto; } +.dropdown-notifications .dropdown-menu > li > a { + padding-bottom: 10px; } +.dropdown-notifications .dropdown-menu > li:last-child > a { + padding-bottom: 0; } + +/* Transition mixins */ +/* Button Mixins */ +/*doc +--- +title: Ellipsis +name: ellipsis +categories: + - Utilities + - All +--- + + + + +npm install pui-css-ellipsis --save + + + + +The type `.type-ellipsis` adds ellipsis to text when there is too much. Combine it with `.col-md-*` classes to get the width you want. + +```html_example_table +

+ 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. +

+``` + +*/ +.type-ellipsis { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + +/*doc +--- +title: Embeds +name: embed +categories: + - Elements + - All +--- +*/ +/*doc +--- +title: Responsive +name: embed_responsive +parent: embed +--- + + + + +npm install pui-css-embeds --save + + + + +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 ` + + +
+
+ +
+
+
+
+ +
+
+ +``` + +```html_example +

4-by-3

+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+``` + +*/ +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/*doc +--- +title: Maps +name: map +categories: + - Objects + - All +--- + + + + +npm install pui-css-google-maps --save + + + + +Full width map with marker at Pivotal Labs SF location, and an optional informational overlay. + +```html_example + +
+
+
+
+
+
+

Location

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

Support: support@run.pivotal.io

+

Twitter: @pivotalws

+
+
+
+
+
+
+
+
+
+``` + +```js_example +var maps = (function() { + var self = this; + var map; + + var mapOptions = { + placeId: "ChIJ9w1pfYiAhYAR45k8AD-TjhA", + center: new google.maps.LatLng(37.781787,-122.403911), + mapElementClass: 'labs-map', + mapElementId: 'my-google-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); +``` +*/ +.map-wrapper { + position: relative; } + +.pane-map { + height: 450px; + position: relative; } + +.map-overlay { + position: absolute; + top: 70px; + z-index: 99; } + +@media (max-width: 768px) { + .map-overlay { + top: 0; + position: relative; } } + +.labs-map { + height: 100%; } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/*doc +--- +title: Grids +name: grid +categories: + - Layout + - All +--- + + + + +npm install pui-css-grids --save + + + + + + +

+ 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. +

+ +*/ +/*doc +--- +title: Introduction +name: 01_grid_intro +parent: grid +--- + +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: + +* Rows must be placed within a `.container` for proper alignment and padding. + +* Use `.row` to create horizontal groups of columns. + +* Content should be placed within columns (e.g. `.col-sm-11`, `.col-lg-6`, etc.). +Only columns may be immediate children of rows. + +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: + +* A column with the class `.col-sm-11` will take up 100% of the container +for devices with screen-width < 768px (the extra small breakpoint), +and 11/24ths for devices ≥ 768px. + +* A column with the class `.col-lg-6` will take up 100% of the container +for devices with < 1200px, +and 1/4th (6/24ths) for devices ≥ 1200px. + +* 3 `.col-md-8` columns would fill a row for devices ≥ 992px. +They would each take up their own row on devices < 992px. + +* Use the `.col-xs-*` classes to use a grid on mobile. + +Look to the [examples][04_grid_examples] for applying these principles to your code. +*/ +/*doc +--- +title: Media Queries +name: 02_grid_media_queries +parent: grid +--- + +We use the following media queries in our sass files to create the key breakpoints in our grid system. + +Name | Size | Variable Name +--------- | -------------- | ------------------ +mobile | | no media query since this is the default in bootstrap +x-small | 480px | `$screen-xs-min` +small | 768px | `$screen-sm-min` +medium | 992px | `$screen-md-min` +large | 1200px | `$screen-lg-min` +x-large | 1800px | `$screen-xl-min` + +*/ +/*doc +--- +title: Grid Sizes +name: 03_grid_sizes +parent: grid +--- + +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
+ +*/ +/*doc +--- +title: Examples +name: 04_grid_examples +parent: grid +--- + +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.

+
+ +```html_example +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+``` +*/ +/*doc +--- +title: "Example: Mobile and Desktop" +name: 04_a_grid_mobile_and_desktop +parent: 04_grid_examples +--- + +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. + +```html_example + +
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+``` + +*/ +/*doc +--- +title: "Example: Mobile, Tablet, Desktops" +name: 04_b_grid_mobile_tablet_desktop +parent: 04_grid_examples +--- + +Build on the previous example by creating even more dynamic and powerful layouts +with tablet `.col-sm-*` classes. + +```html_example +
+
+
+
+
+
+
+ +
+
+
+``` + +*/ +/*doc +--- +title: "Example: Column Wrapping" +name: 04_c_grid_column_wrapping +parent: 04_grid_examples +--- + +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. + +```html_example +
+
+
+
+
+
+
+
+``` + +**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. + +*/ +/*doc +--- +title: Gutter Sizes +name: 04_grid_gutter_sizes +parent: grid +--- + +You can change the size of a row's gutters with these classes. + +Class | Padding between columns +---------------- | -------------------------- +default | 20px +`.row-gutter-md` | 10px +`.row-gutter-sm` | 5px + +Here's what the gutters look like in action. + +```html_example_table +
+
+
+
+ +
+
+
+
+ +
+
+
+
+``` +*/ +.row-gutter-sm { + margin-left: -2px; + margin-right: -2px; } + .row-gutter-sm > [class^="col"] { + padding-left: 2px; + padding-right: 2px; } + +.row-gutter-md { + margin-left: -5px; + margin-right: -5px; } + .row-gutter-md > [class^="col"] { + padding-left: 5px; + padding-right: 5px; } + +/*doc +--- +title: Responsive Column Resets +name: 08_grid_column_resets +parent: grid +--- + +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][responsive_utilities]. + +```html_example +
+
+
+ + +
+ +
+
+
+``` + +*/ +/*doc +--- +title: Offsetting Columns +name: 09_grid_offsetting +parent: grid +--- + +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. + +```html_example +
+
+
+
+
+
+
+
+
+
+
+``` + +*/ +/*doc +--- +title: Column Ordering +name: 10_grid_ordering +parent: grid +--- + +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. + +```html_example +
+
+
+
+``` + +*/ +@media (min-width: 1800px) { + .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl-13, .col-xl-14, .col-xl-15, .col-xl-16, .col-xl-17, .col-xl-18, .col-xl-19, .col-xl-20, .col-xl-21, .col-xl-22, .col-xl-23, .col-xl-24 { + float: left; } + .col-xl-1 { + width: 4.16667%; } + .col-xl-2 { + width: 8.33333%; } + .col-xl-3 { + width: 12.5%; } + .col-xl-4 { + width: 16.66667%; } + .col-xl-5 { + width: 20.83333%; } + .col-xl-6 { + width: 25%; } + .col-xl-7 { + width: 29.16667%; } + .col-xl-8 { + width: 33.33333%; } + .col-xl-9 { + width: 37.5%; } + .col-xl-10 { + width: 41.66667%; } + .col-xl-11 { + width: 45.83333%; } + .col-xl-12 { + width: 50%; } + .col-xl-13 { + width: 54.16667%; } + .col-xl-14 { + width: 58.33333%; } + .col-xl-15 { + width: 62.5%; } + .col-xl-16 { + width: 66.66667%; } + .col-xl-17 { + width: 70.83333%; } + .col-xl-18 { + width: 75%; } + .col-xl-19 { + width: 79.16667%; } + .col-xl-20 { + width: 83.33333%; } + .col-xl-21 { + width: 87.5%; } + .col-xl-22 { + width: 91.66667%; } + .col-xl-23 { + width: 95.83333%; } + .col-xl-24 { + width: 100%; } + .col-xl-pull-0 { + right: auto; } + .col-xl-pull-1 { + right: 4.16667%; } + .col-xl-pull-2 { + right: 8.33333%; } + .col-xl-pull-3 { + right: 12.5%; } + .col-xl-pull-4 { + right: 16.66667%; } + .col-xl-pull-5 { + right: 20.83333%; } + .col-xl-pull-6 { + right: 25%; } + .col-xl-pull-7 { + right: 29.16667%; } + .col-xl-pull-8 { + right: 33.33333%; } + .col-xl-pull-9 { + right: 37.5%; } + .col-xl-pull-10 { + right: 41.66667%; } + .col-xl-pull-11 { + right: 45.83333%; } + .col-xl-pull-12 { + right: 50%; } + .col-xl-pull-13 { + right: 54.16667%; } + .col-xl-pull-14 { + right: 58.33333%; } + .col-xl-pull-15 { + right: 62.5%; } + .col-xl-pull-16 { + right: 66.66667%; } + .col-xl-pull-17 { + right: 70.83333%; } + .col-xl-pull-18 { + right: 75%; } + .col-xl-pull-19 { + right: 79.16667%; } + .col-xl-pull-20 { + right: 83.33333%; } + .col-xl-pull-21 { + right: 87.5%; } + .col-xl-pull-22 { + right: 91.66667%; } + .col-xl-pull-23 { + right: 95.83333%; } + .col-xl-pull-24 { + right: 100%; } + .col-xl-push-0 { + left: auto; } + .col-xl-push-1 { + left: 4.16667%; } + .col-xl-push-2 { + left: 8.33333%; } + .col-xl-push-3 { + left: 12.5%; } + .col-xl-push-4 { + left: 16.66667%; } + .col-xl-push-5 { + left: 20.83333%; } + .col-xl-push-6 { + left: 25%; } + .col-xl-push-7 { + left: 29.16667%; } + .col-xl-push-8 { + left: 33.33333%; } + .col-xl-push-9 { + left: 37.5%; } + .col-xl-push-10 { + left: 41.66667%; } + .col-xl-push-11 { + left: 45.83333%; } + .col-xl-push-12 { + left: 50%; } + .col-xl-push-13 { + left: 54.16667%; } + .col-xl-push-14 { + left: 58.33333%; } + .col-xl-push-15 { + left: 62.5%; } + .col-xl-push-16 { + left: 66.66667%; } + .col-xl-push-17 { + left: 70.83333%; } + .col-xl-push-18 { + left: 75%; } + .col-xl-push-19 { + left: 79.16667%; } + .col-xl-push-20 { + left: 83.33333%; } + .col-xl-push-21 { + left: 87.5%; } + .col-xl-push-22 { + left: 91.66667%; } + .col-xl-push-23 { + left: 95.83333%; } + .col-xl-push-24 { + left: 100%; } + .col-xl-offset-0 { + margin-left: 0%; } + .col-xl-offset-1 { + margin-left: 4.16667%; } + .col-xl-offset-2 { + margin-left: 8.33333%; } + .col-xl-offset-3 { + margin-left: 12.5%; } + .col-xl-offset-4 { + margin-left: 16.66667%; } + .col-xl-offset-5 { + margin-left: 20.83333%; } + .col-xl-offset-6 { + margin-left: 25%; } + .col-xl-offset-7 { + margin-left: 29.16667%; } + .col-xl-offset-8 { + margin-left: 33.33333%; } + .col-xl-offset-9 { + margin-left: 37.5%; } + .col-xl-offset-10 { + margin-left: 41.66667%; } + .col-xl-offset-11 { + margin-left: 45.83333%; } + .col-xl-offset-12 { + margin-left: 50%; } + .col-xl-offset-13 { + margin-left: 54.16667%; } + .col-xl-offset-14 { + margin-left: 58.33333%; } + .col-xl-offset-15 { + margin-left: 62.5%; } + .col-xl-offset-16 { + margin-left: 66.66667%; } + .col-xl-offset-17 { + margin-left: 70.83333%; } + .col-xl-offset-18 { + margin-left: 75%; } + .col-xl-offset-19 { + margin-left: 79.16667%; } + .col-xl-offset-20 { + margin-left: 83.33333%; } + .col-xl-offset-21 { + margin-left: 87.5%; } + .col-xl-offset-22 { + margin-left: 91.66667%; } + .col-xl-offset-23 { + margin-left: 95.83333%; } + .col-xl-offset-24 { + margin-left: 100%; } } + +/*pending +--- +title: Responsive +name: grid_responsive +parent: grid +--- + +Having trouble debugging grids? You can also set `$grids-debug: true` in the `grids.css.scss` file. +This will allow you to visualize the changes taking place at different device widths. + +*/ +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/*doc +--- +title: Hoverable +name: hoverable +categories: + - Utilities + - Objects + - All +--- + + + + +npm install pui-css-hoverable --save + + + + +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. + +```html_example + +``` + +Table example: + +```html_example + + + + + + + + + + + + + + + + +
Name
+ Row 1 + Delete +
+ Row 2 + Delete +
+ Row 3 + Delete +
+ Not hoverable +
+``` + +*/ +[hoverable]:hover, [hoverable].clicked { + background-color: #ecefef; } + [hoverable]:hover .hovered, [hoverable].clicked .hovered { + visibility: visible; } + +[hoverable] .hovered { + visibility: hidden; + float: right; } + +/*doc +--- +title: Images +name: image +categories: + - Elements + - All +--- +*/ +/*doc +--- +title: Responsive +name: image_responsive +parent: image +--- + + + + +npm install pui-css-images --save + + + + +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. + +```html_example +
+
+ Responsive image +
+
+ Responsive image +
+
+ Responsive image +
+
+``` + +*/ +/*doc +--- +title: Responsive SVG +name: image_responsive_svg +parent: image +--- + +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: + +``` +
+ + ... + +
+``` + +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](http://sarasoueidan.com/blog/svg-coordinate-systems/). + +
+
+
+ + + + + + + + + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + +
+
+
+ + + +*/ +.svg-responsive { + display: inline-block; + position: relative; + width: 100%; + padding-bottom: 100%; + vertical-align: middle; + overflow: hidden; } + +.svg-content { + display: inline-block; + position: absolute; + top: 0; + left: 0; } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/*doc +--- +title: Labels +name: label +categories: + - Elements + - All +--- + + + +npm install pui-css-labels --save + + + + +Labels are based on Bootstrap's labels. +Here's an example of a label on its own. + +```html_example_table +new +``` + +You can also place labels within HTML elements. +It will be sized based on the element's font size and its font modifiers. + +```html_example_table +

I am a P. + new +

+ +

I am an H3. + new +

+ +

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

+``` +*/ +.label { + padding: 0.2em 0.6em; + border-radius: 3px; + text-transform: uppercase; } + +/*doc +--- +title: Removable Labels +name: removable_label +parent: label +--- + +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. + +```html_example +Removable + + +``` +*/ +.label-removable { + padding: 4px 7px; + border-radius: 3px; + background-color: #00A79D; + color: white; + font-weight: 600; } + .label-removable .close-btn { + margin-left: 15px; + color: #FFFFFF; + color: rgba(255, 255, 255, 0.6); } + .label-removable .close-btn:hover { + color: white; + text-decoration: none; } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/*doc +--- +title: Media +name: media +categories: + - Layout + - All +--- + + + +npm install pui-css-media --save + + + + +The default media displays a media object (images, video, audio) to the left or right of a content block. + +```html_example +
+ + demo placeholder for media + +
+

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. +
+ + demo placeholder for media + +
+``` + +Wrap the image in a fixed-size `.image-container` to make sure the image isn't +larger than the container + +```html_example +
+ +
+ demo placeholder for media +
+
+
+

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. +

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

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.

+ + +
+ + demo placeholder for media + +
+

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. + + +
+ + demo placeholder for media + +
+

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. +
+
+
+
+ + +
+ + demo placeholder for media + +
+

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. +
+
+
+
+``` + +*/ +/*doc +--- +title: Alignment +name: media_alignment +parent: media +--- + +The images or other media can be aligned top, middle, or bottom. The default is top aligned. + +```html_example +
+ + demo placeholder for media + +
+

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. +
+
+ +
+ + demo placeholder for media + +
+

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. +
+
+ +
+ + demo placeholder for media + +
+

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. +
+
+``` + +*/ +/*doc +--- +title: Stackable +name: media_stackable +parent: media +--- + + +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. + +```html_example +
+ + demo placeholder for media + +
+

Extra-small stackable

+
+
+ +
+ + demo placeholder for media + +
+

Small stackable

+
+
+ +
+ + demo placeholder for media + +
+

Medium stackable

+
+
+ +
+ + demo placeholder for media + +
+

Large stackable

+
+
+``` + +*/ +.media { + margin-top: 15px; } + .media:first-child { + margin-top: 0; } + +.media-right, .media > .pull-right { + padding-left: 10px; } + +.media-left, .media > .pull-left { + padding-right: 10px; } + +.media-left, .media-right, .media-body { + display: table-cell; + vertical-align: top; } + +.media-middle { + vertical-align: middle; } + +.media-bottom { + vertical-align: bottom; } + +.media-heading { + margin-top: 0; + margin-bottom: 5px; } + +.media-list { + padding-left: 0; + list-style: none; } + +@media (max-width: 480px) { + .media.media-stackable-xs > .pull-left, .media.media-stackable-xs .media-left { + display: block; + float: none; + clear: both; + margin: 0 auto 10px auto !important; } + .media.media-stackable-xs > .pull-left .media-object, .media.media-stackable-xs .media-left .media-object { + margin-left: auto; + margin-right: auto; } } +@media (max-width: 768px) { + .media.media-stackable-sm > .pull-left, .media.media-stackable-sm .media-left { + display: block; + float: none; + clear: both; + margin: 0 auto 10px auto !important; } + .media.media-stackable-sm > .pull-left .media-object, .media.media-stackable-sm .media-left .media-object { + margin-left: auto; + margin-right: auto; } } +@media (max-width: 992px) { + .media.media-stackable-md > .pull-left, .media.media-stackable-md .media-left { + display: block; + float: none; + clear: both; + margin: 0 auto 10px auto !important; } + .media.media-stackable-md > .pull-left .media-object, .media.media-stackable-md .media-left .media-object { + margin-left: auto; + margin-right: auto; } } +@media (max-width: 1200px) { + .media.media-stackable-lg > .pull-left, .media.media-stackable-lg .media-left { + display: block; + float: none; + clear: both; + margin: 0 auto 10px auto !important; } + .media.media-stackable-lg > .pull-left .media-object, .media.media-stackable-lg .media-left .media-object { + margin-left: auto; + margin-right: auto; } } +.media .media-body { + width: 1000000px; } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/* Transition mixins */ +/* Button Mixins */ +.modal-open { + overflow: hidden; } + +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + -webkit-overflow-scrolling: touch; + outline: 0; } + .modal.fade .modal-dialog, .modal.modal-fade-enter .modal-dialog, .modal.modal-fade-leave .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + transition: transform 0.3s ease-out; } + .modal.in .modal-dialog, .modal.modal-fade-enter-active .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); } + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; } + +.modal-dialog { + position: relative; + width: auto; + margin: 10px; } + +.modal-content { + position: relative; + background-color: #ecefef; + border: 1px solid #999; + border: 1px solid #00776D; + border-radius: 6px; + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; + outline: 0; } + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #243641; } + .modal-backdrop.fade, .modal-backdrop.modal-fade-enter, .modal-backdrop.modal-fade-leave { + opacity: 0; + filter: alpha(opacity=0); } + .modal-backdrop.in, .modal-backdrop.modal-fade-enter-active { + opacity: 0.8; + filter: alpha(opacity=80); } + +.modal-header { + padding: 15px; + border-bottom: 1px solid #e0e4e5; + min-height: 16.5px; } + +.modal-header .close { + margin-top: -2px; } + +.modal-title { + margin: 0; + line-height: 1.5; } + +.modal-body { + position: relative; + padding: 30px; } + +.modal-footer { + padding: 30px; + text-align: right; + border-top: 1px solid #e0e4e5; } + .modal-footer:before, .modal-footer:after { + content: " "; + display: table; } + .modal-footer:after { + clear: both; } + .modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; } + .modal-footer .btn-group .btn + .btn { + margin-left: -1px; } + .modal-footer .btn-block + .btn-block { + margin-left: 0; } + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; } + +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; } + .modal-content { + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); } + .modal-sm { + width: 300px; } } + +@media (min-width: 992px) { + .modal-lg { + width: 900px; } } + +.modal-fade-enter, .modal-fade-leave { + -webkit-transition: opacity .15s linear; + transition: opacity .15s linear; + opacity: 0; } + +.modal-fade-enter-active { + opacity: 1; } + +.modal-backdrop.in.modal-backdrop-fade-enter, .modal-backdrop.modal-backdrop-fade-enter.modal-fade-enter-active, .modal-backdrop.in.modal-backdrop-fade-leave, .modal-backdrop.modal-backdrop-fade-leave.modal-fade-enter-active { + -webkit-transition: opacity .15s linear; + transition: opacity .15s linear; + opacity: 0; } +.modal-backdrop.in.modal-backdrop-fade-enter-active, .modal-backdrop.modal-backdrop-fade-enter-active.modal-fade-enter-active { + opacity: 0.8; } + +/*doc +--- +title: Modals +name: modal +categories: + - Objects + - All +--- + + + +npm install pui-css-modals --save + + + +Modals bring desired content to the foreground and de-emphasize the rest of the page. + +```html_example + + + + + +``` + +*/ +.modal .modal-dialog { + margin-top: 50px; } +.modal .modal-content { + border-radius: 0; + border-width: 0; + box-shadow: none; + -webkit-box-shadow: none; } +.modal .modal-header { + padding: 15px; } +.modal .modal-footer { + padding: 15px; + background-color: #ecefef; + text-align: right; + border-top: 0px; } + +.modal.modal-basic .modal-header { + background-color: #ecefef; } + .modal.modal-basic .modal-header .modal-title { + color: #686868; + text-transform: uppercase; + font-weight: 900; } + +/*pending +--- +title: Inline +name: modal_inline +parent: modal +--- + +```html_example +
+ + +
+``` +*/ +/* .inline-modal { */ +/* position: relative; */ +/* .inline-modal-errors { */ +/* position: absolute; */ +/* right: 0; */ +/* top: 110%; */ +/* z-index: 1029; */ +/* } */ +/* .modal-backdrop { */ +/* position: fixed; */ +/* top: 0; */ +/* right: 0; */ +/* bottom: 0; */ +/* left: 0; */ +/* } */ +/* .content { */ +/* position: relative; */ +/* } */ +/* &.editing { */ +/* h2, .h4 { */ +/* color: $gray-2; */ +/* } */ +/* .content { */ +/* z-index: 1029; // above the scrim */ +/* background-color: $blue-4; */ +/* } */ +/* .modal-backdrop { */ +/* display: block; */ +/* z-index: 1019; */ +/* } */ +/* } */ +/* &.showing { */ +/* .content { */ +/* background-color: $gray-10; */ +/* } */ +/* .modal-backdrop { */ +/* display: none; */ +/* } */ +/* } */ +/* &.saving { */ +/* .content { */ +/* background-color: $gray-10; */ +/* } */ +/* .modal-backdrop { */ +/* display: none; */ +/* } */ +/* } */ +/* > .panel-body { */ +/* min-height: 140px; */ +/* } */ +/* .animate-show { */ +/* opacity: .8; */ +/* } */ +/* .animate-show.ng-hide-add, */ +/* .animate-show.ng-hide-remove { */ +/* display: block !important; */ +/* } */ +/* .animate-show.ng-hide-add.ng-hide-add-active, */ +/* .animate-show.ng-hide-remove.ng-hide-remove-active { */ +/* -webkit-transition: all ease-out 0.1s; */ +/* transition: all ease-out 0.1s; */ +/* } */ +/* .animate-show.ng-hide { */ +/* opacity: 0; */ +/* } */ +/* } */ +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/* Transition mixins */ +/* Button Mixins */ +/*doc +--- +title: Panels +name: panel +categories: + - Objects + - All +--- + + + + +npm install pui-css-panels --save + + + + +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. + +*/ +.panel { + box-shadow: none; } + .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6 { + margin: 0; } + +.panel-title { + font-size: inherit; } + +/*doc +--- +title: Simple +name: panel_simple +parent: panel +--- + +```html_example +
+
+ Simple Panel +
+
+``` + +*/ +.panel-simple { + border: 1px solid #b4b4b4; } + +/*doc +--- +title: Basic +name: panel_basic +parent: panel +--- + +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. + +```html_example +
+
+
Basic Title
+
+
+ Basic Panel +
+
+ +
+
+ Basic Panel +
+
+``` + +*/ +.panel-basic { + border-radius: 5px; + /* Firefox 3.6 */ + /* Safari 4? Chrome 6? */ + background-clip: padding-box; + /* Firefox 4, Safari 5, Opera 10, IE 9 */ + border-bottom: 2px solid rgba(0, 0, 0, 0.07); } + +.panel-title-alt { + padding: 15px; + border-bottom: 3px solid rgba(0, 0, 0, 0.1); + font-weight: 600; + color: #243641; } + +/*doc +--- +title: Basic Alternate +name: panel_basic_alt +parent: panel +--- + +Basic alternate panels are panels with a border and shadow. You can have a panel-basic-alt with or without a title. + +```html_example +
+
+
Basic Title Alt
+
+
+ Basic Panel +
+
+ +
+
+ Basic Panel +
+
+``` + +*/ +.panel-basic-alt { + border: 1px solid #000000; + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 5px; + /* Firefox 3.6 */ + /* Safari 4? Chrome 6? */ + background-clip: padding-box; + /* Firefox 4, Safari 5, Opera 10, IE 9 */ + border-bottom: 2px solid rgba(0, 0, 0, 0.1); + background-color: white; } + +/*doc +--- +title: Flex (Panel with Footer) +name: panel_flex +parent: panel +--- + +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. + +```html_example +
+
Body Content
+ +
+``` + +
+
+ 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. +

+
+ +```html_example + +``` +*/ +.panel-flex { + display: block; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } + .panel-flex .panel-body { + -webkit-box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + -webkit-align-self: auto; + -ms-flex-item-align: auto; + align-self: auto; } + .panel-flex .panel-footer { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-align-self: auto; + -ms-flex-item-align: auto; + align-self: auto; } + +/*doc +--- +title: Panel Tile +name: panel_tile +parent: panel +--- + +Tile panels extend the behavior of flex panels. They provide an animated footer on hover, at the bottom of a fixed-height panel. + +```html_example + +``` + +*/ +.panel-tile { + border-bottom: 4px solid rgba(0, 0, 0, 0.07); + overflow: hidden; + color: #686868; + -webkit-transition: border 300ms ease-out; + transition: border 300ms ease-out; + /* Firefox 3.6 */ + /* Safari 4? Chrome 6? */ + background-clip: padding-box; + /* Firefox 4, Safari 5, Opera 10, IE 9 */ } + .panel-tile .panel-body { + -ms-flex: 1 0 auto; + padding: 29px 29px 0 29px; + -webkit-transition: padding-top 300ms ease-out, padding-bottom 300ms ease-out; + transition: padding-top 300ms ease-out, padding-bottom 300ms ease-out; } + .panel-tile .panel-footer { + color: #fff; + opacity: 0; + text-transform: uppercase; + text-align: center; + font-size: 12px; + border-top: none; + padding: 4px 15px; + background: transparent; + -webkit-transition: all 300ms ease-out; + transition: all 300ms ease-out; } + .panel-tile:hover, .panel-tile:focus { + -webkit-transition: all 300ms ease-out; + transition: all 300ms ease-out; + border-width: 1px; + box-shadow: none; + background-color: #F8F8F8; + color: #686868; + cursor: pointer; + outline: none; } + .panel-tile:hover .panel-body, .panel-tile:focus .panel-body { + padding-top: 18px; + padding-bottom: 11px; } + .panel-tile:hover .panel-footer, .panel-tile:focus .panel-footer { + opacity: 1; + background: #1B78B3; + color: #F8F8F8; + font-weight: 900; } + +/*doc +--- +title: Scrollable +name: panel_scrollable +parent: panel +--- + +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`. + +```html_example +
+
+

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.

+
+
+``` + +*/ +.panel-scrollable { + max-height: 183px; + overflow-y: overlay; + overflow-x: hidden; } + +/*doc +--- +title: Highlight +name: panel_highlight +parent: panel +--- + +This panel is used to highlight more important parts of the page. + +```html_example +
+
+ Not Hoverable (use when the panel has no associated action, for instance if the action is disabled due to lack of permissions) +
+
+``` + +*/ +.panel-highlight, .panel-clickable-alt { + background-color: #F8F8F8; + border-radius: 10px; + box-shadow: 0 4px 0 0 rgba(0, 0, 0, 0.07); } + .panel-highlight.title-panel h1, .title-panel.panel-clickable-alt h1 { + overflow: hidden; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + +/*doc +--- +title: Alternate +name: panel_alt +parent: panel +--- + +Alternate panels can be in a default, off, or danger state. + +```html_example_table +
+
+ Alternate Panel +
+
+ +
+
+ Danger alternate panel +
+
+ +
+
+ Stopped alternate panel +
+
+ +
+
+ Off alternate panel +
+
+ +
+
+ Editing alternate panel +
+
+``` + +*/ +.panel-alt.panel-editing { + background-color: #ecefef; } +.panel-alt.panel-empty { + background-color: #000000; + background-color: rgba(0, 0, 0, 0.07); } + .panel-alt.panel-empty:hover { + -webkit-transition: all 300ms ease-out; + transition: all 300ms ease-out; + background-color: #ecefef; + border-bottom: 4px solid rgba(0, 0, 0, 0.14); } +.panel-alt .aligner { + min-height: 190px; } +.panel-alt .panel-basic { + min-height: 88px; } +.panel-alt.panel-danger, .panel-alt.panel-off { + position: relative; } + .panel-alt.panel-danger:before, .panel-alt.panel-off:before { + content: ""; + position: absolute; + top: 0%; + right: 0%; + width: 0px; + height: 0px; + border-left: 25px solid transparent; } +.panel-alt.panel-danger:before { + border-top: 25px solid #B31B22; } +.panel-alt.panel-off:before { + border-top: 25px solid #8d8e8e; } + +/*doc +--- +title: Shadow +name: panel_shadow +parent: panel +--- + +Shadow panels add a bottom shadow to the panel. + +```html_example_table +
+
+ Shadow Panel +
+
+ +
+
+ Shadow Panel +
+
+ +
+
+ Shadow Panel +
+
+ +
+
+ Shadow Panel +
+
+``` + +*/ +.panel-shadow, .panel-shadow-1, .panel-shadow-2, .panel-shadow-3, .panel-shadow-4 { + border: none; + /* Firefox 3.6 */ + /* Safari 4? Chrome 6? */ + background-clip: padding-box; + /* Firefox 4, Safari 5, Opera 10, IE 9 */ } + +.panel-shadow-1 { + box-shadow: 0px 4px rgba(0, 0, 0, 0.3); } + +.panel-shadow-2 { + box-shadow: 0px 4px rgba(0, 0, 0, 0.14); } + +.panel-shadow-3 { + box-shadow: 0px 4px rgba(0, 0, 0, 0.07); } + +.panel-shadow-4 { + box-shadow: 0px 4px rgba(0, 0, 0, 0.035); } + +/*doc +--- +title: Card +name: panel_card +parent: panel +--- + +Using panels with [card lists][list_cards] makes any `.panel-body` have a minimum "card" height. + +```html_example + +``` + +*/ +/*doc +--- +title: Clickable +name: panel_clickable +parent: panel +--- + +These panels lighten on hover to indicate that they are clickable. +Please use them when a click on the panel triggers an action. + +```html_example_table +
+
+ Panel Clickable +
+
+ +
+
+ Panel Clickable Alt +
+
+``` + +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. + + +```html_example_table + +
+

+ hover-target-1 - default text color => link color +

+
+
+ + +
+

+ hover-target-2 - light gray text => default text color +

+
+
+ + +
+

+ hover-target-3 - $gray-9 background => white background +

+
+
+``` + +*/ +.panel-clickable, .panel-clickable-alt { + display: block; + background-color: #ecefef; + cursor: pointer; + -webkit-transition: all 300ms ease-out; + transition: all 300ms ease-out; } + .panel-clickable .hover-target-1, .panel-clickable-alt .hover-target-1, .panel-clickable .hover-target-2, .panel-clickable-alt .hover-target-2, .panel-clickable .hover-target-3, .panel-clickable-alt .hover-target-3 { + -webkit-transition: all 300ms ease-out; + transition: all 300ms ease-out; } + .panel-clickable .hover-target-1, .panel-clickable-alt .hover-target-1 { + color: #686868; } + .panel-clickable .hover-target-2, .panel-clickable-alt .hover-target-2 { + color: #b4b4b4; } + .panel-clickable .hover-target-3, .panel-clickable-alt .hover-target-3 { + background-color: #F8F8F8; } + .panel-clickable:hover, .panel-clickable-alt:hover { + background-color: #F8F8F8; } + .panel-clickable:hover .hover-target-1, .panel-clickable-alt:hover .hover-target-1 { + color: #1B78B3; } + .panel-clickable:hover .hover-target-2, .panel-clickable-alt:hover .hover-target-2 { + color: #686868; } + .panel-clickable:hover .hover-target-3, .panel-clickable-alt:hover .hover-target-3 { + background-color: white; } + +.panel-clickable-alt { + background-color: #F8F8F8; } + .panel-clickable-alt:hover { + background-color: white; + box-shadow: 0 4px 0 0 rgba(0, 0, 0, 0.14); } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/*doc +--- +title: Panes +name: pane +categories: + - Layout + - All +--- + + + +npm install pui-css-panes --save + + + +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](/pane.html). + +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. + +```html_example +
+
+

This is a pane

+
+
+ +``` + +```html_example +
+
+

This is a pane

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

This is another pane

+
+
+ +``` + +*/ +.pane > .container { + padding-top: 35px; + padding-bottom: 35px; } + +.pane-offset .pane-image { + text-align: center; + margin-bottom: -70px; } + .pane-offset .pane-image > img { + display: inline-block; } +.pane-offset + .pane .container { + padding-top: 70px; } + +@media (min-width: 768px) { + .pane > .container { + padding-top: 45px; + padding-bottom: 45px; } + .pane-offset .pane-image { + margin-bottom: -90px; } + .pane-offset + .pane .container { + padding-top: 90px; } } + +@media (min-width: 992px) { + .pane > .container { + padding-top: 60px; + padding-bottom: 60px; } + .pane-offset .pane-image { + margin-bottom: -120px; } + .pane-offset + .pane .container { + padding-top: 120px; } } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/*doc +--- +title: Progress Bars +name: progress_bar +categories: + - Objects + - All +--- + + + +npm install pui-css-progress-bars --save + + + + +This section contains static progress bar styles. + + +```html_example_table +
+
+
+ 0% +
+
+
+

+ 0 MB of 100 MB Used +

+ +
+
+
+ 3% +
+
+
+

+ 3 MB of 100 MB Used +

+ +
+
+
+ 9% +
+
+
+

+ 9 MB of 100 MB Used +

+ +
+
+
+ 60% +
+
+
+

+ 60 MB of 100 MB Used +

+ +
+
+
+ 90% +
+
+
+

+ 90 MB of 100 MB Used +

+``` +*/ +.progress { + margin-bottom: 0; + border-radius: 0; + background-color: #000000; + background-color: rgba(0, 0, 0, 0.07); + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; } + +.progress-bar { + background: #b4b4b4; + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + text-align: left; } + .progress-bar .label { + margin-left: 7px; + font-size: 14px; + font-weight: 900; } + +.progress-bar[aria-valuenow="1"], .progress-bar[aria-valuenow="2"] { + min-width: 3%; } + +.progress-bar[aria-valuenow="0"] { + color: #686868; + min-width: 3%; + background: transparent; + box-shadow: none; } + +.progress-bar[aria-valuenow^="9"]:not([aria-valuenow="9"]), .progress-bar[aria-valuenow="100"] { + background: #B31B22; } + +/*pending +--- +title: Animated Progress Bar +name: animated_progress_bar +categories: + - Objects + - All +--- + +This is an animated progress bar. See [progress bar][progress_bar] to see the static version. + + +Sometimes you will need to graphically display percent used (e.g. quota usage) or progress (e.g. profile completion). +In the html, the width should be set to match the `aria-valuenow` if the progress bar isn't animated. If it is, it should be set to 0% initially. + +```html_example +
+
+
+ 0% +
+
+
+

+ 0 MB of 100 MB Used +

+ +
+
+
+ 60% +
+
+
+

+ 60 MB of 100 MB Used +

+ +
+
+
+ 93% +
+
+
+

+ 93 MB of 100 MB Used +

+``` +*/ +.progress-bar-animated { + -webkit-transition: width 1s ease-in-out; + transition: width 2s ease-in-out; } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/*doc +--- +title: Ribbons +name: ribbon +categories: + - Elements + - All +--- + + + +npm install pui-css-ribbons --save + + + +Ribbons should be used to call out access, status, environment, etc. + +```html_example_table +
British
+For British eyes only + +
Pivotal
+Wow this ribbon is so inline +``` +*/ +.ribbon { + position: relative; + display: inline-block; + padding: 2px 10px; + margin-left: 22px; + margin-right: 22px; + color: white; + font-size: 12px; + font-weight: bold; + text-align: center; + text-transform: uppercase; + background-color: #b4b4b4; } + .ribbon:before, .ribbon:after { + content: ""; + position: absolute; + display: block; + top: 0; + border-color: #b4b4b4; + border-width: 11px; + border-style: solid; } + .ribbon:before { + border-left-color: transparent; + left: -22px; } + .ribbon:after { + border-right-color: transparent; + right: -22px; } + +.ribbon-primary { + background-color: #00A79D; } + .ribbon-primary:before { + border-color: #00A79D; + border-left-color: transparent; } + .ribbon-primary:after { + border-color: #00A79D; + border-right-color: transparent; } + +/*doc +--- +title: Banner +name: ribbon_banner +parent: ribbon +--- + +You can use a banner ribbon to let the team know which environment they're +working on. + +```html_wrapped_example +
+ Acceptance +
+``` + +*/ +.ribbon-banner { + position: fixed; + top: 20px; + left: 0; + padding: 4px 18px 4px 24px; + margin-left: 0; + margin-right: 32px; + color: white; + font-size: 16px; + font-weight: bold; + text-align: center; + text-transform: uppercase; + background-color: #99171D; } + .ribbon-banner:after { + content: ""; + position: absolute; + display: block; + top: 0; + right: -32px; + border-style: solid; + border-width: 16px; + border-color: #99171D; + border-right-color: transparent; } + +/*doc +--- +title: Spinners +name: iconography_spinner +parent: iconography +--- + + + +npm install pui-css-spinners --save + + + + +Spinners are used to show that some action is in progress. Spinners come in two sizes: large and small. + +```html_example_table +
+ +
+ +
+ +
+``` + +*/ +.spinner-lg { + margin-top: 64px; + text-align: center; } + .spinner-lg .fa-spin { + font-size: 48px; + opacity: 0.5; } + +.spinner-sm { + text-align: center; + min-height: 320px; } + .spinner-sm .fa-spin { + font-size: 28px; } + .spinner-sm.out { + opacity: 0.2; } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/* Transition mixins */ +/* Button Mixins */ +/*doc +--- +title: Tables +name: table +categories: + - Objects + - All +--- + + + +npm install pui-css-tables --save + + + + + +Class | Description +--------------------- | ----------------- +`.table` | Base table class, applies spacing and cross browser support. Unfortunately inherits some undesirable styles from bootstrap. +`.table-hover` | Adds a light blue background color to table rows when the user hovers over them (use to indicate clickability) +`.table-striped` | Applies zebra striping to a table. +`.table-light` | Lightens the table background. + +*/ +/*pending +--- +title: JS Tables +name: table_js +categories: + - Objects + - All +--- + +This section contains different table behaviors. See [tables][table] to see different table styles. +*/ +.table-hack .thead, .table-hack .tbody { + padding: 0 15px; } +.table-hack .th { + padding: 8px 15px; } +.table-hack .td { + padding: 20px 15px; } + +/*doc +--- +title: Data +name: table_data +parent: table +--- + +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. + +```html_example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service InstanceService PlanBound Apps
oracle-db-sctOracle DB12
oracle-db-sctOracle DB12
oracle-db-sctOracle DB12
oracle-db-sctOracle DB12
+``` + +*/ +.table-data { + border: none; } + .table-data tbody tr, .table-data tbody .tr, .table-data thead tr, .table-data thead .tr, .table-data .tbody tr, .table-data .tbody .tr, .table-data .thead tr, .table-data .thead .tr { + border-bottom: 1px solid #d4d9d9; } + .table-data tbody tr th, .table-data tbody tr .th, .table-data tbody .tr th, .table-data tbody .tr .th, .table-data thead tr th, .table-data thead tr .th, .table-data thead .tr th, .table-data thead .tr .th, .table-data .tbody tr th, .table-data .tbody tr .th, .table-data .tbody .tr th, .table-data .tbody .tr .th, .table-data .thead tr th, .table-data .thead tr .th, .table-data .thead .tr th, .table-data .thead .tr .th { + border-bottom: none; + border-color: #d4d9d9; + border-right: 1px solid #d4d9d9; + padding: 15px 10px; + font-size: 13px; + font-weight: 900; + letter-spacing: 0.3px; + background-color: #ecefef; } + .table-data tbody tr th:first-child, .table-data tbody tr .th:first-child, .table-data tbody .tr th:first-child, .table-data tbody .tr .th:first-child, .table-data thead tr th:first-child, .table-data thead tr .th:first-child, .table-data thead .tr th:first-child, .table-data thead .tr .th:first-child, .table-data .tbody tr th:first-child, .table-data .tbody tr .th:first-child, .table-data .tbody .tr th:first-child, .table-data .tbody .tr .th:first-child, .table-data .thead tr th:first-child, .table-data .thead tr .th:first-child, .table-data .thead .tr th:first-child, .table-data .thead .tr .th:first-child { + border-bottom: none; } + .table-data tbody tr th:last-child, .table-data tbody tr .th:last-child, .table-data tbody .tr th:last-child, .table-data tbody .tr .th:last-child, .table-data thead tr th:last-child, .table-data thead tr .th:last-child, .table-data thead .tr th:last-child, .table-data thead .tr .th:last-child, .table-data .tbody tr th:last-child, .table-data .tbody tr .th:last-child, .table-data .tbody .tr th:last-child, .table-data .tbody .tr .th:last-child, .table-data .thead tr th:last-child, .table-data .thead tr .th:last-child, .table-data .thead .tr th:last-child, .table-data .thead .tr .th:last-child { + border: none; } + .table-data tbody tr td, .table-data tbody tr .td, .table-data tbody .tr td, .table-data tbody .tr .td, .table-data thead tr td, .table-data thead tr .td, .table-data thead .tr td, .table-data thead .tr .td, .table-data .tbody tr td, .table-data .tbody tr .td, .table-data .tbody .tr td, .table-data .tbody .tr .td, .table-data .thead tr td, .table-data .thead tr .td, .table-data .thead .tr td, .table-data .thead .tr .td { + padding: 10px 10px; + border: none; } + .table-data tbody tr, .table-data tbody .tr, .table-data .tbody tr, .table-data .tbody .tr { + background-color: #ecefef; } + .table-data tbody tr:hover, .table-data tbody .tr:hover, .table-data .tbody tr:hover, .table-data .tbody .tr:hover { + -webkit-transition: background-color 300ms ease-out; + transition: background-color 300ms ease-out; + background-color: #F8F8F8; } + .table-data tbody tr:last-child, .table-data tbody .tr:last-child, .table-data .tbody tr:last-child, .table-data .tbody .tr:last-child { + border-bottom: 2px solid rgba(0, 0, 0, 0.07); } + .table-data > thead > tr, .table-data > .thead > .tr { + text-transform: uppercase; } + .table-data > thead > tr > th, .table-data > thead > tr > .th, .table-data > .thead > .tr > th, .table-data > .thead > .tr > .th { + color: #686868; } + +.table-light tbody tr, .table-light tbody .tr, .table-light thead tr, .table-light thead .tr, .table-light .tbody tr, .table-light .tbody .tr, .table-light .thead tr, .table-light .thead .tr { + background-color: #F8F8F8; } + .table-light tbody tr th, .table-light tbody tr .th, .table-light tbody tr td, .table-light tbody tr .td, .table-light tbody .tr th, .table-light tbody .tr .th, .table-light tbody .tr td, .table-light tbody .tr .td, .table-light thead tr th, .table-light thead tr .th, .table-light thead tr td, .table-light thead tr .td, .table-light thead .tr th, .table-light thead .tr .th, .table-light thead .tr td, .table-light thead .tr .td, .table-light .tbody tr th, .table-light .tbody tr .th, .table-light .tbody tr td, .table-light .tbody tr .td, .table-light .tbody .tr th, .table-light .tbody .tr .th, .table-light .tbody .tr td, .table-light .tbody .tr .td, .table-light .thead tr th, .table-light .thead tr .th, .table-light .thead tr td, .table-light .thead tr .td, .table-light .thead .tr th, .table-light .thead .tr .th, .table-light .thead .tr td, .table-light .thead .tr .td { + background-color: #F8F8F8; } + .table-light tbody tr td, .table-light tbody tr .td, .table-light tbody .tr td, .table-light tbody .tr .td, .table-light thead tr td, .table-light thead tr .td, .table-light thead .tr td, .table-light thead .tr .td, .table-light .tbody tr td, .table-light .tbody tr .td, .table-light .tbody .tr td, .table-light .tbody .tr .td, .table-light .thead tr td, .table-light .thead tr .td, .table-light .thead .tr td, .table-light .thead .tr .td { + border: none; } + +/*doc +--- +title: Key-Value +name: table_key_value +parent: table +--- + +This table is used when the table headings are on the left. It looks better when you +specify column widths for the th/tds. + + +```html_example + + + + + + + + + + + + + + + + + + + + + + + +
Emailjoe@example.com
Current Password*******
First NameJoe
Last NameBobs
Phone415-555-0000
+``` + +*/ +.table-key-value { + table-layout: fixed; } + .table-key-value tbody tr th, .table-key-value tbody tr .th, .table-key-value tbody .tr th, .table-key-value tbody .tr .th, .table-key-value thead tr th, .table-key-value thead tr .th, .table-key-value thead .tr th, .table-key-value thead .tr .th, .table-key-value .tbody tr th, .table-key-value .tbody tr .th, .table-key-value .tbody .tr th, .table-key-value .tbody .tr .th, .table-key-value .thead tr th, .table-key-value .thead tr .th, .table-key-value .thead .tr th, .table-key-value .thead .tr .th { + border: none; } + .table-key-value tbody tr:last-child { + border: none; } + .table-key-value tbody tr th, .table-key-value tbody tr td { + padding: 0; + margin: 0; } + .table-key-value tbody tr th { + text-transform: uppercase; + font-weight: 800; + text-align: left; + color: #b4b4b4; } + .table-key-value tbody tr td { + text-align: left; } + .table-key-value tbody tr td:last-child { + border: none; } + +/*pending +--- +title: Clickable +name: table_clickable +parent: table_js +--- + +Use this style of table when rows are clickable. It is possible to prevent a user from clicking on a row w/ a message by adding data-prevent-click and data-prevent-click-message to the row. (N.B.: This does not actually add any sort of permissions to the URL in question). +We are making the assumption here that table-hover will *only* be used if the table is clickable, because we add a pointer. + + + +```html_example + + + + + + + + + + + + + + + + + + + + + + + + +
StyleClickability
Forbidden LinksHigh + +
ButtonsMedium + +
TypographyLow + +
+``` + +*/ +.table-hover td { + cursor: pointer; } + +.table-sortable th.sorted-desc { + color: #232B2F; } + .table-sortable th.sorted-desc:after { + content: "\f0d7"; + color: #232B2F; } +.table-sortable .sortable, .table-sortable [sortable] { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; } + .table-sortable .sortable:after, .table-sortable [sortable]:after { + margin-left: 4px; + content: ""; + font-weight: 200; + font-family: FontAwesome; } + .table-sortable .sortable:hover, .table-sortable [sortable]:hover { + background-color: white; + -webkit-transition: background-color 300ms ease-out; + transition: background-color 300ms ease-out; } +.table-sortable th.sorted-none:hover:after { + visibility: visible; } +.table-sortable th.sorted-none:after { + content: "\f0dc"; + color: #d4d9d9; + visibility: hidden; } +.table-sortable th.sorted-asc { + color: #232B2F; } + .table-sortable th.sorted-asc:after { + content: "\f0d8"; + color: #232B2F; } + +/*pending +--- +title: Inline Addable +name: table_inline_addable +parent: table_js +--- + +```html_example +
+

+ + Add a Space + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Name + + Total Apps + + Running Apps + + Stopped Apps + + Down Apps + + Service Instance + + Quota +
+ Name +
+
+
+ +
+
+ + Cancel +
+ +
+
+
+ {{space.name}} +
{{space.totalApps}}{{space.runningApps}}{{space.stoppedApps}}{{space.downApps}}{{space.serviceInstances}}{{space.quota}}Delete
+
+``` +*/ +.editing .state-adding-trigger { + visibility: hidden; } +.editing .table-addable .thead-state-viewing, .editing .table-addable .td-state-viewing { + display: none; } +.editing .table-addable td { + display: none; } +.editing .table-addable td:first-child { + display: table-cell; } +.editing .table-addable thead.state-editing-show { + display: table-header-group; } +.editing .table-addable tr.state-editing-show { + display: table-row; } + +.table-addable { + table-layout: fixed; } + .table-addable .state-editing-show { + display: none; } + .table-addable .state-adding-item-show { + display: none; } + .table-addable .inline-table-item.ng-enter.ng-enter-active { + opacity: 1; } + .table-addable .inline-table-item.ng-enter.ng-enter-active .addedConfirmation { + display: table-cell; } + .table-addable .inline-table-item .addedConfirmation { + color: forestgreen; } + .table-addable .fa-check-success { + color: #025A53; + font-size: 12px; + margin-right: 5px; + -webkit-transition: opacity 300ms ease-out; + transition: opacity 300ms ease-out; + opacity: 1; } + .table-addable .fa-check-success.ng-hide { + display: inline-block !important; + opacity: 0; } + .table-addable .saveRequested { + opacity: 0.3; } + .table-addable .deleteRequested { + -webkit-transition: all ease-out .2s; + transition: all ease-out .2s; + color: #b4b4b4; } + .table-addable .ng-leave { + -webkit-transition: all ease-out .5s; + transition: all ease-out .5s; } + .table-addable .ng-leave.ng-leave-active { + color: #ecefef; } + .table-addable .saved { + opacity: 1; + -webkit-transition: all 300ms ease-out; + transition: all 300ms ease-out; } + +/*pending +--- +title: Kitchen Sink +name: table_kitchen_sink +parent: table_js +--- + +Example of composed behaviors that operate on the same table. + +```html_example +
+

+ + Add a Space + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTotal AppsRunning AppsStopped AppsDown AppsService InstancesQuota
+ Name +
+
+
+ +
+
+ + Cancel +
+ +
+
+
+ {{space.name}} +
{{space.totalApps}}{{space.runningApps}}{{space.stoppedApps}}{{space.downApps}}{{space.serviceInstances}}{{space.quota}}
+
+``` + +*/ +/*doc +--- +title: Scrollable +name: scrollable_table +parent: table +--- + +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 sizes | Height +---------------------- | --------- +default | 183px +`.table-scrollable-sm` | 300px +`.table-scrollable-md` | 600px +`.table-scrollable-lg` | 900px + +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. +

+
+ +```html_example +
+
+ + + + + + + + + + + +
#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
+
+
+``` +*/ +.table-scrollable { + border: 1px solid #e0e4e5; } + .table-scrollable table { + table-layout: fixed; } + .table-scrollable table tr:last-child { + border-bottom: none; } + .table-scrollable .table { + margin: 0; } + .table-scrollable .table-scrollable-header { + border-bottom: 2px solid #e0e4e5; } + .table-scrollable .table-scrollable-body { + border-top: 3px solid #ecefef; + max-height: 183px; + overflow-y: auto; + overflow-x: hidden; } + .table-scrollable.table-scrollable-sm .table-scrollable-body { + max-height: 300px; } + .table-scrollable.table-scrollable-md .table-scrollable-body { + max-height: 600px; } + .table-scrollable.table-scrollable-lg .table-scrollable-body { + max-height: 900px; } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/* Transition mixins */ +/* Button Mixins */ +/*doc +--- +title: Tabs +name: tab +categories: + - Objects + - All +--- + + + +npm install pui-css-tabs --save + + + + +You can activate a tab or pill navigation without writing any JavaScript by simply specifying `data-toggle="tab"` on an element. + +*/ +/*doc +--- +title: Highlight +name: tab_highlight +parent: tab +--- + +```html_example +
+
+ +
+

Plan Features

+
+
Content 1
+
Content 2
+
Content 3
+
Content 4
+
+
+
+
+``` + +*/ +.tab-highlight .nav > li { + position: relative; + overflow: hidden; } + .tab-highlight .nav > li + li { + margin-top: -2px; } + .tab-highlight .nav > li > a { + padding: 15px; + color: #1B78B3; + background-color: #e0e4e5; + -webkit-transition: background-color 150ms ease-out; + transition: background-color 150ms ease-out; } + .tab-highlight .nav > li > a:hover { + z-index: 100; + background-color: #ecefef; } +.tab-highlight .nav > li.active a { + z-index: 50; } +.tab-highlight .nav > li.active > a, .tab-highlight .nav > li.active > a:hover { + color: #686868; + background-color: #ecefef; + border-width: 0; + cursor: default; } +.tab-highlight .nav .tab-title { + font-size: 16px; } +.tab-highlight .tab-content { + border-top: 2px solid #ecefef; + padding: 0; + margin-left: -20px; } + +/*doc +--- +title: Simple +name: tab_simple +parent: tab +--- + +```html_example +
+ + +
+
Spaces Content
+
Domains Content
+
Members Content
+
+
+``` + +*/ +.tab-simple { + background-color: #e0e4e5; + position: relative; } + .tab-simple .nav.nav-tabs { + border-bottom: 3px solid rgba(0, 0, 0, 0.07); + border-top: 1px solid #e0e4e5; + background-color: #ecefef; + /* Firefox 3.6 */ + /* Safari 4? Chrome 6? */ + background-clip: padding-box; + /* Firefox 4, Safari 5, Opera 10, IE 9 */ } + .tab-simple .nav > li { + border-right: 1px solid #e0e4e5; } + .tab-simple .nav > li > a { + margin-right: 0; + border: 0; + border-radius: 0; + padding: 10px 19px 13px 19px; + color: #1B78B3; + font-weight: 600; + font-size: 16px; } + .tab-simple .nav > li > a:hover { + border: 0; } + .tab-simple .nav > li:hover { + cursor: pointer; + -webkit-transition: all 300ms ease-out; + transition: all 300ms ease-out; } + .tab-simple .nav > li:hover > a { + background-color: #F8F8F8; } + .tab-simple .nav > li.active { + margin-bottom: -3px; + border-top: 3px solid rgba(0, 0, 0, 0.07); + background-color: #e0e4e5; + cursor: default; + border-right: 0; + -webkit-transition: all 0ms ease-out; + transition: all 0ms ease-out; } + .tab-simple .nav > li.active > a { + border: 0; + margin: -3px 0 3px 0; + color: #243641; + background-color: transparent; } + .tab-simple .tabs-action { + padding: 14px 16px; + position: absolute; + right: 0; } + +.tab-content { + padding: 20px; } + +/*doc +--- +title: Simple Alt +name: tab_simple_alt +parent: tab +--- + +You do not need the `.panel` to wrap around `.tab-simple-alt`. We have it there to demonstrate the interaction on a neutral background. + +```html_example +
+
+ +
+
Dashboard Content
+
Notifications Content
+
EULA Content
+
+
+
+``` + +*/ +.tab-simple-alt { + position: relative; } + .tab-simple-alt .nav { + border-bottom: none; } + .tab-simple-alt .nav > li > a { + margin-right: 0; + border: 0; + border-radius: 0; + padding: 10px 19px 13px 19px; + color: #1B78B3; + font-weight: 600; + font-size: 16px; } + .tab-simple-alt .nav > li > a:hover, .tab-simple-alt .nav > li > a:focus { + border: 0; } + .tab-simple-alt .nav > li:hover { + cursor: pointer; + -webkit-transition: all 300ms ease-out; + transition: all 300ms ease-out; } + .tab-simple-alt .nav > li:hover > a { + background-color: #F8F8F8; } + .tab-simple-alt .nav > li.active { + border-top: 2px solid #00A79D; + background-color: white; + cursor: default; + border-right: 0; + -webkit-transition: all 0ms ease-out; + transition: all 0ms ease-out; } + .tab-simple-alt .nav > li.active > a { + color: #243641; + background-color: transparent; } + .tab-simple-alt .tabs-action { + padding: 14px 16px; + position: absolute; + right: 0; } + .tab-simple-alt .tab-content { + background-color: white; } + +/*doc +--- +title: Responsive +name: tab_responsive +parent: tab +--- + +```html_example +
+
+
+ +
+ +
+
    +
  • + meep +
  • +
  • Content 1
  • +
  • + foo +
  • +
  • Content 2
  • +
  • + foo +
  • +
  • Content 3
  • +
  • + foo +
  • +
  • Content 4
  • +
+
+
+
+``` + +*/ +.tab-responsive .tab-content { + padding-left: 0; + list-style: none; } +.tab-responsive a[data-toggle="tab"] { + padding: 8px 10px; + color: #686868; + margin: 5px 0; + border-radius: 6px; + -webkit-transition: all 300ms ease-out; + transition: all 300ms ease-out; } +.tab-responsive .active a[data-toggle="tab"], .tab-responsive a[data-toggle="tab"]:hover, .tab-responsive a[data-toggle="tab"]:focus { + background-color: #000000; + background-color: rgba(0, 0, 0, 0.035); + color: #00776D; } +@media (max-width: 768px) { + .tab-responsive a[data-toggle="tab"] { + background-color: #000000; + background-color: rgba(0, 0, 0, 0.035); + color: #00776D; } + .tab-responsive .tab-pane { + padding: 15px; } } + +.tab-left .tab-content { + padding-left: 0; + list-style: none; } +.tab-left .nav a { + padding: 8px 10px; + color: #686868; + margin: 5px 0; + border-radius: 6px; + -webkit-transition: all 300ms ease-out; + transition: all 300ms ease-out; } +.tab-left .nav .active a, .tab-left .nav a:hover, .tab-left .nav a:focus { + background-color: #000000; + background-color: rgba(0, 0, 0, 0.035); + color: #00776D; } + +/*doc +--- +title: Image +name: tab_image +parent: tab +--- + +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. + +```html_example +
+ +
+
Agility Content
+
Choice Content
+
Open Source
+
+
+ +``` +*/ +.tabs-images .nav-tabs-images { + text-align: center; } + .tabs-images .nav-tabs-images li a[data-toggle=tab] { + display: inline-block; + width: 130px; + height: 130px; + margin: 0 30px; + box-shadow: 0 2px 0 rgba(211, 217, 217, 0.5); + background-color: #e0e4e5; + border-radius: 130px; + -webkit-transition: all 300ms ease; + transition: all 300ms ease; + color: #b4b4b4; } + .tabs-images .nav-tabs-images li a[data-toggle=tab]:hover, .tabs-images .nav-tabs-images li a[data-toggle=tab]:focus, .tabs-images .nav-tabs-images li a[data-toggle=tab].disabled, .tabs-images .nav-tabs-images li a[data-toggle=tab][disabled], fieldset[disabled] .tabs-images .nav-tabs-images li a[data-toggle=tab] { + box-shadow: 0 2px 0 rgba(211, 217, 217, 0.5); } + .tabs-images .nav-tabs-images li a[data-toggle=tab]:focus { + box-shadow: 0 2px 0 rgba(211, 217, 217, 0.5); } + .tabs-images .nav-tabs-images li a[data-toggle=tab]:active, .tabs-images .nav-tabs-images li a[data-toggle=tab].active { + box-shadow: none; } + .tabs-images .nav-tabs-images li a[data-toggle=tab] .icon-svg .icon { + fill: currentColor; } +.tabs-images .nav-tabs-images li.active a, .tabs-images .nav-tabs-images li:hover a, .tabs-images .nav-tabs-images li:focus a, .tabs-images .nav-tabs-images li:active a { + background-color: #025A53; + color: white; } + +.tab-simple-small-screen .panel, .tab-simple-alt-small-screen .panel, .tab-left-small-screen .panel { + border: none; } +.tab-simple-small-screen .panel-heading, .tab-simple-alt-small-screen .panel-heading, .tab-left-small-screen .panel-heading { + padding: 0; } +.tab-simple-small-screen .panel-title, .tab-simple-alt-small-screen .panel-title, .tab-left-small-screen .panel-title { + padding: 0; } +.tab-simple-small-screen .panel-title a, .tab-simple-alt-small-screen .panel-title a, .tab-left-small-screen .panel-title a { + padding: 11px 10px; + color: #686868; + border-radius: 6px; + -webkit-transition: all 300ms ease-out; + transition: all 300ms ease-out; } +.tab-simple-small-screen .panel-title a[aria-expanded=true], .tab-simple-small-screen .panel-title a:hover, .tab-simple-small-screen .panel-title a:focus, .tab-simple-alt-small-screen .panel-title a[aria-expanded=true], .tab-simple-alt-small-screen .panel-title a:hover, .tab-simple-alt-small-screen .panel-title a:focus, .tab-left-small-screen .panel-title a[aria-expanded=true], .tab-left-small-screen .panel-title a:hover, .tab-left-small-screen .panel-title a:focus { + background-color: #000000; + background-color: rgba(0, 0, 0, 0.035); + color: #00776D; } +.tab-simple-small-screen .panel-title a, .tab-simple-alt-small-screen .panel-title a, .tab-left-small-screen .panel-title a { + background-color: #000000; + background-color: rgba(0, 0, 0, 0.035); + color: #00776D; } +.tab-simple-small-screen .panel-body, .tab-simple-alt-small-screen .panel-body, .tab-left-small-screen .panel-body { + padding: 15px; } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +/* Transition mixins */ +/* Button Mixins */ +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-family: 'Source Sans Pro', 'SourceSansPro', sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 14px; + opacity: 0; + filter: alpha(opacity=0); } + .tooltip.in { + opacity: 1; + filter: alpha(opacity=100); } + .tooltip.top { + margin-top: -3px; + padding: 5px 0; } + .tooltip.right { + margin-left: 3px; + padding: 0 5px; } + .tooltip.bottom { + margin-top: 3px; + padding: 5px 0; } + .tooltip.left { + margin-left: -3px; + padding: 0 5px; } + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ecefef; + text-align: center; + background-color: #424242; + border-radius: 4px; } + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; } + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #424242; } +.tooltip.top-left .tooltip-arrow { + bottom: 0; + right: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #424242; } +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #424242; } +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #424242; } +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #424242; } +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #424242; } +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #424242; } +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #424242; } + +/*doc +--- +title: Tooltip +name: tooltip +categories: + - Objects + - All +--- + + + +npm install pui-css-tooltips --save + + + + +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(); +

+
+ +```html_example +

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

+ +

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

+ +

+ +

+ +

+ +

+``` + +```js_example +$('#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. +

+
+ +```html_example +
+ +
+``` + +```js_example +$('#disabled-button-with-tooltip').tooltip(); +``` + +*/ +.button-with-tooltip-wrapper { + display: inline-block; } + +.overlay-trigger { + color: #1B78B3; + -webkit-transition: all 300ms ease-out; + transition: all 300ms ease-out; } + .overlay-trigger:hover, .overlay-trigger:focus { + cursor: pointer; + text-decoration: none; + color: #1f8ace; } + .overlay-trigger:active, .overlay-trigger.active { + color: #176698; } + +/* ========================================================================== + Browser support + ========================================================================== */ +/* Typography + ========================================================================== */ +/* Grid + ========================================================================== */ +/* Code examples + ========================================================================== */ +.list-group, .list-group-inverse { + margin-bottom: 20px; + padding-left: 0; } + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: transparent; + border: 1px solid #ddd; } + .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; } + .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } + +a.list-group-item, button.list-group-item { + color: #555; } + a.list-group-item .list-group-item-heading, button.list-group-item .list-group-item-heading { + color: #333; } + a.list-group-item:hover, a.list-group-item:focus, button.list-group-item:hover, button.list-group-item:focus { + text-decoration: none; + color: #555; + background-color: #f5f5f5; } + +button.list-group-item { + width: 100%; + text-align: left; } + +.list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus { + background-color: #eeeeee; + color: #999999; + cursor: false; } + .list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading { + color: inherit; } + .list-group-item.disabled .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text { + color: #999999; } +.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #1b92cb; + border-color: #1b92cb; } + .list-group-item.active .list-group-item-heading, .list-group-item.active .list-group-item-heading > small, .list-group-item.active .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading, .list-group-item.active:hover .list-group-item-heading > small, .list-group-item.active:hover .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading, .list-group-item.active:focus .list-group-item-heading > small, .list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; } + .list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text { + color: #bce3f6; } + +.list-group-item-success { + color: #d4d9d9; + background-color: #686868; } + +a.list-group-item-success, button.list-group-item-success { + color: #d4d9d9; } + a.list-group-item-success .list-group-item-heading, button.list-group-item-success .list-group-item-heading { + color: inherit; } + a.list-group-item-success:hover, a.list-group-item-success:focus, button.list-group-item-success:hover, button.list-group-item-success:focus { + color: #d4d9d9; + background-color: #5b5b5b; } + a.list-group-item-success.active, a.list-group-item-success.active:hover, a.list-group-item-success.active:focus, button.list-group-item-success.active, button.list-group-item-success.active:hover, button.list-group-item-success.active:focus { + color: #fff; + background-color: #d4d9d9; + border-color: #d4d9d9; } + +.list-group-item-info { + color: #8e8837; + background-color: #e2df80; } + +a.list-group-item-info, button.list-group-item-info { + color: #8e8837; } + a.list-group-item-info .list-group-item-heading, button.list-group-item-info .list-group-item-heading { + color: inherit; } + a.list-group-item-info:hover, a.list-group-item-info:focus, button.list-group-item-info:hover, button.list-group-item-info:focus { + color: #8e8837; + background-color: #ddda6b; } + a.list-group-item-info.active, a.list-group-item-info.active:hover, a.list-group-item-info.active:focus, button.list-group-item-info.active, button.list-group-item-info.active:hover, button.list-group-item-info.active:focus { + color: #fff; + background-color: #8e8837; + border-color: #8e8837; } + +.list-group-item-warning { + color: #806613; + background-color: #FFF6D9; } + +a.list-group-item-warning, button.list-group-item-warning { + color: #806613; } + a.list-group-item-warning .list-group-item-heading, button.list-group-item-warning .list-group-item-heading { + color: inherit; } + a.list-group-item-warning:hover, a.list-group-item-warning:focus, button.list-group-item-warning:hover, button.list-group-item-warning:focus { + color: #806613; + background-color: #fff0c0; } + a.list-group-item-warning.active, a.list-group-item-warning.active:hover, a.list-group-item-warning.active:focus, button.list-group-item-warning.active, button.list-group-item-warning.active:hover, button.list-group-item-warning.active:focus { + color: #fff; + background-color: #806613; + border-color: #806613; } + +.list-group-item-danger { + color: #CC1F27; + background-color: #FFD9DB; } + +a.list-group-item-danger, button.list-group-item-danger { + color: #CC1F27; } + a.list-group-item-danger .list-group-item-heading, button.list-group-item-danger .list-group-item-heading { + color: inherit; } + a.list-group-item-danger:hover, a.list-group-item-danger:focus, button.list-group-item-danger:hover, button.list-group-item-danger:focus { + color: #CC1F27; + background-color: #ffc0c3; } + a.list-group-item-danger.active, a.list-group-item-danger.active:hover, a.list-group-item-danger.active:focus, button.list-group-item-danger.active, button.list-group-item-danger.active:hover, button.list-group-item-danger.active:focus { + color: #fff; + background-color: #CC1F27; + border-color: #CC1F27; } + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; } + +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; } + +/* + * clearfix used project wide to clear floats and create a new formatting context + * usage @include clearfix-me() + * $clearfix-method sets default method + */ +/** +* @name List +* @desc Basic list with no bullets and no margins +* @author +* @tested +* @requires +*/ +/* + * Define your own spacing classes for lists + * + * @param $units - specific spacing units you want to use. Must go from small to large + * e.g. @include ooListWhitespace((5px,10px,20px)); + * + */ +/* Transition mixins */ +/* Button Mixins */ +/*doc +--- +title: Lists +name: list +categories: + - Elements + - All +--- + + + +npm install pui-css-lists --save + + + + +This section contains different list styles. +*/ +/*pending +--- +title: JS Lists +name: lists_js +categories: + - Objects + - All +--- + +This section contains different list behaviors. See [lists][list] to see different list styles. +*/ +/*doc +--- +title: Inline +name: list_inline +parent: list +--- + +An inline list is one of the three methods for laying out content (including grids and the media block). + +```html_example + +``` + +You can use inline lists to lay out elements. Here's an example of a header next to a button: + +```html_example + +``` + +*/ +.list-unstyled, .list-cards, .list-timeline { + padding-left: 0; + list-style: none; } + +.list-inline, .list-inline-divider, .list-breadcrumb, .list-vertical-divider, .list-vertical-divider-2, .list-steps { + padding-left: 0; + list-style: none; + margin-left: -5px; } + .list-inline > li, .list-inline-divider > li, .list-breadcrumb > li, .list-vertical-divider > li, .list-vertical-divider-2 > li, .list-steps > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; } + +.list-inline, .list-inline-divider, .list-breadcrumb, .list-vertical-divider, .list-vertical-divider-2, .list-steps { + font-size: 0; } + .list-inline > li, .list-inline-divider > li, .list-breadcrumb > li, .list-vertical-divider > li, .list-vertical-divider-2 > li, .list-steps > li { + font-size: 16px; } + +/*doc +--- +title: Ordered +name: list_ordered +parent: list +--- + + +```html_example +
    +
  1. + feep +
  2. +
  3. + fop +
  4. +
  5. + meep +
  6. +
+``` + +*/ +/*doc +--- +title: Unordered +name: list_unordered +parent: list +--- + +```html_example + +``` + +*/ +.list-unordered { + padding-left: 0; } + .list-unordered > li { + margin-left: 17px; } + +/*doc +--- +title: Unstyled +name: list_unstyled +parent: list +--- + +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 `