diff --git a/dist/shoelace.css b/dist/shoelace.css
index fef54ea12..d53a5c96f 100644
--- a/dist/shoelace.css
+++ b/dist/shoelace.css
@@ -20,7 +20,7 @@
/*! Forms */fieldset{border:1px solid #ddd;border-radius:.25rem;padding:1rem 1.5rem;margin-bottom:1rem}fieldset legend{font-weight:700;padding:0 .25rem}label{display:inline-block;margin-bottom:.25rem}label+label{margin-left:1rem}input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{width:100%;font-family:inherit;font-size:1rem;font-weight:inherit;color:#111;border:1px solid #ddd;border-radius:.25rem;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(0,0,0,.05);background-color:#fff;height:2rem;line-height:2rem;vertical-align:middle;display:block;padding-left:.5rem;padding-right:.5rem;margin:0;-webkit-transition:border-color .1s,background-color .1s,color .1s;transition:border-color .1s,background-color .1s,color .1s;white-space:nowrap;-moz-appearance:none;-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{outline:none;border-color:#0074d9}select{position:relative;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='41' height='26' viewBox='0 0 41 26' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23000' d='M0 5.382l19.983 19.983L40.14 5.208 34.932 0 19.869 15.062 4.84.032z' fill-rule='evenodd'/%3E%3C/svg%3E");background-position:right .4rem center;background-repeat:no-repeat;background-size:.75rem;padding-top:0;padding-bottom:0;padding-right:1.5rem}textarea{height:auto;resize:vertical;line-height:1.5;white-space:normal}input[type=color]{padding:.5rem}input[type=color]::-webkit-color-swatch-wrapper{padding:0}input[type=color]::-webkit-color-swatch{border:none;border-radius:.25rem}input[type=checkbox],input[type=radio]{padding:0}input[disabled]{opacity:.5;cursor:not-allowed}input[readonly]{background-color:#f2f2f2}input[type=color].input-small,input[type=date].input-small,input[type=datetime-local].input-small,input[type=email].input-small,input[type=month].input-small,input[type=number].input-small,input[type=password].input-small,input[type=search].input-small,input[type=tel].input-small,input[type=text].input-small,input[type=time].input-small,input[type=url].input-small,input[type=week].input-small,select.input-small{font-size:.8rem;height:1.25rem;line-height:1.25rem}textarea.input-small{font-size:.8rem}input[type=color].input-big,input[type=date].input-big,input[type=datetime-local].input-big,input[type=email].input-big,input[type=month].input-big,input[type=number].input-big,input[type=password].input-big,input[type=search].input-big,input[type=tel].input-big,input[type=text].input-big,input[type=time].input-big,input[type=url].input-big,input[type=week].input-big,select.input-big{font-size:1.2rem;height:2.75rem;line-height:2.75rem}textarea.input-big{font-size:1.2rem}input[type=range]{-webkit-appearance:none;width:100%;margin:1rem 0}input[type=range]:focus{outline:none}input[type=range]::-webkit-slider-runnable-track{width:100%;height:.5rem;cursor:pointer;background:#f2f2f2;border-radius:.25rem;border:none;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(0,0,0,.05)}input[type=range]::-webkit-slider-thumb{border:none;width:1.5rem;height:1.5rem;border-radius:50%;background:#0074d9;cursor:pointer;-webkit-appearance:none;margin-top:-.5rem}input[type=range]:focus::-webkit-slider-runnable-track{background:#f2f2f2}input[type=range]::-moz-range-track{width:100%;height:.5rem;cursor:pointer;background:#f2f2f2;border-radius:.25rem;border:none;box-shadow:inset 0 1px 0 rgba(0,0,0,.05)}input[type=range]::-moz-range-thumb{border:none;height:1.5rem;width:1.5rem;border-radius:50%;background:#0074d9;cursor:pointer}input[type=range]::-ms-track{width:100%;height:.5rem;cursor:pointer;background:transparent;border-color:transparent;color:transparent}input[type=range]::-ms-fill-lower{background:#2f6ea5;border:none;border-radius:.25rem}input[type=range]::-ms-fill-upper{background:#f2f2f2;border:none;border-radius:.25rem}input[type=range]::-ms-thumb{border:none;height:.5rem;width:.5rem;border-radius:50%;background:#0074d9;cursor:pointer}input[type=range]:focus::-ms-fill-lower,input[type=range]:focus::-ms-fill-upper{background:#f2f2f2}progress{width:100%;vertical-align:middle}.input-group,.input-single{margin-bottom:1rem}.input-group{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.input-group>.button,.input-group>.dropdown .button,.input-group>.dropdown button,.input-group>button,.input-group>input{border-radius:0}.input-group>.button:first-child,.input-group>.dropdown:first-child .button,.input-group>.dropdown:first-child button,.input-group>button:first-child,.input-group>input:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.input-group>.button:last-child,.input-group>.dropdown:last-child .button,.input-group>.dropdown:last-child button,.input-group>button:last-child,.input-group>input:last-child{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.input-group>input+input{border-left-width:0}.input-group>input+input:focus{border-left-width:1px;margin-left:-1px}.input-group :focus{-webkit-transform:translateZ(0);transform:translateZ(0)}.input-addon{font-size:1rem;color:#aaa;height:2rem;line-height:2rem;border-top:1px solid #ddd;border-bottom:1px solid #ddd;background:#f8f8f8;padding:0 .5rem;white-space:nowrap}.input-addon-small{font-size:.8rem;height:1.25rem;line-height:1.25rem}.input-addon-big{font-size:1.2rem;height:2.75rem;line-height:2.75rem}.input-addon:first-child{border-left:1px solid #ddd;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.input-addon:last-child{border-right:1px solid #ddd;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.input-invalid label{color:#ff4136!important}.input-invalid,.input-invalid input,.input-invalid select{color:#ff4136!important;border-color:#ff4136!important}.input-valid label{color:#2ecc40!important}.input-valid,.input-valid input,.input-valid select{color:#2ecc40!important;border-color:#2ecc40!important}
-/*! Loaders */@-webkit-keyframes loader{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loader{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loader,.loader-bg:after{width:2rem;height:2rem;border-radius:50%;border:.2rem solid #f2f2f2;border-top-color:#0074d9;border-left-color:#0074d9;display:inline-block;-webkit-animation:loader .75s linear infinite;animation:loader .75s linear infinite;vertical-align:middle;margin:0 .5em}.loader-bg{position:relative!important}.loader-bg:after{content:"";position:absolute;top:calc(50% - 1rem);left:calc(50% - 1rem);margin:0}.loader-bg-small:after,.loader-small{width:1rem;height:1rem;border-width:.1rem}.loader-bg-big:after,.loader-big{width:4rem;height:4rem;border-width:.4rem}.loader-bg-small:after{top:calc(50% - .5rem);left:calc(50% - .5rem)}.loader-bg-big:after{top:calc(50% - 2rem);left:calc(50% - 2rem)}.loader-secondary,.loader-secondary.loader-bg:after{border-top-color:#aaa;border-left-color:#aaa}.loader-success,.loader-success.loader-bg:after{border-top-color:#2ecc40;border-left-color:#2ecc40}.loader-info,.loader-info.loader-bg:after{border-top-color:#39cccc;border-left-color:#39cccc}.loader-warning,.loader-warning.loader-bg:after{border-top-color:#ff851b;border-left-color:#ff851b}.loader-danger,.loader-danger.loader-bg:after{border-top-color:#ff4136;border-left-color:#ff4136}.loader-light,.loader-light.loader-bg:after{border-top-color:#fff;border-left-color:#fff;border-bottom-color:#111;border-right-color:#111}.loader-dark,.loader-dark.loader-bg:after{border-top-color:#111;border-left-color:#111;border-bottom-color:#fff;border-right-color:#fff}
+/*! Loaders */.loader{width:3rem;height:3rem;border-radius:50%;border:.25rem solid #cce7ff;border-top-color:#0074d9;border-left-color:#0074d9;display:inline-block;-webkit-animation:loader .75s linear infinite;animation:loader .75s linear infinite;margin:0 .5em;vertical-align:middle}.loader.loader-xs{width:1rem;height:1rem;border-width:.125rem}.loader.loader-sm{width:2rem;height:2rem;border-width:.16667rem}.loader.loader-lg{width:4rem;height:4rem;border-width:.375rem}.loader.loader-xl{width:5rem;height:5rem;border-width:.5rem}.loader.loader-secondary{border-color:#e6e6e6;border-top-color:#aaa;border-left-color:#aaa}.loader.loader-success{border-color:#d5f6d9;border-top-color:#2ecc40;border-left-color:#2ecc40}.loader.loader-info{border-color:#d6f5f5;border-top-color:#39cccc;border-left-color:#39cccc}.loader.loader-warning{border-color:#ffe4cc;border-top-color:#ff851b;border-left-color:#ff851b}.loader.loader-danger{border-color:#ffcfcc;border-top-color:#ff4136;border-left-color:#ff4136}.loader.loader-light{border-color:#e6e6e6;border-top-color:#fff;border-left-color:#fff}.loader.loader-dark{border-color:#e6e6e6;border-top-color:#111;border-left-color:#111}.loader-bg{position:relative}.loader-bg:after{content:"";position:absolute;top:calc(50% - 1.5rem);left:calc(50% - 1.5rem);width:3rem;height:3rem;border-radius:50%;border:.25rem solid #cce7ff;border-top-color:#0074d9;border-left-color:#0074d9;-webkit-animation:loader .75s linear infinite;animation:loader .75s linear infinite}.loader-bg.loader-bg-xs:after{top:calc(50% - .5rem);left:calc(50% - .5rem);width:1rem;height:1rem;border-width:.125rem}.loader-bg.loader-bg-sm:after{top:calc(50% - 1rem);left:calc(50% - 1rem);width:2rem;height:2rem;border-width:.16667rem}.loader-bg.loader-bg-lg:after{top:calc(50% - 2rem);left:calc(50% - 2rem);width:4rem;height:4rem;border-width:.375rem}.loader-bg.loader-bg-xl:after{top:calc(50% - 2.5rem);left:calc(50% - 2.5rem);width:5rem;height:5rem;border-width:.5rem}.loader-bg.loader-bg-secondary:after{border-color:#e6e6e6;border-top-color:#aaa;border-left-color:#aaa}.loader-bg.loader-bg-success:after{border-color:#d5f6d9;border-top-color:#2ecc40;border-left-color:#2ecc40}.loader-bg.loader-bg-info:after{border-color:#d6f5f5;border-top-color:#39cccc;border-left-color:#39cccc}.loader-bg.loader-bg-warning:after{border-color:#ffe4cc;border-top-color:#ff851b;border-left-color:#ff851b}.loader-bg.loader-bg-danger:after{border-color:#ffcfcc;border-top-color:#ff4136;border-left-color:#ff4136}.loader-bg.loader-bg-light:after{border-color:#e6e6e6;border-top-color:#fff;border-left-color:#fff}.loader-bg.loader-bg-dark:after{border-color:#e6e6e6;border-top-color:#111;border-left-color:#111}@-webkit-keyframes loader{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loader{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}
/*! Progress Bars */@-webkit-keyframes progress-indeterminate{0%{left:-50%}to{left:100%}}@keyframes progress-indeterminate{0%{left:-50%}to{left:100%}}.progress{position:relative;width:100%;height:2rem;line-height:2rem;font-size:1rem;background-color:#f2f2f2;border-radius:.25rem;display:block;overflow:hidden;margin-bottom:1rem;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.progress-bar{position:absolute;top:0;left:0;width:0;height:100%;text-align:center;color:#fff;background-color:#0074d9;-webkit-transition:width .2s;transition:width .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.progress-small{font-size:.8rem;height:1.25rem;line-height:1.25rem}.progress-big{font-size:1.2rem;height:2.75rem;line-height:2.75rem}.progress-indeterminate .progress-bar{width:50%!important;-webkit-animation:progress-indeterminate linear 1.5s infinite;animation:progress-indeterminate linear 1.5s infinite}.progress-secondary .progress-bar{background-color:#aaa}.progress-success .progress-bar{background-color:#2ecc40}.progress-info .progress-bar{background-color:#39cccc}.progress-warning .progress-bar{background-color:#ff851b}.progress-danger .progress-bar{background-color:#ff4136}.progress-light{background-color:#111}.progress-light .progress-bar{color:#111;background-color:#fff}.progress-dark .progress-bar{color:#fff;background-color:#111}
diff --git a/docs/loaders.html b/docs/loaders.html
index 407178497..534cb4765 100644
--- a/docs/loaders.html
+++ b/docs/loaders.html
@@ -48,27 +48,19 @@
Loaders
-
Create a pure CSS loader by applying the loader class to an empty <span> element. You can use the loader-small and loader-big modifiers to change the size.
-
<span class="loader loader-small"></span>
+Create a pure CSS loader by applying the loader class to an empty <span> element. You can use the loader-xs|sm|lg|xl modifiers to change the size.
+<span class="loader loader-xs"></span>
+<span class="loader loader-sm"></span>
<span class="loader"></span>
-<span class="loader loader-big"></span>
+<span class="loader loader-lg"></span>
+<span class="loader loader-xl"></span>
-
+
+
-
-
-
-Background Loaders
-You can simulate a background loader using loader-bg. This is achieved using position: relative on the container and the ::after pseudo-element. You can use the loader-bg-small and loader-bg-big modifiers to change the size.
-<div class="loader-bg loader-bg-small"></div>
-<div class="loader-bg"></div>
-<div class="loader-bg loader-bg-big"></div>
-
-
Variations
@@ -88,6 +80,41 @@
+Background Loaders
+You can simulate a background loader using loader-bg. This is achieved using position: relative on the container and the ::after pseudo-element. You can use the loader-bg-xs|sm|lg|xl modifiers to change the size.
+<div class="loader-bg loader-bg-xs"></div>
+<div class="loader-bg loader-bg-sm"></div>
+<div class="loader-bg"></div>
+<div class="loader-bg loader-bg-lg"></div>
+<div class="loader-bg loader-bg-xl"></div>
+
+
+
+Background Variations
+Use the loader-bg-* modifier to create variations.
+<div class="loader-bg loader-bg-secondary"></div>
+<div class="loader-bg loader-bg-success"></div>
+<div class="loader-bg loader-bg-info"></div>
+<div class="loader-bg loader-bg-warning"></div>
+<div class="loader-bg loader-bg-danger"></div>
+<div class="loader-bg loader-bg-light"></div>
+<div class="loader-bg loader-bg-dark"></div>
+
+
diff --git a/source/css/_docs.css b/source/css/_docs.css
index 63527656e..f966b2d49 100644
--- a/source/css/_docs.css
+++ b/source/css/_docs.css
@@ -178,12 +178,17 @@ a code {
}
/* Loader example */
+.loader-example {
+ margin-left: -.5rem;
+ margin-right: -.5rem;
+}
+
.loader-example div {
float: left;
width: 6rem;
height: 6rem;
border: dashed 1px #ddd;
- margin-right: .5rem;
+ margin: 0 .5rem 1rem .5rem;
}
/* Tabs example */
diff --git a/source/css/loaders.css b/source/css/loaders.css
index b23eb8c8f..301ae7461 100644
--- a/source/css/loaders.css
+++ b/source/css/loaders.css
@@ -1,116 +1,228 @@
/*! Loaders */
:root {
- --loader-bg-color: var(--component-bg-color);
- --loader-border-color: var(--state-primary);
- --loader-border-width: .2rem;
- --loader-border-width-small: calc(var(--loader-border-width) / 2);
- --loader-border-width-big: calc(var(--loader-border-width) * 2);
- --loader-size: 2rem;
- --loader-size-small: calc(var(--loader-size) / 2);
- --loader-size-big: calc(var(--loader-size) * 2);
+ --loader-thickness: .25rem;
+ --loader-thickness-xs: calc(var(--loader-thickness) / 2);
+ --loader-thickness-sm: calc(var(--loader-thickness) / 1.5);
+ --loader-thickness-lg: calc(var(--loader-thickness) * 1.5);
+ --loader-thickness-xl: calc(var(--loader-thickness) * 2);
+ --loader-size-xs: 1rem;
+ --loader-size-sm: 2rem;
+ --loader-size: 3rem;
+ --loader-size-lg: 4rem;
+ --loader-size-xl: 5rem;
--loader-speed: 750ms;
--loader-margin-x: .5em;
--loader-margin-y: 0;
+
+ /* Default */
+ --loader-color: var(--state-primary);
+ --loader-bg-color: color(var(--state-primary) lightness(90%));
+
+ /* Secondary */
+ --loader-color-secondary: var(--state-secondary);
+ --loader-bg-color-secondary: color(var(--state-secondary) lightness(90%));
+
+ /* Success */
+ --loader-color-success: var(--state-success);
+ --loader-bg-color-success: color(var(--state-success) lightness(90%));
+
+ /* Info */
+ --loader-color-info: var(--state-info);
+ --loader-bg-color-info: color(var(--state-info) lightness(90%));
+
+ /* Warning */
+ --loader-color-warning: var(--state-warning);
+ --loader-bg-color-warning: color(var(--state-warning) lightness(90%));
+
+ /* Danger */
+ --loader-color-danger: var(--state-danger);
+ --loader-bg-color-danger: color(var(--state-danger) lightness(90%));
+
+ /* Light */
+ --loader-color-light: var(--state-light);
+ --loader-bg-color-light: color(var(--state-light) lightness(90%));
+
+ /* Dark */
+ --loader-color-dark: var(--state-dark);
+ --loader-bg-color-dark: color(var(--state-dark) lightness(90%));
+}
+
+.loader {
+ width: var(--loader-size);
+ height: var(--loader-size);
+ border-radius: 50%;
+ border-style: solid;
+ border-width: var(--loader-thickness);
+ border-color: var(--loader-bg-color);
+ border-top-color: var(--loader-color);
+ border-left-color: var(--loader-color);
+ display: inline-block;
+ animation: loader var(--loader-speed) linear infinite;
+ margin: var(--loader-margin-y) var(--loader-margin-x);
+ vertical-align: middle;
+
+ &.loader-xs {
+ width: var(--loader-size-xs);
+ height: var(--loader-size-xs);
+ border-width: var(--loader-thickness-xs);
+ }
+
+ &.loader-sm {
+ width: var(--loader-size-sm);
+ height: var(--loader-size-sm);
+ border-width: var(--loader-thickness-sm);
+ }
+
+ &.loader-lg {
+ width: var(--loader-size-lg);
+ height: var(--loader-size-lg);
+ border-width: var(--loader-thickness-lg);
+ }
+
+ &.loader-xl {
+ width: var(--loader-size-xl);
+ height: var(--loader-size-xl);
+ border-width: var(--loader-thickness-xl);
+ }
+
+ &.loader-secondary {
+ border-color: var(--loader-bg-color-secondary);
+ border-top-color: var(--loader-color-secondary);
+ border-left-color: var(--loader-color-secondary);
+ }
+
+ &.loader-success {
+ border-color: var(--loader-bg-color-success);
+ border-top-color: var(--loader-color-success);
+ border-left-color: var(--loader-color-success);
+ }
+
+ &.loader-info {
+ border-color: var(--loader-bg-color-info);
+ border-top-color: var(--loader-color-info);
+ border-left-color: var(--loader-color-info);
+ }
+
+ &.loader-warning {
+ border-color: var(--loader-bg-color-warning);
+ border-top-color: var(--loader-color-warning);
+ border-left-color: var(--loader-color-warning);
+ }
+
+ &.loader-danger {
+ border-color: var(--loader-bg-color-danger);
+ border-top-color: var(--loader-color-danger);
+ border-left-color: var(--loader-color-danger);
+ }
+
+ &.loader-light {
+ border-color: var(--loader-bg-color-light);
+ border-top-color: var(--loader-color-light);
+ border-left-color: var(--loader-color-light);
+ }
+
+ &.loader-dark {
+ border-color: var(--loader-bg-color-dark);
+ border-top-color: var(--loader-color-dark);
+ border-left-color: var(--loader-color-dark);
+ }
+}
+
+.loader-bg {
+ position: relative;
+
+ &::after {
+ content: '';
+ position: absolute;
+ top: calc(50% - var(--loader-size) / 2);
+ left: calc(50% - var(--loader-size) / 2);
+ width: var(--loader-size);
+ height: var(--loader-size);
+ border-radius: 50%;
+ border-style: solid;
+ border-width: var(--loader-thickness);
+ border-color: var(--loader-bg-color);
+ border-top-color: var(--loader-color);
+ border-left-color: var(--loader-color);
+ animation: loader var(--loader-speed) linear infinite;
+ }
+
+ &.loader-bg-xs::after {
+ top: calc(50% - var(--loader-size-xs) / 2);
+ left: calc(50% - var(--loader-size-xs) / 2);
+ width: var(--loader-size-xs);
+ height: var(--loader-size-xs);
+ border-width: var(--loader-thickness-xs);
+ }
+
+ &.loader-bg-sm::after {
+ top: calc(50% - var(--loader-size-sm) / 2);
+ left: calc(50% - var(--loader-size-sm) / 2);
+ width: var(--loader-size-sm);
+ height: var(--loader-size-sm);
+ border-width: var(--loader-thickness-sm);
+ }
+
+ &.loader-bg-lg::after {
+ top: calc(50% - var(--loader-size-lg) / 2);
+ left: calc(50% - var(--loader-size-lg) / 2);
+ width: var(--loader-size-lg);
+ height: var(--loader-size-lg);
+ border-width: var(--loader-thickness-lg);
+ }
+
+ &.loader-bg-xl::after {
+ top: calc(50% - var(--loader-size-xl) / 2);
+ left: calc(50% - var(--loader-size-xl) / 2);
+ width: var(--loader-size-xl);
+ height: var(--loader-size-xl);
+ border-width: var(--loader-thickness-xl);
+ }
+
+ &.loader-bg-secondary::after {
+ border-color: var(--loader-bg-color-secondary);
+ border-top-color: var(--loader-color-secondary);
+ border-left-color: var(--loader-color-secondary);
+ }
+
+ &.loader-bg-success::after {
+ border-color: var(--loader-bg-color-success);
+ border-top-color: var(--loader-color-success);
+ border-left-color: var(--loader-color-success);
+ }
+
+ &.loader-bg-info::after {
+ border-color: var(--loader-bg-color-info);
+ border-top-color: var(--loader-color-info);
+ border-left-color: var(--loader-color-info);
+ }
+
+ &.loader-bg-warning::after {
+ border-color: var(--loader-bg-color-warning);
+ border-top-color: var(--loader-color-warning);
+ border-left-color: var(--loader-color-warning);
+ }
+
+ &.loader-bg-danger::after {
+ border-color: var(--loader-bg-color-danger);
+ border-top-color: var(--loader-color-danger);
+ border-left-color: var(--loader-color-danger);
+ }
+
+ &.loader-bg-light::after {
+ border-color: var(--loader-bg-color-light);
+ border-top-color: var(--loader-color-light);
+ border-left-color: var(--loader-color-light);
+ }
+
+ &.loader-bg-dark::after {
+ border-color: var(--loader-bg-color-dark);
+ border-top-color: var(--loader-color-dark);
+ border-left-color: var(--loader-color-dark);
+ }
}
@keyframes loader {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
-
-.loader,
-.loader-bg::after {
- width: var(--loader-size);
- height: var(--loader-size);
- border-radius: 50%;
- border: solid var(--loader-border-width) var(--loader-bg-color);
- border-top-color: var(--loader-border-color);
- border-left-color: var(--loader-border-color);
- display: inline-block;
- animation: loader var(--loader-speed) linear infinite;
- vertical-align: middle;
- margin: var(--loader-margin-y) var(--loader-margin-x);
-}
-
-.loader-bg {
- position: relative !important;
-}
-
-.loader-bg::after {
- content: '';
- position: absolute;
- top: calc(50% - var(--loader-size) / 2);
- left: calc(50% - var(--loader-size) / 2);
- margin: 0;
-}
-
-.loader-small,
-.loader-bg-small::after {
- width: var(--loader-size-small);
- height: var(--loader-size-small);
- border-width: var(--loader-border-width-small);
-}
-
-.loader-big,
-.loader-bg-big::after {
- width: var(--loader-size-big);
- height: var(--loader-size-big);
- border-width: var(--loader-border-width-big);
-}
-
-.loader-bg-small::after {
- top: calc(50% - var(--loader-size-small) / 2);
- left: calc(50% - var(--loader-size-small) / 2);
-}
-
-.loader-bg-big::after {
- top: calc(50% - var(--loader-size-big) / 2);
- left: calc(50% - var(--loader-size-big) / 2);
-}
-
-/* Variations */
-.loader-secondary,
-.loader-secondary.loader-bg::after {
- border-top-color: var(--state-secondary);
- border-left-color: var(--state-secondary);
-}
-
-.loader-success,
-.loader-success.loader-bg::after {
- border-top-color: var(--state-success);
- border-left-color: var(--state-success);
-}
-
-.loader-info,
-.loader-info.loader-bg::after {
- border-top-color: var(--state-info);
- border-left-color: var(--state-info);
-}
-
-.loader-warning,
-.loader-warning.loader-bg::after {
- border-top-color: var(--state-warning);
- border-left-color: var(--state-warning);
-}
-
-.loader-danger,
-.loader-danger.loader-bg::after {
- border-top-color: var(--state-danger);
- border-left-color: var(--state-danger);
-}
-
-.loader-light,
-.loader-light.loader-bg::after {
- border-top-color: var(--state-light);
- border-left-color: var(--state-light);
- border-bottom-color: var(--state-dark);
- border-right-color: var(--state-dark);
-}
-
-.loader-dark,
-.loader-dark.loader-bg::after {
- border-top-color: var(--state-dark);
- border-left-color: var(--state-dark);
- border-bottom-color: var(--state-light);
- border-right-color: var(--state-light);
-}
diff --git a/source/docs/loaders.md b/source/docs/loaders.md
index 4ab7250bc..cce30c8f2 100644
--- a/source/docs/loaders.md
+++ b/source/docs/loaders.md
@@ -6,33 +6,21 @@ description: These pure CSS loaders are easy to use and look great.
## Loaders
-Create a pure CSS loader by applying the `loader` class to an empty `` element. You can use the `loader-small` and `loader-big` modifiers to change the size.
+Create a pure CSS loader by applying the `loader` class to an empty `` element. You can use the `loader-xs|sm|lg|xl` modifiers to change the size.
```html
-
+
+
-
+
+
```
-
+
+
-
-
-
-### Background Loaders
-
-You can simulate a background loader using `loader-bg`. This is achieved using `position: relative` on the container and the `::after` pseudo-element. You can use the `loader-bg-small` and `loader-bg-big` modifiers to change the size.
-
-```html
-
-
-
-```
-
-
### Variations
@@ -56,3 +44,47 @@ Use the `loader-*` modifier to create variations.
+
+### Background Loaders
+
+You can simulate a background loader using `loader-bg`. This is achieved using `position: relative` on the container and the `::after` pseudo-element. You can use the `loader-bg-xs|sm|lg|xl` modifiers to change the size.
+
+```html
+
+
+
+
+
+```
+
+
+
+### Background Variations
+
+Use the `loader-bg-*` modifier to create variations.
+
+```html
+
+
+
+
+
+
+
+```
+
+