+++ /dev/null
--<div class="bs-docs-section">
-- <h1 id="popovers" class="page-header">Popovers <small>popover.js</small></h1>
--
-- <p>Add small overlays of content, like those on the iPad, to any element for housing secondary information.</p>
-- <p>Popovers whose both title and content are zero-length are never displayed.</p>
--
-- <div class="bs-callout bs-callout-danger" id="callout-popover-needs-tooltip">
-- <h4>Plugin dependency</h4>
-- <p>Popovers require the <a href="#tooltips">tooltip plugin</a> to be included in your version of Bootstrap.</p>
-- </div>
-- <div class="bs-callout bs-callout-danger" id="callout-popover-opt-in">
-- <h4>Opt-in functionality</h4>
-- <p>For performance reasons, the Tooltip and Popover data-apis are opt-in, meaning <strong>you must initialize them yourself</strong>.</p>
-- <p>One way to initialize all popovers on a page would be to select them by their <code>data-toggle</code> attribute:</p>
--{% highlight js %}
--$(function () {
-- $('[data-toggle="popover"]').popover()
--})
--{% endhighlight %}
-- </div>
-- <div class="bs-callout bs-callout-warning" id="callout-popover-groups">
-- <h4>Popovers in button groups and input groups require special setting</h4>
-- <p>When using popovers on elements within a <code>.btn-group</code> or an <code>.input-group</code>, you'll have to specify the option <code>container: 'body'</code> (documented below) to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the popover is triggered).</p>
-- </div>
-- <div class="bs-callout bs-callout-warning" id="callout-popover-hidden">
-- <h4>Don't try to show popovers on hidden elements</h4>
-- <p>Invoking <code>$(...).popover('show')</code> when the target element is <code>display: none;</code> will cause the popover to be incorrectly positioned.</p>
-- </div>
-- <div class="bs-callout bs-callout-info" id="callout-popover-disabled">
-- <h4>Popovers on disabled elements require wrapper elements</h4>
-- <p>To add a popover to a <code>disabled</code> or <code>.disabled</code> element, put the element inside of a <code><div></code> and apply the popover to that <code><div></code> instead.</p>
-- </div>
-- <div class="bs-callout bs-callout-info" id="callout-popover-multiline">
-- <h4>Multiple-line links</h4>
-- <p>Sometimes you want to add a popover to a hyperlink that wraps multiple lines. The default behavior of the popover plugin is to center it horizontally and vertically. Add <code>white-space: nowrap;</code> to your anchors to avoid this.</p>
-- </div>
--
-- <h2 id="popovers-examples">Examples</h2>
-- <h3>Static popover</h3>
-- <p>Four options are available: top, right, bottom, and left aligned.</p>
- <div class="bs-example bs-example-popover">
- <div class="popover popover-top">
- <div class="popover-arrow"></div>
- <div class="bs-example bs-example-popover" data-example-id="static-popovers">
- <div class="popover top">
- <div class="arrow"></div>
-- <h3 class="popover-title">Popover top</h3>
-- <div class="popover-content">
-- <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
-- </div>
-- </div>
--
- <div class="popover popover-right">
- <div class="popover-arrow"></div>
- <div class="popover right">
- <div class="arrow"></div>
-- <h3 class="popover-title">Popover right</h3>
-- <div class="popover-content">
-- <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
-- </div>
-- </div>
--
- <div class="popover popover-bottom">
- <div class="popover-arrow"></div>
- <div class="popover bottom">
- <div class="arrow"></div>
-- <h3 class="popover-title">Popover bottom</h3>
--
-- <div class="popover-content">
-- <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
-- </div>
-- </div>
--
- <div class="popover popover-left">
- <div class="popover-arrow"></div>
- <div class="popover left">
- <div class="arrow"></div>
-- <h3 class="popover-title">Popover left</h3>
-- <div class="popover-content">
-- <p>Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
-- </div>
-- </div>
--
-- <div class="clearfix"></div>
-- </div>
--
-- <h3>Live demo</h3>
-- <div class="bs-example" style="padding-bottom: 24px;">
-- <button type="button" class="btn btn-lg btn-danger bs-docs-popover" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
-- </div>
--{% highlight html %}
--<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
--{% endhighlight %}
--
-- <h4>Four directions</h4>
-- <div class="bs-example popover-demo">
-- <div class="bs-example-popovers">
-- <button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="left" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
-- Popover on left
-- </button>
-- <button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
-- Popover on top
-- </button>
-- <button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
-- Popover on bottom
-- </button>
-- <button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="right" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
-- Popover on right
-- </button>
-- </div>
-- </div><!-- /example -->
--{% highlight html %}
--<button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="left" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
-- Popover on left
--</button>
--
--<button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
-- Popover on top
--</button>
--
--<button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Vivamus
--sagittis lacus vel augue laoreet rutrum faucibus.">
-- Popover on bottom
--</button>
--
--<button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="right" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
-- Popover on right
--</button>
--{% endhighlight %}
--
-- <h4>Dismiss on next click</h4>
-- <p>Use the <code>focus</code> trigger to dismiss popovers on the next click that the user makes.</p>
-- <div class="bs-callout bs-callout-danger" id="callout-popover-dismiss-click">
-- <h4>Specific markup required for dismiss-on-next-click</h4>
-- <p>For proper cross-browser and cross-platform behavior, you must use the <code><a></code> tag, <i>not</i> the <code><button></code> tag, and you also must include a <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#tabindex"><code>tabindex</code></a> attribute.</p>
-- </div>
-- <div class="bs-example" style="padding-bottom: 24px;">
-- <a href="#" tabindex="0" class="btn btn-lg btn-danger bs-docs-popover" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
-- </div>
--{% highlight html %}
--<a href="#" tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
--{% endhighlight %}
--
--
-- <h2 id="popovers-usage">Usage</h2>
-- <p>Enable popovers via JavaScript:</p>
-- {% highlight js %}$('#example').popover(options){% endhighlight %}
--
-- <h3 id="popovers-options">Options</h3>
-- <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-animation=""</code>.</p>
-- <div class="table-responsive">
-- <table class="table table-bordered table-striped">
-- <thead>
-- <tr>
-- <th style="width: 100px;">Name</th>
-- <th style="width: 100px;">Type</th>
-- <th style="width: 50px;">Default</th>
-- <th>Description</th>
-- </tr>
-- </thead>
-- <tbody>
-- <tr>
-- <td>animation</td>
-- <td>boolean</td>
-- <td>true</td>
-- <td>Apply a CSS fade transition to the popover</td>
-- </tr>
-- <tr>
-- <td>container</td>
-- <td>string | false</td>
-- <td>false</td>
-- <td>
-- <p>Appends the popover to a specific element. Example: <code>container: 'body'</code>. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element -Â which will prevent the popover from floating away from the triggering element during a window resize.</p>
-- </td>
-- </tr>
-- <tr>
-- <td>content</td>
-- <td>string | function</td>
-- <td>''</td>
-- <td>
-- <p>Default content value if <code>data-content</code> attribute isn't present.</p>
-- <p>If a function is given, it will be called with its <code>this</code> reference set to the element that the popover is attached to.</p>
-- </td>
-- </tr>
-- <tr>
-- <td>delay</td>
-- <td>number | object</td>
-- <td>0</td>
-- <td>
-- <p>Delay showing and hiding the popover (ms) - does not apply to manual trigger type</p>
-- <p>If a number is supplied, delay is applied to both hide/show</p>
-- <p>Object structure is: <code>delay: { "show": 500, "hide": 100 }</code></p>
-- </td>
-- </tr>
-- <tr>
-- <td>html</td>
-- <td>boolean</td>
-- <td>false</td>
-- <td>Insert HTML into the popover. If false, jQuery's <code>text</code> method will be used to insert content into the DOM. Use text if you're worried about XSS attacks.</td>
-- </tr>
-- <tr>
-- <td>placement</td>
-- <td>string | function</td>
-- <td>'right'</td>
-- <td>
-- <p>How to position the popover - top | bottom | left | right | auto.<br>When "auto" is specified, it will dynamically reorient the popover. For example, if placement is "auto left", the popover will display to the left when possible, otherwise it will display right.</p>
-- <p>When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The <code>this</code> context is set to the popover instance.</p>
-- </td>
-- </tr>
-- <tr>
-- <td>selector</td>
-- <td>string</td>
-- <td>false</td>
-- <td>If a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See <a href="https://github.com/twbs/bootstrap/issues/4215">this</a> and <a href="http://jsbin.com/zopod/1/edit">an informative example</a>.</td>
-- </tr>
-- <tr>
-- <td>template</td>
-- <td>string</td>
- <td><code>'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'</code></td>
- <td><code>'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'</code></td>
-- <td>
-- <p>Base HTML to use when creating the popover.</p>
-- <p>The popover's <code>title</code> will be injected into the <code>.popover-title</code>.</p>
-- <p>The popover's <code>content</code> will be injected into the <code>.popover-content</code>.</p>
- <p><code>.popover-arrow</code> will become the popover's arrow.</p>
- <p><code>.arrow</code> will become the popover's arrow.</p>
-- <p>The outermost wrapper element should have the <code>.popover</code> class.</p>
-- </td>
-- </tr>
-- <tr>
-- <td>title</td>
-- <td>string | function</td>
-- <td>''</td>
-- <td>
-- <p>Default title value if <code>title</code> attribute isn't present.</p>
-- <p>If a function is given, it will be called with its <code>this</code> reference set to the element that the popover is attached to.</p>
-- </td>
-- </tr>
-- <tr>
-- <td>trigger</td>
-- <td>string</td>
-- <td>'click'</td>
-- <td>How popover is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space.</td>
-- </tr>
-- <tr>
-- <td>viewport</td>
-- <td>string | object</td>
-- <td>{ selector: 'body', padding: 0 }</td>
-- <td>
-- <p>Keeps the popover within the bounds of this element. Example: <code>viewport: '#viewport'</code> or <code>{ "selector": "#viewport", "padding": 0 }</code></p>
-- </td>
-- </tr>
-- </tbody>
-- </table>
-- </div><!-- /.table-responsive -->
-- <div class="bs-callout bs-callout-info" id="callout-popover-data">
-- <h4>Data attributes for individual popovers</h4>
-- <p>Options for individual popovers can alternatively be specified through the use of data attributes, as explained above.</p>
-- </div>
--
-- <h3>Methods</h3>
-- <h4>$().popover(options)</h4>
-- <p>Initializes popovers for an element collection.</p>
--
-- <h4>.popover('show')</h4>
-- <p>Reveals an element's popover. Popovers whose both title and content are zero-length are never displayed.</p>
-- {% highlight js %}$('#element').popover('show'){% endhighlight %}
--
-- <h4>.popover('hide')</h4>
-- <p>Hides an element's popover.</p>
-- {% highlight js %}$('#element').popover('hide'){% endhighlight %}
--
-- <h4>.popover('toggle')</h4>
-- <p>Toggles an element's popover.</p>
-- {% highlight js %}$('#element').popover('toggle'){% endhighlight %}
--
-- <h4>.popover('destroy')</h4>
-- <p>Hides and destroys an element's popover.</p>
-- {% highlight js %}$('#element').popover('destroy'){% endhighlight %}
-- <h3 id="popovers-events">Events</h3>
-- <div class="table-responsive">
-- <table class="table table-bordered table-striped bs-events-table">
-- <thead>
-- <tr>
-- <th style="width: 150px;">Event Type</th>
-- <th>Description</th>
-- </tr>
-- </thead>
-- <tbody>
-- <tr>
-- <td>show.bs.popover</td>
-- <td>This event fires immediately when the <code>show</code> instance method is called.</td>
-- </tr>
-- <tr>
-- <td>shown.bs.popover</td>
-- <td>This event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete).</td>
-- </tr>
-- <tr>
-- <td>hide.bs.popover</td>
-- <td>This event is fired immediately when the <code>hide</code> instance method has been called.</td>
-- </tr>
-- <tr>
-- <td>hidden.bs.popover</td>
-- <td>This event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete).</td>
-- </tr>
-- </tbody>
-- </table>
-- </div><!-- /.table-responsive -->
--{% highlight js %}
--$('#myPopover').on('hidden.bs.popover', function () {
-- // do something…
--})
--{% endhighlight %}
--</div>
+++ /dev/null
--<div class="bs-docs-section">
-- <h1 id="tooltips" class="page-header">Tooltips <small>tooltip.js</small></h1>
-- <p>Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.</p>
-- <p>Tooltips with zero-length titles are never displayed.</p>
--
-- <h2 id="tooltips-examples">Examples</h2>
-- <p>Hover over the links below to see tooltips:</p>
-- <div class="bs-example tooltip-demo">
-- <p>Tight pants next level keffiyeh <a href="#" data-toggle="tooltip" title="Default tooltip">you probably</a> haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel <a href="#" data-toggle="tooltip" title="Another tooltip">have a</a> terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan <a href="#" data-toggle="tooltip" title="Another one here too">whatever keytar</a>, scenester farm-to-table banksy Austin <a href="#" data-toggle="tooltip" title="The last tip!">twitter handle</a> freegan cred raw denim single-origin coffee viral.</p>
-- </div><!-- /example -->
--
-- <h3>Static tooltip</h3>
-- <p>Four options are available: top, right, bottom, and left aligned.</p>
- <div class="bs-example bs-example-tooltip">
- <div class="tooltip tooltip-left" role="tooltip">
- <div class="bs-example bs-example-tooltip" data-example-id="static-tooltips">
- <div class="tooltip left" role="tooltip">
-- <div class="tooltip-arrow"></div>
-- <div class="tooltip-inner">
-- Tooltip on the left
-- </div>
-- </div>
- <div class="tooltip tooltip-top" role="tooltip">
- <div class="tooltip top" role="tooltip">
-- <div class="tooltip-arrow"></div>
-- <div class="tooltip-inner">
-- Tooltip on the top
-- </div>
-- </div>
- <div class="tooltip tooltip-bottom" role="tooltip">
- <div class="tooltip bottom" role="tooltip">
-- <div class="tooltip-arrow"></div>
-- <div class="tooltip-inner">
-- Tooltip on the bottom
-- </div>
-- </div>
- <div class="tooltip tooltip-right" role="tooltip">
- <div class="tooltip right" role="tooltip">
-- <div class="tooltip-arrow"></div>
-- <div class="tooltip-inner">
-- Tooltip on the right
-- </div>
-- </div>
-- </div>
--
-- <h3>Four directions</h3>
-- <div class="bs-example tooltip-demo">
-- <div class="bs-example-tooltips">
-- <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="left" title="Tooltip on left">Tooltip on left</button>
-- <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="top" title="Tooltip on top">Tooltip on top</button>
-- <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">Tooltip on bottom</button>
-- <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="right" title="Tooltip on right">Tooltip on right</button>
-- </div>
-- </div><!-- /example -->
--{% highlight html %}
--<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="left" title="Tooltip on left">Tooltip on left</button>
--
--<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="top" title="Tooltip on top">Tooltip on top</button>
--
--<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">Tooltip on bottom</button>
--
--<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="right" title="Tooltip on right">Tooltip on right</button>
--{% endhighlight %}
--
-- <div class="bs-callout bs-callout-danger" id="callout-tooltip-opt-in">
-- <h4>Opt-in functionality</h4>
-- <p>For performance reasons, the Tooltip and Popover data-apis are opt-in, meaning <strong>you must initialize them yourself</strong>.</p>
-- <p>One way to initialize all tooltips on a page would be to select them by their <code>data-toggle</code> attribute:</p>
--{% highlight js %}
--$(function () {
-- $('[data-toggle="tooltip"]').tooltip()
--})
--{% endhighlight %}
--
-- </div>
-- <div class="bs-callout bs-callout-warning" id="callout-tooltip-groups">
-- <h4>Tooltips in button groups and input groups require special setting</h4>
-- <p>When using tooltips on elements within a <code>.btn-group</code> or an <code>.input-group</code>, you'll have to specify the option <code>container: 'body'</code> (documented below) to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip is triggered).</p>
-- </div>
-- <div class="bs-callout bs-callout-warning" id="callout-tooltip-hidden">
-- <h4>Don't try to show tooltips on hidden elements</h4>
-- <p>Invoking <code>$(...).tooltip('show')</code> when the target element is <code>display: none;</code> will cause the tooltip to be incorrectly positioned.</p>
-- </div>
-- <div class="bs-callout bs-callout-info" id="callout-tooltip-disabled">
-- <h4>Tooltips on disabled elements require wrapper elements</h4>
-- <p>To add a tooltip to a <code>disabled</code> or <code>.disabled</code> element, put the element inside of a <code><div></code> and apply the tooltip to that <code><div></code> instead.</p>
-- </div>
--
-- <h2 id="tooltips-usage">Usage</h2>
-- <p>The tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element.</p>
-- <p>Trigger the tooltip via JavaScript:</p>
--{% highlight js %}
--$('#example').tooltip(options)
--{% endhighlight %}
--
-- <h3>Markup</h3>
-- <p>The required markup for a tooltip is only a <code>data</code> attribute and <code>title</code> on the HTML element you wish to have a tooltip. The generated markup of a tooltip is rather simple, though it does require a position (by default, set to <code>top</code> by the plugin).</p>
-- <div class="bs-callout bs-callout-warning" id="callout-tooltip-multiline">
-- <h4>Multiple-line links</h4>
-- <p>Sometimes you want to add a tooltip to a hyperlink that wraps multiple lines. The default behavior of the tooltip plugin is to center it horizontally and vertically. Add <code>white-space: nowrap;</code> to your anchors to avoid this.</p>
-- </div>
--{% highlight html %}
--<!-- HTML to write -->
--<a href="#" data-toggle="tooltip" title="Some tooltip text!">Hover over me</a>
--
--<!-- Generated markup by the plugin -->
--<div class="tooltip top" role="tooltip">
-- <div class="tooltip-arrow"></div>
-- <div class="tooltip-inner">
-- Some tooltip text!
-- </div>
--</div>
--{% endhighlight %}
--
-- <h3 id="tooltips-options">Options</h3>
-- <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-animation=""</code>.</p>
-- <div class="table-responsive">
-- <table class="table table-bordered table-striped">
-- <thead>
-- <tr>
-- <th style="width: 100px;">Name</th>
-- <th style="width: 100px;">Type</th>
-- <th style="width: 50px;">Default</th>
-- <th>Description</th>
-- </tr>
-- </thead>
-- <tbody>
-- <tr>
-- <td>animation</td>
-- <td>boolean</td>
-- <td>true</td>
-- <td>Apply a CSS fade transition to the tooltip</td>
-- </tr>
-- <tr>
-- <td>container</td>
-- <td>string | false</td>
-- <td>false</td>
-- <td>
-- <p>Appends the tooltip to a specific element. Example: <code>container: 'body'</code>. This option is particularly useful in that it allows you to position the tooltip in the flow of the document near the triggering element -Â which will prevent the tooltip from floating away from the triggering element during a window resize.</p>
-- </td>
-- </tr>
-- <tr>
-- <td>delay</td>
-- <td>number | object</td>
-- <td>0</td>
-- <td>
-- <p>Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type</p>
-- <p>If a number is supplied, delay is applied to both hide/show</p>
-- <p>Object structure is: <code>delay: { "show": 500, "hide": 100 }</code></p>
-- </td>
-- </tr>
-- <tr>
-- <td>html</td>
-- <td>boolean</td>
-- <td>false</td>
-- <td>Insert HTML into the tooltip. If false, jQuery's <code>text</code> method will be used to insert content into the DOM. Use text if you're worried about XSS attacks.</td>
-- </tr>
-- <tr>
-- <td>placement</td>
-- <td>string | function</td>
-- <td>'top'</td>
-- <td>
-- <p>How to position the tooltip - top | bottom | left | right | auto.<br>When "auto" is specified, it will dynamically reorient the tooltip. For example, if placement is "auto left", the tooltip will display to the left when possible, otherwise it will display right.</p>
-- <p>When a function is used to determine the placement, it is called with the tooltip DOM node as its first argument and the triggering element DOM node as its second. The <code>this</code> context is set to the tooltip instance.</p>
-- </td>
-- </tr>
-- <tr>
-- <td>selector</td>
-- <td>string</td>
-- <td>false</td>
-- <td>If a selector is provided, tooltip objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have tooltips added. See <a href="https://github.com/twbs/bootstrap/issues/4215">this</a> and <a href="http://jsbin.com/zopod/1/edit">an informative example</a>.</td>
-- </tr>
-- <tr>
-- <td>template</td>
-- <td>string</td>
-- <td><code>'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'</code></td>
-- <td>
-- <p>Base HTML to use when creating the tooltip.</p>
-- <p>The tooltip's <code>title</code> will be injected into the <code>.tooltip-inner</code>.</p>
-- <p><code>.tooltip-arrow</code> will become the tooltip's arrow.</p>
-- <p>The outermost wrapper element should have the <code>.tooltip</code> class.</p>
-- </td>
-- </tr>
-- <tr>
-- <td>title</td>
-- <td>string | function</td>
-- <td>''</td>
-- <td>
-- <p>Default title value if <code>title</code> attribute isn't present.</p>
-- <p>If a function is given, it will be called with its <code>this</code> reference set to the element that the tooltip is attached to.</p>
-- </td>
-- </tr>
-- <tr>
-- <td>trigger</td>
-- <td>string</td>
-- <td>'hover focus'</td>
-- <td>How tooltip is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space.</td>
-- </tr>
-- <tr>
-- <td>viewport</td>
-- <td>string | object</td>
-- <td>{ selector: 'body', padding: 0 }</td>
-- <td>
-- <p>Keeps the tooltip within the bounds of this element. Example: <code>viewport: '#viewport'</code> or <code>{ "selector": "#viewport", "padding": 0 }</code></p>
-- </td>
-- </tr>
-- </tbody>
-- </table>
-- </div><!-- /.table-responsive -->
-- <div class="bs-callout bs-callout-info" id="callout-tooltip-data">
-- <h4>Data attributes for individual tooltips</h4>
-- <p>Options for individual tooltips can alternatively be specified through the use of data attributes, as explained above.</p>
-- </div>
--
-- <h3 id="tooltips-methods">Methods</h3>
--
-- <h4>$().tooltip(options)</h4>
-- <p>Attaches a tooltip handler to an element collection.</p>
--
-- <h4>.tooltip('show')</h4>
-- <p>Reveals an element's tooltip. Tooltips with zero-length titles are never displayed.</p>
-- {% highlight js %}$('#element').tooltip('show'){% endhighlight %}
--
-- <h4>.tooltip('hide')</h4>
-- <p>Hides an element's tooltip.</p>
-- {% highlight js %}$('#element').tooltip('hide'){% endhighlight %}
--
-- <h4>.tooltip('toggle')</h4>
-- <p>Toggles an element's tooltip.</p>
-- {% highlight js %}$('#element').tooltip('toggle'){% endhighlight %}
--
-- <h4>.tooltip('destroy')</h4>
-- <p>Hides and destroys an element's tooltip.</p>
-- {% highlight js %}$('#element').tooltip('destroy'){% endhighlight %}
--
-- <h3 id="tooltips-events">Events</h3>
-- <div class="table-responsive">
-- <table class="table table-bordered table-striped bs-events-table">
-- <thead>
-- <tr>
-- <th style="width: 150px;">Event Type</th>
-- <th>Description</th>
-- </tr>
-- </thead>
-- <tbody>
-- <tr>
-- <td>show.bs.tooltip</td>
-- <td>This event fires immediately when the <code>show</code> instance method is called.</td>
-- </tr>
-- <tr>
-- <td>shown.bs.tooltip</td>
-- <td>This event is fired when the tooltip has been made visible to the user (will wait for CSS transitions to complete).</td>
-- </tr>
-- <tr>
-- <td>hide.bs.tooltip</td>
-- <td>This event is fired immediately when the <code>hide</code> instance method has been called.</td>
-- </tr>
-- <tr>
-- <td>hidden.bs.tooltip</td>
-- <td>This event is fired when the tooltip has finished being hidden from the user (will wait for CSS transitions to complete).</td>
-- </tr>
-- </tbody>
-- </table>
-- </div><!-- /.table-responsive -->
--{% highlight js %}
--$('#myTooltip').on('hidden.bs.tooltip', function () {
-- // do something…
--})
--{% endhighlight %}
--</div>
<!-- Meta, title, CSS, favicons, etc. -->
{% include header.html %}
</head>
- <body>
- <a id="skippy" class="sr-only sr-only-focusable" href="#content"><div class="container"><span class="skiplink-text">Skip to main content</span></div></a>
+ <body class="bs-docs" data-spy="scroll" data-target=".bs-docs-sidenav">
- <a class="sr-only sr-only-focusable" href="#content">Skip to main content</a>
++ <a id="skippy" class="sr-only sr-only-focusable" href="#content">
++ <div class="container">
++ <span class="skiplink-text">Skip to main content</span>
++ </div>
++ </a>
- <!-- Docs master nav -->
- {% include nav/main.html %}
+ {% include docs-nav.html %}
- <!-- Docs page layout -->
<div class="bs-docs-header" id="content">
- <div class="container">
- <h1>{{ page.title }}</h1>
- <p>{{ page.lead }}</p>
+ <div class="bs-docs-container">
+ {% if page.url contains "getting-started" %}
+ <h1>Getting started</h1>
+ <p class="lead">Learn how to quickly start a new project with Bootstrap with downloads, basic templates and examples, and more.</p>
+ {% elsif page.url contains "layout" %}
+ <h1>Layout</h1>
+ <p class="lead">Grid system, containers, media object, and responsive utilities for organization pages.</p>
+ {% elsif page.url contains "content" %}
+ <h1>Components</h1>
+ <p class="lead">
+ Styles and patterns for common HTML elements like typography, tables, forms, and more.
+ </p>
+ {% elsif page.url contains "components" %}
+ <h1>Components</h1>
+ <p class="lead">
+ Custom design patterns built as reusable components, including dropdowns, input groups, navigation, alerts, and more.
+ </p>
+ {% elsif page.url contains "javascript" %}
+ <h1>JavaScript</h1>
+ <p class="lead">Bring Bootstrap's components to life with over a dozen custom jQuery plugins. Easily include them all, or one by one.</p>
+ {% elsif page.url contains "examples" %}
+ <h1>Examples</h1>
+ <p class="lead">Build on the basic template above with Bootstrap's many components. Customize and adapt Bootstrap to suit your individual project's needs.</p>
+ {% elsif page.url contains "about" %}
+ <h1>About</h1>
+ <p class="lead">Learn about the project's history, meet the maintaining teams, and find out how to use the Bootstrap brand.</p>
+ {% elsif page.url contains "migration" %}
+ <h1>Migration</h1>
+ <p class="lead">Bootstrap 4 is not backwards compatible with v3.x.x. Use this section as a general guide to upgrading from v3.x.x to v4.0.0.</p>
+ {% endif %}
+
{% include ads.html %}
</div>
</div>
{% include header.html %}
</head>
<body class="bs-docs-home">
- <a class="sr-only sr-only-focusable" href="#content">Skip to main content</a>
+ <a id="skippy" class="sr-only sr-only-focusable" href="#content"><div class="container"><span class="skiplink-text">Skip to main content</span></div></a>
<!-- Docs master nav -->
- {% include nav/main.html %}
+ {% include home-nav.html %}
<!-- Page content of course! -->
{{ content }}
--- /dev/null
- <img class="svg" src="{{ site.baseurl }}assets/brand/bootstrap-solid.svg" alt="Bootstrap">
+---
+layout: page
+title: Brand guidelines
+---
+
+Have a need for Bootstrap's brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well. These guidelines were inspired by MailChimp's [Brand Assets](http://mailchimp.com/about/brand-assets/).
+
+## Mark and logo
+
+Use either the Bootstrap mark (a capital **B**) or the standard logo (just **Bootstrap**). It should always appear in Helvetica Neue Bold. **Do not use the Twitter bird** in association with Bootstrap.
+
+<div class="bs-brand-logos">
+ <div class="bs-brand-item">
+ <div class="bs-docs-booticon bs-docs-booticon-lg">B</div>
+ </div>
+ <div class="bs-brand-item inverse">
+ <div class="bs-docs-booticon bs-docs-booticon-lg bs-docs-booticon-inverse">B</div>
+ </div>
+</div>
+<div class="bs-brand-logos">
+ <div class="bs-brand-item">
+ <h1>Bootstrap</h1>
+ </div>
+ <div class="bs-brand-item inverse">
+ <h1>Bootstrap</h1>
+ </div>
+</div>
+
+## Download mark
+
+Download the Bootstrap mark in one of three styles, each available as an SVG file. Right click, Save as.
+
+<div class="bs-brand-logos">
+ <div class="bs-brand-item">
- <img class="svg" src="{{ site.baseurl }}assets/brand/bootstrap-outline.svg" alt="Bootstrap">
++ <img class="svg" src="{{ site.baseurl }}assets/brand/bootstrap-solid.svg" alt="Bootstrap" width="144" height="144">
+ </div>
+ <div class="bs-brand-item inverse">
- <img class="svg" src="{{ site.baseurl }}assets/brand/bootstrap-punchout.svg" alt="Bootstrap">
++ <img class="svg" src="{{ site.baseurl }}assets/brand/bootstrap-outline.svg" alt="Bootstrap" width="144" height="144">
+ </div>
+ <div class="bs-brand-item inverse">
++ <img class="svg" src="{{ site.baseurl }}assets/brand/bootstrap-punchout.svg" alt="Bootstrap" width="144" height="144">
+ </div>
+</div>
+
+## Name
+
+The project and framework should always be referred to as **Bootstrap**. No Twitter before it, no capital _s_, and no abbreviations except for one, a capital **B**.
+
+<div class="bs-brand-logos">
+ <div class="bs-brand-item">
+ <h3>Bootstrap</h3>
+ <strong class="text-success">Right</strong>
+ </div>
+ <div class="bs-brand-item">
+ <h3 class="text-muted">BootStrap</h3>
+ <strong class="text-warning">Wrong</strong>
+ </div>
+ <div class="bs-brand-item">
+ <h3 class="text-muted">Twitter Bootstrap</h3>
+ <strong class="text-warning">Wrong</strong>
+ </div>
+</div>
+
+## Colors
+
+Our docs and branding use a handful of primary colors to differentiate what *is* Bootstrap from what *is in* Bootstrap. In other words, if it's purple, it's representative of Bootstrap.
+
+<div class="bs-brand">
+ <div class="color-swatches">
+ <div class="color-swatch bs-purple"></div>
+ <div class="color-swatch bs-purple-light"></div>
+ <div class="color-swatch bs-purple-lighter"></div>
+ <div class="color-swatch bs-gray"></div>
+ </div>
+</div>
--- /dev/null
- <img src="http://www.gravatar.com/avatar/{{ member.gravatar }}" alt="@{{ member.user }}">
+---
+layout: page
+title: Team
+---
+
+Bootstrap is maintained by the founding team and a small group of invaluable core contributors, with the massive support and involvement of our community.
+
+## Core team
+
+<div class="list-group bs-team">
+ {% for member in site.data.core-team %}
+ <div class="list-group-item">
+ <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user={{ member.user }}&type=follow"></iframe>
+ <a class="team-member" href="https://github.com/{{ member.user }}">
- <img src="http://www.gravatar.com/avatar/{{ member.gravatar }}" alt="@{{ member.user }}">
++ <img src="http://www.gravatar.com/avatar/{{ member.gravatar }}" alt="@{{ member.user }}" width="32" height="32">
+ <strong>{{ member.name }}</strong> <small>@{{ member.user }}</small>
+ </a>
+ </div>
+ {% endfor %}
+</div>
+
+Get involved with Bootstrap development by [opening an issue](https://github.com/twbs/bootstrap/issues/new) or submitting a pull request. Read our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md) for information on how we develop.
+
+## Sass team
+
+<div class="list-group bs-team">
+ {% for member in site.data.sass-team %}
+ <div class="list-group-item">
+ <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user={{ member.user }}&type=follow"></iframe>
+ <a class="team-member" href="https://github.com/{{ member.user }}">
++ <img src="http://www.gravatar.com/avatar/{{ member.gravatar }}" alt="@{{ member.user }}" width="32" height="32">
+ <strong>{{ member.name }}</strong> <small>@{{ member.user }}</small>
+ </a>
+ </div>
+ {% endfor %}
+</div>
+
+The [official Sass port of Bootstrap]({{ site.sass_repo }}) was created and is maintained by this team. It became part of Bootstrap's organization with v3.1.0. Read the Sass [contributing guidelines](https://github.com/twbs/bootstrap-sass/blob/master/CONTRIBUTING.md) for information on how the Sass port is developed.
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see http://creativecommons.org/licenses/by/3.0/.
*/
- !function(a){"use strict";a(function(){a(".tooltip-demo").tooltip({selector:'[data-toggle="tooltip"]',container:"body"}),a(".popover-demo").popover({selector:'[data-toggle="popover"]',container:"body"}),a(".tooltip-test").tooltip(),a(".popover-test").popover(),a(".bs-docs-popover").popover(),a("#loading-example-btn").on("click",function(){var b=a(this);b.button("loading"),setTimeout(function(){b.button("reset")},3e3)}),a("#exampleModal").on("show.bs.modal",function(b){var c=a(b.relatedTarget),d=c.data("whatever"),e=a(this);e.find(".modal-title").text("New message to "+d),e.find(".modal-body input").val(d)}),a(".bs-docs-activate-animated-progressbar").on("click",function(){a(this).prev(".progress-striped").toggleClass("progress-animated")}),ZeroClipboard.config({moviePath:"/assets/flash/ZeroClipboard.swf",hoverClass:"btn-clipboard-hover"}),a(".highlight").each(function(){var b='<div class="zero-clipboard"><span class="btn-clipboard">Copy</span></div>';a(this).before(b)});var b=new ZeroClipboard(a(".btn-clipboard")),c=a("#global-zeroclipboard-html-bridge");b.on("load",function(){c.data("placement","top").attr("title","Copy to clipboard").tooltip()}),b.on("dataRequested",function(b){var c=a(this).parent().nextAll(".highlight").first();b.setText(c.text())}),b.on("complete",function(){c.attr("title","Copied!").tooltip("fixTitle").tooltip("show").attr("title","Copy to clipboard").tooltip("fixTitle")}),b.on("noflash wrongflash",function(){c.attr("title","Flash required").tooltip("fixTitle").tooltip("show")})})}(jQuery);
-!function(a){"use strict";a(function(){var b=a(window),c=a(document.body);c.scrollspy({target:".bs-docs-sidebar"}),b.on("load",function(){c.scrollspy("refresh")}),a(".bs-docs-container [href=#]").click(function(a){a.preventDefault()}),setTimeout(function(){var b=a(".bs-docs-sidebar");b.affix({offset:{top:function(){var c=b.offset().top,d=parseInt(b.children(0).css("margin-top"),10),e=a(".bs-docs-nav").height();return this.top=c-e-d},bottom:function(){return this.bottom=a(".bs-docs-footer").outerHeight(!0)}}})},100),setTimeout(function(){a(".bs-top").affix()},100),function(){var b=a("#bs-theme-stylesheet"),c=a(".bs-docs-theme-toggle"),d=function(){b.attr("href",b.attr("data-href")),c.text("Disable theme preview"),localStorage.setItem("previewTheme",!0)};localStorage.getItem("previewTheme")&&d(),c.click(function(){var a=b.attr("href");a&&0!==a.indexOf("data")?(b.attr("href",""),c.text("Preview theme"),localStorage.removeItem("previewTheme")):d()})}(),a(".tooltip-demo").tooltip({selector:'[data-toggle="tooltip"]',container:"body"}),a(".popover-demo").popover({selector:'[data-toggle="popover"]',container:"body"}),a(".tooltip-test").tooltip(),a(".popover-test").popover(),a(".bs-docs-popover").popover(),a("#loading-example-btn").on("click",function(){var b=a(this);b.button("loading"),setTimeout(function(){b.button("reset")},3e3)}),a("#exampleModal").on("show.bs.modal",function(b){var c=a(b.relatedTarget),d=c.data("whatever"),e=a(this);e.find(".modal-title").text("New message to "+d),e.find(".modal-body input").val(d)}),a(".bs-docs-activate-animated-progressbar").on("click",function(){a(this).siblings(".progress").find(".progress-bar-striped").toggleClass("active")}),ZeroClipboard.config({moviePath:"/assets/flash/ZeroClipboard.swf",hoverClass:"btn-clipboard-hover"}),a(".highlight").each(function(){var b='<div class="zero-clipboard"><span class="btn-clipboard">Copy</span></div>';a(this).before(b)});var d=new ZeroClipboard(a(".btn-clipboard")),e=a("#global-zeroclipboard-html-bridge");d.on("load",function(){e.data("placement","top").attr("title","Copy to clipboard").tooltip()}),d.on("dataRequested",function(b){var c=a(this).parent().nextAll(".highlight").first();b.setText(c.text())}),d.on("complete",function(){e.attr("title","Copied!").tooltip("fixTitle").tooltip("show").attr("title","Copy to clipboard").tooltip("fixTitle")}),d.on("noflash wrongflash",function(){e.attr("title","Flash required").tooltip("fixTitle").tooltip("show")})})}(jQuery);
++!function(a){"use strict";a(function(){a(".tooltip-demo").tooltip({selector:'[data-toggle="tooltip"]',container:"body"}),a(".popover-demo").popover({selector:'[data-toggle="popover"]',container:"body"}),a(".tooltip-test").tooltip(),a(".popover-test").popover(),a(".bs-docs-popover").popover(),a("#loading-example-btn").on("click",function(){var b=a(this);b.button("loading"),setTimeout(function(){b.button("reset")},3e3)}),a("#exampleModal").on("show.bs.modal",function(b){var c=a(b.relatedTarget),d=c.data("whatever"),e=a(this);e.find(".modal-title").text("New message to "+d),e.find(".modal-body input").val(d)}),a(".bs-docs-activate-animated-progressbar").on("click",function(){a(this).prev(".progress-striped").toggleClass("progress-animated")}),ZeroClipboard.config({moviePath:"/assets/flash/ZeroClipboard.swf",hoverClass:"btn-clipboard-hover"}),a(".highlight").each(function(){var b='<div class="zero-clipboard"><span class="btn-clipboard">Copy</span></div>';a(this).before(b)});var b=new ZeroClipboard(a(".btn-clipboard")),c=a("#global-zeroclipboard-html-bridge");b.on("load",function(){c.data("placement","top").attr("title","Copy to clipboard").tooltip()}),b.on("dataRequested",function(b){var c=a(this).parent().nextAll(".highlight").first();b.setText(c.text())}),b.on("complete",function(){c.attr("title","Copied!").tooltip("fixTitle").tooltip("show").attr("title","Copy to clipboard").tooltip("fixTitle")}),b.on("noflash wrongflash",function(){c.attr("title","Flash required").tooltip("fixTitle").tooltip("show")})})}(jQuery);
--- /dev/null
- .bs-brand-item .svg {
- width: 9rem;
- height: 9rem;
- }
+/*!
+ * Bootstrap Docs (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under the Creative Commons Attribution 3.0 Unported License. For
+ * details, see http://creativecommons.org/licenses/by/3.0/.
+ */
+
+// Import Bootstrap variables and mixins
+@import "../../../scss/variables";
+@import "../../../scss/mixins";
+
+// Import the syntax highlighting
+@import "syntax";
+
+// Local docs variables
+$bs-purple: #563d7c;
+$bs-purple-light: #cdbfe3;
+$bs-yellow: #ffe484;
+$bs-danger: #d9534f;
+$bs-warning: #f0ad4e;
+$bs-info: #5bc0de;
+
+
+// Scaffolding
+//
+// Update the basics of our documents to prep for docs content.
+
+body {
+ position: relative; // For scrollspy?
+}
+
+
+//
+// Buttons
+//
+
+.btn-outline {
+ color: $bs-purple;
+ background-color: transparent;
+ border-color: $bs-purple;
+
+ &:hover,
+ &:focus,
+ &:active {
+ color: #fff;
+ background-color:$bs-purple;
+ border-color: $bs-purple;
+ }
+}
+
+.btn-outline-inverse {
+ color: #fff;
+ background-color: transparent;
+ border-color: $bs-purple-light;
+
+ &:hover,
+ &:focus,
+ &:active {
+ color: $bs-purple;
+ text-shadow: none;
+ background-color: #fff;
+ border-color: #fff;
+ }
+}
+
+
+//
+// Bootstrap "B" icon
+//
+
+.bs-docs-booticon {
+ display: block;
+ width: 9rem;
+ height: 9rem;
+ font-size: 6.5rem;
+ font-weight: 500;
+ line-height: 8.8rem;
+ color: #fff;
+ text-align: center;
+ cursor: default;
+ background-color: $bs-purple;
+ border-radius: 15%;
+
+ &.inverse {
+ color: $bs-purple;
+ background-color: #fff;
+ }
+ &.outline {
+ background-color: transparent;
+ border: 1px solid $bs-purple-light;
+ }
+}
+
+
+//
+// Main navigation
+//
+
+.bs-docs-nav {
+ margin-bottom: 0;
+ background-color: #563d7c;
+ border-bottom: 0;
+}
+.bs-home-nav .bs-nav-b {
+ display: none;
+}
+.bs-docs-nav .navbar-brand,
+.bs-docs-nav .navbar-nav > li > a {
+ font-weight: 500;
+ color: #cdbfe3;
+}
+.bs-docs-nav .navbar-brand {
+ padding-right: .25rem;
+ padding-left: .25rem;
+ color: #fff;
+}
+.bs-docs-nav .navbar-nav > li > a:hover,
+.bs-docs-nav .navbar-nav > .active > a,
+.bs-docs-nav .navbar-nav > .active > a:hover {
+ color: #fff;
+ background-color: #563d7c;
+}
+.bs-docs-nav .navbar-toggle .icon-bar {
+ background-color: #fff;
+}
+.bs-docs-nav .navbar-header .navbar-toggle {
+ border-color: #322f38;
+}
+.bs-docs-nav .navbar-header .navbar-toggle:hover,
+.bs-docs-nav .navbar-header .navbar-toggle:focus {
+ background-color: #29262f;
+ border-color: #29262f;
+}
+
+
+//
+// Footer
+//
+
+.bs-docs-footer {
+ margin-top: 6rem;
+ font-size: 85%;
+ color: #777;
+ text-align: center;
+ border-top: 1px solid #e5e5e5;
+}
+.bs-docs-footer-links {
+ padding-left: 0;
+ margin-top: 20px;
+ color: #999;
+}
+.bs-docs-footer-links li {
+ display: inline;
+ padding: 0 2px;
+}
+.bs-docs-footer-links li:first-child {
+ padding-left: 0;
+}
+
+@media (min-width: 768px) {
+ .bs-docs-footer p {
+ margin-bottom: 0;
+ }
+ .bs-docs .bs-docs-footer {
+ text-align: left;
+ }
+}
+
+
+//
+// Social buttons
+//
+
+.bs-docs-social {
+ margin-bottom: 1.5rem;
+ text-align: center;
+}
+.bs-docs-social-buttons {
+ display: inline-block;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+.bs-docs-social-buttons li {
+ display: inline-block;
+ padding: .25rem .5rem;
+ line-height: 1;
+}
+.bs-docs-social-buttons .twitter-follow-button {
+ width: 225px !important;
+}
+.bs-docs-social-buttons .twitter-share-button {
+ width: 98px !important;
+}
+
+// Style the GitHub buttons via CSS instead of inline attributes
+.github-btn {
+ overflow: hidden;
+ border: 0;
+}
+
+@media (min-width: 768px) {
+ .bs-docs .bs-docs-social {
+ margin-left: -.5rem;
+ text-align: left;
+ }
+}
+
+
+//
+// Homepage
+//
+
+// Masthead (headings and download button)
+.bs-docs-masthead {
+ position: relative;
+ padding: 2rem 1rem;
+ color: #cdbfe3;
+ text-align: center;
+ text-shadow: 0 1px 0 rgba(0,0,0,.1);
+ background-color: #6f5499;
+ @include gradient-vertical($bs-purple, #6f5499);
+}
+
+.bs-docs-masthead .bs-docs-booticon {
+ margin: 0 auto 2rem;
+}
+.bs-docs-masthead h1 {
+ font-weight: 300;
+ line-height: 1;
+ color: #fff;
+}
+.bs-docs-masthead .lead {
+ margin: 0 auto 2rem;
+ font-size: 1.25rem;
+ color: #fff;
+}
+.bs-docs-masthead .version {
+ margin-top: -1rem;
+ margin-bottom: 2rem;
+ color: #9783b9;
+}
+.bs-docs-masthead .btn {
+ width: 100%;
+ padding: 1rem 2rem;
+ font-size: 1.25rem;
+}
+
+@media (min-width: 480px) {
+ .bs-docs-masthead .btn {
+ width: auto;
+ }
+}
+
+@media (min-width: 768px) {
+ .bs-docs-masthead {
+ padding: 5rem 0;
+ }
+ .bs-docs-masthead h1 {
+ font-size: 4rem;
+ }
+ .bs-docs-masthead .lead {
+ font-size: 1.5rem;
+ }
+}
+
+@media (min-width: 992px) {
+ .bs-docs-masthead .lead {
+ width: 80%;
+ font-size: 2rem;
+ }
+}
+
+
+//
+// Page headers
+//
+
+.bs-docs-header {
+ padding-top: 2rem;
+ padding-bottom: 2rem;
+ margin-bottom: 2rem;
+ text-align: center;
+ background-color: $bs-purple;
+
+ .container {
+ position: relative;
+ }
+
+ h1 {
+ margin-top: 0;
+ color: #fff;
+ }
+
+ p {
+ margin-bottom: 0;
+ font-weight: 300;
+ color: rgba(255,255,255,.65);
+ }
+
+ @media (min-width: 768px) {
+ text-align: left;
+
+ h1 {
+ font-size: 4rem;
+ line-height: 1;
+ }
+ }
+
+ @media (min-width: 992px) {
+ padding-top: 4rem;
+ padding-bottom: 4rem;
+
+ h1,
+ p {
+ margin-right: 380px;
+ }
+ }
+}
+
+
+//
+// Carbon ads
+//
+
+.carbonad {
+ width: auto !important;
+ height: auto !important;
+ padding: 1.25rem !important;
+ margin: 2rem -2rem -2rem !important;
+ overflow: hidden; /* clearfix */
+ font-size: .8rem !important;
+ line-height: 1rem !important;
+ color: $bs-purple-light !important;
+ text-align: left;
+ background: transparent !important;
+ border: solid #866ab3 !important;
+ border-width: 1px 0 !important;
+}
+.carbonad-img {
+ margin: 0 !important;
+}
+.carbonad-text,
+.carbonad-tag {
+ display: block !important;
+ float: none !important;
+ width: auto !important;
+ height: auto !important;
+ margin-left: 145px !important;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important;
+}
+.carbonad-text {
+ padding-top: 0 !important;
+}
+.carbonad-tag {
+ color: inherit !important;
+ text-align: left !important;
+}
+.carbonad-text a,
+.carbonad-tag a {
+ color: #fff !important;
+}
+.carbonad #azcarbon > img {
+ display: none; // hide what I assume are tracking images
+}
+
+// In the lighter page headers
+// .bs-docs-header .carbonad {
+// color: #777;
+// background-color: #fff !important;
+// border-color: #eee !important;
+// }
+// .bs-docs-header .carbonad-text a,
+// .bs-docs-header .carbonad-tag a {
+// color: $bs-purple !important;
+// }
+
+@media (min-width: 480px) {
+ .carbonad {
+ width: 330px !important;
+ margin: 1.5rem auto !important;
+ border-width: 1px !important;
+ border-radius: .25rem;
+ }
+ .bs-docs-masthead .carbonad {
+ margin: 3rem auto 0 !important;
+ }
+}
+
+@media (min-width: 768px) {
+ .carbonad {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+}
+
+@media (min-width: 992px) {
+ .carbonad {
+ position: absolute;
+ top: 2rem;
+ right: 4rem;
+ width: 330px !important;
+ padding: 1rem !important;
+ margin: 0 !important;
+ }
+ .bs-docs-masthead .carbonad {
+ position: static;
+ }
+}
+
+
+//
+// Homepage featurettes
+//
+
+.bs-docs-featurette {
+ padding-top: 3rem;
+ padding-bottom: 3rem;
+ font-size: 1rem;
+ line-height: 1.5;
+ color: #555;
+ text-align: center;
+ background-color: #fff;
+ border-bottom: 1px solid #e5e5e5;
+}
+.bs-docs-featurette + .bs-docs-footer {
+ margin-top: 0;
+ border-top: 0;
+}
+
+.bs-docs-featurette-title {
+ margin-bottom: .5rem;
+ font-size: 2rem;
+ font-weight: normal;
+ color: #333;
+}
+.half-rule {
+ width: 6rem;
+ margin: 2.5rem auto;
+}
+.bs-docs-featurette h3 {
+ margin-bottom: .5rem;
+ font-weight: normal;
+ color: #333;
+}
+.bs-docs-featurette-img {
+ display: block;
+ margin-bottom: 1.25rem;
+ color: #333;
+}
+.bs-docs-featurette-img:hover {
+ color: $brand-primary;
+ text-decoration: none;
+}
+.bs-docs-featurette-img img {
+ display: block;
+ margin-bottom: 1rem;
+}
+
+@media (min-width: 480px) {
+ .bs-docs-featurette .img-responsive {
+ margin-top: 2rem;
+ }
+}
+@media (min-width: 768px) {
+ .bs-docs-featurette {
+ padding-top: 6rem;
+ padding-bottom: 6rem;
+ }
+ .bs-docs-featurette-title {
+ font-size: 2.5rem;
+ }
+ .bs-docs-featurette .lead {
+ max-width: 80%;
+ margin-right: auto;
+ margin-left: auto;
+ }
+ .bs-docs-featurette .img-responsive {
+ margin-top: 0;
+ }
+}
+
+
+//
+// Featured Expo sites
+//
+
+.bs-docs-featured-sites {
+ margin-right: -1px;
+ margin-left: -1px;
+}
+.bs-docs-featured-sites .col-xs-6 {
+ padding: 1px;
+}
+.bs-docs-featured-sites .img-responsive {
+ margin-top: 0;
+}
+
+@media (min-width: 768px) {
+ .bs-docs-featured-sites .col-sm-3:first-child img {
+ border-top-left-radius: .25rem;
+ border-bottom-left-radius: .25rem;
+ }
+ .bs-docs-featured-sites .col-sm-3:last-child img {
+ border-top-right-radius: .25rem;
+ border-bottom-right-radius: .25rem;
+ }
+}
+
+
+//
+// Examples
+//
+
+.bs-examples .img-thumbnail {
+ margin-bottom: .75rem;
+}
+.bs-examples h4 {
+ margin-bottom: .25rem;
+}
+.bs-examples p {
+ margin-bottom: 1.25rem;
+}
+
+@media (max-width: 480px) {
+ .bs-examples {
+ margin-right: -.75rem;
+ margin-left: -.75rem;
+ }
+ .bs-examples > [class^="col-"] {
+ padding-right: .75rem;
+ padding-left: .75rem;
+ }
+}
+
+
+//
+// Custom container
+//
+
+.bs-docs-container {
+ position: relative;
+ max-width: 62rem;
+ padding: 1rem;
+ margin-right: auto;
+ margin-left: auto;
+
+ @media (min-width: 768px) {
+ padding: 2rem;
+ }
+
+ @media (min-width: 992px) {
+ padding: 2rem 4rem;
+ }
+
+ > table {
+ display: block;
+ width: 100%;
+ max-width: 100%;
+ overflow-y: auto;
+ margin-bottom: $spacer;
+ // border: 1px solid $table-border-color;
+
+ // Cells
+ > thead,
+ > tbody,
+ > tfoot {
+ > tr {
+ > th,
+ > td {
+ padding: $table-cell-padding;
+ line-height: $line-height-base;
+ vertical-align: top;
+ // border-top: 1px solid $table-border-color;
+ border: 1px solid $table-border-color;
+ }
+ }
+ }
+ }
+}
+
+
+//
+// Side navigation
+//
+
+.bs-docs-sidebar {
+ padding: 0;
+ margin-bottom: 0;
+ background-color: #322f38;
+}
+
+.bs-docs-sidebar .navbar-toggle {
+ position: absolute;
+ top: 5px;
+ right: 0;
+ z-index: 5;
+}
+.bs-docs-sidebar .navbar-toggle .icon-bar {
+ background-color: #fff;
+}
+
+.bs-docs-sidebar .navbar-header {
+ float: none;
+ margin-right: -15px;
+}
+
+.bs-docs-sidebar .navbar-collapse {
+ padding: 0;
+ border: 0;
+}
+
+@media (min-width: 992px) {
+ .bs-docs {
+ padding-left: 240px;
+ }
+ .bs-docs-sidebar {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 100; // Ensure scrolling always works in Safari
+ width: 240px;
+ overflow-x: hidden;
+ overflow-y: auto;
+ @include gradient-vertical(#29262f, #322f38);
+ }
+}
+
+.bs-docs-sidebar .navbar-brand {
+ display: block;
+ float: none;
+ height: auto;
+ padding: 1.75rem 1.25rem;
+ font-size: 20px;
+ font-weight: 500;
+ line-height: 1;
+ color: #fff;
+}
+.bs-docs-sidebar-brand:hover,
+.bs-docs-sidebar-brand:focus {
+ color: #fff;
+ text-decoration: none;
+}
+
+.bs-docs-search {
+ position: relative;
+ margin-right: 1.25rem;
+ margin-bottom: 1.5rem;
+ margin-left: 1.25rem;
+
+ .form-control {
+ height: 2.45rem;
+ padding-top: .4rem;
+ padding-bottom: .4rem;
+ color: rgba(255,255,255,.5);
+ background-color: lighten(#29262f, 10%);
+ border-color: lighten(#29262f, 15%);
+
+ &:focus {
+ border-color: rgba(255,255,255,.25);
+ box-shadow: 0 0 .5rem rgba(255,255,255,.25);
+ }
+ }
+}
+
+.bs-docs-search-results {
+ top: 108%;
+ right: 0;
+ display: block;
+ padding: 0;
+ overflow: hidden;
+ font-size: .9rem;
+ border: 0;
+
+ > li > a {
+ padding-left: .75rem;
+ padding-right: .75rem;
+ }
+
+ > li:first-child { margin-top: .25rem; }
+ > li:last-child { margin-bottom: .25rem; }
+
+ > .no-results {
+ padding: .75rem 1rem;
+ color: #7a7a7a;
+ text-align: center;
+ }
+}
+
+
+.bs-docs-sidenav {
+ display: none;
+}
+
+.bs-docs-toc-link {
+ display: block;
+ padding: 4px 20px;
+ font-size: 16px;
+ color: #fff;
+}
+.bs-docs-toc-link:hover,
+.bs-docs-toc-link:focus {
+ color: $bs-yellow;
+ text-decoration: none;
+}
+.active > .bs-docs-toc-link {
+ font-weight: 500;
+ color: $bs-yellow;
+}
+.active > .bs-docs-sidenav {
+ display: block;
+}
+
+.bs-docs-toc-item.active {
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+.bs-docs-toc-item:first-child {
+ margin-top: 0;
+}
+.bs-docs-toc-item:last-child {
+ margin-bottom: 30px;
+}
+
+// All levels of nav
+.bs-docs-sidebar .nav > li > a {
+ display: block;
+ padding: 4px 20px;
+ font-size: 14px;
+ color: #99979c;
+}
+.bs-docs-sidebar .nav > li > a:hover,
+.bs-docs-sidebar .nav > li > a:focus {
+ color: $bs-yellow;
+ text-decoration: none;
+ background-color: transparent;
+}
+.bs-docs-sidebar .nav > .active > a,
+.bs-docs-sidebar .nav > .active:hover > a,
+.bs-docs-sidebar .nav > .active:focus > a {
+ font-weight: 500;
+ color: $bs-yellow;
+ background-color: transparent;
+}
+
+// Nav: second level (shown on .active)
+.bs-docs-sidebar .nav .nav {
+ display: none; // Hide by default, but at >768px, show it
+ padding-bottom: 10px;
+}
+.bs-docs-sidebar .nav .nav > li > a {
+ padding-top: 1px;
+ padding-bottom: 1px;
+ padding-left: 30px;
+ font-size: 12px;
+ font-weight: normal;
+}
+.bs-docs-sidebar .nav .nav > .active > a,
+.bs-docs-sidebar .nav .nav > .active:hover > a,
+.bs-docs-sidebar .nav .nav > .active:focus > a {
+ font-weight: 500;
+}
+
+.bs-docs-sidebar .nav > .active > .nav {
+ display: block;
+}
+.bs-docs-sidebar .nav .nav > li > a {
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-left: 30px;
+ font-size: 13px;
+}
+
+
+//
+// Docs sections
+//
+
+.bs-docs-content {
+ > h1 {
+ padding-top: 2rem;
+ margin-top: 3rem;
+
+ &:first-child {
+ margin-top: 0;
+ }
+
+ + p {
+ font-size: 1.25rem;
+ font-weight: 300;
+ }
+ }
+
+ > h2 {
+ margin-top: 3rem;
+ font-weight: normal;
+ }
+
+ > h3 {
+ margin-top: 1.5rem;
+ }
+}
+
+
+//
+// Callouts
+//
+
+.bs-callout {
+ padding: 1.25rem;
+ margin-top: 1.25rem;
+ margin-bottom: 1.25rem;
+ border: 1px solid #eee;
+ border-left-width: .25rem;
+ border-radius: .25rem;
+}
+.bs-callout h4 {
+ margin-top: 0;
+ margin-bottom: .25rem;
+}
+.bs-callout p:last-child {
+ margin-bottom: 0;
+}
+.bs-callout code {
+ border-radius: .25rem;
+}
+
+.bs-callout + .bs-callout {
+ margin-top: -.25rem;
+}
+
+// Variations
+@mixin bs-callout-variant($color) {
+ border-left-color: $color;
+
+ h4 { color: $color; }
+}
+.bs-callout-danger { @include bs-callout-variant($bs-danger); }
+.bs-callout-warning { @include bs-callout-variant($bs-warning); }
+.bs-callout-info { @include bs-callout-variant($bs-info); }
+
+
+//
+// Color swatches
+//
+
+.color-swatches {
+ margin: 0 -5px;
+ overflow: hidden; // clearfix
+}
+
+.color-swatch {
+ float: left;
+ width: 4rem;
+ height: 4rem;
+ margin-right: .25rem;
+ margin-left: .25rem;
+ border-radius: .25rem;
+
+ @media (min-width: 768px) {
+ width: 6rem;
+ height: 6rem;
+ }
+}
+
+// Docs colors
+.color-swatches {
+ .bs-purple {
+ background-color: $bs-purple;
+ }
+ .bs-purple-light {
+ background-color: $bs-purple-light;
+ }
+ .bs-purple-lighter {
+ background-color: #e5e1ea;
+ }
+ .bs-gray {
+ background-color: #f9f9f9;
+ }
+}
+
+
+//
+// Team members
+//
+
+.bs-team {
+ .team-member {
+ line-height: 2rem;
+ color: #555;
+ }
+ .team-member:hover {
+ color: #333;
+ text-decoration: none;
+ }
+ .github-btn {
+ float: right;
+ width: 180px;
+ height: 1.25rem;
+ margin-top: .25rem;
+ }
+ img {
+ float: left;
+ width: 2rem;
+ margin-right: .5rem;
+ border-radius: .25rem;
+ }
+}
+
+
+// Wall of Browser Bugs
+//
+// Better display for the responsive table on the Wall of Browser Bugs.
+
+.bs-docs-browser-bugs {
+ td p {
+ margin-bottom: 0;
+ }
+ th:first-child {
+ width: 18%;
+ }
+}
+
+//
+// Grid examples
+//
+
+.bs-example > .row {
+ margin-bottom: 1rem;
+}
+.bs-example > .row > [class^="col-"] {
+ padding-top: .75rem;
+ padding-bottom: .75rem;
+ background-color: rgba(86,61,124,.15);
+ border: 1px solid rgba(86,61,124,.2);
+}
+
+
+//
+// Docs examples
+//
+
+.bs-example {
+ position: relative;
+ padding: 1.5rem;
+ margin-top: 1rem;
+ margin-bottom: -1rem;
+ border: solid #f7f7f9;
+ border-width: .2rem 0 0;
+ @include clearfix();
+
+ @media (min-width: 480px) {
+ border-width: .2rem;
+ }
+
+ + p {
+ margin-top: 2rem;
+ }
+
+ // Undo width of container
+ .container {
+ width: auto;
+ }
+
+ // Card examples should be horizontal
+ > .card {
+ float: left;
+ max-width: 15rem;
+ margin: .25rem;
+ }
+
+ > .nav + .nav {
+ margin-top: 1rem;
+ }
+}
+
+
+// Tweak content of examples for optimum awesome
+.bs-example > *:last-child,
+.bs-example > .table-responsive:last-child > .table {
+ margin-bottom: 0 !important;
+}
+.bs-example > .close {
+ float: none;
+}
+
+// Typography
+.bs-example-type .table .type-info {
+ color: #999;
+ vertical-align: middle;
+}
+.bs-example-type .table td {
+ padding: 1rem 0;
+ border-color: #eee;
+}
+.bs-example-type .table tr:first-child td {
+ border-top: 0;
+}
+.bs-example-type h1,
+.bs-example-type h2,
+.bs-example-type h3,
+.bs-example-type h4,
+.bs-example-type h5,
+.bs-example-type h6 {
+ margin: 0;
+}
+
+// Contextual background colors
+.bs-example-bg-classes p {
+ padding: 1rem;
+}
+
+// Images
+.bs-example > .img-circle,
+.bs-example > .img-rounded,
+.bs-example > .img-thumbnail {
+ margin: .25rem;
+}
+
+// Tables
+// .bs-example > .table-responsive > .table {
+// background-color: #fff;
+// }
+
+// Buttons
+.bs-example > .btn-group {
+ margin-top: .25rem;
+ margin-bottom: .25rem;
+}
+.bs-example > .btn-toolbar + .btn-toolbar {
+ margin-top: .5rem;
+}
+
+// Forms
+.bs-example-control-sizing select,
+.bs-example-control-sizing input[type="text"] + input[type="text"] {
+ margin-top: .5rem;
+}
+.bs-example-form .input-group {
+ margin-bottom: .5rem;
+}
+.bs-example > textarea.form-control {
+ resize: vertical;
+}
+
+// List groups
+.bs-example > .list-group {
+ max-width: 400px;
+}
+
+// Navbars
+.bs-example .navbar:last-child {
+ margin-bottom: 0;
+}
+.bs-navbar-top-example,
+.bs-navbar-bottom-example {
+ z-index: 1;
+ padding: 0;
+ overflow: hidden; // cut the drop shadows off
+}
+.bs-navbar-top-example .navbar-header,
+.bs-navbar-bottom-example .navbar-header {
+ margin-left: 0;
+}
+.bs-navbar-top-example .navbar-fixed-top,
+.bs-navbar-bottom-example .navbar-fixed-bottom {
+ position: relative;
+ margin-right: 0;
+ margin-left: 0;
+}
+.bs-navbar-top-example {
+ padding-bottom: 45px;
+}
+.bs-navbar-top-example .navbar-fixed-top {
+ top: -1px;
+}
+.bs-navbar-bottom-example {
+ padding-top: 45px;
+}
+.bs-navbar-bottom-example .navbar-fixed-bottom {
+ bottom: -1px;
+}
+.bs-navbar-bottom-example .navbar {
+ margin-bottom: 0;
+}
+@media (min-width: 768px) {
+ .bs-navbar-top-example .navbar-fixed-top,
+ .bs-navbar-bottom-example .navbar-fixed-bottom {
+ position: absolute;
+ }
+}
+
+// Pagination
+.bs-example .pagination {
+ margin-top: .5rem;
+ margin-bottom: .5rem;
+}
+
+// Pager
+.bs-example > .pager {
+ margin-top: 0;
+}
+
+// Example modals
+.bs-example-modal {
+ background-color: #f5f5f5;
+}
+.bs-example-modal .modal {
+ position: relative;
+ top: auto;
+ right: auto;
+ bottom: auto;
+ left: auto;
+ z-index: 1;
+ display: block;
+}
+.bs-example-modal .modal-dialog {
+ left: auto;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+// Example dropdowns
+.bs-example > .dropdown > .dropdown-toggle {
+ float: left;
+}
+.bs-example > .dropdown > .dropdown-menu {
+ position: static;
+ display: block;
+ margin-bottom: .25rem;
+ clear: left;
+}
+
+// Example tabbable tabs
+.bs-example-tabs .nav-tabs {
+ margin-bottom: 1rem;
+}
+
+// Tooltips
+.bs-example-tooltips {
+ text-align: center;
+}
+.bs-example-tooltips > .btn {
+ margin-top: .25rem;
+ margin-bottom: .25rem;
+}
+
+// Popovers
+.bs-example-popover {
+ padding-bottom: 1.5rem;
+ background-color: #f9f9f9;
+}
+.bs-example-popover .popover {
+ position: relative;
+ display: block;
+ float: left;
+ width: 260px;
+ margin: 1.25rem;
+}
+
+// Tooltips
+.bs-example-tooltip .tooltip {
+ position: relative;
+ display: inline-block;
+ margin: 10px 20px;
+ opacity: 1;
+}
+
+// Scrollspy demo on fixed height div
+.scrollspy-example {
+ position: relative;
+ height: 200px;
+ margin-top: .5rem;
+ overflow: auto;
+}
+
+
+//
+// Code snippets
+//
+
+.highlight {
+ padding: 1.5rem;
+ margin-top: 1rem;
+ margin-bottom: 1rem;
+ background-color: #f7f7f9;
+}
+.highlight pre {
+ padding: 0;
+ margin-top: 0;
+ margin-bottom: 0;
+ background-color: transparent;
+ border: 0;
+}
+.highlight pre code {
+ font-size: inherit;
+ color: $gray-dark; // Effectively the base text color
+}
+
+
+//
+// Responsive tests
+//
+
+// Responsive (scrollable) doc tables
+.table-responsive .highlight pre {
+ white-space: normal;
+}
+
+// Utility classes table
+.bs-table th small,
+.responsive-utilities th small {
+ display: block;
+ font-weight: normal;
+ color: #999;
+}
+.responsive-utilities tbody th {
+ font-weight: normal;
+}
+.responsive-utilities td {
+ text-align: center;
+}
+.responsive-utilities td.is-visible {
+ color: #468847;
+ background-color: #dff0d8 !important;
+}
+.responsive-utilities td.is-hidden {
+ color: #ccc;
+ background-color: #f9f9f9 !important;
+}
+
+// Responsive tests
+.responsive-utilities-test {
+ margin-top: .25rem;
+}
+.responsive-utilities-test .col-xs-6 {
+ margin-bottom: .5rem;
+}
+.responsive-utilities-test span {
+ display: block;
+ padding: 1rem .5rem;
+ font-size: 1rem;
+ font-weight: bold;
+ line-height: 1.1;
+ text-align: center;
+ border-radius: .25rem;
+}
+.visible-on,
+.hidden-on {
+ .col-xs-6 {
+ .hidden-xs,
+ .hidden-sm,
+ .hidden-md,
+ .hidden-lg {
+ color: #999;
+ border: 1px solid #ddd;
+ }
+ }
+}
+.visible-on,
+.hidden-on {
+ .col-xs-6 {
+ .visible-xs-block,
+ .visible-sm-block,
+ .visible-md-block,
+ .visible-lg-block {
+ color: #468847;
+ background-color: #dff0d8;
+ border: 1px solid #d6e9c6;
+ }
+ }
+}
+
+//
+// Brand guidelines
+//
+
+// Logo series wrapper
+.bs-brand-logos {
+ display: table;
+ width: 100%;
+ margin-bottom: 1rem;
+ overflow: hidden;
+ color: #563d7c;
+ background-color: #f9f9f9;
+ border-radius: .25rem;
+}
+
+// Individual items
+.bs-brand-item {
+ padding: 4rem 0;
+ text-align: center;
+}
+.bs-brand-item + .bs-brand-item {
+ border-top: 1px solid #fff;
+}
+.bs-brand-logos .inverse {
+ color: #fff;
+ background-color: #563d7c;
+}
+
+// Heading content within
+.bs-brand-item h1,
+.bs-brand-item h3 {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.bs-brand-item .bs-docs-booticon {
+ margin-right: auto;
+ margin-left: auto;
+}
+
+// Make the icons stand out on what is/isn't okay
+// .bs-brand-item .glyphicon {
+// width: 30px;
+// height: 30px;
+// margin: 10px auto -10px;
+// line-height: 30px;
+// color: #fff;
+// border-radius: 50%;
+// }
+// .bs-brand-item .glyphicon-ok {
+// background-color: #5cb85c;
+// }
+// .bs-brand-item .glyphicon-remove {
+// background-color: #d9534f;
+// }
+
+@media (min-width: 768px) {
+ .bs-brand-item {
+ display: table-cell;
+ width: 1%;
+ }
+ .bs-brand-item + .bs-brand-item {
+ border-top: 0;
+ border-left: 1px solid #fff;
+ }
+ .bs-brand-item h1 {
+ font-size: 4rem;
+ }
+}
+
+
+//
+// ZeroClipboard styles
+//
+
+.zero-clipboard {
+ position: relative;
+ display: none;
+ float: right;
+}
+.btn-clipboard {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 10;
+ display: block;
+ padding: .25rem .5rem;
+ font-size: 75%;
+ color: #818a91;
+ cursor: pointer;
+ background-color: #eceeef;
+ border-radius: 0 .2rem 0 .2rem;
+}
+.btn-clipboard-hover {
+ color: #fff;
+ background-color: #027de7;
+}
+
+@media (min-width: 768px) {
+ .zero-clipboard {
+ display: block;
+ }
+}
+
+
+//
+// Miscellaneous
+//
+
+// Pseudo :focus state for showing how it looks in the docs
+#focusedInput {
+ border-color: $input-border-focus;
+ outline: 0;
+ outline: thin dotted \9; // IE9
+ box-shadow: 0 0 .5rem $input-box-shadow-focus;
+}
--- /dev/null
- <button type="button" class="close" data-dismiss="alert">
+---
+layout: page
+title: Alerts
+---
+
+Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages. For inline dismissal, use the [alerts jQuery plugin]({{ site.baseurl }}javascript/#alerts).
+
+Wrap any text and an optional dismiss button in `.alert` and one of the four contextual classes (e.g., `.alert-success`) for basic alert messages.
+
+<div class="bs-callout bs-callout-info">
+ <h4>No default class</h4>
+ <p>Alerts don't have default classes, only base and modifier classes. A default gray alert doesn't make too much sense, so you're required to specify a type via contextual class. Choose from success, info, warning, or danger.</p>
+</div>
+
+{% example html %}
+<div class="alert alert-success" role="alert">
+ <strong>Well done!</strong> You successfully read this important alert message.
+</div>
+<div class="alert alert-info" role="alert">
+ <strong>Heads up!</strong> This alert needs your attention, but it's not super important.
+</div>
+<div class="alert alert-warning" role="alert">
+ <strong>Warning!</strong> Better check yourself, you're not looking too good.
+</div>
+<div class="alert alert-danger" role="alert">
+ <strong>Oh snap!</strong> Change a few things up and try submitting again.
+</div>
+{% endexample %}
+
+### Dismissing
+
+Build on any alert by adding an optional `.alert-dismissible` and [close button]().
+
+{% example html %}
+<div class="alert alert-warning alert-dismissible" role="alert">
++ <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+ <span aria-hidden="true">×</span>
+ <span class="sr-only">Close</span>
+ </button>
+ <strong>Warning!</strong> Better check yourself, you're not looking too good.
+</div>
+{% endexample %}
+
+<div class="bs-callout bs-callout-warning">
+ <h4>Ensure proper behavior across all devices</h4>
+ <p>Be sure to use the <code><button></code> element with the <code>data-dismiss="alert"</code> data attribute.</p>
+</div>
+
+### Link color
+
+Use the `.alert-link` utility class to quickly provide matching colored links within any alert.
+
+{% example html %}
+<div class="alert alert-success" role="alert">
+ <strong>Well done!</strong> You successfully read <a href="#" class="alert-link">this important alert message</a>.
+</div>
+<div class="alert alert-info" role="alert">
+ <strong>Heads up!</strong> This <a href="#" class="alert-link">alert needs your attention</a>, but it's not super important.
+</div>
+<div class="alert alert-warning" role="alert">
+ <strong>Warning!</strong> Better check yourself, you're <a href="#" class="alert-link">not looking too good</a>.
+</div>
+<div class="alert alert-danger" role="alert">
+ <strong>Oh snap!</strong> <a href="#" class="alert-link">Change a few things up</a> and try submitting again.
+</div>
+{% endexample %}
--- /dev/null
- Instead of applying button sizing classes to every button in a group, just add `.btn-group-*` to the `.btn-group`.
+---
+layout: page
+title: Button group
+---
+
+Group a series of buttons together on a single line with the button group. Add on optional JavaScript radio and checkbox style behavior with [our buttons plugin](../javascript/#buttons).
+
+<div class="bs-callout bs-callout-warning">
+ <h4>Tooltips & popovers in button groups require special setting</h4>
+ <p>When using tooltips or popovers on elements within a <code>.btn-group</code>, you'll have to specify the option <code>container: 'body'</code> to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip or popover is triggered).</p>
+</div>
+
+<div class="bs-callout bs-callout-warning">
+ <h4>Ensure correct <code>role</code> and provide a label</h4>
+ <p>In order for assistive technologies – such as screen readers – to convey that a series of buttons is grouped, an appropriate <code>role</code> attribute needs to be provided. For button groups, this would be <code>role="group"</code>, while toolbars should have a <code>role="toolbar"</code>.</p>
+ <p>One exception are groups which only contain a single control (for instance the <a href="#btn-groups-justified">justified button groups</a> with <code><button></code> elements) or a dropdown.</p>
+ <p>In addition, groups and toolbars should be given an explicit label, as most assistive technologies will otherwise not announce them, despite the presence of the correct <code>role</code> attribute. In the examples provided here, we use <code>aria-label</code>, but alternatives such as <code>aria-labelledby</code> can also be used.</p>
+</div>
+
+### Basic example
+
+Wrap a series of buttons with `.btn` in `.btn-group`.
+
+{% example html %}
+<div class="btn-group" role="group" aria-label="Basic example">
+ <button type="button" class="btn btn-secondary">Left</button>
+ <button type="button" class="btn btn-secondary">Middle</button>
+ <button type="button" class="btn btn-secondary">Right</button>
+</div>
+{% endexample %}
+
+### Button toolbar
+
+Combine sets of button groups into button toolbars for more complex components.
+
+{% example html %}
+<div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups">
+ <div class="btn-group" role="group" aria-label="First group">
+ <button type="button" class="btn btn-secondary">1</button>
+ <button type="button" class="btn btn-secondary">2</button>
+ <button type="button" class="btn btn-secondary">3</button>
+ <button type="button" class="btn btn-secondary">4</button>
+ </div>
+ <div class="btn-group" role="group" aria-label="Second group">
+ <button type="button" class="btn btn-secondary">5</button>
+ <button type="button" class="btn btn-secondary">6</button>
+ <button type="button" class="btn btn-secondary">7</button>
+ </div>
+ <div class="btn-group" role="group" aria-label="Third group">
+ <button type="button" class="btn btn-secondary">8</button>
+ </div>
+</div>
+{% endexample %}
+
+### Sizing
+
++Instead of applying button sizing classes to every button in a group, just add `.btn-group-*` to each `.btn-group`, including each one when nesting multiple groups.
+
+<div class="bs-example">
+ <div class="btn-group btn-group-lg" role="group" aria-label="Large button group">
+ <button type="button" class="btn btn-secondary">Left</button>
+ <button type="button" class="btn btn-secondary">Middle</button>
+ <button type="button" class="btn btn-secondary">Right</button>
+ </div>
+ <br>
+ <div class="btn-group" role="group" aria-label="Default button group">
+ <button type="button" class="btn btn-secondary">Left</button>
+ <button type="button" class="btn btn-secondary">Middle</button>
+ <button type="button" class="btn btn-secondary">Right</button>
+ </div>
+ <br>
+ <div class="btn-group btn-group-sm" role="group" aria-label="Small button group">
+ <button type="button" class="btn btn-secondary">Left</button>
+ <button type="button" class="btn btn-secondary">Middle</button>
+ <button type="button" class="btn btn-secondary">Right</button>
+ </div>
+ <br>
+ <div class="btn-group btn-group-xs" role="group" aria-label="Extra small button group">
+ <button type="button" class="btn btn-secondary">Left</button>
+ <button type="button" class="btn btn-secondary">Middle</button>
+ <button type="button" class="btn btn-secondary">Right</button>
+ </div>
+</div>
+
+{% highlight html %}
+<div class="btn-group btn-group-lg" role="group" aria-label="...">...</div>
+<div class="btn-group" role="group" aria-label="...">...</div>
+<div class="btn-group btn-group-sm" role="group" aria-label="...">...</div>
+<div class="btn-group btn-group-xs" role="group" aria-label="...">...</div>
+{% endhighlight %}
+
+### Nesting
+
+Place a `.btn-group` within another `.btn-group` when you want dropdown menus mixed with a series of buttons.
+
+{% example html %}
+<div class="btn-group" role="group" aria-label="Button group with nested dropdown">
+ <button type="button" class="btn btn-secondary">1</button>
+ <button type="button" class="btn btn-secondary">2</button>
+
+ <div class="btn-group" role="group">
+ <button id="btnGroupDrop1" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+ Dropdown
+ </button>
+ <ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupDrop1">
+ <li><a href="#">Dropdown link</a></li>
+ <li><a href="#">Dropdown link</a></li>
+ </ul>
+ </div>
+</div>
+{% endexample %}
+
+### Vertical variation
+
+Make a set of buttons appear vertically stacked rather than horizontally. **Split button dropdowns are not supported here.**
+
+<div class="bs-example">
+ <div class="btn-group-vertical" role="group" aria-label="Vertical button group">
+ <button type="button" class="btn btn-secondary">Button</button>
+ <button type="button" class="btn btn-secondary">Button</button>
+ <div class="btn-group" role="group">
+ <button id="btnGroupVerticalDrop1" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+ Dropdown
+ </button>
+ <ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop1">
+ <li><a href="#">Dropdown link</a></li>
+ <li><a href="#">Dropdown link</a></li>
+ </ul>
+ </div>
+ <button type="button" class="btn btn-secondary">Button</button>
+ <button type="button" class="btn btn-secondary">Button</button>
+ <div class="btn-group" role="group">
+ <button id="btnGroupVerticalDrop2" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+ Dropdown
+ </button>
+ <ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop2">
+ <li><a href="#">Dropdown link</a></li>
+ <li><a href="#">Dropdown link</a></li>
+ </ul>
+ </div>
+ <div class="btn-group" role="group">
+ <button id="btnGroupVerticalDrop3" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+ Dropdown
+ </button>
+ <ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop3">
+ <li><a href="#">Dropdown link</a></li>
+ <li><a href="#">Dropdown link</a></li>
+ </ul>
+ </div>
+ <div class="btn-group" role="group">
+ <button id="btnGroupVerticalDrop4" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+ Dropdown
+ </button>
+ <ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop4">
+ <li><a href="#">Dropdown link</a></li>
+ <li><a href="#">Dropdown link</a></li>
+ </ul>
+ </div>
+ </div>
+</div>
+
+{% highlight html %}
+<div class="btn-group-vertical">
+ ...
+</div>
+{% endhighlight %}
+
+### Justified button groups
+
+Make a group of buttons stretch at equal sizes to span the entire width of its parent. Also works with button dropdowns within the button group.
+
+<div class="bs-callout bs-callout-warning">
+ <h4>Handling borders</h4>
+ <p>Due to the specific HTML and CSS used to justify buttons (namely <code>display: table-cell</code>), the borders between them are doubled. In regular button groups, <code>margin-left: -1px</code> is used to stack the borders instead of removing them. However, <code>margin</code> doesn't work with <code>display: table-cell</code>. As a result, depending on your customizations to Bootstrap, you may wish to remove or re-color the borders.</p>
+</div>
+
+#### With `<a>` elements
+
+Just wrap a series of `.btn`s in `.btn-group.btn-group-justified`.
+
+{% example html %}
+<div class="bs-example">
+ <div class="btn-group btn-group-justified" role="group" aria-label="Justified button group">
+ <a class="btn btn-secondary" href="#" role="button">Left</a>
+ <a class="btn btn-secondary" href="#" role="button">Middle</a>
+ <a class="btn btn-secondary" href="#" role="button">Right</a>
+ </div>
+ <br>
+ <div class="btn-group btn-group-justified" role="group" aria-label="Justified button group with nested dropdown">
+ <a class="btn btn-secondary" href="#" role="button">Left</a>
+ <a class="btn btn-secondary" href="#" role="button">Middle</a>
+ <div class="btn-group" role="group">
+ <a class="btn btn-secondary dropdown-toggle" href="#" data-toggle="dropdown"role="button" aria-expanded="false">
+ Dropdown
+ </a>
+ <ul class="dropdown-menu" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div>
+ </div>
+</div>
+{% endexample %}
+
+<div class="bs-callout bs-callout-warning">
+ <h4>Links acting as buttons</h4>
+ <p>If the <code><a></code> elements are used to act as buttons – triggering in-page functionality, rather than navigating to another document or section within the current page – they should also be given an appropriate <code>role="button"</code>.</p>
+</div>
+
+#### With `<button>` elements
+
+To use justified button groups with `<button>` elements, **you must wrap each button in a button group**. Most browsers don't properly apply our CSS for justification to `<button>` elements, but since we support button dropdowns, we can work around that.
+
+{% example html %}
+<div class="bs-example">
+ <div class="btn-group btn-group-justified" role="group" aria-label="Justified button group">
+ <div class="btn-group" role="group">
+ <button type="button" class="btn btn-secondary">Left</button>
+ </div>
+ <div class="btn-group" role="group">
+ <button type="button" class="btn btn-secondary">Middle</button>
+ </div>
+ <div class="btn-group" role="group">
+ <button type="button" class="btn btn-secondary">Right</button>
+ </div>
+ </div>
+</div>
+{% endexample %}
--- /dev/null
- <button type="button" class="close">
+---
+layout: page
+title: Helper classes
+---
+
+### Contextual colors
+
+Convey meaning through color with a handful of emphasis utility classes. These may also be applied to links and will darken on hover just like our default link styles.
+
+{% example html %}
+<p class="text-muted">Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.</p>
+<p class="text-primary">Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
+<p class="text-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
+<p class="text-info">Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
+<p class="text-warning">Etiam porta sem malesuada magna mollis euismod.</p>
+<p class="text-danger">Donec ullamcorper nulla non metus auctor fringilla.</p>
+{% endexample %}
+
+<div class="bs-callout bs-callout-info">
+ <h4>Dealing with specificity</h4>
+ <p>Sometimes emphasis classes cannot be applied due to the specificity of another selector. In most cases, a sufficient workaround is to wrap your text in a <code><span></code> with the class.</p>
+</div>
+<div class="bs-callout bs-callout-warning">
+ <h4>Conveying meaning to assistive technologies</h4>
+ <p>Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (the contextual colors are only used to reinforce meaning that is already present in the text/markup), or is included through alternative means, such as additional text hidden with the <code>.sr-only</code> class.</p>
+</div>
+
+### Contextual backgrounds
+
+Similar to the contextual text color classes, easily set the background of an element to any contextual class. Anchor components will darken on hover, just like the text classes.
+
+{% example html %}
+<div class="bg-primary">Nullam id dolor id nibh ultricies vehicula ut id elit.</div>
+<div class="bg-success">Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</div>
+<div class="bg-info">Maecenas sed diam eget risus varius blandit sit amet non magna.</div>
+<div class="bg-warning">Etiam porta sem malesuada magna mollis euismod.</div>
+<div class="bg-danger">Donec ullamcorper nulla non metus auctor fringilla.</div>
+{% endexample %}
+
+<div class="bs-callout bs-callout-info">
+ <h4>Dealing with specificity</h4>
+ <p>Sometimes contextual background classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element's content in a <code><div></code> with the class.</p>
+</div>
+
+<div class="bs-callout bs-callout-warning">
+ <h4>Conveying meaning to assistive technologies</h4>
+ <p>As with <a href="#helper-classes-colors">contextual colors</a>, ensure that any meaning conveyed through color is also conveyed in a format that is not purely presentational.</p>
+</div>
+
+### Close icon
+
+Use a generic close icon for dismissing content like modals and alerts. **Be sure to include screen reader text when you can** as we've done with `.sr-only`.
+
+{% example html %}
++<button type="button" class="close" aria-label="Close">
+ <span aria-hidden="true">×</span>
+ <span class="sr-only">Close</span>
+</button>
+{% endexample %}
+
+### Quick floats
+
+Float an element to the left or right with a class. `!important` is included to avoid specificity issues. Classes can also be used as mixins.
+
+{% example html %}
+<div class="pull-left">...</div>
+<div class="pull-right">...</div>
+{% endexample %}
+
+{% highlight scss %}
+// Classes
+.pull-left {
+ float: left !important;
+}
+.pull-right {
+ float: right !important;
+}
+
+// Usage as mixins
+.element {
+ @include pull-left;
+}
+.another-element {
+ @include pull-right;
+}
+{% endhighlight %}
+
+### Center content blocks
+
+Set an element to `display: block;` and center via `margin`. Available as a mixin and class.
+
+{% example html %}
+<div class="center-block">...</div>
+{% endexample %}
+
+{% highlight scss %}
+// Classes
+.center-block {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+// Usage as mixins
+.element {
+ @include center-block;
+}
+{% endhighlight %}
+
+Easily clear `float`s by adding `.clearfix` **to the parent element**. Utilizes [the micro clearfix](http://nicolasgallagher.com/micro-clearfix-hack/) as popularized by Nicolas Gallagher. Can also be used as a mixin.
+
+{% highlight html %}
+<div class="clearfix">...</div>
+{% endhighlight %}
+
+{% highlight scss %}
+// Mixin itself
+.clearfix() {
+ &:before,
+ &:after {
+ content: " ";
+ display: table;
+ }
+ &:after {
+ clear: both;
+ }
+}
+
+// Usage as a Mixin
+.element {
+ @include clearfix;
+}
+{% endhighlight %}
+
+### Hidden content
+
+Hide any HTML element with the `[hidden]` attribute. Previously, v3.x included a `.hidden` class that forced toggled content. However, we removed it due to conflicts with jQuery's `hide()` function. It's taken from [PureCSS](http://purecss.io).
+
+Furthermore, `.invisible` can be used to toggle the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document.
+
+{% highlight html %}
+<input type="text" hidden>
+{% endhighlight %}
+
+### Invisible content
+
+The `.invisible` class can be used to toggle only the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document.
+
+{% highlight html %}
+<div class="invisible">...</div>
+{% endhighlight %}
+
+{% highlight scss %}
+// Classes
+.invisible {
+ visibility: hidden;
+}
+
+// Usage as mixin
+.element {
+ .invisible();
+}
+{% endhighlight %}
+
+### Screen readers and keyboard navigation
+
+Hide an element to all devices **except screen readers** with `.sr-only`. Combine `.sr-only` with `.sr-only-focusable` to show the element again when it's focused (e.g. by a keyboard-only user). Necessary for following [accessibility best practices](../getting-started/#accessibility). Can also be used as mixins.
+
+{% highlight html %}
+<a class="sr-only sr-only-focusable" href="#content">Skip to main content</a>
+{% endhighlight %}
+
+{% highlight scss %}
+// Usage as a Mixin
+.skip-navigation {
+ @include sr-only;
+ @include sr-only-focusable;
+}
+{% endhighlight %}
+
+### Image replacement
+
+Utilize the `.text-hide` class or mixin to help replace an element's text content with a background image.
+
+{% example html %}
+<h1 class="text-hide">Custom heading</h1>
+{% endexample %}
+
+{% highlight scss %}
+// Usage as a Mixin
+.heading {
+ @include text-hide;
+}
+{% endhighlight %}
--- /dev/null
- <span class="input-group-addon">@</span>
- <input type="text" class="form-control" placeholder="Username">
+---
+layout: page
+title: Input group
+---
+
+Extend form controls by adding text or buttons before, after, or on both sides of any text-based `<input>`. Use `.input-group` with an `.input-group-addon` to prepend or append elements to a single `.form-control`.
+
+<div class="bs-callout bs-callout-danger">
+ <h4>Textual <code><input></code>s only</h4>
+ <p>Avoid using <code><textarea></code> elements here as their <code>rows</code> attribute will not be respected in some cases.</p>
+</div>
+<div class="bs-callout bs-callout-warning">
+ <h4>Tooltips & popovers in input groups require special setting</h4>
+ <p>When using tooltips or popovers on elements within an <code>.input-group</code>, you'll have to specify the option <code>container: 'body'</code> to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip or popover is triggered).</p>
+</div>
+<div class="bs-callout bs-callout-warning">
+ <h4>Don't mix with other components</h4>
+ <p>Do not mix form groups or grid column classes directly with input groups. Instead, nest the input group inside of the form group or grid-related element.</p>
+</div>
++<div class="bs-callout bs-callout-warning" id="callout-inputgroup-form-labels">
++ <h4>Always add labels</h4>
++ <p>Screen readers will have trouble with your forms if you don't include a label for every input. For these input groups, ensure that any additional label or functionality is conveyed to assistive technologies.</p>
++ <p>The exact technique to be used (<code><label></code> elements hidden using the <code>.sr-only</code> class, or use of the <code>aria-label</code>, <code>aria-labelledby</code>, <code>aria-describedby</code>, <code>title</code> or <code>placeholder</code> attribute) and what additional information will need to be conveyed will vary depending on the exact type of interface widget you're implementing. The examples in this section provide a few suggested, case-specific approaches.</p>
++</div>
+
+## Basic example
+
+Place one add-on or button on either side of an input. You may also place one on both sides of an input.
+
+**We do not support multiple add-ons on a single side.**
+
+**We do not support multiple form-controls in a single input group.**
+
+{% example html %}
+<div class="input-group">
- <input type="text" class="form-control">
- <span class="input-group-addon">.00</span>
++ <span class="input-group-addon" id="basic-addon1">@</span>
++ <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
+</div>
+<br>
+<div class="input-group">
- <input type="text" class="form-control">
++ <input type="text" class="form-control" placeholder="Recipient's username" aria-describedby="basic-addon2">
++ <span class="input-group-addon" id="basic-addon2">.00</span>
+</div>
+<br>
+<div class="input-group">
+ <span class="input-group-addon">$</span>
- <span class="input-group-addon">@</span>
- <input type="text" class="form-control" placeholder="Username">
++ <input type="text" class="form-control" aria-label="Amount (to the nearest dollar)">
+ <span class="input-group-addon">.00</span>
+</div>
+{% endexample %}
+
+## Sizing
+
+Add the relative form sizing classes to the `.input-group` itself and contents within will automatically resize—no need for repeating the form control size classes on each element.
+
+{% example html %}
+<div class="input-group input-group-lg">
- <span class="input-group-addon">@</span>
- <input type="text" class="form-control" placeholder="Username">
++ <span class="input-group-addon" id="sizing-addon1">@</span>
++ <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon1">
+</div>
+<br>
+<div class="input-group">
- <span class="input-group-addon">@</span>
- <input type="text" class="form-control" placeholder="Username">
++ <span class="input-group-addon" id="sizing-addon2">@</span>
++ <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon2">
+</div>
+<br>
+<div class="input-group input-group-sm">
- <input type="checkbox">
++ <span class="input-group-addon" id="sizing-addon3">@</span>
++ <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon3">
+</div>
+{% endexample %}
+
+## Checkboxes and radio addons
+
+Place any checkbox or radio option within an input group's addon instead of text.
+
+{% example html %}
+<div class="row">
+ <div class="col-lg-6">
+ <div class="input-group">
+ <span class="input-group-addon">
- <input type="text" class="form-control">
++ <input type="checkbox" aria-label="Checkbox for following text input">
+ </span>
- <input type="radio">
++ <input type="text" class="form-control" aria-label="Text input with checkbox">
+ </div>
+ </div>
+ <div class="col-lg-6">
+ <div class="input-group">
+ <span class="input-group-addon">
- <input type="text" class="form-control">
++ <input type="radio" aria-label="Radio button for following text input">
+ </span>
- <input type="text" class="form-control">
++ <input type="text" class="form-control" aria-label="Text input with radio button">
+ </div>
+ </div>
+</div>
+{% endexample %}
+
+## Button addons
+
+Buttons in input groups are a bit different and require one extra level of nesting. Instead of `.input-group-addon`, you'll need to use `.input-group-btn` to wrap the buttons. This is required due to default browser styles that cannot be overridden.
+
+{% example html %}
+<div class="row">
+ <div class="col-lg-6">
+ <div class="input-group">
+ <span class="input-group-btn">
+ <button class="btn btn-secondary" type="button">Go!</button>
+ </span>
- <input type="text" class="form-control">
++ <input type="text" class="form-control" placeholder="Search for...">
+ </div>
+ </div>
+ <div class="col-lg-6">
+ <div class="input-group">
- <input type="text" class="form-control">
++ <input type="text" class="form-control" placeholder="Search for...">
+ <span class="input-group-btn">
+ <button class="btn btn-secondary" type="button">Go!</button>
+ </span>
+ </div>
+ </div>
+</div>
+{% endexample %}
+
+## Buttons with dropdowns
+
+{% example html %}
+<div class="row">
+ <div class="col-lg-6">
+ <div class="input-group">
+ <div class="input-group-btn">
+ <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Action</button>
+ <ul class="dropdown-menu" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div>
- <input type="text" class="form-control">
++ <input type="text" class="form-control" aria-label="Text input with dropdown button">
+ </div>
+ </div>
+ <div class="col-lg-6">
+ <div class="input-group">
- <button type="button" class="btn btn-secondary" tabindex="-1">Action</button>
- <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" tabindex="-1" aria-expanded="false">
++ <input type="text" class="form-control" aria-label="Text input with dropdown button">
+ <div class="input-group-btn">
+ <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Action</button>
+ <ul class="dropdown-menu dropdown-menu-right" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+</div>
+{% endexample %}
+
+## Segmented buttons
+
+{% example html %}
+<div class="row">
+ <div class="col-lg-6">
+ <div class="input-group">
+ <div class="input-group-btn">
- <input type="text" class="form-control">
++ <button type="button" class="btn btn-secondary">Action</button>
++ <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+ <span class="sr-only">Toggle Dropdown</span>
+ </button>
+ <ul class="dropdown-menu" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div>
- <input type="text" class="form-control">
++ <input type="text" class="form-control" aria-label="Text input with segmented button dropdown">
+ </div>
+ </div>
+ <div class="col-lg-6">
+ <div class="input-group">
- <button type="button" class="btn btn-secondary" tabindex="-1">Action</button>
- <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" tabindex="-1" aria-expanded="false">
++ <input type="text" class="form-control" aria-label="Text input with segmented button dropdown">
+ <div class="input-group-btn">
++ <button type="button" class="btn btn-secondary">Action</button>
++ <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+ <span class="sr-only">Toggle Dropdown</span>
+ </button>
+ <ul class="dropdown-menu dropdown-menu-right" role="menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+</div>
+{% endexample %}
--- /dev/null
- <a href="#">
+---
+layout: page
+title: Pagination
+---
+
+Provide pagination links for your site or app with the multi-page pagination component, or the simpler [pager alternative](#pagination-pager).
+
+## Default pagination
+
+Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas.
+
+{% example html %}
+<nav>
+ <ul class="pagination">
+ <li>
- <a href="#">
++ <a href="#" aria-label="Previous">
+ <span aria-hidden="true">«</span>
+ <span class="sr-only">Previous</span>
+ </a>
+ </li>
+ <li><a href="#">1</a></li>
+ <li><a href="#">2</a></li>
+ <li><a href="#">3</a></li>
+ <li><a href="#">4</a></li>
+ <li><a href="#">5</a></li>
+ <li>
- <a href="#">
++ <a href="#" aria-label="Next">
+ <span aria-hidden="true">»</span>
+ <span class="sr-only">Next</span>
+ </a>
+ </li>
+ </ul>
+</nav>
+{% endexample %}
+
+### Disabled and active states
+
+Links are customizable for different circumstances. Use `.disabled` for unclickable links and `.active` to indicate the current page.
+
+{% example html %}
+<nav>
+ <ul class="pagination">
+ <li class="disabled">
- <a href="#">
++ <a href="#" aria-label="Previous">
+ <span aria-hidden="true">«</span>
+ <span class="sr-only">Previous</span>
+ </a>
+ </li>
+ <li class="active">
+ <a href="#">1 <span class="sr-only">(current)</span></a>
+ </li>
+ <li><a href="#">2</a></li>
+ <li><a href="#">3</a></li>
+ <li><a href="#">4</a></li>
+ <li><a href="#">5</a></li>
+ <li>
- <span>
++ <a href="#" aria-label="Next">
+ <span aria-hidden="true">»</span>
+ <span class="sr-only">Next</span>
+ </a>
+ </li>
+ </ul>
+</nav>
+{% endexample %}
+
+You can optionally swap out active or disabled anchors for `<span>`, or omit the anchor in the case of the prev/next arrows, to remove click functionality while retaining intended styles.
+
+{% highlight html %}
+<nav>
+ <ul class="pagination">
+ <li class="disabled">
- <a href="#">
++ <span aria-label="Previous">
+ <span aria-hidden="true">«</span>
+ <span class="sr-only">Previous</span>
+ </span>
+ </li>
+ <li class="active"><span>1 <span class="sr-only">(current)</span></span></li>
+ </ul>
+</nav>
+{% endhighlight %}
+
+
+### Sizing
+
+Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for additional sizes.
+
+{% example html %}
+<nav>
+ <ul class="pagination pagination-lg">
+ <li>
- <a href="#">
++ <a href="#" aria-label="Previous">
+ <span aria-hidden="true">«</span>
+ <span class="sr-only">Previous</span>
+ </a>
+ </li>
+ <li><a href="#">1</a></li>
+ <li><a href="#">2</a></li>
+ <li><a href="#">3</a></li>
+ <li>
- <a href="#">
++ <a href="#" aria-label="Next">
+ <span aria-hidden="true">»</span>
+ <span class="sr-only">Next</span>
+ </a>
+ </li>
+ </ul>
+</nav>
+{% endexample %}
+
+{% example html %}
+<nav>
+ <ul class="pagination pagination-sm">
+ <li>
- <a href="#">
++ <a href="#" aria-label="Previous">
+ <span aria-hidden="true">«</span>
+ <span class="sr-only">Previous</span>
+ </a>
+ </li>
+ <li><a href="#">1</a></li>
+ <li><a href="#">2</a></li>
+ <li><a href="#">3</a></li>
+ <li>
++ <a href="#" aria-label="Next">
+ <span aria-hidden="true">»</span>
+ <span class="sr-only">Next</span>
+ </a>
+ </li>
+ </ul>
+</nav>
+{% endexample %}
+
+## Pager
+
+Quick previous and next links for simple pagination implementations with light markup and styles. It's great for simple sites like blogs or magazines.
+
+### Default example
+
+By default, the pager centers links.
+
+{% example html %}
+<nav>
+ <ul class="pager">
+ <li><a href="#">Previous</a></li>
+ <li><a href="#">Next</a></li>
+ </ul>
+</nav>
+{% endexample %}
+
+### Aligned links
+
+Alternatively, you can align each link to the sides:
+
+{% example html %}
+<nav>
+ <ul class="pager">
+ <li class="pager-prev"><a href="#">Older</a></li>
+ <li class="pager-next"><a href="#">Newer</a></li>
+ </ul>
+</nav>
+{% endexample %}
+
+
+### Optional disabled state
+
+Pager links also use the `.disabled` class.
+
+{% highlight html %}
+<nav>
+ <ul class="pager">
+ <li class="pager-prev disabled"><a href="#">Older</a></li>
+ <li class="pager-next"><a href="#">Newer</a></li>
+ </ul>
+</nav>
+{% endhighlight %}
--- /dev/null
+---
+layout: page
+title: Forms
+---
+
+Bootstrap normalizes common HTML5 form elements and adds a number of layout options for building forms of all sizes.
+
+## Example form
+
+Individual form controls automatically receive some global styling. All textual `<input>`, `<textarea>`, and `<select>` elements with `.form-control` are set to `width: 100%;` by default. Wrap labels and controls in `.form-group` for optimum spacing.
+
+{% example html %}
+<form>
+ <div class="form-group">
+ <label for="exampleInputEmail1">Email address</label>
+ <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
+ </div>
+ <div class="form-group">
+ <label for="exampleInputPassword1">Password</label>
+ <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
+ </div>
+ <div class="form-group">
+ <label for="exampleInputFile">File input</label>
+ <input type="file" id="exampleInputFile">
+ <p class="help-block">Example block-level help text here.</p>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox"> Check me out
+ </label>
+ </div>
+ <button type="submit" class="btn btn-secondary">Submit</button>
+</form>
+{% endexample %}
+
+<div class="bs-callout bs-callout-warning">
+ <h4>Don't mix form groups with input groups</h4>
+ <p>Do not mix form groups directly with <a href="/components/#input-groups">input groups</a>. Instead, nest the input group inside of the form group.</p>
+</div>
+
+## 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.**
+
+<div class="bs-callout bs-callout-danger">
+ <h4>Requires custom widths</h4>
+ <p>Inputs and selects have `width: 100%;` applied by default in Bootstrap. Within inline forms, we reset that to `width: auto;` so multiple controls can reside on the same line. Depending on your layout, additional custom widths may be required.</p>
+</div>
+<div class="bs-callout bs-callout-warning">
+ <h4>Always add labels</h4>
+ <p>Screen readers will have trouble with your forms if you don't include a label for every input. For these inline forms, you can hide the labels using the `.sr-only` class.</p>
+</div>
+
+{% example html %}
+<form class="form-inline">
+ <div class="form-group">
+ <label class="sr-only" for="exampleInputEmail2">Email address</label>
+ <input type="email" class="form-control" id="exampleInputEmail2" placeholder="Enter email">
+ </div>
+ <div class="form-group">
+ <label class="sr-only" for="exampleInputPassword2">Password</label>
+ <input type="password" class="form-control" id="exampleInputPassword2" placeholder="Password">
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox"> Remember me
+ </label>
+ </div>
+ <button type="submit" class="btn btn-default">Sign in</button>
+</form>
+{% endexample %}
+
+{% example html %}
+<form class="form-inline">
+ <div class="form-group">
+ <label class="sr-only" for="exampleInputAmount">Amount (in dollars)</label>
+ <div class="input-group">
+ <div class="input-group-addon">$</div>
+ <input type="text" class="form-control" id="exampleInputAmount" placeholder="Amount">
+ <div class="input-group-addon">.00</div>
+ </div>
+ </div>
+ <button type="submit" class="btn btn-primary">Transfer cash</button>
+</form>
+{% endexample %}
+
+## Horizontal forms
+
+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-group`s to behave as grid rows, so no need for `.row`.
+
+{% example html %}
+<form class="form-horizontal">
+ <div class="form-group">
+ <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
+ <div class="col-sm-10">
+ <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
+ </div>
+ </div>
+ <div class="form-group">
+ <label for="inputPassword3" class="col-sm-2 control-label">Password</label>
+ <div class="col-sm-10">
+ <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
+ </div>
+ </div>
+ <div class="form-group">
+ <div class="col-sm-offset-2 col-sm-10">
+ <div class="checkbox">
+ <label>
+ <input type="checkbox"> Remember me
+ </label>
+ </div>
+ </div>
+ </div>
+ <div class="form-group">
+ <div class="col-sm-offset-2 col-sm-10">
+ <button type="submit" class="btn btn-secondary">Sign in</button>
+ </div>
+ </div>
+</form>
+{% endexample %}
+
+## Supported 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`.
+
+<div class="bs-callout bs-callout-danger">
+ <h4>Type declaration required</h4>
+ <p>Inputs will only be fully styled if their `type` is properly declared.</p>
+</div>
+
+{% example html %}
+<input type="text" class="form-control" placeholder="Text input">
+{% endexample %}
+
+<div class="bs-callout bs-callout-info">
+ <h4>Input groups</h4>
+ <p>To add integrated text or buttons before and/or after any text-based `<input>`, <a href="../components/#input-groups">check out the input group component</a>.</p>
+</div>
+
+### Textarea
+
+Form control which supports multiple lines of text. Change `rows` attribute as necessary.
+
+{% example html %}
+<textarea class="form-control" rows="3"></textarea>
+{% endexample %}
+
+### Checkboxes and radios
+
+Checkboxes are for selecting one or several options in a list, while radios are for selecting one option from many.
+
+A checkbox or radio with the `disabled` attribute will be styled appropriately. To have the `<label>` for the checkbox or radio also display a "not-allowed" cursor when the user hovers over the label, add the `.disabled` class to your `.radio`, `.radio-inline`, `.checkbox`, `.checkbox-inline`, or `<fieldset>`.
+
+#### Default (stacked)
+
+{% example html %}
+<div class="checkbox">
+ <label>
+ <input type="checkbox" value="">
+ Option one is this and that—be sure to include why it's great
+ </label>
+</div>
+<div class="checkbox disabled">
+ <label>
+ <input type="checkbox" value="" disabled>
+ Option two is disabled
+ </label>
+</div>
+
+<div class="radio">
+ <label>
+ <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
+ Option one is this and that—be sure to include why it's great
+ </label>
+</div>
+<div class="radio">
+ <label>
+ <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
+ Option two can be something else and selecting it will deselect option one
+ </label>
+</div>
+<div class="radio disabled">
+ <label>
+ <input type="radio" name="optionsRadios" id="optionsRadios3" value="option3" disabled>
+ Option three is disabled
+ </label>
+</div>
+{% endexample %}
+
+#### Inline
+
+Use the `.checkbox-inline` or `.radio-inline` classes on a series of checkboxes or radios for controls that appear on the same line.
+
+{% example html %}
+<label class="checkbox-inline">
+ <input type="checkbox" id="inlineCheckbox1" value="option1"> 1
+</label>
+<label class="checkbox-inline">
+ <input type="checkbox" id="inlineCheckbox2" value="option2"> 2
+</label>
+<label class="checkbox-inline">
+ <input type="checkbox" id="inlineCheckbox3" value="option3"> 3
+</label>
+
+<label class="radio-inline">
+ <input type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1"> 1
+</label>
+<label class="radio-inline">
+ <input type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2"> 2
+</label>
+<label class="radio-inline">
+ <input type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3"> 3
+</label>
+{% endexample %}
+
+#### Without labels
+
+Should you have no text within the `<label>`, the input is positioned as you'd expect. **Currently only works on non-inline checkboxes and radios.**
+
+{% example html %}
+<div class="checkbox">
+ <label>
+ <input type="checkbox" id="blankCheckbox" value="option1">
+ </label>
+</div>
+<div class="radio">
+ <label>
+ <input type="radio" name="blankRadio" id="blankRadio1" value="option1">
+ </label>
+</div>
+{% endexample %}
+
+### Selects
+
++Note that many native select menus—namely in Safari and Chrome—have rounded corners that cannot be modified via `border-radius` properties.
++
+Use the default option, or add `multiple` to show multiple options at once.
+
+{% example html %}
+<select class="form-control">
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ <option>4</option>
+ <option>5</option>
+</select>
++{% endexample %}
+
++For `<select>` controls with the `multiple` attribute, multiple options are shown by default.
++
++{% example html %}
+<select multiple class="form-control">
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ <option>4</option>
+ <option>5</option>
+</select>
+{% endexample %}
+
+## 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>`.
+
+{% example html %}
+<form class="form-horizontal">
+ <div class="form-group">
+ <label class="col-sm-2 control-label">Email</label>
+ <div class="col-sm-10">
+ <p class="form-control-static">email@example.com</p>
+ </div>
+ </div>
+ <div class="form-group">
+ <label for="inputPassword" class="col-sm-2 control-label">Password</label>
+ <div class="col-sm-10">
+ <input type="password" class="form-control" id="inputPassword" placeholder="Password">
+ </div>
+ </div>
+</form>
+{% endexample %}
+
+{% example html %}
+<form class="form-inline">
+ <div class="form-group">
+ <label class="sr-only">Email</label>
+ <p class="form-control-static">email@example.com</p>
+ </div>
+ <div class="form-group">
+ <label for="inputPassword2" class="sr-only">Password</label>
+ <input type="password" class="form-control" id="inputPassword2" placeholder="Password">
+ </div>
+ <button type="submit" class="btn btn-default">Confirm identity</button>
+</form>
+{% endexample %}
+
+## Focus state
+
+We remove the default `outline` styles on some form controls and apply a `box-shadow` in its place for `:focus`.
+
+<div class="bs-example">
+ <form>
+ <input class="form-control" id="focusedInput" type="text" value="Demonstrative focus state">
+ </form>
+</div>
+
+<div class="bs-callout bs-callout-info">
+ <h4>Demo `:focus` state</h4>
+ <p>The above example input uses custom styles in our documentation to demonstrate the `:focus` state on a `.form-control`.</p>
+</div>
+
+## Disabled states
+
+Add the `disabled` boolean attribute on an `<input>`, `<select>`, or `<textarea>` to prevent user input and trigger a slightly different look.
+
+{% highlight html %}
+<input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled>
+{% endhighlight %}
+
+Add the `disabled` attribute to a `<fieldset>` to disable all the controls within.
+
+{% example html %}
+<form>
+ <fieldset disabled>
+ <div class="form-group">
+ <label for="disabledTextInput">Disabled input</label>
+ <input type="text" id="disabledTextInput" class="form-control" placeholder="Disabled input">
+ </div>
+ <div class="form-group">
+ <label for="disabledSelect">Disabled select menu</label>
+ <select id="disabledSelect" class="form-control">
+ <option>Disabled select</option>
+ </select>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox"> Can't check this
+ </label>
+ </div>
+ <button type="submit" class="btn btn-primary">Submit</button>
+ </fieldset>
+</form>
+{% endexample %}
+
+<div class="bs-callout bs-callout-warning">
+ <h4>Caveat about link functionality of `<a>`</h4>
+ <p>By default, browsers will treat all native form controls (<code><input></code>, <code><select></code> and <code><button></code> elements) inside a <code><fieldset disabled></code> as disabled, preventing both keyboard and mouse interactions on them. However, if your form also includes <code><a ... class="btn btn-*"></code> elements, these will only be given a style of <code>pointer-events: none</code>. As noted in the section about <a href="#buttons-disabled">disabled state for buttons</a> (and specifically in the sub-section for anchor elements), this CSS property is not yet standardized and isn't fully supported in Opera 18 and below, or in Internet Explorer 11, and won't prevent keyboard users from being able to focus or activate these links. So to be safe, use custom JavaScript to disable such links.</p>
+</div>
+
+<div class="bs-callout bs-callout-danger">
+ <h4>Cross-browser compatibility</h4>
+ <p>While Bootstrap will apply these styles in all browsers, Internet Explorer 11 and below don't fully support the <code>disabled</code> attribute on a <code><fieldset></code>. Use custom JavaScript to disable the fieldset in these browsers.</p>
+</div>
+
+## Readonly inputs
+
+Add the `readonly` boolean attribute on an input to prevent user input and style the input as disabled.
+
+{% example html %}
+<input class="form-control" type="text" placeholder="Readonly input here…" readonly>
+{% endexample %}
+
+## Validation
+
+Bootstrap includes validation styles for error, warning, and success states on form controls. To use, add `.has-warning`, `.has-error`, or `.has-success` to the parent element. Any `.control-label`, `.form-control`, and `.help-block` within that element will receive the validation styles.
+
+{% example html %}
+<div class="form-group has-success">
+ <label class="control-label" for="inputSuccess1">Input with success</label>
+ <input type="text" class="form-control" id="inputSuccess1">
+</div>
+<div class="form-group has-warning">
+ <label class="control-label" for="inputWarning1">Input with warning</label>
+ <input type="text" class="form-control" id="inputWarning1">
+</div>
+<div class="form-group has-error">
+ <label class="control-label" for="inputError1">Input with error</label>
+ <input type="text" class="form-control" id="inputError1">
+</div>
+<div class="has-success">
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" id="checkboxSuccess" value="option1">
+ Checkbox with success
+ </label>
+ </div>
+</div>
+<div class="has-warning">
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" id="checkboxWarning" value="option1">
+ Checkbox with warning
+ </label>
+ </div>
+</div>
+<div class="has-error">
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" id="checkboxError" value="option1">
+ Checkbox with error
+ </label>
+ </div>
+</div>
+{% endexample %}
+
+You can also add optional feedback icons with the addition of `.has-feedback` and the right icon.
+
+<div class="bs-callout bs-callout-warning">
+ <h4>Icons, labels, and input groups</h4>
+ <p>Manual positioning of feedback icons is required for inputs without a label and for <a href="../components#input-groups">input groups</a> with an add-on on the right. You are strongly encouraged to provide labels for all inputs for accessibility reasons. If you wish to prevent labels from being displayed, hide them with the `sr-only` class. If you must do without labels, adjust the `top` value of the feedback icon. For input groups, adjust the `right` value to an appropriate pixel value depending on the width of your addon.</p>
+</div>
+
+{% example html %}
+<div class="form-group has-success has-feedback">
+ <label class="control-label" for="inputSuccess2">Input with success</label>
+ <input type="text" class="form-control" id="inputSuccess2">
+ <span class="glyphicon glyphicon-ok form-control-feedback"></span>
+</div>
+<div class="form-group has-warning has-feedback">
+ <label class="control-label" for="inputWarning2">Input with warning</label>
+ <input type="text" class="form-control" id="inputWarning2">
+ <span class="glyphicon glyphicon-warning-sign form-control-feedback"></span>
+</div>
+<div class="form-group has-error has-feedback">
+ <label class="control-label" for="inputError2">Input with error</label>
+ <input type="text" class="form-control" id="inputError2">
+ <span class="glyphicon glyphicon-remove form-control-feedback"></span>
+</div>
+{% endexample %}
+
+{% example html %}
+<form class="form-horizontal">
+ <div class="form-group has-success has-feedback">
+ <label class="control-label col-sm-3" for="inputSuccess3">Input with success</label>
+ <div class="col-sm-9">
+ <input type="text" class="form-control" id="inputSuccess3">
+ <span class="glyphicon glyphicon-ok form-control-feedback"></span>
+ </div>
+ </div>
+</form>
+{% endexample %}
+
+{% example html %}
+<form class="form-inline">
+ <div class="form-group has-success has-feedback">
+ <label class="control-label" for="inputSuccess4">Input with success</label>
+ <input type="text" class="form-control" id="inputSuccess4">
+ <span class="glyphicon glyphicon-ok form-control-feedback"></span>
+ </div>
+</form>
+{% endexample %}
+
+For form controls with no visible label, add the `.sr-only` class on the label. Bootstrap will automatically adjust the position of the icon once it's been added.
+
+{% example html %}
+<div class="form-group has-success has-feedback">
+ <label class="control-label sr-only" for="inputSuccess5">Hidden label</label>
+ <input type="text" class="form-control" id="inputSuccess5">
+ <span class="glyphicon glyphicon-ok form-control-feedback"></span>
+</div>
+{% endexample %}
+
+## Control sizing
+
+Set heights using classes like `.input-lg`, and set widths using grid column classes like `.col-lg-*`.
+
+{% example html %}
+<input class="form-control input-lg" type="text" placeholder=".input-lg">
+<input class="form-control" type="text" placeholder="Default input">
+<input class="form-control input-sm" type="text" placeholder=".input-sm">
+
+<select class="form-control input-lg"></select>
+<select class="form-control"></select>
+<select class="form-control input-sm"></select>
+{% endexample %}
+
+Quickly size labels and form controls within `.form-horizontal` by adding `.form-group-lg` or `.form-group-sm` to existing `.form-group`s.
+
+{% example html %}
+<form class="form-horizontal">
+ <div class="form-group form-group-lg">
+ <label class="col-sm-2 control-label" for="formGroupInputLarge">Large label</label>
+ <div class="col-sm-10">
+ <input class="form-control" type="text" id="formGroupInputLarge" placeholder="Large input">
+ </div>
+ </div>
+ <div class="form-group form-group-sm">
+ <label class="col-sm-2 control-label" for="formGroupInputSmall">Small label</label>
+ <div class="col-sm-10">
+ <input class="form-control" type="text" id="formGroupInputSmall" placeholder="Small input">
+ </div>
+ </div>
+</form>
+{% endexample %}
+
+## Column sizing
+
+Wrap inputs in grid columns, or any custom parent element, to easily enforce desired widths.
+
+{% example html %}
+<div class="row">
+ <div class="col-xs-2">
+ <input type="text" class="form-control" placeholder=".col-xs-2">
+ </div>
+ <div class="col-xs-3">
+ <input type="text" class="form-control" placeholder=".col-xs-3">
+ </div>
+ <div class="col-xs-4">
+ <input type="text" class="form-control" placeholder=".col-xs-4">
+ </div>
+</div>
+{% endexample %}
+
+## Help text
+
+Block level help text for form controls.
+
+{% example html %}
+<p class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</p>
+{% endexample %}
--- /dev/null
+---
+layout: page
+title: Tables
+---
+
+Due to the widespread use of tables across third-party widgets like calendars and date pickers, we've designed our tables to be **opt-in**. Just add the base class `.table` to any `<table>`.
+
+## Basic example
+
+{% example html %}
+<table class="table">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>First Name</th>
+ <th>Last Name</th>
+ <th>Username</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">1</th>
+ <td>Mark</td>
+ <td>Otto</td>
+ <td>@mdo</td>
+ </tr>
+ <tr>
+ <th scope="row">2</th>
+ <td>Jacob</td>
+ <td>Thornton</td>
+ <td>@fat</td>
+ </tr>
+ <tr>
+ <th scope="row">3</th>
+ <td>Larry</td>
+ <td>the Bird</td>
+ <td>@twitter</td>
+ </tr>
+ </tbody>
+</table>
+{% endexample %}
+
+## Inverse table
+
+{% example html %}
+<table class="table table-inverse">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>First Name</th>
+ <th>Last Name</th>
+ <th>Username</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">1</th>
+ <td>Mark</td>
+ <td>Otto</td>
+ <td>@mdo</td>
+ </tr>
+ <tr>
+ <th scope="row">2</th>
+ <td>Jacob</td>
+ <td>Thornton</td>
+ <td>@fat</td>
+ </tr>
+ <tr>
+ <th scope="row">3</th>
+ <td>Larry</td>
+ <td>the Bird</td>
+ <td>@twitter</td>
+ </tr>
+ </tbody>
+</table>
+{% endexample %}
+
+## Table head options
+
+Use one of two modifier classes to make `<thead>`s appear light or dark gray.
+
+{% example html %}
+<table class="table">
+ <thead class="thead-inverse">
+ <tr>
+ <th>#</th>
+ <th>First Name</th>
+ <th>Last Name</th>
+ <th>Username</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">1</th>
+ <td>Mark</td>
+ <td>Otto</td>
+ <td>@mdo</td>
+ </tr>
+ <tr>
+ <th scope="row">2</th>
+ <td>Jacob</td>
+ <td>Thornton</td>
+ <td>@fat</td>
+ </tr>
+ <tr>
+ <th scope="row">3</th>
+ <td>Larry</td>
+ <td>the Bird</td>
+ <td>@twitter</td>
+ </tr>
+ </tbody>
+ <thead class="thead-default">
+ <tr>
+ <th>#</th>
+ <th>First Name</th>
+ <th>Last Name</th>
+ <th>Username</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">1</th>
+ <td>Mark</td>
+ <td>Otto</td>
+ <td>@mdo</td>
+ </tr>
+ <tr>
+ <th scope="row">2</th>
+ <td>Jacob</td>
+ <td>Thornton</td>
+ <td>@fat</td>
+ </tr>
+ <tr>
+ <th scope="row">3</th>
+ <td>Larry</td>
+ <td>the Bird</td>
+ <td>@twitter</td>
+ </tr>
+ </tbody>
+</table>
+{% endexample %}
+
+## Striped rows
+
+Use `.table-striped` to add zebra-striping to any table row within the `<tbody>`.
+
+{% example html %}
+<table class="table table-striped">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>First Name</th>
+ <th>Last Name</th>
+ <th>Username</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">1</th>
+ <td>Mark</td>
+ <td>Otto</td>
+ <td>@mdo</td>
+ </tr>
+ <tr>
+ <th scope="row">2</th>
+ <td>Jacob</td>
+ <td>Thornton</td>
+ <td>@fat</td>
+ </tr>
+ <tr>
+ <th scope="row">3</th>
+ <td>Larry</td>
+ <td>the Bird</td>
+ <td>@twitter</td>
+ </tr>
+ </tbody>
+</table>
+{% endexample %}
+
+## Bordered table
+
+Add `.table-bordered` for borders on all sides of the table and cells.
+
+{% example html %}
+<table class="table table-bordered">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>First Name</th>
+ <th>Last Name</th>
+ <th>Username</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">1</th>
+ <td>Mark</td>
+ <td>Otto</td>
+ <td>@mdo</td>
+ </tr>
+ <tr>
+ <th scope="row">2</th>
+ <td>Mark</td>
+ <td>Otto</td>
+ <td>@TwBootstrap</td>
+ </tr>
+ <tr>
+ <th scope="row">3</th>
+ <td>Jacob</td>
+ <td>Thornton</td>
+ <td>@fat</td>
+ </tr>
+ <tr>
+ <th scope="row">4</th>
+ <td colspan="2">Larry the Bird</td>
+ <td>@twitter</td>
+ </tr>
+ </tbody>
+</table>
+{% endexample %}
+
+## Hoverable rows
+
+Add `.table-hover` to enable a hover state on table rows within a `<tbody>`.
+
+{% example html %}
+<table class="table table-hover">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>First Name</th>
+ <th>Last Name</th>
+ <th>Username</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">1</th>
+ <td>Mark</td>
+ <td>Otto</td>
+ <td>@mdo</td>
+ </tr>
+ <tr>
+ <th scope="row">2</th>
+ <td>Jacob</td>
+ <td>Thornton</td>
+ <td>@fat</td>
+ </tr>
+ <tr>
+ <th scope="row">3</th>
+ <td colspan="2">Larry the Bird</td>
+ <td>@twitter</td>
+ </tr>
+ </tbody>
+</table>
+{% endexample %}
+
+## Small table
+
+Add `.table-sm` to make tables more compact by cutting cell padding in half.
+
+{% example html %}
+<table class="table table-sm">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>First Name</th>
+ <th>Last Name</th>
+ <th>Username</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">1</th>
+ <td>Mark</td>
+ <td>Otto</td>
+ <td>@mdo</td>
+ </tr>
+ <tr>
+ <th scope="row">2</th>
+ <td>Jacob</td>
+ <td>Thornton</td>
+ <td>@fat</td>
+ </tr>
+ <tr>
+ <th scope="row">3</th>
+ <td colspan="2">Larry the Bird</td>
+ <td>@twitter</td>
+ </tr>
+ </tbody>
+</table>
+{% endexample %}
+
+## Contextual classes
+
+Use contextual classes to color table rows or individual cells.
+
+<div class="table-responsive">
+ <table class="table table-bordered table-striped">
+ <colgroup>
+ <col class="col-xs-1">
+ <col class="col-xs-7">
+ </colgroup>
+ <thead>
+ <tr>
+ <th>Class</th>
+ <th>Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">
+ <code>.active</code>
+ </th>
+ <td>Applies the hover color to a particular row or cell</td>
+ </tr>
+ <tr>
+ <th scope="row">
+ <code>.success</code>
+ </th>
+ <td>Indicates a successful or positive action</td>
+ </tr>
+ <tr>
+ <th scope="row">
+ <code>.info</code>
+ </th>
+ <td>Indicates a neutral informative change or action</td>
+ </tr>
+ <tr>
+ <th scope="row">
+ <code>.warning</code>
+ </th>
+ <td>Indicates a warning that might need attention</td>
+ </tr>
+ <tr>
+ <th scope="row">
+ <code>.danger</code>
+ </th>
+ <td>Indicates a dangerous or potentially negative action</td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+<div class="bs-example">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>Column heading</th>
+ <th>Column heading</th>
+ <th>Column heading</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="active">
+ <th scope="row">1</th>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr>
+ <th scope="row">2</th>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr class="success">
+ <th scope="row">3</th>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr>
+ <th scope="row">4</th>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr class="info">
+ <th scope="row">5</th>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr>
+ <th scope="row">6</th>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr class="warning">
+ <th scope="row">7</th>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr>
+ <th scope="row">8</th>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ <tr class="danger">
+ <th scope="row">9</th>
+ <td>Column content</td>
+ <td>Column content</td>
+ <td>Column content</td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+{% highlight html %}
+<!-- On rows -->
+<tr class="active">...</tr>
+<tr class="success">...</tr>
+<tr class="warning">...</tr>
+<tr class="danger">...</tr>
+<tr class="info">...</tr>
+
+<!-- On cells (`td` or `th`) -->
+<tr>
+ <td class="active">...</td>
+ <td class="success">...</td>
+ <td class="warning">...</td>
+ <td class="danger">...</td>
+ <td class="info">...</td>
+</tr>
+{% endhighlight %}
+
+## Responsive tables
+
+Create responsive tables by wrapping any `.table` in `.table-responsive` to make them scroll horizontally on small devices (under 768px). When viewing on anything larger than 768px wide, you will not see any difference in these tables.
+
++<div class="bs-callout bs-callout-warning" id="callout-tables-responsive-overflow">
++ <h4>Vertical clipping/truncation</h4>
++ <p>Responsive tables make use of <code>overflow-y: hidden</code>, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets.</p>
++</div>
++
+<div class="bs-callout bs-callout-warning">
+ <h4>Firefox and fieldsets</h4>
+ <p>Firefox has some awkward fieldset styling involving <code>width</code> that interferes with the responsive table. This cannot be overriden without a Firefox-specific hack that we <strong>don't</strong> provide in Bootstrap:</p>
+{% highlight css %}
+@-moz-document url-prefix() {
+ fieldset { display: table-cell; }
+}
+{% endhighlight %}
+ <p>For more information, read <a href="http://stackoverflow.com/questions/17408815/fieldset-resizes-wrong-appears-to-have-unremovable-min-width-min-content/17863685#17863685">this Stack Overflow answer</a>.</p>
+</div>
+
+<div class="bs-example">
+ <div class="table-responsive">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">1</th>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ </tr>
+ <tr>
+ <th scope="row">2</th>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ </tr>
+ <tr>
+ <th scope="row">3</th>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div class="table-responsive">
+ <table class="table table-bordered">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">1</th>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ </tr>
+ <tr>
+ <th scope="row">2</th>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ </tr>
+ <tr>
+ <th scope="row">3</th>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</div>
+
+{% highlight html %}
+<div class="table-responsive">
+ <table class="table">
+ ...
+ </table>
+</div>
+{% endhighlight %}
+
+
+### Reflow
+
+{% example html %}
+<table class="table table-reflow">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ <th>Table heading</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">1</th>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ </tr>
+ <tr>
+ <th scope="row">2</th>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ </tr>
+ <tr>
+ <th scope="row">3</th>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ <td>Table cell</td>
+ </tr>
+ </tbody>
+</table>
+{% endexample %}
--- /dev/null
- Stylized implementation of HTML's `<abbr>` element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a `title` attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover.
+---
+layout: page
+title: Typography
+---
+
+Bootstrap includes simple and easily customized typography across the project. In addition to the standard headings, body text, and lists, utility classes are also included.
+
+## Global settings
+
+Bootstrap sets basic global display, typography, and link styles. Specifically, we:
+
+- Set `background-color: #fff;` on the `<body>`
+- Use the `@font-family-base`, `@font-size-base`, and `@line-height-base` attributes as our typographic base
+- Set the global link color via `@link-color` and apply link underlines only on `:hover`
+
+These styles can be found within `scaffolding.less`.
+
+
+## Headings
+
+All HTML headings, `<h1>` through `<h6>`, are available. `.h1` through `.h6` classes are also available, for when you want to match the font styling of a heading but still want your text to be displayed inline.
+
+<div class="bs-example bs-example-type">
+ <table class="table">
+ <tbody>
+ <tr>
+ <td><h1>h1. Bootstrap heading</h1></td>
+ <td class="type-info">Semibold 36px</td>
+ </tr>
+ <tr>
+ <td><h2>h2. Bootstrap heading</h2></td>
+ <td class="type-info">Semibold 30px</td>
+ </tr>
+ <tr>
+ <td><h3>h3. Bootstrap heading</h3></td>
+ <td class="type-info">Semibold 24px</td>
+ </tr>
+ <tr>
+ <td><h4>h4. Bootstrap heading</h4></td>
+ <td class="type-info">Semibold 18px</td>
+ </tr>
+ <tr>
+ <td><h5>h5. Bootstrap heading</h5></td>
+ <td class="type-info">Semibold 14px</td>
+ </tr>
+ <tr>
+ <td><h6>h6. Bootstrap heading</h6></td>
+ <td class="type-info">Semibold 12px</td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+{% highlight html %}
+<h1>h1. Bootstrap heading</h1>
+<h2>h2. Bootstrap heading</h2>
+<h3>h3. Bootstrap heading</h3>
+<h4>h4. Bootstrap heading</h4>
+<h5>h5. Bootstrap heading</h5>
+<h6>h6. Bootstrap heading</h6>
+{% endhighlight %}
+
+Create lighter, secondary text in any heading with a generic `<small>` tag or the `.small` class.
+
+<div class="bs-example bs-example-type">
+ <table class="table">
+ <tbody>
+ <tr>
+ <td><h1>h1. Bootstrap heading <small>Secondary text</small></h1></td>
+ </tr>
+ <tr>
+ <td><h2>h2. Bootstrap heading <small>Secondary text</small></h2></td>
+ </tr>
+ <tr>
+ <td><h3>h3. Bootstrap heading <small>Secondary text</small></h3></td>
+ </tr>
+ <tr>
+ <td><h4>h4. Bootstrap heading <small>Secondary text</small></h4></td>
+ </tr>
+ <tr>
+ <td><h5>h5. Bootstrap heading <small>Secondary text</small></h5></td>
+ </tr>
+ <tr>
+ <td><h6>h6. Bootstrap heading <small>Secondary text</small></h6></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+{% highlight html %}
+<h1>h1. Bootstrap heading <small>Secondary text</small></h1>
+<h2>h2. Bootstrap heading <small>Secondary text</small></h2>
+<h3>h3. Bootstrap heading <small>Secondary text</small></h3>
+<h4>h4. Bootstrap heading <small>Secondary text</small></h4>
+<h5>h5. Bootstrap heading <small>Secondary text</small></h5>
+<h6>h6. Bootstrap heading <small>Secondary text</small></h6>
+{% endhighlight %}
+
+## Body copy
+
+Bootstrap's base text is sized with global `font-size: 16px;` and `line-height: 1.5;`. This is applied to the `<body>` and all paragraphs.
+
+{% example html %}
+<p>Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.</p>
+<p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.</p>
+<p>Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.</p>
+{% endexample %}
+
+## Lead
+
+Make a paragraph stand out by adding `.lead`.
+
+{% example html %}
+<p class="lead">
+ Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.
+</p>
+{% endexample %}
+
+## Inline text elements
+
+Styling for common inline HTML5 elements.
+
+{% example html %}
+<p>You can use the mark tag to <mark>highlight</mark> text.</p>
+<p><del>This line of text is meant to be treated as deleted text.</del></p>
+<p><s>This line of text is meant to be treated as no longer accurate.</s></p>
+<p><ins>This line of text is meant to be treated as an addition to the document.</ins></p>
+<p><u>This line of text will render as underlined</u></p>
+<p><small>This line of text is meant to be treated as fine print.</small></p>
+<p><strong>This line rendered as bold text.</strong></p>
+<p><em>This line rendered as italicized text.</em></p>
+{% endexample %}
+
+<div class="bs-callout bs-callout-info">
+ <h4>Alternate elements</h4>
+ <p>Feel free to use <code><b></code> and <code><i></code> in HTML5. <code><b></code> is meant to highlight words or phrases without conveying additional importance while <code><i></code> is mostly for voice, technical terms, etc.</p>
+</div>
+
+## Alignment classes
+
+Easily realign text to components with text alignment classes.
+
+{% example html %}
+<p class="text-left">Left aligned text.</p>
+<p class="text-center">Center aligned text.</p>
+<p class="text-right">Right aligned text.</p>
+<p class="text-justify">Justified text.</p>
+<p class="text-nowrap">No wrap text.</p>
+{% endexample %}
+
+## Transformation classes
+
+Transform text in components with text capitalization classes.
+
+{% example html %}
+<p class="text-lowercase">Lowercased text.</p>
+<p class="text-uppercase">Uppercased text.</p>
+<p class="text-capitalize">Capitalized text.</p>
+{% endexample %}
+
+## Abbreviations
+
- For expanded text on long hover of an abbreviation, include the `title` attribute with the `<abbr>` element.
-
++Stylized implementation of HTML's `<abbr>` element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a `title` attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover and to users of assistive technologies.
+
+### Basic abbreviation
+
-
+{% example html %}
+<abbr title="attribute">attr</abbr>
+{% endexample %}
+
+### Initialism
+
+Add `.initialism` to an abbreviation for a slightly smaller font-size.
+
+{% example html %}
+<abbr title="HyperText Markup Language" class="initialism">HTML</abbr>
+{% endexample %}
+
+## Address
+
+Present contact information for the nearest ancestor or the entire body of work. Preserve formatting by ending all lines with `<br>`.
+
+{% example html %}
+<address>
+ <strong>Twitter, Inc.</strong><br>
+ 795 Folsom Ave, Suite 600<br>
+ San Francisco, CA 94107<br>
+ <abbr title="Phone">P:</abbr> (123) 456-7890
+</address>
+
+<address>
+ <strong>Full Name</strong><br>
+ <a href="mailto:#">first.last@example.com</a>
+</address>
+{% endexample %}
+
+## Blockquotes
+
+For quoting blocks of content from another source within your document.
+
+### Default blockquote
+
+Wrap `<blockquote>` around any <abbr title="HyperText Markup Language">HTML</abbr> as the quote. For straight quotes, we recommend a `<p>`.
+
+{% example html %}
+<blockquote>
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+</blockquote>
+{% endexample %}
+
+### Blockquote options
+
+Style and content changes for simple variations on a standard `<blockquote>`.
+
+#### Naming a source
+
+Add a `<footer>` for identifying the source. Wrap the name of the source work in `<cite>`.
+
+{% example html %}
+<blockquote>
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+ <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer>
+</blockquote>
+{% endexample %}
+
+#### Reverse layout
+
+Add `.blockquote-reverse` for a blockquote with right-aligned content.
+
+{% example html %}
+<blockquote class="blockquote-reverse">
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+ <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer>
+</blockquote>
+{% endexample %}
+
+## Lists
+
+### Unordered
+
+A list of items in which the order does *not* explicitly matter.
+
+{% example html %}
+<ul>
+ <li>Lorem ipsum dolor sit amet</li>
+ <li>Nulla volutpat aliquam velit
+ <ul>
+ <li>Phasellus iaculis neque</li>
+ <li>Purus sodales ultricies</li>
+ <li>Vestibulum laoreet porttitor sem</li>
+ <li>Ac tristique libero volutpat at</li>
+ </ul>
+ </li>
+ <li>Faucibus porta lacus fringilla vel</li>
+ <li>Aenean sit amet erat nunc</li>
+ <li>Eget porttitor lorem</li>
+</ul>
+{% endexample %}
+
+### Ordered
+
+A list of items in which the order *does* explicitly matter.
+
+{% example html %}
+<ol>
+ <li>Lorem ipsum dolor sit amet</li>
+ <li>Nulla volutpat aliquam velit
+ <ol>
+ <li>Phasellus iaculis neque</li>
+ <li>Purus sodales ultricies</li>
+ <li>Vestibulum laoreet porttitor sem</li>
+ <li>Ac tristique libero volutpat at</li>
+ </ol>
+ </li>
+ <li>Faucibus porta lacus fringilla vel</li>
+ <li>Aenean sit amet erat nunc</li>
+ <li>Eget porttitor lorem</li>
+</ol>
+{% endexample %}
+
+### Unstyled
+
+Remove the default `list-style` and left margin on list items (immediate children only). **This only applies to immediate children list items**, meaning you will need to add the class for any nested lists as well.
+
+{% example html %}
+<ul class="list-unstyled">
+ <li>Lorem ipsum dolor sit amet</li>
+ <li>Consectetur adipiscing elit</li>
+ <li>Integer molestie lorem at massa</li>
+ <li>Facilisis in pretium nisl aliquet</li>
+ <li>Nulla volutpat aliquam velit
+ <ul>
+ <li>Phasellus iaculis neque</li>
+ <li>Purus sodales ultricies</li>
+ <li>Vestibulum laoreet porttitor sem</li>
+ <li>Ac tristique libero volutpat at</li>
+ </ul>
+ </li>
+ <li>Faucibus porta lacus fringilla vel</li>
+ <li>Aenean sit amet erat nunc</li>
+ <li>Eget porttitor lorem</li>
+</ul>
+{% endexample %}
+
+### Inline
+
+Place all list items on a single line with `display: inline-block;` and some light padding.
+
+{% example html %}
+<ul class="list-inline">
+ <li>Lorem ipsum</li>
+ <li>Phasellus iaculis</li>
+ <li>Nulla volutpat</li>
+</ul>
+{% endexample %}
+
+### Description
+
+A list of terms with their associated descriptions.
+
+{% example html %}
+<dl>
+ <dt>Description lists</dt>
+ <dd>A description list is perfect for defining terms.</dd>
+ <dt>Euismod</dt>
+ <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
+ <dd>Donec id elit non mi porta gravida at eget metus.</dd>
+ <dt>Malesuada porta</dt>
+ <dd>Etiam porta sem malesuada magna mollis euismod.</dd>
+</dl>
+{% endexample %}
+
+### Horizontal description
+
+Align terms and descriptions horizontally by using our grid system's predefined classes (or semantic mixins). For longer terms, you can optionally add a `.text-truncate` class to truncate the text with an ellipsis.
+
+{% example html %}
+<dl class="dl-horizontal">
+ <dt class="col-sm-3">Description lists</dt>
+ <dd class="col-sm-9">A description list is perfect for defining terms.</dd>
+
+ <dt class="col-sm-3">Euismod</dt>
+ <dd class="col-sm-9">Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
+ <dd class="col-sm-9 col-sm-offset-3">Donec id elit non mi porta gravida at eget metus.</dd>
-
++
+ <dt class="col-sm-3">Malesuada porta</dt>
+ <dd class="col-sm-9">Etiam porta sem malesuada magna mollis euismod.</dd>
++
+ <dt class="col-sm-3 text-truncate">Truncated term is truncated</dt>
+ <dd class="col-sm-9">Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</dd>
+</dl>
+{% endexample %}
--- /dev/null
- If your navigation contains many links and comes before the main content in the DOM, add a `Skip to main content` link immediately after your opening `<body>` tag. [(read why)](http://a11yproject.com/posts/skip-nav-links/)
+---
+layout: page
+title: Accessibility
+---
+
+Bootstrap follows common web standards and—with minimal extra effort—can be used to create sites that are accessible to those using <abbr title="Assistive Technology" class="initialism">AT</abbr>.
+
+### Skip navigation
+
++If your navigation contains many links and comes before the main content in the DOM, add a `Skip to main content` link [before the navigation](http://a11yproject.com/posts/skip-nav-links/). Using the `.sr-only` class will visually hide the skip link, and the `.sr-only-focusable` class will ensure that the link becomes visible once focused (for sighted keyboard users).
+
+{% highlight html %}
+<body>
+ <a href="#content" class="sr-only sr-only-focusable">Skip to main content</a>
+ <div class="container" id="content">
+ The main page content.
+ </div>
+</body>
+{% endhighlight %}
+
+### Nested headings
+
+When nesting headings (`<h1>` - `<h6>`), your primary document header should be an `<h1>`. Subsequent headings should make logical use of `<h2>` - `<h6>` such that screen readers can construct a table of contents for your pages.
+
+Learn more at [HTML CodeSniffer](http://squizlabs.github.io/HTML_CodeSniffer/Standards/Section508/) and [Penn State's Accessability](http://accessibility.psu.edu/headings).
+
+### Additional resources
+
+- ["HTML Codesniffer" bookmarklet for identifying accessibility issues](https://github.com/squizlabs/HTML_CodeSniffer)
+- [The A11Y Project](http://a11yproject.com/)
+- [MDN accessibility documentation](https://developer.mozilla.org/en-US/docs/Accessibility)
--- /dev/null
+---
+layout: page
+title: Download
+---
+
+Bootstrap is available for download via ZIP file in two flavors: precompiled CSS and Javascript, and the complete source code with documentation.
+
+## Optional builds
+
+### Scaffolding only
+Just our global CSS resets, including Normalize and more. No custom CSS components or JavaScript.
+
+### Grid only
+Literally just our grid container and columns. No global CSS resets, custom CSS components, or JavaScript.
+
+### Individual components
+Choose what CSS and JS components to download and customize further for your own use. Include the global CSS resets.
+
+### Kitchen sink
+Download the entire project and quickly get developing. Includes all CSS and JavaScript, including the source files and basic build tools.
+
+---
+
+### Precompiled
+
+Compiled and minified CSS and JavaScript. No docs or original source files are included.
+
+<a href="{{ site.download.dist }}" class="btn btn-lg btn-outline" role="button" onclick="ga('send', 'event', 'Getting started', 'Download', 'Download compiled');">Download Bootstrap</a>
+
+### Download source and docs
+
+Source Sass, JavaScript, and documentation. **Requires a Sass compiler and [some setup](../compiling).**
+
+<a href="{{ site.download.source }}" class="btn btn-lg btn-outline" role="button" onclick="ga('send', 'event', 'Getting started', 'Download', 'Download source');">Download source</a>
+
+### Bower
+
+You can also install and manage Bootstrap's Sass, CSS, and JavaScript using [Bower](http://bower.io).
+
+{% highlight bash %}$ bower install bootstrap{% endhighlight %}
+
+### npm
+
+Bootstrap is available as [an npm package](https://www.npmjs.org/package/bootstrap). Install it into your Node powered apps with:
+
+{% highlight bash %}$ npm install bootstrap{% endhighlight %}
++
++### Autoprefixer required for Less/Sass
++
++Bootstrap uses [Autoprefixer](https://github.com/postcss/autoprefixer) to deal with [CSS vendor prefixes](http://webdesign.about.com/od/css/a/css-vendor-prefixes.htm). If you're compiling Bootstrap from its Less/Sass source and not using our Gruntfile, you'll need to integrate Autoprefixer into your build process yourself. If you're using precompiled Bootstrap or using our Gruntfile, you don't need to worry about this because Autoprefixer is already integrated into our Gruntfile.
--- /dev/null
- <button type="button" class="close" data-dismiss="alert">
+---
+layout: page
+title: Alerts
+---
+
+Add dismiss functionality to all alert messages with this plugin.
+
+## Examples
+
+{% example html %}
+<div class="alert alert-warning alert-dismissible fade in" role="alert">
- <button type="button" class="close" data-dismiss="alert">
++ <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+ <span aria-hidden="true">×</span>
+ <span class="sr-only">Close</span>
+ </button>
+ <strong>Holy guacamole!</strong> Best check yo self, you're not looking too good.
+</div>
+{% endexample %}
+
+When using a `.close` button, it must be the first child of the `.alert-dismissible` and no text content may come before it in the markup.
+
+{% example html %}
+<div class="alert alert-danger alert-dismissible fade in" role="alert">
+ <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
+ <h4 class="alert-heading">Oh snap! You got an error!</h4>
+ <p>Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.</p>
+ <p>
+ <button type="button" class="btn btn-danger">Take this action</button>
+ <button type="button" class="btn btn-secondary">Or do this</button>
+ </p>
+</div>
+{% endexample %}
+
+## Usage
+
+Enable dismissal of an alert via JavaScript:
+
+{% highlight js %}
+$(".alert").alert()
+{% endhighlight %}
+
+### Markup
+
+Just add `data-dismiss="alert"` to your close button to automatically give an alert close functionality. Closing an alert removes it from the DOM.
+
+{% highlight html %}
++<button type="button" class="close" data-dismiss="alert" aria-label="Close">
+ <span aria-hidden="true">×</span>
+ <span class="sr-only">Close</span>
+</button>
+{% endhighlight %}
+
+To have your alerts use animation when closing, make sure they have the `.fade` and `.in` classes already applied to them.
+
+### Methods
+
+#### $().alert()
+
+Makes an alert listen for click events on descendant elements which have the `data-dismiss="alert"` attribute. (Not necessary when using the data-api's auto-initialization.)
+
+#### $().alert('close')
+
+Closes an alert by removing it from the DOM. If the `.fade` and `.in` classes are present on the element, the alert will fade out before it is removed.
+
+{% highlight js %}$(".alert").alert('close'){% endhighlight %}
+
+### Events
+
+Bootstrap's alert plugin exposes a few events for hooking into alert functionality.
+
+<div class="table-responsive">
+ <table class="table table-bordered table-striped">
+ <thead>
+ <tr>
+ <th style="width: 150px;">Event Type</th>
+ <th>Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>close.bs.alert</td>
+ <td>This event fires immediately when the <code>close</code> instance method is called.</td>
+ </tr>
+ <tr>
+ <td>closed.bs.alert</td>
+ <td>This event is fired when the alert has been closed (will wait for CSS transitions to complete).</td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+{% highlight js %}
+$('#myAlert').on('closed.bs.alert', function () {
+ // do something…
+})
+{% endhighlight %}
--- /dev/null
- <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
+---
+layout: page
+title: Modal
+---
+
+Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults.
+
+**Due to how HTML5 defines its semantics, the `autofocus` HTML attribute has no effect in Bootstrap modals.** To achieve the same effect, use some custom JavaScript:
+
+{% highlight js %}
+$('#myModal').on('shown.bs.modal', function () {
+ $('#myInput').focus()
+})
+{% endhighlight %}
+
+<div class="bs-callout bs-callout-warning" id="callout-stacked-modals">
+ <h4>Overlapping modals not supported</h4>
+ <p>Be sure not to open a modal while another is still visible. Showing more than one modal at a time requires custom code.</p>
+</div>
+<div class="bs-callout bs-callout-warning" id="callout-modal-markup-placement">
+ <h4>Modal markup placement</h4>
+ <p>Always try to place a modal's HTML code in a top-level position in your document to avoid other components affecting the modal's appearance and/or functionality.</p>
+</div>
+<div class="bs-callout bs-callout-warning">
+ <h4>Mobile device caveats</h4>
+ <p>There are some caveats regarding using modals on mobile devices. <a href="../getting-started/#support-fixed-position-keyboards">See our browser support docs</a> for details.</p>
+</div>
+
+### Static example
+
+A rendered modal with header, body, and set of actions in the footer.</p>
+
+<div class="bs-example bs-example-modal">
+ <div class="modal">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
++ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
++ <span aria-hidden="true">×</span>
++ <span class="sr-only">Close</span>
++ </button>
+ <h4 class="modal-title">Modal title</h4>
+ </div>
+ <div class="modal-body">
+ <p>One fine body…</p>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+ <button type="button" class="btn btn-primary">Save changes</button>
+ </div>
+ </div><!-- /.modal-content -->
+ </div><!-- /.modal-dialog -->
+ </div><!-- /.modal -->
+</div>
+
+{% highlight html %}
+<div class="modal fade">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
++ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
++ <span aria-hidden="true">×</span>
++ <span class="sr-only">Close</span>
++ </button>
+ <h4 class="modal-title">Modal title</h4>
+ </div>
+ <div class="modal-body">
+ <p>One fine body…</p>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+ <button type="button" class="btn btn-primary">Save changes</button>
+ </div>
+ </div><!-- /.modal-content -->
+ </div><!-- /.modal-dialog -->
+</div><!-- /.modal -->
+{% endhighlight %}
+
+### Live demo
+
+Toggle a modal via JavaScript by clicking the button below. It will slide down and fade in from the top of the page.
+
+<div id="myModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+ <div class="modal-dialog">
+ <div class="modal-content">
+
+ <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
++ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
++ <span aria-hidden="true">×</span>
++ <span class="sr-only">Close</span>
++ </button>
+ <h4 class="modal-title" id="myModalLabel">Modal title</h4>
+ </div>
+ <div class="modal-body">
+ <h4>Text in a modal</h4>
+ <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>
+
+ <h4>Popover in a modal</h4>
+ <p>This <a href="#" role="button" class="btn btn-secondary popover-test" title="A Title" data-content="And here's some amazing content. It's very engaging. right?">button</a> should trigger a popover on click.</p>
+
+ <h4>Tooltips in a modal</h4>
+ <p><a href="#" class="tooltip-test" title="Tooltip">This link</a> and <a href="#" class="tooltip-test" title="Tooltip">that link</a> should have tooltips on hover.</p>
+
+ <hr>
+
+ <h4>Overflowing text to show scroll behavior</h4>
+ <p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>
+ <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
+ <p>Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.</p>
+ <p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>
+ <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
+ <p>Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.</p>
+ <p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>
+ <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
+ <p>Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.</p>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+ <button type="button" class="btn btn-primary">Save changes</button>
+ </div>
+
+ </div><!-- /.modal-content -->
+ </div><!-- /.modal-dialog -->
+</div>
+
+<div class="bs-example" style="padding-bottom: 24px;">
+ <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
+ Launch demo modal
+ </button>
+</div>
+
+{% highlight html %}
+<!-- Button trigger modal -->
+<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
+ Launch demo modal
+</button>
+
+<!-- Modal -->
+<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
++ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
++ <span aria-hidden="true">×</span>
++ <span class="sr-only">Close</span>
++ </button>
+ <h4 class="modal-title" id="myModalLabel">Modal title</h4>
+ </div>
+ <div class="modal-body">
+ ...
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+ <button type="button" class="btn btn-primary">Save changes</button>
+ </div>
+ </div>
+ </div>
+</div>
+{% endhighlight %}
+
+<div class="bs-callout bs-callout-warning">
+ <h4>Make modals accessible</h4>
+ <p>Be sure to add <code>role="dialog"</code> to <code>.modal</code>, <code>aria-labelledby="myModalLabel"</code> attribute to reference the modal title, and <code>aria-hidden="true"</code> to tell assistive technologies to skip the modal's DOM elements.</p>
+ <p>Additionally, you may give a description of your modal dialog with <code>aria-describedby</code> on <code>.modal</code>.</p>
+</div>
+
+<div class="bs-callout bs-callout-info">
+ <h4>Embedding YouTube videos</h4>
+ <p>Embedding YouTube videos in modals requires additional JavaScript not in Bootstrap to automatically stop playback and more. <a href="http://stackoverflow.com/questions/18622508/bootstrap-3-and-youtube-in-modal">See this helpful Stack Overflow post</a> for more information.</p>
+</div>
+
+## Optional sizes
+
+Modals have two optional sizes, available via modifier classes to be placed on a `.modal-dialog`.
+
+<div class="bs-example">
+ <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-lg">Large modal</button>
+ <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-sm">Small modal</button>
+</div>
+
+{% highlight html %}
+<!-- Large modal -->
+<button class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-lg">Large modal</button>
+
+<div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
+ <div class="modal-dialog modal-lg">
+ <div class="modal-content">
+ ...
+ </div>
+ </div>
+</div>
+
+<!-- Small modal -->
+<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-sm">Small modal</button>
+
+<div class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
+ <div class="modal-dialog modal-sm">
+ <div class="modal-content">
+ ...
+ </div>
+ </div>
+</div>
+{% endhighlight %}
+
+<div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
+ <div class="modal-dialog modal-lg">
+ <div class="modal-content">
+
+ <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
++ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
++ <span aria-hidden="true">×</span>
++ <span class="sr-only">Close</span>
++ </button>
+ <h4 class="modal-title" id="myLargeModalLabel">Large modal</h4>
+ </div>
+ <div class="modal-body">
+ ...
+ </div>
+ </div>
+ </div>
+</div>
+
+<div class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
+ <div class="modal-dialog modal-sm">
+ <div class="modal-content">
+
+ <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
++ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
++ <span aria-hidden="true">×</span>
++ <span class="sr-only">Close</span>
++ </button>
+ <h4 class="modal-title" id="mySmallModalLabel">Small modal</h4>
+ </div>
+ <div class="modal-body">
+ ...
+ </div>
+ </div>
+ </div>
+</div>
+
+## Remove animation
+
+For modals that simply appear rather than fade in to view, remove the `.fade` class from your modal markup.
+
+{% highlight html %}
+<div class="modal" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true">
+ ...
+</div>
+{% endhighlight %}
+
+## Varying modal content based on trigger button
+
+Have a bunch of buttons that all trigger the same modal, just with slightly different contents? Use `event.relatedTarget` and [HTML `data-*` attributes](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes) (possibly [via jQuery](http://api.jquery.com/data/)) to vary the contents of the modal depending on which button was clicked. See the Modal Events docs for details on `relatedTarget`.
+
+<div class="bs-example" style="padding-bottom: 24px;">
+ <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button>
+ <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Open modal for @fat</button>
+ <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@twbootstrap">Open modal for @twbootstrap</button>
+
+ <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
++ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
++ <span aria-hidden="true">×</span>
++ <span class="sr-only">Close</span>
++ </button>
+ <h4 class="modal-title" id="exampleModalLabel">New message</h4>
+ </div>
+ <div class="modal-body">
+ <form>
+ <div class="form-group">
+ <label for="recipient-name" class="control-label">Recipient:</label>
+ <input type="text" class="form-control" id="recipient-name">
+ </div>
+ <div class="form-group">
+ <label for="message-text" class="control-label">Message:</label>
+ <textarea class="form-control" id="message-text"></textarea>
+ </div>
+ </form>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+ <button type="button" class="btn btn-primary">Send message</button>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+{% highlight html %}
+<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button>
+<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Open modal for @fat</button>
+<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@twbootstrap">Open modal for @twbootstrap</button>
+
+<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
++ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
++ <span aria-hidden="true">×</span>
++ <span class="sr-only">Close</span>
++ </button>
+ <h4 class="modal-title" id="exampleModalLabel">New message</h4>
+ </div>
+ <div class="modal-body">
+ <form>
+ <div class="form-group">
+ <label for="recipient-name" class="control-label">Recipient:</label>
+ <input type="text" class="form-control" id="recipient-name">
+ </div>
+ <div class="form-group">
+ <label for="message-text" class="control-label">Message:</label>
+ <textarea class="form-control" id="message-text"></textarea>
+ </div>
+ </form>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+ <button type="button" class="btn btn-primary">Send message</button>
+ </div>
+ </div>
+ </div>
+</div>
+{% endhighlight %}
+
+{% highlight js %}
+$('#exampleModal').on('show.bs.modal', function (event) {
+ var button = $(event.relatedTarget) // Button that triggered the modal
+ var recipient = button.data('whatever') // Extract info from data-* attributes
+ // If necessary, you could initiate an AJAX request here (and then do the updating in a callback).
+ // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.
+ var modal = $(this)
+ modal.find('.modal-title').text('New message to ' + recipient)
+ modal.find('.modal-body input').val(recipient)
+})
+{% endhighlight %}
+
+## Usage
+
+The modal plugin toggles your hidden content on demand, via data attributes or JavaScript. It also adds `.modal-open` to the `<body>` to override default scrolling behavior and generates a `.modal-backdrop` to provide a click area for dismissing shown modals when clicking outside the modal.
+
+### Via data attributes
+
+Activate a modal without writing JavaScript. Set `data-toggle="modal"` on a controller element, like a button, along with a `data-target="#foo"` or `href="#foo"` to target a specific modal to toggle.
+
+{% highlight html %}
+<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
+{% endhighlight %}
+
+### Via JavaScript
+
+Call a modal with id `myModal` with a single line of JavaScript:
+
+{% highlight js %}$('#myModal').modal(options){% endhighlight %}
+
+### Options
+
+Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in `data-backdrop=""`.
+
+<div class="table-responsive">
+ <table class="table table-bordered table-striped">
+ <thead>
+ <tr>
+ <th style="width: 100px;">Name</th>
+ <th style="width: 50px;">type</th>
+ <th style="width: 50px;">default</th>
+ <th>description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>backdrop</td>
+ <td>boolean or the string <code>'static'</code></td>
+ <td>true</td>
+ <td>Includes a modal-backdrop element. Alternatively, specify <code>static</code> for a backdrop which doesn't close the modal on click.</td>
+ </tr>
+ <tr>
+ <td>keyboard</td>
+ <td>boolean</td>
+ <td>true</td>
+ <td>Closes the modal when escape key is pressed</td>
+ </tr>
+ <tr>
+ <td>show</td>
+ <td>boolean</td>
+ <td>true</td>
+ <td>Shows the modal when initialized.</td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+### Methods
+
+#### .modal(options)
+
+Activates your content as a modal. Accepts an optional options `object`.
+
+{% highlight js %}
+$('#myModal').modal({
+ keyboard: false
+})
+{% endhighlight %}
+
+#### .modal('toggle')
+
+Manually toggles a modal. **Returns to the caller before the modal has actually been shown or hidden** (i.e. before the `shown.bs.modal` or `hidden.bs.modal` event occurs).
+
+{% highlight js %}$('#myModal').modal('toggle'){% endhighlight %}
+
+#### .modal('show')
+
+Manually opens a modal. **Returns to the caller before the modal has actually been shown** (i.e. before the `shown.bs.modal` event occurs).
+
+{% highlight js %}$('#myModal').modal('show'){% endhighlight %}
+
+#### .modal('hide')
+
+Manually hides a modal. **Returns to the caller before the modal has actually been hidden** (i.e. before the `hidden.bs.modal` event occurs).
+
+{% highlight js %}$('#myModal').modal('hide'){% endhighlight %}
+
+### Events
+
+Bootstrap's modal class exposes a few events for hooking into modal functionality.
+
+<div class="table-responsive">
+ <table class="table table-bordered table-striped">
+ <thead>
+ <tr>
+ <th style="width: 150px;">Event Type</th>
+ <th>Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>show.bs.modal</td>
+ <td>This event fires immediately when the <code>show</code> instance method is called. If caused by a click, the clicked element is available as the <code>relatedTarget</code> property of the event.</td>
+ </tr>
+ <tr>
+ <td>shown.bs.modal</td>
+ <td>This event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete). If caused by a click, the clicked element is available as the <code>relatedTarget</code> property of the event.</td>
+ </tr>
+ <tr>
+ <td>hide.bs.modal</td>
+ <td>This event is fired immediately when the <code>hide</code> instance method has been called.</td>
+ </tr>
+ <tr>
+ <td>hidden.bs.modal</td>
+ <td>This event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete).</td>
+ </tr>
+ <tr>
+ <td>loaded.bs.modal</td>
+ <td>This event is fired when the modal has loaded content using the <code>remote</code> option.</td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+{% highlight js %}
+$('#myModal').on('hidden.bs.modal', function (e) {
+ // do something...
+})
+{% endhighlight %}
--- /dev/null
+---
+layout: page
+title: Overview
+---
+
+### Individual or compiled
+
+Plugins can be included individually (using Bootstrap's individual `*.js` files), or all at once (using `bootstrap.js` or the minified `bootstrap.min.js`).
+
+<div class="bs-callout bs-callout-danger">
+ <h4>Using the compiled JavaScript</h4>
+ <p>Both <code>bootstrap.js</code> and <code>bootstrap.min.js</code> contain all plugins in a single file. Include only one.</p>
+</div>
+
+<div class="bs-callout bs-callout-danger">
+ <h4>Component data attributes</h4>
+ <p>Don't use data attributes from multiple plugins on the same element. For example, a button cannot both have a tooltip and toggle a modal. To accomplish this, use a wrapping element.</p>
+</div>
+
+<div class="bs-callout bs-callout-danger">
+ <h4>Plugin dependencies</h4>
+ <p>Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs. Also note that all plugins depend on jQuery (this means jQuery must be included <strong>before</strong> the plugin files). <a href="{{ site.repo }}/blob/v{{ site.current_version }}/bower.json">Consult our <code>bower.json</code></a> to see which versions of jQuery are supported.</p>
+</div>
+
+### Data attributes
+
+You can use all Bootstrap plugins purely through the markup API without writing a single line of JavaScript. This is Bootstrap's first-class API and should be your first consideration when using a plugin.
+
+That said, in some situations it may be desirable to turn this functionality off. Therefore, we also provide the ability to disable the data attribute API by unbinding all events on the document namespaced with `data-api`. This looks like this:
+
+{% highlight js %}
+$(document).off('.data-api')
+{% endhighlight %}
+
+Alternatively, to target a specific plugin, just include the plugin's name as a namespace along with the data-api namespace like this:
+
+{% highlight js %}
+$(document).off('.alert.data-api')
+{% endhighlight %}
+
+<div class="bs-callout bs-callout-danger">
+ <h4>Only one plugin per element via data attributes</h4>
+ <p>Don't use data attributes from multiple plugins on the same element. For example, a button cannot both have a tooltip and toggle a modal. To accomplish this, use a wrapping element.</p>
+</div>
+
+### Programmatic API
+
+We also believe you should be able to use all Bootstrap plugins purely through the JavaScript API. All public APIs are single, chainable methods, and return the collection acted upon.
+
+{% highlight js %}
+$('.btn.danger').button('toggle').addClass('fat')
+{% endhighlight %}
+
+All methods should accept an optional options object, a string which targets a particular method, or nothing (which initiates a plugin with default behavior):
+
+{% highlight js %}
+$('#myModal').modal() // initialized with defaults
+$('#myModal').modal({ keyboard: false }) // initialized with no keyboard
+$('#myModal').modal('show') // initializes and invokes show immediately
+{% endhighlight %}
+
+Each plugin also exposes its raw constructor on a `Constructor` property: `$.fn.popover.Constructor`. If you'd like to get a particular plugin instance, retrieve it directly from an element: `$('[rel="popover"]').data('popover')`.
+
+#### Default settings
+You can change the default settings for a plugin by modifying the plugin's `Constructor.DEFAULTS` object:
+
+{% highlight js %}
+$.fn.modal.Constructor.DEFAULTS.keyboard = false // changes default for the modal plugin's `keyboard` option to false
+{% endhighlight %}
+
+### No conflict
+
+Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call `.noConflict` on the plugin you wish to revert the value of.
+
+{% highlight js %}
+var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
+$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
+{% endhighlight %}
+
+### Events
+
+Bootstrap provides custom events for most plugins' unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. `show`) is triggered at the start of an event, and its past participle form (ex. `shown`) is triggered on the completion of an action.
+
+All infinitive events provide `preventDefault` functionality. This provides the ability to stop the execution of an action before it starts.
+
+{% highlight js %}
+$('#myModal').on('show.bs.modal', function (e) {
+ if (!data) return e.preventDefault() // stops modal from being shown
+})
+{% endhighlight %}
+
++### Version numbers
++
++The version of each of Bootstrap's jQuery plugins can be accessed via the `VERSION` property of the plugin's constructor. For example, for the tooltip plugin:
++
++{% highlight js %}
++$.fn.tooltip.Constructor.VERSION // => "{{ site.current_version }}"
++{% endhighlight %}
++
+### No special fallbacks when JavaScript is disabled
+
+Bootstrap's plugins don't fall back particularly gracefully when JavaScript is disabled. If you care about the user experience in this case, use [`<noscript>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript) to explain the situation (and how to re-enable JavaScript) to your users, and/or add your own custom fallbacks.
+
+<div class="bs-callout bs-callout-warning" id="callout-third-party-libs">
+ <h4>Third-party libraries</h4>
+ <p><strong>Bootstrap does not officially support third-party JavaScript libraries</strong> like Prototype or jQuery UI. Despite <code>.noConflict</code> and namespaced events, there may be compatibility problems that you need to fix on your own.</p>
+</div>
"grunt-contrib-connect": "~0.9.0",
"grunt-contrib-copy": "~0.7.0",
"grunt-contrib-csslint": "~0.3.1",
- "grunt-contrib-cssmin": "~0.10.0",
+ "grunt-contrib-cssmin": "~0.11.0",
"grunt-contrib-jade": "~0.14.0",
"grunt-contrib-jshint": "~0.10.0",
- "grunt-contrib-less": "~0.12.0",
"grunt-contrib-qunit": "~0.5.2",
+ "grunt-contrib-sass": "^0.8.1",
"grunt-contrib-uglify": "~0.7.0",
"grunt-contrib-watch": "~0.6.1",
"grunt-csscomb": "~3.0.0",
// Additional properties for button version
// iOS requires the button element instead of an anchor tag.
// If you want the anchor version, it requires `href="#"`.
- button& {
+ // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
+ &button {
padding: 0;
cursor: pointer;
background: transparent;
// 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],
+ &:disabled,
&[readonly],
fieldset[disabled] & {
- cursor: @cursor-disabled;
- background-color: @input-bg-disabled;
+ cursor: $cursor-disabled;
+ background-color: $input-bg-disabled;
- opacity: 1; // iOS fix for unreadable disabled content
+ opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
}
+}
- // Reset height for `textarea`s
- textarea& {
- height: auto;
- }
+// Reset height for `textarea`s
+textarea.form-control {
+ height: auto;
+ padding-top: $padding-base-horizontal;
+ padding-bottom: $padding-base-horizontal;
}
.media,
.media-body {
- zoom: 1;
overflow: hidden;
+ zoom: 1;
}
+ .media-body {
+ width: 10000px;
+ }
+
.media-object {
display: block;
}
--- /dev/null
- // Reset font and text propertes given new insertion method
+//
+// Popovers
+// --------------------------------------------------
+
+
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: $zindex-popover;
+ display: none;
+ max-width: $popover-max-width;
+ padding: 1px;
++ // Reset font and text properties given new insertion method
+ font-family: $font-family-base;
+ font-size: $font-size-base;
+ font-weight: normal;
+ line-height: $line-height-base;
+ text-align: left;
+ // Overrides for proper insertion
+ white-space: normal;
+ background-color: $popover-bg;
+ background-clip: padding-box;
+ border: 1px solid $popover-border-color;
+ @include border-radius($border-radius-lg);
+ @include box-shadow(0 5px 10px rgba(0,0,0,.2));
+}
+
+// Offset the popover to account for the popover arrow
+.popover-top { margin-top: -$popover-arrow-width; }
+.popover-right { margin-left: $popover-arrow-width; }
+.popover-bottom { margin-top: $popover-arrow-width; }
+.popover-left { margin-left: -$popover-arrow-width; }
+
+.popover-title {
+ padding: 8px 14px;
+ margin: 0; // reset heading margin
+ font-size: $font-size-base;
+ background-color: $popover-title-bg;
+ border-bottom: 1px solid darken($popover-title-bg, 5%);
+ @include border-radius(($border-radius-lg - 1) ($border-radius-lg - 1) 0 0);
+}
+
+.popover-content {
+ padding: 9px 14px;
+}
+
+// Arrows
+//
+// .popover-arrow is outer, .popover-arrow:after is inner
+
+.popover-arrow {
+ &,
+ &:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+ }
+}
+.popover-arrow {
+ border-width: $popover-arrow-outer-width;
+}
+.popover-arrow:after {
+ content: "";
+ border-width: $popover-arrow-width;
+}
+
+.popover-top > .popover-arrow {
+ bottom: -$popover-arrow-outer-width;
+ left: 50%;
+ margin-left: -$popover-arrow-outer-width;
+ border-top-color: $popover-arrow-outer-color;
+ border-bottom-width: 0;
+ &:after {
+ bottom: 1px;
+ margin-left: -$popover-arrow-width;
+ content: "";
+ border-top-color: $popover-arrow-color;
+ border-bottom-width: 0;
+ }
+}
+.popover-right > .popover-arrow {
+ top: 50%;
+ left: -$popover-arrow-outer-width;
+ margin-top: -$popover-arrow-outer-width;
+ border-right-color: $popover-arrow-outer-color;
+ border-left-width: 0;
+ &:after {
+ bottom: -$popover-arrow-width;
+ left: 1px;
+ content: "";
+ border-right-color: $popover-arrow-color;
+ border-left-width: 0;
+ }
+}
+.popover-bottom > .popover-arrow {
+ top: -$popover-arrow-outer-width;
+ left: 50%;
+ margin-left: -$popover-arrow-outer-width;
+ border-top-width: 0;
+ border-bottom-color: $popover-arrow-outer-color;
+ &:after {
+ top: 1px;
+ margin-left: -$popover-arrow-width;
+ content: "";
+ border-top-width: 0;
+ border-bottom-color: $popover-arrow-color;
+ }
+}
+
+.popover-left > .popover-arrow {
+ top: 50%;
+ right: -$popover-arrow-outer-width;
+ margin-top: -$popover-arrow-outer-width;
+ border-right-width: 0;
+ border-left-color: $popover-arrow-outer-color;
+ &:after {
+ right: 1px;
+ bottom: -$popover-arrow-width;
+ content: "";
+ border-right-width: 0;
+ border-left-color: $popover-arrow-color;
+ }
+}
--- /dev/null
- position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)
+//
+// Reset tabular elements
+//
+
+table {
+ background-color: $table-bg;
+}
+
+caption {
+ padding-top: $table-cell-padding;
+ padding-bottom: $table-cell-padding;
+ color: $text-muted;
+ text-align: left;
+}
+
+th {
+ text-align: left;
+}
+
+
+//
+// Basic tables
+//
+
+.table {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: $spacer;
+
+ th,
+ td {
+ padding: $table-cell-padding;
+ line-height: $line-height-base;
+ vertical-align: top;
+ border-top: 1px solid $table-border-color;
+ }
+
+ thead th {
+ vertical-align: bottom;
+ border-bottom: 2px solid $table-border-color;
+ }
+
+ tbody + tbody {
+ border-top: 2px solid $table-border-color;
+ }
+
+ .table {
+ background-color: $body-bg;
+ }
+}
+
+
+//
+// Condensed table w/ half padding
+//
+
+.table-sm {
+ th,
+ td {
+ padding: $table-sm-cell-padding;
+ }
+}
+
+
+// Bordered version
+//
+// Add borders all around the table and between all the columns.
+
+.table-bordered {
+ border: 1px solid $table-border-color;
+
+ th,
+ td {
+ border: 1px solid $table-border-color;
+ }
+
+ thead {
+ th,
+ td {
+ border-bottom-width: 2px;
+ }
+ }
+}
+
+
+// Zebra-striping
+//
+// Default zebra-stripe styles (alternating gray and transparent backgrounds)
+
+.table-striped {
+ tbody tr:nth-child(odd) {
+ background-color: $table-bg-accent;
+ }
+}
+
+
+// Hover effect
+//
+// Placed here since it has to come after the potential zebra striping
+
+.table-hover {
+ tbody tr:hover {
+ background-color: $table-bg-hover;
+ }
+}
+
+
+// Table cell sizing
+//
+// Reset default table behavior
+
+table col[class*="col-"] {
- position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)
++ position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
+ display: table-column;
+ float: none;
+}
+
+table {
+ td,
+ th {
+ &[class*="col-"] {
++ position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
+ display: table-cell;
+ float: none;
+ }
+ }
+}
+
+
+// Table backgrounds
+//
+// Exact selectors below required to override `.table-striped` and prevent
+// inheritance to nested tables.
+
+// Generate the contextual variants
+@include table-row-variant(active, $table-bg-active);
+@include table-row-variant(success, $state-success-bg);
+@include table-row-variant(info, $state-info-bg);
+@include table-row-variant(warning, $state-warning-bg);
+@include table-row-variant(danger, $state-danger-bg);
+
+
+// Responsive tables
+//
+// Wrap your tables in `.table-responsive` and we'll make them mobile friendly
+// by enabling horizontal scrolling. Only applies <768px. Everything above that
+// will display normally.
+
+.table-responsive {
+ display: block;
+ width: 100%;
+ overflow-x: auto;
+
+ // Todo: find out if we need this still.
+ //
+ // border: 1px solid $table-border-color;
+ // -ms-overflow-style: -ms-autohiding-scrollbar;
+ // min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)
+}
+
+
+.thead-inverse {
+ th {
+ color: #fff;
+ background-color: $gray-dark;
+ }
+}
+.thead-default {
+ th {
+ color: $gray;
+ background-color: $gray-lighter;
+ }
+}
+
+.table-inverse {
+ color: $gray-lighter;
+ background-color: $gray-dark;
+
+ &.table-bordered {
+ border: 0;
+ }
+
+ th,
+ td {
+ border-color: $gray;
+ }
+}
+
+
+.table-reflow {
+ thead {
+ float: left;
+ }
+
+ tbody {
+ display: block;
+ white-space: nowrap;
+ }
+
+ th,
+ td {
+ border-top: 1px solid $table-border-color;
+ border-left: 1px solid $table-border-color;
+
+ &:last-child {
+ border-right: 1px solid $table-border-color;
+ }
+ }
+
+ thead,
+ tbody,
+ tfoot {
+ &:last-child {
+ tr:last-child {
+ th,
+ td {
+ border-bottom: 1px solid $table-border-color;
+ }
+ }
+ }
+ }
+
+ tr {
+ float: left;
+
+ th,
+ td {
+ display: block !important;
+ border: 1px solid $table-border-color;
+ }
+ }
+}
--- /dev/null
- // Reset font and text propertes given new insertion method
+//
+// Tooltips
+// --------------------------------------------------
+
+
+// Base class
+.tooltip {
+ position: absolute;
+ z-index: $zindex-tooltip;
+ display: block;
++ // Reset font and text properties given new insertion method
+ font-family: $font-family-base;
+ font-size: $font-size-sm;
+ font-weight: normal;
+ line-height: 1.4;
+ visibility: visible;
+ opacity: 0;
+
+ &.in { opacity: $tooltip-opacity; }
+}
+
+.tooltip-top {
+ padding: $tooltip-arrow-width 0;
+ margin-top: -3px;
+}
+.tooltip-right {
+ padding: 0 $tooltip-arrow-width;
+ margin-left: 3px;
+}
+.tooltip-bottom {
+ padding: $tooltip-arrow-width 0;
+ margin-top: 3px;
+}
+.tooltip-left {
+ padding: 0 $tooltip-arrow-width;
+ margin-left: -3px;
+}
+
+// Wrapper for the tooltip content
+.tooltip-inner {
+ max-width: $tooltip-max-width;
+ padding: 3px 8px;
+ color: $tooltip-color;
+ text-align: center;
+ text-decoration: none;
+ background-color: $tooltip-bg;
+ @include border-radius($border-radius-base);
+}
+
+// Arrows
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.tooltip-top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -$tooltip-arrow-width;
+ border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
+ border-top-color: $tooltip-arrow-color;
+}
+.tooltip-right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -$tooltip-arrow-width;
+ border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;
+ border-right-color: $tooltip-arrow-color;
+}
+.tooltip-left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -$tooltip-arrow-width;
+ border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;
+ border-left-color: $tooltip-arrow-color;
+}
+.tooltip-bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -$tooltip-arrow-width;
+ border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
+ border-bottom-color: $tooltip-arrow-color;
+}