jenkins-bot has submitted this change and it was merged.

Change subject: Split the library into four parts
......................................................................


Split the library into four parts

If the library has gotten too big for you, you can now load
only a part of it! (This is not a breaking change, as all the
existing distribution files are still here.)

The new distribution files are:
  oojs-ui-core.js       (93K minified + 40K minified of CSS)
    The core JavaScript library. The other three depend on this.
  oojs-ui-widgets.js    (55K minified + 21K minified of CSS)
    Additional widgets and layouts module.
  oojs-ui-toolbars.js   (19K minified + 13K minified of CSS)
    Toolbar and tools module.
  oojs-ui-windows.js    (32K minified + 11K minified of CSS)
    Windows and dialogs module.

Compared to the old one, now known as "omnibus build":
  oojs-ui.js            (198K minified + 82K minified of CSS)
    Everything in one place!

There are some big changes to the build process here:

* We're building more files. modules.yaml now contains the definition
  of what goes into each JavaScript one, which is sadly duplicated for
  CSS in src/styles/{core,widgets,toolbars,windows}.less. (It was like
  this before, though, it's just worse now.)

* Less build was turned inside-out. Previously, each theme contained
  an entry point, that imported the core styles to build the whole
  library. Since that would require four entry points now and would be
  a major pain, I've changed it so that core styles import the theme
  entry point (and are compiled multiple times, once for each theme).

Bug: T113681
Change-Id: I647e2b55cea5c37b4944683b1416bc60b7aa7eb3
---
M Gruntfile.js
M build/modules.yaml
M src/styles/common.less
M src/styles/core.less
R src/styles/empty-theme.less
A src/styles/toolbars.less
A src/styles/widgets.less
A src/styles/windows.less
M src/themes/apex/common.less
D src/themes/apex/core.less
A src/themes/apex/theme.less
M src/themes/blank/common.less
D src/themes/blank/core.less
A src/themes/blank/theme.less
M src/themes/mediawiki/common.less
D src/themes/mediawiki/core.less
A src/themes/mediawiki/theme.less
17 files changed, 320 insertions(+), 216 deletions(-)

Approvals:
  Jforrester: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/Gruntfile.js b/Gruntfile.js
index 2a435d3..620008b 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -10,11 +10,15 @@
                        apex: 'Apex',
                        mediawiki: 'MediaWiki'
                },
-               lessFiles = {},
+               lessFiles = {
+                       apex: {},
+                       mediawiki: {}
+               },
                colorizeSvgFiles = {},
                requiredFiles = [],
                concatCssFiles = {},
                concatJsFiles = {},
+               concatOmnibus = {},
                rtlFiles = {},
                minBanner = '/*! OOjs UI v<%= pkg.version %> | 
http://oojs.mit-license.org */';
 
@@ -49,6 +53,7 @@
                        if ( module.indexOf( '{theme}' ) !== -1 || 
module.indexOf( '{Theme}' ) !== -1 ) {
                                for ( theme in themes ) {
                                        modules[ themify( module ) ] = {};
+                                       modules[ themify( module ) ].theme = 
theme;
                                        if ( modules[ module ].scripts ) {
                                                modules[ themify( module ) 
].scripts = modules[ module ].scripts.map( themify );
                                        }
@@ -71,11 +76,10 @@
                // Generate all task targets required to process given file 
into a pair of CSS files (for LTR
                // and RTL), and return file name of LTR file.
                function processFile( fileName ) {
-                       var lessFileName, cssFileName, theme, path;
+                       var lessFileName, cssFileName, path;
                        path = require( 'path' );
                        if ( path.extname( fileName ) === '.json' ) {
                                lessFileName = fileName.replace( /\.json$/, 
'.less' ).replace( /^src/, 'dist/tmp' );
-                               theme = path.basename( path.dirname( fileName ) 
);
 
                                colorizeSvgFiles[ fileName.replace( 
/.+\/(\w+)\/([\w-]+)\.(?:json|less)$/, '$1-$2' ) ] = {
                                        options: grunt.file.readJSON( fileName 
),
@@ -89,12 +93,12 @@
                                        }
                                };
 
-                               cssFileName = fileName.replace( /\.json$/, 
'.css' ).replace( /^src/, 'dist/tmp' );
-                               lessFiles[ cssFileName ] = [ lessFileName ];
-                               lessFiles[ rtlPath( cssFileName ) ] = [ 
rtlPath( lessFileName ) ];
+                               cssFileName = fileName.replace( /\.json$/, 
'.css' ).replace( /^src/, 'dist/tmp/' + theme );
+                               lessFiles[ theme ][ cssFileName ] = [ 
lessFileName ];
+                               lessFiles[ theme ][ rtlPath( cssFileName ) ] = 
[ rtlPath( lessFileName ) ];
                        } else {
-                               cssFileName = fileName.replace( /\.less$/, 
'.css' ).replace( /^src/, 'dist/tmp' );
-                               lessFiles[ cssFileName ] = [ fileName ];
+                               cssFileName = fileName.replace( /\.less$/, 
'.css' ).replace( /^src/, 'dist/tmp/' + theme );
+                               lessFiles[ theme ][ cssFileName ] = [ fileName 
];
                                rtlFiles[ rtlPath( cssFileName ) ] = 
cssFileName;
                        }
                        return cssFileName;
@@ -102,6 +106,7 @@
                for ( module in modules ) {
                        if ( modules[ module ].styles ) {
                                moduleStyleFiles = modules[ module ].styles;
+                               theme = modules[ module ].theme;
 
                                distFile = 'dist/' + module + '.css';
 
@@ -115,6 +120,34 @@
                                concatJsFiles[ distFile ].push( 
'src/outro.js.txt' );
                        }
                }
+
+               // Composite files
+               concatOmnibus[ 'dist/oojs-ui.js' ] = [
+                       'dist/oojs-ui-core.js',
+                       'dist/oojs-ui-widgets.js',
+                       'dist/oojs-ui-toolbars.js',
+                       'dist/oojs-ui-windows.js'
+               ];
+               for ( theme in themes ) {
+                       concatOmnibus[ themify( 'dist/oojs-ui-{theme}.css' ) ] 
= [
+                               'dist/oojs-ui-core-{theme}.css',
+                               'dist/oojs-ui-widgets-{theme}.css',
+                               'dist/oojs-ui-toolbars-{theme}.css',
+                               'dist/oojs-ui-windows-{theme}.css',
+                               'dist/oojs-ui-images-{theme}.css'
+                       ].map( themify );
+                       concatOmnibus[ rtlPath( themify( 
'dist/oojs-ui-{theme}.css' ) ) ] =
+                               concatOmnibus[ themify( 
'dist/oojs-ui-{theme}.css' ) ].map( rtlPath );
+                       concatOmnibus[ themify( 
'dist/oojs-ui-{theme}-noimages.css' ) ] = [
+                               'dist/oojs-ui-core-{theme}.css',
+                               'dist/oojs-ui-widgets-{theme}.css',
+                               'dist/oojs-ui-toolbars-{theme}.css',
+                               'dist/oojs-ui-windows-{theme}.css'
+                       ].map( themify );
+                       concatOmnibus[ rtlPath( themify( 
'dist/oojs-ui-{theme}-noimages.css' ) ) ] =
+                               concatOmnibus[ themify( 
'dist/oojs-ui-{theme}-noimages.css' ) ].map( rtlPath );
+               }
+
        }() );
 
        function strip( str ) {
@@ -157,6 +190,12 @@
                        css: {
                                files: concatCssFiles
                        },
+                       omnibus: {
+                               options: {
+                                       banner: ''
+                               },
+                               files: concatOmnibus
+                       },
                        demoCss: {
                                options: {
                                        banner: '/** This file is generated 
automatically. Do not modify it. */\n\n'
@@ -192,8 +231,17 @@
                                        'oo-ui-default-image-ext': 'png'
                                }
                        },
-                       all: {
-                               files: lessFiles
+                       apex: {
+                               options: {
+                                       paths: [ '.', 'src/themes/apex' ]
+                               },
+                               files: lessFiles.apex
+                       },
+                       mediawiki: {
+                               options: {
+                                       paths: [ '.', 'src/themes/mediawiki' ]
+                               },
+                               files: lessFiles.mediawiki
                        }
                },
                cssjanus: {
@@ -440,6 +488,7 @@
        grunt.registerTask( 'build-tests', [ 'exec:rubyTestSuiteGenerator', 
'exec:phpGenerateJSPHPForKarma' ] );
        grunt.registerTask( 'build', [
                'clean:build', 'fileExists', 'tyops', 'build-code', 
'build-styling', 'build-i18n',
+               'concat:omnibus',
                'clean:tmp', 'demos'
        ] );
 
@@ -451,7 +500,7 @@
                'concat:js',
                'colorizeSvg', 'set-graphics:vector', 'less', 'concat:css',
                'copy:imagesCommon', 'copy:imagesApex', 'copy:imagesMediaWiki',
-               'build-i18n', 'copy:demos', 'copy:fastcomposerdemos',
+               'build-i18n', 'concat:omnibus', 'copy:demos', 
'copy:fastcomposerdemos',
                'note-quick-build'
        ] );
 
diff --git a/build/modules.yaml b/build/modules.yaml
index aee1728..982bec0 100644
--- a/build/modules.yaml
+++ b/build/modules.yaml
@@ -1,120 +1,149 @@
 # NOTE: We're trying to stick to just the JSON-with-comments subset of YAML in 
this file.
 
 {
-       # The JavaScript library.
-       "oojs-ui": {
+       # The core JavaScript library. This contains the widgets you're most 
likely to need in your
+       # interfaces, including everything required to infuse any PHP widgets.
+       "oojs-ui-core": {
                "scripts": [
+                       # Core of the core. The basic building block of 
Element, facilities to connect PHP and JS
+                       # widgets (infuse), some abstract classes, a bunch of 
convenience methods.
                        "src/core.js",
                        "src/mixin.js",
-
-                       "src/mixins/PendingElement.js",
-
-                       "src/ActionSet.js",
                        "src/Element.js",
-                               "src/Layout.js",
-                               "src/Widget.js",
-                               "src/Window.js",
-                                       "src/Dialog.js",
-                               "src/WindowManager.js",
-                       "src/Error.js",
                        "src/HtmlSnippet.js",
-                       "src/Process.js",
-                       "src/ToolFactory.js",
-                       "src/ToolGroupFactory.js",
+                       "src/Layout.js",
+                       "src/Widget.js",
                        "src/Theme.js",
 
-                       "src/mixins/RequestManager.js",
+                       # Basic element mixins. These should be the same 
classes that are supported in OOjs UI PHP.
                        "src/mixins/TabIndexedElement.js",
                        "src/mixins/ButtonElement.js",
                        "src/mixins/GroupElement.js",
-                       "src/mixins/DraggableElement.js",
-                       "src/mixins/DraggableGroupElement.js",
                        "src/mixins/IconElement.js",
                        "src/mixins/IndicatorElement.js",
                        "src/mixins/LabelElement.js",
-                       "src/mixins/LookupElement.js",
-                       "src/mixins/PopupElement.js",
                        "src/mixins/FlaggedElement.js",
                        "src/mixins/TitledElement.js",
-                       "src/mixins/ClippableElement.js",
-                       "src/mixins/FloatableElement.js",
                        "src/mixins/AccessKeyedElement.js",
 
-                       "src/Tool.js",
-                       "src/Toolbar.js",
-                       "src/ToolGroup.js",
+                       # The basic widgets and layouts. These should be the 
same classes that are supported in OOjs
+                       # UI PHP. (Continued below, as some dependencies below 
depend on these.)
+                       "src/widgets/ButtonWidget.js",
+                       "src/widgets/ButtonGroupWidget.js",
+                       "src/widgets/IconWidget.js",
+                       "src/widgets/IndicatorWidget.js",
+                       "src/widgets/LabelWidget.js",
 
-                       "src/dialogs/MessageDialog.js",
-                       "src/dialogs/ProcessDialog.js",
-                       "src/windows.js",
+                       # The JavaScript-specific dependencies of the basic 
widgets. It's sad how many there are :(
+                       # TextInputWidget
+                       "src/mixins/PendingElement.js",
+                       # FieldLayout, FieldsetLayout
+                       "src/mixins/ClippableElement.js",
+                       "src/widgets/PopupWidget.js",
+                       "src/mixins/PopupElement.js",
+                       "src/widgets/PopupButtonWidget.js",
+                       # DropdownInputWidget, RadioSelectInputWidget
+                       "src/mixins/GroupWidget.js",
+                       "src/mixins/ItemWidget.js",
+                       "src/widgets/OptionWidget.js",
+                       "src/widgets/SelectWidget.js",
+                       "src/widgets/DecoratedOptionWidget.js",
+                       # DropdownInputWidget
+                       "src/widgets/MenuOptionWidget.js",
+                       "src/widgets/MenuSectionOptionWidget.js",
+                       "src/widgets/MenuSelectWidget.js",
+                       "src/widgets/DropdownWidget.js",
+                       # RadioSelectInputWidget
+                       "src/widgets/RadioOptionWidget.js",
+                       "src/widgets/RadioSelectWidget.js",
+                       # ComboBoxInputWidget
+                       "src/mixins/FloatableElement.js",
+                       "src/widgets/FloatingMenuSelectWidget.js",
 
+                       # The basic widgets and layouts, continued.
+                       "src/widgets/InputWidget.js",
+                       "src/widgets/ButtonInputWidget.js",
+                       "src/widgets/CheckboxInputWidget.js",
+                       "src/widgets/DropdownInputWidget.js",
+                       "src/widgets/RadioInputWidget.js",
+                       "src/widgets/RadioSelectInputWidget.js",
+                       "src/widgets/TextInputWidget.js",
+                       "src/widgets/ComboBoxInputWidget.js",
                        "src/layouts/FieldLayout.js",
                        "src/layouts/ActionFieldLayout.js",
                        "src/layouts/FieldsetLayout.js",
                        "src/layouts/FormLayout.js",
-                       "src/layouts/MenuLayout.js",
-                               "src/layouts/BookletLayout.js",
-                               "src/layouts/IndexLayout.js",
                        "src/layouts/PanelLayout.js",
-                               "src/layouts/CardLayout.js",
-                               "src/layouts/PageLayout.js",
-                               "src/layouts/StackLayout.js",
-                       "src/layouts/HorizontalLayout.js",
+                       "src/layouts/HorizontalLayout.js"
+               ]
+       },
+       # Additional widgets and layouts module. These have no equivalent in 
OOjs UI PHP.
+       "oojs-ui-widgets": {
+               "scripts": [
+                       "src/mixins/DraggableElement.js",
+                       "src/mixins/DraggableGroupElement.js",
 
+                       "src/mixins/RequestManager.js",
+                       "src/mixins/LookupElement.js",
+
+                       "src/layouts/CardLayout.js",
+                       "src/layouts/PageLayout.js",
+                       "src/layouts/StackLayout.js",
+                       "src/layouts/MenuLayout.js",
+                       "src/layouts/BookletLayout.js",
+                       "src/layouts/IndexLayout.js",
+
+                       "src/widgets/ToggleWidget.js",
+                       "src/widgets/ToggleButtonWidget.js",
+                       "src/widgets/ToggleSwitchWidget.js",
+
+                       "src/widgets/OutlineControlsWidget.js",
+                       "src/widgets/OutlineOptionWidget.js",
+                       "src/widgets/OutlineSelectWidget.js",
+                       "src/widgets/ButtonOptionWidget.js",
+                       "src/widgets/ButtonSelectWidget.js",
+                       "src/widgets/TabOptionWidget.js",
+                       "src/widgets/TabSelectWidget.js",
+
+                       "src/widgets/CapsuleItemWidget.js",
+                       "src/widgets/CapsuleMultiSelectWidget.js",
+
+                       "src/widgets/SelectFileWidget.js",
+                       "src/widgets/ProgressBarWidget.js",
+                       "src/widgets/SearchWidget.js",
+                       "src/widgets/NumberInputWidget.js"
+               ],
+       },
+       # Toolbar and tools module.
+       "oojs-ui-toolbars": {
+               "scripts": [
+                       "src/Toolbar.js",
+                       "src/Tool.js",
+                       "src/ToolGroup.js",
+                       "src/ToolFactory.js",
+                       "src/ToolGroupFactory.js",
+                       "src/tools/PopupTool.js",
+                       "src/tools/ToolGroupTool.js",
                        "src/toolgroups/BarToolGroup.js",
                        "src/toolgroups/PopupToolGroup.js",
                        "src/toolgroups/ListToolGroup.js",
-                       "src/toolgroups/MenuToolGroup.js",
-
-                       "src/tools/PopupTool.js",
-                       "src/tools/ToolGroupTool.js",
-
-                       "src/mixins/GroupWidget.js",
-                       "src/mixins/ItemWidget.js",
-                       "src/widgets/OutlineControlsWidget.js",
-                       "src/widgets/ToggleWidget.js",
-
-                       "src/widgets/ButtonGroupWidget.js",
-                       "src/widgets/ButtonWidget.js",
-                               "src/widgets/ActionWidget.js",
-                               "src/widgets/PopupButtonWidget.js",
-                               "src/widgets/ToggleButtonWidget.js",
-                       "src/widgets/CapsuleMultiSelectWidget.js",
-                       "src/widgets/CapsuleItemWidget.js",
-                       "src/widgets/DropdownWidget.js",
-                       "src/widgets/SelectFileWidget.js",
-                       "src/widgets/IconWidget.js",
-                       "src/widgets/IndicatorWidget.js",
-                       "src/widgets/InputWidget.js",
-                               "src/widgets/ButtonInputWidget.js",
-                               "src/widgets/CheckboxInputWidget.js",
-                               "src/widgets/DropdownInputWidget.js",
-                               "src/widgets/RadioInputWidget.js",
-                               "src/widgets/RadioSelectInputWidget.js",
-                               "src/widgets/TextInputWidget.js",
-                       "src/widgets/ComboBoxInputWidget.js",
-                       "src/widgets/LabelWidget.js",
-                       "src/widgets/OptionWidget.js",
-                               "src/widgets/DecoratedOptionWidget.js",
-                                       "src/widgets/ButtonOptionWidget.js",
-                                       "src/widgets/RadioOptionWidget.js",
-                                       "src/widgets/MenuOptionWidget.js",
-                                       
"src/widgets/MenuSectionOptionWidget.js",
-                                       "src/widgets/OutlineOptionWidget.js",
-                                       "src/widgets/TabOptionWidget.js",
-                       "src/widgets/PopupWidget.js",
-                       "src/widgets/ProgressBarWidget.js",
-                       "src/widgets/SearchWidget.js",
-                       "src/widgets/SelectWidget.js",
-                               "src/widgets/ButtonSelectWidget.js",
-                               "src/widgets/RadioSelectWidget.js",
-                               "src/widgets/MenuSelectWidget.js",
-                                       
"src/widgets/FloatingMenuSelectWidget.js",
-                               "src/widgets/OutlineSelectWidget.js",
-                               "src/widgets/TabSelectWidget.js",
-                       "src/widgets/NumberInputWidget.js",
-                       "src/widgets/ToggleSwitchWidget.js"
-               ]
+                       "src/toolgroups/MenuToolGroup.js"
+               ],
+       },
+       # Windows and dialogs module.
+       "oojs-ui-windows": {
+               "scripts": [
+                       "src/widgets/ActionWidget.js",
+                       "src/ActionSet.js",
+                       "src/Error.js",
+                       "src/Process.js",
+                       "src/WindowManager.js",
+                       "src/Window.js",
+                       "src/Dialog.js",
+                       "src/dialogs/MessageDialog.js",
+                       "src/dialogs/ProcessDialog.js",
+                       "src/windows.js"
+               ],
        },
 
        # All styles, built per-theme, and theme-specific scripts.
@@ -126,25 +155,42 @@
        "oojs-ui-{theme}": {
                "scripts": [
                        "src/themes/{theme}/{Theme}Theme.js"
-               ],
+               ]
+       },
+       "oojs-ui-core-{theme}": {
                "styles": [
-                       "src/themes/{theme}/core.less",
+                       "src/styles/core.less"
+               ]
+       },
+       "oojs-ui-widgets-{theme}": {
+               "styles": [
+                       "src/styles/widgets.less"
+               ]
+       },
+       "oojs-ui-toolbars-{theme}": {
+               "styles": [
+                       "src/styles/toolbars.less"
+               ]
+       },
+       "oojs-ui-windows-{theme}": {
+               "styles": [
+                       "src/styles/windows.less"
+               ]
+       },
+       "oojs-ui-images-{theme}": {
+               "styles": [
                        "src/themes/{theme}/icons.json",
                        "src/themes/{theme}/indicators.json",
                        "src/themes/{theme}/textures.json"
                ]
        },
-       "oojs-ui-{theme}-noimages": {
-               "styles": [
-                       "src/themes/{theme}/core.less"
-               ]
-       },
 
-       # Additional icon packs. Some exist for all themes, some are 
MediaWiki-specific.
+       # Additional icon packs. Some exist for all themes, some are 
MediaWiki-theme-specific.
        "oojs-ui-mediawiki-icons-accessibility": {
                "styles": [
                        "src/themes/mediawiki/icons-accessibility.json"
-               ]
+               ],
+               "theme": "mediawiki"
        },
        "oojs-ui-{theme}-icons-movement": {
                "styles": [
@@ -159,7 +205,8 @@
        "oojs-ui-mediawiki-icons-alerts": {
                "styles": [
                        "src/themes/mediawiki/icons-alerts.json"
-               ]
+               ],
+               "theme": "mediawiki"
        },
        "oojs-ui-{theme}-icons-interactions": {
                "styles": [
@@ -199,21 +246,25 @@
        "oojs-ui-mediawiki-icons-location": {
                "styles": [
                        "src/themes/mediawiki/icons-location.json"
-               ]
+               ],
+               "theme": "mediawiki"
        },
        "oojs-ui-mediawiki-icons-user": {
                "styles": [
                        "src/themes/mediawiki/icons-user.json"
-               ]
+               ],
+               "theme": "mediawiki"
        },
        "oojs-ui-mediawiki-icons-layout": {
                "styles": [
                        "src/themes/mediawiki/icons-layout.json"
-               ]
+               ],
+               "theme": "mediawiki"
        },
        "oojs-ui-mediawiki-icons-wikimedia": {
                "styles": [
                        "src/themes/mediawiki/icons-wikimedia.json"
-               ]
+               ],
+               "theme": "mediawiki"
        }
 }
diff --git a/src/styles/common.less b/src/styles/common.less
index dd14360..bb4440f 100644
--- a/src/styles/common.less
+++ b/src/styles/common.less
@@ -1,10 +1,13 @@
+// Import base empty theme, so that custom themes don't need to define tons of 
empty mixins.
+@import 'empty-theme';
+// Import the actual theme - this is the theme.less file from the theme's 
directory.
+// Build process should ensure that import paths are set up correctly for this 
to happen.
 @import 'theme';
 
 // Variables
 
 // @oo-ui-default-image-ext set during build
 // @oo-ui-distribution set during build
-@oo-ui-default-image-path: 'images';
 
 // Mixins
 
diff --git a/src/styles/core.less b/src/styles/core.less
index e3cd127..7ac2d02 100644
--- a/src/styles/core.less
+++ b/src/styles/core.less
@@ -1,7 +1,5 @@
 //
-// Base styles.
-//
-// Themes should include this file after defining their variables and mixins.
+// Styles for the 'core' module.
 //
 
 @import 'common';
@@ -11,71 +9,36 @@
 @import 'elements/ClippableElement.less';
 @import 'elements/FloatableElement.less';
 @import 'elements/FlaggedElement.less';
-@import 'elements/DraggableElement.less';
-@import 'elements/DraggableGroupElement.less';
 @import 'elements/GroupElement.less';
 @import 'elements/IconElement.less';
 @import 'elements/IndicatorElement.less';
 @import 'elements/LabelElement.less';
-@import 'elements/LookupElement.less';
 @import 'elements/PendingElement.less';
 @import 'elements/PopupElement.less';
 @import 'elements/TabIndexedElement.less';
 @import 'elements/TitledElement.less';
 
 @import 'Layout.less';
-@import 'layouts/BookletLayout.less';
-@import 'layouts/IndexLayout.less';
 @import 'layouts/FieldLayout.less';
 @import 'layouts/ActionFieldLayout.less';
 @import 'layouts/FieldsetLayout.less';
 @import 'layouts/FormLayout.less';
-@import 'layouts/MenuLayout.less';
 @import 'layouts/PanelLayout.less';
-@import 'layouts/CardLayout.less';
-@import 'layouts/PageLayout.less';
-@import 'layouts/StackLayout.less';
 @import 'layouts/HorizontalLayout.less';
-
-@import 'Tool.less';
-@import 'tools/PopupTool.less';
-@import 'tools/ToolGroupTool.less';
-
-@import 'ToolGroup.less';
-@import 'toolgroups/BarToolGroup.less';
-@import 'toolgroups/PopupToolGroup.less';
-@import 'toolgroups/ListToolGroup.less';
-@import 'toolgroups/MenuToolGroup.less';
-
-@import 'Toolbar.less';
 
 @import 'Widget.less';
 @import 'widgets/SelectWidget.less';
 @import 'widgets/OptionWidget.less';
 @import 'widgets/DecoratedOptionWidget.less';
-@import 'widgets/ButtonSelectWidget.less';
 @import 'widgets/RadioSelectWidget.less';
-@import 'widgets/ButtonOptionWidget.less';
 @import 'widgets/RadioOptionWidget.less';
-
 @import 'widgets/LabelWidget.less';
 @import 'widgets/IconWidget.less';
 @import 'widgets/IndicatorWidget.less';
-
 @import 'widgets/ButtonWidget.less';
 @import 'widgets/ButtonGroupWidget.less';
-
-@import 'widgets/ToggleWidget.less';
-@import 'widgets/ToggleButtonWidget.less';
-@import 'widgets/ToggleSwitchWidget.less';
-
-@import 'widgets/ProgressBarWidget.less';
-
-@import 'widgets/ActionWidget.less';
-
 @import 'widgets/PopupWidget.less';
 @import 'widgets/PopupButtonWidget.less';
-
 @import 'widgets/InputWidget.less';
 @import 'widgets/ButtonInputWidget.less';
 @import 'widgets/CheckboxInputWidget.less';
@@ -83,30 +46,9 @@
 @import 'widgets/RadioInputWidget.less';
 @import 'widgets/RadioSelectInputWidget.less';
 @import 'widgets/TextInputWidget.less';
-
 @import 'widgets/MenuSelectWidget.less';
 @import 'widgets/MenuOptionWidget.less';
 @import 'widgets/MenuSectionOptionWidget.less';
 @import 'widgets/FloatingMenuSelectWidget.less';
 @import 'widgets/DropdownWidget.less';
-@import 'widgets/SelectFileWidget.less';
-
-@import 'widgets/OutlineSelectWidget.less';
-@import 'widgets/OutlineOptionWidget.less';
-@import 'widgets/OutlineControlsWidget.less';
-
-@import 'widgets/TabSelectWidget.less';
-@import 'widgets/TabOptionWidget.less';
-
-@import 'widgets/CapsuleMultiSelectWidget.less';
-@import 'widgets/CapsuleItemWidget.less';
 @import 'widgets/ComboBoxInputWidget.less';
-@import 'widgets/SearchWidget.less';
-@import 'widgets/NumberInputWidget.less';
-
-@import 'Window.less';
-@import 'Dialog.less';
-@import 'dialogs/MessageDialog.less';
-@import 'dialogs/ProcessDialog.less';
-
-@import 'WindowManager.less';
diff --git a/src/styles/theme.less b/src/styles/empty-theme.less
similarity index 100%
rename from src/styles/theme.less
rename to src/styles/empty-theme.less
diff --git a/src/styles/toolbars.less b/src/styles/toolbars.less
new file mode 100644
index 0000000..5f2ad49
--- /dev/null
+++ b/src/styles/toolbars.less
@@ -0,0 +1,17 @@
+//
+// Styles for the 'toolbars' module.
+//
+
+@import 'common';
+
+@import 'Tool.less';
+@import 'tools/PopupTool.less';
+@import 'tools/ToolGroupTool.less';
+
+@import 'ToolGroup.less';
+@import 'toolgroups/BarToolGroup.less';
+@import 'toolgroups/PopupToolGroup.less';
+@import 'toolgroups/ListToolGroup.less';
+@import 'toolgroups/MenuToolGroup.less';
+
+@import 'Toolbar.less';
diff --git a/src/styles/widgets.less b/src/styles/widgets.less
new file mode 100644
index 0000000..60bdd83
--- /dev/null
+++ b/src/styles/widgets.less
@@ -0,0 +1,37 @@
+//
+// Styles for the 'widgets' module.
+//
+
+@import 'common';
+
+@import 'elements/DraggableElement.less';
+@import 'elements/DraggableGroupElement.less';
+@import 'elements/LookupElement.less';
+
+@import 'layouts/BookletLayout.less';
+@import 'layouts/IndexLayout.less';
+@import 'layouts/MenuLayout.less';
+@import 'layouts/CardLayout.less';
+@import 'layouts/PageLayout.less';
+@import 'layouts/StackLayout.less';
+
+@import 'widgets/ButtonSelectWidget.less';
+@import 'widgets/ButtonOptionWidget.less';
+@import 'widgets/ToggleWidget.less';
+@import 'widgets/ToggleButtonWidget.less';
+@import 'widgets/ToggleSwitchWidget.less';
+@import 'widgets/ProgressBarWidget.less';
+
+@import 'widgets/SelectFileWidget.less';
+
+@import 'widgets/OutlineSelectWidget.less';
+@import 'widgets/OutlineOptionWidget.less';
+@import 'widgets/OutlineControlsWidget.less';
+
+@import 'widgets/TabSelectWidget.less';
+@import 'widgets/TabOptionWidget.less';
+
+@import 'widgets/CapsuleMultiSelectWidget.less';
+@import 'widgets/CapsuleItemWidget.less';
+@import 'widgets/SearchWidget.less';
+@import 'widgets/NumberInputWidget.less';
diff --git a/src/styles/windows.less b/src/styles/windows.less
new file mode 100644
index 0000000..fbd8695
--- /dev/null
+++ b/src/styles/windows.less
@@ -0,0 +1,14 @@
+//
+// Styles for the 'windows' module.
+//
+
+@import 'common';
+
+@import 'widgets/ActionWidget.less';
+
+@import 'Window.less';
+@import 'Dialog.less';
+@import 'dialogs/MessageDialog.less';
+@import 'dialogs/ProcessDialog.less';
+
+@import 'WindowManager.less';
diff --git a/src/themes/apex/common.less b/src/themes/apex/common.less
index ee8f043..2f4a8c9 100644
--- a/src/themes/apex/common.less
+++ b/src/themes/apex/common.less
@@ -1,6 +1,3 @@
-// Base variables and mixins
-@import '../../styles/common';
-
 // Theme variables
 @background-color-main: #fff;
 
diff --git a/src/themes/apex/core.less b/src/themes/apex/core.less
deleted file mode 100644
index 1c83a94..0000000
--- a/src/themes/apex/core.less
+++ /dev/null
@@ -1,12 +0,0 @@
-// Base and theme variables and mixins
-@import 'common';
-
-// Theme rules
-@import 'elements';
-@import 'layouts';
-@import 'tools';
-@import 'widgets';
-@import 'windows';
-
-// Base rules
-@import '../../styles/core';
diff --git a/src/themes/apex/theme.less b/src/themes/apex/theme.less
new file mode 100644
index 0000000..0ad347a
--- /dev/null
+++ b/src/themes/apex/theme.less
@@ -0,0 +1,12 @@
+// Theme entry point. Everything required to compile this theme should be 
included here.
+// This file is in turn included when building the theme.
+
+// Base and theme variables and mixins
+@import 'common';
+
+// Theme rules
+@import 'elements';
+@import 'layouts';
+@import 'tools';
+@import 'widgets';
+@import 'windows';
diff --git a/src/themes/blank/common.less b/src/themes/blank/common.less
index f9ec869..ebbb437 100644
--- a/src/themes/blank/common.less
+++ b/src/themes/blank/common.less
@@ -1,6 +1,3 @@
-// Base variables and mixins
-@import '../../styles/common';
-
 // Theme variables
 
 @oo-ui-default-image-path: 'themes/blank/images';
diff --git a/src/themes/blank/core.less b/src/themes/blank/core.less
deleted file mode 100644
index 1c83a94..0000000
--- a/src/themes/blank/core.less
+++ /dev/null
@@ -1,12 +0,0 @@
-// Base and theme variables and mixins
-@import 'common';
-
-// Theme rules
-@import 'elements';
-@import 'layouts';
-@import 'tools';
-@import 'widgets';
-@import 'windows';
-
-// Base rules
-@import '../../styles/core';
diff --git a/src/themes/blank/theme.less b/src/themes/blank/theme.less
new file mode 100644
index 0000000..680986a
--- /dev/null
+++ b/src/themes/blank/theme.less
@@ -0,0 +1,12 @@
+// Theme entry point. Everything required to compile this theme should be 
included here.
+// This file is in turn included when building the theme.
+//
+// Base and theme variables and mixins
+@import 'common';
+
+// Theme rules
+@import 'elements';
+@import 'layouts';
+@import 'tools';
+@import 'widgets';
+@import 'windows';
diff --git a/src/themes/mediawiki/common.less b/src/themes/mediawiki/common.less
index ef02568..278dae4 100644
--- a/src/themes/mediawiki/common.less
+++ b/src/themes/mediawiki/common.less
@@ -1,6 +1,3 @@
-// Base variables and mixins
-@import '../../styles/common';
-
 // Theme variables
 
 @oo-ui-default-image-path: 'themes/mediawiki/images';
diff --git a/src/themes/mediawiki/core.less b/src/themes/mediawiki/core.less
deleted file mode 100644
index 1c83a94..0000000
--- a/src/themes/mediawiki/core.less
+++ /dev/null
@@ -1,12 +0,0 @@
-// Base and theme variables and mixins
-@import 'common';
-
-// Theme rules
-@import 'elements';
-@import 'layouts';
-@import 'tools';
-@import 'widgets';
-@import 'windows';
-
-// Base rules
-@import '../../styles/core';
diff --git a/src/themes/mediawiki/theme.less b/src/themes/mediawiki/theme.less
new file mode 100644
index 0000000..0ad347a
--- /dev/null
+++ b/src/themes/mediawiki/theme.less
@@ -0,0 +1,12 @@
+// Theme entry point. Everything required to compile this theme should be 
included here.
+// This file is in turn included when building the theme.
+
+// Base and theme variables and mixins
+@import 'common';
+
+// Theme rules
+@import 'elements';
+@import 'layouts';
+@import 'tools';
+@import 'widgets';
+@import 'windows';

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I647e2b55cea5c37b4944683b1416bc60b7aa7eb3
Gerrit-PatchSet: 5
Gerrit-Project: oojs/ui
Gerrit-Branch: master
Gerrit-Owner: Bartosz Dziewoński <[email protected]>
Gerrit-Reviewer: Bartosz Dziewoński <[email protected]>
Gerrit-Reviewer: Jforrester <[email protected]>
Gerrit-Reviewer: Ori.livneh <[email protected]>
Gerrit-Reviewer: VolkerE <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to