VolkerE has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/311356

Change subject: [WIP] Reorder Less elements & widgets rules alphabetically
......................................................................

[WIP] Reorder Less elements & widgets rules alphabetically

Reordering Less elements & widgets rules alphabetically to address
historically grown clutter

Bug: T145995
Change-Id: If6305c530088acc559bd0d65578e460210b8cd3f
---
M src/themes/mediawiki/elements.less
M src/themes/mediawiki/widgets.less
2 files changed, 1,022 insertions(+), 1,022 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/oojs/ui refs/changes/56/311356/1

diff --git a/src/themes/mediawiki/elements.less 
b/src/themes/mediawiki/elements.less
index 91804b1..8dd42b1 100644
--- a/src/themes/mediawiki/elements.less
+++ b/src/themes/mediawiki/elements.less
@@ -375,15 +375,15 @@
 
 .theme-oo-ui-clippableElement () {}
 
+.theme-oo-ui-draggableElement () {}
+
+.theme-oo-ui-draggableGroupElement () {}
+
 .theme-oo-ui-floatableElement () {}
 
 .theme-oo-ui-flaggedElement () {}
 
-.theme-oo-ui-draggableElement () {}
-
 .theme-oo-ui-groupElement () {}
-
-.theme-oo-ui-draggableGroupElement () {}
 
 .theme-oo-ui-iconElement () {}
 
@@ -397,14 +397,14 @@
 
 .theme-oo-ui-lookupElement () {}
 
-.theme-oo-ui-popupElement () {}
-
-.theme-oo-ui-tabIndexedElement () {}
-
-.theme-oo-ui-titledElement () {}
-
 .theme-oo-ui-pendingElement () {
        &-pending {
                .oo-ui-background-image( 
'@{oo-ui-default-image-path}/textures/pending.gif' );
        }
 }
+
+.theme-oo-ui-popupElement () {}
+
+.theme-oo-ui-tabIndexedElement () {}
+
+.theme-oo-ui-titledElement () {}
diff --git a/src/themes/mediawiki/widgets.less 
b/src/themes/mediawiki/widgets.less
index 80d3a92..9fe2b6f 100644
--- a/src/themes/mediawiki/widgets.less
+++ b/src/themes/mediawiki/widgets.less
@@ -2,26 +2,11 @@
 
 .theme-oo-ui-widget () {}
 
-.theme-oo-ui-outlineControlsWidget () {
-       height: 3em;
-       background-color: @background-color-default;
+.theme-oo-ui-actionWidget () {}
 
-       &-items,
-       &-movers {
-               height: 2em;
-               margin: 0.5em 0.5em 0.5em 0;
-               padding: 0;
-       }
-
-       > .oo-ui-iconElement-icon {
-               width: 1.5em;
-               height: 2em;
-               margin: 0.5em 0 0.5em 0.5em;
-               opacity: 0.2;
-       }
+.theme-oo-ui-buttonWidget () {
+       .oo-ui-inline-spacing( 0.5em );
 }
-
-.theme-oo-ui-toggleWidget () {}
 
 .theme-oo-ui-buttonGroupWidget () {
        display: inline-block;
@@ -61,46 +46,413 @@
        }
 }
 
-.theme-oo-ui-buttonWidget () {
-       .oo-ui-inline-spacing( 0.5em );
-}
+.theme-oo-ui-buttonInputWidget () {}
 
-.theme-oo-ui-actionWidget () {}
+.theme-oo-ui-buttonOptionWidget () {
+       padding: 0;
 
-.theme-oo-ui-popupButtonWidget () {
-       &.oo-ui-buttonElement-frameless > .oo-ui-popupWidget {
-               // Compensate for icon being inset
-               /* @noflip */
-               left: @size-icon / 2;
-       }
-
-       &.oo-ui-buttonElement-framed > .oo-ui-popupWidget {
-               // Compensate for icon being inset
-               // elements.less positions the icon with left: 1.5em - 
@size-icon / 2; , so we need:
-               // @size-icon / 2 + ( 1.5em - @size-icon / 2 ) which is 1.5em.
-               /* @noflip */
-               left: 1.5em;
+       &.oo-ui-optionWidget-selected,
+       &.oo-ui-optionWidget-pressed,
+       &.oo-ui-optionWidget-highlighted {
+               background-color: transparent;
        }
 }
 
-.theme-oo-ui-toggleButtonWidget () {
+.theme-oo-ui-buttonSelectWidget () {
+       border-radius: @border-radius-default;
        .oo-ui-inline-spacing( 0.5em );
+
+       &:focus {
+               outline: 0;
+       }
+
+       .oo-ui-buttonOptionWidget {
+               .oo-ui-buttonElement-button {
+                       border-radius: 0;
+                       margin-left: -1px;
+               }
+
+               &:first-child .oo-ui-buttonElement-button {
+                       border-bottom-left-radius: @border-radius-default;
+                       border-top-left-radius: @border-radius-default;
+                       margin-left: 0;
+               }
+
+               &:last-child .oo-ui-buttonElement-button {
+                       border-bottom-right-radius: @border-radius-default;
+                       border-top-right-radius: @border-radius-default;
+               }
+
+       }
+
+       &.oo-ui-widget-enabled {
+               &:focus {
+                       .oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected {
+                               .oo-ui-buttonElement-button {
+                                       border-color: 
@border-color-default-focus;
+                                       box-shadow: @box-shadow-focus-inset;
+                               }
+                       }
+               }
+       }
 }
 
-.theme-oo-ui-iconWidget () {
-       line-height: 2.5;
+.theme-oo-ui-capsuleItemWidget () {
+       width: auto;
+       max-width: 100%;
+       .oo-ui-box-sizing( border-box );
+       vertical-align: middle;
+       height: 1.7em;
+       line-height: 1.7;
+       background-color: #eee;
+       color: @color-default;
+       margin: 0.1em;
+       border: @border-default;
+       border-radius: @border-radius-default;
+       padding: 0 0.4em;
+
+       &:focus {
+               outline: 0;
+               border-color: @color-progressive;
+               box-shadow: @box-shadow-focus-default;
+       }
 
        &.oo-ui-widget-disabled {
-               opacity: @opacity-disabled;
+               background-color: @background-color-disabled;
+               color: @color-disabled;
+               border-color: @border-color-disabled;
+               text-shadow: @text-shadow-disabled;
+       }
+
+       // Clear button
+       & > .oo-ui-buttonElement {
+               display: none;
+       }
+
+       &.oo-ui-widget-enabled {
+               padding-right: @size-indicator + 0.6em;
+
+               > .oo-ui-buttonElement {
+                       display: block;
+                       position: absolute;
+                       top: 0;
+                       right: 0;
+                       bottom: 0;
+               }
+               & .oo-ui-buttonElement-button {
+                       display: block;
+                       width: @size-indicator + 0.6em; // Padding on each side 
of the indicator
+                       height: 100%; // Firefox height calculation fix
+
+                       & .oo-ui-indicator-clear {
+                               position: absolute;
+                               top: 0;
+                               right: 0.3em;
+                               bottom: 0;
+                               height: auto;
+                       }
+               }
        }
 }
 
-.theme-oo-ui-indicatorWidget () {
-       line-height: 2.5;
-       margin: @size-indicator / 2;
+.theme-oo-ui-capsuleMultiselectWidget () {
+       width: 100%;
+       max-width: @max-width-input;
+
+       &-handle {
+               min-height: 2.4em;
+               .oo-ui-inline-spacing( 0.5em );
+               padding: 0.15em 0.25em;
+               border: @border-default;
+               border-radius: @border-radius-default;
+               .oo-ui-box-sizing( border-box );
+
+               &:hover {
+                       border-color: @border-color-input-hover;
+               }
+
+               > .oo-ui-indicatorElement-indicator,
+               > .oo-ui-iconElement-icon {
+                       position: absolute;
+               }
+
+               > .oo-ui-capsuleMultiselectWidget-content > input {
+                       border: 0;
+                       line-height: 1.675;
+                       margin: 0 0 0 0.2em;
+                       padding: 0;
+                       font-size: inherit;
+                       font-family: inherit;
+                       background-color: transparent;
+                       color: @color-emphasized;
+                       vertical-align: middle;
+
+                       &:focus {
+                               // Chrome
+                               outline: 0;
+                       }
+               }
+       }
+
+       &.oo-ui-indicatorElement &-handle {
+               padding-right: @size-indicator + 2 * 0.775em;
+
+               > .oo-ui-indicatorElement-indicator {
+                       right: 0;
+                       top: 0;
+                       margin: 0.775em;
+               }
+       }
+
+       &.oo-ui-iconElement &-handle {
+               padding-left: @size-icon + 2 * 0.3em;
+
+               > .oo-ui-iconElement-icon {
+                       left: 0;
+                       top: 0;
+                       margin: 0.3em;
+               }
+       }
+
+       // CapsuleMultiselectWidget with child widget
+       .oo-ui-popupWidget {
+               width: 100%;
+               margin-top: -1px;
+       }
+
+       .oo-ui-popupWidget-popup {
+               min-width: 100%;
+               .oo-ui-box-sizing( border-box );
+               border-width: 0 1px;
+               border-radius: 0 0 2px 2px;
+       }
+
+       &.oo-ui-widget-enabled &-handle {
+               background-color: @background-color-default;
+               cursor: text;
+               .oo-ui-transition(
+                       border-color @transition-ease-out-sine-medium,
+                       box-shadow @transition-ease-out-sine-medium
+               );
+       }
+       &.oo-ui-widget-enabled:hover &-handle {
+               border-color: @border-color-default-hover;
+       }
+       &.oo-ui-widget-enabled.oo-ui-capsuleMultiselectWidget-open &-handle {
+               border-color: @border-color-default-focus;
+               outline: 0;
+               box-shadow: @box-shadow-focus-default;
+       }
+
+       &.oo-ui-widget-disabled &-handle {
+               color: @color-disabled;
+               text-shadow: @text-shadow-disabled;
+               border-color: @border-color-disabled;
+               background-color: @background-color-disabled;
+
+               > .oo-ui-iconElement-icon {
+                       opacity: @opacity-disabled;
+               }
+
+               > .oo-ui-indicatorElement-indicator {
+                       opacity: @opacity-disabled-indicator;
+               }
+       }
+}
+
+.theme-oo-ui-checkboxInputWidget () {
+       position: relative;
+       line-height: @size-input-binary;
+       // Prevent the fake span from jumping to the next line of text
+       white-space: nowrap;
+
+       * {
+               font: inherit;
+               vertical-align: middle;
+       }
+
+       // `<input type=checkbox>` element is visually replaced by `span` that 
follows
+       [type='checkbox'] {
+               position: relative;
+               // Needed for Firefox mobile (See bug 71750 to workaround 
default Firefox stylesheet)
+               max-width: none;
+               // Ensure the invisible input takes up the required width
+               width: @size-input-binary;
+               height: @size-input-binary;
+               // Having margin would offset the input from where the span is 
absolutely positioned,
+               // making only the overlap region receive events
+               margin: 0;
+               // Use opacity so that VoiceOver can still identify it
+               opacity: 0;
+               // Render "on top of" the span, so that it's still clickable
+               z-index: 1;
+
+               & + span {
+                       background-color: @background-color-default;
+                       background-origin: border-box;
+                       background-position: center center;
+                       background-repeat: no-repeat;
+                       background-size: 0 0;
+                       .oo-ui-box-sizing( border-box );
+                       position: absolute;
+                       left: 0;
+                       width: @size-input-binary;
+                       height: @size-input-binary;
+                       border: @border-input-binary;
+                       border-radius: @border-radius-default;
+               }
+
+               &:checked {
+                       & + span {
+                               .oo-ui-background-image-svg( 
'@{oo-ui-default-image-path}/icons/check-invert' );
+                               .oo-ui-background-image-safari( 
'@{oo-ui-default-image-path}/icons/check-invert' );
+                               background-size: 90% 90%;
+                       }
+               }
+
+               &:disabled {
+                       & + span {
+                               background-color: 
@background-color-disabled-filled;
+                               border-color: @border-color-disabled;
+                       }
+                       &:hover + span {
+                               background-color: 
@background-color-disabled-filled;
+                               border-color: @border-color-disabled;
+                       }
+               }
+       }
+
+       &.oo-ui-widget-enabled [type='checkbox'] {
+               cursor: pointer;
+
+               & + span {
+                       cursor: pointer;
+                       .oo-ui-transition(
+                               background-color @transition-ease-quick,
+                               background-size @transition-ease-quick,
+                               border-color @transition-ease-quick,
+                               box-shadow @transition-ease-quick
+                       );
+               }
+
+               &:hover + span,
+               &:focus:hover + span {
+                       border-color: @color-progressive;
+               }
+
+               &:active + span {
+                       background-color: @color-progressive-active;
+                       border-color: @border-color-input-binary-active;
+               }
+
+               &:focus + span {
+                       border-color: @color-progressive;
+                       box-shadow: @box-shadow-focus-default;
+               }
+
+               &:checked {
+                       & + span {
+                               background-color: @color-progressive-active;
+                               border-color: @border-color-input-binary-active;
+                       }
+
+                       &:hover + span,
+                       &:focus:hover + span {
+                               background-color: 
@color-progressive-active-hover;
+                               border-color: @color-progressive-active-hover;
+                       }
+
+                       &:active + span,
+                       &:active:hover + span {
+                               background-color: @color-progressive-active;
+                               border-color: @border-color-input-binary-active;
+                       }
+
+                       &:focus + span {
+                               background-color: @color-progressive-active;
+                               border-color: @color-progressive-active;
+                               box-shadow: @box-shadow-focus-inset;
+                       }
+               }
+       }
+}
+
+.theme-oo-ui-checkboxMultioptionWidget () {
+       padding: 0.25em 0;
+
+       &.oo-ui-labelElement .oo-ui-labelElement-label {
+               padding: @padding-input-binary-label;
+       }
+
+       .oo-ui-checkboxInputWidget {
+               margin-right: 0;
+       }
+}
+
+.theme-oo-ui-checkboxMultiselectWidget () {}
+
+.theme-oo-ui-checkboxMultiselectInputWidget () {
+       .oo-ui-fieldLayout {
+               margin-bottom: 0;
+
+               .oo-ui-fieldLayout-body {
+                       padding: 0.25em 0;
+
+                       .oo-ui-labelElement-label {
+                               line-height: 1.5;
+                       }
+               }
+       }
+}
+
+.theme-oo-ui-comboBoxInputWidget () {
+       // inherits from `inputWidget` & `textInputWidget`
+
+       input,
+       textarea {
+               height: 2.35em;
+       }
+
+       &.oo-ui-widget-enabled:hover {
+               input,
+               textarea {
+                       border-color: @border-color-default-hover;
+
+                       &:focus {
+                               border-color: @border-color-default-focus;
+                       }
+               }
+       }
 
        &.oo-ui-widget-disabled {
-               opacity: @opacity-disabled;
+               .oo-ui-indicatorElement-indicator {
+                       opacity: @opacity-disabled-indicator;
+               }
+       }
+}
+
+.theme-oo-ui-decoratedOptionWidget () {
+       padding: 0.5em 2em 0.5em 3em;
+
+       &.oo-ui-iconElement .oo-ui-iconElement-icon,
+       &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+               top: 0;
+               height: 100%;
+       }
+
+       &.oo-ui-iconElement .oo-ui-iconElement-icon {
+               left: 0.5em;
+       }
+
+       &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+               right: 0.5em;
+       }
+
+       &.oo-ui-widget-disabled {
+               .oo-ui-iconElement-icon,
+               .oo-ui-indicatorElement-indicator {
+                       opacity: @opacity-disabled;
+               }
        }
 }
 
@@ -204,6 +556,591 @@
                margin-right: 2em;
        }
 }
+
+.theme-oo-ui-dropdownInputWidget () {
+       width: 100%;
+       max-width: @max-width-input;
+
+       select {
+               background-color: @background-color-default;
+               height: 2.275em;
+               font-size: inherit;
+               font-family: inherit;
+               .oo-ui-box-sizing( border-box );
+               border: @border-default;
+               border-radius: @border-radius-default;
+               padding-left: 1em;
+               vertical-align: middle;
+       }
+
+       option {
+               font-size: inherit;
+               font-family: inherit;
+               height: 1.5em;
+               padding: 0.5em 1em;
+       }
+
+       &.oo-ui-widget-enabled {
+               select:hover,
+               select:focus {
+                       border-color: @border-color-dialog;
+                       outline: 0;
+               }
+       }
+
+       &.oo-ui-widget-disabled {
+               select {
+                       color: @color-disabled;
+                       border-color: @border-color-disabled;
+                       background-color: @background-color-disabled;
+               }
+       }
+}
+
+.theme-oo-ui-floatingMenuSelectWidget () {}
+
+.theme-oo-ui-iconWidget () {
+       line-height: 2.5;
+
+       &.oo-ui-widget-disabled {
+               opacity: @opacity-disabled;
+       }
+}
+
+.theme-oo-ui-indicatorWidget () {
+       line-height: 2.5;
+       margin: @size-indicator / 2;
+
+       &.oo-ui-widget-disabled {
+               opacity: @opacity-disabled;
+       }
+}
+
+.theme-oo-ui-inputWidget () {
+       .oo-ui-inline-spacing( 0.5em );
+}
+
+.theme-oo-ui-labelWidget () {}
+
+.theme-oo-ui-menuOptionWidget () {
+       padding: 0.5em 1em;
+       .oo-ui-transition(
+               background-color @transition-ease-quick,
+               color @transition-ease-quick
+       );
+
+       &.oo-ui-optionWidget {
+               &-highlighted {
+                       background-color: @background-color-default-hover;
+                       color: @color-emphasized;
+               }
+               &-selected {
+                       background-color: @background-color-progressive;
+                       color: @color-progressive;
+
+                       .oo-ui-iconElement-icon {
+                               display: none;
+                       }
+               }
+               &-selected&-highlighted,
+               &-pressed&-highlighted {
+                       background-color: @background-color-progressive-hover;
+                       color: @color-progressive;
+               }
+       }
+}
+
+.theme-oo-ui-menuSectionOptionWidget () {
+       padding: 0.33em 0.75em;
+       color: #888;
+}
+
+.theme-oo-ui-menuSelectWidget () {
+       background-color: @background-color-default;
+       margin-top: -1px;
+       border: @border-menu;
+       border-radius: 0 0 @border-radius-default @border-radius-default;
+       box-shadow: @box-shadow-menu;
+}
+
+.theme-oo-ui-multioptionWidget () {
+       .oo-ui-labelElement-label {
+               line-height: 1.5;
+       }
+
+       &.oo-ui-widget-disabled {
+               color: @color-disabled;
+       }
+}
+
+.theme-oo-ui-multiselectWidget () {}
+
+.theme-oo-ui-numberInputWidget () {
+       max-width: @max-width-input;
+
+       &-buttoned {
+               .oo-ui-buttonWidget {
+                       width: 2.5em;
+               }
+
+               .oo-ui-buttonElement-button {
+                       display: block;
+                       padding-left: 0;
+                       padding-right: 0;
+               }
+
+               .oo-ui-textInputWidget input {
+                       border-radius: 0;
+               }
+       }
+
+       &-minusButton.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
+               border-top-right-radius: 0;
+               border-bottom-right-radius: 0;
+               border-right-width: 0;
+       }
+
+       &-plusButton.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
+               border-top-left-radius: 0;
+               border-bottom-left-radius: 0;
+               border-left-width: 0;
+       }
+}
+
+.theme-oo-ui-optionWidget () {
+       border: 0;
+       padding: 0.25em 0.5em;
+
+       .oo-ui-labelElement-label {
+               line-height: 1.5;
+       }
+
+       // Don't add `highlighted` or `selected` modifications here
+       // as it inherits to various visually opposite widgets.
+
+       &-selected .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
+               opacity: @opacity-icon-default-selected;
+       }
+
+       &.oo-ui-widget-disabled {
+               color: @color-disabled;
+       }
+}
+
+.theme-oo-ui-outlineControlsWidget () {
+       height: 3em;
+       background-color: @background-color-default;
+
+       &-items,
+       &-movers {
+               height: 2em;
+               margin: 0.5em 0.5em 0.5em 0;
+               padding: 0;
+       }
+
+       > .oo-ui-iconElement-icon {
+               width: 1.5em;
+               height: 2em;
+               margin: 0.5em 0 0.5em 0.5em;
+               opacity: 0.2;
+       }
+}
+
+.theme-oo-ui-outlineOptionWidget () {
+       font-size: 1.1em;
+       padding: 0.75em;
+       .oo-ui-transition(
+               background-color @transition-ease-quick,
+               color @transition-ease-quick
+       );
+
+       &.oo-ui-optionWidget-highlighted {
+               background-color: @background-color-default-hover;
+               color: @color-emphasized;
+       }
+
+       &.oo-ui-optionWidget-selected {
+               background-color: @background-color-progressive;
+               color: @color-progressive;
+       }
+
+       &.oo-ui-optionWidget-pressed {
+               background-color: @background-color-progressive-hover;
+               color: @color-progressive;
+       }
+
+       .oo-ui-iconElement-icon {
+               // Undoes the parent change, because the theme's icons expect 
to be
+               // 24px, and don't scale incredibly well.
+               font-size: 90.90909%;
+       }
+
+       &.oo-ui-indicatorElement .oo-ui-labelElement-label {
+               padding-right: 1.5em;
+       }
+
+       &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+               opacity: 0.5;
+       }
+
+       &-level-0 {
+               padding-left: 3.5em;
+
+               .oo-ui-iconElement-icon {
+                       left: 1em;
+               }
+       }
+       &-level-1 {
+               padding-left: 5em;
+
+               .oo-ui-iconElement-icon {
+                       left: 2.5em;
+               }
+       }
+
+       &-level-2 {
+               padding-left: 6.5em;
+
+               .oo-ui-iconElement-icon {
+                       left: 4em;
+               }
+       }
+
+       &.oo-ui-flaggedElement-important {
+               font-weight: bold;
+       }
+
+       &.oo-ui-flaggedElement-empty {
+               .oo-ui-iconElement-icon {
+                       opacity: 0.5;
+               }
+               .oo-ui-labelElement-label {
+                       color: #777;
+               }
+       }
+}
+
+.theme-oo-ui-outlineSelectWidget () {}
+
+.theme-oo-ui-popupWidget () {
+       &-popup {
+               background-color: @background-color-default;
+               border: @border-menu;
+               border-radius: @border-radius-default;
+               box-shadow: @box-shadow-menu;
+       }
+
+       @anchor-size: 9px;
+
+       &-anchored {
+               .oo-ui-popupWidget-popup {
+                       margin-top: @anchor-size;
+               }
+
+               .oo-ui-popupWidget-anchor:before,
+               .oo-ui-popupWidget-anchor:after {
+                       content: '';
+                       position: absolute;
+                       width: 0;
+                       height: 0;
+                       border-style: solid;
+                       border-color: transparent;
+                       border-top: 0;
+               }
+
+               .oo-ui-popupWidget-anchor:before {
+                       bottom: -@anchor-size - 1px;
+                       left: -@anchor-size;
+                       border-bottom-color: #888;
+                       border-width: @anchor-size + 1px;
+               }
+
+               .oo-ui-popupWidget-anchor:after {
+                       bottom: -@anchor-size - 1px;
+                       left: -@anchor-size + 1px;
+                       border-bottom-color: @border-color-disabled-filled;
+                       border-width: @anchor-size;
+               }
+       }
+
+       &-transitioning .oo-ui-popupWidget-popup {
+               .oo-ui-transition(
+                       width @transition-ease-quick,
+                       height @transition-ease-quick,
+                       left @transition-ease-quick
+               );
+       }
+
+       &-head {
+               height: 2.5em;
+
+               > .oo-ui-buttonWidget {
+                       margin: 0.25em;
+               }
+
+               > .oo-ui-labelElement-label {
+                       margin: 0.75em 1em;
+               }
+       }
+
+       &-body-padded {
+               padding: 0 1em;
+       }
+}
+
+.theme-oo-ui-popupButtonWidget () {
+       &.oo-ui-buttonElement-frameless > .oo-ui-popupWidget {
+               // Compensate for icon being inset
+               /* @noflip */
+               left: @size-icon / 2;
+       }
+
+       &.oo-ui-buttonElement-framed > .oo-ui-popupWidget {
+               // Compensate for icon being inset
+               // elements.less positions the icon with left: 1.5em - 
@size-icon / 2; , so we need:
+               // @size-icon / 2 + ( 1.5em - @size-icon / 2 ) which is 1.5em.
+               /* @noflip */
+               left: 1.5em;
+       }
+}
+
+.theme-oo-ui-progressBarWidget () {
+       max-width: @max-width-default;
+       background-color: @background-color-default;
+       border: @border-default;
+       border-radius: @border-radius-default;
+       overflow: hidden;
+
+       &-bar {
+               background-color: #ddd;
+               height: 1em;
+               .oo-ui-transition(
+                       width 200ms,
+                       margin-left 200ms
+               );
+       }
+       &-indeterminate {
+               .oo-ui-progressBarWidget-bar {
+                       .oo-ui-animation( oo-ui-progressBarWidget-slide 2s 
infinite linear );
+                       width: 40%;
+                       margin-left: -10%;
+                       border-left-width: @border-width-default;
+               }
+       }
+       &.oo-ui-widget-disabled {
+               opacity: 0.6;
+       }
+
+       .oo-ui-progressBarWidget-slide-frames () {
+               from {
+                       margin-left: -40%;
+               }
+               to {
+                       margin-left: 100%;
+               }
+       }
+       @-webkit-keyframes oo-ui-progressBarWidget-slide {
+               .oo-ui-progressBarWidget-slide-frames;
+       }
+       @-moz-keyframes oo-ui-progressBarWidget-slide {
+               .oo-ui-progressBarWidget-slide-frames;
+       }
+       @keyframes oo-ui-progressBarWidget-slide {
+               .oo-ui-progressBarWidget-slide-frames;
+       }
+}
+
+.theme-oo-ui-radioInputWidget () {
+       position: relative;
+       line-height: @size-input-binary;
+       // Prevent the fake span from jumping to the next line of text
+       white-space: nowrap;
+
+       * {
+               font: inherit;
+               vertical-align: middle;
+       }
+
+       // `<input type=radio>` element is visually replaced by `span` that 
follows
+       [type='radio'] {
+               position: relative;
+               // Needed for Firefox mobile (See bug 71750 to workaround 
default Firefox stylesheet)
+               max-width: none;
+               // Ensure the invisible input takes up the required width
+               width: @size-input-binary;
+               height: @size-input-binary;
+               // Having margin would offset the input from where the span is 
absolutely positioned,
+               // making only the overlap region receive events
+               margin: 0;
+               // Use opacity so that VoiceOver can still identify it
+               opacity: 0;
+               // Render "on top of" the span, so that it's still clickable
+               z-index: 1;
+
+               & + span {
+                       background-color: @background-color-default;
+                       position: absolute;
+                       left: 0;
+                       .oo-ui-box-sizing( border-box );
+                       width: @size-input-binary;
+                       height: @size-input-binary;
+                       border: @border-input-binary;
+                       border-radius: 100%;
+
+                       // Needed for `:focus` state's inner white circle
+                       &:before {
+                               content: ' ';
+                               position: absolute;
+                               top: -4px; // `px` unit due to pixel rounding 
error when using `@size-input-binary / 4`
+                               left: -4px;
+                               right: -4px;
+                               bottom: -4px;
+                               border: @border-width-default solid transparent;
+                               border-radius: 100%;
+                       }
+               }
+
+               &:checked {
+                       & + span {
+                               border-width: @size-input-binary / 4;
+                       }
+
+                       &:hover + span,
+                       &:focus:hover + span {
+                               border-width: @size-input-binary / 4;
+                       }
+               }
+
+               &:disabled {
+                       & + span {
+                               background-color: 
@background-color-disabled-filled;
+                               border-color: @border-color-disabled;
+                       }
+
+                       &:checked + span {
+                               background-color: @background-color-default;
+                       }
+               }
+       }
+
+       &.oo-ui-widget-enabled [type='radio'] {
+               cursor: pointer;
+
+               & + span {
+                       cursor: pointer;
+                       .oo-ui-transition(
+                               background-color @transition-ease-quick,
+                               border-color @transition-ease-quick,
+                               border-width @transition-ease-quick
+                       );
+               }
+
+               &:hover + span {
+                       border-color: @color-progressive;
+               }
+
+               &:active + span {
+                       background-color: @color-progressive-active;
+                       border-color: @color-progressive-active;
+               }
+
+               &:checked {
+                       & + span {
+                               border-color: @color-progressive-active;
+                       }
+
+                       &:hover + span {
+                               border-color: @color-progressive;
+                       }
+
+                       &:hover:focus + span {
+                               border-color: @color-progressive;
+                               box-shadow: inset 0 0 0 1px @color-progressive;
+                       }
+
+                       &:active + span,
+                       &:active:focus + span {
+                               border-color: @color-progressive-active;
+                               box-shadow: inset 0 0 0 1px 
@color-progressive-active;
+                       }
+
+                       &:focus + span {
+                               box-shadow: @box-shadow-focus-default;
+
+                               &:before {
+                                       border-color: @background-color-default;
+                                       top: -3px;
+                                       right: -3px;
+                                       bottom: -3px;
+                                       left: -3px;
+                               }
+                       }
+               }
+       }
+}
+
+.theme-oo-ui-radioOptionWidget () {
+       padding: 0.25em 0;
+       background-color: transparent;
+
+       &.oo-ui-optionWidget-selected,
+       &.oo-ui-optionWidget-pressed,
+       &.oo-ui-optionWidget-highlighted {
+               background-color: transparent;
+       }
+
+       &.oo-ui-labelElement .oo-ui-labelElement-label {
+               padding: @padding-input-binary-label;
+       }
+
+       .oo-ui-radioInputWidget {
+               margin-right: 0;
+       }
+}
+
+.theme-oo-ui-radioSelectWidget () {
+       &:focus {
+               outline: 0;
+
+               [type='radio']:checked + span:before {
+                       border-color: @background-color-default;
+               }
+       }
+}
+
+.theme-oo-ui-radioSelectInputWidget () {
+       .oo-ui-fieldLayout {
+               margin-bottom: 0;
+
+               .oo-ui-fieldLayout-body {
+                       padding: 0.25em 0;
+
+                       .oo-ui-labelElement-label {
+                               line-height: 1.5;
+                       }
+               }
+       }
+}
+
+.theme-oo-ui-searchWidget () {
+       &-query {
+               height: 4em;
+               padding: 0 1em;
+               border-bottom: @border-default;
+
+               .oo-ui-textInputWidget {
+                       margin: 0.75em 0;
+               }
+       }
+
+       &-results {
+               top: 4em;
+               padding: 1em;
+               line-height: 0;
+       }
+}
+
+.theme-oo-ui-selectWidget () {}
 
 .theme-oo-ui-selectFileWidget () {
        width: 100%;
@@ -353,324 +1290,44 @@
        }
 }
 
-.theme-oo-ui-inputWidget () {
-       .oo-ui-inline-spacing( 0.5em );
-}
-
-.theme-oo-ui-buttonInputWidget () {}
-
-.theme-oo-ui-checkboxInputWidget () {
-       position: relative;
-       line-height: @size-input-binary;
-       // Prevent the fake span from jumping to the next line of text
-       white-space: nowrap;
-
-       * {
-               font: inherit;
-               vertical-align: middle;
-       }
-
-       // `<input type=checkbox>` element is visually replaced by `span` that 
follows
-       [type='checkbox'] {
-               position: relative;
-               // Needed for Firefox mobile (See bug 71750 to workaround 
default Firefox stylesheet)
-               max-width: none;
-               // Ensure the invisible input takes up the required width
-               width: @size-input-binary;
-               height: @size-input-binary;
-               // Having margin would offset the input from where the span is 
absolutely positioned,
-               // making only the overlap region receive events
-               margin: 0;
-               // Use opacity so that VoiceOver can still identify it
-               opacity: 0;
-               // Render "on top of" the span, so that it's still clickable
-               z-index: 1;
-
-               & + span {
-                       background-color: @background-color-default;
-                       background-origin: border-box;
-                       background-position: center center;
-                       background-repeat: no-repeat;
-                       background-size: 0 0;
-                       .oo-ui-box-sizing( border-box );
-                       position: absolute;
-                       left: 0;
-                       width: @size-input-binary;
-                       height: @size-input-binary;
-                       border: @border-input-binary;
-                       border-radius: @border-radius-default;
-               }
-
-               &:checked {
-                       & + span {
-                               .oo-ui-background-image-svg( 
'@{oo-ui-default-image-path}/icons/check-invert' );
-                               .oo-ui-background-image-safari( 
'@{oo-ui-default-image-path}/icons/check-invert' );
-                               background-size: 90% 90%;
-                       }
-               }
-
-               &:disabled {
-                       & + span {
-                               background-color: 
@background-color-disabled-filled;
-                               border-color: @border-color-disabled;
-                       }
-                       &:hover + span {
-                               background-color: 
@background-color-disabled-filled;
-                               border-color: @border-color-disabled;
-                       }
-               }
-       }
-
-       &.oo-ui-widget-enabled [type='checkbox'] {
-               cursor: pointer;
-
-               & + span {
-                       cursor: pointer;
-                       .oo-ui-transition(
-                               background-color @transition-ease-quick,
-                               background-size @transition-ease-quick,
-                               border-color @transition-ease-quick,
-                               box-shadow @transition-ease-quick
-                       );
-               }
-
-               &:hover + span,
-               &:focus:hover + span {
-                       border-color: @color-progressive;
-               }
-
-               &:active + span {
-                       background-color: @color-progressive-active;
-                       border-color: @border-color-input-binary-active;
-               }
-
-               &:focus + span {
-                       border-color: @color-progressive;
-                       box-shadow: @box-shadow-focus-default;
-               }
-
-               &:checked {
-                       & + span {
-                               background-color: @color-progressive-active;
-                               border-color: @border-color-input-binary-active;
-                       }
-
-                       &:hover + span,
-                       &:focus:hover + span {
-                               background-color: 
@color-progressive-active-hover;
-                               border-color: @color-progressive-active-hover;
-                       }
-
-                       &:active + span,
-                       &:active:hover + span {
-                               background-color: @color-progressive-active;
-                               border-color: @border-color-input-binary-active;
-                       }
-
-                       &:focus + span {
-                               background-color: @color-progressive-active;
-                               border-color: @color-progressive-active;
-                               box-shadow: @box-shadow-focus-inset;
-                       }
-               }
-       }
-}
-
-.theme-oo-ui-checkboxMultiselectInputWidget () {
-       .oo-ui-fieldLayout {
-               margin-bottom: 0;
-
-               .oo-ui-fieldLayout-body {
-                       padding: 0.25em 0;
-
-                       .oo-ui-labelElement-label {
-                               line-height: 1.5;
-                       }
-               }
-       }
-}
-
-.theme-oo-ui-dropdownInputWidget () {
-       width: 100%;
-       max-width: @max-width-input;
-
-       select {
-               background-color: @background-color-default;
-               height: 2.275em;
-               font-size: inherit;
-               font-family: inherit;
-               .oo-ui-box-sizing( border-box );
-               border: @border-default;
-               border-radius: @border-radius-default;
-               padding-left: 1em;
-               vertical-align: middle;
-       }
-
-       option {
-               font-size: inherit;
-               font-family: inherit;
-               height: 1.5em;
-               padding: 0.5em 1em;
-       }
+.theme-oo-ui-tabOptionWidget () {
+       padding: 0.35em 1em;
+       margin: 0.5em 0 0 0.75em;
+       border: 1px solid transparent;
+       border-bottom: 0;
+       border-top-left-radius: @border-radius-default;
+       border-top-right-radius: @border-radius-default;
+       color: @color-default;
+       font-weight: bold;
 
        &.oo-ui-widget-enabled {
-               select:hover,
-               select:focus {
-                       border-color: @border-color-dialog;
-                       outline: 0;
+               &:hover {
+                       background-color: rgba( 255, 255, 255, 0.3 );
+               }
+
+               &:active {
+                       background-color: rgba( 255, 255, 255, 0.8 );
                }
        }
 
-       &.oo-ui-widget-disabled {
-               select {
-                       color: @color-disabled;
-                       border-color: @border-color-disabled;
-                       background-color: @background-color-disabled;
-               }
+       &.oo-ui-indicatorElement .oo-ui-labelElement-label {
+               padding-right: 1.5em;
+       }
+
+       &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+               opacity: 0.5;
+       }
+
+       .oo-ui-selectWidget-pressed &.oo-ui-optionWidget-selected,
+       .oo-ui-selectWidget-depressed &.oo-ui-optionWidget-selected,
+       &.oo-ui-optionWidget-selected:hover {
+               background-color: @background-color-default;
+               color: #333;
        }
 }
 
-.theme-oo-ui-radioInputWidget () {
-       position: relative;
-       line-height: @size-input-binary;
-       // Prevent the fake span from jumping to the next line of text
-       white-space: nowrap;
-
-       * {
-               font: inherit;
-               vertical-align: middle;
-       }
-
-       // `<input type=radio>` element is visually replaced by `span` that 
follows
-       [type='radio'] {
-               position: relative;
-               // Needed for Firefox mobile (See bug 71750 to workaround 
default Firefox stylesheet)
-               max-width: none;
-               // Ensure the invisible input takes up the required width
-               width: @size-input-binary;
-               height: @size-input-binary;
-               // Having margin would offset the input from where the span is 
absolutely positioned,
-               // making only the overlap region receive events
-               margin: 0;
-               // Use opacity so that VoiceOver can still identify it
-               opacity: 0;
-               // Render "on top of" the span, so that it's still clickable
-               z-index: 1;
-
-               & + span {
-                       background-color: @background-color-default;
-                       position: absolute;
-                       left: 0;
-                       .oo-ui-box-sizing( border-box );
-                       width: @size-input-binary;
-                       height: @size-input-binary;
-                       border: @border-input-binary;
-                       border-radius: 100%;
-
-                       // Needed for `:focus` state's inner white circle
-                       &:before {
-                               content: ' ';
-                               position: absolute;
-                               top: -4px; // `px` unit due to pixel rounding 
error when using `@size-input-binary / 4`
-                               left: -4px;
-                               right: -4px;
-                               bottom: -4px;
-                               border: @border-width-default solid transparent;
-                               border-radius: 100%;
-                       }
-               }
-
-               &:checked {
-                       & + span {
-                               border-width: @size-input-binary / 4;
-                       }
-
-                       &:hover + span,
-                       &:focus:hover + span {
-                               border-width: @size-input-binary / 4;
-                       }
-               }
-
-               &:disabled {
-                       & + span {
-                               background-color: 
@background-color-disabled-filled;
-                               border-color: @border-color-disabled;
-                       }
-
-                       &:checked + span {
-                               background-color: @background-color-default;
-                       }
-               }
-       }
-
-       &.oo-ui-widget-enabled [type='radio'] {
-               cursor: pointer;
-
-               & + span {
-                       cursor: pointer;
-                       .oo-ui-transition(
-                               background-color @transition-ease-quick,
-                               border-color @transition-ease-quick,
-                               border-width @transition-ease-quick
-                       );
-               }
-
-               &:hover + span {
-                       border-color: @color-progressive;
-               }
-
-               &:active + span {
-                       background-color: @color-progressive-active;
-                       border-color: @color-progressive-active;
-               }
-
-               &:checked {
-                       & + span {
-                               border-color: @color-progressive-active;
-                       }
-
-                       &:hover + span {
-                               border-color: @color-progressive;
-                       }
-
-                       &:hover:focus + span {
-                               border-color: @color-progressive;
-                               box-shadow: inset 0 0 0 1px @color-progressive;
-                       }
-
-                       &:active + span,
-                       &:active:focus + span {
-                               border-color: @color-progressive-active;
-                               box-shadow: inset 0 0 0 1px 
@color-progressive-active;
-                       }
-
-                       &:focus + span {
-                               box-shadow: @box-shadow-focus-default;
-
-                               &:before {
-                                       border-color: @background-color-default;
-                                       top: -3px;
-                                       right: -3px;
-                                       bottom: -3px;
-                                       left: -3px;
-                               }
-                       }
-               }
-       }
-}
-
-.theme-oo-ui-radioSelectInputWidget () {
-       .oo-ui-fieldLayout {
-               margin-bottom: 0;
-
-               .oo-ui-fieldLayout-body {
-                       padding: 0.25em 0;
-
-                       .oo-ui-labelElement-label {
-                               line-height: 1.5;
-                       }
-               }
-       }
+.theme-oo-ui-tabSelectWidget () {
+       background-color: #ddd;
 }
 
 .theme-oo-ui-textInputWidget () {
@@ -830,595 +1487,10 @@
        }
 }
 
-.theme-oo-ui-comboBoxInputWidget () {
-       // inherits from `inputWidget` & `textInputWidget`
+.theme-oo-ui-toggleWidget () {}
 
-       input,
-       textarea {
-               height: 2.35em;
-       }
-
-       &.oo-ui-widget-enabled:hover {
-               input,
-               textarea {
-                       border-color: @border-color-default-hover;
-
-                       &:focus {
-                               border-color: @border-color-default-focus;
-                       }
-               }
-       }
-
-       &.oo-ui-widget-disabled {
-               .oo-ui-indicatorElement-indicator {
-                       opacity: @opacity-disabled-indicator;
-               }
-       }
-}
-
-.theme-oo-ui-capsuleMultiselectWidget () {
-       width: 100%;
-       max-width: @max-width-input;
-
-       &-handle {
-               min-height: 2.4em;
-               .oo-ui-inline-spacing( 0.5em );
-               padding: 0.15em 0.25em;
-               border: @border-default;
-               border-radius: @border-radius-default;
-               .oo-ui-box-sizing( border-box );
-
-               &:hover {
-                       border-color: @border-color-input-hover;
-               }
-
-               > .oo-ui-indicatorElement-indicator,
-               > .oo-ui-iconElement-icon {
-                       position: absolute;
-               }
-
-               > .oo-ui-capsuleMultiselectWidget-content > input {
-                       border: 0;
-                       line-height: 1.675;
-                       margin: 0 0 0 0.2em;
-                       padding: 0;
-                       font-size: inherit;
-                       font-family: inherit;
-                       background-color: transparent;
-                       color: @color-emphasized;
-                       vertical-align: middle;
-
-                       &:focus {
-                               // Chrome
-                               outline: 0;
-                       }
-               }
-       }
-
-       &.oo-ui-indicatorElement &-handle {
-               padding-right: @size-indicator + 2 * 0.775em;
-
-               > .oo-ui-indicatorElement-indicator {
-                       right: 0;
-                       top: 0;
-                       margin: 0.775em;
-               }
-       }
-
-       &.oo-ui-iconElement &-handle {
-               padding-left: @size-icon + 2 * 0.3em;
-
-               > .oo-ui-iconElement-icon {
-                       left: 0;
-                       top: 0;
-                       margin: 0.3em;
-               }
-       }
-
-       // CapsuleMultiselectWidget with child widget
-       .oo-ui-popupWidget {
-               width: 100%;
-               margin-top: -1px;
-       }
-
-       .oo-ui-popupWidget-popup {
-               min-width: 100%;
-               .oo-ui-box-sizing( border-box );
-               border-width: 0 1px;
-               border-radius: 0 0 2px 2px;
-       }
-
-       &.oo-ui-widget-enabled &-handle {
-               background-color: @background-color-default;
-               cursor: text;
-               .oo-ui-transition(
-                       border-color @transition-ease-out-sine-medium,
-                       box-shadow @transition-ease-out-sine-medium
-               );
-       }
-       &.oo-ui-widget-enabled:hover &-handle {
-               border-color: @border-color-default-hover;
-       }
-       &.oo-ui-widget-enabled.oo-ui-capsuleMultiselectWidget-open &-handle {
-               border-color: @border-color-default-focus;
-               outline: 0;
-               box-shadow: @box-shadow-focus-default;
-       }
-
-       &.oo-ui-widget-disabled &-handle {
-               color: @color-disabled;
-               text-shadow: @text-shadow-disabled;
-               border-color: @border-color-disabled;
-               background-color: @background-color-disabled;
-
-               > .oo-ui-iconElement-icon {
-                       opacity: @opacity-disabled;
-               }
-
-               > .oo-ui-indicatorElement-indicator {
-                       opacity: @opacity-disabled-indicator;
-               }
-       }
-}
-
-.theme-oo-ui-capsuleItemWidget () {
-       width: auto;
-       max-width: 100%;
-       .oo-ui-box-sizing( border-box );
-       vertical-align: middle;
-       height: 1.7em;
-       line-height: 1.7;
-       background-color: #eee;
-       color: @color-default;
-       margin: 0.1em;
-       border: @border-default;
-       border-radius: @border-radius-default;
-       padding: 0 0.4em;
-
-       &:focus {
-               outline: 0;
-               border-color: @color-progressive;
-               box-shadow: @box-shadow-focus-default;
-       }
-
-       &.oo-ui-widget-disabled {
-               background-color: @background-color-disabled;
-               color: @color-disabled;
-               border-color: @border-color-disabled;
-               text-shadow: @text-shadow-disabled;
-       }
-
-       // Clear button
-       & > .oo-ui-buttonElement {
-               display: none;
-       }
-
-       &.oo-ui-widget-enabled {
-               padding-right: @size-indicator + 0.6em;
-
-               > .oo-ui-buttonElement {
-                       display: block;
-                       position: absolute;
-                       top: 0;
-                       right: 0;
-                       bottom: 0;
-               }
-               & .oo-ui-buttonElement-button {
-                       display: block;
-                       width: @size-indicator + 0.6em; // Padding on each side 
of the indicator
-                       height: 100%; // Firefox height calculation fix
-
-                       & .oo-ui-indicator-clear {
-                               position: absolute;
-                               top: 0;
-                               right: 0.3em;
-                               bottom: 0;
-                               height: auto;
-                       }
-               }
-       }
-}
-
-.theme-oo-ui-labelWidget () {}
-
-.theme-oo-ui-optionWidget () {
-       border: 0;
-       padding: 0.25em 0.5em;
-
-       .oo-ui-labelElement-label {
-               line-height: 1.5;
-       }
-
-       // Don't add `highlighted` or `selected` modifications here
-       // as it inherits to various visually opposite widgets.
-
-       &-selected .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-               opacity: @opacity-icon-default-selected;
-       }
-
-       &.oo-ui-widget-disabled {
-               color: @color-disabled;
-       }
-}
-
-.theme-oo-ui-decoratedOptionWidget () {
-       padding: 0.5em 2em 0.5em 3em;
-
-       &.oo-ui-iconElement .oo-ui-iconElement-icon,
-       &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-               top: 0;
-               height: 100%;
-       }
-
-       &.oo-ui-iconElement .oo-ui-iconElement-icon {
-               left: 0.5em;
-       }
-
-       &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-               right: 0.5em;
-       }
-
-       &.oo-ui-widget-disabled {
-               .oo-ui-iconElement-icon,
-               .oo-ui-indicatorElement-indicator {
-                       opacity: @opacity-disabled;
-               }
-       }
-}
-
-.theme-oo-ui-buttonOptionWidget () {
-       padding: 0;
-
-       &.oo-ui-optionWidget-selected,
-       &.oo-ui-optionWidget-pressed,
-       &.oo-ui-optionWidget-highlighted {
-               background-color: transparent;
-       }
-}
-
-.theme-oo-ui-radioOptionWidget () {
-       padding: 0.25em 0;
-       background-color: transparent;
-
-       &.oo-ui-optionWidget-selected,
-       &.oo-ui-optionWidget-pressed,
-       &.oo-ui-optionWidget-highlighted {
-               background-color: transparent;
-       }
-
-       &.oo-ui-labelElement .oo-ui-labelElement-label {
-               padding: @padding-input-binary-label;
-       }
-
-       .oo-ui-radioInputWidget {
-               margin-right: 0;
-       }
-}
-
-.theme-oo-ui-menuOptionWidget () {
-       padding: 0.5em 1em;
-       .oo-ui-transition(
-               background-color @transition-ease-quick,
-               color @transition-ease-quick
-       );
-
-       &.oo-ui-optionWidget {
-               &-highlighted {
-                       background-color: @background-color-default-hover;
-                       color: @color-emphasized;
-               }
-               &-selected {
-                       background-color: @background-color-progressive;
-                       color: @color-progressive;
-
-                       .oo-ui-iconElement-icon {
-                               display: none;
-                       }
-               }
-               &-selected&-highlighted,
-               &-pressed&-highlighted {
-                       background-color: @background-color-progressive-hover;
-                       color: @color-progressive;
-               }
-       }
-}
-
-.theme-oo-ui-menuSectionOptionWidget () {
-       padding: 0.33em 0.75em;
-       color: #888;
-}
-
-.theme-oo-ui-outlineOptionWidget () {
-       font-size: 1.1em;
-       padding: 0.75em;
-       .oo-ui-transition(
-               background-color @transition-ease-quick,
-               color @transition-ease-quick
-       );
-
-       &.oo-ui-optionWidget-highlighted {
-               background-color: @background-color-default-hover;
-               color: @color-emphasized;
-       }
-
-       &.oo-ui-optionWidget-selected {
-               background-color: @background-color-progressive;
-               color: @color-progressive;
-       }
-
-       &.oo-ui-optionWidget-pressed {
-               background-color: @background-color-progressive-hover;
-               color: @color-progressive;
-       }
-
-       .oo-ui-iconElement-icon {
-               // Undoes the parent change, because the theme's icons expect 
to be
-               // 24px, and don't scale incredibly well.
-               font-size: 90.90909%;
-       }
-
-       &.oo-ui-indicatorElement .oo-ui-labelElement-label {
-               padding-right: 1.5em;
-       }
-
-       &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-               opacity: 0.5;
-       }
-
-       &-level-0 {
-               padding-left: 3.5em;
-
-               .oo-ui-iconElement-icon {
-                       left: 1em;
-               }
-       }
-       &-level-1 {
-               padding-left: 5em;
-
-               .oo-ui-iconElement-icon {
-                       left: 2.5em;
-               }
-       }
-
-       &-level-2 {
-               padding-left: 6.5em;
-
-               .oo-ui-iconElement-icon {
-                       left: 4em;
-               }
-       }
-
-       &.oo-ui-flaggedElement-important {
-               font-weight: bold;
-       }
-
-       &.oo-ui-flaggedElement-empty {
-               .oo-ui-iconElement-icon {
-                       opacity: 0.5;
-               }
-               .oo-ui-labelElement-label {
-                       color: #777;
-               }
-       }
-}
-
-.theme-oo-ui-tabOptionWidget () {
-       padding: 0.35em 1em;
-       margin: 0.5em 0 0 0.75em;
-       border: 1px solid transparent;
-       border-bottom: 0;
-       border-top-left-radius: @border-radius-default;
-       border-top-right-radius: @border-radius-default;
-       color: @color-default;
-       font-weight: bold;
-
-       &.oo-ui-widget-enabled {
-               &:hover {
-                       background-color: rgba( 255, 255, 255, 0.3 );
-               }
-
-               &:active {
-                       background-color: rgba( 255, 255, 255, 0.8 );
-               }
-       }
-
-       &.oo-ui-indicatorElement .oo-ui-labelElement-label {
-               padding-right: 1.5em;
-       }
-
-       &.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-               opacity: 0.5;
-       }
-
-       .oo-ui-selectWidget-pressed &.oo-ui-optionWidget-selected,
-       .oo-ui-selectWidget-depressed &.oo-ui-optionWidget-selected,
-       &.oo-ui-optionWidget-selected:hover {
-               background-color: @background-color-default;
-               color: #333;
-       }
-}
-
-.theme-oo-ui-popupWidget () {
-       &-popup {
-               background-color: @background-color-default;
-               border: @border-menu;
-               border-radius: @border-radius-default;
-               box-shadow: @box-shadow-menu;
-       }
-
-       @anchor-size: 9px;
-
-       &-anchored {
-               .oo-ui-popupWidget-popup {
-                       margin-top: @anchor-size;
-               }
-
-               .oo-ui-popupWidget-anchor:before,
-               .oo-ui-popupWidget-anchor:after {
-                       content: '';
-                       position: absolute;
-                       width: 0;
-                       height: 0;
-                       border-style: solid;
-                       border-color: transparent;
-                       border-top: 0;
-               }
-
-               .oo-ui-popupWidget-anchor:before {
-                       bottom: -@anchor-size - 1px;
-                       left: -@anchor-size;
-                       border-bottom-color: #888;
-                       border-width: @anchor-size + 1px;
-               }
-
-               .oo-ui-popupWidget-anchor:after {
-                       bottom: -@anchor-size - 1px;
-                       left: -@anchor-size + 1px;
-                       border-bottom-color: @border-color-disabled-filled;
-                       border-width: @anchor-size;
-               }
-       }
-
-       &-transitioning .oo-ui-popupWidget-popup {
-               .oo-ui-transition(
-                       width @transition-ease-quick,
-                       height @transition-ease-quick,
-                       left @transition-ease-quick
-               );
-       }
-
-       &-head {
-               height: 2.5em;
-
-               > .oo-ui-buttonWidget {
-                       margin: 0.25em;
-               }
-
-               > .oo-ui-labelElement-label {
-                       margin: 0.75em 1em;
-               }
-       }
-
-       &-body-padded {
-               padding: 0 1em;
-       }
-}
-
-.theme-oo-ui-searchWidget () {
-       &-query {
-               height: 4em;
-               padding: 0 1em;
-               border-bottom: @border-default;
-
-               .oo-ui-textInputWidget {
-                       margin: 0.75em 0;
-               }
-       }
-
-       &-results {
-               top: 4em;
-               padding: 1em;
-               line-height: 0;
-       }
-}
-
-.theme-oo-ui-selectWidget () {}
-
-.theme-oo-ui-buttonSelectWidget () {
-       border-radius: @border-radius-default;
+.theme-oo-ui-toggleButtonWidget () {
        .oo-ui-inline-spacing( 0.5em );
-
-       &:focus {
-               outline: 0;
-       }
-
-       .oo-ui-buttonOptionWidget {
-               .oo-ui-buttonElement-button {
-                       border-radius: 0;
-                       margin-left: -1px;
-               }
-
-               &:first-child .oo-ui-buttonElement-button {
-                       border-bottom-left-radius: @border-radius-default;
-                       border-top-left-radius: @border-radius-default;
-                       margin-left: 0;
-               }
-
-               &:last-child .oo-ui-buttonElement-button {
-                       border-bottom-right-radius: @border-radius-default;
-                       border-top-right-radius: @border-radius-default;
-               }
-
-       }
-
-       &.oo-ui-widget-enabled {
-               &:focus {
-                       .oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected {
-                               .oo-ui-buttonElement-button {
-                                       border-color: 
@border-color-default-focus;
-                                       box-shadow: @box-shadow-focus-inset;
-                               }
-                       }
-               }
-       }
-}
-
-.theme-oo-ui-radioSelectWidget () {
-       &:focus {
-               outline: 0;
-
-               [type='radio']:checked + span:before {
-                       border-color: @background-color-default;
-               }
-       }
-}
-
-.theme-oo-ui-menuSelectWidget () {
-       background-color: @background-color-default;
-       margin-top: -1px;
-       border: @border-menu;
-       border-radius: 0 0 @border-radius-default @border-radius-default;
-       box-shadow: @box-shadow-menu;
-}
-
-.theme-oo-ui-floatingMenuSelectWidget () {}
-
-.theme-oo-ui-outlineSelectWidget () {}
-
-.theme-oo-ui-tabSelectWidget () {
-       background-color: #ddd;
-}
-
-.theme-oo-ui-numberInputWidget () {
-       max-width: @max-width-input;
-
-       &-buttoned {
-               .oo-ui-buttonWidget {
-                       width: 2.5em;
-               }
-
-               .oo-ui-buttonElement-button {
-                       display: block;
-                       padding-left: 0;
-                       padding-right: 0;
-               }
-
-               .oo-ui-textInputWidget input {
-                       border-radius: 0;
-               }
-       }
-
-       &-minusButton.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-               border-top-right-radius: 0;
-               border-bottom-right-radius: 0;
-               border-right-width: 0;
-       }
-
-       &-plusButton.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-               border-top-left-radius: 0;
-               border-bottom-left-radius: 0;
-               border-left-width: 0;
-       }
 }
 
 .theme-oo-ui-toggleSwitchWidget () {
@@ -1562,77 +1634,5 @@
                &.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
                        background-color: @background-color-default;
                }
-       }
-}
-
-.theme-oo-ui-progressBarWidget () {
-       max-width: @max-width-default;
-       background-color: @background-color-default;
-       border: @border-default;
-       border-radius: @border-radius-default;
-       overflow: hidden;
-
-       &-bar {
-               background-color: #ddd;
-               height: 1em;
-               .oo-ui-transition(
-                       width 200ms,
-                       margin-left 200ms
-               );
-       }
-       &-indeterminate {
-               .oo-ui-progressBarWidget-bar {
-                       .oo-ui-animation( oo-ui-progressBarWidget-slide 2s 
infinite linear );
-                       width: 40%;
-                       margin-left: -10%;
-                       border-left-width: @border-width-default;
-               }
-       }
-       &.oo-ui-widget-disabled {
-               opacity: 0.6;
-       }
-
-       .oo-ui-progressBarWidget-slide-frames () {
-               from {
-                       margin-left: -40%;
-               }
-               to {
-                       margin-left: 100%;
-               }
-       }
-       @-webkit-keyframes oo-ui-progressBarWidget-slide {
-               .oo-ui-progressBarWidget-slide-frames;
-       }
-       @-moz-keyframes oo-ui-progressBarWidget-slide {
-               .oo-ui-progressBarWidget-slide-frames;
-       }
-       @keyframes oo-ui-progressBarWidget-slide {
-               .oo-ui-progressBarWidget-slide-frames;
-       }
-}
-
-.theme-oo-ui-multiselectWidget () {}
-
-.theme-oo-ui-multioptionWidget () {
-       .oo-ui-labelElement-label {
-               line-height: 1.5;
-       }
-
-       &.oo-ui-widget-disabled {
-               color: @color-disabled;
-       }
-}
-
-.theme-oo-ui-checkboxMultiselectWidget () {}
-
-.theme-oo-ui-checkboxMultioptionWidget () {
-       padding: 0.25em 0;
-
-       &.oo-ui-labelElement .oo-ui-labelElement-label {
-               padding: @padding-input-binary-label;
-       }
-
-       .oo-ui-checkboxInputWidget {
-               margin-right: 0;
        }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/311356
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If6305c530088acc559bd0d65578e460210b8cd3f
Gerrit-PatchSet: 1
Gerrit-Project: oojs/ui
Gerrit-Branch: master
Gerrit-Owner: VolkerE <volke...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to