diff --git a/docs/_includes/docs-nav.html b/docs/_includes/docs-nav.html
index 682bf75aaa..649cad06a3 100644
--- a/docs/_includes/docs-nav.html
+++ b/docs/_includes/docs-nav.html
@@ -163,6 +163,7 @@
Media object
+ Panels
Wells
diff --git a/docs/assets/css/bootstrap.css b/docs/assets/css/bootstrap.css
index 4f034974a9..b86a16a788 100644
--- a/docs/assets/css/bootstrap.css
+++ b/docs/assets/css/bootstrap.css
@@ -383,12 +383,12 @@ a.text-warning:focus {
color: #a47e3c;
}
-.text-error {
+.text-danger {
color: #b94a48;
}
-a.text-error:hover,
-a.text-error:focus {
+a.text-danger:hover,
+a.text-danger:focus {
color: #953b39;
}
@@ -1119,9 +1119,9 @@ table th[class*="col-span-"] {
border-color: #d6e9c6;
}
-.table > tbody > tr > td.error,
-.table > tbody > tr > th.error,
-.table > tbody > tr.error > td {
+.table > tbody > tr > td.danger,
+.table > tbody > tr > th.danger,
+.table > tbody > tr.danger > td {
background-color: #f2dede;
border-color: #eed3d7;
}
@@ -1140,9 +1140,9 @@ table th[class*="col-span-"] {
border-color: #c9e2b3;
}
-.table-hover > tbody > tr > td.error:hover,
-.table-hover > tbody > tr > th.error:hover,
-.table-hover > tbody > tr.error:hover > td {
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td {
background-color: #ebcccc;
border-color: #e6c1c7;
}
@@ -2944,6 +2944,68 @@ fieldset[disabled] .btn-link:focus {
z-index: 1051;
}
+.panel {
+ padding: 15px;
+ margin-bottom: 20px;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+
+.panel-heading {
+ padding: 10px 15px;
+ margin: -15px -15px 15px;
+ font-size: 16px;
+ font-size: 1.6rem;
+ font-weight: 500;
+ background-color: #f5f5f5;
+ border-bottom: 1px solid #dddddd;
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+}
+
+.panel-success {
+ border-color: #d6e9c6;
+}
+
+.panel-success .panel-heading {
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+
+.panel-warning {
+ border-color: #fbeed5;
+}
+
+.panel-warning .panel-heading {
+ color: #c09853;
+ background-color: #fcf8e3;
+ border-color: #fbeed5;
+}
+
+.panel-danger {
+ border-color: #eed3d7;
+}
+
+.panel-danger .panel-heading {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #eed3d7;
+}
+
+.panel-info {
+ border-color: #bce8f1;
+}
+
+.panel-info .panel-heading {
+ color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+
.well {
min-height: 20px;
padding: 19px;
diff --git a/docs/assets/css/docs.css b/docs/assets/css/docs.css
index 6b576de2ad..181a3a734e 100644
--- a/docs/assets/css/docs.css
+++ b/docs/assets/css/docs.css
@@ -309,7 +309,9 @@ section > ul li {
.bs-docs-example > textarea:last-child,
.bs-docs-example > .table:last-child,
.bs-docs-example > .jumbotron:last-child,
-.bs-docs-example > .alert:last-child {
+.bs-docs-example > .alert:last-child,
+.bs-docs-example > .panel:last-child,
+.bs-docs-example > .well:last-child {
margin-bottom: 0;
}
diff --git a/docs/docs.html b/docs/docs.html
index 4b26296585..00af4ed0cf 100644
--- a/docs/docs.html
+++ b/docs/docs.html
@@ -4369,6 +4369,75 @@ For example, <section>
should be wrapped as inline.
+
+
+
+
While not always necessary, sometimes you need to put your DOM in a box. For those situations, try the panel component.
+
+
Basic panel
+
By default, all the .panel
does is apply some basic border and padding to contain some content.
+
+
+ Basic panel example
+
+
+{% highlight html linenos %}
+
+ Basic panel example
+
+{% endhighlight %}
+
+
Panel with heading
+
Easily add a heading to your panel with .panel-heading
. Use it on a <div>
or any heading element (e.g., <h3>
).
+
+
+
Panel heading
+ Panel content
+
+
+{% highlight html linenos %}
+
+
Panel heading
+ Panel content
+
+{% endhighlight %}
+
+
Contextual alternatives
+
Like other components, easily make a panel more meaningful to a particular context by adding any of the contextual state classes.
+
+
+
Panel heading
+ Panel content
+
+
+
Panel heading
+ Panel content
+
+
+
Panel heading
+ Panel content
+
+
+
Panel heading
+ Panel content
+
+
+{% highlight html linenos %}
+
...
+
...
+
...
+
...
+{% endhighlight %}
+
+
+
+
+
+
+
diff --git a/less/alerts.less b/less/alerts.less
index 7f627fadf7..20e0a8b5d0 100644
--- a/less/alerts.less
+++ b/less/alerts.less
@@ -58,15 +58,15 @@
}
.alert-danger,
.alert-error {
- background-color: @state-error-background;
- border-color: @state-error-border;
- color: @state-error-text;
+ background-color: @state-danger-background;
+ border-color: @state-danger-border;
+ color: @state-danger-text;
hr {
- border-top-color: darken(@state-error-border, 5%);
+ border-top-color: darken(@state-danger-border, 5%);
}
> a,
> p > a {
- color: darken(@state-error-text, 10%);
+ color: darken(@state-danger-text, 10%);
}
}
.alert-info {
diff --git a/less/bootstrap.less b/less/bootstrap.less
index 461f9eceac..c887fcef6f 100644
--- a/less/bootstrap.less
+++ b/less/bootstrap.less
@@ -30,6 +30,7 @@
@import "component-animations.less";
@import "glyphicons.less";
@import "dropdowns.less";
+@import "panels.less";
@import "wells.less";
@import "close.less";
diff --git a/less/forms.less b/less/forms.less
index ddbd196375..583d1e30f9 100644
--- a/less/forms.less
+++ b/less/forms.less
@@ -311,7 +311,7 @@ input[type="checkbox"] {
}
// Error
.has-error {
- .formFieldState(@state-error-text, @state-error-text, @state-error-background);
+ .formFieldState(@state-danger-text, @state-danger-text, @state-danger-background);
}
// Success
.has-success {
diff --git a/less/panels.less b/less/panels.less
new file mode 100644
index 0000000000..43e5199223
--- /dev/null
+++ b/less/panels.less
@@ -0,0 +1,60 @@
+//
+// Panels
+// --------------------------------------------------
+
+
+// Base class
+.panel {
+ padding: 15px;
+ margin-bottom: 20px;
+ background-color: @panel-bg;
+ border: 1px solid @panel-border;
+ border-radius: @panel-border-radius;
+ .box-shadow(0 1px 1px rgba(0,0,0,.05));
+}
+
+// Optional heading
+.panel-heading {
+ margin: -15px -15px 15px;
+ padding: 10px 15px;
+ .font-size(16);
+ font-weight: 500;
+ background-color: @panel-heading-bg;
+ border-bottom: 1px solid @panel-border;
+ border-top-left-radius: (@panel-border-radius - 1);
+ border-top-right-radius: (@panel-border-radius - 1);
+}
+
+// Contextual variations
+.panel-success {
+ border-color: @panel-success-border;
+ .panel-heading {
+ color: @panel-success-text;
+ background-color: @panel-success-heading-bg;
+ border-color: @panel-success-border;
+ }
+}
+.panel-warning {
+ border-color: @panel-warning-border;
+ .panel-heading {
+ color: @panel-warning-text;
+ background-color: @panel-warning-heading-bg;
+ border-color: @panel-warning-border;
+ }
+}
+.panel-danger {
+ border-color: @panel-danger-border;
+ .panel-heading {
+ color: @panel-danger-text;
+ background-color: @panel-danger-heading-bg;
+ border-color: @panel-danger-border;
+ }
+}
+.panel-info {
+ border-color: @panel-info-border;
+ .panel-heading {
+ color: @panel-info-text;
+ background-color: @panel-info-heading-bg;
+ border-color: @panel-info-border;
+ }
+}
diff --git a/less/tables.less b/less/tables.less
index f70d46396d..196eff709f 100644
--- a/less/tables.less
+++ b/less/tables.less
@@ -200,11 +200,11 @@ table th[class*="col-span-"] {
background-color: @state-success-background;
border-color: @state-success-border;
}
- > td.error,
- > th.error,
- &.error > td {
- background-color: @state-error-background;
- border-color: @state-error-border;
+ > td.danger,
+ > th.danger,
+ &.danger > td {
+ background-color: @state-danger-background;
+ border-color: @state-danger-border;
}
> td.warning,
> th.warning,
@@ -222,11 +222,11 @@ table th[class*="col-span-"] {
background-color: darken(@state-success-background, 5%);
border-color: darken(@state-success-border, 5%);
}
- > td.error:hover,
- > th.error:hover,
- &.error:hover > td {
- background-color: darken(@state-error-background, 5%);
- border-color: darken(@state-error-border, 5%);
+ > td.danger:hover,
+ > th.danger:hover,
+ &.danger:hover > td {
+ background-color: darken(@state-danger-background, 5%);
+ border-color: darken(@state-danger-border, 5%);
}
> td.warning:hover,
> th.warning:hover,
diff --git a/less/type.less b/less/type.less
index c2f7b07351..a8a1c2dec4 100644
--- a/less/type.less
+++ b/less/type.less
@@ -36,9 +36,9 @@ a.text-muted:focus { color: darken(@grayLight, 10%); }
a.text-warning:hover,
a.text-warning:focus { color: darken(@state-warning-text, 10%); }
-.text-error { color: @state-error-text; }
-a.text-error:hover,
-a.text-error:focus { color: darken(@state-error-text, 10%); }
+.text-danger { color: @state-danger-text; }
+a.text-danger:hover,
+a.text-danger:focus { color: darken(@state-danger-text, 10%); }
.text-success { color: @state-success-text; }
a.text-success:hover,
diff --git a/less/variables.less b/less/variables.less
index 45495a9e1a..c4b85d80e1 100644
--- a/less/variables.less
+++ b/less/variables.less
@@ -240,9 +240,9 @@
@state-warning-background: #fcf8e3;
@state-warning-border: darken(spin(@state-warning-background, -10), 3%);
-@state-error-text: #b94a48;
-@state-error-background: #f2dede;
-@state-error-border: darken(spin(@state-error-background, -10), 3%);
+@state-danger-text: #b94a48;
+@state-danger-background: #f2dede;
+@state-danger-border: darken(spin(@state-danger-background, -10), 3%);
@state-success-text: #468847;
@state-success-background: #dff0d8;
@@ -280,7 +280,6 @@
// Modals
// -------------------------
-
@modal-inner-padding: 20px;
@@ -294,6 +293,35 @@
@progress-bar-info-bg: @brand-info;
+// Panels
+// -------------------------
+@panel-bg: #fff;
+@panel-border: #ddd;
+@panel-border-radius: @border-radius-base;
+@panel-heading-bg: #f5f5f5;
+
+@panel-success-text: @state-success-text;
+@panel-success-border: @state-success-border;
+@panel-success-heading-bg: @state-success-background;
+
+@panel-warning-text: @state-warning-text;
+@panel-warning-border: @state-warning-border;
+@panel-warning-heading-bg: @state-warning-background;
+
+@panel-danger-text: @state-danger-text;
+@panel-danger-border: @state-danger-border;
+@panel-danger-heading-bg: @state-danger-background;
+
+@panel-info-text: @state-info-text;
+@panel-info-border: @state-info-border;
+@panel-info-heading-bg: @state-info-background;
+
+
+// Wells
+// -------------------------
+@well-background: #f5f5f5;
+
+
// Miscellaneous
// -------------------------
@@ -303,9 +331,6 @@
// Horizontal forms & lists
@component-offset-horizontal: 180px;
-// Wells
-@well-background: #f5f5f5;
-
// Grid system