<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.open-xchange.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Christoph.hellweg</id>
	<title>Open-Xchange - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.open-xchange.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Christoph.hellweg"/>
	<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Special:Contributions/Christoph.hellweg"/>
	<updated>2026-08-17T05:12:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Writing_a_simple_application&amp;diff=19110</id>
		<title>AppSuite:Writing a simple application</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Writing_a_simple_application&amp;diff=19110"/>
		<updated>2015-02-18T15:49:54Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stability-experimental}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Writing a simple application&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
&lt;br /&gt;
First create a new folder &amp;lt;tt&amp;gt;helloWorld&amp;lt;/tt&amp;gt; in your namespace in the app folder, in this example the namespace &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt; will be used. (&amp;lt;tt&amp;gt;apps/com.example/helloWorld&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
For starters we need two files: a manifest File &amp;lt;tt&amp;gt;manifest.json&amp;lt;/tt&amp;gt; and the application file.&lt;br /&gt;
It is convention to name your main application file &amp;lt;tt&amp;gt;main.js&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Manifest==&lt;br /&gt;
&lt;br /&gt;
First create a &amp;lt;tt&amp;gt;manifest.json&amp;lt;/tt&amp;gt; file, describing the basic properties of your app.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    title: &amp;quot;Hello World&amp;quot;,&lt;br /&gt;
    company: &amp;quot;Open-Xchange&amp;quot;,&lt;br /&gt;
    icon: &amp;quot;/images/icon.png&amp;quot;,&lt;br /&gt;
    category: &amp;quot;Dev&amp;quot;,&lt;br /&gt;
    settings: false,&lt;br /&gt;
    requires: &amp;quot;dev&amp;quot;,&lt;br /&gt;
    index: 100&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whilst developing, the manifest has to be added to &amp;lt;tt&amp;gt;src/manifests.json&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&#039;&#039;Note: Same as above except for the path, which is mandatory.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
{&lt;br /&gt;
    path: &#039;com.example/helloWorld/main&#039;,&lt;br /&gt;
    title: &amp;quot;Hello World&amp;quot;,&lt;br /&gt;
    company: &amp;quot;Open-Xchange&amp;quot;,&lt;br /&gt;
    icon: &amp;quot;/images/icon.png&amp;quot;,&lt;br /&gt;
    category: &amp;quot;Dev&amp;quot;,&lt;br /&gt;
    settings: false,&lt;br /&gt;
    requires: &amp;quot;dev&amp;quot;,&lt;br /&gt;
    index: 100&lt;br /&gt;
},&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find more detailed information on manifests here: [[AppSuite:UI manifests explained | UI manifests explained]]&lt;br /&gt;
&lt;br /&gt;
===Setting an app icon===&lt;br /&gt;
&lt;br /&gt;
It is convention to place your app image into a subfolder of your app called images.&lt;br /&gt;
The icon defined here will be displayed in the &amp;quot;Your applications&amp;quot; area.&lt;br /&gt;
&lt;br /&gt;
[[File:Hello_World_-_Your_applications.png|alt=Your Applications|Your Applications]]&lt;br /&gt;
&lt;br /&gt;
==Simple application==&lt;br /&gt;
&lt;br /&gt;
This is the base skeleton of a new app with a window, that displays &amp;quot;Hello World&amp;quot;.&lt;br /&gt;
Please read the annotated source code of an example main.js below, it is quite self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/helloWorld/main&#039;, [], function () {&lt;br /&gt;
&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    // this is just code. loading this does not imply to launch the application&lt;br /&gt;
&lt;br /&gt;
    // application object. &#039;name&#039; is mandatory!&lt;br /&gt;
    var app = ox.ui.createApp({ name: &#039;com.example/helloWorld&#039; });&lt;br /&gt;
&lt;br /&gt;
    // by using setLauncher this way, we register a callback function&lt;br /&gt;
    // that is called when the application is really launched&lt;br /&gt;
    app.setLauncher(function () {&lt;br /&gt;
&lt;br /&gt;
        // application window (some applications don&#039;t have a window)&lt;br /&gt;
        var win = ox.ui.createWindow({&lt;br /&gt;
            name: &#039;com.example/helloWorld&#039;,&lt;br /&gt;
            title: &#039;Hello World&#039;&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        app.setWindow(win);&lt;br /&gt;
&lt;br /&gt;
        // Add css class with your namespace&lt;br /&gt;
        win.addClass(&#039;com-example-helloWorld&#039;);&lt;br /&gt;
&lt;br /&gt;
        // add something on &#039;main&#039; node&lt;br /&gt;
        win.nodes.main&lt;br /&gt;
            .css({ padding: &#039;13px&#039;, textAlign: &#039;center&#039; })&lt;br /&gt;
            .append($(&#039;&amp;lt;h1&amp;gt;&#039;).text(&#039;Hello World!&#039;));&lt;br /&gt;
&lt;br /&gt;
        // show the window&lt;br /&gt;
        win.show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
        getApp: app.getInstance&lt;br /&gt;
    };&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save this file, build and refresh your browser, go to &amp;quot;Your applications&amp;quot;, where you should find your app with your app icon.&lt;br /&gt;
Hint: You can also launch the application manually via your browsers console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
ox.launch(&#039;com.example/helloWorld/main&#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Hello_World_-_Simple_Application.png]]&lt;br /&gt;
&lt;br /&gt;
===Styles===&lt;br /&gt;
&lt;br /&gt;
In order to prevent conflicts with other apps or base-styles you should add a css class with your namespace to the main node of your application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
win.addClass(&#039;com-example-helloWorld&#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is convention to create a file called style.less in the root folder of your application.&lt;br /&gt;
This file has to be defined for [http://requirejs.org/docs/api.html require.js] which is done like this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
define(&#039;com.example/helloWorld/main&#039;,&lt;br /&gt;
    [&#039;less!com.example/helloWorld/style.less&#039;&lt;br /&gt;
    ], function () {&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A simple less file would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-less&amp;quot;&amp;gt;&lt;br /&gt;
.com-example-helloWorld {&lt;br /&gt;
    h1 {&lt;br /&gt;
        color: red;&lt;br /&gt;
    }&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File: Hello_World_-_Simple_Application_Style.png]]&lt;br /&gt;
&lt;br /&gt;
===Internationalization (i18n)===&lt;br /&gt;
&lt;br /&gt;
In order to get &amp;lt;tt&amp;gt;gettext&amp;lt;/tt&amp;gt; support for your app you have to require it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
define(&#039;com.example/helloWorld/main&#039;,&lt;br /&gt;
    [...&lt;br /&gt;
    &#039;gettext!com.example/helloWorld&#039;&lt;br /&gt;
    ...&lt;br /&gt;
    ], function (gt) {&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every string in your app should be processed by &amp;lt;tt&amp;gt;gettext&amp;lt;/tt&amp;gt; in order to have them properly translated.&lt;br /&gt;
In our example it would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    .append($(&#039;&amp;lt;h1&amp;gt;&#039;).text(gt(&#039;Hello World!&#039;)));&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hint: If you want to check your app for untranslated strings, append &amp;lt;tt&amp;gt;&amp;amp;debug-i18n=true&amp;lt;/tt&amp;gt; to the URL in your browser and refresh. If a string is not processed by &amp;lt;tt&amp;gt;gettext&amp;lt;/tt&amp;gt; it will be highlighted.&lt;br /&gt;
&lt;br /&gt;
You can find more detailed information on this topic here: [[Appsuite:i18n]]&lt;br /&gt;
&lt;br /&gt;
===Making an application window chromeless===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t have the need for a toolbar and want a chromeless window, you can it in the ox.ui.createWindow function call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
var win = ox.ui.createWindow({&lt;br /&gt;
    ...&lt;br /&gt;
    chromeless: true&lt;br /&gt;
    ...&lt;br /&gt;
});&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Dialog===&lt;br /&gt;
&lt;br /&gt;
In order to open a dialog &amp;lt;tt&amp;gt;io.ox/core/tk/dialogs&amp;lt;/tt&amp;gt; has to be required and use one of the supplied methods.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
win.nodes.main&lt;br /&gt;
    .append($(&#039;&amp;lt;a class=&amp;quot;btn&amp;quot;&amp;gt;&#039;).text(&#039;Open Modal Dialog&#039;)&lt;br /&gt;
        .on(&#039;click&#039;, function (e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            require([&#039;io.ox/core/tk/dialogs&#039;],&lt;br /&gt;
                function (dialogs) {&lt;br /&gt;
                    new dialogs.ModalDialog({&lt;br /&gt;
                            width: 600,&lt;br /&gt;
                            easyOut: true&lt;br /&gt;
                        })&lt;br /&gt;
                        .append($(&#039;&amp;lt;p&amp;gt;&#039;).text(&#039;Hello world&#039;))&lt;br /&gt;
                        .addButton(&#039;close&#039;, &#039;Close&#039;)&lt;br /&gt;
                        .show();&lt;br /&gt;
                }&lt;br /&gt;
            );&lt;br /&gt;
        })&lt;br /&gt;
    );&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File: Hello_World_-_Modal_Dialog.png]]&lt;br /&gt;
&lt;br /&gt;
==Displaying a notification==&lt;br /&gt;
&lt;br /&gt;
If you want to display notifications you can require &amp;lt;tt&amp;gt;io.ox/core/notifications&amp;lt;/tt&amp;gt; and use the yell method, like in the examples below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
require([&#039;io.ox/core/notifications&#039;],&lt;br /&gt;
    function (notifications) {&lt;br /&gt;
        win.nodes.main&lt;br /&gt;
            .append(&lt;br /&gt;
                $(&#039;&amp;lt;a class=&amp;quot;btn&amp;quot;&amp;gt;&#039;).text(&#039;Display success notfication&#039;)&lt;br /&gt;
                    .on(&#039;click&#039;, function () {&lt;br /&gt;
                        notifications.yell(&#039;success&#039;, &#039;Ah success!&#039;);&lt;br /&gt;
                    }),&lt;br /&gt;
                $(&#039;&amp;lt;a class=&amp;quot;btn&amp;quot;&amp;gt;&#039;).text(&#039;Display error notfication&#039;)&lt;br /&gt;
                    .on(&#039;click&#039;, function () {&lt;br /&gt;
                        notifications.yell(&#039;error&#039;, &#039;Oh failed!&#039;);&lt;br /&gt;
                    })&lt;br /&gt;
            );&lt;br /&gt;
});&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File: Hello_World_-_Notifications.png]]&lt;br /&gt;
&lt;br /&gt;
You can find information about more advanced notifications [[AppSuite:Writing a notification area plugin | here]].&lt;br /&gt;
&lt;br /&gt;
==Displaying a Halo View==&lt;br /&gt;
&lt;br /&gt;
===For internal users===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt; &lt;br /&gt;
...&lt;br /&gt;
win.nodes.main.append(&lt;br /&gt;
    $(&#039;&amp;lt;a href=&amp;quot;#&amp;quot; class=&amp;quot;btn halo-link&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    .data({ internal_userid: ox.user_id })       &lt;br /&gt;
    .text(&#039;Open Halo&#039;)&lt;br /&gt;
);&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For external users===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
win.nodes.main.append(&lt;br /&gt;
    $(&#039;&amp;lt;a class=&amp;quot;btn halo-link&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    .data({ email1: &#039;test@example.com&#039; })&lt;br /&gt;
    .text(&#039;Open Halo from Email&#039;)&lt;br /&gt;
);&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File: Hello_World_-_Halo.png|844px]]&lt;br /&gt;
&lt;br /&gt;
==Using settings==&lt;br /&gt;
&lt;br /&gt;
To get or set settings you have to create a &amp;lt;tt&amp;gt;settings&amp;lt;/tt&amp;gt; subfolder, with a &amp;lt;tt&amp;gt;defaults.js&amp;lt;/tt&amp;gt; in which the default values are defined for your settings and a &amp;lt;tt&amp;gt;model.js&amp;lt;/tt&amp;gt;. Below you will find a simple example of these files.&lt;br /&gt;
&lt;br /&gt;
===Defaults===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/helloWorld/settings/defaults&#039;, [], function () {&lt;br /&gt;
&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    // define the default values for your settings here&lt;br /&gt;
    var settingsDefaults = {&lt;br /&gt;
        exampleSetting: false&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    return settingsDefaults;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Model===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/helloWorld/settings/model&#039;,&lt;br /&gt;
      [&#039;settings!com.example/helloWorld&#039;], function (settings) {&lt;br /&gt;
&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Very simple default model&lt;br /&gt;
    var helloWorldModel = Backbone.Model.extend({&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        initialize: function () {&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        save: function () {&lt;br /&gt;
            settings.save(this.attributes);&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        destroy: function () {&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    return helloWorldModel;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get/Set===&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;main.js&amp;lt;/tt&amp;gt; you could add the following snippet which draws a checkbox and saves its state as &amp;lt;tt&amp;gt;exampleSetting&amp;lt;/tt&amp;gt; on the change event.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
require([&#039;settings!com.example/helloWorld&#039;],&lt;br /&gt;
    function (settings) {&lt;br /&gt;
        win.nodes.main&lt;br /&gt;
            .append(&lt;br /&gt;
                $(&#039;&amp;lt;label&amp;gt;&#039;).text(gt(&#039;Example Setting&#039;)),&lt;br /&gt;
                $(&#039;&amp;lt;input type=&amp;quot;checkbox&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
                    .prop(&#039;checked&#039;, settings.get(&#039;exampleSetting&#039;, false))&lt;br /&gt;
                    .on(&#039;change&#039;, function () {&lt;br /&gt;
                        settings.set(&#039;exampleSetting&#039;, $(this).prop(&#039;checked&#039;)).save();&lt;br /&gt;
                    })&lt;br /&gt;
            );&lt;br /&gt;
    });&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Download full example==&lt;br /&gt;
&lt;br /&gt;
You can download the example application here with all above shown examples above included.&lt;br /&gt;
&lt;br /&gt;
[[File: Hello_World_-_Simple_application_full_example.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;br /&gt;
&lt;br /&gt;
== Stuck somewhere? ==&lt;br /&gt;
You got stuck with a problem while developing? OXpedia might help you out with the article about [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Extension_points_for_email&amp;diff=16629</id>
		<title>AppSuite:Extension points for email</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Extension_points_for_email&amp;diff=16629"/>
		<updated>2013-12-03T09:38:04Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* io.ox/mail/write/emailAddress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stability-experimental}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Extension points for e-mail&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Abstract:&#039;&#039;&#039; This describes extension points for the e-mail module, allowing you to add functions.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/all/actions ==&lt;br /&gt;
The point for the &amp;quot;all&amp;quot; actions dropdown in the detail view of a selected mail.&lt;br /&gt;
This place should be used for actions in context with all involved contacts.&lt;br /&gt;
The baton is forwarded to the the single action functions.&lt;br /&gt;
&lt;br /&gt;
baton contains:&lt;br /&gt;
data - holds the mail object of the current selected contact&lt;br /&gt;
&lt;br /&gt;
data.threadKey - &lt;br /&gt;
data.threadPosition - &lt;br /&gt;
data.threadSize - &lt;br /&gt;
tracker&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/attachment/links ==&lt;br /&gt;
The point for actions related to the attachments of a mail.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail == &lt;br /&gt;
The point for the detail view of a selected mail. &lt;br /&gt;
The baton is forwarded.&lt;br /&gt;
It is followed by points for each mail detail:&lt;br /&gt;
&lt;br /&gt;
* io.ox/mail/detail/contact-picture&lt;br /&gt;
* io.ox/mail/detail/receiveddate&lt;br /&gt;
* io.ox/mail/detail/fromlist&lt;br /&gt;
* io.ox/mail/detail/thread-position&lt;br /&gt;
* io.ox/mail/detail/flag&lt;br /&gt;
* io.ox/mail/detail/subject&lt;br /&gt;
* io.ox/mail/detail/tocopy&lt;br /&gt;
* io.ox/mail/detail/attachments&lt;br /&gt;
* io.ox/mail/detail/inline-links&lt;br /&gt;
* io.ox/mail/detail/phishing-warning&lt;br /&gt;
* io.ox/mail/detail/externalresources-warning&lt;br /&gt;
* io.ox/mail/detail/content&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail/notification ==&lt;br /&gt;
The point for the notification handling.&lt;br /&gt;
A extended mail object is forwarded.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail/notification/update-notification ==&lt;br /&gt;
The point to remove read mails in notification Area.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/dnd/actions ==&lt;br /&gt;
The point for mail import via drag &amp;amp; drop.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/links/inline ==&lt;br /&gt;
The Point for inserting actions like reply &amp;amp; delete.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/settings/detail ==&lt;br /&gt;
The point for the mail settings detailpage.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/settings/detail/section ==&lt;br /&gt;
This point is not longer supported.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/thread ==&lt;br /&gt;
The Point for inserting actions related to the whole thread like move &amp;amp; delete.&lt;br /&gt;
The baton is forwarded.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/vgrid/options ==&lt;br /&gt;
The point for applying options to the vgrid related to the mail app.&lt;br /&gt;
&lt;br /&gt;
=== sort ===&lt;br /&gt;
* specifies default sort field&lt;br /&gt;
* in case threadview is enabled/used and default sort field is &#039;&#039;&#039;not&#039;&#039;&#039; set to &#039;thread&#039; user has to select &#039;sort by -&amp;gt; chat&#039; manually after each login/page refresh&lt;br /&gt;
* alternatively you can use sever setting &#039;&#039;&#039;&#039;io.ox/mail//vgrid/sort=&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by date&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 610&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by from&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 603&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by subject&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 607&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by label&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 102&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: show threads (if threadview is enabled), sort by date (if threadview are disabled)&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: &#039;thread&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/vgrid/toolbar ==&lt;br /&gt;
The point for extending the vgrid toolbar in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/toolbar ==&lt;br /&gt;
The point for inserting inline buttons on top of the mail write view.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/send ==&lt;br /&gt;
The point for the action related to the send button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
== io.ox/mail/write/autoCompleteItem (since 7.4.2) ==&lt;br /&gt;
The point for extending the autocomplete items in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/contactItem (since 7.4.2) ==&lt;br /&gt;
The point for extending the contact list items in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/contactPicture (since 7.4.2) ==&lt;br /&gt;
The point for extending contact picture in autocomplete and contact list.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/displayName (since 7.4.2) ==&lt;br /&gt;
The point for extending display name in autocomplete and contact list.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/emailAddress (since 7.4.2) ==&lt;br /&gt;
The point for extending email address in autocomplete and contact list.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/draft ==&lt;br /&gt;
The point for the action related to the save button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/discard ==&lt;br /&gt;
The point for the action related to the discard button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;br /&gt;
[[Category:Extension points]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Extension_points_for_email&amp;diff=16628</id>
		<title>AppSuite:Extension points for email</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Extension_points_for_email&amp;diff=16628"/>
		<updated>2013-12-03T09:37:58Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* io.ox/mail/write/displayName */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stability-experimental}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Extension points for e-mail&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Abstract:&#039;&#039;&#039; This describes extension points for the e-mail module, allowing you to add functions.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/all/actions ==&lt;br /&gt;
The point for the &amp;quot;all&amp;quot; actions dropdown in the detail view of a selected mail.&lt;br /&gt;
This place should be used for actions in context with all involved contacts.&lt;br /&gt;
The baton is forwarded to the the single action functions.&lt;br /&gt;
&lt;br /&gt;
baton contains:&lt;br /&gt;
data - holds the mail object of the current selected contact&lt;br /&gt;
&lt;br /&gt;
data.threadKey - &lt;br /&gt;
data.threadPosition - &lt;br /&gt;
data.threadSize - &lt;br /&gt;
tracker&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/attachment/links ==&lt;br /&gt;
The point for actions related to the attachments of a mail.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail == &lt;br /&gt;
The point for the detail view of a selected mail. &lt;br /&gt;
The baton is forwarded.&lt;br /&gt;
It is followed by points for each mail detail:&lt;br /&gt;
&lt;br /&gt;
* io.ox/mail/detail/contact-picture&lt;br /&gt;
* io.ox/mail/detail/receiveddate&lt;br /&gt;
* io.ox/mail/detail/fromlist&lt;br /&gt;
* io.ox/mail/detail/thread-position&lt;br /&gt;
* io.ox/mail/detail/flag&lt;br /&gt;
* io.ox/mail/detail/subject&lt;br /&gt;
* io.ox/mail/detail/tocopy&lt;br /&gt;
* io.ox/mail/detail/attachments&lt;br /&gt;
* io.ox/mail/detail/inline-links&lt;br /&gt;
* io.ox/mail/detail/phishing-warning&lt;br /&gt;
* io.ox/mail/detail/externalresources-warning&lt;br /&gt;
* io.ox/mail/detail/content&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail/notification ==&lt;br /&gt;
The point for the notification handling.&lt;br /&gt;
A extended mail object is forwarded.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail/notification/update-notification ==&lt;br /&gt;
The point to remove read mails in notification Area.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/dnd/actions ==&lt;br /&gt;
The point for mail import via drag &amp;amp; drop.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/links/inline ==&lt;br /&gt;
The Point for inserting actions like reply &amp;amp; delete.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/settings/detail ==&lt;br /&gt;
The point for the mail settings detailpage.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/settings/detail/section ==&lt;br /&gt;
This point is not longer supported.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/thread ==&lt;br /&gt;
The Point for inserting actions related to the whole thread like move &amp;amp; delete.&lt;br /&gt;
The baton is forwarded.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/vgrid/options ==&lt;br /&gt;
The point for applying options to the vgrid related to the mail app.&lt;br /&gt;
&lt;br /&gt;
=== sort ===&lt;br /&gt;
* specifies default sort field&lt;br /&gt;
* in case threadview is enabled/used and default sort field is &#039;&#039;&#039;not&#039;&#039;&#039; set to &#039;thread&#039; user has to select &#039;sort by -&amp;gt; chat&#039; manually after each login/page refresh&lt;br /&gt;
* alternatively you can use sever setting &#039;&#039;&#039;&#039;io.ox/mail//vgrid/sort=&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by date&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 610&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by from&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 603&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by subject&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 607&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by label&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 102&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: show threads (if threadview is enabled), sort by date (if threadview are disabled)&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: &#039;thread&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/vgrid/toolbar ==&lt;br /&gt;
The point for extending the vgrid toolbar in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/toolbar ==&lt;br /&gt;
The point for inserting inline buttons on top of the mail write view.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/send ==&lt;br /&gt;
The point for the action related to the send button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
== io.ox/mail/write/autoCompleteItem (since 7.4.2) ==&lt;br /&gt;
The point for extending the autocomplete items in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/contactItem (since 7.4.2) ==&lt;br /&gt;
The point for extending the contact list items in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/contactPicture (since 7.4.2) ==&lt;br /&gt;
The point for extending contact picture in autocomplete and contact list.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/displayName (since 7.4.2) ==&lt;br /&gt;
The point for extending display name in autocomplete and contact list.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/emailAddress ==&lt;br /&gt;
The point for extending email address in autocomplete and contact list.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/draft ==&lt;br /&gt;
The point for the action related to the save button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/discard ==&lt;br /&gt;
The point for the action related to the discard button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;br /&gt;
[[Category:Extension points]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Extension_points_for_email&amp;diff=16627</id>
		<title>AppSuite:Extension points for email</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Extension_points_for_email&amp;diff=16627"/>
		<updated>2013-12-03T09:37:53Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* io.ox/mail/write/contactPicture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stability-experimental}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Extension points for e-mail&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Abstract:&#039;&#039;&#039; This describes extension points for the e-mail module, allowing you to add functions.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/all/actions ==&lt;br /&gt;
The point for the &amp;quot;all&amp;quot; actions dropdown in the detail view of a selected mail.&lt;br /&gt;
This place should be used for actions in context with all involved contacts.&lt;br /&gt;
The baton is forwarded to the the single action functions.&lt;br /&gt;
&lt;br /&gt;
baton contains:&lt;br /&gt;
data - holds the mail object of the current selected contact&lt;br /&gt;
&lt;br /&gt;
data.threadKey - &lt;br /&gt;
data.threadPosition - &lt;br /&gt;
data.threadSize - &lt;br /&gt;
tracker&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/attachment/links ==&lt;br /&gt;
The point for actions related to the attachments of a mail.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail == &lt;br /&gt;
The point for the detail view of a selected mail. &lt;br /&gt;
The baton is forwarded.&lt;br /&gt;
It is followed by points for each mail detail:&lt;br /&gt;
&lt;br /&gt;
* io.ox/mail/detail/contact-picture&lt;br /&gt;
* io.ox/mail/detail/receiveddate&lt;br /&gt;
* io.ox/mail/detail/fromlist&lt;br /&gt;
* io.ox/mail/detail/thread-position&lt;br /&gt;
* io.ox/mail/detail/flag&lt;br /&gt;
* io.ox/mail/detail/subject&lt;br /&gt;
* io.ox/mail/detail/tocopy&lt;br /&gt;
* io.ox/mail/detail/attachments&lt;br /&gt;
* io.ox/mail/detail/inline-links&lt;br /&gt;
* io.ox/mail/detail/phishing-warning&lt;br /&gt;
* io.ox/mail/detail/externalresources-warning&lt;br /&gt;
* io.ox/mail/detail/content&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail/notification ==&lt;br /&gt;
The point for the notification handling.&lt;br /&gt;
A extended mail object is forwarded.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail/notification/update-notification ==&lt;br /&gt;
The point to remove read mails in notification Area.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/dnd/actions ==&lt;br /&gt;
The point for mail import via drag &amp;amp; drop.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/links/inline ==&lt;br /&gt;
The Point for inserting actions like reply &amp;amp; delete.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/settings/detail ==&lt;br /&gt;
The point for the mail settings detailpage.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/settings/detail/section ==&lt;br /&gt;
This point is not longer supported.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/thread ==&lt;br /&gt;
The Point for inserting actions related to the whole thread like move &amp;amp; delete.&lt;br /&gt;
The baton is forwarded.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/vgrid/options ==&lt;br /&gt;
The point for applying options to the vgrid related to the mail app.&lt;br /&gt;
&lt;br /&gt;
=== sort ===&lt;br /&gt;
* specifies default sort field&lt;br /&gt;
* in case threadview is enabled/used and default sort field is &#039;&#039;&#039;not&#039;&#039;&#039; set to &#039;thread&#039; user has to select &#039;sort by -&amp;gt; chat&#039; manually after each login/page refresh&lt;br /&gt;
* alternatively you can use sever setting &#039;&#039;&#039;&#039;io.ox/mail//vgrid/sort=&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by date&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 610&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by from&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 603&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by subject&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 607&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by label&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 102&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: show threads (if threadview is enabled), sort by date (if threadview are disabled)&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: &#039;thread&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/vgrid/toolbar ==&lt;br /&gt;
The point for extending the vgrid toolbar in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/toolbar ==&lt;br /&gt;
The point for inserting inline buttons on top of the mail write view.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/send ==&lt;br /&gt;
The point for the action related to the send button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
== io.ox/mail/write/autoCompleteItem (since 7.4.2) ==&lt;br /&gt;
The point for extending the autocomplete items in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/contactItem (since 7.4.2) ==&lt;br /&gt;
The point for extending the contact list items in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/contactPicture (since 7.4.2) ==&lt;br /&gt;
The point for extending contact picture in autocomplete and contact list.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/displayName ==&lt;br /&gt;
The point for extending display name in autocomplete and contact list.&lt;br /&gt;
== io.ox/mail/write/emailAddress ==&lt;br /&gt;
The point for extending email address in autocomplete and contact list.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/draft ==&lt;br /&gt;
The point for the action related to the save button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/discard ==&lt;br /&gt;
The point for the action related to the discard button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;br /&gt;
[[Category:Extension points]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Extension_points_for_email&amp;diff=16626</id>
		<title>AppSuite:Extension points for email</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Extension_points_for_email&amp;diff=16626"/>
		<updated>2013-12-03T09:37:48Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* io.ox/mail/write/contactItem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stability-experimental}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Extension points for e-mail&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Abstract:&#039;&#039;&#039; This describes extension points for the e-mail module, allowing you to add functions.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/all/actions ==&lt;br /&gt;
The point for the &amp;quot;all&amp;quot; actions dropdown in the detail view of a selected mail.&lt;br /&gt;
This place should be used for actions in context with all involved contacts.&lt;br /&gt;
The baton is forwarded to the the single action functions.&lt;br /&gt;
&lt;br /&gt;
baton contains:&lt;br /&gt;
data - holds the mail object of the current selected contact&lt;br /&gt;
&lt;br /&gt;
data.threadKey - &lt;br /&gt;
data.threadPosition - &lt;br /&gt;
data.threadSize - &lt;br /&gt;
tracker&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/attachment/links ==&lt;br /&gt;
The point for actions related to the attachments of a mail.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail == &lt;br /&gt;
The point for the detail view of a selected mail. &lt;br /&gt;
The baton is forwarded.&lt;br /&gt;
It is followed by points for each mail detail:&lt;br /&gt;
&lt;br /&gt;
* io.ox/mail/detail/contact-picture&lt;br /&gt;
* io.ox/mail/detail/receiveddate&lt;br /&gt;
* io.ox/mail/detail/fromlist&lt;br /&gt;
* io.ox/mail/detail/thread-position&lt;br /&gt;
* io.ox/mail/detail/flag&lt;br /&gt;
* io.ox/mail/detail/subject&lt;br /&gt;
* io.ox/mail/detail/tocopy&lt;br /&gt;
* io.ox/mail/detail/attachments&lt;br /&gt;
* io.ox/mail/detail/inline-links&lt;br /&gt;
* io.ox/mail/detail/phishing-warning&lt;br /&gt;
* io.ox/mail/detail/externalresources-warning&lt;br /&gt;
* io.ox/mail/detail/content&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail/notification ==&lt;br /&gt;
The point for the notification handling.&lt;br /&gt;
A extended mail object is forwarded.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail/notification/update-notification ==&lt;br /&gt;
The point to remove read mails in notification Area.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/dnd/actions ==&lt;br /&gt;
The point for mail import via drag &amp;amp; drop.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/links/inline ==&lt;br /&gt;
The Point for inserting actions like reply &amp;amp; delete.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/settings/detail ==&lt;br /&gt;
The point for the mail settings detailpage.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/settings/detail/section ==&lt;br /&gt;
This point is not longer supported.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/thread ==&lt;br /&gt;
The Point for inserting actions related to the whole thread like move &amp;amp; delete.&lt;br /&gt;
The baton is forwarded.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/vgrid/options ==&lt;br /&gt;
The point for applying options to the vgrid related to the mail app.&lt;br /&gt;
&lt;br /&gt;
=== sort ===&lt;br /&gt;
* specifies default sort field&lt;br /&gt;
* in case threadview is enabled/used and default sort field is &#039;&#039;&#039;not&#039;&#039;&#039; set to &#039;thread&#039; user has to select &#039;sort by -&amp;gt; chat&#039; manually after each login/page refresh&lt;br /&gt;
* alternatively you can use sever setting &#039;&#039;&#039;&#039;io.ox/mail//vgrid/sort=&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by date&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 610&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by from&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 603&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by subject&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 607&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by label&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 102&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: show threads (if threadview is enabled), sort by date (if threadview are disabled)&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: &#039;thread&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/vgrid/toolbar ==&lt;br /&gt;
The point for extending the vgrid toolbar in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/toolbar ==&lt;br /&gt;
The point for inserting inline buttons on top of the mail write view.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/send ==&lt;br /&gt;
The point for the action related to the send button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
== io.ox/mail/write/autoCompleteItem (since 7.4.2) ==&lt;br /&gt;
The point for extending the autocomplete items in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/contactItem (since 7.4.2) ==&lt;br /&gt;
The point for extending the contact list items in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/contactPicture ==&lt;br /&gt;
The point for extending contact picture in autocomplete and contact list.&lt;br /&gt;
== io.ox/mail/write/displayName ==&lt;br /&gt;
The point for extending display name in autocomplete and contact list.&lt;br /&gt;
== io.ox/mail/write/emailAddress ==&lt;br /&gt;
The point for extending email address in autocomplete and contact list.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/draft ==&lt;br /&gt;
The point for the action related to the save button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/discard ==&lt;br /&gt;
The point for the action related to the discard button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;br /&gt;
[[Category:Extension points]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Extension_points_for_email&amp;diff=16625</id>
		<title>AppSuite:Extension points for email</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Extension_points_for_email&amp;diff=16625"/>
		<updated>2013-12-03T09:37:37Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* io.ox/mail/write/autoCompleteItem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stability-experimental}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Extension points for e-mail&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Abstract:&#039;&#039;&#039; This describes extension points for the e-mail module, allowing you to add functions.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/all/actions ==&lt;br /&gt;
The point for the &amp;quot;all&amp;quot; actions dropdown in the detail view of a selected mail.&lt;br /&gt;
This place should be used for actions in context with all involved contacts.&lt;br /&gt;
The baton is forwarded to the the single action functions.&lt;br /&gt;
&lt;br /&gt;
baton contains:&lt;br /&gt;
data - holds the mail object of the current selected contact&lt;br /&gt;
&lt;br /&gt;
data.threadKey - &lt;br /&gt;
data.threadPosition - &lt;br /&gt;
data.threadSize - &lt;br /&gt;
tracker&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/attachment/links ==&lt;br /&gt;
The point for actions related to the attachments of a mail.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail == &lt;br /&gt;
The point for the detail view of a selected mail. &lt;br /&gt;
The baton is forwarded.&lt;br /&gt;
It is followed by points for each mail detail:&lt;br /&gt;
&lt;br /&gt;
* io.ox/mail/detail/contact-picture&lt;br /&gt;
* io.ox/mail/detail/receiveddate&lt;br /&gt;
* io.ox/mail/detail/fromlist&lt;br /&gt;
* io.ox/mail/detail/thread-position&lt;br /&gt;
* io.ox/mail/detail/flag&lt;br /&gt;
* io.ox/mail/detail/subject&lt;br /&gt;
* io.ox/mail/detail/tocopy&lt;br /&gt;
* io.ox/mail/detail/attachments&lt;br /&gt;
* io.ox/mail/detail/inline-links&lt;br /&gt;
* io.ox/mail/detail/phishing-warning&lt;br /&gt;
* io.ox/mail/detail/externalresources-warning&lt;br /&gt;
* io.ox/mail/detail/content&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail/notification ==&lt;br /&gt;
The point for the notification handling.&lt;br /&gt;
A extended mail object is forwarded.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail/notification/update-notification ==&lt;br /&gt;
The point to remove read mails in notification Area.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/dnd/actions ==&lt;br /&gt;
The point for mail import via drag &amp;amp; drop.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/links/inline ==&lt;br /&gt;
The Point for inserting actions like reply &amp;amp; delete.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/settings/detail ==&lt;br /&gt;
The point for the mail settings detailpage.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/settings/detail/section ==&lt;br /&gt;
This point is not longer supported.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/thread ==&lt;br /&gt;
The Point for inserting actions related to the whole thread like move &amp;amp; delete.&lt;br /&gt;
The baton is forwarded.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/vgrid/options ==&lt;br /&gt;
The point for applying options to the vgrid related to the mail app.&lt;br /&gt;
&lt;br /&gt;
=== sort ===&lt;br /&gt;
* specifies default sort field&lt;br /&gt;
* in case threadview is enabled/used and default sort field is &#039;&#039;&#039;not&#039;&#039;&#039; set to &#039;thread&#039; user has to select &#039;sort by -&amp;gt; chat&#039; manually after each login/page refresh&lt;br /&gt;
* alternatively you can use sever setting &#039;&#039;&#039;&#039;io.ox/mail//vgrid/sort=&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by date&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 610&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by from&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 603&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by subject&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 607&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by label&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 102&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: show threads (if threadview is enabled), sort by date (if threadview are disabled)&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: &#039;thread&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/vgrid/toolbar ==&lt;br /&gt;
The point for extending the vgrid toolbar in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/toolbar ==&lt;br /&gt;
The point for inserting inline buttons on top of the mail write view.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/send ==&lt;br /&gt;
The point for the action related to the send button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
== io.ox/mail/write/autoCompleteItem (since 7.4.2) ==&lt;br /&gt;
The point for extending the autocomplete items in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/contactItem ==&lt;br /&gt;
The point for extending the contact list items in the mail app.&lt;br /&gt;
== io.ox/mail/write/contactPicture ==&lt;br /&gt;
The point for extending contact picture in autocomplete and contact list.&lt;br /&gt;
== io.ox/mail/write/displayName ==&lt;br /&gt;
The point for extending display name in autocomplete and contact list.&lt;br /&gt;
== io.ox/mail/write/emailAddress ==&lt;br /&gt;
The point for extending email address in autocomplete and contact list.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/draft ==&lt;br /&gt;
The point for the action related to the save button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/discard ==&lt;br /&gt;
The point for the action related to the discard button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;br /&gt;
[[Category:Extension points]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Extension_points_for_email&amp;diff=16624</id>
		<title>AppSuite:Extension points for email</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Extension_points_for_email&amp;diff=16624"/>
		<updated>2013-12-03T09:18:00Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* io.ox/mail/write/actions/send */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stability-experimental}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Extension points for e-mail&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Abstract:&#039;&#039;&#039; This describes extension points for the e-mail module, allowing you to add functions.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/all/actions ==&lt;br /&gt;
The point for the &amp;quot;all&amp;quot; actions dropdown in the detail view of a selected mail.&lt;br /&gt;
This place should be used for actions in context with all involved contacts.&lt;br /&gt;
The baton is forwarded to the the single action functions.&lt;br /&gt;
&lt;br /&gt;
baton contains:&lt;br /&gt;
data - holds the mail object of the current selected contact&lt;br /&gt;
&lt;br /&gt;
data.threadKey - &lt;br /&gt;
data.threadPosition - &lt;br /&gt;
data.threadSize - &lt;br /&gt;
tracker&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/attachment/links ==&lt;br /&gt;
The point for actions related to the attachments of a mail.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail == &lt;br /&gt;
The point for the detail view of a selected mail. &lt;br /&gt;
The baton is forwarded.&lt;br /&gt;
It is followed by points for each mail detail:&lt;br /&gt;
&lt;br /&gt;
* io.ox/mail/detail/contact-picture&lt;br /&gt;
* io.ox/mail/detail/receiveddate&lt;br /&gt;
* io.ox/mail/detail/fromlist&lt;br /&gt;
* io.ox/mail/detail/thread-position&lt;br /&gt;
* io.ox/mail/detail/flag&lt;br /&gt;
* io.ox/mail/detail/subject&lt;br /&gt;
* io.ox/mail/detail/tocopy&lt;br /&gt;
* io.ox/mail/detail/attachments&lt;br /&gt;
* io.ox/mail/detail/inline-links&lt;br /&gt;
* io.ox/mail/detail/phishing-warning&lt;br /&gt;
* io.ox/mail/detail/externalresources-warning&lt;br /&gt;
* io.ox/mail/detail/content&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail/notification ==&lt;br /&gt;
The point for the notification handling.&lt;br /&gt;
A extended mail object is forwarded.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/detail/notification/update-notification ==&lt;br /&gt;
The point to remove read mails in notification Area.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/dnd/actions ==&lt;br /&gt;
The point for mail import via drag &amp;amp; drop.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/links/inline ==&lt;br /&gt;
The Point for inserting actions like reply &amp;amp; delete.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/settings/detail ==&lt;br /&gt;
The point for the mail settings detailpage.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/settings/detail/section ==&lt;br /&gt;
This point is not longer supported.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/thread ==&lt;br /&gt;
The Point for inserting actions related to the whole thread like move &amp;amp; delete.&lt;br /&gt;
The baton is forwarded.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/vgrid/options ==&lt;br /&gt;
The point for applying options to the vgrid related to the mail app.&lt;br /&gt;
&lt;br /&gt;
=== sort ===&lt;br /&gt;
* specifies default sort field&lt;br /&gt;
* in case threadview is enabled/used and default sort field is &#039;&#039;&#039;not&#039;&#039;&#039; set to &#039;thread&#039; user has to select &#039;sort by -&amp;gt; chat&#039; manually after each login/page refresh&lt;br /&gt;
* alternatively you can use sever setting &#039;&#039;&#039;&#039;io.ox/mail//vgrid/sort=&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by date&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 610&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by from&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 603&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by subject&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 607&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: by label&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: 102&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;option: show threads (if threadview is enabled), sort by date (if threadview are disabled)&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort: &#039;thread&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/vgrid/toolbar ==&lt;br /&gt;
The point for extending the vgrid toolbar in the mail app.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/toolbar ==&lt;br /&gt;
The point for inserting inline buttons on top of the mail write view.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/send ==&lt;br /&gt;
The point for the action related to the send button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
== io.ox/mail/write/autoCompleteItem ==&lt;br /&gt;
The point for extending the autocomplete items in the mail app.&lt;br /&gt;
== io.ox/mail/write/contactItem ==&lt;br /&gt;
The point for extending the contact list items in the mail app.&lt;br /&gt;
== io.ox/mail/write/contactPicture ==&lt;br /&gt;
The point for extending contact picture in autocomplete and contact list.&lt;br /&gt;
== io.ox/mail/write/displayName ==&lt;br /&gt;
The point for extending display name in autocomplete and contact list.&lt;br /&gt;
== io.ox/mail/write/emailAddress ==&lt;br /&gt;
The point for extending email address in autocomplete and contact list.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/draft ==&lt;br /&gt;
The point for the action related to the save button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
&lt;br /&gt;
== io.ox/mail/write/actions/discard ==&lt;br /&gt;
The point for the action related to the discard button.&lt;br /&gt;
The baton is available.&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;br /&gt;
[[Category:Extension points]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Debugging_the_UI&amp;diff=15548</id>
		<title>AppSuite:Debugging the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Debugging_the_UI&amp;diff=15548"/>
		<updated>2013-08-29T10:04:16Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Enable/disable capability via URL hash */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Debugging the UI&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Synopsis:&#039;&#039;&#039; A collection of hints to debug during UI development&lt;br /&gt;
__TOC__&lt;br /&gt;
== What capabilities are available? ==&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-settings&amp;quot;&amp;gt; &lt;br /&gt;
_(ox.serverConfig.capabilities).pluck(&amp;quot;id&amp;quot;).sort();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Check settings ==&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-settings&amp;quot;&amp;gt; &lt;br /&gt;
// check core settings&lt;br /&gt;
require(&#039;settings!io.ox/core&#039;).get();&lt;br /&gt;
// check mail settings&lt;br /&gt;
require(&#039;settings!io.ox/mail&#039;).get();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Debug relogin ==&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-settings&amp;quot;&amp;gt; &lt;br /&gt;
ox.autoLogoutRestartDebug();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable/disable capability via URL hash ==&lt;br /&gt;
Just add the parameter &amp;quot;cap&amp;quot; to URL hash. A leading minus disables a capability. Multiple capabilities separated by comma. Example:&lt;br /&gt;
&amp;lt;pre language=&amp;quot;none&amp;quot;&amp;gt; &lt;br /&gt;
...&amp;amp;cap=emoji,-calendar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:External_libraries_for_the_UI&amp;diff=14877</id>
		<title>AppSuite:External libraries for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:External_libraries_for_the_UI&amp;diff=14877"/>
		<updated>2013-06-28T09:20:24Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* UI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stability-stable}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Abstract: &#039;&#039;&#039; An overview over libraries that are used by the UI - either when running or when building it:&lt;br /&gt;
&lt;br /&gt;
== UI ==&lt;br /&gt;
{|&lt;br /&gt;
! Name &amp;amp; Link &lt;br /&gt;
! License &lt;br /&gt;
! Modified?&lt;br /&gt;
|-&lt;br /&gt;
| [http://jquery.com/ jQuery] + jQuery UI&lt;br /&gt;
| MIT / GPL Version 2&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.modernizr.com/ Modernizr] &lt;br /&gt;
| MIT / BSD&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://requirejs.org/ RequireJS]&lt;br /&gt;
| MIT / BSD&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://documentcloud.github.com/underscore/ Underscore.js] &lt;br /&gt;
| MIT&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://cldr.unicode.org/ Unicode CLDR]&lt;br /&gt;
| MIT&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Twitter Bootstrap]&lt;br /&gt;
| Apache&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/eternicode/bootstrap-datepicker Bootstrap Datepicker]&lt;br /&gt;
| Apache&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| [http://mediaelementjs.com/ MediaElement.js]&lt;br /&gt;
| MIT / GPL Version 2&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://brad.is/coding/BigScreen/ BigScreen] &lt;br /&gt;
| Apache 2.0&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://mobiscroll.com/ Mobiscroll] &lt;br /&gt;
| MIT&lt;br /&gt;
| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
{|&lt;br /&gt;
! Name &amp;amp; Link &lt;br /&gt;
! License &lt;br /&gt;
! Modified?&lt;br /&gt;
|-&lt;br /&gt;
| [http://nodejs.org Node.js] &amp;lt;em&amp;gt;not included&amp;lt;/em&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/mde/jake Jake] &lt;br /&gt;
| Apache&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/mishoo/UglifyJS#readme UglifiyJS]&lt;br /&gt;
| BSD&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://jshint.com/ JSHint]&lt;br /&gt;
| modified MIT license&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://vowsjs.org/ Vows]&lt;br /&gt;
| BSD&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/cloudhead/eyes.js eyes.js]&lt;br /&gt;
| BSD&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/isaacs/rimraf rimraf]&lt;br /&gt;
| BSD&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://lesscss.org/ LESS]&lt;br /&gt;
| Apache&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/isaacs/sax-js sax-js]&lt;br /&gt;
| MIT&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Leonidas-from-XIV/node-xml2js node-xml2js]&lt;br /&gt;
| MIT&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/zzdhidden/node-jquery-deferred node-jquery-deferred]&lt;br /&gt;
| MIT&lt;br /&gt;
| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]][[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:External_libraries_for_the_UI&amp;diff=14876</id>
		<title>AppSuite:External libraries for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:External_libraries_for_the_UI&amp;diff=14876"/>
		<updated>2013-06-28T09:20:03Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* UI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stability-stable}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Abstract: &#039;&#039;&#039; An overview over libraries that are used by the UI - either when running or when building it:&lt;br /&gt;
&lt;br /&gt;
== UI ==&lt;br /&gt;
{|&lt;br /&gt;
! Name &amp;amp; Link &lt;br /&gt;
! License &lt;br /&gt;
! Modified?&lt;br /&gt;
|-&lt;br /&gt;
| [http://jquery.com/ jQuery] + jQuery UI&lt;br /&gt;
| MIT / GPL Version 2&lt;br /&gt;
| no&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.modernizr.com/ Modernizr] &lt;br /&gt;
| MIT / BSD&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://requirejs.org/ RequireJS]&lt;br /&gt;
| MIT / BSD&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://documentcloud.github.com/underscore/ Underscore.js] &lt;br /&gt;
| MIT&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://cldr.unicode.org/ Unicode CLDR]&lt;br /&gt;
| MIT&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Twitter Bootstrap]&lt;br /&gt;
| Apache&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/eternicode/bootstrap-datepicker Bootstrap Datepicker]&lt;br /&gt;
| Apache&lt;br /&gt;
| YES&lt;br /&gt;
|-&lt;br /&gt;
| [http://mediaelementjs.com/ MediaElement.js]&lt;br /&gt;
| MIT / GPL Version 2&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://brad.is/coding/BigScreen/ BigScreen] &lt;br /&gt;
| Apache 2.0&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://mobiscroll.com/ Mobiscroll] &lt;br /&gt;
| MIT&lt;br /&gt;
| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
{|&lt;br /&gt;
! Name &amp;amp; Link &lt;br /&gt;
! License &lt;br /&gt;
! Modified?&lt;br /&gt;
|-&lt;br /&gt;
| [http://nodejs.org Node.js] &amp;lt;em&amp;gt;not included&amp;lt;/em&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/mde/jake Jake] &lt;br /&gt;
| Apache&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/mishoo/UglifyJS#readme UglifiyJS]&lt;br /&gt;
| BSD&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://jshint.com/ JSHint]&lt;br /&gt;
| modified MIT license&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://vowsjs.org/ Vows]&lt;br /&gt;
| BSD&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/cloudhead/eyes.js eyes.js]&lt;br /&gt;
| BSD&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/isaacs/rimraf rimraf]&lt;br /&gt;
| BSD&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [http://lesscss.org/ LESS]&lt;br /&gt;
| Apache&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/isaacs/sax-js sax-js]&lt;br /&gt;
| MIT&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Leonidas-from-XIV/node-xml2js node-xml2js]&lt;br /&gt;
| MIT&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/zzdhidden/node-jquery-deferred node-jquery-deferred]&lt;br /&gt;
| MIT&lt;br /&gt;
| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]][[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13738</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13738"/>
		<updated>2013-04-12T08:48:32Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Appsuite used LESS as dynamic stylesheet language. LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions.&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/#docs LESS.JS] documentation first.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% || Percentage increase of the dark pigment content on hover effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff || Lasso frame color&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ || Default background color in week view&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ || Background color outside of the mean working time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ || Color of the Line indicating the current time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px || With of the time labels on the left side&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ || Color of appointments, which are not in focus&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */|| Background color of the current day&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [[#definitions.less | definitions.less]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://bradfrost.github.io/this-is-responsive/resources.html Responsive design]&lt;br /&gt;
&lt;br /&gt;
[http://lesscss.org/ LESS]&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13737</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13737"/>
		<updated>2013-04-12T08:48:25Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Appsuite used LESS as dynamic stylesheet language. LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions.&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/#docs LESS.JS] documentation first.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% || Percentage increase of the dark pigment content on hover effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff || Lasso frame color&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ || Default background color in week view&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ || Background color outside of the mean working time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ || Color of the Line indicating the current time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px || With of the time labels on the left side&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ || Color of appointments, which are not in focus&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */|| Background color of the current day&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [[#definitions.less | definitions.less]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://bradfrost.github.io/this-is-responsive/resources.html Responsive design]&lt;br /&gt;
[http://lesscss.org/ LESS]&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13736</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13736"/>
		<updated>2013-04-12T08:46:54Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Best practice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Appsuite used LESS as dynamic stylesheet language. LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions.&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/#docs LESS.JS] documentation first.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% || Percentage increase of the dark pigment content on hover effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff || Lasso frame color&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ || Default background color in week view&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ || Background color outside of the mean working time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ || Color of the Line indicating the current time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px || With of the time labels on the left side&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ || Color of appointments, which are not in focus&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */|| Background color of the current day&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [[#definitions.less | definitions.less]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://bradfrost.github.io/this-is-responsive/resources.html Responsive design]&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13727</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13727"/>
		<updated>2013-04-12T08:37:42Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* LESS.JS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Appsuite used LESS as dynamic stylesheet language. LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions.&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/#docs LESS.JS] documentation first.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% || Percentage increase of the dark pigment content on hover effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff || Lasso frame color&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ || Default background color in week view&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ || Background color outside of the mean working time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ || Color of the Line indicating the current time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px || With of the time labels on the left side&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ || Color of appointments, which are not in focus&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */|| Background color of the current day&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [[#definitions.less | definitions.less]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13725</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13725"/>
		<updated>2013-04-12T08:34:16Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* LESS.JS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/#docs LESS.JS] documentation first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% || Percentage increase of the dark pigment content on hover effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff || Lasso frame color&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ || Default background color in week view&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ || Background color outside of the mean working time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ || Color of the Line indicating the current time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px || With of the time labels on the left side&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ || Color of appointments, which are not in focus&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */|| Background color of the current day&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [[#definitions.less | definitions.less]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13717</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13717"/>
		<updated>2013-04-12T08:21:58Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* global OX Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% || Percentage increase of the dark pigment content on hover effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff || Lasso frame color&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ || Default background color in week view&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ || Background color outside of the mean working time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ || Color of the Line indicating the current time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px || With of the time labels on the left side&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ || Color of appointments, which are not in focus&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */|| Background color of the current day&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [[#definitions.less | definitions.less]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13716</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13716"/>
		<updated>2013-04-12T08:21:47Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* global OX Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% || Percentage increase of the dark pigment content on hover effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff || Lasso frame color&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ || Default background color in week view&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ || Background color outside of the mean working time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ || Color of the Line indicating the current time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px || With of the time labels on the left side&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ || Color of appointments, which are not in focus&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */|| Background color of the current day&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [[#definitions.less definitions.less]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13714</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13714"/>
		<updated>2013-04-12T08:21:10Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* global OX Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% || Percentage increase of the dark pigment content on hover effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff || Lasso frame color&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ || Default background color in week view&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ || Background color outside of the mean working time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ || Color of the Line indicating the current time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px || With of the time labels on the left side&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ || Color of appointments, which are not in focus&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */|| Background color of the current day&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [[#definitions.less]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13713</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13713"/>
		<updated>2013-04-12T08:19:47Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Month View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% || Percentage increase of the dark pigment content on hover effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff || Lasso frame color&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ || Default background color in week view&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ || Background color outside of the mean working time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ || Color of the Line indicating the current time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px || With of the time labels on the left side&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ || Color of appointments, which are not in focus&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */|| Background color of the current day&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [#definitions.less]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13711</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13711"/>
		<updated>2013-04-12T08:18:03Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Week View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% || Percentage increase of the dark pigment content on hover effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff || Lasso frame color&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ || Default background color in week view&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ || Background color outside of the mean working time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ || Color of the Line indicating the current time&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px || With of the time labels on the left side&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px || Height of the control toolbar &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [#definitions.less]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13703</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13703"/>
		<updated>2013-04-12T08:13:26Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Appointment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% || Percentage increase of the dark pigment content on hover effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [#definitions.less]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13702</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13702"/>
		<updated>2013-04-12T08:10:15Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Appointment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% || &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [#definitions.less]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13700</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13700"/>
		<updated>2013-04-12T08:07:58Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Appointment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word &#039;&#039;Background&#039;&#039; will always refer to the background color. Variables containing &#039;&#039;Color&#039;&#039; will refer to the foreground color of an element, like color of a font. &#039;&#039;Hover&#039;&#039; in most cases means &amp;quot;hovered&amp;quot; elements. &#039;&#039;Active&#039;&#039; relates to the currently selected or active item. Elements that are supposed to catch the users eye can use the &#039;&#039;Highlight&#039;&#039; class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || #333 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || #ccc || &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || #ccc ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || #888 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || #222 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || #555 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||@white ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00 /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360 /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [#definitions.less]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13656</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13656"/>
		<updated>2013-04-11T14:48:38Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* global OX Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [#definitions.less]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13655</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13655"/>
		<updated>2013-04-11T14:48:02Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* global OX Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at []&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13654</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13654"/>
		<updated>2013-04-11T14:40:42Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* global OX Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13645</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13645"/>
		<updated>2013-04-11T14:27:21Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* OX Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13644</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13644"/>
		<updated>2013-04-11T14:26:55Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Sample */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13628</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13628"/>
		<updated>2013-04-11T14:18:46Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Sample */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.bordered {&lt;br /&gt;
  border-top: dotted 1px black;&lt;br /&gt;
  border-bottom: solid 2px black;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.post a {&lt;br /&gt;
  color: red;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13626</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13626"/>
		<updated>2013-04-11T14:18:09Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.bordered {&lt;br /&gt;
  border-top: dotted 1px black;&lt;br /&gt;
  border-bottom: solid 2px black;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.post a {&lt;br /&gt;
  color: red;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13622</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13622"/>
		<updated>2013-04-11T14:14:49Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* OX Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.bordered {&lt;br /&gt;
  border-top: dotted 1px black;&lt;br /&gt;
  border-bottom: solid 2px black;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.post a {&lt;br /&gt;
  color: red;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13620</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13620"/>
		<updated>2013-04-11T14:13:23Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* OX Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.bordered {&lt;br /&gt;
  border-top: dotted 1px black;&lt;br /&gt;
  border-bottom: solid 2px black;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.post a {&lt;br /&gt;
  color: red;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel: content-box) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select: none) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius: 0px) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow: none) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor: #888888, @endColor: #333333) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1: #000000, @color2: #555555, @color3: #ffffff) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition: all 1s linear) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type: auto) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type: auto) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type: auto) ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type: hidden) ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13616</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13616"/>
		<updated>2013-04-11T14:09:26Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.bordered {&lt;br /&gt;
  border-top: dotted 1px black;&lt;br /&gt;
  border-bottom: solid 2px black;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.post a {&lt;br /&gt;
  color: red;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.box-sizing(@boxmodel: content-box) &lt;br /&gt;
.user-select(@select: none) &lt;br /&gt;
.border-radius(@radius: 0px) &lt;br /&gt;
.box-shadow(@shadow: none) &lt;br /&gt;
.vertical-gradient(@startColor: #888888, @endColor: #333333) &lt;br /&gt;
.radial-gradient(@color1: #000000, @color2: #555555, @color3: #ffffff) &lt;br /&gt;
.transition(@transition: all 1s linear) &lt;br /&gt;
.animation(@animation) &lt;br /&gt;
.animation-name(@name) &lt;br /&gt;
.ellipsis&lt;br /&gt;
.overflow(@type: auto) &lt;br /&gt;
.overflow-x(@type: auto) &lt;br /&gt;
.overflow-y(@type: auto) &lt;br /&gt;
.backface-visibility(@type: hidden)&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13587</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13587"/>
		<updated>2013-04-11T13:23:54Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.bordered {&lt;br /&gt;
  border-top: dotted 1px black;&lt;br /&gt;
  border-bottom: solid 2px black;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.post a {&lt;br /&gt;
  color: red;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13585</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13585"/>
		<updated>2013-04-11T13:20:25Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
.post a {&lt;br /&gt;
  color: red;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13584</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13584"/>
		<updated>2013-04-11T13:20:17Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-less&amp;quot;&amp;gt;&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
.post a {&lt;br /&gt;
  color: red;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13583</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13583"/>
		<updated>2013-04-11T13:20:02Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
.post a {&lt;br /&gt;
  color: red;&lt;br /&gt;
  .bordered;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13581</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13581"/>
		<updated>2013-04-11T13:05:36Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Mixins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13578</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13578"/>
		<updated>2013-04-11T12:52:12Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* LESS.JS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/ LESS.JS] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13577</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13577"/>
		<updated>2013-04-11T12:51:44Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* LESS.JS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [[http://lesscss.org/]] first&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13576</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13576"/>
		<updated>2013-04-11T12:51:24Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* File structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/] first&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13570</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13570"/>
		<updated>2013-04-11T12:45:40Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Foldertree */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground || ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13569</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13569"/>
		<updated>2013-04-11T12:44:25Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Week View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13568</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13568"/>
		<updated>2013-04-11T12:43:52Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Week View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13567</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13567"/>
		<updated>2013-04-11T12:43:23Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Week View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13565</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13565"/>
		<updated>2013-04-11T12:42:19Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Appointment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13564</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13564"/>
		<updated>2013-04-11T12:41:16Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Calendar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[form login]] (and provide your own login page), you might want to also theme the login page. Learn here, how to do this.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13562</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13562"/>
		<updated>2013-04-11T12:39:55Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Calendar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|-&lt;br /&gt;
| @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBackground                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @paginationBorder                    || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @paginationActiveBackground          || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555 /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888 /* dark gray */||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3 ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15% ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || #aeaeff ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff /* white */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0 /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00 /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff /* light blue */||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13501</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13501"/>
		<updated>2013-04-11T09:31:16Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Calendar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555;         /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888; ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4; ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3; ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15%; ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3; ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || rgba(0, 136, 204, 0.30); ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff;               /* whitw */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0;           /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00;            /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa;     /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday || #daefff ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px; ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px; ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13500</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=13500"/>
		<updated>2013-04-11T09:30:57Z</updated>

		<summary type="html">&lt;p&gt;Christoph.hellweg: /* Calendar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;$APPSUITE_ROOT/apps/themes/$YOUR_UNIQUE_THEME_NAME&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
==== Font ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
| @baseFontFamily       || @sansFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @baseLineHeight       || 20px&lt;br /&gt;
|-&lt;br /&gt;
| @altFontFamily        || @serifFontFamily&lt;br /&gt;
|-&lt;br /&gt;
| @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headingsFontWeight   || bold&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeLarge        || @baseFontSize * 1.25&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeSmall        || @baseFontSize * 0.85&lt;br /&gt;
|-&lt;br /&gt;
| @fontSizeMini         || @baseFontSize * 0.75&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Colors ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @bodyBackground       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @textColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @linkColor            || #08c&lt;br /&gt;
|-&lt;br /&gt;
| @linkColorHover       || darken(@linkColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColor      ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| @linkAccentColorHover || darken(@linkAccentColor, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @headingsColor        || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black                || #000&lt;br /&gt;
|-&lt;br /&gt;
| @grayDarker           || #222&lt;br /&gt;
|-&lt;br /&gt;
| @grayDark             || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray                 || #555&lt;br /&gt;
|-&lt;br /&gt;
| @grayLight            || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @grayLighter          || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white                || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue                 || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blueDark             || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blueLight            || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green                || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @greenLight           || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red                  || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow               || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange               || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink                 || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple               || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Space ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @paddingLarge          || 11px 19px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingSmall          || 2px 10px&lt;br /&gt;
|-&lt;br /&gt;
| @paddingMini           || 0 6px&lt;br /&gt;
|-&lt;br /&gt;
| @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackground                    || @white&lt;br /&gt;
|-&lt;br /&gt;
| @btnBackgroundHighlight           || darken(@white, 10%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnBorder                        || #bbb&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackground             || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @btnPrimaryBackgroundHighlight    || spin(@btnPrimaryBackground, 20%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackground                || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| @btnInfoBackgroundHighlight       || #2f96b4&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackground             || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| @btnSuccessBackgroundHighlight    || #51a351&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackground             || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @btnWarningBackgroundHighlight    || @orange&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackground              || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| @btnDangerBackgroundHighlight     || #bd362f&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackground             || #444&lt;br /&gt;
|-&lt;br /&gt;
| @btnInverseBackgroundHighlight    || @grayDarker&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBackground           || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownBorder               || rgba(0,0,0,.2)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownDividerBottom        || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColor            || @grayDark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorHover       || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkColorActive      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundActive || @linkColor&lt;br /&gt;
|-&lt;br /&gt;
| @dropdownLinkBackgroundHover  || @dropdownLinkBackgroundActive&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSidepanelBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSectionTitleColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeActiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreePassiveLabelColor ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeHoverBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeSelectedBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertreeCounterBadgeColor ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable || Default || Description &lt;br /&gt;
|-&lt;br /&gt;
| @appointmentReserved || #08c;        /* blue */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentTemporary || #ffbb00;    /* yellow */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentAbsent || #913f3f;       /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentFree || #8eb360;         /* green */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentPrivate || #555;         /* gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedFont || #888; ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentUnconfirmedAlpha || 0.4; ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3; ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentHoverPct || 15%; ||&lt;br /&gt;
|-&lt;br /&gt;
| @appointmentDeclinedAlpha || 0.3; ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewAppointmentLasso || rgba(0, 136, 204, 0.30); ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayIn || #fff;               /* whitw */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewDayOut || #e0e0e0;           /* grey */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeline || #f00;            /* red */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewAppointmentOut || #aaa;     /* light gray */ ||&lt;br /&gt;
|-&lt;br /&gt;
| @monthviewToday: #daefff || ||&lt;br /&gt;
|-&lt;br /&gt;
| @calendarToolbarHeight || 41px; ||&lt;br /&gt;
|-&lt;br /&gt;
| @weekviewTimeWith || 58px; ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you don’t have it installed with your frontend. In this case you don’t want to go to a complete build of a theme and reinstall it for every change. The trick is to create your theme and overwrite the default theme with it. You can then use the [[AppSuite:appserver|appserver]] proxy to ship your own version of the UI.&lt;br /&gt;
&lt;br /&gt;
To activate a theme on the backend, you have to add it to the &amp;lt;code&amp;gt;io.ox/core/settingsOptions//themes&amp;lt;/code&amp;gt; list.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;pre&amp;gt;io.ox/core/settingsOptions//themes/unicorn=Friendship is Magic&amp;lt;/pre&amp;gt; to &amp;lt;code&amp;gt;etc/settings/appsuite.properties&amp;lt;/code&amp;gt; add a theme named &amp;lt;code&amp;gt;unicorn&amp;lt;/code&amp;gt; with the name &amp;lt;code&amp;gt;Friendship is Magic&amp;lt;/code&amp;gt; to the list of themes, a user can choose. Find the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Christoph.hellweg</name></author>
	</entry>
</feed>