summaryrefslogtreecommitdiff
path: root/skins/vector
diff options
context:
space:
mode:
Diffstat (limited to 'skins/vector')
-rw-r--r--skins/vector/beta/screen.less75
-rw-r--r--skins/vector/beta/variables.less37
-rw-r--r--skins/vector/collapsibleNav.js121
-rw-r--r--skins/vector/collapsibleNav.less91
-rw-r--r--skins/vector/collapsibleTabs.js210
-rw-r--r--skins/vector/externalLinks.less75
-rw-r--r--skins/vector/images/arrow-collapsed-ltr.pngbin0 -> 143 bytes
-rw-r--r--skins/vector/images/arrow-collapsed-ltr.svg37
-rw-r--r--skins/vector/images/arrow-collapsed-rtl.pngbin0 -> 145 bytes
-rw-r--r--skins/vector/images/arrow-collapsed-rtl.svg37
-rw-r--r--skins/vector/images/arrow-down-focus-icon.svg37
-rw-r--r--skins/vector/images/arrow-down-icon.svg37
-rw-r--r--skins/vector/images/arrow-expanded.pngbin0 -> 145 bytes
-rw-r--r--skins/vector/images/arrow-expanded.svg37
-rw-r--r--skins/vector/images/edit-icon.pngbin277 -> 276 bytes
-rw-r--r--skins/vector/images/external-link-ltr-icon.pngbin143 -> 141 bytes
-rw-r--r--skins/vector/images/external-link-rtl-icon.pngbin141 -> 141 bytes
-rw-r--r--skins/vector/images/mail-icon.pngbin197 -> 197 bytes
-rw-r--r--skins/vector/images/news-icon.pngbin180 -> 180 bytes
-rw-r--r--skins/vector/images/page-fade.pngbin115 -> 115 bytes
-rw-r--r--skins/vector/images/portal-break-ltr.pngbin169 -> 168 bytes
-rw-r--r--skins/vector/images/preferences-break.pngbin205 -> 103 bytes
-rw-r--r--skins/vector/images/tab-break.pngbin125 -> 125 bytes
-rw-r--r--skins/vector/images/talk-icon.pngbin173 -> 173 bytes
-rw-r--r--skins/vector/images/user-icon.svg424
-rw-r--r--skins/vector/images/video-icon.pngbin162 -> 162 bytes
-rw-r--r--skins/vector/screen-hd.less (renamed from skins/vector/screen-hd.css)4
-rw-r--r--skins/vector/screen.less (renamed from skins/vector/screen.css)376
-rw-r--r--skins/vector/styles-beta.less13
-rw-r--r--skins/vector/styles.less11
-rw-r--r--skins/vector/variables.less37
-rw-r--r--skins/vector/vector.js52
32 files changed, 1450 insertions, 261 deletions
diff --git a/skins/vector/beta/screen.less b/skins/vector/beta/screen.less
new file mode 100644
index 00000000..6d56cd5c
--- /dev/null
+++ b/skins/vector/beta/screen.less
@@ -0,0 +1,75 @@
+/* Content */
+#content {
+ line-height: 1.5em;
+ .mw-editsection {
+ font-family: @content-font-family;
+ }
+
+ h1,
+ #firstHeading {
+ font-family: @content-heading-font-family;
+ font-size: 1.833em;
+ line-height: 22pt;
+ padding: 0;
+ margin-bottom: 4pt;
+ }
+
+ h2 {
+ font-size: 1.5em;
+ line-height: 22pt;
+ }
+
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ font-family: @content-heading-font-family;
+ padding: 0;
+ margin-bottom: 4pt;
+ margin-top: 14pt;
+ }
+
+ h3 {
+ font-size: 1.17em;
+ line-height: 22pt;
+ }
+
+ h3,
+ h4 {
+ font-weight: bold;
+ }
+
+ h4,
+ h5,
+ h6 {
+ font-size: 100%; /* (reset) */
+ }
+
+ h6 {
+ font-style: italic;
+ }
+
+ p {
+ margin-bottom: 8pt;
+ }
+
+ // FIXME: this is hacky
+ #toc h2 {
+ font-size: 100%;
+ }
+}
+
+/* Personal menu */
+#p-personal a {
+ color: #555;
+}
+
+/* Main menu */
+div#mw-panel div.portal {
+ margin-left: 1.25em;
+ h3 {
+ margin: 0;
+ line-height: 1;
+ }
+}
diff --git a/skins/vector/beta/variables.less b/skins/vector/beta/variables.less
new file mode 100644
index 00000000..08e662dc
--- /dev/null
+++ b/skins/vector/beta/variables.less
@@ -0,0 +1,37 @@
+@html-font-size: 90%;
+
+@body-font-size: inherit;
+
+// Page content
+@content-font-family: "Helvetica Neue", "Helvetica", "Nimbus Sans L", "Arial", "Liberation Sans", sans-serif;
+@content-font-color: #252525;
+@content-font-size: 0.9em;
+@content-line-height: inherit;
+@content-padding: 1em;
+@content-heading-font-size: 1.6em;
+@content-heading-font-family: Georgia, "DejaVu Serif", serif;
+
+// Common menu
+@menu-link-color: #555;
+
+// Main menu
+@menu-main-font-size: 0.82em;
+@menu-main-heading-font-size: 100%;
+@menu-main-heading-padding: 5px 0;
+
+@menu-main-body-font-size: inherit;
+@menu-main-body-link-color: inherit;
+@menu-main-body-link-visited-color: inherit;
+@menu-main-body-margin: 0;
+@menu-main-body-padding: 0 0 10px;
+@menu-main-logo-left: 1.6em;
+
+// Personal menu
+@menu-personal-font-size: 0.75em;
+
+// Collapsible nav
+@collapsible-nav-heading-color: #555;
+@collapsible-nav-heading-collapsed-color: inherit;
+
+@collapsible-nav-heading-padding: 4px 0 3px 1.5em;
+@collapsible-nav-body-margin: 0 0 0 1.25em;
diff --git a/skins/vector/collapsibleNav.js b/skins/vector/collapsibleNav.js
new file mode 100644
index 00000000..67313c95
--- /dev/null
+++ b/skins/vector/collapsibleNav.js
@@ -0,0 +1,121 @@
+/**
+ * Collapsible navigation for Vector
+ */
+( function ( mw, $ ) {
+ 'use strict';
+ var map;
+
+ // Use the same function for all navigation headings - don't repeat
+ function toggle( $element ) {
+ $.cookie(
+ 'vector-nav-' + $element.parent().attr( 'id' ),
+ $element.parent().is( '.collapsed' ),
+ { 'expires': 30, 'path': '/' }
+ );
+ $element
+ .parent()
+ .toggleClass( 'expanded' )
+ .toggleClass( 'collapsed' )
+ .find( '.body' )
+ .slideToggle( 'fast' );
+ }
+
+ /* Browser Support */
+
+ map = {
+ // Left-to-right languages
+ ltr: {
+ // Collapsible Nav is broken in Opera < 9.6 and Konqueror < 4
+ opera: [['>=', 9.6]],
+ konqueror: [['>=', 4.0]],
+ blackberry: false,
+ ipod: false,
+ iphone: false,
+ ps3: false
+ },
+ // Right-to-left languages
+ rtl: {
+ opera: [['>=', 9.6]],
+ konqueror: [['>=', 4.0]],
+ blackberry: false,
+ ipod: false,
+ iphone: false,
+ ps3: false
+ }
+ };
+ if ( !$.client.test( map ) ) {
+ return true;
+ }
+
+ $( function ( $ ) {
+ var $headings, tabIndex;
+
+ /* General Portal Modification */
+
+ // Always show the first portal
+ $( '#mw-panel > .portal:first' ).addClass( 'first persistent' );
+ // Apply a class to the entire panel to activate styles
+ $( '#mw-panel' ).addClass( 'collapsible-nav' );
+ // Use cookie data to restore preferences of what to show and hide
+ $( '#mw-panel > .portal:not(.persistent)' )
+ .each( function ( i ) {
+ var id = $(this).attr( 'id' ),
+ state = $.cookie( 'vector-nav-' + id );
+ // Add anchor tag to heading for better accessibility
+ $( this ).find( 'h3' ).wrapInner( $( '<a href="#"></a>' ).click( false ) );
+ // In the case that we are not showing the new version, let's show the languages by default
+ if (
+ state === 'true' ||
+ ( state === null && i < 1 ) ||
+ ( state === null && id === 'p-lang' )
+ ) {
+ $(this)
+ .addClass( 'expanded' )
+ .removeClass( 'collapsed' )
+ .find( '.body' )
+ .hide() // bug 34450
+ .show();
+ } else {
+ $(this)
+ .addClass( 'collapsed' )
+ .removeClass( 'expanded' );
+ }
+ // Re-save cookie
+ if ( state !== null ) {
+ $.cookie( 'vector-nav-' + $(this).attr( 'id' ), state, { 'expires': 30, 'path': '/' } );
+ }
+ } );
+
+ /* Tab Indexing */
+
+ $headings = $( '#mw-panel > .portal:not(.persistent) > h3' );
+
+ // Get the highest tab index
+ tabIndex = $( document ).lastTabIndex() + 1;
+
+ // Fix the search not having a tabindex
+ $( '#searchInput' ).attr( 'tabindex', tabIndex++ );
+
+ // Make it keyboard accessible
+ $headings.attr( 'tabindex', function () {
+ return tabIndex++;
+ });
+
+ // Toggle the selected menu's class and expand or collapse the menu
+ $( '#mw-panel' )
+ .delegate( '.portal:not(.persistent) > h3', 'keydown', function ( e ) {
+ // Make the space and enter keys act as a click
+ if ( e.which === 13 /* Enter */ || e.which === 32 /* Space */ ) {
+ toggle( $(this) );
+ }
+ } )
+ .delegate( '.portal:not(.persistent) > h3', 'mousedown', function ( e ) {
+ if ( e.which !== 3 ) { // Right mouse click
+ toggle( $(this) );
+ $(this).blur();
+ }
+ return false;
+ } );
+ });
+
+}( mediaWiki, jQuery ) );
diff --git a/skins/vector/collapsibleNav.less b/skins/vector/collapsibleNav.less
new file mode 100644
index 00000000..e6f5c9aa
--- /dev/null
+++ b/skins/vector/collapsibleNav.less
@@ -0,0 +1,91 @@
+/**
+ * LESS Stylesheet for collapsible nav
+ */
+@import "mediawiki.mixins.less";
+
+#mw-panel.collapsible-nav {
+ .portal {
+ background-position: left top;
+ background-repeat: no-repeat;
+ .background-image('images/portal-break.png');
+ padding: 0.25em 0 !important;
+ margin: -11px 9px 10px 11px;
+
+ h3 {
+ font-size: @menu-main-heading-font-size;
+ color: @collapsible-nav-heading-color;
+ font-weight: normal;
+ background-position: left center;
+ background-repeat: no-repeat;
+ .background-image-svg('images/arrow-expanded.svg', 'images/arrow-expanded.png');
+ padding: @collapsible-nav-heading-padding;
+ margin-bottom: 0;
+
+ &:hover {
+ cursor: pointer;
+ text-decoration: none;
+ }
+
+ a {
+ color: @collapsible-nav-heading-color;
+ text-decoration: none;
+ }
+ }
+
+ .body {
+ margin: @collapsible-nav-body-margin;
+ background-image: none !important;
+ padding-top: 0;
+ display: none;
+
+ ul {
+ li {
+ padding: 0.25em 0;
+ }
+ }
+ }
+
+
+ /* First */
+ &.first {
+ background-image: none;
+ margin-top: 0;
+ h3 {
+ display: none;
+ }
+ }
+
+ /* Persistent */
+ &.persistent {
+ .body {
+ display: block;
+ margin-left: 0.5em;
+ }
+
+ h3 {
+ background-image: none !important;
+ padding-left: 0.7em;
+ cursor: default;
+ }
+ }
+
+ /* Collapsed */
+ &.collapsed {
+ h3 {
+ color: @collapsible-nav-heading-collapsed-color;
+ background-position: left center;
+ background-repeat: no-repeat;
+ .background-image-svg('images/arrow-collapsed-ltr.svg', 'images/arrow-collapsed-ltr.png');
+ margin-bottom: 0;
+
+ &:hover {
+ text-decoration: underline;
+ }
+
+ a {
+ color: @collapsible-nav-heading-collapsed-color;
+ }
+ }
+ }
+ }
+}
diff --git a/skins/vector/collapsibleTabs.js b/skins/vector/collapsibleTabs.js
new file mode 100644
index 00000000..e3c2c519
--- /dev/null
+++ b/skins/vector/collapsibleTabs.js
@@ -0,0 +1,210 @@
+/**
+ * Collapsible tabs jQuery Plugin
+ */
+( function ( $ ) {
+ var rtl = $( 'html' ).attr( 'dir' ) === 'rtl';
+ $.fn.collapsibleTabs = function ( options ) {
+ // return if the function is called on an empty jquery object
+ if ( !this.length ) {
+ return this;
+ }
+ // Merge options into the defaults
+ var $settings = $.extend( {}, $.collapsibleTabs.defaults, options );
+
+ this.each( function () {
+ var $el = $( this );
+ // add the element to our array of collapsible managers
+ $.collapsibleTabs.instances = ( $.collapsibleTabs.instances.length === 0 ?
+ $el : $.collapsibleTabs.instances.add( $el ) );
+ // attach the settings to the elements
+ $el.data( 'collapsibleTabsSettings', $settings );
+ // attach data to our collapsible elements
+ $el.children( $settings.collapsible ).each( function () {
+ $.collapsibleTabs.addData( $( this ) );
+ } );
+ } );
+
+ // if we haven't already bound our resize hanlder, bind it now
+ if ( !$.collapsibleTabs.boundEvent ) {
+ $( window )
+ .delayedBind( 500, 'resize', function () {
+ $.collapsibleTabs.handleResize();
+ } );
+ }
+ // call our resize handler to setup the page
+ $.collapsibleTabs.handleResize();
+ return this;
+ };
+ /**
+ * Returns the amount of horizontal distance between the two tabs groups
+ * (#left-navigation and #right-navigation), in pixels. If negative, this
+ * means that the tabs overlap, and the value is the width of overlapping
+ * parts.
+ *
+ * Used in default expandCondition and collapseCondition.
+ *
+ * @return {Numeric} distance/overlap in pixels
+ */
+ function calculateTabDistance() {
+ var $leftTab, $rightTab, leftEnd, rightStart;
+
+ // In RTL, #right-navigation is actually on the left and vice versa.
+ // Hooray for descriptive naming.
+ if ( !rtl ) {
+ $leftTab = $( '#left-navigation' );
+ $rightTab = $( '#right-navigation' );
+ } else {
+ $leftTab = $( '#right-navigation' );
+ $rightTab = $( '#left-navigation' );
+ }
+
+ leftEnd = $leftTab.offset().left + $leftTab.width();
+ rightStart = $rightTab.offset().left;
+
+ return rightStart - leftEnd;
+ }
+ $.collapsibleTabs = {
+ instances: [],
+ boundEvent: null,
+ defaults: {
+ expandedContainer: '#p-views ul',
+ collapsedContainer: '#p-cactions ul',
+ collapsible: 'li.collapsible',
+ shifting: false,
+ expandCondition: function ( eleWidth ) {
+ // If there's at least eleWidth pixels free space, expand.
+ return calculateTabDistance() >= eleWidth;
+ },
+ collapseCondition: function () {
+ // If there's an overlap, collapse.
+ return calculateTabDistance() < 0;
+ }
+ },
+ addData: function ( $collapsible ) {
+ var $settings = $collapsible.parent().data( 'collapsibleTabsSettings' );
+ if ( $settings !== null ) {
+ $collapsible.data( 'collapsibleTabsSettings', {
+ expandedContainer: $settings.expandedContainer,
+ collapsedContainer: $settings.collapsedContainer,
+ expandedWidth: $collapsible.width(),
+ prevElement: $collapsible.prev()
+ } );
+ }
+ },
+ getSettings: function ( $collapsible ) {
+ var $settings = $collapsible.data( 'collapsibleTabsSettings' );
+ if ( $settings === undefined ) {
+ $.collapsibleTabs.addData( $collapsible );
+ $settings = $collapsible.data( 'collapsibleTabsSettings' );
+ }
+ return $settings;
+ },
+ /**
+ * @param {jQuery.Event} e
+ */
+ handleResize: function () {
+ $.collapsibleTabs.instances.each( function () {
+ var $el = $( this ),
+ data = $.collapsibleTabs.getSettings( $el );
+
+ if ( data.shifting ) {
+ return;
+ }
+
+ // if the two navigations are colliding
+ if ( $el.children( data.collapsible ).length > 0 && data.collapseCondition() ) {
+
+ $el.trigger( 'beforeTabCollapse' );
+ // move the element to the dropdown menu
+ $.collapsibleTabs.moveToCollapsed( $el.children( data.collapsible + ':last' ) );
+ }
+
+ // if there are still moveable items in the dropdown menu,
+ // and there is sufficient space to place them in the tab container
+ if ( $( data.collapsedContainer + ' ' + data.collapsible ).length > 0 &&
+ data.expandCondition( $.collapsibleTabs.getSettings( $( data.collapsedContainer ).children(
+ data.collapsible + ':first' ) ).expandedWidth ) ) {
+ //move the element from the dropdown to the tab
+ $el.trigger( 'beforeTabExpand' );
+ $.collapsibleTabs
+ .moveToExpanded( data.collapsedContainer + ' ' + data.collapsible + ':first' );
+ }
+ } );
+ },
+ moveToCollapsed: function ( ele ) {
+ var data, expContainerSettings, target,
+ $moving = $( ele );
+
+ data = $.collapsibleTabs.getSettings( $moving );
+ if ( !data ) {
+ return;
+ }
+ expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+ if ( !expContainerSettings ) {
+ return;
+ }
+ expContainerSettings.shifting = true;
+
+ // Remove the element from where it's at and put it in the dropdown menu
+ target = data.collapsedContainer;
+ $moving.css( 'position', 'relative' )
+ .css( ( rtl ? 'left' : 'right' ), 0 )
+ .animate( { width: '1px' }, 'normal', function () {
+ var data, expContainerSettings;
+ $( this ).hide();
+ // add the placeholder
+ $( '<span class="placeholder" style="display: none;"></span>' ).insertAfter( this );
+ // XXX: 'data' is undefined here, should the 'data' from the outer scope have
+ // a different name?
+ $( this ).detach().prependTo( target ).data( 'collapsibleTabsSettings', data );
+ $( this ).attr( 'style', 'display: list-item;' );
+ data = $.collapsibleTabs.getSettings( $( ele ) );
+ if ( data ) {
+ expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+ if ( expContainerSettings ) {
+ expContainerSettings.shifting = false;
+ $.collapsibleTabs.handleResize();
+ }
+ }
+ } );
+ },
+ moveToExpanded: function ( ele ) {
+ var data, expContainerSettings, $target, expandedWidth,
+ $moving = $( ele );
+
+ data = $.collapsibleTabs.getSettings( $moving );
+ if ( !data ) {
+ return;
+ }
+ expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+ if ( !expContainerSettings ) {
+ return;
+ }
+ expContainerSettings.shifting = true;
+
+ // grab the next appearing placeholder so we can use it for replacing
+ $target = $( data.expandedContainer ).find( 'span.placeholder:first' );
+ expandedWidth = data.expandedWidth;
+ $moving.css( 'position', 'relative' ).css( ( rtl ? 'right' : 'left' ), 0 ).css( 'width', '1px' );
+ $target.replaceWith(
+ $moving
+ .detach()
+ .css( 'width', '1px' )
+ .data( 'collapsibleTabsSettings', data )
+ .animate( { width: expandedWidth + 'px' }, 'normal', function () {
+ $( this ).attr( 'style', 'display: block;' );
+ var data, expContainerSettings;
+ data = $.collapsibleTabs.getSettings( $( this ) );
+ if ( data ) {
+ expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+ if ( expContainerSettings ) {
+ expContainerSettings.shifting = false;
+ $.collapsibleTabs.handleResize();
+ }
+ }
+ } )
+ );
+ }
+ };
+
+}( jQuery ) );
diff --git a/skins/vector/externalLinks.less b/skins/vector/externalLinks.less
new file mode 100644
index 00000000..5b02abbd
--- /dev/null
+++ b/skins/vector/externalLinks.less
@@ -0,0 +1,75 @@
+// FIXME: This size of this CSS is ridiculous. Please refactor (see bug 54604)
+@import "mediawiki.mixins.less";
+
+div#content a.external {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image('images/external-link-ltr-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href ^="https://"],
+.link-https {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image('images/lock-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href ^="mailto:"],
+.link-mailto {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image('images/mail-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href ^="news:"] {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image('images/news-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href ^="ftp://"],
+.link-ftp {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image('images/file-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href ^="irc://"],
+div#content a.external[href ^="ircs://"],
+.link-irc {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image('images/talk-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href $=".ogg"], div#content a.external[href $=".OGG"],
+div#content a.external[href $=".mid"], div#content a.external[href $=".MID"],
+div#content a.external[href $=".midi"], div#content a.external[href $=".MIDI"],
+div#content a.external[href $=".mp3"], div#content a.external[href $=".MP3"],
+div#content a.external[href $=".wav"], div#content a.external[href $=".WAV"],
+div#content a.external[href $=".wma"], div#content a.external[href $=".WMA"],
+.link-audio {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image('images/audio-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href $=".ogm"], div#content a.external[href $=".OGM"],
+div#content a.external[href $=".avi"], div#content a.external[href $=".AVI"],
+div#content a.external[href $=".mpeg"], div#content a.external[href $=".MPEG"],
+div#content a.external[href $=".mpg"], div#content a.external[href $=".MPG"],
+.link-video {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image('images/video-icon.png');
+ padding-right: 13px;
+}
+div#content a.external[href $=".pdf"], div#content a.external[href $=".PDF"],
+div#content a.external[href *=".pdf#"], div#content a.external[href *=".PDF#"],
+div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"],
+.link-document {
+ background-position: center right;
+ background-repeat: no-repeat;
+ .background-image('images/document-icon.png');
+ padding-right: 13px;
+}
diff --git a/skins/vector/images/arrow-collapsed-ltr.png b/skins/vector/images/arrow-collapsed-ltr.png
new file mode 100644
index 00000000..063ac6f7
--- /dev/null
+++ b/skins/vector/images/arrow-collapsed-ltr.png
Binary files differ
diff --git a/skins/vector/images/arrow-collapsed-ltr.svg b/skins/vector/images/arrow-collapsed-ltr.svg
new file mode 100644
index 00000000..d0c4729c
--- /dev/null
+++ b/skins/vector/images/arrow-collapsed-ltr.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="16"
+ height="16"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-1036.0288)"
+ id="layer1">
+ <path
+ d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
+ transform="matrix(0,-2.7307791,1.576616,0,0.05143855,1066.4148)"
+ id="path2985"
+ style="fill:#797979;fill-opacity:1;stroke:none" />
+ </g>
+</svg>
diff --git a/skins/vector/images/arrow-collapsed-rtl.png b/skins/vector/images/arrow-collapsed-rtl.png
new file mode 100644
index 00000000..c3462182
--- /dev/null
+++ b/skins/vector/images/arrow-collapsed-rtl.png
Binary files differ
diff --git a/skins/vector/images/arrow-collapsed-rtl.svg b/skins/vector/images/arrow-collapsed-rtl.svg
new file mode 100644
index 00000000..8c5e04b9
--- /dev/null
+++ b/skins/vector/images/arrow-collapsed-rtl.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="16"
+ height="16"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-1036.0288)"
+ id="layer1">
+ <path
+ d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
+ transform="matrix(0,2.7307791,-1.576616,0,15.948561,1021.6428)"
+ id="path2985"
+ style="fill:#797979;fill-opacity:1;stroke:none" />
+ </g>
+</svg>
diff --git a/skins/vector/images/arrow-down-focus-icon.svg b/skins/vector/images/arrow-down-focus-icon.svg
new file mode 100644
index 00000000..f2edf263
--- /dev/null
+++ b/skins/vector/images/arrow-down-focus-icon.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="22"
+ height="16"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-1036.3622)"
+ id="layer1">
+ <path
+ d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
+ transform="matrix(2.7307791,0,0,1.576616,-11.885956,1036.4136)"
+ id="path2985"
+ style="fill:#929292;fill-opacity:1;stroke:none" />
+ </g>
+</svg>
diff --git a/skins/vector/images/arrow-down-icon.svg b/skins/vector/images/arrow-down-icon.svg
new file mode 100644
index 00000000..9218ff28
--- /dev/null
+++ b/skins/vector/images/arrow-down-icon.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="22"
+ height="16"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-1036.3622)"
+ id="layer1">
+ <path
+ d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
+ transform="matrix(2.7307791,0,0,1.576616,-11.885956,1036.4136)"
+ id="path2985"
+ style="fill:#797979;fill-opacity:1;stroke:none" />
+ </g>
+</svg>
diff --git a/skins/vector/images/arrow-expanded.png b/skins/vector/images/arrow-expanded.png
new file mode 100644
index 00000000..0221028e
--- /dev/null
+++ b/skins/vector/images/arrow-expanded.png
Binary files differ
diff --git a/skins/vector/images/arrow-expanded.svg b/skins/vector/images/arrow-expanded.svg
new file mode 100644
index 00000000..60704d27
--- /dev/null
+++ b/skins/vector/images/arrow-expanded.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="16"
+ height="16"
+ id="svg2">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-1036.3622)"
+ id="layer1">
+ <path
+ d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
+ transform="matrix(2.7307791,0,0,1.576616,-14.385956,1036.4136)"
+ id="path2985"
+ style="fill:#797979;fill-opacity:1;stroke:none" />
+ </g>
+</svg>
diff --git a/skins/vector/images/edit-icon.png b/skins/vector/images/edit-icon.png
index 462ca643..43e46919 100644
--- a/skins/vector/images/edit-icon.png
+++ b/skins/vector/images/edit-icon.png
Binary files differ
diff --git a/skins/vector/images/external-link-ltr-icon.png b/skins/vector/images/external-link-ltr-icon.png
index acf260fc..63083831 100644
--- a/skins/vector/images/external-link-ltr-icon.png
+++ b/skins/vector/images/external-link-ltr-icon.png
Binary files differ
diff --git a/skins/vector/images/external-link-rtl-icon.png b/skins/vector/images/external-link-rtl-icon.png
index 7d5ee375..5313234e 100644
--- a/skins/vector/images/external-link-rtl-icon.png
+++ b/skins/vector/images/external-link-rtl-icon.png
Binary files differ
diff --git a/skins/vector/images/mail-icon.png b/skins/vector/images/mail-icon.png
index 9823d72c..0d93a2f8 100644
--- a/skins/vector/images/mail-icon.png
+++ b/skins/vector/images/mail-icon.png
Binary files differ
diff --git a/skins/vector/images/news-icon.png b/skins/vector/images/news-icon.png
index ade1a376..6f27054b 100644
--- a/skins/vector/images/news-icon.png
+++ b/skins/vector/images/news-icon.png
Binary files differ
diff --git a/skins/vector/images/page-fade.png b/skins/vector/images/page-fade.png
index 1436cda0..b4a60342 100644
--- a/skins/vector/images/page-fade.png
+++ b/skins/vector/images/page-fade.png
Binary files differ
diff --git a/skins/vector/images/portal-break-ltr.png b/skins/vector/images/portal-break-ltr.png
index cec17ea1..20bf3668 100644
--- a/skins/vector/images/portal-break-ltr.png
+++ b/skins/vector/images/portal-break-ltr.png
Binary files differ
diff --git a/skins/vector/images/preferences-break.png b/skins/vector/images/preferences-break.png
index e59f5783..b5293082 100644
--- a/skins/vector/images/preferences-break.png
+++ b/skins/vector/images/preferences-break.png
Binary files differ
diff --git a/skins/vector/images/tab-break.png b/skins/vector/images/tab-break.png
index c03c72e4..6d37af5b 100644
--- a/skins/vector/images/tab-break.png
+++ b/skins/vector/images/tab-break.png
Binary files differ
diff --git a/skins/vector/images/talk-icon.png b/skins/vector/images/talk-icon.png
index c4434351..0332054e 100644
--- a/skins/vector/images/talk-icon.png
+++ b/skins/vector/images/talk-icon.png
Binary files differ
diff --git a/skins/vector/images/user-icon.svg b/skins/vector/images/user-icon.svg
new file mode 100644
index 00000000..767d5107
--- /dev/null
+++ b/skins/vector/images/user-icon.svg
@@ -0,0 +1,424 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.1"
+ width="12"
+ height="13.837458"
+ id="svg2108">
+ <metadata
+ id="metadata68">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs3">
+ <linearGradient
+ id="linearGradient4356">
+ <stop
+ id="stop4358"
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4360"
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4344">
+ <stop
+ id="stop4346"
+ style="stop-color:#727e0a;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4348"
+ style="stop-color:#5b6508;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4338">
+ <stop
+ id="stop4340"
+ style="stop-color:#e9b15e;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4342"
+ style="stop-color:#966416;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4163">
+ <stop
+ id="stop4165"
+ style="stop-color:#3b74bc;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4167"
+ style="stop-color:#2d5990;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3824">
+ <stop
+ id="stop3826"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3828"
+ style="stop-color:#c9c9c9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3816">
+ <stop
+ id="stop3818"
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3820"
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3800">
+ <stop
+ id="stop3802"
+ style="stop-color:#f4d9b1;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3804"
+ style="stop-color:#df9725;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <radialGradient
+ cx="29.344931"
+ cy="17.064077"
+ r="9.1620579"
+ fx="29.344931"
+ fy="17.064077"
+ id="radialGradient3806"
+ xlink:href="#linearGradient3800"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="31.112698"
+ cy="19.008621"
+ r="8.6620579"
+ fx="31.112698"
+ fy="19.008621"
+ id="radialGradient3822"
+ xlink:href="#linearGradient3816"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486"
+ id="linearGradient3830"
+ xlink:href="#linearGradient3824"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="28.089741"
+ cy="27.203083"
+ r="13.56536"
+ fx="28.089741"
+ fy="27.203083"
+ id="radialGradient4169"
+ xlink:href="#linearGradient4163"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.297564,0,0,0.884831,-8.358505,4.940469)" />
+ <radialGradient
+ cx="29.344931"
+ cy="17.064077"
+ r="9.1620579"
+ fx="29.344931"
+ fy="17.064077"
+ id="radialGradient4171"
+ xlink:href="#linearGradient3800"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.787998,0,0,0.787998,6.221198,3.617627)" />
+ <linearGradient
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486"
+ id="linearGradient4175"
+ xlink:href="#linearGradient3824"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.707108,0)" />
+ <radialGradient
+ cx="31.112698"
+ cy="19.008621"
+ r="8.6620579"
+ fx="31.112698"
+ fy="19.008621"
+ id="radialGradient4179"
+ xlink:href="#linearGradient3816"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486"
+ id="linearGradient4326"
+ xlink:href="#linearGradient3824"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-12.41789,-7)" />
+ <radialGradient
+ cx="29.344931"
+ cy="17.064077"
+ r="9.1620579"
+ fx="29.344931"
+ fy="17.064077"
+ id="radialGradient4328"
+ xlink:href="#linearGradient4338"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.787998,0,0,0.787998,6.221198,3.617627)" />
+ <radialGradient
+ cx="31.112698"
+ cy="19.008621"
+ r="8.6620579"
+ fx="31.112698"
+ fy="19.008621"
+ id="radialGradient4330"
+ xlink:href="#linearGradient3816"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486"
+ id="linearGradient4332"
+ xlink:href="#linearGradient3824"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-13.125,-7)" />
+ <radialGradient
+ cx="31.112698"
+ cy="19.008621"
+ r="8.6620579"
+ fx="31.112698"
+ fy="19.008621"
+ id="radialGradient4336"
+ xlink:href="#linearGradient3816"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="16.214741"
+ cy="19.836468"
+ r="13.56536"
+ fx="16.214741"
+ fy="19.836468"
+ id="radialGradient4350"
+ xlink:href="#linearGradient4344"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.681917,0,8.233773)" />
+ <linearGradient
+ x1="20.661695"
+ y1="35.817974"
+ x2="22.626925"
+ y2="36.217758"
+ id="linearGradient4362"
+ xlink:href="#linearGradient4356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,6.231716,-2.651466)" />
+ <linearGradient
+ x1="22.686766"
+ y1="36.3904"
+ x2="21.408455"
+ y2="35.739632"
+ id="linearGradient4366"
+ xlink:href="#linearGradient4356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,55.1096,-3.945209)" />
+ <linearGradient
+ x1="20.661695"
+ y1="35.817974"
+ x2="22.626925"
+ y2="36.217758"
+ id="linearGradient4372"
+ xlink:href="#linearGradient4356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,-7.07212,-9.82492)" />
+ <linearGradient
+ x1="22.686766"
+ y1="36.3904"
+ x2="21.408455"
+ y2="35.739632"
+ id="linearGradient4374"
+ xlink:href="#linearGradient4356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,41.80576,-11.11866)" />
+ <linearGradient
+ x1="22.686766"
+ y1="36.3904"
+ x2="21.408455"
+ y2="35.739632"
+ id="linearGradient1366"
+ xlink:href="#linearGradient4356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,41.80576,-11.11866)" />
+ <linearGradient
+ x1="20.661695"
+ y1="35.817974"
+ x2="22.626925"
+ y2="36.217758"
+ id="linearGradient1369"
+ xlink:href="#linearGradient4356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,-7.07212,-9.82492)" />
+ <linearGradient
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486"
+ id="linearGradient1372"
+ xlink:href="#linearGradient3824"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-12.41789,-7)" />
+ <radialGradient
+ cx="16.214741"
+ cy="19.836468"
+ r="13.56536"
+ fx="16.214741"
+ fy="19.836468"
+ id="radialGradient1381"
+ xlink:href="#linearGradient4344"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.681917,0,8.233773)" />
+ <radialGradient
+ cx="31.112698"
+ cy="19.008621"
+ r="8.6620579"
+ fx="31.112698"
+ fy="19.008621"
+ id="radialGradient2243"
+ xlink:href="#linearGradient3816"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="28.089741"
+ cy="27.203083"
+ r="13.56536"
+ fx="28.089741"
+ fy="27.203083"
+ id="radialGradient2245"
+ xlink:href="#linearGradient4163"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.297564,0,0,0.884831,-8.358505,4.940469)" />
+ <linearGradient
+ x1="30.935921"
+ y1="29.553486"
+ x2="30.935921"
+ y2="35.803486"
+ id="linearGradient2247"
+ xlink:href="#linearGradient3824"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="31.112698"
+ cy="19.008621"
+ r="8.6620579"
+ fx="31.112698"
+ fy="19.008621"
+ id="radialGradient2249"
+ xlink:href="#linearGradient3816"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="29.344931"
+ cy="17.064077"
+ r="9.1620579"
+ fx="29.344931"
+ fy="17.064077"
+ id="radialGradient2251"
+ xlink:href="#linearGradient3800"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.787998,0,0,0.787998,6.221198,3.617627)" />
+ <linearGradient
+ x1="20.661695"
+ y1="35.817974"
+ x2="22.626925"
+ y2="36.217758"
+ id="linearGradient2253"
+ xlink:href="#linearGradient4356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,6.231716,-2.651466)" />
+ <linearGradient
+ x1="22.686766"
+ y1="36.3904"
+ x2="21.408455"
+ y2="35.739632"
+ id="linearGradient2255"
+ xlink:href="#linearGradient4356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,55.1096,-3.945209)" />
+ </defs>
+ <g
+ transform="translate(-5.0000039,-32.070112)"
+ id="layer1"
+ style="display:inline" />
+ <g
+ transform="translate(-5.0000039,-32.070112)"
+ id="layer2"
+ style="display:inline">
+ <g
+ transform="matrix(0.39012793,0,0,0.39012793,-1.0891578,28.22979)"
+ id="g2230">
+ <path
+ d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+ transform="matrix(1.77551,0,0,0.959183,-24.25322,18.77153)"
+ id="path4306"
+ style="color:#000000;fill:url(#radialGradient2243);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ d="m 25.986174,41.636039 10.606602,0 c 3.005204,0 5.980484,-1.101932 7.071067,-4.242641 1.035639,-2.982476 0.176777,-8.662058 -6.540737,-13.258252 l -12.551146,0 c -6.717514,4.24264 -7.556991,10.044831 -6.010407,13.435028 1.575595,3.45379 4.24264,4.065865 7.424621,4.065865 z"
+ id="path4308"
+ style="color:#000000;fill:url(#radialGradient2245);fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ d="m 26.693281,25.726136 c 3.18198,2.828427 4.596194,13.081476 4.596194,13.081476 0,0 1.414213,-10.253048 3.889087,-13.258252 l -8.485281,0.176776 z"
+ id="path4310"
+ style="color:#000000;fill:url(#linearGradient2247);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ d="m 28.972721,26.786797 c 0,0 -2.151323,1.660335 -1.965991,3.660533 -2.041226,-1.800794 -2.099873,-5.251524 -2.099873,-5.251524 l 4.065864,1.590991 z"
+ id="path4312"
+ style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ d="m 25.914862,40.593933 10.493447,-0.0221 c 2.639723,0 5.253161,-0.967919 6.211112,-3.726667 0.909689,-2.61976 -0.09472,-7.608614 -5.995279,-11.645837 L 25.099417,24.956264 c -5.900557,3.726667 -7.04262,8.823219 -5.662029,12.044182 1.380592,3.220963 3.395211,3.57139 6.477474,3.593487 z"
+ id="path4314"
+ style="opacity:0.21518986;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.99999976px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ d="m 33.410795,26.786797 c 0,0 2.151323,1.660335 1.965991,3.660533 2.041226,-1.800794 2.099873,-5.251524 2.099873,-5.251524 l -4.065864,1.590991 z"
+ id="path4316"
+ style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+ transform="translate(-0.125,3.5)"
+ id="path4318"
+ style="color:#000000;fill:url(#radialGradient2249);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+ id="path4320"
+ style="color:#000000;fill:url(#radialGradient2251);fill-opacity:1;fill-rule:evenodd;stroke:#c17d11;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
+ transform="matrix(0.877095,0,0,0.877095,3.823927,2.336267)"
+ id="path4322"
+ style="opacity:0.19620254;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.14012825px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ d="m 21.85179,40.775197 c -1.247607,-0.544969 -1.805994,-1.858277 -1.805994,-1.858277 0.841281,-4.069136 3.719925,-7.046216 3.719925,-7.046216 0,0 -2.279321,6.411514 -1.913931,8.904493 z"
+ id="path4354"
+ style="opacity:0.22784807;color:#000000;fill:url(#linearGradient2253);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ d="m 40.757497,39.916846 c 1.231251,-0.580978 1.80438,-2.002321 1.80438,-2.002321 -0.95912,-4.042983 -3.976149,-6.842821 -3.976149,-6.842821 0,0 2.464593,6.342602 2.171769,8.845142 z"
+ id="path4364"
+ style="opacity:0.22784807;color:#000000;fill:url(#linearGradient2255);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ </g>
+</svg>
diff --git a/skins/vector/images/video-icon.png b/skins/vector/images/video-icon.png
index e934a0ff..ed852322 100644
--- a/skins/vector/images/video-icon.png
+++ b/skins/vector/images/video-icon.png
Binary files differ
diff --git a/skins/vector/screen-hd.css b/skins/vector/screen-hd.less
index b90fd63b..5a1fc055 100644
--- a/skins/vector/screen-hd.css
+++ b/skins/vector/screen-hd.less
@@ -5,7 +5,7 @@ div#content {
padding: 1.25em 1.5em 1.5em 1.5em;
}
#p-logo {
- left: 0.5em;
+ left: @menu-main-logo-left;
}
div#footer {
margin-left: 11em;
@@ -18,7 +18,7 @@ div#footer {
margin-right: 1em;
}
#left-navigation {
- left: 11em;
+ margin-left: 11em;
}
#p-personal {
right: 1em;
diff --git a/skins/vector/screen.css b/skins/vector/screen.less
index 2e09ee17..bb4be725 100644
--- a/skins/vector/screen.css
+++ b/skins/vector/screen.less
@@ -1,39 +1,43 @@
/*
* Any rules which should not be flipped automatically in right-to-left situations should be
- * prepended with @noflip in a comment block. Images that should be embedded as base64 data-URLs
- * should be prepended with @embed in a comment block.
+ * prepended with @noflip in a comment block.
*
- * This style-sheet employs a few CSS trick to accomplish compatibility with a wide range of web
+ * This stylesheet employs a few CSS trick to accomplish compatibility with a wide range of web
* browsers. The most common trick is to use some styles in IE6 only. This is accomplished by using
* a rule that makes things work in IE6, and then following it with a rule that begins with
* "html > body" or use a child selector ">", which is ignored by IE6 because it does not support
* the child selector. You can spot this by looking for the "OVERRIDDEN BY COMPLIANT BROWSERS" and
* "IGNORED BY IE6" comments.
*/
+@import "mediawiki.mixins";
/* Framework */
+html {
+ font-size: @html-font-size;
+}
html,
body {
height: 100%;
margin: 0;
padding: 0;
- font-family: sans-serif;
- font-size: 1em;
+ font-family: @content-font-family;
}
body {
background-color: #f6f6f6;
+ font-size: @body-font-size;
}
/* Content */
div#content {
+ line-height: @content-line-height;
margin-left: 10em;
- padding: 1em;
+ padding: @content-padding;
/* Border on top, left, and bottom side */
border: 1px solid #a7d7f9;
border-right-width: 0;
/* Merge the border with tabs' one (in their background image) */
margin-top: -1px;
background-color: white;
- color: black;
+ color: @content-font-color;
direction: ltr;
}
/* Hide, but keep accessible for screen-readers */
@@ -45,8 +49,7 @@ div#content {
#mw-page-base {
height: 5em;
background-color: white;
- /* @embed */
- background-image: url(images/page-fade.png);
+ .background-image('images/page-fade.png');
background-position: bottom left;
background-repeat: repeat-x;
}
@@ -61,8 +64,7 @@ div#mw-head {
right: 0;
width: 100%;
}
-div#mw-head h3,
-div#mw-head h5 {
+div#mw-head h3 {
margin: 0;
padding: 0;
}
@@ -75,11 +77,10 @@ div.emptyPortlet {
position: absolute;
top: 0.33em;
right: 0.75em;
- /* Display on top of page tabs - bug 37158 */
- z-index: 1;
+ /* Display on top of page tabs - bugs 37158, 48078 */
+ z-index: 100;
}
-#p-personal h3,
-#p-personal h5 {
+#p-personal h3 {
display: none;
}
#p-personal ul {
@@ -88,23 +89,28 @@ div.emptyPortlet {
margin: 0;
padding-left: 10em; /* Keep from overlapping logo */
}
-/* @noflip */
#p-personal li {
line-height: 1.125em;
+ /* @noflip */
float: left;
-}
-/* This one flips! */
-#p-personal li {
margin-left: 0.75em;
margin-top: 0.5em;
- font-size: 0.75em;
+ font-size: @menu-personal-font-size;
white-space: nowrap;
}
/* Navigation Containers */
#left-navigation {
- position: absolute;
- left: 10em;
- top: 2.5em;
+ float: left;
+ margin-left: 10em;
+ margin-top: 2.5em;
+ /* When right nav would overlap left nav, it's placed below it
+ (normal CSS floats behavior). This rule ensures that no empty space
+ is shown between them due to right nav's margin-top. Page layout
+ is still broken, but at least the nav overlaps only the page title
+ instead of half the content. */
+ margin-bottom: -2.5em;
+ /* IE 6 double-margin bug fix */
+ display: inline;
}
#right-navigation {
float: right;
@@ -112,49 +118,41 @@ div.emptyPortlet {
}
/* Navigation Labels */
div.vectorTabs h3,
-div.vectorTabs h5,
-div.vectorMenu h3 span,
-div.vectorMenu h5 span {
+div.vectorMenu h3 span {
display: none;
}
/* Namespaces and Views */
-/* @noflip */
div.vectorTabs {
+ /* @noflip */
float: left;
height: 2.5em;
}
div.vectorTabs {
- /* @embed */
- background-image: url(images/tab-break.png);
+ .background-image('images/tab-break.png');
background-position: bottom left;
background-repeat: no-repeat;
padding-left: 1px;
}
-/* @noflip */
div.vectorTabs ul {
+ /* @noflip */
float: left;
-}
-div.vectorTabs ul {
height: 100%;
list-style-type: none;
list-style-image: none;
margin: 0;
padding: 0;
}
-/* @noflip */
-div.vectorTabs ul li {
- float: left;
-}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
div.vectorTabs ul li {
+ /* @noflip */
+ float: left;
line-height: 1.125em;
display: inline-block;
height: 100%;
margin: 0;
padding: 0;
background-color: #f3f3f3;
- /* @embed */
- background-image: url(images/tab-normal-fade.png);
+ .background-image('images/tab-normal-fade.png');
background-position: bottom left;
background-repeat: repeat-x;
white-space: nowrap;
@@ -164,8 +162,7 @@ div.vectorTabs ul > li {
display: block;
}
div.vectorTabs li.selected {
- /* @embed */
- background-image: url(images/tab-current-fade.png);
+ .background-image('images/tab-current-fade.png');
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
div.vectorTabs li a {
@@ -173,7 +170,7 @@ div.vectorTabs li a {
height: 1.9em;
padding-left: 0.5em;
padding-right: 0.5em;
- color: #0645ad;
+ color: @menu-link-color;
cursor: pointer;
font-size: 0.8em;
}
@@ -191,15 +188,14 @@ div.vectorTabs span a {
padding-top: 1.25em;
}
/* IGNORED BY IE6 */
-/* @noflip */
div.vectorTabs span > a {
+ /* @noflip */
float: left;
display: block;
}
div.vectorTabs span {
display: inline-block;
- /* @embed */
- background-image: url(images/tab-break.png);
+ .background-image('images/tab-break.png');
background-position: bottom right;
background-repeat: no-repeat;
}
@@ -213,43 +209,40 @@ div.vectorTabs li.new a:visited{
color: #a55858;
}
/* Variants and Actions */
-/* @noflip */
div.vectorMenu {
+ /* @noflip */
direction: ltr;
+ /* @noflip */
float: left;
- /* @embed */
- background-image: url(images/arrow-down-icon.png);
+ /* SVG support using a transparent gradient to guarantee cross-browser
+ * compatibility (browsers able to understand gradient syntax support also SVG) */
+ .background-image-svg('images/arrow-down-icon.svg', 'images/arrow-down-icon.png');
+ /* @noflip */
background-position: 100% 60%;
background-repeat: no-repeat;
cursor: pointer;
}
div.vectorMenuFocus {
- /* @embed */
- background-image: url(images/arrow-down-focus-icon.png);
+ /* SVG support using a transparent gradient to guarantee cross-browser
+ * compatibility (browsers able to understand gradient syntax support also SVG) */
+ .background-image-svg('images/arrow-down-focus-icon.svg', 'images/arrow-down-focus-icon.png');
background-position: 100% 60%;
}
-/* @noflip */
body.rtl div.vectorMenu {
+ /* @noflip */
direction: rtl;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
-/* @noflip */
-div#mw-head div.vectorMenu h3,
-div#mw-head div.vectorMenu h5 {
+div#mw-head div.vectorMenu h3 {
+ /* @noflip */
float: left;
- /* @embed */
- background-image: url(images/tab-break.png);
+ .background-image('images/tab-break.png');
background-repeat: no-repeat;
-}
-/* This will be flipped - unlike the one above it */
-div#mw-head div.vectorMenu h3,
-div#mw-head div.vectorMenu h5 {
background-position: bottom left;
margin-left: -1px;
}
/* IGNORED BY IE6 */
-div#mw-head div.vectorMenu > h3,
-div#mw-head div.vectorMenu > h5 {
+div#mw-head div.vectorMenu > h3 {
background-image: none;
}
div#mw-head div.vectorMenu h4,
@@ -263,25 +256,17 @@ div.vectorMenu#p-variants #mw-vector-current-variant {
border: none;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
-/* @noflip */
-div.vectorMenu h3 a,
-div.vectorMenu h5 a {
+div.vectorMenu h3 a {
display: inline-block;
width: 24px;
height: 1.9em;
text-decoration: none;
- /* @embed */
- background-image: url(images/tab-break.png);
+ .background-image('images/tab-break.png');
background-repeat: no-repeat;
-}
-/* This will be flipped - unlike the one above it */
-div.vectorMenu h3 a,
-div.vectorMenu h5 a {
background-position: bottom right;
}
/* IGNORED BY IE6 */
-div.vectorMenu h3 > a,
-div.vectorMenu h5 > a {
+div.vectorMenu h3 > a {
display: block;
}
div.vectorMenu div.menu {
@@ -291,20 +276,20 @@ div.vectorMenu div.menu {
text-align: left;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
-/* @noflip */
body.rtl div.vectorMenu div.menu {
+ /* @noflip */
margin-left: 24px;
}
/* IGNORED BY IE6 */
-/* @noflip */
body.rtl div.vectorMenu > div.menu {
+ /* @noflip */
margin-left: auto;
}
/* IGNORED BY IE6 */
/* Also fixes old versions of FireFox */
-/* @noflip */
body.rtl div.vectorMenu > div.menu,
x:-moz-any-link {
+ /* @noflip */
margin-left: 23px;
}
/* Enable forcing showing of the menu for accessibility */
@@ -346,7 +331,7 @@ div.vectorMenu li a {
display: inline-block;
padding: 0.5em;
white-space: nowrap;
- color: #0645ad;
+ color: @menu-link-color;
cursor: pointer;
font-size: 0.8em;
}
@@ -360,12 +345,11 @@ div.vectorMenu li.selected a:visited {
text-decoration: none;
}
/* Search */
-#p-search h3,
-#p-search h5 {
+#p-search h3 {
display: none;
}
-/* @noflip */
#p-search {
+ /* @noflip */
float: left;
}
#p-search {
@@ -387,26 +371,15 @@ div#simpleSearch {
border: solid 1px #aaa;
color: black;
background-color: white;
- /* @embed */
- background-image: url(images/search-fade.png);
+ .background-image('images/search-fade.png');
background-position: top left;
background-repeat: repeat-x;
}
-div#simpleSearch label {
- /*
- * DON'T PANIC! Browsers that won't scale this properly are the same browsers that have JS issues that prevent
- * this from ever being shown anyways.
- */
- font-size: 13px;
- top: 0.25em;
- direction: ltr;
+div#simpleSearch input:focus {
+ outline: none;
}
div#simpleSearch input {
color: black;
- direction: ltr;
-}
-div#simpleSearch input:focus {
- outline: none;
}
div#simpleSearch input.placeholder {
color: #999;
@@ -468,6 +441,7 @@ div#simpleSearch button#searchButton > img {
}
/* Panel */
div#mw-panel {
+ font-size: @menu-main-font-size;
position: absolute;
top: 160px;
padding-top: 1em;
@@ -478,30 +452,26 @@ div#mw-panel div.portal {
padding-bottom: 1.5em;
direction: ltr;
}
-div#mw-panel div.portal h3,
-div#mw-panel div.portal h5 {
+div#mw-panel div.portal h3 {
font-weight: normal;
color: #444;
- padding: 0.25em;
- padding-top: 0;
- padding-left: 1.75em;
+ padding: @menu-main-heading-padding;
cursor: default;
border: none;
- font-size: 0.75em;
+ font-size: @menu-main-heading-font-size;
}
div#mw-panel div.portal div.body {
- margin: 0;
padding-top: 0.5em;
- margin-left: 1.25em;
- /* @embed */
- background-image: url(images/portal-break.png);
+ margin: @menu-main-body-margin;
+
+ .background-image('images/portal-break.png');
background-repeat: no-repeat;
background-position: top left;
}
div#mw-panel div.portal div.body ul {
list-style-type: none;
list-style-image: none;
- padding: 0;
+ padding: @menu-main-body-padding;
margin: 0;
}
div#mw-panel div.portal div.body ul li {
@@ -509,15 +479,16 @@ div#mw-panel div.portal div.body ul li {
padding: 0;
padding-bottom: 0.5em;
margin: 0;
- font-size: 0.75em;
+ font-size: @menu-main-body-font-size;
word-wrap: break-word;
}
div#mw-panel div.portal div.body ul li a {
- color: #0645ad;
-}
-div#mw-panel div.portal div.body ul li a:visited {
- color: #0b0080;
+ color: @menu-main-body-link-color;
+ &:visited {
+ color: @menu-main-body-link-visited-color;
+ }
}
+
/* Footer */
div#footer {
margin-left: 10em;
@@ -542,8 +513,9 @@ div#footer ul li {
div#footer #footer-icons {
float: right;
}
-/* @noflip */
+
body.ltr div#footer #footer-places {
+ /* @noflip */
float: left;
}
div#footer #footer-info li {
@@ -592,8 +564,7 @@ div#footer #footer-places li {
clear: both;
margin: 0 !important;
padding: 0 !important;
- /* @embed */
- background-image: url(images/preferences-break.png);
+ .background-image('images/preferences-break.png');
background-position: bottom left;
background-repeat: no-repeat;
}
@@ -607,8 +578,7 @@ div#footer #footer-places li {
white-space: nowrap;
list-style-type: none;
list-style-image: none;
- /* @embed */
- background-image: url(images/preferences-break.png);
+ .background-image('images/preferences-break.png');
background-position: bottom right;
background-repeat: no-repeat;
}
@@ -620,7 +590,7 @@ div#footer #footer-places li {
#preftoc a:active {
display: inline-block;
position: relative;
- color: #0645ad;
+ color: @menu-link-color;
padding: 0.5em;
text-decoration: none;
background-image: none;
@@ -631,8 +601,7 @@ div#footer #footer-places li {
text-decoration: underline;
}
#preftoc li.selected a {
- /* @embed */
- background-image: url(images/preferences-fade.png);
+ .background-image('images/preferences-fade.png');
background-position: bottom;
background-repeat: repeat-x;
color: #333;
@@ -678,24 +647,9 @@ div#footer #footer-places li {
margin-right: 0.25em;
}
-/**
- * The following code is slightly modified from monobook
- */
-div#content {
- line-height: 1.5em;
-}
-#bodyContent {
- font-size: 0.8em;
-}
-
-.editsection {
- float: right;
-}
-
ul {
list-style-type: disc;
- /* @embed */
- list-style-image: url(images/bullet-icon.png);
+ .list-style-image('images/bullet-icon.png');
}
pre, .mw-code {
@@ -709,82 +663,19 @@ pre, .mw-code {
#firstHeading {
padding-top: 0;
margin-top: 0;
- padding-top: 0;
- font-size: 1.6em;
-}
-div#content a.external,
-div#content a.external[href ^="gopher://"] {
- /* @embed */
- background: url(images/external-link-ltr-icon.png) center right no-repeat;
- padding-right: 13px;
-}
-div#content a.external[href ^="https://"],
-.link-https {
- /* @embed */
- background: url(images/lock-icon.png) center right no-repeat;
- padding-right: 13px;
-}
-div#content a.external[href ^="mailto:"],
-.link-mailto {
- /* @embed */
- background: url(images/mail-icon.png) center right no-repeat;
- padding-right: 13px;
-}
-div#content a.external[href ^="news:"] {
- /* @embed */
- background: url(images/news-icon.png) center right no-repeat;
- padding-right: 13px;
-}
-div#content a.external[href ^="ftp://"],
-.link-ftp {
- /* @embed */
- background: url(images/file-icon.png) center right no-repeat;
- padding-right: 13px;
-}
-div#content a.external[href ^="irc://"],
-div#content a.external[href ^="ircs://"],
-.link-irc {
- /* @embed */
- background: url(images/talk-icon.png) center right no-repeat;
- padding-right: 13px;
-}
-div#content a.external[href $=".ogg"], div#content a.external[href $=".OGG"],
-div#content a.external[href $=".mid"], div#content a.external[href $=".MID"],
-div#content a.external[href $=".midi"], div#content a.external[href $=".MIDI"],
-div#content a.external[href $=".mp3"], div#content a.external[href $=".MP3"],
-div#content a.external[href $=".wav"], div#content a.external[href $=".WAV"],
-div#content a.external[href $=".wma"], div#content a.external[href $=".WMA"],
-.link-audio {
- /* @embed */
- background: url(images/audio-icon.png) center right no-repeat;
- padding-right: 13px;
-}
-div#content a.external[href $=".ogm"], div#content a.external[href $=".OGM"],
-div#content a.external[href $=".avi"], div#content a.external[href $=".AVI"],
-div#content a.external[href $=".mpeg"], div#content a.external[href $=".MPEG"],
-div#content a.external[href $=".mpg"], div#content a.external[href $=".MPG"],
-.link-video {
- /* @embed */
- background: url(images/video-icon.png) center right no-repeat;
- padding-right: 13px;
-}
-div#content a.external[href $=".pdf"], div#content a.external[href $=".PDF"],
-div#content a.external[href *=".pdf#"], div#content a.external[href *=".PDF#"],
-div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"],
-.link-document {
- /* @embed */
- background: url(images/document-icon.png) center right no-repeat;
- padding-right: 13px;
+ font-size: @content-heading-font-size;
}
/* Icon for Usernames */
#pt-userpage,
#pt-anonuserpage,
#pt-login {
- /* @embed */
- background: url(images/user-icon.png) left top no-repeat;
+ background-position: left top;
+ background-repeat: no-repeat;
+ /* SVG support using a transparent gradient to guarantee cross-browser
+ * compatibility (browsers able to understand gradient syntax support also SVG) */
+ .background-image-svg('images/user-icon.svg', 'images/user-icon.png');
padding-left: 15px !important;
- text-transform: none;
}
.redirectText {
@@ -798,16 +689,17 @@ div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"],
#bodyContent {
position: relative;
width: 100%;
-}
-div#bodyContent {
line-height: 1.5em;
+ font-size: @content-font-size;
}
/* mediawiki.notification */
-.skin-vector #mw-notification-area {
- top: 7em;
+.skin-vector .mw-notification-area {
font-size: 0.8em;
}
+.skin-vector .mw-notification-area-layout {
+ top: 7em;
+}
.skin-vector .mw-notification {
background-color: #fff;
background-color: rgba(255, 255, 255, 0.93);
@@ -815,7 +707,6 @@ div#bodyContent {
border: solid 1px #a7d7f9;
border-radius: 0.75em;
-webkit-box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
- -moz-box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
}
@@ -834,8 +725,7 @@ div#bodyContent {
margin-top: -0.8em !ie;
height: 0;
overflow: hidden;
- /* @embed */
- background-image: url(images/watch-icons.png);
+ .background-image('images/watch-icons.png');
}
#ca-unwatch.icon a {
background-position: -43px 60%;
@@ -853,8 +743,7 @@ div#bodyContent {
}
#ca-unwatch.icon a.loading,
#ca-watch.icon a.loading {
- /* @embed */
- background-image: url(images/watch-icon-loading.gif);
+ .background-image('images/watch-icon-loading.gif');
background-position: 5px 60%;
}
#ca-unwatch.icon a span,
@@ -862,8 +751,7 @@ div#bodyContent {
display: none;
}
div.vectorTabs ul {
- /* @embed */
- background-image: url(images/tab-break.png);
+ .background-image('images/tab-break.png');
background-position: right bottom;
background-repeat: no-repeat;
}
@@ -874,42 +762,30 @@ div.vectorTabs ul {
}
/* Animate between standard and high definition layouts */
+body.vector-animateLayout {
+ div#content,
+ div#footer,
+ #left-navigation {
+ .transition(margin-left 250ms, padding 250ms;);
+ }
+
+ #p-logo {
+ .transition(left 250ms);
+ }
+
+ #mw-panel {
+ .transition(padding-right 250ms);
+ }
+
+ #p-search {
+ .transition(margin-right 250ms);
+ }
+
+ #p-personal {
+ .transition(right 250ms);
+ }
-body.vector-animateLayout div#content,
-body.vector-animateLayout div#footer {
- -moz-transition: margin-left 250ms, padding 250ms;
- -webkit-transition: margin-left 250ms, padding 250ms;
- -o-transition: margin-left 250ms, padding 250ms;
- transition: margin-left 250ms, padding 250ms;
-}
-body.vector-animateLayout #p-logo,
-body.vector-animateLayout #left-navigation {
- -moz-transition: left 250ms;
- -webkit-transition: left 250ms;
- -o-transition: left 250ms;
- transition: left 250ms;
-}
-body.vector-animateLayout #mw-panel {
- -moz-transition: padding-left 250ms;
- -webkit-transition: padding-left 250ms;
- -o-transition: padding-left 250ms;
- transition: padding-left 250ms;
-}
-body.vector-animateLayout #p-search {
- -moz-transition: margin-right 250ms;
- -webkit-transition: margin-right 250ms;
- -o-transition: margin-right 250ms;
- transition: margin-right 250ms;
-}
-body.vector-animateLayout #p-personal {
- -moz-transition: right 250ms;
- -webkit-transition: right 250ms;
- -o-transition: right 250ms;
- transition: right 250ms;
-}
-body.vector-animateLayout #mw-head-base {
- -moz-transition: margin-left 250ms;
- -webkit-transition: margin-left 250ms;
- -o-transition: margin-left 250ms;
- transition: margin-left 250ms;
+ #mw-head-base {
+ .transition(margin-left 250ms);
+ }
}
diff --git a/skins/vector/styles-beta.less b/skins/vector/styles-beta.less
new file mode 100644
index 00000000..a76b6394
--- /dev/null
+++ b/skins/vector/styles-beta.less
@@ -0,0 +1,13 @@
+@import "variables.less";
+@import "beta/variables.less";
+
+@media screen {
+ @import "screen.less";
+ @import "beta/screen.less";
+ @import "externalLinks.less";
+ @import "collapsibleNav.less";
+}
+
+@media screen and (min-width: 982px) {
+ @import "screen-hd.less";
+}
diff --git a/skins/vector/styles.less b/skins/vector/styles.less
new file mode 100644
index 00000000..bd458510
--- /dev/null
+++ b/skins/vector/styles.less
@@ -0,0 +1,11 @@
+@import "variables.less";
+
+@media screen {
+ @import "screen.less";
+ @import "externalLinks.less";
+ @import "collapsibleNav.less";
+}
+
+@media screen and (min-width: 982px) {
+ @import "screen-hd.less";
+}
diff --git a/skins/vector/variables.less b/skins/vector/variables.less
new file mode 100644
index 00000000..691e0fd5
--- /dev/null
+++ b/skins/vector/variables.less
@@ -0,0 +1,37 @@
+@html-font-size: 1em;
+
+@body-font-size: 1em;
+
+// Page content
+@content-font-family: sans-serif;
+@content-font-color: black;
+@content-font-size: 0.8em;
+@content-line-height: 1.5em;
+@content-padding: 1.5em 1.5em 1.5em 1.75em;
+@content-heading-font-size: 1.6em;
+@content-heading-font-family: sans-serif;
+
+// Common menu
+@menu-link-color: #0645ad;
+
+// Main menu
+@menu-main-font-size: inherit;
+@menu-main-heading-font-size: 0.75em;
+@menu-main-heading-padding: 0 1.75em 0.25em 0.25em;
+
+@menu-main-body-font-size: 0.75em;
+@menu-main-body-link-color: #0645ad;
+@menu-main-body-link-visited-color: #0b0080;
+@menu-main-body-margin: 0 0 0 1.25em;
+@menu-main-body-padding: 0;
+@menu-main-logo-left: 0.5em;
+
+// Personal menu
+@menu-personal-font-size: 0.75em;
+
+// Collapsible nav
+@collapsible-nav-heading-color: #4D4D4D;
+@collapsible-nav-heading-collapsed-color: #0645AD;
+
+@collapsible-nav-heading-padding: 4px 0 3px 1.5em;
+@collapsible-nav-body-margin: 0 0 0 1.25em;
diff --git a/skins/vector/vector.js b/skins/vector/vector.js
index 4427d9a3..aa64624a 100644
--- a/skins/vector/vector.js
+++ b/skins/vector/vector.js
@@ -4,18 +4,52 @@
jQuery( function ( $ ) {
$( 'div.vectorMenu' ).each( function () {
var $el = $( this );
- $el.find( 'h3:first a:first' )
- // For accessibility, show the menu when the hidden link in the menu is clicked (bug 24298)
- .click( function ( e ) {
- $el.find( '.menu:first' ).toggleClass( 'menuForceShow' );
- e.preventDefault();
+ $el.find( '> h3 > a' ).parent()
+ .attr( 'tabindex', '0' )
+ // For accessibility, show the menu when the h3 is clicked (bug 24298/46486)
+ .on( 'click keypress', function ( e ) {
+ if( e.type === 'click' || e.which === 13 ) {
+ $el.find( '.menu:first' ).toggleClass( 'menuForceShow' );
+ e.preventDefault();
+ }
} )
- // When the hidden link has focus, also set a class that will change the arrow icon
+ // When the heading has focus, also set a class that will change the arrow icon
.focus( function () {
- $el.addClass( 'vectorMenuFocus' );
+ $el.find( '> a' ).addClass( 'vectorMenuFocus' );
} )
.blur( function () {
- $el.removeClass( 'vectorMenuFocus' );
- } );
+ $el.find( '> a' ).removeClass( 'vectorMenuFocus' );
+ } )
+ .find( '> a:first' )
+ // As the h3 can already be focused there's no need for the link to be focusable
+ .attr( 'tabindex', '-1' );
} );
+
+ /**
+ * Collapsible tabs for Vector
+ */
+ var $cactions = $( '#p-cactions' );
+
+ // Bind callback functions to animate our drop down menu in and out
+ // and then call the collapsibleTabs function on the menu
+ $( '#p-views ul' )
+ .bind( 'beforeTabCollapse', function () {
+ // If the dropdown was hidden, show it
+ if ( $cactions.hasClass( 'emptyPortlet' ) ) {
+ $cactions
+ .removeClass( 'emptyPortlet' )
+ .find( 'h3' )
+ .css( 'width', '1px' ).animate( { 'width': '24px' }, 390 );
+ }
+ } )
+ .bind( 'beforeTabExpand', function () {
+ // If we're removing the last child node right now, hide the dropdown
+ if ( $cactions.find( 'li' ).length === 1 ) {
+ $cactions.find( 'h3' ).animate( { 'width': '1px' }, 390, function () {
+ $( this ).attr( 'style', '' )
+ .parent().addClass( 'emptyPortlet' );
+ });
+ }
+ } )
+ .collapsibleTabs();
} );