update: gitlist intégration update
This commit is contained in:
parent
ffce2a8ca9
commit
4b94f3f6ea
|
@ -1,5 +1,5 @@
|
||||||
name : gitlist
|
name : gitlist
|
||||||
page_title : module_title
|
page_title : Dépot Git
|
||||||
description : module_description
|
description : Le dépot de travail du framework
|
||||||
params : module_params
|
engine: blade
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ repositories[] = '/home/git/repositories/' ; Path to your repositories
|
||||||
[app]
|
[app]
|
||||||
debug = false
|
debug = false
|
||||||
cache = true
|
cache = true
|
||||||
theme = "default"
|
theme = "default_without_html"
|
||||||
title = ""
|
title = ""
|
||||||
|
|
||||||
[clone_button]
|
[clone_button]
|
||||||
|
|
2
public/themes/default_without_html/Makefile
Normal file
2
public/themes/default_without_html/Makefile
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
bootstrap:
|
||||||
|
lessc --compress less/bootstrap.less > css/style.css
|
13
public/themes/default_without_html/css/gitgraph.css
Normal file
13
public/themes/default_without_html/css/gitgraph.css
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
em {font-style:normal;}
|
||||||
|
|
||||||
|
#git-graph-container{ clear: both}
|
||||||
|
#rev-container, #rel-container {float:left;}
|
||||||
|
#git-graph-container li {list-style-type:none;height:28px;line-height:27px;overflow:hidden;}
|
||||||
|
#git-graph-container li .node-relation {font-family:'Bitstream Vera Sans Mono', 'Courier', monospace;}
|
||||||
|
#git-graph-container li .author {color:#666666;}
|
||||||
|
#git-graph-container li .time {color:#999999;font-size:80%}
|
||||||
|
#git-graph-container li a {color:#000000;}
|
||||||
|
#git-graph-container li a em {color:#BB0000;border-bottom:1px dotted #BBBBBB;text-decoration:none;font-style:normal;}
|
||||||
|
|
||||||
|
#rev-list {margin:0;padding:0 5px 0 0;}
|
||||||
|
#graph-raw-list {margin:0;}
|
5305
public/themes/default_without_html/css/style.css
Normal file
5305
public/themes/default_without_html/css/style.css
Normal file
File diff suppressed because it is too large
Load diff
BIN
public/themes/default_without_html/img/ajax-loader.gif
Normal file
BIN
public/themes/default_without_html/img/ajax-loader.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
BIN
public/themes/default_without_html/img/favicon.png
Normal file
BIN
public/themes/default_without_html/img/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 884 B |
BIN
public/themes/default_without_html/img/feed.png
Normal file
BIN
public/themes/default_without_html/img/feed.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 735 B |
Binary file not shown.
After Width: | Height: | Size: 8.6 KiB |
BIN
public/themes/default_without_html/img/glyphicons-halflings.png
Normal file
BIN
public/themes/default_without_html/img/glyphicons-halflings.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
1
public/themes/default_without_html/js/bootstrap.js
vendored
Normal file
1
public/themes/default_without_html/js/bootstrap.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/themes/default_without_html/js/codemirror.js
Normal file
1
public/themes/default_without_html/js/codemirror.js
Normal file
File diff suppressed because one or more lines are too long
17
public/themes/default_without_html/js/draw.js
Normal file
17
public/themes/default_without_html/js/draw.js
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
$(document).ready(function () {
|
||||||
|
var graphList = [];
|
||||||
|
|
||||||
|
if (!document.getElementById('graph-canvas')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#graph-raw-list li span.node-relation").each(function () {
|
||||||
|
graphList.push($(this).text());
|
||||||
|
})
|
||||||
|
|
||||||
|
gitGraph(document.getElementById('graph-canvas'), graphList);
|
||||||
|
|
||||||
|
if ($("#rev-container")) {
|
||||||
|
$("#rev-container").css("width", $('#git-graph-container').width() - $('#graph-canvas').width());
|
||||||
|
}
|
||||||
|
})
|
399
public/themes/default_without_html/js/gitgraph.js
Normal file
399
public/themes/default_without_html/js/gitgraph.js
Normal file
|
@ -0,0 +1,399 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2011, Terrence Lee <kill889@gmail.com>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of the <organization> nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var gitGraph = function (canvas, rawGraphList, config) {
|
||||||
|
if (!canvas.getContext) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof config === "undefined") {
|
||||||
|
config = {
|
||||||
|
unitSize: 28,
|
||||||
|
lineWidth: 3,
|
||||||
|
nodeRadius: 6
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
var flows = [];
|
||||||
|
var graphList = [];
|
||||||
|
|
||||||
|
var ctx = canvas.getContext("2d");
|
||||||
|
|
||||||
|
var init = function () {
|
||||||
|
var maxWidth = 0;
|
||||||
|
var i;
|
||||||
|
var l = rawGraphList.length;
|
||||||
|
var row;
|
||||||
|
var midStr;
|
||||||
|
|
||||||
|
for (i = 0; i < l; i++) {
|
||||||
|
midStr = rawGraphList[i].replace(/\s+/g, " ").replace(/^\s+|\s+$/g, "");
|
||||||
|
|
||||||
|
maxWidth = Math.max(midStr.replace(/(\_|\s)/g, "").length, maxWidth);
|
||||||
|
|
||||||
|
row = midStr.split("");
|
||||||
|
|
||||||
|
graphList.unshift(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
canvas.width = maxWidth * config.unitSize;
|
||||||
|
canvas.height = graphList.length * config.unitSize;
|
||||||
|
|
||||||
|
ctx.lineWidth = config.lineWidth;
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.lineCap = "round";
|
||||||
|
};
|
||||||
|
|
||||||
|
var genRandomStr = function () {
|
||||||
|
var chars = "0123456789ABCDEF";
|
||||||
|
var stringLength = 6;
|
||||||
|
var randomString = '', rnum, i;
|
||||||
|
for (i = 0; i < stringLength; i++) {
|
||||||
|
rnum = Math.floor(Math.random() * chars.length);
|
||||||
|
randomString += chars.substring(rnum, rnum + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return randomString;
|
||||||
|
};
|
||||||
|
|
||||||
|
var findFlow = function (id) {
|
||||||
|
var i = flows.length;
|
||||||
|
|
||||||
|
while (i-- && flows[i].id !== id) {}
|
||||||
|
|
||||||
|
return i;
|
||||||
|
};
|
||||||
|
|
||||||
|
var findColomn = function (symbol, row) {
|
||||||
|
var i = row.length;
|
||||||
|
|
||||||
|
while (i-- && row[i] !== symbol) {}
|
||||||
|
|
||||||
|
return i;
|
||||||
|
};
|
||||||
|
|
||||||
|
var findBranchOut = function (row) {
|
||||||
|
if (!row) {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
var i = row.length;
|
||||||
|
|
||||||
|
while (i-- &&
|
||||||
|
!(row[i - 1] && row[i] === "/" && row[i - 1] === "|") &&
|
||||||
|
!(row[i - 2] && row[i] === "_" && row[i - 2] === "|")) {}
|
||||||
|
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
var genNewFlow = function () {
|
||||||
|
var newId;
|
||||||
|
|
||||||
|
do {
|
||||||
|
newId = genRandomStr();
|
||||||
|
} while (findFlow(newId) !== -1);
|
||||||
|
|
||||||
|
return {id:newId, color:"#" + newId};
|
||||||
|
};
|
||||||
|
|
||||||
|
//draw method
|
||||||
|
var drawLineRight = function (x, y, color) {
|
||||||
|
ctx.strokeStyle = color;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(x, y + config.unitSize / 2);
|
||||||
|
ctx.lineTo(x + config.unitSize, y + config.unitSize / 2);
|
||||||
|
ctx.stroke();
|
||||||
|
};
|
||||||
|
|
||||||
|
var drawLineUp = function (x, y, color) {
|
||||||
|
ctx.strokeStyle = color;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(x, y + config.unitSize / 2);
|
||||||
|
ctx.lineTo(x, y - config.unitSize / 2);
|
||||||
|
ctx.stroke();
|
||||||
|
};
|
||||||
|
|
||||||
|
var drawNode = function (x, y, color) {
|
||||||
|
ctx.strokeStyle = color;
|
||||||
|
|
||||||
|
drawLineUp(x, y, color);
|
||||||
|
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.arc(x, y, config.nodeRadius, 0, Math.PI * 2, true);
|
||||||
|
ctx.fill();
|
||||||
|
};
|
||||||
|
|
||||||
|
var drawLineIn = function (x, y, color) {
|
||||||
|
ctx.strokeStyle = color;
|
||||||
|
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(x + config.unitSize, y + config.unitSize / 2);
|
||||||
|
ctx.lineTo(x, y - config.unitSize / 2);
|
||||||
|
ctx.stroke();
|
||||||
|
};
|
||||||
|
|
||||||
|
var drawLineOut = function (x, y, color) {
|
||||||
|
ctx.strokeStyle = color;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(x, y + config.unitSize / 2);
|
||||||
|
ctx.lineTo(x + config.unitSize, y - config.unitSize / 2);
|
||||||
|
ctx.stroke();
|
||||||
|
};
|
||||||
|
|
||||||
|
var draw = function (graphList) {
|
||||||
|
var colomn, colomnIndex, prevColomn, condenseIndex;
|
||||||
|
var x, y;
|
||||||
|
var color;
|
||||||
|
var nodePos, outPos;
|
||||||
|
var tempFlow;
|
||||||
|
var prevRowLength = 0;
|
||||||
|
var flowSwapPos = -1;
|
||||||
|
var lastLinePos;
|
||||||
|
var i, k, l;
|
||||||
|
var condenseCurrentLength, condensePrevLength = 0, condenseNextLength = 0;
|
||||||
|
|
||||||
|
var inlineIntersect = false;
|
||||||
|
|
||||||
|
//initiate for first row
|
||||||
|
for (i = 0, l = graphList[0].length; i < l; i++) {
|
||||||
|
if (graphList[0][i] !== "_" && graphList[0][i] !== " ") {
|
||||||
|
flows.push(genNewFlow());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
y = canvas.height - config.unitSize * 0.5;
|
||||||
|
|
||||||
|
//iterate
|
||||||
|
for (i = 0, l = graphList.length; i < l; i++) {
|
||||||
|
x = config.unitSize * 0.5;
|
||||||
|
|
||||||
|
currentRow = graphList[i];
|
||||||
|
nextRow = graphList[i + 1];
|
||||||
|
prevRow = graphList[i - 1];
|
||||||
|
|
||||||
|
flowSwapPos = -1;
|
||||||
|
|
||||||
|
condenseCurrentLength = currentRow.filter(function (val) {
|
||||||
|
return (val !== " " && val !== "_")
|
||||||
|
}).length;
|
||||||
|
|
||||||
|
if (nextRow) {
|
||||||
|
condenseNextLength = nextRow.filter(function (val) {
|
||||||
|
return (val !== " " && val !== "_")
|
||||||
|
}).length;
|
||||||
|
} else {
|
||||||
|
condenseNextLength = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//pre process begin
|
||||||
|
//use last row for analysing
|
||||||
|
if (prevRow) {
|
||||||
|
if (!inlineIntersect) {
|
||||||
|
//intersect might happen
|
||||||
|
for (colomnIndex = 0; colomnIndex < prevRowLength; colomnIndex++) {
|
||||||
|
if (prevRow[colomnIndex + 1] &&
|
||||||
|
(prevRow[colomnIndex] === "/" && prevRow[colomnIndex + 1] === "|") ||
|
||||||
|
((prevRow[colomnIndex] === "_" && prevRow[colomnIndex + 1] === "|") &&
|
||||||
|
(prevRow[colomnIndex + 2] === "/"))) {
|
||||||
|
|
||||||
|
flowSwapPos = colomnIndex;
|
||||||
|
|
||||||
|
//swap two flow
|
||||||
|
tempFlow = {id:flows[flowSwapPos].id, color:flows[flowSwapPos].color};
|
||||||
|
|
||||||
|
flows[flowSwapPos].id = flows[flowSwapPos + 1].id;
|
||||||
|
flows[flowSwapPos].color = flows[flowSwapPos + 1].color;
|
||||||
|
|
||||||
|
flows[flowSwapPos + 1].id = tempFlow.id;
|
||||||
|
flows[flowSwapPos + 1].color = tempFlow.color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (condensePrevLength < condenseCurrentLength &&
|
||||||
|
((nodePos = findColomn("*", currentRow)) !== -1 &&
|
||||||
|
(findColomn("_", currentRow) === -1))) {
|
||||||
|
|
||||||
|
flows.splice(nodePos - 1, 0, genNewFlow());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prevRowLength > currentRow.length &&
|
||||||
|
(nodePos = findColomn("*", prevRow)) !== -1) {
|
||||||
|
|
||||||
|
if (findColomn("_", currentRow) === -1 &&
|
||||||
|
findColomn("/", currentRow) === -1 &&
|
||||||
|
findColomn("\\", currentRow) === -1) {
|
||||||
|
|
||||||
|
flows.splice(nodePos + 1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} //done with the previous row
|
||||||
|
|
||||||
|
prevRowLength = currentRow.length; //store for next round
|
||||||
|
colomnIndex = 0; //reset index
|
||||||
|
condenseIndex = 0;
|
||||||
|
condensePrevLength = 0;
|
||||||
|
while (colomnIndex < currentRow.length) {
|
||||||
|
colomn = currentRow[colomnIndex];
|
||||||
|
|
||||||
|
if (colomn !== " " && colomn !== "_") {
|
||||||
|
++condensePrevLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (colomn === " " &&
|
||||||
|
currentRow[colomnIndex + 1] &&
|
||||||
|
currentRow[colomnIndex + 1] === "_" &&
|
||||||
|
currentRow[colomnIndex - 1] &&
|
||||||
|
currentRow[colomnIndex - 1] === "|") {
|
||||||
|
|
||||||
|
currentRow.splice(colomnIndex, 1);
|
||||||
|
|
||||||
|
currentRow[colomnIndex] = "/";
|
||||||
|
colomn = "/";
|
||||||
|
}
|
||||||
|
|
||||||
|
//create new flow only when no intersetc happened
|
||||||
|
if (flowSwapPos === -1 &&
|
||||||
|
colomn === "/" &&
|
||||||
|
currentRow[colomnIndex - 1] &&
|
||||||
|
currentRow[colomnIndex - 1] === "|") {
|
||||||
|
|
||||||
|
flows.splice(condenseIndex, 0, genNewFlow());
|
||||||
|
}
|
||||||
|
|
||||||
|
//change \ and / to | when it's in the last position of the whole row
|
||||||
|
if (colomn === "/" || colomn === "\\") {
|
||||||
|
if (!(colomn === "/" && findBranchOut(nextRow) === -1)) {
|
||||||
|
if ((lastLinePos = Math.max(findColomn("|", currentRow),
|
||||||
|
findColomn("*", currentRow))) !== -1 &&
|
||||||
|
(lastLinePos < colomnIndex - 1)) {
|
||||||
|
|
||||||
|
while (currentRow[++lastLinePos] === " ") {}
|
||||||
|
|
||||||
|
if (lastLinePos === colomnIndex) {
|
||||||
|
currentRow[colomnIndex] = "|";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (colomn === "*" &&
|
||||||
|
prevRow &&
|
||||||
|
prevRow[condenseIndex + 1] === "\\") {
|
||||||
|
flows.splice(condenseIndex + 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (colomn !== " ") {
|
||||||
|
++condenseIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
++colomnIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
condenseCurrentLength = currentRow.filter(function (val) {
|
||||||
|
return (val !== " " && val !== "_")
|
||||||
|
}).length;
|
||||||
|
|
||||||
|
//do some clean up
|
||||||
|
if (flows.length > condenseCurrentLength) {
|
||||||
|
flows.splice(condenseCurrentLength, flows.length - condenseCurrentLength);
|
||||||
|
}
|
||||||
|
|
||||||
|
colomnIndex = 0;
|
||||||
|
|
||||||
|
//a little inline analysis and draw process
|
||||||
|
while (colomnIndex < currentRow.length) {
|
||||||
|
colomn = currentRow[colomnIndex];
|
||||||
|
prevColomn = currentRow[colomnIndex - 1];
|
||||||
|
|
||||||
|
if (currentRow[colomnIndex] === " ") {
|
||||||
|
currentRow.splice(colomnIndex, 1);
|
||||||
|
x += config.unitSize;
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//inline interset
|
||||||
|
if ((colomn === "_" || colomn === "/") &&
|
||||||
|
currentRow[colomnIndex - 1] === "|" &&
|
||||||
|
currentRow[colomnIndex - 2] === "_") {
|
||||||
|
|
||||||
|
inlineIntersect = true;
|
||||||
|
|
||||||
|
tempFlow = flows.splice(colomnIndex - 2, 1)[0];
|
||||||
|
flows.splice(colomnIndex - 1, 0, tempFlow);
|
||||||
|
currentRow.splice(colomnIndex - 2, 1);
|
||||||
|
|
||||||
|
colomnIndex = colomnIndex - 1;
|
||||||
|
} else {
|
||||||
|
inlineIntersect = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
color = flows[colomnIndex].color;
|
||||||
|
|
||||||
|
switch (colomn) {
|
||||||
|
case "_" :
|
||||||
|
drawLineRight(x, y, color);
|
||||||
|
|
||||||
|
x += config.unitSize;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "*" :
|
||||||
|
drawNode(x, y, color);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "|" :
|
||||||
|
drawLineUp(x, y, color);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "/" :
|
||||||
|
if (prevColomn &&
|
||||||
|
(prevColomn === "/" ||
|
||||||
|
prevColomn === " ")) {
|
||||||
|
x -= config.unitSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
drawLineOut(x, y, color);
|
||||||
|
|
||||||
|
x += config.unitSize;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "\\" :
|
||||||
|
drawLineIn(x, y, color);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
++colomnIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
y -= config.unitSize;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
init();
|
||||||
|
draw(graphList);
|
||||||
|
};
|
3
public/themes/default_without_html/js/html5.js
Normal file
3
public/themes/default_without_html/js/html5.js
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
// HTML5 Shiv v3 | @jon_neal @afarkas @rem | MIT/GPL2 Licensed
|
||||||
|
// Uncompressed source: https://github.com/aFarkas/html5shiv
|
||||||
|
(function(a,b){function f(a){var c,d,e,f;b.documentMode>7?(c=b.createElement("font"),c.setAttribute("data-html5shiv",a.nodeName.toLowerCase())):c=b.createElement("shiv:"+a.nodeName);while(a.firstChild)c.appendChild(a.childNodes[0]);for(d=a.attributes,e=d.length,f=0;f<e;++f)d[f].specified&&c.setAttribute(d[f].nodeName,d[f].nodeValue);c.style.cssText=a.style.cssText,a.parentNode.replaceChild(c,a),c.originalElement=a}function g(a){var b=a.originalElement;while(a.childNodes.length)b.appendChild(a.childNodes[0]);a.parentNode.replaceChild(b,a)}function h(a,b){b=b||"all";var c=-1,d=[],e=a.length,f,g;while(++c<e){f=a[c],g=f.media||b;if(f.disabled||!/print|all/.test(g))continue;d.push(h(f.imports,g),f.cssText)}return d.join("")}function i(c){var d=new RegExp("(^|[\\s,{}])("+a.html5.elements.join("|")+")","gi"),e=c.split("{"),f=e.length,g=-1;while(++g<f)e[g]=e[g].split("}"),b.documentMode>7?e[g][e[g].length-1]=e[g][e[g].length-1].replace(d,'$1font[data-html5shiv="$2"]'):e[g][e[g].length-1]=e[g][e[g].length-1].replace(d,"$1shiv\\:$2"),e[g]=e[g].join("}");return e.join("{")}var c=function(a){return a.innerHTML="<x-element></x-element>",a.childNodes.length===1}(b.createElement("a")),d=function(a,b,c){return b.appendChild(a),(c=(c?c(a):a.currentStyle).display)&&b.removeChild(a)&&c==="block"}(b.createElement("nav"),b.documentElement,a.getComputedStyle),e={elements:"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video".split(" "),shivDocument:function(a){a=a||b;if(a.documentShived)return;a.documentShived=!0;var f=a.createElement,g=a.createDocumentFragment,h=a.getElementsByTagName("head")[0],i=function(a){f(a)};c||(e.elements.join(" ").replace(/\w+/g,i),a.createElement=function(a){var b=f(a);return b.canHaveChildren&&e.shivDocument(b.document),b},a.createDocumentFragment=function(){return e.shivDocument(g())});if(!d&&h){var j=f("div");j.innerHTML=["x<style>","article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}","audio{display:none}","canvas,video{display:inline-block;*display:inline;*zoom:1}","[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}","mark{background:#FF0;color:#000}","</style>"].join(""),h.insertBefore(j.lastChild,h.firstChild)}return a}};e.shivDocument(b),a.html5=e;if(c||!a.attachEvent)return;a.attachEvent("onbeforeprint",function(){if(a.html5.supportsXElement||!b.namespaces)return;b.namespaces.shiv||b.namespaces.add("shiv");var c=-1,d=new RegExp("^("+a.html5.elements.join("|")+")$","i"),e=b.getElementsByTagName("*"),g=e.length,j,k=i(h(function(a,b){var c=[],d=a.length;while(d)c.unshift(a[--d]);d=b.length;while(d)c.unshift(b[--d]);c.sort(function(a,b){return a.sourceIndex-b.sourceIndex}),d=c.length;while(d)c[--d]=c[d].styleSheet;return c}(b.getElementsByTagName("style"),b.getElementsByTagName("link"))));while(++c<g)j=e[c],d.test(j.nodeName)&&f(j);b.appendChild(b._shivedStyleSheet=b.createElement("style")).styleSheet.cssText=k}),a.attachEvent("onafterprint",function(){if(a.html5.supportsXElement||!b.namespaces)return;var c=-1,d=b.getElementsByTagName("*"),e=d.length,f;while(++c<e)f=d[c],f.originalElement&&g(f);b._shivedStyleSheet&&b._shivedStyleSheet.parentNode.removeChild(b._shivedStyleSheet)})})(this,document)
|
4
public/themes/default_without_html/js/jquery.js
vendored
Normal file
4
public/themes/default_without_html/js/jquery.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/themes/default_without_html/js/list.min.js
vendored
Normal file
1
public/themes/default_without_html/js/list.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
105
public/themes/default_without_html/js/main.js
Normal file
105
public/themes/default_without_html/js/main.js
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
$(function () {
|
||||||
|
$('.dropdown-toggle').dropdown();
|
||||||
|
var sourcecode = $('#sourcecode');
|
||||||
|
if (sourcecode.length) {
|
||||||
|
var value = sourcecode.text();
|
||||||
|
var mode = sourcecode.attr('language');
|
||||||
|
var pre = sourcecode.get(0);
|
||||||
|
var viewer = CodeMirror(function(elt) {
|
||||||
|
pre.parentNode.replaceChild(elt, pre);
|
||||||
|
}, {
|
||||||
|
value: value,
|
||||||
|
lineNumbers: true,
|
||||||
|
matchBrackets: true,
|
||||||
|
lineWrapping: true,
|
||||||
|
readOnly: true,
|
||||||
|
mode: mode,
|
||||||
|
lineNumberFormatter: function(ln) {
|
||||||
|
return '<a name="L'+ ln +'"></a><a href="#L'+ ln +'">'+ ln +'</a>';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var md_content = $('#md-content');
|
||||||
|
|
||||||
|
if (md_content.length) {
|
||||||
|
var converter = new Showdown.converter({extensions: ['table']});
|
||||||
|
md_content.html(converter.makeHtml(md_content.text()));
|
||||||
|
}
|
||||||
|
|
||||||
|
var clonePopup = $('#clone-popup')
|
||||||
|
var cloneButtonShow = $('#clone-button-show');
|
||||||
|
var cloneButtonHide = $('#clone-button-hide');
|
||||||
|
var cloneButtonSSH = $('#clone-button-ssh');
|
||||||
|
var cloneButtonHTTP = $('#clone-button-http');
|
||||||
|
var cloneInputSSH = $('#clone-input-ssh');
|
||||||
|
var cloneInputHTTP = $('#clone-input-http');
|
||||||
|
|
||||||
|
cloneButtonShow.click(function()
|
||||||
|
{
|
||||||
|
clonePopup.fadeIn();
|
||||||
|
});
|
||||||
|
|
||||||
|
cloneButtonHide.click(function()
|
||||||
|
{
|
||||||
|
clonePopup.fadeOut();
|
||||||
|
});
|
||||||
|
|
||||||
|
cloneButtonSSH.click(function()
|
||||||
|
{
|
||||||
|
if(cloneButtonSSH.hasClass('active'))
|
||||||
|
return;
|
||||||
|
|
||||||
|
cloneButtonSSH.addClass('active');
|
||||||
|
cloneInputSSH.show();
|
||||||
|
|
||||||
|
cloneButtonHTTP.removeClass('active');
|
||||||
|
cloneInputHTTP.hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
cloneButtonHTTP.click(function()
|
||||||
|
{
|
||||||
|
if(cloneButtonHTTP.hasClass('active'))
|
||||||
|
return;
|
||||||
|
|
||||||
|
cloneButtonHTTP.addClass('active');
|
||||||
|
cloneInputHTTP.show();
|
||||||
|
|
||||||
|
cloneButtonSSH.removeClass('active');
|
||||||
|
cloneInputSSH.hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
function paginate() {
|
||||||
|
var $pager = $('.pager');
|
||||||
|
|
||||||
|
$pager.find('.next a').one('click', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
$.get(this.href, function (html) {
|
||||||
|
$pager.after(html);
|
||||||
|
$pager.remove();
|
||||||
|
paginate();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$pager.find('.previous').remove();
|
||||||
|
}
|
||||||
|
paginate();
|
||||||
|
});
|
||||||
|
|
||||||
|
if ($('#repositories').length) {
|
||||||
|
var listOptions = {
|
||||||
|
valueNames: ['name']
|
||||||
|
};
|
||||||
|
var repoList = new List('repositories', listOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($('#branchList').length) {
|
||||||
|
var listBranchOptions = {
|
||||||
|
valueNames: ['item']
|
||||||
|
};
|
||||||
|
var repoList = new List('branchList', listBranchOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.search').click(function (e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
});
|
579
public/themes/default_without_html/js/networkGraph.js
Normal file
579
public/themes/default_without_html/js/networkGraph.js
Normal file
|
@ -0,0 +1,579 @@
|
||||||
|
/**
|
||||||
|
* Network Graph JS
|
||||||
|
* This File is a part of the GitList Project at http://gitlist.org
|
||||||
|
*
|
||||||
|
* @license http://www.opensource.org/licenses/bsd-license.php
|
||||||
|
* @author Lukas Domnick <lukx@lukx.de> http://github.com/lukx
|
||||||
|
*/
|
||||||
|
|
||||||
|
( function( $ ){
|
||||||
|
// global config
|
||||||
|
var cfg = {
|
||||||
|
laneColors: ['#ff0000', '#0000FF', '#00FFFF', '#00FF00', '#FFFF00', '#ff00ff'],
|
||||||
|
laneHeight: 20,
|
||||||
|
columnWidth: 42,
|
||||||
|
dotRadius: 3
|
||||||
|
};
|
||||||
|
|
||||||
|
// Define the jQuery Plugins
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DragScrollr is a custom made x/y-Drag Scroll Plugin for Gitlist
|
||||||
|
*
|
||||||
|
* TODO: Make this touch-scrollable
|
||||||
|
*/
|
||||||
|
$.fn.dragScrollr = function() {
|
||||||
|
var lastX,
|
||||||
|
lastY,
|
||||||
|
hotZone = 200,
|
||||||
|
container = this.first(),
|
||||||
|
domElement = container[0]; // so basically container without the jQuery stuff
|
||||||
|
|
||||||
|
function handleMouseDown( evt ) {
|
||||||
|
container.on('mousemove', handleMouseMove);
|
||||||
|
container.on('mouseup', handleMouseUp);
|
||||||
|
container.on('mouseleave', handleMouseUp);
|
||||||
|
lastX = evt.pageX;
|
||||||
|
lastY = evt.pageY;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleMouseMove(evt) {
|
||||||
|
evt.preventDefault();
|
||||||
|
|
||||||
|
// save the last scroll position to figure out whether the scroll event has entered the hot zone
|
||||||
|
var lastScrollLeft = domElement.scrollLeft;
|
||||||
|
domElement.scrollLeft = domElement.scrollLeft + lastX - evt.pageX;
|
||||||
|
domElement.scrollTop = domElement.scrollTop + lastY - evt.pageY;
|
||||||
|
|
||||||
|
if( lastScrollLeft > hotZone && domElement.scrollLeft <= hotZone ) {
|
||||||
|
container.trigger('enterHotZone');
|
||||||
|
}
|
||||||
|
|
||||||
|
// when we move into the hot zone
|
||||||
|
|
||||||
|
lastX = evt.pageX;
|
||||||
|
lastY = evt.pageY;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleMouseUp(evt) {
|
||||||
|
container.off('mousemove', handleMouseMove)
|
||||||
|
.off('mouseup', handleMouseUp)
|
||||||
|
.off('mouseleave', handleMouseUp);
|
||||||
|
}
|
||||||
|
|
||||||
|
// now bind the initial event
|
||||||
|
container.on('mousedown', handleMouseDown);
|
||||||
|
|
||||||
|
// return this instead of container, because of the .first() we applied - remember?
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
function graphLaneManager() {
|
||||||
|
var that = {},
|
||||||
|
occupiedLanes = [];
|
||||||
|
|
||||||
|
// "private" methods
|
||||||
|
function findLaneNumberFor( commit ) {
|
||||||
|
|
||||||
|
if( commit.lane ) {
|
||||||
|
// oh? we've already got a lane?
|
||||||
|
return commit.lane.number;
|
||||||
|
}
|
||||||
|
|
||||||
|
// find out which lane may draw our dot on. Start with a free one
|
||||||
|
var laneNumber = findFreeLane();
|
||||||
|
|
||||||
|
// if the child is a merge, we need to figure out which lane we may render this commit on.
|
||||||
|
// Rules are simple: A "parent" by the same author as the merge may render on the same line as the child
|
||||||
|
// others take the next free lane.
|
||||||
|
// furthermore, commits in a linear line of events may stay on the same lane, too
|
||||||
|
if( commit.children.length > 0) {
|
||||||
|
if( !commit.children[0].isMerge // linear ...
|
||||||
|
|| ( commit.children[0].isMerge && commit.children[0].author.email === commit.author.email ) // same author
|
||||||
|
) {
|
||||||
|
laneNumber = commit.children[0].lane.number;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return laneNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
function findFreeLane() {
|
||||||
|
var i = 0;
|
||||||
|
|
||||||
|
while( true ) {
|
||||||
|
// if an array index is not yet defined or set to false, the lane with that number is free.
|
||||||
|
if( !occupiedLanes[i] ) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
i ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
that.occupy = function( lane ) {
|
||||||
|
// make sure we work with lane numbers here
|
||||||
|
if( typeof lane === 'object' ) {
|
||||||
|
lane = lane.number;
|
||||||
|
}
|
||||||
|
|
||||||
|
occupiedLanes[lane] = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
that.free = function( lane ) {
|
||||||
|
// make sure we work with lane numbers here
|
||||||
|
if( typeof lane === 'object' ) {
|
||||||
|
lane = lane.number;
|
||||||
|
}
|
||||||
|
|
||||||
|
occupiedLanes[lane] = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
that.getLaneForCommit = function( commit ) {
|
||||||
|
// does this commit have a lane already?
|
||||||
|
if( commit.lane ) return commit.lane;
|
||||||
|
|
||||||
|
var laneNumber = findLaneNumberFor( commit );
|
||||||
|
return that.getLane( laneNumber );
|
||||||
|
};
|
||||||
|
|
||||||
|
that.getLane = function(laneNumber) {
|
||||||
|
return {
|
||||||
|
'number': laneNumber,
|
||||||
|
'centerY': ( laneNumber * cfg.laneHeight ) + (cfg.laneHeight/2),
|
||||||
|
'color': cfg.laneColors[ laneNumber % cfg.laneColors.length ]
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
return that;
|
||||||
|
}
|
||||||
|
|
||||||
|
function commitDetailOverlay( ) {
|
||||||
|
var that = {},
|
||||||
|
el = $('<div class="network-commit-overlay"></div>'),
|
||||||
|
imageDisplay = $('<img/>').appendTo(el),
|
||||||
|
messageDisplay = $('<h4></h4>').appendTo(el),
|
||||||
|
metaDisplay = $('<p></p>').appendTo(el),
|
||||||
|
authorDisplay = $('<a rel="author"></a>').appendTo(metaDisplay),
|
||||||
|
dateDisplay = $('<span></span>').appendTo(metaDisplay),
|
||||||
|
|
||||||
|
commit;
|
||||||
|
|
||||||
|
el.hide();
|
||||||
|
/**
|
||||||
|
* Pads an input number with one leading '0' if needed, and assure it's a string
|
||||||
|
*
|
||||||
|
* @param input Number
|
||||||
|
* @returns String
|
||||||
|
*/
|
||||||
|
function twoDigits( input ) {
|
||||||
|
if( input < 10 ) {
|
||||||
|
return '0' + input;
|
||||||
|
}
|
||||||
|
|
||||||
|
return '' + input;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transform a JS Native Date Object to a string, maintaining the same format given in the commit_list view
|
||||||
|
* 'd/m/Y \\a\\t H:i:s'
|
||||||
|
*
|
||||||
|
* @param date Date
|
||||||
|
* @returns String
|
||||||
|
*/
|
||||||
|
function getDateString( date ) {
|
||||||
|
return twoDigits( date.getDate() ) + '/'
|
||||||
|
+ twoDigits( date.getMonth() + 1 ) + '/'
|
||||||
|
+ date.getFullYear() + ' at '
|
||||||
|
+ twoDigits(date.getHours()) + ':'
|
||||||
|
+ twoDigits(date.getMinutes()) + ':'
|
||||||
|
+ twoDigits(date.getSeconds());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* update the author view
|
||||||
|
*
|
||||||
|
* @param author
|
||||||
|
*/
|
||||||
|
function setAuthor( author ) {
|
||||||
|
authorDisplay.html(author.name)
|
||||||
|
.attr('href', 'mailto:' + author.email );
|
||||||
|
|
||||||
|
imageDisplay.attr('src', author.image );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the commit that is being displayed in this detail overlay instance
|
||||||
|
*
|
||||||
|
* @param commit
|
||||||
|
* @return that
|
||||||
|
*/
|
||||||
|
that.setCommit = function( commit ) {
|
||||||
|
setAuthor( commit.author );
|
||||||
|
dateDisplay.html( ' authored on ' + getDateString( commit.date ) );
|
||||||
|
messageDisplay.html( commit.message );
|
||||||
|
return that;
|
||||||
|
};
|
||||||
|
|
||||||
|
// expose some jquery functions
|
||||||
|
|
||||||
|
that.show = function() {
|
||||||
|
el.show();
|
||||||
|
return that;
|
||||||
|
};
|
||||||
|
|
||||||
|
that.hide = function() {
|
||||||
|
el.hide();
|
||||||
|
return that;
|
||||||
|
};
|
||||||
|
|
||||||
|
that.appendTo = function(where) {
|
||||||
|
el.appendTo(where);
|
||||||
|
|
||||||
|
return that;
|
||||||
|
};
|
||||||
|
|
||||||
|
that.positionTo = function( x, y ) {
|
||||||
|
el.css('left', x + 'px');
|
||||||
|
el.css('top', y + 'px');
|
||||||
|
};
|
||||||
|
|
||||||
|
that.outerWidth = function( ) {
|
||||||
|
return el.outerWidth.apply(el, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
return that;
|
||||||
|
}
|
||||||
|
|
||||||
|
function commitDataRetriever( startPage, callback ) {
|
||||||
|
var that = {},
|
||||||
|
nextPage = startPage,
|
||||||
|
isLoading = false,
|
||||||
|
indicatorElements;
|
||||||
|
|
||||||
|
that.updateIndicators = function() {
|
||||||
|
if( isLoading ) {
|
||||||
|
$(indicatorElements).addClass('loading-commits');
|
||||||
|
} else {
|
||||||
|
$(indicatorElements).removeClass('loading-commits');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
that.bindIndicator = function( el ) {
|
||||||
|
if( !indicatorElements ) {
|
||||||
|
indicatorElements = $(el);
|
||||||
|
} else {
|
||||||
|
indicatorElements = indicatorElements.add(el);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
that.unbindIndicator = function( el ) {
|
||||||
|
indicatorElements.not( el );
|
||||||
|
};
|
||||||
|
|
||||||
|
function handleNetworkDataLoaded(data) {
|
||||||
|
isLoading = false;
|
||||||
|
that.updateIndicators();
|
||||||
|
nextPage = data.nextPage;
|
||||||
|
|
||||||
|
if( !data.commits || data.commits.length === 0 ) {
|
||||||
|
callback( null );
|
||||||
|
}
|
||||||
|
|
||||||
|
callback(data.commits);
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleNetworkDataError() {
|
||||||
|
throw "Network Data Error while retrieving Commits";
|
||||||
|
}
|
||||||
|
|
||||||
|
that.retrieve = function() {
|
||||||
|
|
||||||
|
if( !nextPage ) {
|
||||||
|
callback( null );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
isLoading = true;
|
||||||
|
that.updateIndicators();
|
||||||
|
$.ajax({
|
||||||
|
dataType: "json",
|
||||||
|
url: nextPage,
|
||||||
|
success: handleNetworkDataLoaded,
|
||||||
|
error: handleNetworkDataError
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
that.hasMore = function () {
|
||||||
|
return ( !!nextPage );
|
||||||
|
};
|
||||||
|
|
||||||
|
return that;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// the $(document).ready starting point
|
||||||
|
$( function() {
|
||||||
|
|
||||||
|
// initialise network graph only when there is one network graph container on the page
|
||||||
|
if( $('div.network-graph').length !== 1 ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var
|
||||||
|
// the element into which we will render our graph
|
||||||
|
commitsGraph = $('div.network-graph').first(),
|
||||||
|
laneManager = graphLaneManager(),
|
||||||
|
dataRetriever = commitDataRetriever( commitsGraph.data('source'), handleCommitsRetrieved ),
|
||||||
|
paper = Raphael( commitsGraph[0], commitsGraph.width(), commitsGraph.height()),
|
||||||
|
usedColumns = 0,
|
||||||
|
detailOverlay = commitDetailOverlay();
|
||||||
|
|
||||||
|
dataRetriever.bindIndicator( commitsGraph.parent('.network-view') );
|
||||||
|
detailOverlay.appendTo( commitsGraph );
|
||||||
|
|
||||||
|
|
||||||
|
function handleEnterHotZone() {
|
||||||
|
dataRetriever.retrieve();
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleCommitsRetrieved( commits ) {
|
||||||
|
|
||||||
|
// no commits or empty commits array? Well, we can't draw a graph of that
|
||||||
|
if( commits === null ) {
|
||||||
|
handleNoAvailableData();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
prepareCommits( commits );
|
||||||
|
renderCommits( commits );
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleNoAvailableData() {
|
||||||
|
window.console && console.log('No (more) Data available');
|
||||||
|
}
|
||||||
|
|
||||||
|
var awaitedParents = {};
|
||||||
|
|
||||||
|
function prepareCommits( commits ) {
|
||||||
|
$.each( commits, function ( index, commit) {
|
||||||
|
prepareCommit( commit );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function prepareCommit( commit ) {
|
||||||
|
// make "date" an actual JS Date object
|
||||||
|
commit.date = new Date(commit.date*1000);
|
||||||
|
|
||||||
|
// the parents will be filled once they have become prepared
|
||||||
|
commit.parents = [];
|
||||||
|
|
||||||
|
// we will want to store this commit's children
|
||||||
|
commit.children = getChildrenFor( commit );
|
||||||
|
|
||||||
|
commit.isFork = ( commit.children.length > 1 );
|
||||||
|
commit.isMerge = ( commit.parentsHash.length > 1 );
|
||||||
|
|
||||||
|
// after a fork, the occupied lanes must be cleaned up. The children used some lanes we no longer occupy
|
||||||
|
if ( commit.isFork === true ) {
|
||||||
|
$.each( commit.children, function( key, thisChild ) {
|
||||||
|
// free this lane
|
||||||
|
laneManager.occupy( thisChild.lane );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
commit.lane = laneManager.getLaneForCommit( commit );
|
||||||
|
|
||||||
|
// now the lane we chose must be marked occupied again.
|
||||||
|
laneManager.occupy( commit.lane );
|
||||||
|
|
||||||
|
registerAwaitedParentsFor( commit );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a new childCommit to the dictionary of awaited parents
|
||||||
|
*
|
||||||
|
* @param commit who is waiting?
|
||||||
|
*/
|
||||||
|
function registerAwaitedParentsFor( commit ) {
|
||||||
|
// This commit's parents are not yet known in our little world, as we are rendering following the time line.
|
||||||
|
// Therefore we are registering this commit as "waiting" for each of the parent hashes
|
||||||
|
$.each( commit.parentsHash, function( key, thisParentHash ) {
|
||||||
|
// If awaitedParents does not already have a key for thisParent's hash, initialise as array
|
||||||
|
if( !awaitedParents.hasOwnProperty(thisParentHash) ) {
|
||||||
|
awaitedParents[thisParentHash] = [ commit ];
|
||||||
|
} else {
|
||||||
|
awaitedParents[ thisParentHash ].push( commit );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getChildrenFor( commit ) {
|
||||||
|
var children = [];
|
||||||
|
|
||||||
|
if( awaitedParents.hasOwnProperty( commit.hash )) {
|
||||||
|
// there are child commits waiting
|
||||||
|
children = awaitedParents[ commit.hash ];
|
||||||
|
|
||||||
|
// let the children know their parent objects
|
||||||
|
$.each( children, function(key, thisChild ) {
|
||||||
|
thisChild.parents.push( commit );
|
||||||
|
});
|
||||||
|
|
||||||
|
// remove this item from parentsBeingWaitedFor
|
||||||
|
delete awaitedParents[ commit.hash ];
|
||||||
|
}
|
||||||
|
|
||||||
|
return children;
|
||||||
|
}
|
||||||
|
|
||||||
|
var lastRenderedDate = new Date(0);
|
||||||
|
function renderCommits( commits ) {
|
||||||
|
|
||||||
|
var neededWidth = ((usedColumns + Object.keys(commits).length) * cfg.columnWidth);
|
||||||
|
|
||||||
|
if ( neededWidth > paper.width ) {
|
||||||
|
extendPaper( neededWidth, paper.height );
|
||||||
|
} else if( dataRetriever.hasMore() ) {
|
||||||
|
// this is the case when we have not loaded enough commits to fill the paper yet. Get some more then...
|
||||||
|
dataRetriever.retrieve();
|
||||||
|
}
|
||||||
|
|
||||||
|
$.each( commits, function ( index, commit) {
|
||||||
|
if( lastRenderedDate.getYear() !== commit.date.getYear()
|
||||||
|
|| lastRenderedDate.getMonth() !== commit.date.getMonth()
|
||||||
|
|| lastRenderedDate.getDate() !== commit.date.getDate() ) {
|
||||||
|
// TODO: If desired, one could add a time scale on top, maybe.
|
||||||
|
}
|
||||||
|
renderCommit(commit);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderCommit( commit ) {
|
||||||
|
// find the column this dot is drawn on
|
||||||
|
usedColumns++;
|
||||||
|
commit.column = usedColumns;
|
||||||
|
|
||||||
|
commit.dot = paper.circle( getXPositionForColumnNumber(commit.column), commit.lane.centerY, cfg.dotRadius );
|
||||||
|
commit.dot.attr({
|
||||||
|
fill: commit.lane.color,
|
||||||
|
stroke: 'none',
|
||||||
|
cursor: 'pointer'
|
||||||
|
})
|
||||||
|
.data('commit', commit)
|
||||||
|
.mouseover( handleCommitMouseover )
|
||||||
|
.mouseout( handleCommitMouseout )
|
||||||
|
.click( handleCommitClick );
|
||||||
|
|
||||||
|
// maybe we have not enough space for the lane yet
|
||||||
|
if( commit.lane.centerY + cfg.laneHeight > paper.height ) {
|
||||||
|
extendPaper( paper.width, commit.lane.centerY + cfg.laneHeight )
|
||||||
|
}
|
||||||
|
|
||||||
|
$.each( commit.children, function ( idx, thisChild ) {
|
||||||
|
|
||||||
|
// if there is one child only, stay on the commit's lane as long as possible when connecting the dots.
|
||||||
|
// but if there is more than one child, switch to the child's lane ASAP.
|
||||||
|
// this is to display merges and forks where they happen (ie. at a commit node/ a dot), rather than
|
||||||
|
// connecting from a line.
|
||||||
|
// So: commit.isFork decides whether or not we must switch lanes early
|
||||||
|
|
||||||
|
connectDots( commit, thisChild, commit.isFork );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param firstCommit
|
||||||
|
* @param secondCommit
|
||||||
|
* @param switchLanesEarly (boolean): Move the line to the secondCommit's lane ASAP? Defaults to false
|
||||||
|
*/
|
||||||
|
function connectDots( firstCommit, secondCommit, switchLanesEarly ) {
|
||||||
|
// default value for switchLanesEarly
|
||||||
|
switchLanesEarly = switchLanesEarly || false;
|
||||||
|
|
||||||
|
var lineLane = switchLanesEarly ? secondCommit.lane : firstCommit.lane;
|
||||||
|
|
||||||
|
// the connection has 4 stops, resulting in the following 3 segments:
|
||||||
|
// - from the x/y center of firstCommit.dot to the rightmost end (x) of the commit's column, with y=lineLane
|
||||||
|
// - from the rightmost end of firstCommit's column, to the leftmost end of secondCommit's column
|
||||||
|
// - from the leftmost end of secondCommit's column (y=lineLane) to the x/y center of secondCommit
|
||||||
|
|
||||||
|
paper.path(
|
||||||
|
getSvgLineString(
|
||||||
|
[firstCommit.dot.attr('cx'), firstCommit.dot.attr('cy')],
|
||||||
|
[firstCommit.dot.attr('cx') + (cfg.columnWidth/2), lineLane.centerY],
|
||||||
|
[secondCommit.dot.attr('cx') - (cfg.columnWidth/2), lineLane.centerY],
|
||||||
|
[secondCommit.dot.attr('cx'), secondCommit.dot.attr('cy')]
|
||||||
|
)
|
||||||
|
).attr({ "stroke": lineLane.color, "stroke-width": 2 }).toBack();
|
||||||
|
}
|
||||||
|
|
||||||
|
// set together a path string from any amount of arguments
|
||||||
|
// each argument is an array of [x, y] within the paper's coordinate system
|
||||||
|
function getSvgLineString( ) {
|
||||||
|
if (arguments.length < 2) return;
|
||||||
|
|
||||||
|
var svgString = 'M' + arguments[0][0] + ' ' + arguments[0][1];
|
||||||
|
|
||||||
|
for (var i = 1, j = arguments.length; i < j; i++){
|
||||||
|
svgString += 'L' + arguments[i][0] + ' ' + arguments[i][1];
|
||||||
|
}
|
||||||
|
|
||||||
|
return svgString;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleCommitMouseover(evt) {
|
||||||
|
detailOverlay.setCommit( this.data('commit'))
|
||||||
|
.show();
|
||||||
|
|
||||||
|
var xPos = evt.pageX - commitsGraph.offset().left + commitsGraph.scrollLeft() - (detailOverlay.outerWidth()/2);
|
||||||
|
// check that x doesn't run out the viewport
|
||||||
|
xPos = Math.max( xPos, commitsGraph.scrollLeft() + 10);
|
||||||
|
xPos = Math.min( xPos, commitsGraph.scrollLeft() + commitsGraph.width() - detailOverlay.outerWidth() - 10);
|
||||||
|
|
||||||
|
detailOverlay.positionTo( xPos,
|
||||||
|
evt.pageY - commitsGraph.offset().top + commitsGraph.scrollTop() + 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleCommitMouseout(evt) {
|
||||||
|
detailOverlay.hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleCommitClick( evt ) {
|
||||||
|
window.open( this.data('commit').details );
|
||||||
|
}
|
||||||
|
|
||||||
|
function getXPositionForColumnNumber( columnNumber ) {
|
||||||
|
// we want the column's center point
|
||||||
|
return ( paper.width - ( columnNumber * cfg.columnWidth ) + (cfg.columnWidth / 2 ));
|
||||||
|
}
|
||||||
|
|
||||||
|
function extendPaper( newWidth, newHeight ) {
|
||||||
|
var deltaX = newWidth - paper.width;
|
||||||
|
|
||||||
|
paper.setSize( newWidth, newHeight );
|
||||||
|
// fixup parent's scroll position
|
||||||
|
paper.canvas.parentNode.scrollLeft = paper.canvas.parentNode.scrollLeft + deltaX;
|
||||||
|
|
||||||
|
// now fixup the x positions of existing circles and lines
|
||||||
|
paper.forEach( function( el ) {
|
||||||
|
|
||||||
|
if( el.type === "circle" ) {
|
||||||
|
el.attr('cx', el.attr('cx') + deltaX);
|
||||||
|
} else if ( el.type === "path") {
|
||||||
|
var newXTranslation = el.data('currentXTranslation') || 0;
|
||||||
|
newXTranslation += deltaX;
|
||||||
|
el.transform( 't' + newXTranslation + ' 0' );
|
||||||
|
el.data('currentXTranslation', newXTranslation);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
commitsGraph.dragScrollr();
|
||||||
|
commitsGraph.on('enterHotZone', handleEnterHotZone);
|
||||||
|
// load initial data
|
||||||
|
dataRetriever.retrieve( );
|
||||||
|
});
|
||||||
|
}( jQuery ));
|
10
public/themes/default_without_html/js/raphael.js
Normal file
10
public/themes/default_without_html/js/raphael.js
Normal file
File diff suppressed because one or more lines are too long
1454
public/themes/default_without_html/js/showdown.js
Normal file
1454
public/themes/default_without_html/js/showdown.js
Normal file
File diff suppressed because it is too large
Load diff
106
public/themes/default_without_html/js/table.js
Normal file
106
public/themes/default_without_html/js/table.js
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
/*global module:true*/
|
||||||
|
/*
|
||||||
|
* Basic table support with re-entrant parsing, where cell content
|
||||||
|
* can also specify markdown.
|
||||||
|
*
|
||||||
|
* Tables
|
||||||
|
* ======
|
||||||
|
*
|
||||||
|
* | Col 1 | Col 2 |
|
||||||
|
* |======== |====================================================|
|
||||||
|
* |**bold** | ![Valid XHTML] (http://w3.org/Icons/valid-xhtml10) |
|
||||||
|
* | Plain | Value |
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function(){
|
||||||
|
var table = function(converter) {
|
||||||
|
var tables = {}, style = 'text-align:left;', filter;
|
||||||
|
tables.th = function(header){
|
||||||
|
if (header.trim() === "") { return "";}
|
||||||
|
var id = header.trim().replace(/ /g, '_').toLowerCase();
|
||||||
|
return '<th id="' + id + '" style="'+style+'">' + header + '</th>';
|
||||||
|
};
|
||||||
|
tables.td = function(cell) {
|
||||||
|
return '<td style="'+style+'">' + converter.makeHtml(cell) + '</td>';
|
||||||
|
};
|
||||||
|
tables.ths = function(){
|
||||||
|
var out = "", i = 0, hs = [].slice.apply(arguments);
|
||||||
|
for (i;i<hs.length;i+=1) {
|
||||||
|
out += tables.th(hs[i]) + '\n';
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
};
|
||||||
|
tables.tds = function(){
|
||||||
|
var out = "", i = 0, ds = [].slice.apply(arguments);
|
||||||
|
for (i;i<ds.length;i+=1) {
|
||||||
|
out += tables.td(ds[i]) + '\n';
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
};
|
||||||
|
tables.thead = function() {
|
||||||
|
var out, i = 0, hs = [].slice.apply(arguments);
|
||||||
|
out = "<thead>\n";
|
||||||
|
out += "<tr>\n";
|
||||||
|
out += tables.ths.apply(this, hs);
|
||||||
|
out += "</tr>\n";
|
||||||
|
out += "</thead>\n";
|
||||||
|
return out;
|
||||||
|
};
|
||||||
|
tables.tr = function() {
|
||||||
|
var out, i = 0, cs = [].slice.apply(arguments);
|
||||||
|
out = "<tr>\n";
|
||||||
|
out += tables.tds.apply(this, cs);
|
||||||
|
out += "</tr>\n";
|
||||||
|
return out;
|
||||||
|
};
|
||||||
|
filter = function(text) {
|
||||||
|
var i=0, lines = text.split('\n'), tbl = [], line, hs, rows, out = [];
|
||||||
|
for (i; i<lines.length;i+=1) {
|
||||||
|
line = lines[i];
|
||||||
|
// looks like a table heading
|
||||||
|
if (line.trim().match(/^[|]{1}.*[|]{1}$/)) {
|
||||||
|
line = line.trim();
|
||||||
|
tbl.push('<table>');
|
||||||
|
hs = line.substring(1, line.length -1).split('|');
|
||||||
|
tbl.push(tables.thead.apply(this, hs));
|
||||||
|
line = lines[++i];
|
||||||
|
if (!line.trim().match(/^[|]{1}[-=| ]+[|]{1}$/)) {
|
||||||
|
// not a table rolling back
|
||||||
|
line = lines[--i];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
line = lines[++i];
|
||||||
|
tbl.push('<tbody>');
|
||||||
|
while (line.trim().match(/^[|]{1}.*[|]{1}$/)) {
|
||||||
|
line = line.trim();
|
||||||
|
tbl.push(tables.tr.apply(this, line.substring(1, line.length -1).split('|')));
|
||||||
|
line = lines[++i];
|
||||||
|
}
|
||||||
|
tbl.push('</tbody>');
|
||||||
|
tbl.push('</table>');
|
||||||
|
// we are done with this table and we move along
|
||||||
|
out.push(tbl.join('\n'));
|
||||||
|
tbl = [];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
out.push(line);
|
||||||
|
}
|
||||||
|
return out.join('\n');
|
||||||
|
};
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
type: 'lang',
|
||||||
|
filter: filter
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
// Client-side export
|
||||||
|
if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) { window.Showdown.extensions.table = table; }
|
||||||
|
// Server-side export
|
||||||
|
if (typeof module !== 'undefined') {
|
||||||
|
module.exports = table;
|
||||||
|
}
|
||||||
|
}());
|
33
public/themes/default_without_html/less/accordion.less
Normal file
33
public/themes/default_without_html/less/accordion.less
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
// ACCORDION
|
||||||
|
// ---------
|
||||||
|
|
||||||
|
|
||||||
|
// Parent container
|
||||||
|
.accordion {
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Group == heading + body
|
||||||
|
.accordion-group {
|
||||||
|
margin-bottom: 2px;
|
||||||
|
border: 1px solid #e5e5e5;
|
||||||
|
.border-radius(4px);
|
||||||
|
}
|
||||||
|
.accordion-heading {
|
||||||
|
border-bottom: 0;
|
||||||
|
}
|
||||||
|
.accordion-heading .accordion-toggle {
|
||||||
|
display: block;
|
||||||
|
padding: 8px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// General toggle styles
|
||||||
|
.accordion-toggle {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inner needs the styles because you can't animate properly with any styles on the element
|
||||||
|
.accordion-inner {
|
||||||
|
padding: 9px 15px;
|
||||||
|
border-top: 1px solid #e5e5e5;
|
||||||
|
}
|
58
public/themes/default_without_html/less/alerts.less
Normal file
58
public/themes/default_without_html/less/alerts.less
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
// ALERT STYLES
|
||||||
|
// ------------
|
||||||
|
|
||||||
|
// Base alert styles
|
||||||
|
.alert {
|
||||||
|
padding: 8px 35px 8px 14px;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
text-shadow: 0 1px 0 rgba(255,255,255,.5);
|
||||||
|
background-color: @warningBackground;
|
||||||
|
border: 1px solid @warningBorder;
|
||||||
|
.border-radius(4px);
|
||||||
|
color: @warningText;
|
||||||
|
}
|
||||||
|
.alert-heading {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adjust close link position
|
||||||
|
.alert .close {
|
||||||
|
position: relative;
|
||||||
|
top: -2px;
|
||||||
|
right: -21px;
|
||||||
|
line-height: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Alternate styles
|
||||||
|
// ----------------
|
||||||
|
|
||||||
|
.alert-success {
|
||||||
|
background-color: @successBackground;
|
||||||
|
border-color: @successBorder;
|
||||||
|
color: @successText;
|
||||||
|
}
|
||||||
|
.alert-danger,
|
||||||
|
.alert-error {
|
||||||
|
background-color: @errorBackground;
|
||||||
|
border-color: @errorBorder;
|
||||||
|
color: @errorText;
|
||||||
|
}
|
||||||
|
.alert-info {
|
||||||
|
background-color: @infoBackground;
|
||||||
|
border-color: @infoBorder;
|
||||||
|
color: @infoText;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Block alerts
|
||||||
|
// ------------------------
|
||||||
|
.alert-block {
|
||||||
|
padding-top: 14px;
|
||||||
|
padding-bottom: 14px;
|
||||||
|
}
|
||||||
|
.alert-block > p,
|
||||||
|
.alert-block > ul {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.alert-block p + p {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
68
public/themes/default_without_html/less/bootstrap.less
vendored
Normal file
68
public/themes/default_without_html/less/bootstrap.less
vendored
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
/*!
|
||||||
|
* Bootstrap v2.0.3
|
||||||
|
*
|
||||||
|
* Copyright 2012 Twitter, Inc
|
||||||
|
* Licensed under the Apache License v2.0
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// CSS Reset
|
||||||
|
@import "reset.less";
|
||||||
|
|
||||||
|
// Core variables and mixins
|
||||||
|
@import "variables.less"; // Modify this for custom colors, font-sizes, etc
|
||||||
|
@import "mixins.less";
|
||||||
|
|
||||||
|
// Grid system and page structure
|
||||||
|
@import "scaffolding.less";
|
||||||
|
@import "grid.less";
|
||||||
|
@import "layouts.less";
|
||||||
|
|
||||||
|
// Base CSS
|
||||||
|
@import "type.less";
|
||||||
|
@import "code.less";
|
||||||
|
@import "forms.less";
|
||||||
|
@import "tables.less";
|
||||||
|
@import "files.less";
|
||||||
|
@import "network.less";
|
||||||
|
|
||||||
|
// Components: common
|
||||||
|
@import "sprites.less";
|
||||||
|
@import "dropdowns.less";
|
||||||
|
@import "wells.less";
|
||||||
|
@import "component-animations.less";
|
||||||
|
@import "close.less";
|
||||||
|
|
||||||
|
// Components: Buttons & Alerts
|
||||||
|
@import "buttons.less";
|
||||||
|
@import "button-groups.less";
|
||||||
|
@import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
|
||||||
|
|
||||||
|
// Components: Nav
|
||||||
|
@import "navs.less";
|
||||||
|
@import "navbar.less";
|
||||||
|
@import "breadcrumbs.less";
|
||||||
|
@import "pagination.less";
|
||||||
|
@import "pager.less";
|
||||||
|
|
||||||
|
// Components: Popovers
|
||||||
|
@import "modals.less";
|
||||||
|
@import "tooltip.less";
|
||||||
|
@import "popovers.less";
|
||||||
|
|
||||||
|
// Components: Misc
|
||||||
|
@import "thumbnails.less";
|
||||||
|
@import "labels-badges.less";
|
||||||
|
@import "progress-bars.less";
|
||||||
|
@import "accordion.less";
|
||||||
|
@import "carousel.less";
|
||||||
|
@import "hero-unit.less";
|
||||||
|
|
||||||
|
// Clone button
|
||||||
|
@import "clone-button.less";
|
||||||
|
|
||||||
|
// Utility classes
|
||||||
|
@import "utilities.less"; // Has to be last to override when necessary
|
||||||
|
@import "codemirror.less";
|
35
public/themes/default_without_html/less/breadcrumbs.less
Normal file
35
public/themes/default_without_html/less/breadcrumbs.less
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
// BREADCRUMBS
|
||||||
|
// -----------
|
||||||
|
|
||||||
|
.breadcrumb {
|
||||||
|
padding: 7px 14px;
|
||||||
|
margin: 0 0 @baseLineHeight;
|
||||||
|
list-style: none;
|
||||||
|
#gradient > .vertical(@white, #f5f5f5);
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
font-weight: 700;
|
||||||
|
.border-radius(3px);
|
||||||
|
.box-shadow(inset 0 1px 0 @white);
|
||||||
|
li {
|
||||||
|
display: inline-block;
|
||||||
|
.ie7-inline-block();
|
||||||
|
text-shadow: 0 1px 0 @white;
|
||||||
|
}
|
||||||
|
.divider {
|
||||||
|
padding: 0 5px;
|
||||||
|
color: @grayLight;
|
||||||
|
}
|
||||||
|
.active a {
|
||||||
|
color: @grayDark;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.download-buttons {
|
||||||
|
padding: 0 8px 0 0;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rss-icon {
|
||||||
|
clear: both;
|
||||||
|
display: inline-table;
|
||||||
|
}
|
191
public/themes/default_without_html/less/button-groups.less
Normal file
191
public/themes/default_without_html/less/button-groups.less
Normal file
|
@ -0,0 +1,191 @@
|
||||||
|
// BUTTON GROUPS
|
||||||
|
// -------------
|
||||||
|
|
||||||
|
|
||||||
|
// Make the div behave like a button
|
||||||
|
.btn-group {
|
||||||
|
position: relative;
|
||||||
|
.clearfix(); // clears the floated buttons
|
||||||
|
.ie7-restore-left-whitespace();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Space out series of button groups
|
||||||
|
.btn-group + .btn-group {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Optional: Group multiple button groups together for a toolbar
|
||||||
|
.btn-toolbar {
|
||||||
|
margin-top: @baseLineHeight / 2;
|
||||||
|
margin-bottom: @baseLineHeight / 2;
|
||||||
|
.btn-group {
|
||||||
|
display: inline-block;
|
||||||
|
.ie7-inline-block();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Float them, remove border radius, then re-add to first and last elements
|
||||||
|
.btn-group > .btn {
|
||||||
|
position: relative;
|
||||||
|
float: left;
|
||||||
|
margin-left: -1px;
|
||||||
|
.border-radius(0);
|
||||||
|
}
|
||||||
|
// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
|
||||||
|
.btn-group > .btn:first-child {
|
||||||
|
margin-left: 0;
|
||||||
|
-webkit-border-top-left-radius: 4px;
|
||||||
|
-moz-border-radius-topleft: 4px;
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
-webkit-border-bottom-left-radius: 4px;
|
||||||
|
-moz-border-radius-bottomleft: 4px;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
}
|
||||||
|
// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
|
||||||
|
.btn-group > .btn:last-child,
|
||||||
|
.btn-group > .dropdown-toggle {
|
||||||
|
-webkit-border-top-right-radius: 4px;
|
||||||
|
-moz-border-radius-topright: 4px;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
-webkit-border-bottom-right-radius: 4px;
|
||||||
|
-moz-border-radius-bottomright: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
}
|
||||||
|
// Reset corners for large buttons
|
||||||
|
.btn-group > .btn.large:first-child {
|
||||||
|
margin-left: 0;
|
||||||
|
-webkit-border-top-left-radius: 6px;
|
||||||
|
-moz-border-radius-topleft: 6px;
|
||||||
|
border-top-left-radius: 6px;
|
||||||
|
-webkit-border-bottom-left-radius: 6px;
|
||||||
|
-moz-border-radius-bottomleft: 6px;
|
||||||
|
border-bottom-left-radius: 6px;
|
||||||
|
}
|
||||||
|
.btn-group > .btn.large:last-child,
|
||||||
|
.btn-group > .large.dropdown-toggle {
|
||||||
|
-webkit-border-top-right-radius: 6px;
|
||||||
|
-moz-border-radius-topright: 6px;
|
||||||
|
border-top-right-radius: 6px;
|
||||||
|
-webkit-border-bottom-right-radius: 6px;
|
||||||
|
-moz-border-radius-bottomright: 6px;
|
||||||
|
border-bottom-right-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// On hover/focus/active, bring the proper btn to front
|
||||||
|
.btn-group > .btn:hover,
|
||||||
|
.btn-group > .btn:focus,
|
||||||
|
.btn-group > .btn:active,
|
||||||
|
.btn-group > .btn.active {
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// On active and open, don't show outline
|
||||||
|
.btn-group .dropdown-toggle:active,
|
||||||
|
.btn-group.open .dropdown-toggle {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Split button dropdowns
|
||||||
|
// ----------------------
|
||||||
|
|
||||||
|
// Give the line between buttons some depth
|
||||||
|
.btn-group > .dropdown-toggle {
|
||||||
|
padding-left: 8px;
|
||||||
|
padding-right: 8px;
|
||||||
|
.box-shadow(~"inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");
|
||||||
|
*padding-top: 4px;
|
||||||
|
*padding-bottom: 4px;
|
||||||
|
}
|
||||||
|
.btn-group > .btn-mini.dropdown-toggle {
|
||||||
|
padding-left: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
}
|
||||||
|
.btn-group > .btn-small.dropdown-toggle {
|
||||||
|
*padding-top: 4px;
|
||||||
|
*padding-bottom: 4px;
|
||||||
|
}
|
||||||
|
.btn-group > .btn-large.dropdown-toggle {
|
||||||
|
padding-left: 12px;
|
||||||
|
padding-right: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-group.open {
|
||||||
|
|
||||||
|
// The clickable button for toggling the menu
|
||||||
|
// Remove the gradient and set the same inset shadow as the :active state
|
||||||
|
.dropdown-toggle {
|
||||||
|
background-image: none;
|
||||||
|
.box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Keep the hover's background when dropdown is open
|
||||||
|
.btn.dropdown-toggle {
|
||||||
|
background-color: @btnBackgroundHighlight;
|
||||||
|
}
|
||||||
|
.btn-primary.dropdown-toggle {
|
||||||
|
background-color: @btnPrimaryBackgroundHighlight;
|
||||||
|
}
|
||||||
|
.btn-warning.dropdown-toggle {
|
||||||
|
background-color: @btnWarningBackgroundHighlight;
|
||||||
|
}
|
||||||
|
.btn-danger.dropdown-toggle {
|
||||||
|
background-color: @btnDangerBackgroundHighlight;
|
||||||
|
}
|
||||||
|
.btn-success.dropdown-toggle {
|
||||||
|
background-color: @btnSuccessBackgroundHighlight;
|
||||||
|
}
|
||||||
|
.btn-info.dropdown-toggle {
|
||||||
|
background-color: @btnInfoBackgroundHighlight;
|
||||||
|
}
|
||||||
|
.btn-inverse.dropdown-toggle {
|
||||||
|
background-color: @btnInverseBackgroundHighlight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Reposition the caret
|
||||||
|
.btn .caret {
|
||||||
|
margin-top: 7px;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
.btn:hover .caret,
|
||||||
|
.open.btn-group .caret {
|
||||||
|
.opacity(100);
|
||||||
|
}
|
||||||
|
// Carets in other button sizes
|
||||||
|
.btn-mini .caret {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.btn-small .caret {
|
||||||
|
margin-top: 6px;
|
||||||
|
}
|
||||||
|
.btn-large .caret {
|
||||||
|
margin-top: 6px;
|
||||||
|
border-left-width: 5px;
|
||||||
|
border-right-width: 5px;
|
||||||
|
border-top-width: 5px;
|
||||||
|
}
|
||||||
|
// Upside down carets for .dropup
|
||||||
|
.dropup .btn-large .caret {
|
||||||
|
border-bottom: 5px solid @black;
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Account for other colors
|
||||||
|
.btn-primary,
|
||||||
|
.btn-warning,
|
||||||
|
.btn-danger,
|
||||||
|
.btn-info,
|
||||||
|
.btn-success,
|
||||||
|
.btn-inverse {
|
||||||
|
.caret {
|
||||||
|
border-top-color: @white;
|
||||||
|
border-bottom-color: @white;
|
||||||
|
.opacity(75);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
191
public/themes/default_without_html/less/buttons.less
Normal file
191
public/themes/default_without_html/less/buttons.less
Normal file
|
@ -0,0 +1,191 @@
|
||||||
|
// BUTTON STYLES
|
||||||
|
// -------------
|
||||||
|
|
||||||
|
|
||||||
|
// Base styles
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
// Core
|
||||||
|
.btn {
|
||||||
|
display: inline-block;
|
||||||
|
.ie7-inline-block();
|
||||||
|
padding: 4px 10px 4px;
|
||||||
|
margin-bottom: 0; // For input.btn
|
||||||
|
font-size: @baseFontSize;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
*line-height: 20px;
|
||||||
|
color: @grayDark;
|
||||||
|
text-align: center;
|
||||||
|
text-shadow: 0 1px 1px rgba(255,255,255,.75);
|
||||||
|
vertical-align: middle;
|
||||||
|
cursor: pointer;
|
||||||
|
.buttonBackground(@btnBackground, @btnBackgroundHighlight);
|
||||||
|
border: 1px solid @btnBorder;
|
||||||
|
*border: 0; // Remove the border to prevent IE7's black border on input:focus
|
||||||
|
border-bottom-color: darken(@btnBorder, 10%);
|
||||||
|
.border-radius(4px);
|
||||||
|
.ie7-restore-left-whitespace(); // Give IE7 some love
|
||||||
|
.box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hover state
|
||||||
|
.btn:hover {
|
||||||
|
color: @grayDark;
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: darken(@white, 10%);
|
||||||
|
*background-color: darken(@white, 15%); /* Buttons in IE7 don't get borders, so darken on hover */
|
||||||
|
background-position: 0 -15px;
|
||||||
|
|
||||||
|
// transition is only when going to hover, otherwise the background
|
||||||
|
// behind the gradient (there for IE<=9 fallback) gets mismatched
|
||||||
|
.transition(background-position .1s linear);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Focus state for keyboard and accessibility
|
||||||
|
.btn:focus {
|
||||||
|
.tab-focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Active state
|
||||||
|
.btn.active,
|
||||||
|
.btn:active {
|
||||||
|
background-color: darken(@white, 10%);
|
||||||
|
background-color: darken(@white, 15%) e("\9");
|
||||||
|
background-image: none;
|
||||||
|
outline: 0;
|
||||||
|
.box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Disabled state
|
||||||
|
.btn.disabled,
|
||||||
|
.btn[disabled] {
|
||||||
|
cursor: default;
|
||||||
|
background-color: darken(@white, 10%);
|
||||||
|
background-image: none;
|
||||||
|
.opacity(65);
|
||||||
|
.box-shadow(none);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Button Sizes
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
// Large
|
||||||
|
.btn-large {
|
||||||
|
padding: 9px 14px;
|
||||||
|
font-size: @baseFontSize + 2px;
|
||||||
|
line-height: normal;
|
||||||
|
.border-radius(5px);
|
||||||
|
}
|
||||||
|
.btn-large [class^="icon-"] {
|
||||||
|
margin-top: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Small
|
||||||
|
.btn-small {
|
||||||
|
padding: 5px 9px;
|
||||||
|
font-size: @baseFontSize - 2px;
|
||||||
|
line-height: @baseLineHeight - 2px;
|
||||||
|
}
|
||||||
|
.btn-small [class^="icon-"] {
|
||||||
|
margin-top: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mini
|
||||||
|
.btn-mini {
|
||||||
|
padding: 2px 6px;
|
||||||
|
font-size: @baseFontSize - 2px;
|
||||||
|
line-height: @baseLineHeight - 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Alternate buttons
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
// Set text color
|
||||||
|
// -------------------------
|
||||||
|
.btn-primary,
|
||||||
|
.btn-primary:hover,
|
||||||
|
.btn-warning,
|
||||||
|
.btn-warning:hover,
|
||||||
|
.btn-danger,
|
||||||
|
.btn-danger:hover,
|
||||||
|
.btn-success,
|
||||||
|
.btn-success:hover,
|
||||||
|
.btn-info,
|
||||||
|
.btn-info:hover,
|
||||||
|
.btn-inverse,
|
||||||
|
.btn-inverse:hover {
|
||||||
|
color: @white;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
||||||
|
}
|
||||||
|
// Provide *some* extra contrast for those who can get it
|
||||||
|
.btn-primary.active,
|
||||||
|
.btn-warning.active,
|
||||||
|
.btn-danger.active,
|
||||||
|
.btn-success.active,
|
||||||
|
.btn-info.active,
|
||||||
|
.btn-inverse.active {
|
||||||
|
color: rgba(255,255,255,.75);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the backgrounds
|
||||||
|
// -------------------------
|
||||||
|
.btn {
|
||||||
|
// reset here as of 2.0.3 due to Recess property order
|
||||||
|
border-color: #ccc;
|
||||||
|
border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);
|
||||||
|
}
|
||||||
|
.btn-primary {
|
||||||
|
.buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight);
|
||||||
|
}
|
||||||
|
// Warning appears are orange
|
||||||
|
.btn-warning {
|
||||||
|
.buttonBackground(@btnWarningBackground, @btnWarningBackgroundHighlight);
|
||||||
|
}
|
||||||
|
// Danger and error appear as red
|
||||||
|
.btn-danger {
|
||||||
|
.buttonBackground(@btnDangerBackground, @btnDangerBackgroundHighlight);
|
||||||
|
}
|
||||||
|
// Success appears as green
|
||||||
|
.btn-success {
|
||||||
|
.buttonBackground(@btnSuccessBackground, @btnSuccessBackgroundHighlight);
|
||||||
|
}
|
||||||
|
// Info appears as a neutral blue
|
||||||
|
.btn-info {
|
||||||
|
.buttonBackground(@btnInfoBackground, @btnInfoBackgroundHighlight);
|
||||||
|
}
|
||||||
|
// Inverse appears as dark gray
|
||||||
|
.btn-inverse {
|
||||||
|
.buttonBackground(@btnInverseBackground, @btnInverseBackgroundHighlight);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Cross-browser Jank
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
button.btn,
|
||||||
|
input[type="submit"].btn {
|
||||||
|
|
||||||
|
// Firefox 3.6 only I believe
|
||||||
|
&::-moz-focus-inner {
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// IE7 has some default padding on button controls
|
||||||
|
*padding-top: 2px;
|
||||||
|
*padding-bottom: 2px;
|
||||||
|
&.btn-large {
|
||||||
|
*padding-top: 7px;
|
||||||
|
*padding-bottom: 7px;
|
||||||
|
}
|
||||||
|
&.btn-small {
|
||||||
|
*padding-top: 3px;
|
||||||
|
*padding-bottom: 3px;
|
||||||
|
}
|
||||||
|
&.btn-mini {
|
||||||
|
*padding-top: 1px;
|
||||||
|
*padding-bottom: 1px;
|
||||||
|
}
|
||||||
|
}
|
121
public/themes/default_without_html/less/carousel.less
Normal file
121
public/themes/default_without_html/less/carousel.less
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
// CAROUSEL
|
||||||
|
// --------
|
||||||
|
|
||||||
|
.carousel {
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-inner {
|
||||||
|
overflow: hidden;
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel {
|
||||||
|
|
||||||
|
.item {
|
||||||
|
display: none;
|
||||||
|
position: relative;
|
||||||
|
.transition(.6s ease-in-out left);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Account for jankitude on images
|
||||||
|
.item > img {
|
||||||
|
display: block;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active,
|
||||||
|
.next,
|
||||||
|
.prev { display: block; }
|
||||||
|
|
||||||
|
.active {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.next,
|
||||||
|
.prev {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.next {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
.prev {
|
||||||
|
left: -100%;
|
||||||
|
}
|
||||||
|
.next.left,
|
||||||
|
.prev.right {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active.left {
|
||||||
|
left: -100%;
|
||||||
|
}
|
||||||
|
.active.right {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Left/right controls for nav
|
||||||
|
// ---------------------------
|
||||||
|
|
||||||
|
.carousel-control {
|
||||||
|
position: absolute;
|
||||||
|
top: 40%;
|
||||||
|
left: 15px;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
margin-top: -20px;
|
||||||
|
font-size: 60px;
|
||||||
|
font-weight: 100;
|
||||||
|
line-height: 30px;
|
||||||
|
color: @white;
|
||||||
|
text-align: center;
|
||||||
|
background: @grayDarker;
|
||||||
|
border: 3px solid @white;
|
||||||
|
.border-radius(23px);
|
||||||
|
.opacity(50);
|
||||||
|
|
||||||
|
// we can't have this transition here
|
||||||
|
// because webkit cancels the carousel
|
||||||
|
// animation if you trip this while
|
||||||
|
// in the middle of another animation
|
||||||
|
// ;_;
|
||||||
|
// .transition(opacity .2s linear);
|
||||||
|
|
||||||
|
// Reposition the right one
|
||||||
|
&.right {
|
||||||
|
left: auto;
|
||||||
|
right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hover state
|
||||||
|
&:hover {
|
||||||
|
color: @white;
|
||||||
|
text-decoration: none;
|
||||||
|
.opacity(90);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Caption for text below images
|
||||||
|
// -----------------------------
|
||||||
|
|
||||||
|
.carousel-caption {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
padding: 10px 15px 5px;
|
||||||
|
background: @grayDark;
|
||||||
|
background: rgba(0,0,0,.75);
|
||||||
|
}
|
||||||
|
.carousel-caption h4,
|
||||||
|
.carousel-caption p {
|
||||||
|
color: @white;
|
||||||
|
}
|
46
public/themes/default_without_html/less/clone-button.less
Normal file
46
public/themes/default_without_html/less/clone-button.less
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
#clone-popup
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background:rgba(0, 0, 0, 0.60);
|
||||||
|
}
|
||||||
|
|
||||||
|
#clone-popup > #clone-popup-inner-wrapper
|
||||||
|
{
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
margin: -55px 0 0 -300px;
|
||||||
|
padding: 20px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 5px;
|
||||||
|
width: 560px;
|
||||||
|
height: 70px;
|
||||||
|
text-align: center;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clone-popup > #clone-popup-inner-wrapper > .btn-group
|
||||||
|
{
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clone-popup > #clone-popup-inner-wrapper > .form-control
|
||||||
|
{
|
||||||
|
width: 95%
|
||||||
|
}
|
||||||
|
|
||||||
|
#clone-popup > #clone-popup-inner-wrapper > .form-control
|
||||||
|
{
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clone-popup > #clone-popup-inner-wrapper > .form-control:not(.visible)
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
29
public/themes/default_without_html/less/close.less
Normal file
29
public/themes/default_without_html/less/close.less
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
// CLOSE ICONS
|
||||||
|
// -----------
|
||||||
|
|
||||||
|
.close {
|
||||||
|
float: right;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
color: @black;
|
||||||
|
text-shadow: 0 1px 0 rgba(255,255,255,1);
|
||||||
|
.opacity(20);
|
||||||
|
&:hover {
|
||||||
|
color: @black;
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: pointer;
|
||||||
|
.opacity(40);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Additional properties for button version
|
||||||
|
// iOS requires the button element instead of an anchor tag.
|
||||||
|
// If you want the anchor version, it requires `href="#"`.
|
||||||
|
button.close {
|
||||||
|
padding: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
background: transparent;
|
||||||
|
border: 0;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
57
public/themes/default_without_html/less/code.less
Normal file
57
public/themes/default_without_html/less/code.less
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
// Code.less
|
||||||
|
// Code typography styles for the <code> and <pre> elements
|
||||||
|
// --------------------------------------------------------
|
||||||
|
|
||||||
|
// Inline and block code styles
|
||||||
|
code,
|
||||||
|
pre {
|
||||||
|
padding: 0 3px 2px;
|
||||||
|
#font > #family > .monospace;
|
||||||
|
font-size: @baseFontSize - 1;
|
||||||
|
color: @grayDark;
|
||||||
|
.border-radius(3px);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inline code
|
||||||
|
code {
|
||||||
|
padding: 2px 4px;
|
||||||
|
color: #d14;
|
||||||
|
background-color: #f7f7f9;
|
||||||
|
border: 1px solid #e1e1e8;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Blocks of code
|
||||||
|
pre {
|
||||||
|
display: block;
|
||||||
|
padding: (@baseLineHeight - 1) / 2;
|
||||||
|
margin: 0 0 @baseLineHeight / 2;
|
||||||
|
font-size: @baseFontSize * .925; // 13px to 12px
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
word-break: break-all;
|
||||||
|
word-wrap: break-word;
|
||||||
|
white-space: pre;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border: 1px solid #ccc; // fallback for IE7-8
|
||||||
|
border: 1px solid rgba(0,0,0,.15);
|
||||||
|
.border-radius(4px);
|
||||||
|
|
||||||
|
// Make prettyprint styles more spaced out for readability
|
||||||
|
&.prettyprint {
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Account for some code outputs that place code tags in pre tags
|
||||||
|
code {
|
||||||
|
padding: 0;
|
||||||
|
color: inherit;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable scrollable blocks of code
|
||||||
|
.pre-scrollable {
|
||||||
|
max-height: 340px;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
169
public/themes/default_without_html/less/codemirror.less
Normal file
169
public/themes/default_without_html/less/codemirror.less
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
.CodeMirror {
|
||||||
|
line-height: 16px;
|
||||||
|
font-family: Consolas, "Liberation Mono", Courier, monospace;
|
||||||
|
font-size: 12px;
|
||||||
|
/* Necessary so the scrollbar can be absolutely positioned within the wrapper on Lion. */
|
||||||
|
position: relative;
|
||||||
|
/* This prevents unwanted scrollbars from showing up on the body and wrapper in IE. */
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.CodeMirror-scroll {
|
||||||
|
overflow-x: auto;
|
||||||
|
overflow-y: hidden;
|
||||||
|
height: auto;
|
||||||
|
/* This is needed to prevent an IE[67] bug where the scrolled content
|
||||||
|
is visible outside of the scrolling box. */
|
||||||
|
position: relative;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Vertical scrollbar */
|
||||||
|
.CodeMirror-scrollbar {
|
||||||
|
float: right;
|
||||||
|
overflow-x: hidden;
|
||||||
|
overflow-y: scroll;
|
||||||
|
|
||||||
|
/* This corrects for the 1px gap introduced to the left of the scrollbar
|
||||||
|
by the rule for .CodeMirror-scrollbar-inner. */
|
||||||
|
margin-left: -1px;
|
||||||
|
}
|
||||||
|
.CodeMirror-scrollbar-inner {
|
||||||
|
/* This needs to have a nonzero width in order for the scrollbar to appear
|
||||||
|
in Firefox and IE9. */
|
||||||
|
width: 1px;
|
||||||
|
}
|
||||||
|
.CodeMirror-scrollbar.cm-sb-overlap {
|
||||||
|
/* Ensure that the scrollbar appears in Lion, and that it overlaps the content
|
||||||
|
rather than sitting to the right of it. */
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
float: none;
|
||||||
|
right: 0;
|
||||||
|
min-width: 12px;
|
||||||
|
}
|
||||||
|
.CodeMirror-scrollbar.cm-sb-nonoverlap {
|
||||||
|
min-width: 12px;
|
||||||
|
}
|
||||||
|
.CodeMirror-scrollbar.cm-sb-ie7 {
|
||||||
|
min-width: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.CodeMirror-gutter {
|
||||||
|
position: absolute; left: 0; top: 0;
|
||||||
|
z-index: 10;
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
border-right: 1px solid #eee;
|
||||||
|
min-width: 2em;
|
||||||
|
height: 100%;
|
||||||
|
padding-right:3px;
|
||||||
|
}
|
||||||
|
.CodeMirror-gutter-text {
|
||||||
|
color: #aaa;
|
||||||
|
text-align: right;
|
||||||
|
padding: .4em .2em .4em .4em;
|
||||||
|
white-space: pre !important;
|
||||||
|
}
|
||||||
|
.CodeMirror-lines {
|
||||||
|
padding: .4em;
|
||||||
|
white-space: pre;
|
||||||
|
cursor: text;
|
||||||
|
margin-left:5px;
|
||||||
|
}
|
||||||
|
.CodeMirror-lines * {
|
||||||
|
/* Necessary for throw-scrolling to decelerate properly on Safari. */
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.CodeMirror pre {
|
||||||
|
-moz-border-radius: 0;
|
||||||
|
-webkit-border-radius: 0;
|
||||||
|
-o-border-radius: 0;
|
||||||
|
border-radius: 0;
|
||||||
|
border-width: 0; margin: 0; padding: 0; background: transparent;
|
||||||
|
font-family: inherit;
|
||||||
|
font-size: inherit;
|
||||||
|
padding: 0; margin: 0;
|
||||||
|
white-space: pre;
|
||||||
|
word-wrap: normal;
|
||||||
|
line-height: inherit;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.CodeMirror-wrap pre {
|
||||||
|
word-wrap: break-word;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-break: normal;
|
||||||
|
}
|
||||||
|
.CodeMirror-wrap .CodeMirror-scroll {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.CodeMirror textarea {
|
||||||
|
outline: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.CodeMirror pre.CodeMirror-cursor {
|
||||||
|
z-index: 10;
|
||||||
|
position: absolute;
|
||||||
|
visibility: hidden;
|
||||||
|
border-left: 1px solid black;
|
||||||
|
border-right: none;
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
.cm-keymap-fat-cursor pre.CodeMirror-cursor {
|
||||||
|
width: auto;
|
||||||
|
border: 0;
|
||||||
|
background: transparent;
|
||||||
|
background: rgba(0, 200, 0, .4);
|
||||||
|
}
|
||||||
|
/* Kludge to turn off filter in ie9+, which also accepts rgba */
|
||||||
|
.cm-keymap-fat-cursor pre.CodeMirror-cursor:not(#nonsense_id) {
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||||
|
}
|
||||||
|
.CodeMirror pre.CodeMirror-cursor.CodeMirror-overwrite {}
|
||||||
|
.CodeMirror-focused pre.CodeMirror-cursor {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.CodeMirror-selected { background: #d9d9d9; }
|
||||||
|
.CodeMirror-focused div.CodeMirror-selected { background: #d7d4f0; }
|
||||||
|
|
||||||
|
.CodeMirror-searching {
|
||||||
|
background: #ffa;
|
||||||
|
background: rgba(255, 255, 0, .4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Default theme */
|
||||||
|
|
||||||
|
.cm-s-default span.cm-keyword {color: #708;}
|
||||||
|
.cm-s-default span.cm-atom {color: #219;}
|
||||||
|
.cm-s-default span.cm-number {color: #164;}
|
||||||
|
.cm-s-default span.cm-def {color: #00f;}
|
||||||
|
.cm-s-default span.cm-variable {color: black;}
|
||||||
|
.cm-s-default span.cm-variable-2 {color: #05a;}
|
||||||
|
.cm-s-default span.cm-variable-3 {color: #085;}
|
||||||
|
.cm-s-default span.cm-property {color: black;}
|
||||||
|
.cm-s-default span.cm-operator {color: black;}
|
||||||
|
.cm-s-default span.cm-comment {color: #a50;}
|
||||||
|
.cm-s-default span.cm-string {color: #a11;}
|
||||||
|
.cm-s-default span.cm-string-2 {color: #f50;}
|
||||||
|
.cm-s-default span.cm-meta {color: #555;}
|
||||||
|
.cm-s-default span.cm-error {color: #f00;}
|
||||||
|
.cm-s-default span.cm-qualifier {color: #555;}
|
||||||
|
.cm-s-default span.cm-builtin {color: #30a;}
|
||||||
|
.cm-s-default span.cm-bracket {color: #cc7;}
|
||||||
|
.cm-s-default span.cm-tag {color: #170;}
|
||||||
|
.cm-s-default span.cm-attribute {color: #00c;}
|
||||||
|
.cm-s-default span.cm-header {color: blue;}
|
||||||
|
.cm-s-default span.cm-quote {color: #090;}
|
||||||
|
.cm-s-default span.cm-hr {color: #999;}
|
||||||
|
.cm-s-default span.cm-link {color: #00c;}
|
||||||
|
|
||||||
|
span.cm-header, span.cm-strong {font-weight: bold;}
|
||||||
|
span.cm-em {font-style: italic;}
|
||||||
|
span.cm-emstrong {font-style: italic; font-weight: bold;}
|
||||||
|
span.cm-link {text-decoration: underline;}
|
||||||
|
|
||||||
|
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
|
||||||
|
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
|
|
@ -0,0 +1,20 @@
|
||||||
|
// COMPONENT ANIMATIONS
|
||||||
|
// --------------------
|
||||||
|
|
||||||
|
.fade {
|
||||||
|
.opacity(0);
|
||||||
|
.transition(opacity .15s linear);
|
||||||
|
&.in {
|
||||||
|
.opacity(100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.collapse {
|
||||||
|
position: relative;
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
.transition(height .35s ease);
|
||||||
|
&.in {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
}
|
154
public/themes/default_without_html/less/dropdowns.less
Normal file
154
public/themes/default_without_html/less/dropdowns.less
Normal file
|
@ -0,0 +1,154 @@
|
||||||
|
// DROPDOWN MENUS
|
||||||
|
// --------------
|
||||||
|
|
||||||
|
// Use the .menu class on any <li> element within the topbar or ul.tabs and you'll get some superfancy dropdowns
|
||||||
|
.dropup,
|
||||||
|
.dropdown {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.dropdown-toggle {
|
||||||
|
// The caret makes the toggle a bit too tall in IE7
|
||||||
|
*margin-bottom: -3px;
|
||||||
|
}
|
||||||
|
.dropdown-toggle:active,
|
||||||
|
.open .dropdown-toggle {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dropdown arrow/caret
|
||||||
|
// --------------------
|
||||||
|
.caret {
|
||||||
|
display: inline-block;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
vertical-align: top;
|
||||||
|
border-top: 4px solid @black;
|
||||||
|
border-right: 4px solid transparent;
|
||||||
|
border-left: 4px solid transparent;
|
||||||
|
content: "";
|
||||||
|
.opacity(30);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Place the caret
|
||||||
|
.dropdown .caret {
|
||||||
|
margin-top: 8px;
|
||||||
|
margin-left: 2px;
|
||||||
|
}
|
||||||
|
.dropdown:hover .caret,
|
||||||
|
.open .caret {
|
||||||
|
.opacity(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
// The dropdown menu (ul)
|
||||||
|
// ----------------------
|
||||||
|
.dropdown-menu {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
z-index: @zindexDropdown;
|
||||||
|
display: none; // none by default, but block on "open" of the menu
|
||||||
|
float: left;
|
||||||
|
min-width: 160px;
|
||||||
|
padding: 4px 0;
|
||||||
|
margin: 1px 0 0; // override default ul
|
||||||
|
list-style: none;
|
||||||
|
background-color: @dropdownBackground;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border: 1px solid rgba(0,0,0,.2);
|
||||||
|
*border-right-width: 2px;
|
||||||
|
*border-bottom-width: 2px;
|
||||||
|
.border-radius(5px);
|
||||||
|
.box-shadow(0 5px 10px rgba(0,0,0,.2));
|
||||||
|
-webkit-background-clip: padding-box;
|
||||||
|
-moz-background-clip: padding;
|
||||||
|
background-clip: padding-box;
|
||||||
|
|
||||||
|
// Aligns the dropdown menu to right
|
||||||
|
&.pull-right {
|
||||||
|
right: 0;
|
||||||
|
left: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dividers (basically an hr) within the dropdown
|
||||||
|
.divider {
|
||||||
|
.nav-divider();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Links within the dropdown menu
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
padding: 3px 15px;
|
||||||
|
clear: both;
|
||||||
|
font-weight: normal;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
color: @dropdownLinkColor;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropdown-header {
|
||||||
|
display: block;
|
||||||
|
padding: 3px 15px;
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
color: @grayLight;
|
||||||
|
text-shadow: 0 1px 0 rgba(255,255,255,.5);
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hover state
|
||||||
|
// -----------
|
||||||
|
.dropdown-menu li > a:hover,
|
||||||
|
.dropdown-menu .active > a,
|
||||||
|
.dropdown-menu .active > a:hover {
|
||||||
|
color: @dropdownLinkColorHover;
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: @dropdownLinkBackgroundHover;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open state for the dropdown
|
||||||
|
// ---------------------------
|
||||||
|
.open {
|
||||||
|
// IE7's z-index only goes to the nearest positioned ancestor, which would
|
||||||
|
// make the menu appear below buttons that appeared later on the page
|
||||||
|
*z-index: @zindexDropdown;
|
||||||
|
|
||||||
|
.dropdown-menu {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Right aligned dropdowns
|
||||||
|
// ---------------------------
|
||||||
|
.pull-right .dropdown-menu {
|
||||||
|
right: 0;
|
||||||
|
left: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allow for dropdowns to go bottom up (aka, dropup-menu)
|
||||||
|
// ------------------------------------------------------
|
||||||
|
// Just add .dropup after the standard .dropdown class and you're set, bro.
|
||||||
|
// TODO: abstract this so that the navbar fixed styles are not placed here?
|
||||||
|
.dropup,
|
||||||
|
.navbar-fixed-bottom .dropdown {
|
||||||
|
// Reverse the caret
|
||||||
|
.caret {
|
||||||
|
border-top: 0;
|
||||||
|
border-bottom: 4px solid @black;
|
||||||
|
content: "\2191";
|
||||||
|
}
|
||||||
|
// Different positioning for bottom up menu
|
||||||
|
.dropdown-menu {
|
||||||
|
top: auto;
|
||||||
|
bottom: 100%;
|
||||||
|
margin-bottom: 1px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Typeahead
|
||||||
|
// ---------
|
||||||
|
.typeahead {
|
||||||
|
margin-top: 2px; // give it some space to breathe
|
||||||
|
.border-radius(4px);
|
||||||
|
}
|
194
public/themes/default_without_html/less/files.less
Normal file
194
public/themes/default_without_html/less/files.less
Normal file
|
@ -0,0 +1,194 @@
|
||||||
|
.source-view {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
border: 1px solid @treeHeaderBorder;
|
||||||
|
|
||||||
|
.source-header {
|
||||||
|
padding: 8px;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: bottom;
|
||||||
|
#gradient > .vertical(@treeHeaderHighlight, @treeHeader);
|
||||||
|
border-bottom: 1px solid lighten(@treeHeaderBorder, 5%);
|
||||||
|
font-weight: bold;
|
||||||
|
color: @gray;
|
||||||
|
text-shadow: 1px 1px 1px rgba(255,255,255,1);
|
||||||
|
height:28px;
|
||||||
|
.meta {
|
||||||
|
float: left;
|
||||||
|
padding: 4px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 12px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
#sourcecode {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: none;
|
||||||
|
width:100%;
|
||||||
|
height:600px;
|
||||||
|
}
|
||||||
|
.source-diff {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 0 0 6px;
|
||||||
|
border: none;
|
||||||
|
.border-radius(0);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: #ffc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
table td {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.new {
|
||||||
|
background-color:#DFD;
|
||||||
|
}
|
||||||
|
.old {
|
||||||
|
background-color:#FDD;
|
||||||
|
}
|
||||||
|
.chunk {
|
||||||
|
background-color:darken(#f5f5f5, 5%);
|
||||||
|
color:@grayLight;
|
||||||
|
}
|
||||||
|
.lineNo {
|
||||||
|
color: #aaa;
|
||||||
|
background-color: #e8e8e8;
|
||||||
|
padding: 0 6px;
|
||||||
|
text-align: right;
|
||||||
|
border-right: 1px solid #ddd;
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.image-blob {
|
||||||
|
padding:10px;
|
||||||
|
max-width: 600px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.blame-view {
|
||||||
|
width: 100%;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
td {
|
||||||
|
vertical-align:top;
|
||||||
|
padding:8px;
|
||||||
|
}
|
||||||
|
tr {
|
||||||
|
border-bottom:1px solid lighten(@grayLight, 20%);
|
||||||
|
}
|
||||||
|
tr:last-child {border-bottom:0}
|
||||||
|
.line {
|
||||||
|
font-weight:700;
|
||||||
|
border-right:1px solid lighten(@grayLight, 20%);
|
||||||
|
}
|
||||||
|
.commit {
|
||||||
|
font-weight:700;
|
||||||
|
border-right:1px solid lighten(@grayLight, 20%);
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
border:none;
|
||||||
|
.border-radius(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.commit-view {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
border: 1px solid @treeHeaderBorder;
|
||||||
|
.border-radius(4px);
|
||||||
|
.commit-header {
|
||||||
|
padding: 8px;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: bottom;
|
||||||
|
#gradient > .vertical(@treeHeaderHighlight, @treeHeader);
|
||||||
|
border-bottom: 1px solid lighten(@treeHeaderBorder, 5%);
|
||||||
|
font-weight: bold;
|
||||||
|
text-shadow: 1px 1px 1px rgba(255,255,255,1);
|
||||||
|
h4 {
|
||||||
|
padding: 4px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.commit-body {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.commit-list {
|
||||||
|
list-style-type:none;
|
||||||
|
li {
|
||||||
|
padding:8px 5px 8px 5px;
|
||||||
|
font-size:14px;
|
||||||
|
font-weight: 700;
|
||||||
|
border-bottom: 1px solid lighten(@treeHeaderBorder, 5%);
|
||||||
|
overflow: hidden;
|
||||||
|
.meta {
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
color: @grayLight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
li:last-child {border-bottom:0;margin-bottom:25px;}
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository {
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
border: 1px solid lighten(@treeHeaderBorder, 5%);
|
||||||
|
.border-radius(4px);
|
||||||
|
|
||||||
|
.repository-header {
|
||||||
|
border-bottom: 1px solid lighten(@treeHeaderBorder, 5%);
|
||||||
|
text-shadow: 1px 1px 1px rgba(255,255,255,1);
|
||||||
|
padding: 8px;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size:14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.repository-body {
|
||||||
|
padding: 8px;
|
||||||
|
background-color: lighten(@treeHeader, 5%);
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.readme-view {
|
||||||
|
border: 1px solid @treeHeaderBorder;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-view {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-header {
|
||||||
|
padding: 8px;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: bottom;
|
||||||
|
#gradient > .vertical(@treeHeaderHighlight, @treeHeader);
|
||||||
|
border-bottom: 1px solid lighten(@treeHeaderBorder, 5%);
|
||||||
|
font-weight: bold;
|
||||||
|
color: @gray;
|
||||||
|
text-shadow: 1px 1px 1px rgba(255,255,255,1);
|
||||||
|
height:28px;
|
||||||
|
.meta {
|
||||||
|
float: left;
|
||||||
|
padding: 4px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#md-content {
|
||||||
|
padding: 30px;
|
||||||
|
color: @black;
|
||||||
|
}
|
587
public/themes/default_without_html/less/forms.less
Normal file
587
public/themes/default_without_html/less/forms.less
Normal file
|
@ -0,0 +1,587 @@
|
||||||
|
// Forms.less
|
||||||
|
// Base styles for various input types, form layouts, and states
|
||||||
|
// -------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// GENERAL STYLES
|
||||||
|
// --------------
|
||||||
|
|
||||||
|
// Make all forms have space below them
|
||||||
|
form {
|
||||||
|
margin: 0 0 @baseLineHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Groups of fields with labels on top (legends)
|
||||||
|
legend {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0;
|
||||||
|
margin-bottom: @baseLineHeight * 1.5;
|
||||||
|
font-size: @baseFontSize * 1.5;
|
||||||
|
line-height: @baseLineHeight * 2;
|
||||||
|
color: @grayDark;
|
||||||
|
border: 0;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
|
||||||
|
// Small
|
||||||
|
small {
|
||||||
|
font-size: @baseLineHeight * .75;
|
||||||
|
color: @grayLight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set font for forms
|
||||||
|
label,
|
||||||
|
input,
|
||||||
|
button,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
#font > .shorthand(@baseFontSize,normal,@baseLineHeight); // Set size, weight, line-height here
|
||||||
|
}
|
||||||
|
input,
|
||||||
|
button,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
font-family: @baseFontFamily; // And only set font-family here for those that need it (note the missing label element)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Identify controls by their labels
|
||||||
|
label {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
color: @grayDark;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inputs, Textareas, Selects
|
||||||
|
input,
|
||||||
|
textarea,
|
||||||
|
select,
|
||||||
|
.uneditable-input {
|
||||||
|
display: inline-block;
|
||||||
|
width: 210px;
|
||||||
|
height: @baseLineHeight;
|
||||||
|
padding: 4px;
|
||||||
|
margin-bottom: 9px;
|
||||||
|
font-size: @baseFontSize;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
color: @gray;
|
||||||
|
background-color: @inputBackground;
|
||||||
|
border: 1px solid @inputBorder;
|
||||||
|
.border-radius(@inputBorderRadius);
|
||||||
|
}
|
||||||
|
.uneditable-textarea {
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inputs within a label
|
||||||
|
label input,
|
||||||
|
label textarea,
|
||||||
|
label select {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mini reset for unique input types
|
||||||
|
input[type="image"],
|
||||||
|
input[type="checkbox"],
|
||||||
|
input[type="radio"] {
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
padding: 0;
|
||||||
|
margin: 3px 0;
|
||||||
|
*margin-top: 0; /* IE7 */
|
||||||
|
line-height: normal;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0 \9; /* IE9 and down */
|
||||||
|
.border-radius(0);
|
||||||
|
}
|
||||||
|
input[type="image"] {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset the file input to browser defaults
|
||||||
|
input[type="file"] {
|
||||||
|
width: auto;
|
||||||
|
padding: initial;
|
||||||
|
line-height: initial;
|
||||||
|
background-color: @inputBackground;
|
||||||
|
background-color: initial;
|
||||||
|
border: initial;
|
||||||
|
.box-shadow(none);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Help out input buttons
|
||||||
|
input[type="button"],
|
||||||
|
input[type="reset"],
|
||||||
|
input[type="submit"] {
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the height of select and file controls to match text inputs
|
||||||
|
select,
|
||||||
|
input[type="file"] {
|
||||||
|
height: 28px; /* In IE7, the height of the select element cannot be changed by height, only font-size */
|
||||||
|
*margin-top: 4px; /* For IE7, add top margin to align select with labels */
|
||||||
|
line-height: 28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset line-height for IE
|
||||||
|
input[type="file"] {
|
||||||
|
line-height: 18px \9;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Chrome on Linux and Mobile Safari need background-color
|
||||||
|
select {
|
||||||
|
width: 220px; // default input width + 10px of padding that doesn't get applied
|
||||||
|
background-color: @inputBackground;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make multiple select elements height not fixed
|
||||||
|
select[multiple],
|
||||||
|
select[size] {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove shadow from image inputs
|
||||||
|
input[type="image"] {
|
||||||
|
.box-shadow(none);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make textarea height behave
|
||||||
|
textarea {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hidden inputs
|
||||||
|
input[type="hidden"] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// CHECKBOXES & RADIOS
|
||||||
|
// -------------------
|
||||||
|
|
||||||
|
// Indent the labels to position radios/checkboxes as hanging
|
||||||
|
.radio,
|
||||||
|
.checkbox {
|
||||||
|
min-height: 18px; // clear the floating input if there is no label text
|
||||||
|
padding-left: 18px;
|
||||||
|
}
|
||||||
|
.radio input[type="radio"],
|
||||||
|
.checkbox input[type="checkbox"] {
|
||||||
|
float: left;
|
||||||
|
margin-left: -18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move the options list down to align with labels
|
||||||
|
.controls > .radio:first-child,
|
||||||
|
.controls > .checkbox:first-child {
|
||||||
|
padding-top: 5px; // has to be padding because margin collaspes
|
||||||
|
}
|
||||||
|
|
||||||
|
// Radios and checkboxes on same line
|
||||||
|
// TODO v3: Convert .inline to .control-inline
|
||||||
|
.radio.inline,
|
||||||
|
.checkbox.inline {
|
||||||
|
display: inline-block;
|
||||||
|
padding-top: 5px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.radio.inline + .radio.inline,
|
||||||
|
.checkbox.inline + .checkbox.inline {
|
||||||
|
margin-left: 10px; // space out consecutive inline controls
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// FOCUS STATE
|
||||||
|
// -----------
|
||||||
|
|
||||||
|
input,
|
||||||
|
textarea {
|
||||||
|
.box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
|
||||||
|
@transition: border linear .2s, box-shadow linear .2s;
|
||||||
|
.transition(@transition);
|
||||||
|
}
|
||||||
|
input:focus,
|
||||||
|
textarea:focus {
|
||||||
|
border-color: rgba(82,168,236,.8);
|
||||||
|
outline: 0;
|
||||||
|
outline: thin dotted \9; /* IE6-9 */
|
||||||
|
.box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)");
|
||||||
|
}
|
||||||
|
input[type="file"]:focus,
|
||||||
|
input[type="radio"]:focus,
|
||||||
|
input[type="checkbox"]:focus,
|
||||||
|
select:focus {
|
||||||
|
.tab-focus();
|
||||||
|
.box-shadow(none); // override for file inputs
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// INPUT SIZES
|
||||||
|
// -----------
|
||||||
|
|
||||||
|
// General classes for quick sizes
|
||||||
|
.input-mini { width: 60px; }
|
||||||
|
.input-small { width: 90px; }
|
||||||
|
.input-medium { width: 150px; }
|
||||||
|
.input-large { width: 210px; }
|
||||||
|
.input-xlarge { width: 270px; }
|
||||||
|
.input-xxlarge { width: 530px; }
|
||||||
|
|
||||||
|
// Grid style input sizes
|
||||||
|
input[class*="span"],
|
||||||
|
select[class*="span"],
|
||||||
|
textarea[class*="span"],
|
||||||
|
.uneditable-input[class*="span"],
|
||||||
|
// Redeclare since the fluid row class is more specific
|
||||||
|
.row-fluid input[class*="span"],
|
||||||
|
.row-fluid select[class*="span"],
|
||||||
|
.row-fluid textarea[class*="span"],
|
||||||
|
.row-fluid .uneditable-input[class*="span"] {
|
||||||
|
float: none;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// GRID SIZING FOR INPUTS
|
||||||
|
// ----------------------
|
||||||
|
|
||||||
|
#grid > .input (@gridColumnWidth, @gridGutterWidth);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// DISABLED STATE
|
||||||
|
// --------------
|
||||||
|
|
||||||
|
// Disabled and read-only inputs
|
||||||
|
input[disabled],
|
||||||
|
select[disabled],
|
||||||
|
textarea[disabled],
|
||||||
|
input[readonly],
|
||||||
|
select[readonly],
|
||||||
|
textarea[readonly] {
|
||||||
|
cursor: not-allowed;
|
||||||
|
background-color: @inputDisabledBackground;
|
||||||
|
border-color: #ddd;
|
||||||
|
}
|
||||||
|
// Explicitly reset the colors here
|
||||||
|
input[type="radio"][disabled],
|
||||||
|
input[type="checkbox"][disabled],
|
||||||
|
input[type="radio"][readonly],
|
||||||
|
input[type="checkbox"][readonly] {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// FORM FIELD FEEDBACK STATES
|
||||||
|
// --------------------------
|
||||||
|
|
||||||
|
// Warning
|
||||||
|
.control-group.warning {
|
||||||
|
.formFieldState(@warningText, @warningText, @warningBackground);
|
||||||
|
}
|
||||||
|
// Error
|
||||||
|
.control-group.error {
|
||||||
|
.formFieldState(@errorText, @errorText, @errorBackground);
|
||||||
|
}
|
||||||
|
// Success
|
||||||
|
.control-group.success {
|
||||||
|
.formFieldState(@successText, @successText, @successBackground);
|
||||||
|
}
|
||||||
|
|
||||||
|
// HTML5 invalid states
|
||||||
|
// Shares styles with the .control-group.error above
|
||||||
|
input:focus:required:invalid,
|
||||||
|
textarea:focus:required:invalid,
|
||||||
|
select:focus:required:invalid {
|
||||||
|
color: #b94a48;
|
||||||
|
border-color: #ee5f5b;
|
||||||
|
&:focus {
|
||||||
|
border-color: darken(#ee5f5b, 10%);
|
||||||
|
.box-shadow(0 0 6px lighten(#ee5f5b, 20%));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// FORM ACTIONS
|
||||||
|
// ------------
|
||||||
|
|
||||||
|
.form-actions {
|
||||||
|
padding: (@baseLineHeight - 1) 20px @baseLineHeight;
|
||||||
|
margin-top: @baseLineHeight;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
background-color: @formActionsBackground;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
.clearfix(); // Adding clearfix to allow for .pull-right button containers
|
||||||
|
}
|
||||||
|
|
||||||
|
// For text that needs to appear as an input but should not be an input
|
||||||
|
.uneditable-input {
|
||||||
|
overflow: hidden; // prevent text from wrapping, but still cut it off like an input does
|
||||||
|
white-space: nowrap;
|
||||||
|
cursor: not-allowed;
|
||||||
|
background-color: @inputBackground;
|
||||||
|
border-color: #eee;
|
||||||
|
.box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Placeholder text gets special styles; can't be bundled together though for some reason
|
||||||
|
.placeholder(@grayLight);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// HELP TEXT
|
||||||
|
// ---------
|
||||||
|
|
||||||
|
.help-block,
|
||||||
|
.help-inline {
|
||||||
|
color: @gray; // lighten the text some for contrast
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-block {
|
||||||
|
display: block; // account for any element using help-block
|
||||||
|
margin-bottom: @baseLineHeight / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-inline {
|
||||||
|
display: inline-block;
|
||||||
|
.ie7-inline-block();
|
||||||
|
vertical-align: middle;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// INPUT GROUPS
|
||||||
|
// ------------
|
||||||
|
|
||||||
|
// Allow us to put symbols and text within the input field for a cleaner look
|
||||||
|
.input-prepend,
|
||||||
|
.input-append {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
.uneditable-input {
|
||||||
|
position: relative; // placed here by default so that on :focus we can place the input above the .add-on for full border and box-shadow goodness
|
||||||
|
margin-bottom: 0; // prevent bottom margin from screwing up alignment in stacked forms
|
||||||
|
*margin-left: 0;
|
||||||
|
vertical-align: middle;
|
||||||
|
.border-radius(0 @inputBorderRadius @inputBorderRadius 0);
|
||||||
|
// Make input on top when focused so blue border and shadow always show
|
||||||
|
&:focus {
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.uneditable-input {
|
||||||
|
border-left-color: #ccc;
|
||||||
|
}
|
||||||
|
.add-on {
|
||||||
|
display: inline-block;
|
||||||
|
width: auto;
|
||||||
|
height: @baseLineHeight;
|
||||||
|
min-width: 16px;
|
||||||
|
padding: 4px 5px;
|
||||||
|
font-weight: normal;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
text-align: center;
|
||||||
|
text-shadow: 0 1px 0 @white;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-color: @grayLighter;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
.add-on,
|
||||||
|
.btn {
|
||||||
|
margin-left: -1px;
|
||||||
|
.border-radius(0);
|
||||||
|
}
|
||||||
|
.active {
|
||||||
|
background-color: lighten(@green, 30);
|
||||||
|
border-color: @green;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.input-prepend {
|
||||||
|
.add-on,
|
||||||
|
.btn {
|
||||||
|
margin-right: -1px;
|
||||||
|
}
|
||||||
|
.add-on:first-child,
|
||||||
|
.btn:first-child {
|
||||||
|
.border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.input-append {
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
.uneditable-input {
|
||||||
|
.border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
|
||||||
|
}
|
||||||
|
.uneditable-input {
|
||||||
|
border-right-color: #ccc;
|
||||||
|
border-left-color: #eee;
|
||||||
|
}
|
||||||
|
.add-on:last-child,
|
||||||
|
.btn:last-child {
|
||||||
|
.border-radius(0 @inputBorderRadius @inputBorderRadius 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Remove all border-radius for inputs with both prepend and append
|
||||||
|
.input-prepend.input-append {
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
.uneditable-input {
|
||||||
|
.border-radius(0);
|
||||||
|
}
|
||||||
|
.add-on:first-child,
|
||||||
|
.btn:first-child {
|
||||||
|
margin-right: -1px;
|
||||||
|
.border-radius(@inputBorderRadius 0 0 @inputBorderRadius);
|
||||||
|
}
|
||||||
|
.add-on:last-child,
|
||||||
|
.btn:last-child {
|
||||||
|
margin-left: -1px;
|
||||||
|
.border-radius(0 @inputBorderRadius @inputBorderRadius 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// SEARCH FORM
|
||||||
|
// -----------
|
||||||
|
|
||||||
|
.form-search {
|
||||||
|
margin: 3px 0 0 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-query {
|
||||||
|
padding: 3px;
|
||||||
|
margin-bottom: 0; // remove the default margin on all inputs
|
||||||
|
.border-radius(4px);
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// HORIZONTAL & VERTICAL FORMS
|
||||||
|
// ---------------------------
|
||||||
|
|
||||||
|
// Common properties
|
||||||
|
// -----------------
|
||||||
|
|
||||||
|
.form-search,
|
||||||
|
.form-inline,
|
||||||
|
.form-horizontal {
|
||||||
|
input,
|
||||||
|
textarea,
|
||||||
|
select,
|
||||||
|
.help-inline,
|
||||||
|
.uneditable-input,
|
||||||
|
.input-prepend,
|
||||||
|
.input-append {
|
||||||
|
display: inline-block;
|
||||||
|
.ie7-inline-block();
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
// Re-hide hidden elements due to specifity
|
||||||
|
.hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.form-search label,
|
||||||
|
.form-inline label {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
// Remove margin for input-prepend/-append
|
||||||
|
.form-search .input-append,
|
||||||
|
.form-inline .input-append,
|
||||||
|
.form-search .input-prepend,
|
||||||
|
.form-inline .input-prepend {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
// Inline checkbox/radio labels (remove padding on left)
|
||||||
|
.form-search .radio,
|
||||||
|
.form-search .checkbox,
|
||||||
|
.form-inline .radio,
|
||||||
|
.form-inline .checkbox {
|
||||||
|
padding-left: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
// Remove float and margin, set to inline-block
|
||||||
|
.form-search .radio input[type="radio"],
|
||||||
|
.form-search .checkbox input[type="checkbox"],
|
||||||
|
.form-inline .radio input[type="radio"],
|
||||||
|
.form-inline .checkbox input[type="checkbox"] {
|
||||||
|
float: left;
|
||||||
|
margin-right: 3px;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Margin to space out fieldsets
|
||||||
|
.control-group {
|
||||||
|
margin-bottom: @baseLineHeight / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Legend collapses margin, so next element is responsible for spacing
|
||||||
|
legend + .control-group {
|
||||||
|
margin-top: @baseLineHeight;
|
||||||
|
-webkit-margin-top-collapse: separate;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Horizontal-specific styles
|
||||||
|
// --------------------------
|
||||||
|
|
||||||
|
.form-horizontal {
|
||||||
|
// Increase spacing between groups
|
||||||
|
.control-group {
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
.clearfix();
|
||||||
|
}
|
||||||
|
// Float the labels left
|
||||||
|
.control-label {
|
||||||
|
float: left;
|
||||||
|
width: 140px;
|
||||||
|
padding-top: 5px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
// Move over all input controls and content
|
||||||
|
.controls {
|
||||||
|
// Super jank IE7 fix to ensure the inputs in .input-append and input-prepend
|
||||||
|
// don't inherit the margin of the parent, in this case .controls
|
||||||
|
*display: inline-block;
|
||||||
|
*padding-left: 20px;
|
||||||
|
margin-left: 160px;
|
||||||
|
*margin-left: 0;
|
||||||
|
&:first-child {
|
||||||
|
*padding-left: 160px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Remove bottom margin on block level help text since that's accounted for on .control-group
|
||||||
|
.help-block {
|
||||||
|
margin-top: @baseLineHeight / 2;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
// Move over buttons in .form-actions to align with .controls
|
||||||
|
.form-actions {
|
||||||
|
padding-left: 160px;
|
||||||
|
}
|
||||||
|
}
|
5
public/themes/default_without_html/less/grid.less
Normal file
5
public/themes/default_without_html/less/grid.less
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
// Fixed (940px)
|
||||||
|
#grid > .core(@gridColumnWidth, @gridGutterWidth);
|
||||||
|
|
||||||
|
// Fluid (940px)
|
||||||
|
#grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth);
|
22
public/themes/default_without_html/less/hero-unit.less
Normal file
22
public/themes/default_without_html/less/hero-unit.less
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
// HERO UNIT
|
||||||
|
// ---------
|
||||||
|
|
||||||
|
.hero-unit {
|
||||||
|
padding: 60px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
background-color: @heroUnitBackground;
|
||||||
|
.border-radius(6px);
|
||||||
|
h1 {
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-size: 60px;
|
||||||
|
line-height: 1;
|
||||||
|
color: @heroUnitHeadingColor;
|
||||||
|
letter-spacing: -1px;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 200;
|
||||||
|
line-height: @baseLineHeight * 1.5;
|
||||||
|
color: @heroUnitLeadColor;
|
||||||
|
}
|
||||||
|
}
|
55
public/themes/default_without_html/less/labels-badges.less
Normal file
55
public/themes/default_without_html/less/labels-badges.less
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
// LABELS & BADGES
|
||||||
|
// ---------------
|
||||||
|
|
||||||
|
// Base classes
|
||||||
|
.label,
|
||||||
|
.badge {
|
||||||
|
font-size: @baseFontSize * .846;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 14px; // ensure proper line-height if floated
|
||||||
|
color: @white;
|
||||||
|
vertical-align: baseline;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
||||||
|
background-color: @grayLight;
|
||||||
|
}
|
||||||
|
// Set unique padding and border-radii
|
||||||
|
.label {
|
||||||
|
padding: 1px 4px 2px;
|
||||||
|
.border-radius(3px);
|
||||||
|
}
|
||||||
|
.badge {
|
||||||
|
padding: 1px 9px 2px;
|
||||||
|
.border-radius(9px);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hover state, but only for links
|
||||||
|
a {
|
||||||
|
&.label:hover,
|
||||||
|
&.badge:hover {
|
||||||
|
color: @white;
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Colors
|
||||||
|
// Only give background-color difference to links (and to simplify, we don't qualifty with `a` but [href] attribute)
|
||||||
|
.label,
|
||||||
|
.badge {
|
||||||
|
// Important (red)
|
||||||
|
&-important { background-color: @errorText; }
|
||||||
|
&-important[href] { background-color: darken(@errorText, 10%); }
|
||||||
|
// Warnings (orange)
|
||||||
|
&-warning { background-color: @orange; }
|
||||||
|
&-warning[href] { background-color: darken(@orange, 10%); }
|
||||||
|
// Success (green)
|
||||||
|
&-success { background-color: @successText; }
|
||||||
|
&-success[href] { background-color: darken(@successText, 10%); }
|
||||||
|
// Info (turquoise)
|
||||||
|
&-info { background-color: @infoText; }
|
||||||
|
&-info[href] { background-color: darken(@infoText, 10%); }
|
||||||
|
// Inverse (black)
|
||||||
|
&-inverse { background-color: @grayDark; }
|
||||||
|
&-inverse[href] { background-color: darken(@grayDark, 10%); }
|
||||||
|
}
|
17
public/themes/default_without_html/less/layouts.less
Normal file
17
public/themes/default_without_html/less/layouts.less
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
//
|
||||||
|
// Layouts
|
||||||
|
// Fixed-width and fluid (with sidebar) layouts
|
||||||
|
// --------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// Container (centered, fixed-width layouts)
|
||||||
|
.container {
|
||||||
|
.container-fixed();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fluid layouts (left aligned, with sidebar, min- & max-width content)
|
||||||
|
.container-fluid {
|
||||||
|
padding-right: @gridGutterWidth;
|
||||||
|
padding-left: @gridGutterWidth;
|
||||||
|
.clearfix();
|
||||||
|
}
|
631
public/themes/default_without_html/less/mixins.less
Normal file
631
public/themes/default_without_html/less/mixins.less
Normal file
|
@ -0,0 +1,631 @@
|
||||||
|
// Mixins.less
|
||||||
|
// Snippets of reusable CSS to develop faster and keep code readable
|
||||||
|
// -----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// UTILITY MIXINS
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
// Clearfix
|
||||||
|
// --------
|
||||||
|
// For clearing floats like a boss h5bp.com/q
|
||||||
|
.clearfix {
|
||||||
|
*zoom: 1;
|
||||||
|
&:before,
|
||||||
|
&:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
&:after {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Webkit-style focus
|
||||||
|
// ------------------
|
||||||
|
.tab-focus() {
|
||||||
|
// Default
|
||||||
|
outline: thin dotted #333;
|
||||||
|
// Webkit
|
||||||
|
outline: 5px auto -webkit-focus-ring-color;
|
||||||
|
outline-offset: -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Center-align a block level element
|
||||||
|
// ----------------------------------
|
||||||
|
.center-block() {
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// IE7 inline-block
|
||||||
|
// ----------------
|
||||||
|
.ie7-inline-block() {
|
||||||
|
*display: inline; /* IE7 inline-block hack */
|
||||||
|
*zoom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// IE7 likes to collapse whitespace on either side of the inline-block elements.
|
||||||
|
// Ems because we're attempting to match the width of a space character. Left
|
||||||
|
// version is for form buttons, which typically come after other elements, and
|
||||||
|
// right version is for icons, which come before. Applying both is ok, but it will
|
||||||
|
// mean that space between those elements will be .6em (~2 space characters) in IE7,
|
||||||
|
// instead of the 1 space in other browsers.
|
||||||
|
.ie7-restore-left-whitespace() {
|
||||||
|
*margin-left: .3em;
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
*margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ie7-restore-right-whitespace() {
|
||||||
|
*margin-right: .3em;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
*margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sizing shortcuts
|
||||||
|
// -------------------------
|
||||||
|
.size(@height, @width) {
|
||||||
|
width: @width;
|
||||||
|
height: @height;
|
||||||
|
}
|
||||||
|
.square(@size) {
|
||||||
|
.size(@size, @size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Placeholder text
|
||||||
|
// -------------------------
|
||||||
|
.placeholder(@color: @placeholderText) {
|
||||||
|
:-moz-placeholder {
|
||||||
|
color: @color;
|
||||||
|
}
|
||||||
|
::-webkit-input-placeholder {
|
||||||
|
color: @color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Text overflow
|
||||||
|
// -------------------------
|
||||||
|
// Requires inline-block or block for proper styling
|
||||||
|
.text-overflow() {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
// CSS image replacement
|
||||||
|
// -------------------------
|
||||||
|
// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
|
||||||
|
.hide-text {
|
||||||
|
font: 0/0 a;
|
||||||
|
color: transparent;
|
||||||
|
text-shadow: none;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// FONTS
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
#font {
|
||||||
|
#family {
|
||||||
|
.serif() {
|
||||||
|
font-family: @serifFontFamily;
|
||||||
|
}
|
||||||
|
.sans-serif() {
|
||||||
|
font-family: @sansFontFamily;
|
||||||
|
}
|
||||||
|
.monospace() {
|
||||||
|
font-family: @monoFontFamily;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
|
||||||
|
font-size: @size;
|
||||||
|
font-weight: @weight;
|
||||||
|
line-height: @lineHeight;
|
||||||
|
}
|
||||||
|
.serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
|
||||||
|
#font > #family > .serif;
|
||||||
|
#font > .shorthand(@size, @weight, @lineHeight);
|
||||||
|
}
|
||||||
|
.sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
|
||||||
|
#font > #family > .sans-serif;
|
||||||
|
#font > .shorthand(@size, @weight, @lineHeight);
|
||||||
|
}
|
||||||
|
.monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
|
||||||
|
#font > #family > .monospace;
|
||||||
|
#font > .shorthand(@size, @weight, @lineHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// FORMS
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
// Block level inputs
|
||||||
|
.input-block-level {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 28px; // Make inputs at least the height of their button counterpart
|
||||||
|
.box-sizing(border-box); // Makes inputs behave like true block-level elements
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Mixin for form field states
|
||||||
|
.formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
|
||||||
|
// Set the text color
|
||||||
|
> label,
|
||||||
|
.help-block,
|
||||||
|
.help-inline {
|
||||||
|
color: @textColor;
|
||||||
|
}
|
||||||
|
// Style inputs accordingly
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
color: @textColor;
|
||||||
|
border-color: @borderColor;
|
||||||
|
&:focus {
|
||||||
|
border-color: darken(@borderColor, 10%);
|
||||||
|
.box-shadow(0 0 6px lighten(@borderColor, 20%));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Give a small background color for input-prepend/-append
|
||||||
|
.input-prepend .add-on,
|
||||||
|
.input-append .add-on {
|
||||||
|
color: @textColor;
|
||||||
|
background-color: @backgroundColor;
|
||||||
|
border-color: @textColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// CSS3 PROPERTIES
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
// Border Radius
|
||||||
|
.border-radius(@radius) {
|
||||||
|
-webkit-border-radius: @radius;
|
||||||
|
-moz-border-radius: @radius;
|
||||||
|
border-radius: @radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Drop shadows
|
||||||
|
.box-shadow(@shadow) {
|
||||||
|
-webkit-box-shadow: @shadow;
|
||||||
|
-moz-box-shadow: @shadow;
|
||||||
|
box-shadow: @shadow;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transitions
|
||||||
|
.transition(@transition) {
|
||||||
|
-webkit-transition: @transition;
|
||||||
|
-moz-transition: @transition;
|
||||||
|
-ms-transition: @transition;
|
||||||
|
-o-transition: @transition;
|
||||||
|
transition: @transition;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transformations
|
||||||
|
.rotate(@degrees) {
|
||||||
|
-webkit-transform: rotate(@degrees);
|
||||||
|
-moz-transform: rotate(@degrees);
|
||||||
|
-ms-transform: rotate(@degrees);
|
||||||
|
-o-transform: rotate(@degrees);
|
||||||
|
transform: rotate(@degrees);
|
||||||
|
}
|
||||||
|
.scale(@ratio) {
|
||||||
|
-webkit-transform: scale(@ratio);
|
||||||
|
-moz-transform: scale(@ratio);
|
||||||
|
-ms-transform: scale(@ratio);
|
||||||
|
-o-transform: scale(@ratio);
|
||||||
|
transform: scale(@ratio);
|
||||||
|
}
|
||||||
|
.translate(@x, @y) {
|
||||||
|
-webkit-transform: translate(@x, @y);
|
||||||
|
-moz-transform: translate(@x, @y);
|
||||||
|
-ms-transform: translate(@x, @y);
|
||||||
|
-o-transform: translate(@x, @y);
|
||||||
|
transform: translate(@x, @y);
|
||||||
|
}
|
||||||
|
.skew(@x, @y) {
|
||||||
|
-webkit-transform: skew(@x, @y);
|
||||||
|
-moz-transform: skew(@x, @y);
|
||||||
|
-ms-transform: skew(@x, @y);
|
||||||
|
-o-transform: skew(@x, @y);
|
||||||
|
transform: skew(@x, @y);
|
||||||
|
}
|
||||||
|
.translate3d(@x, @y, @z) {
|
||||||
|
-webkit-transform: translate(@x, @y, @z);
|
||||||
|
-moz-transform: translate(@x, @y, @z);
|
||||||
|
-ms-transform: translate(@x, @y, @z);
|
||||||
|
-o-transform: translate(@x, @y, @z);
|
||||||
|
transform: translate(@x, @y, @z);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Backface visibility
|
||||||
|
// Prevent browsers from flickering when using CSS 3D transforms.
|
||||||
|
// Default value is `visible`, but can be changed to `hidden
|
||||||
|
// See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples
|
||||||
|
.backface-visibility(@visibility){
|
||||||
|
-webkit-backface-visibility: @visibility;
|
||||||
|
-moz-backface-visibility: @visibility;
|
||||||
|
-ms-backface-visibility: @visibility;
|
||||||
|
backface-visibility: @visibility;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Background clipping
|
||||||
|
// Heads up: FF 3.6 and under need "padding" instead of "padding-box"
|
||||||
|
.background-clip(@clip) {
|
||||||
|
-webkit-background-clip: @clip;
|
||||||
|
-moz-background-clip: @clip;
|
||||||
|
background-clip: @clip;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Background sizing
|
||||||
|
.background-size(@size){
|
||||||
|
-webkit-background-size: @size;
|
||||||
|
-moz-background-size: @size;
|
||||||
|
-o-background-size: @size;
|
||||||
|
background-size: @size;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Box sizing
|
||||||
|
.box-sizing(@boxmodel) {
|
||||||
|
-webkit-box-sizing: @boxmodel;
|
||||||
|
-moz-box-sizing: @boxmodel;
|
||||||
|
-ms-box-sizing: @boxmodel;
|
||||||
|
box-sizing: @boxmodel;
|
||||||
|
}
|
||||||
|
|
||||||
|
// User select
|
||||||
|
// For selecting text on the page
|
||||||
|
.user-select(@select) {
|
||||||
|
-webkit-user-select: @select;
|
||||||
|
-moz-user-select: @select;
|
||||||
|
-ms-user-select: @select;
|
||||||
|
-o-user-select: @select;
|
||||||
|
user-select: @select;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Resize anything
|
||||||
|
.resizable(@direction) {
|
||||||
|
resize: @direction; // Options: horizontal, vertical, both
|
||||||
|
overflow: auto; // Safari fix
|
||||||
|
}
|
||||||
|
|
||||||
|
// CSS3 Content Columns
|
||||||
|
.content-columns(@columnCount, @columnGap: @gridGutterWidth) {
|
||||||
|
-webkit-column-count: @columnCount;
|
||||||
|
-moz-column-count: @columnCount;
|
||||||
|
column-count: @columnCount;
|
||||||
|
-webkit-column-gap: @columnGap;
|
||||||
|
-moz-column-gap: @columnGap;
|
||||||
|
column-gap: @columnGap;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Opacity
|
||||||
|
.opacity(@opacity) {
|
||||||
|
opacity: @opacity / 100;
|
||||||
|
filter: ~"alpha(opacity=@{opacity})";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// BACKGROUNDS
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
// Add an alphatransparency value to any background or border color (via Elyse Holladay)
|
||||||
|
#translucent {
|
||||||
|
.background(@color: @white, @alpha: 1) {
|
||||||
|
background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
|
||||||
|
}
|
||||||
|
.border(@color: @white, @alpha: 1) {
|
||||||
|
border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha);
|
||||||
|
.background-clip(padding-box);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gradient Bar Colors for buttons and alerts
|
||||||
|
.gradientBar(@primaryColor, @secondaryColor) {
|
||||||
|
#gradient > .vertical(@primaryColor, @secondaryColor);
|
||||||
|
border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);
|
||||||
|
border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gradients
|
||||||
|
#gradient {
|
||||||
|
.horizontal(@startColor: #555, @endColor: #333) {
|
||||||
|
background-color: @endColor;
|
||||||
|
background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
|
||||||
|
background-image: -ms-linear-gradient(left, @startColor, @endColor); // IE10
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
|
||||||
|
background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
|
||||||
|
background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
|
||||||
|
background-image: linear-gradient(left, @startColor, @endColor); // Le standard
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",@startColor,@endColor)); // IE9 and down
|
||||||
|
}
|
||||||
|
.vertical(@startColor: #555, @endColor: #333) {
|
||||||
|
background-color: mix(@startColor, @endColor, 60%);
|
||||||
|
background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
|
||||||
|
background-image: -ms-linear-gradient(top, @startColor, @endColor); // IE10
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
|
||||||
|
background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
|
||||||
|
background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
|
||||||
|
background-image: linear-gradient(top, @startColor, @endColor); // The standard
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down
|
||||||
|
}
|
||||||
|
.directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
|
||||||
|
background-color: @endColor;
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
|
||||||
|
background-image: -ms-linear-gradient(@deg, @startColor, @endColor); // IE10
|
||||||
|
background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
|
||||||
|
background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
|
||||||
|
background-image: linear-gradient(@deg, @startColor, @endColor); // The standard
|
||||||
|
}
|
||||||
|
.vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
|
||||||
|
background-color: mix(@midColor, @endColor, 80%);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
|
||||||
|
background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
|
||||||
|
background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
|
||||||
|
background-image: -ms-linear-gradient(@startColor, @midColor @colorStop, @endColor);
|
||||||
|
background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
|
||||||
|
background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down, gets no color-stop at all for proper fallback
|
||||||
|
}
|
||||||
|
.radial(@innerColor: #555, @outerColor: #333) {
|
||||||
|
background-color: @outerColor;
|
||||||
|
background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
|
||||||
|
background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
|
||||||
|
background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
|
||||||
|
background-image: -ms-radial-gradient(circle, @innerColor, @outerColor);
|
||||||
|
background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
.striped(@color, @angle: -45deg) {
|
||||||
|
background-color: @color;
|
||||||
|
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
|
||||||
|
background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
|
||||||
|
background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
|
||||||
|
background-image: -ms-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
|
||||||
|
background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
|
||||||
|
background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Reset filters for IE
|
||||||
|
.reset-filter() {
|
||||||
|
filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// COMPONENT MIXINS
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
// Horizontal dividers
|
||||||
|
// -------------------------
|
||||||
|
// Dividers (basically an hr) within dropdowns and nav lists
|
||||||
|
.nav-divider() {
|
||||||
|
// IE7 needs a set width since we gave a height. Restricting just
|
||||||
|
// to IE7 to keep the 1px left/right space in other browsers.
|
||||||
|
// It is unclear where IE is getting the extra space that we need
|
||||||
|
// to negative-margin away, but so it goes.
|
||||||
|
*width: 100%;
|
||||||
|
height: 1px;
|
||||||
|
margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px
|
||||||
|
*margin: -5px 0 5px;
|
||||||
|
overflow: hidden;
|
||||||
|
background-color: #e5e5e5;
|
||||||
|
border-bottom: 1px solid @white;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Button backgrounds
|
||||||
|
// ------------------
|
||||||
|
.buttonBackground(@startColor, @endColor) {
|
||||||
|
// gradientBar will set the background to a pleasing blend of these, to support IE<=9
|
||||||
|
.gradientBar(@startColor, @endColor);
|
||||||
|
*background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
||||||
|
.reset-filter();
|
||||||
|
|
||||||
|
// in these cases the gradient won't cover the background, so we override
|
||||||
|
&:hover, &:active, &.active, &.disabled, &[disabled] {
|
||||||
|
background-color: @endColor;
|
||||||
|
*background-color: darken(@endColor, 5%);
|
||||||
|
}
|
||||||
|
|
||||||
|
// IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves
|
||||||
|
&:active,
|
||||||
|
&.active {
|
||||||
|
background-color: darken(@endColor, 10%) e("\9");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Navbar vertical align
|
||||||
|
// -------------------------
|
||||||
|
// Vertically center elements in the navbar.
|
||||||
|
// Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin.
|
||||||
|
.navbarVerticalAlign(@elementHeight) {
|
||||||
|
margin-top: (@navbarHeight - @elementHeight) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Popover arrows
|
||||||
|
// -------------------------
|
||||||
|
// For tipsies and popovers
|
||||||
|
#popoverArrow {
|
||||||
|
.top(@arrowWidth: 5px, @color: @black) {
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -@arrowWidth;
|
||||||
|
border-left: @arrowWidth solid transparent;
|
||||||
|
border-right: @arrowWidth solid transparent;
|
||||||
|
border-top: @arrowWidth solid @color;
|
||||||
|
}
|
||||||
|
.left(@arrowWidth: 5px, @color: @black) {
|
||||||
|
top: 50%;
|
||||||
|
right: 0;
|
||||||
|
margin-top: -@arrowWidth;
|
||||||
|
border-top: @arrowWidth solid transparent;
|
||||||
|
border-bottom: @arrowWidth solid transparent;
|
||||||
|
border-left: @arrowWidth solid @color;
|
||||||
|
}
|
||||||
|
.bottom(@arrowWidth: 5px, @color: @black) {
|
||||||
|
top: 0;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -@arrowWidth;
|
||||||
|
border-left: @arrowWidth solid transparent;
|
||||||
|
border-right: @arrowWidth solid transparent;
|
||||||
|
border-bottom: @arrowWidth solid @color;
|
||||||
|
}
|
||||||
|
.right(@arrowWidth: 5px, @color: @black) {
|
||||||
|
top: 50%;
|
||||||
|
left: 0;
|
||||||
|
margin-top: -@arrowWidth;
|
||||||
|
border-top: @arrowWidth solid transparent;
|
||||||
|
border-bottom: @arrowWidth solid transparent;
|
||||||
|
border-right: @arrowWidth solid @color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid System
|
||||||
|
// -----------
|
||||||
|
|
||||||
|
// Centered container element
|
||||||
|
.container-fixed() {
|
||||||
|
margin-right: auto;
|
||||||
|
margin-left: auto;
|
||||||
|
.clearfix();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Table columns
|
||||||
|
.tableColumns(@columnSpan: 1) {
|
||||||
|
float: none; // undo default grid column styles
|
||||||
|
width: ((@gridColumnWidth) * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1)) - 16; // 16 is total padding on left and right of table cells
|
||||||
|
margin-left: 0; // undo default grid column styles
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make a Grid
|
||||||
|
// Use .makeRow and .makeColumn to assign semantic layouts grid system behavior
|
||||||
|
.makeRow() {
|
||||||
|
margin-left: @gridGutterWidth * -1;
|
||||||
|
.clearfix();
|
||||||
|
}
|
||||||
|
.makeColumn(@columns: 1, @offset: 0) {
|
||||||
|
float: left;
|
||||||
|
margin-left: (@gridColumnWidth * @offset) + (@gridGutterWidth * (@offset - 1)) + (@gridGutterWidth * 2);
|
||||||
|
width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
// The Grid
|
||||||
|
#grid {
|
||||||
|
|
||||||
|
.core (@gridColumnWidth, @gridGutterWidth) {
|
||||||
|
|
||||||
|
.spanX (@index) when (@index > 0) {
|
||||||
|
.span@{index} { .span(@index); }
|
||||||
|
.spanX(@index - 1);
|
||||||
|
}
|
||||||
|
.spanX (0) {}
|
||||||
|
|
||||||
|
.offsetX (@index) when (@index > 0) {
|
||||||
|
.offset@{index} { .offset(@index); }
|
||||||
|
.offsetX(@index - 1);
|
||||||
|
}
|
||||||
|
.offsetX (0) {}
|
||||||
|
|
||||||
|
.offset (@columns) {
|
||||||
|
margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns + 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
.span (@columns) {
|
||||||
|
width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
margin-left: @gridGutterWidth * -1;
|
||||||
|
.clearfix();
|
||||||
|
}
|
||||||
|
|
||||||
|
[class*="span"] {
|
||||||
|
float: left;
|
||||||
|
margin-left: @gridGutterWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the container width, and override it for fixed navbars in media queries
|
||||||
|
.container,
|
||||||
|
.navbar-fixed-top .container,
|
||||||
|
.navbar-fixed-bottom .container { .span(@gridColumns); }
|
||||||
|
|
||||||
|
// generate .spanX and .offsetX
|
||||||
|
.spanX (@gridColumns);
|
||||||
|
.offsetX (@gridColumns);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
|
||||||
|
|
||||||
|
.spanX (@index) when (@index > 0) {
|
||||||
|
.span@{index} { .span(@index); }
|
||||||
|
.spanX(@index - 1);
|
||||||
|
}
|
||||||
|
.spanX (0) {}
|
||||||
|
|
||||||
|
.span (@columns) {
|
||||||
|
width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
|
||||||
|
*width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-fluid {
|
||||||
|
width: 100%;
|
||||||
|
.clearfix();
|
||||||
|
[class*="span"] {
|
||||||
|
.input-block-level();
|
||||||
|
float: left;
|
||||||
|
margin-left: @fluidGridGutterWidth;
|
||||||
|
*margin-left: @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
|
||||||
|
}
|
||||||
|
[class*="span"]:first-child {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate .spanX
|
||||||
|
.spanX (@gridColumns);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.input(@gridColumnWidth, @gridGutterWidth) {
|
||||||
|
|
||||||
|
.spanX (@index) when (@index > 0) {
|
||||||
|
input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index} { .span(@index); }
|
||||||
|
.spanX(@index - 1);
|
||||||
|
}
|
||||||
|
.spanX (0) {}
|
||||||
|
|
||||||
|
.span(@columns) {
|
||||||
|
width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
input,
|
||||||
|
textarea,
|
||||||
|
.uneditable-input {
|
||||||
|
margin-left: 0; // override margin-left from core grid system
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate .spanX
|
||||||
|
.spanX (@gridColumns);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
90
public/themes/default_without_html/less/modals.less
Normal file
90
public/themes/default_without_html/less/modals.less
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
// MODALS
|
||||||
|
// ------
|
||||||
|
|
||||||
|
// Recalculate z-index where appropriate
|
||||||
|
.modal-open {
|
||||||
|
.dropdown-menu { z-index: @zindexDropdown + @zindexModal; }
|
||||||
|
.dropdown.open { *z-index: @zindexDropdown + @zindexModal; }
|
||||||
|
.popover { z-index: @zindexPopover + @zindexModal; }
|
||||||
|
.tooltip { z-index: @zindexTooltip + @zindexModal; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Background
|
||||||
|
.modal-backdrop {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: @zindexModalBackdrop;
|
||||||
|
background-color: @black;
|
||||||
|
// Fade for backdrop
|
||||||
|
&.fade { opacity: 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-backdrop,
|
||||||
|
.modal-backdrop.fade.in {
|
||||||
|
.opacity(80);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Base modal
|
||||||
|
.modal {
|
||||||
|
position: fixed;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
z-index: @zindexModal;
|
||||||
|
overflow: auto;
|
||||||
|
width: 560px;
|
||||||
|
margin: -250px 0 0 -280px;
|
||||||
|
background-color: @white;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border: 1px solid rgba(0,0,0,.3);
|
||||||
|
*border: 1px solid #999; /* IE6-7 */
|
||||||
|
.border-radius(6px);
|
||||||
|
.box-shadow(0 3px 7px rgba(0,0,0,0.3));
|
||||||
|
.background-clip(padding-box);
|
||||||
|
&.fade {
|
||||||
|
.transition(e('opacity .3s linear, top .3s ease-out'));
|
||||||
|
top: -25%;
|
||||||
|
}
|
||||||
|
&.fade.in { top: 50%; }
|
||||||
|
}
|
||||||
|
.modal-header {
|
||||||
|
padding: 9px 15px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
// Close icon
|
||||||
|
.close { margin-top: 2px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Body (where all modal content resides)
|
||||||
|
.modal-body {
|
||||||
|
overflow-y: auto;
|
||||||
|
max-height: 400px;
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
// Remove bottom margin if need be
|
||||||
|
.modal-form {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Footer (for actions)
|
||||||
|
.modal-footer {
|
||||||
|
padding: 14px 15px 15px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
text-align: right; // right align buttons
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
.border-radius(0 0 6px 6px);
|
||||||
|
.box-shadow(inset 0 1px 0 @white);
|
||||||
|
.clearfix(); // clear it in case folks use .pull-* classes on buttons
|
||||||
|
|
||||||
|
// Properly space out buttons
|
||||||
|
.btn + .btn {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
|
||||||
|
}
|
||||||
|
// but override that for button groups
|
||||||
|
.btn-group .btn + .btn {
|
||||||
|
margin-left: -1px;
|
||||||
|
}
|
||||||
|
}
|
366
public/themes/default_without_html/less/navbar.less
Normal file
366
public/themes/default_without_html/less/navbar.less
Normal file
|
@ -0,0 +1,366 @@
|
||||||
|
// NAVBAR (FIXED AND STATIC)
|
||||||
|
// -------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// COMMON STYLES
|
||||||
|
// -------------
|
||||||
|
|
||||||
|
.navbar {
|
||||||
|
// Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar
|
||||||
|
*position: relative;
|
||||||
|
*z-index: 2;
|
||||||
|
|
||||||
|
overflow: visible;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gradient is applied to it's own element because overflow visible is not honored by IE when filter is present
|
||||||
|
.navbar-inner {
|
||||||
|
min-height: @navbarHeight;
|
||||||
|
padding-left: 20px;
|
||||||
|
padding-right: 20px;
|
||||||
|
border-bottom: 1px solid @navbarBorderColor;
|
||||||
|
#gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground);
|
||||||
|
.box-shadow(~"0 1px 0 rgba(255,255,255,0.4), 0 0 10px rgba(0,0,0,0.1)");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set width to auto for default container
|
||||||
|
// We then reset it for fixed navbars in the #gridSystem mixin
|
||||||
|
.navbar .container {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Override the default collapsed state
|
||||||
|
.nav-collapse.collapse {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Brand, links, text, and buttons
|
||||||
|
.navbar {
|
||||||
|
color: @navbarText;
|
||||||
|
// Hover and active states
|
||||||
|
.brand:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
// Website or project name
|
||||||
|
.brand {
|
||||||
|
float: left;
|
||||||
|
display: block;
|
||||||
|
// Vertically center the text given @navbarHeight
|
||||||
|
@elementHeight: 20px;
|
||||||
|
padding: ((@navbarHeight - @elementHeight) / 2) 20px ((@navbarHeight - @elementHeight) / 2 + 2);
|
||||||
|
margin-left: -20px; // negative indent to left-align the text down the page
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 200;
|
||||||
|
line-height: 1;
|
||||||
|
color: lighten(@navbarBrandColor, 35%);
|
||||||
|
text-shadow: 1px 1px 1px rgba(255,255,255,1);
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
// Plain text in topbar
|
||||||
|
.navbar-text {
|
||||||
|
margin-bottom: 0;
|
||||||
|
line-height: @navbarHeight;
|
||||||
|
}
|
||||||
|
// Janky solution for now to account for links outside the .nav
|
||||||
|
.navbar-link {
|
||||||
|
color: @navbarLinkColor;
|
||||||
|
&:hover {
|
||||||
|
color: @navbarLinkColorHover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Buttons in navbar
|
||||||
|
.btn,
|
||||||
|
.btn-group {
|
||||||
|
.navbarVerticalAlign(30px); // Vertically center in navbar
|
||||||
|
}
|
||||||
|
.btn-group .btn {
|
||||||
|
margin: 0; // then undo the margin here so we don't accidentally double it
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Navbar forms
|
||||||
|
.navbar-form {
|
||||||
|
margin-bottom: 0; // remove default bottom margin
|
||||||
|
.clearfix();
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
.radio,
|
||||||
|
.checkbox {
|
||||||
|
.navbarVerticalAlign(30px); // Vertically center in navbar
|
||||||
|
}
|
||||||
|
input,
|
||||||
|
select {
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
input[type="image"],
|
||||||
|
input[type="checkbox"],
|
||||||
|
input[type="radio"] {
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
.input-append,
|
||||||
|
.input-prepend {
|
||||||
|
margin-top: 6px;
|
||||||
|
white-space: nowrap; // preven two items from separating within a .navbar-form that has .pull-left
|
||||||
|
input {
|
||||||
|
margin-top: 0; // remove the margin on top since it's on the parent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Navbar search
|
||||||
|
.navbar-search {
|
||||||
|
position: relative;
|
||||||
|
float: left;
|
||||||
|
.navbarVerticalAlign(28px); // Vertically center in navbar
|
||||||
|
margin-bottom: 0;
|
||||||
|
.search-query {
|
||||||
|
padding: 4px 9px;
|
||||||
|
#font > .sans-serif(13px, normal, 1);
|
||||||
|
color: @white;
|
||||||
|
background-color: @navbarSearchBackground;
|
||||||
|
border: 1px solid @navbarSearchBorder;
|
||||||
|
.box-shadow(~"inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0px rgba(255,255,255,.15)");
|
||||||
|
.transition(none);
|
||||||
|
|
||||||
|
// Placeholder text gets special styles; can't be a grouped selector
|
||||||
|
&:-moz-placeholder {
|
||||||
|
color: @navbarSearchPlaceholderColor;
|
||||||
|
}
|
||||||
|
&::-webkit-input-placeholder {
|
||||||
|
color: @navbarSearchPlaceholderColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Focus states (we use .focused since IE7-8 and down doesn't support :focus)
|
||||||
|
&:focus,
|
||||||
|
&.focused {
|
||||||
|
padding: 5px 10px;
|
||||||
|
color: @grayDark;
|
||||||
|
text-shadow: 0 1px 0 @white;
|
||||||
|
background-color: @navbarSearchBackgroundFocus;
|
||||||
|
border: 0;
|
||||||
|
.box-shadow(0 0 3px rgba(0,0,0,.15));
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// FIXED NAVBAR
|
||||||
|
// ------------
|
||||||
|
|
||||||
|
// Shared (top/bottom) styles
|
||||||
|
.navbar-fixed-top,
|
||||||
|
.navbar-fixed-bottom {
|
||||||
|
position: fixed;
|
||||||
|
right: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: @zindexFixedNavbar;
|
||||||
|
margin-bottom: 0; // remove 18px margin for static navbar
|
||||||
|
}
|
||||||
|
.navbar-fixed-top .navbar-inner,
|
||||||
|
.navbar-fixed-bottom .navbar-inner {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
.border-radius(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-fixed-top .container,
|
||||||
|
.navbar-fixed-bottom .container {
|
||||||
|
#grid > .core > .span(@gridColumns);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fixed to top
|
||||||
|
.navbar-fixed-top {
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fixed to bottom
|
||||||
|
.navbar-fixed-bottom {
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// NAVIGATION
|
||||||
|
// ----------
|
||||||
|
|
||||||
|
.navbar .nav {
|
||||||
|
position: relative;
|
||||||
|
left: 0;
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
margin: 0 10px 0 0;
|
||||||
|
}
|
||||||
|
.navbar .nav.pull-right {
|
||||||
|
float: right; // redeclare due to specificity
|
||||||
|
}
|
||||||
|
.navbar .nav > li {
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Links
|
||||||
|
.navbar .nav > li > a {
|
||||||
|
float: none;
|
||||||
|
// Vertically center the text given @navbarHeight
|
||||||
|
@elementHeight: 20px;
|
||||||
|
padding: ((@navbarHeight - @elementHeight) / 2) 10px ((@navbarHeight - @elementHeight) / 2 + 1);
|
||||||
|
line-height: 19px;
|
||||||
|
color: @navbarLinkColor;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight:700;
|
||||||
|
}
|
||||||
|
// Buttons
|
||||||
|
.navbar .btn {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 4px 10px 4px;
|
||||||
|
// Vertically center the button given @navbarHeight
|
||||||
|
@elementHeight: 28px;
|
||||||
|
margin: ((@navbarHeight - @elementHeight) / 2 - 1) 5px ((@navbarHeight - @elementHeight) / 2);
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
}
|
||||||
|
.navbar .btn-group {
|
||||||
|
margin: 0;
|
||||||
|
// Vertically center the button given @navbarHeight
|
||||||
|
@elementHeight: 28px;
|
||||||
|
padding: ((@navbarHeight - @elementHeight) / 2 - 1) 5px ((@navbarHeight - @elementHeight) / 2);
|
||||||
|
}
|
||||||
|
// Hover
|
||||||
|
.navbar .nav > li > a:hover {
|
||||||
|
color: @navbarLinkColorHover;
|
||||||
|
text-decoration: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Active nav items
|
||||||
|
.navbar .nav .active > a,
|
||||||
|
.navbar .nav .active > a:hover {
|
||||||
|
color: @navbarLinkColorActive;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dividers (basically a vertical hr)
|
||||||
|
.navbar .divider-vertical {
|
||||||
|
height: @navbarHeight;
|
||||||
|
width: 1px;
|
||||||
|
margin: 0 9px;
|
||||||
|
overflow: hidden;
|
||||||
|
background-color: @navbarBackground;
|
||||||
|
border-right: 1px solid @navbarBackgroundHighlight;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Secondary (floated right) nav in topbar
|
||||||
|
.navbar .nav.pull-right {
|
||||||
|
margin-left: 10px;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Navbar button for toggling navbar items in responsive layouts
|
||||||
|
// These definitions need to come after '.navbar .btn'
|
||||||
|
.navbar .btn-navbar {
|
||||||
|
display: none;
|
||||||
|
float: right;
|
||||||
|
padding: 7px 10px;
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: 5px;
|
||||||
|
.buttonBackground(@navbarBackgroundHighlight, @navbarBackground);
|
||||||
|
.box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)");
|
||||||
|
}
|
||||||
|
.navbar .btn-navbar .icon-bar {
|
||||||
|
display: block;
|
||||||
|
width: 18px;
|
||||||
|
height: 2px;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
.border-radius(1px);
|
||||||
|
.box-shadow(0 1px 0 rgba(0,0,0,.25));
|
||||||
|
}
|
||||||
|
.btn-navbar .icon-bar + .icon-bar {
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Dropdown menus
|
||||||
|
// --------------
|
||||||
|
|
||||||
|
// Menu position and menu carets
|
||||||
|
.navbar .dropdown-menu {
|
||||||
|
&:before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border-left: 7px solid transparent;
|
||||||
|
border-right: 7px solid transparent;
|
||||||
|
border-bottom: 7px solid #ccc;
|
||||||
|
border-bottom-color: @dropdownBorder;
|
||||||
|
position: absolute;
|
||||||
|
top: -7px;
|
||||||
|
left: 9px;
|
||||||
|
}
|
||||||
|
&:after {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-bottom: 6px solid @dropdownBackground;
|
||||||
|
position: absolute;
|
||||||
|
top: -6px;
|
||||||
|
left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Menu position and menu caret support for dropups via extra dropup class
|
||||||
|
.navbar-fixed-bottom .dropdown-menu {
|
||||||
|
&:before {
|
||||||
|
border-top: 7px solid #ccc;
|
||||||
|
border-top-color: @dropdownBorder;
|
||||||
|
border-bottom: 0;
|
||||||
|
bottom: -7px;
|
||||||
|
top: auto;
|
||||||
|
}
|
||||||
|
&:after {
|
||||||
|
border-top: 6px solid @dropdownBackground;
|
||||||
|
border-bottom: 0;
|
||||||
|
bottom: -6px;
|
||||||
|
top: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Dropdown toggle caret
|
||||||
|
.navbar .nav li.dropdown .dropdown-toggle .caret,
|
||||||
|
.navbar .nav li.dropdown.open .caret {
|
||||||
|
border-top-color: @gray;
|
||||||
|
border-bottom-color: @grayLight;
|
||||||
|
}
|
||||||
|
.navbar .nav li.dropdown.active .caret {
|
||||||
|
.opacity(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove background color from open dropdown
|
||||||
|
.navbar .nav li.dropdown.open > .dropdown-toggle,
|
||||||
|
.navbar .nav li.dropdown.active > .dropdown-toggle,
|
||||||
|
.navbar .nav li.dropdown.open.active > .dropdown-toggle {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dropdown link on hover
|
||||||
|
.navbar .nav li.dropdown.active > .dropdown-toggle:hover {
|
||||||
|
color: @white;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Right aligned menus need alt position
|
||||||
|
// TODO: rejigger this at some point to simplify the selectors
|
||||||
|
.navbar .pull-right .dropdown-menu,
|
||||||
|
.navbar .dropdown-menu.pull-right {
|
||||||
|
left: auto;
|
||||||
|
right: 0;
|
||||||
|
&:before {
|
||||||
|
left: auto;
|
||||||
|
right: 12px;
|
||||||
|
}
|
||||||
|
&:after {
|
||||||
|
left: auto;
|
||||||
|
right: 13px;
|
||||||
|
}
|
||||||
|
}
|
363
public/themes/default_without_html/less/navs.less
Normal file
363
public/themes/default_without_html/less/navs.less
Normal file
|
@ -0,0 +1,363 @@
|
||||||
|
// NAVIGATIONS
|
||||||
|
// -----------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// BASE CLASS
|
||||||
|
// ----------
|
||||||
|
|
||||||
|
.nav {
|
||||||
|
margin-left: 0;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make links block level
|
||||||
|
.nav > li > a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.nav > li > a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: @grayLighter;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Redeclare pull classes because of specifity
|
||||||
|
.nav > .pull-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nav headers (for dropdowns and lists)
|
||||||
|
.nav .nav-header {
|
||||||
|
display: block;
|
||||||
|
padding: 3px 15px;
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
color: @grayLight;
|
||||||
|
text-shadow: 0 1px 0 rgba(255,255,255,.5);
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
// Space them out when they follow another list item (link)
|
||||||
|
.nav li + .nav-header {
|
||||||
|
margin-top: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// NAV LIST
|
||||||
|
// --------
|
||||||
|
|
||||||
|
.nav-list {
|
||||||
|
padding-left: 15px;
|
||||||
|
padding-right: 15px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.nav-list > li > a,
|
||||||
|
.nav-list .nav-header {
|
||||||
|
margin-left: -15px;
|
||||||
|
margin-right: -15px;
|
||||||
|
text-shadow: 0 1px 0 rgba(255,255,255,.5);
|
||||||
|
}
|
||||||
|
.nav-list > li > a {
|
||||||
|
padding: 3px 15px;
|
||||||
|
}
|
||||||
|
.nav-list > .active > a,
|
||||||
|
.nav-list > .active > a:hover {
|
||||||
|
color: @white;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0,0,0,.2);
|
||||||
|
background-color: @linkColor;
|
||||||
|
}
|
||||||
|
.nav-list [class^="icon-"] {
|
||||||
|
margin-right: 2px;
|
||||||
|
}
|
||||||
|
// Dividers (basically an hr) within the dropdown
|
||||||
|
.nav-list .divider {
|
||||||
|
.nav-divider();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// TABS AND PILLS
|
||||||
|
// -------------
|
||||||
|
|
||||||
|
// Common styles
|
||||||
|
.nav-tabs,
|
||||||
|
.nav-pills {
|
||||||
|
.clearfix();
|
||||||
|
}
|
||||||
|
.nav-tabs > li,
|
||||||
|
.nav-pills > li {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.nav-tabs > li > a,
|
||||||
|
.nav-pills > li > a {
|
||||||
|
padding-right: 12px;
|
||||||
|
padding-left: 12px;
|
||||||
|
margin-right: 2px;
|
||||||
|
line-height: 14px; // keeps the overall height an even number
|
||||||
|
}
|
||||||
|
|
||||||
|
// TABS
|
||||||
|
// ----
|
||||||
|
|
||||||
|
// Give the tabs something to sit on
|
||||||
|
.nav-tabs {
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
// Make the list-items overlay the bottom border
|
||||||
|
.nav-tabs > li {
|
||||||
|
margin-bottom: -1px;
|
||||||
|
}
|
||||||
|
// Actual tabs (as links)
|
||||||
|
.nav-tabs > li > a {
|
||||||
|
padding-top: 8px;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
.border-radius(4px 4px 0 0);
|
||||||
|
&:hover {
|
||||||
|
border-color: @grayLighter @grayLighter #ddd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Active state, and it's :hover to override normal :hover
|
||||||
|
.nav-tabs > .active > a,
|
||||||
|
.nav-tabs > .active > a:hover {
|
||||||
|
color: @gray;
|
||||||
|
background-color: @white;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-bottom-color: transparent;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// PILLS
|
||||||
|
// -----
|
||||||
|
|
||||||
|
// Links rendered as pills
|
||||||
|
.nav-pills > li > a {
|
||||||
|
padding-top: 8px;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
margin-top: 2px;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
.border-radius(5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Active state
|
||||||
|
.nav-pills > .active > a,
|
||||||
|
.nav-pills > .active > a:hover {
|
||||||
|
color: @white;
|
||||||
|
background-color: @linkColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// STACKED NAV
|
||||||
|
// -----------
|
||||||
|
|
||||||
|
// Stacked tabs and pills
|
||||||
|
.nav-stacked > li {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
.nav-stacked > li > a {
|
||||||
|
margin-right: 0; // no need for the gap between nav items
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tabs
|
||||||
|
.nav-tabs.nav-stacked {
|
||||||
|
border-bottom: 0;
|
||||||
|
}
|
||||||
|
.nav-tabs.nav-stacked > li > a {
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
.border-radius(0);
|
||||||
|
}
|
||||||
|
.nav-tabs.nav-stacked > li:first-child > a {
|
||||||
|
.border-radius(4px 4px 0 0);
|
||||||
|
}
|
||||||
|
.nav-tabs.nav-stacked > li:last-child > a {
|
||||||
|
.border-radius(0 0 4px 4px);
|
||||||
|
}
|
||||||
|
.nav-tabs.nav-stacked > li > a:hover {
|
||||||
|
border-color: #ddd;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pills
|
||||||
|
.nav-pills.nav-stacked > li > a {
|
||||||
|
margin-bottom: 3px;
|
||||||
|
}
|
||||||
|
.nav-pills.nav-stacked > li:last-child > a {
|
||||||
|
margin-bottom: 1px; // decrease margin to match sizing of stacked tabs
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// DROPDOWNS
|
||||||
|
// ---------
|
||||||
|
|
||||||
|
.nav-tabs .dropdown-menu {
|
||||||
|
.border-radius(0 0 5px 5px); // remove the top rounded corners here since there is a hard edge above the menu
|
||||||
|
}
|
||||||
|
.nav-pills .dropdown-menu {
|
||||||
|
.border-radius(4px); // make rounded corners match the pills
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default dropdown links
|
||||||
|
// -------------------------
|
||||||
|
// Make carets use linkColor to start
|
||||||
|
.nav-tabs .dropdown-toggle .caret,
|
||||||
|
.nav-pills .dropdown-toggle .caret {
|
||||||
|
border-top-color: @linkColor;
|
||||||
|
border-bottom-color: @linkColor;
|
||||||
|
margin-top: 6px;
|
||||||
|
}
|
||||||
|
.nav-tabs .dropdown-toggle:hover .caret,
|
||||||
|
.nav-pills .dropdown-toggle:hover .caret {
|
||||||
|
border-top-color: @linkColorHover;
|
||||||
|
border-bottom-color: @linkColorHover;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Active dropdown links
|
||||||
|
// -------------------------
|
||||||
|
.nav-tabs .active .dropdown-toggle .caret,
|
||||||
|
.nav-pills .active .dropdown-toggle .caret {
|
||||||
|
border-top-color: @grayDark;
|
||||||
|
border-bottom-color: @grayDark;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Active:hover dropdown links
|
||||||
|
// -------------------------
|
||||||
|
.nav > .dropdown.active > a:hover {
|
||||||
|
color: @black;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open dropdowns
|
||||||
|
// -------------------------
|
||||||
|
.nav-tabs .open .dropdown-toggle,
|
||||||
|
.nav-pills .open .dropdown-toggle,
|
||||||
|
.nav > li.dropdown.open.active > a:hover {
|
||||||
|
color: @white;
|
||||||
|
background-color: @grayLight;
|
||||||
|
border-color: @grayLight;
|
||||||
|
}
|
||||||
|
.nav li.dropdown.open .caret,
|
||||||
|
.nav li.dropdown.open.active .caret,
|
||||||
|
.nav li.dropdown.open a:hover .caret {
|
||||||
|
border-top-color: @white;
|
||||||
|
border-bottom-color: @white;
|
||||||
|
.opacity(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dropdowns in stacked tabs
|
||||||
|
.tabs-stacked .open > a:hover {
|
||||||
|
border-color: @grayLight;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// TABBABLE
|
||||||
|
// --------
|
||||||
|
|
||||||
|
|
||||||
|
// COMMON STYLES
|
||||||
|
// -------------
|
||||||
|
|
||||||
|
// Clear any floats
|
||||||
|
.tabbable {
|
||||||
|
.clearfix();
|
||||||
|
}
|
||||||
|
.tab-content {
|
||||||
|
overflow: auto; // prevent content from running below tabs
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove border on bottom, left, right
|
||||||
|
.tabs-below > .nav-tabs,
|
||||||
|
.tabs-right > .nav-tabs,
|
||||||
|
.tabs-left > .nav-tabs {
|
||||||
|
border-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show/hide tabbable areas
|
||||||
|
.tab-content > .tab-pane,
|
||||||
|
.pill-content > .pill-pane {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.tab-content > .active,
|
||||||
|
.pill-content > .active {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// BOTTOM
|
||||||
|
// ------
|
||||||
|
|
||||||
|
.tabs-below > .nav-tabs {
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
.tabs-below > .nav-tabs > li {
|
||||||
|
margin-top: -1px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.tabs-below > .nav-tabs > li > a {
|
||||||
|
.border-radius(0 0 4px 4px);
|
||||||
|
&:hover {
|
||||||
|
border-bottom-color: transparent;
|
||||||
|
border-top-color: #ddd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tabs-below > .nav-tabs > .active > a,
|
||||||
|
.tabs-below > .nav-tabs > .active > a:hover {
|
||||||
|
border-color: transparent #ddd #ddd #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
// LEFT & RIGHT
|
||||||
|
// ------------
|
||||||
|
|
||||||
|
// Common styles
|
||||||
|
.tabs-left > .nav-tabs > li,
|
||||||
|
.tabs-right > .nav-tabs > li {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
.tabs-left > .nav-tabs > li > a,
|
||||||
|
.tabs-right > .nav-tabs > li > a {
|
||||||
|
min-width: 74px;
|
||||||
|
margin-right: 0;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tabs on the left
|
||||||
|
.tabs-left > .nav-tabs {
|
||||||
|
float: left;
|
||||||
|
margin-right: 19px;
|
||||||
|
border-right: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
.tabs-left > .nav-tabs > li > a {
|
||||||
|
margin-right: -1px;
|
||||||
|
.border-radius(4px 0 0 4px);
|
||||||
|
}
|
||||||
|
.tabs-left > .nav-tabs > li > a:hover {
|
||||||
|
border-color: @grayLighter #ddd @grayLighter @grayLighter;
|
||||||
|
}
|
||||||
|
.tabs-left > .nav-tabs .active > a,
|
||||||
|
.tabs-left > .nav-tabs .active > a:hover {
|
||||||
|
border-color: #ddd transparent #ddd #ddd;
|
||||||
|
*border-right-color: @white;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tabs on the right
|
||||||
|
.tabs-right > .nav-tabs {
|
||||||
|
float: right;
|
||||||
|
margin-left: 19px;
|
||||||
|
border-left: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
.tabs-right > .nav-tabs > li > a {
|
||||||
|
margin-left: -1px;
|
||||||
|
.border-radius(0 4px 4px 0);
|
||||||
|
}
|
||||||
|
.tabs-right > .nav-tabs > li > a:hover {
|
||||||
|
border-color: @grayLighter @grayLighter @grayLighter #ddd;
|
||||||
|
}
|
||||||
|
.tabs-right > .nav-tabs .active > a,
|
||||||
|
.tabs-right > .nav-tabs .active > a:hover {
|
||||||
|
border-color: #ddd #ddd #ddd transparent;
|
||||||
|
*border-left-color: @white;
|
||||||
|
}
|
94
public/themes/default_without_html/less/network.less
Normal file
94
public/themes/default_without_html/less/network.less
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
.network-view {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
border: 1px solid @treeHeaderBorder;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&.loading-commits {
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
height: 100px;
|
||||||
|
width: 200px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
margin-left: -100px;
|
||||||
|
margin-top: -50px;
|
||||||
|
|
||||||
|
color: #555;
|
||||||
|
background: rgba(255,255,255,.8) url("@{ajaxLoaderPath}") no-repeat center;
|
||||||
|
z-index: 2000;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 2px 2px 2px #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.network-header .meta:after {
|
||||||
|
content: " - Loading";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.network-header {
|
||||||
|
padding: 8px;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: bottom;
|
||||||
|
#gradient > .vertical(@treeHeaderHighlight, @treeHeader);
|
||||||
|
border-bottom: 1px solid lighten(@treeHeaderBorder, 5%);
|
||||||
|
font-weight: bold;
|
||||||
|
color: @gray;
|
||||||
|
text-shadow: 1px 1px 1px rgba(255, 255, 255, 1);
|
||||||
|
height: 28px;
|
||||||
|
|
||||||
|
.meta {
|
||||||
|
float: left;
|
||||||
|
padding: 4px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
margin: 0;
|
||||||
|
padding: 12px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.network-graph {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
height: 400px;
|
||||||
|
overflow: hidden;
|
||||||
|
cursor: move;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.network-commit-overlay {
|
||||||
|
position: absolute;
|
||||||
|
width: 400px;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
padding: 8px;
|
||||||
|
margin: 0 0 @baseLineHeight;
|
||||||
|
list-style: none;
|
||||||
|
#gradient > .vertical(@white, #f5f5f5);
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
|
||||||
|
.border-radius(3px);
|
||||||
|
.box-shadow(~"0 1px 0 rgba(255,255,255,0.4), 0 0 10px rgba(0,0,0,0.1)");
|
||||||
|
|
||||||
|
img {
|
||||||
|
float: left;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&>h4,
|
||||||
|
&>p {
|
||||||
|
padding-left: 48px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
36
public/themes/default_without_html/less/pager.less
Normal file
36
public/themes/default_without_html/less/pager.less
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
// PAGER
|
||||||
|
// -----
|
||||||
|
|
||||||
|
.pager {
|
||||||
|
margin-left: 0;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
list-style: none;
|
||||||
|
text-align: center;
|
||||||
|
.clearfix();
|
||||||
|
}
|
||||||
|
.pager li {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
.pager a {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 5px 14px;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
.border-radius(15px);
|
||||||
|
}
|
||||||
|
.pager a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
.pager .next a {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.pager .previous a {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.pager .disabled a,
|
||||||
|
.pager .disabled a:hover {
|
||||||
|
color: @grayLight;
|
||||||
|
background-color: #fff;
|
||||||
|
cursor: default;
|
||||||
|
}
|
56
public/themes/default_without_html/less/pagination.less
Normal file
56
public/themes/default_without_html/less/pagination.less
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
// PAGINATION
|
||||||
|
// ----------
|
||||||
|
|
||||||
|
.pagination {
|
||||||
|
height: @baseLineHeight * 2;
|
||||||
|
margin: @baseLineHeight 0;
|
||||||
|
}
|
||||||
|
.pagination ul {
|
||||||
|
display: inline-block;
|
||||||
|
.ie7-inline-block();
|
||||||
|
margin-left: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
.border-radius(3px);
|
||||||
|
.box-shadow(0 1px 2px rgba(0,0,0,.05));
|
||||||
|
}
|
||||||
|
.pagination li {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
.pagination a {
|
||||||
|
float: left;
|
||||||
|
padding: 0 14px;
|
||||||
|
line-height: (@baseLineHeight * 2) - 2;
|
||||||
|
text-decoration: none;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-left-width: 0;
|
||||||
|
}
|
||||||
|
.pagination a:hover,
|
||||||
|
.pagination .active a {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
.pagination .active a {
|
||||||
|
color: @grayLight;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
.pagination .disabled span,
|
||||||
|
.pagination .disabled a,
|
||||||
|
.pagination .disabled a:hover {
|
||||||
|
color: @grayLight;
|
||||||
|
background-color: transparent;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
.pagination li:first-child a {
|
||||||
|
border-left-width: 1px;
|
||||||
|
.border-radius(3px 0 0 3px);
|
||||||
|
}
|
||||||
|
.pagination li:last-child a {
|
||||||
|
.border-radius(0 3px 3px 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Centered
|
||||||
|
.pagination-centered {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.pagination-right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
49
public/themes/default_without_html/less/popovers.less
Normal file
49
public/themes/default_without_html/less/popovers.less
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
// POPOVERS
|
||||||
|
// --------
|
||||||
|
|
||||||
|
.popover {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: @zindexPopover;
|
||||||
|
display: none;
|
||||||
|
padding: 5px;
|
||||||
|
&.top { margin-top: -5px; }
|
||||||
|
&.right { margin-left: 5px; }
|
||||||
|
&.bottom { margin-top: 5px; }
|
||||||
|
&.left { margin-left: -5px; }
|
||||||
|
&.top .arrow { #popoverArrow > .top(); }
|
||||||
|
&.right .arrow { #popoverArrow > .right(); }
|
||||||
|
&.bottom .arrow { #popoverArrow > .bottom(); }
|
||||||
|
&.left .arrow { #popoverArrow > .left(); }
|
||||||
|
.arrow {
|
||||||
|
position: absolute;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.popover-inner {
|
||||||
|
padding: 3px;
|
||||||
|
width: 280px;
|
||||||
|
overflow: hidden;
|
||||||
|
background: @black; // has to be full background declaration for IE fallback
|
||||||
|
background: rgba(0,0,0,.8);
|
||||||
|
.border-radius(6px);
|
||||||
|
.box-shadow(0 3px 7px rgba(0,0,0,0.3));
|
||||||
|
}
|
||||||
|
.popover-title {
|
||||||
|
padding: 9px 15px;
|
||||||
|
line-height: 1;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border-bottom:1px solid #eee;
|
||||||
|
.border-radius(3px 3px 0 0);
|
||||||
|
}
|
||||||
|
.popover-content {
|
||||||
|
padding: 14px;
|
||||||
|
background-color: @white;
|
||||||
|
.border-radius(0 0 3px 3px);
|
||||||
|
.background-clip(padding-box);
|
||||||
|
p, ul, ol {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
117
public/themes/default_without_html/less/progress-bars.less
Normal file
117
public/themes/default_without_html/less/progress-bars.less
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
// PROGRESS BARS
|
||||||
|
// -------------
|
||||||
|
|
||||||
|
|
||||||
|
// ANIMATIONS
|
||||||
|
// ----------
|
||||||
|
|
||||||
|
// Webkit
|
||||||
|
@-webkit-keyframes progress-bar-stripes {
|
||||||
|
from { background-position: 40px 0; }
|
||||||
|
to { background-position: 0 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Firefox
|
||||||
|
@-moz-keyframes progress-bar-stripes {
|
||||||
|
from { background-position: 40px 0; }
|
||||||
|
to { background-position: 0 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// IE9
|
||||||
|
@-ms-keyframes progress-bar-stripes {
|
||||||
|
from { background-position: 40px 0; }
|
||||||
|
to { background-position: 0 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Opera
|
||||||
|
@-o-keyframes progress-bar-stripes {
|
||||||
|
from { background-position: 0 0; }
|
||||||
|
to { background-position: 40px 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spec
|
||||||
|
@keyframes progress-bar-stripes {
|
||||||
|
from { background-position: 40px 0; }
|
||||||
|
to { background-position: 0 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// THE BARS
|
||||||
|
// --------
|
||||||
|
|
||||||
|
// Outer container
|
||||||
|
.progress {
|
||||||
|
overflow: hidden;
|
||||||
|
height: 18px;
|
||||||
|
margin-bottom: 18px;
|
||||||
|
#gradient > .vertical(#f5f5f5, #f9f9f9);
|
||||||
|
.box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
|
||||||
|
.border-radius(4px);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bar of progress
|
||||||
|
.progress .bar {
|
||||||
|
width: 0;
|
||||||
|
height: 18px;
|
||||||
|
color: @white;
|
||||||
|
font-size: 12px;
|
||||||
|
text-align: center;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
||||||
|
#gradient > .vertical(#149bdf, #0480be);
|
||||||
|
.box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
|
||||||
|
.box-sizing(border-box);
|
||||||
|
.transition(width .6s ease);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Striped bars
|
||||||
|
.progress-striped .bar {
|
||||||
|
#gradient > .striped(#149bdf);
|
||||||
|
.background-size(40px 40px);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Call animation for the active one
|
||||||
|
.progress.active .bar {
|
||||||
|
-webkit-animation: progress-bar-stripes 2s linear infinite;
|
||||||
|
-moz-animation: progress-bar-stripes 2s linear infinite;
|
||||||
|
-ms-animation: progress-bar-stripes 2s linear infinite;
|
||||||
|
-o-animation: progress-bar-stripes 2s linear infinite;
|
||||||
|
animation: progress-bar-stripes 2s linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// COLORS
|
||||||
|
// ------
|
||||||
|
|
||||||
|
// Danger (red)
|
||||||
|
.progress-danger .bar {
|
||||||
|
#gradient > .vertical(#ee5f5b, #c43c35);
|
||||||
|
}
|
||||||
|
.progress-danger.progress-striped .bar {
|
||||||
|
#gradient > .striped(#ee5f5b);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Success (green)
|
||||||
|
.progress-success .bar {
|
||||||
|
#gradient > .vertical(#62c462, #57a957);
|
||||||
|
}
|
||||||
|
.progress-success.progress-striped .bar {
|
||||||
|
#gradient > .striped(#62c462);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Info (teal)
|
||||||
|
.progress-info .bar {
|
||||||
|
#gradient > .vertical(#5bc0de, #339bb9);
|
||||||
|
}
|
||||||
|
.progress-info.progress-striped .bar {
|
||||||
|
#gradient > .striped(#5bc0de);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Warning (orange)
|
||||||
|
.progress-warning .bar {
|
||||||
|
#gradient > .vertical(lighten(@orange, 15%), @orange);
|
||||||
|
}
|
||||||
|
.progress-warning.progress-striped .bar {
|
||||||
|
#gradient > .striped(lighten(@orange, 15%));
|
||||||
|
}
|
129
public/themes/default_without_html/less/reset.less
Normal file
129
public/themes/default_without_html/less/reset.less
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
// Reset.less
|
||||||
|
// Adapted from Normalize.css http://github.com/necolas/normalize.css
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Display in IE6-9 and FF3
|
||||||
|
// -------------------------
|
||||||
|
|
||||||
|
article,
|
||||||
|
aside,
|
||||||
|
details,
|
||||||
|
figcaption,
|
||||||
|
figure,
|
||||||
|
footer,
|
||||||
|
header,
|
||||||
|
hgroup,
|
||||||
|
nav,
|
||||||
|
section {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Display block in IE6-9 and FF3
|
||||||
|
// -------------------------
|
||||||
|
|
||||||
|
audio,
|
||||||
|
canvas,
|
||||||
|
video {
|
||||||
|
display: inline-block;
|
||||||
|
*display: inline;
|
||||||
|
*zoom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prevents modern browsers from displaying 'audio' without controls
|
||||||
|
// -------------------------
|
||||||
|
|
||||||
|
audio:not([controls]) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Base settings
|
||||||
|
// -------------------------
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-size: 100%;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
-ms-text-size-adjust: 100%;
|
||||||
|
overflow-y: scroll;
|
||||||
|
overflow: -moz-scrollbars-vertical;
|
||||||
|
-ms-overflow-y: scroll;
|
||||||
|
}
|
||||||
|
// Focus states
|
||||||
|
a:focus {
|
||||||
|
.tab-focus();
|
||||||
|
}
|
||||||
|
// Hover & Active
|
||||||
|
a:hover,
|
||||||
|
a:active {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prevents sub and sup affecting line-height in all browsers
|
||||||
|
// -------------------------
|
||||||
|
|
||||||
|
sub,
|
||||||
|
sup {
|
||||||
|
position: relative;
|
||||||
|
font-size: 75%;
|
||||||
|
line-height: 0;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
sup {
|
||||||
|
top: -0.5em;
|
||||||
|
}
|
||||||
|
sub {
|
||||||
|
bottom: -0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Img border in a's and image quality
|
||||||
|
// -------------------------
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 100%; // Make images inherently responsive
|
||||||
|
vertical-align: middle;
|
||||||
|
border: 0;
|
||||||
|
-ms-interpolation-mode: bicubic;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Forms
|
||||||
|
// -------------------------
|
||||||
|
|
||||||
|
// Font size in all browsers, margin changes, misc consistency
|
||||||
|
button,
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 100%;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
button,
|
||||||
|
input {
|
||||||
|
*overflow: visible; // Inner spacing ie IE6/7
|
||||||
|
line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
|
||||||
|
}
|
||||||
|
button::-moz-focus-inner,
|
||||||
|
input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
button,
|
||||||
|
input[type="button"],
|
||||||
|
input[type="reset"],
|
||||||
|
input[type="submit"] {
|
||||||
|
cursor: pointer; // Cursors on all buttons applied consistently
|
||||||
|
-webkit-appearance: button; // Style clickable inputs in iOS
|
||||||
|
}
|
||||||
|
input[type="search"] { // Appearance in Safari/Chrome
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
-webkit-appearance: textfield;
|
||||||
|
}
|
||||||
|
input[type="search"]::-webkit-search-decoration,
|
||||||
|
input[type="search"]::-webkit-search-cancel-button {
|
||||||
|
-webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
|
||||||
|
}
|
||||||
|
textarea {
|
||||||
|
overflow: auto; // Remove vertical scrollbar in IE6-9
|
||||||
|
vertical-align: top; // Readability and alignment cross-browser
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
// LARGE DESKTOP & UP
|
||||||
|
// ------------------
|
||||||
|
|
||||||
|
@media (min-width: 1200px) {
|
||||||
|
|
||||||
|
// Fixed grid
|
||||||
|
#grid > .core(70px, 30px);
|
||||||
|
|
||||||
|
// Fluid grid
|
||||||
|
#grid > .fluid(5.982905983%, 2.564102564%);
|
||||||
|
|
||||||
|
// Input grid
|
||||||
|
#grid > .input(70px, 30px);
|
||||||
|
|
||||||
|
// Thumbnails
|
||||||
|
.thumbnails {
|
||||||
|
margin-left: -30px;
|
||||||
|
}
|
||||||
|
.thumbnails > li {
|
||||||
|
margin-left: 30px;
|
||||||
|
}
|
||||||
|
.row-fluid .thumbnails {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,149 @@
|
||||||
|
// UP TO LANDSCAPE PHONE
|
||||||
|
// ---------------------
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
|
||||||
|
// Smooth out the collapsing/expanding nav
|
||||||
|
.nav-collapse {
|
||||||
|
-webkit-transform: translate3d(0, 0, 0); // activate the GPU
|
||||||
|
}
|
||||||
|
|
||||||
|
// Block level the page header small tag for readability
|
||||||
|
.page-header h1 small {
|
||||||
|
display: block;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update checkboxes for iOS
|
||||||
|
input[type="checkbox"],
|
||||||
|
input[type="radio"] {
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove the horizontal form styles
|
||||||
|
.form-horizontal .control-group > label {
|
||||||
|
float: none;
|
||||||
|
width: auto;
|
||||||
|
padding-top: 0;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
// Move over all input controls and content
|
||||||
|
.form-horizontal .controls {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
// Move the options list down to align with labels
|
||||||
|
.form-horizontal .control-list {
|
||||||
|
padding-top: 0; // has to be padding because margin collaspes
|
||||||
|
}
|
||||||
|
// Move over buttons in .form-actions to align with .controls
|
||||||
|
.form-horizontal .form-actions {
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modals
|
||||||
|
.modal {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
left: 10px;
|
||||||
|
right: 10px;
|
||||||
|
width: auto;
|
||||||
|
margin: 0;
|
||||||
|
&.fade.in { top: auto; }
|
||||||
|
}
|
||||||
|
.modal-header .close {
|
||||||
|
padding: 10px;
|
||||||
|
margin: -10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Carousel
|
||||||
|
.carousel-caption {
|
||||||
|
position: static;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// LANDSCAPE PHONE TO SMALL DESKTOP & PORTRAIT TABLET
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
|
||||||
|
// Padding to set content in a bit
|
||||||
|
body {
|
||||||
|
padding-left: 20px;
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
// Negative indent the now static "fixed" navbar
|
||||||
|
.navbar-fixed-top,
|
||||||
|
.navbar-fixed-bottom {
|
||||||
|
margin-left: -20px;
|
||||||
|
margin-right: -20px;
|
||||||
|
}
|
||||||
|
// Remove padding on container given explicit padding set on body
|
||||||
|
.container-fluid {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TYPOGRAPHY
|
||||||
|
// ----------
|
||||||
|
// Reset horizontal dl
|
||||||
|
.dl-horizontal {
|
||||||
|
dt {
|
||||||
|
float: none;
|
||||||
|
clear: none;
|
||||||
|
width: auto;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
dd {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GRID & CONTAINERS
|
||||||
|
// -----------------
|
||||||
|
// Remove width from containers
|
||||||
|
.container {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
// Fluid rows
|
||||||
|
.row-fluid {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
// Undo negative margin on rows and thumbnails
|
||||||
|
.row,
|
||||||
|
.thumbnails {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
// Make all grid-sized elements block level again
|
||||||
|
[class*="span"],
|
||||||
|
.row-fluid [class*="span"] {
|
||||||
|
float: none;
|
||||||
|
display: block;
|
||||||
|
width: auto;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FORM FIELDS
|
||||||
|
// -----------
|
||||||
|
// Make span* classes full width
|
||||||
|
.input-large,
|
||||||
|
.input-xlarge,
|
||||||
|
.input-xxlarge,
|
||||||
|
input[class*="span"],
|
||||||
|
select[class*="span"],
|
||||||
|
textarea[class*="span"],
|
||||||
|
.uneditable-input {
|
||||||
|
.input-block-level();
|
||||||
|
}
|
||||||
|
// But don't let it screw up prepend/append inputs
|
||||||
|
.input-prepend input,
|
||||||
|
.input-append input,
|
||||||
|
.input-prepend input[class*="span"],
|
||||||
|
.input-append input[class*="span"] {
|
||||||
|
display: inline-block; // redeclare so they don't wrap to new lines
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
// PORTRAIT TABLET TO DEFAULT DESKTOP
|
||||||
|
// ----------------------------------
|
||||||
|
|
||||||
|
@media (min-width: 768px) and (max-width: 979px) {
|
||||||
|
|
||||||
|
// Fixed grid
|
||||||
|
#grid > .core(42px, 20px);
|
||||||
|
|
||||||
|
// Fluid grid
|
||||||
|
#grid > .fluid(5.801104972%, 2.762430939%);
|
||||||
|
|
||||||
|
// Input grid
|
||||||
|
#grid > .input(42px, 20px);
|
||||||
|
|
||||||
|
// No need to reset .thumbnails here since it's the same @gridGutterWidth
|
||||||
|
|
||||||
|
}
|
146
public/themes/default_without_html/less/responsive-navbar.less
Normal file
146
public/themes/default_without_html/less/responsive-navbar.less
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
// TABLETS AND BELOW
|
||||||
|
// -----------------
|
||||||
|
@media (max-width: 979px) {
|
||||||
|
|
||||||
|
// UNFIX THE TOPBAR
|
||||||
|
// ----------------
|
||||||
|
// Remove any padding from the body
|
||||||
|
body {
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
// Unfix the navbar
|
||||||
|
.navbar-fixed-top {
|
||||||
|
position: static;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
}
|
||||||
|
.navbar-fixed-top .navbar-inner {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.navbar .container {
|
||||||
|
width: auto;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
// Account for brand name
|
||||||
|
.navbar .brand {
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
margin: 0 0 0 -5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// COLLAPSIBLE NAVBAR
|
||||||
|
// ------------------
|
||||||
|
// Nav collapse clears brand
|
||||||
|
.nav-collapse {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
// Block-level the nav
|
||||||
|
.nav-collapse .nav {
|
||||||
|
float: none;
|
||||||
|
margin: 0 0 (@baseLineHeight / 2);
|
||||||
|
}
|
||||||
|
.nav-collapse .nav > li {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
.nav-collapse .nav > li > a {
|
||||||
|
margin-bottom: 2px;
|
||||||
|
}
|
||||||
|
.nav-collapse .nav > .divider-vertical {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.nav-collapse .nav .nav-header {
|
||||||
|
color: @navbarText;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
// Nav and dropdown links in navbar
|
||||||
|
.nav-collapse .nav > li > a,
|
||||||
|
.nav-collapse .dropdown-menu a {
|
||||||
|
padding: 6px 15px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: @navbarLinkColor;
|
||||||
|
.border-radius(3px);
|
||||||
|
}
|
||||||
|
// Buttons
|
||||||
|
.nav-collapse .btn {
|
||||||
|
padding: 4px 10px 4px;
|
||||||
|
font-weight: normal;
|
||||||
|
.border-radius(4px);
|
||||||
|
}
|
||||||
|
.nav-collapse .dropdown-menu li + li a {
|
||||||
|
margin-bottom: 2px;
|
||||||
|
}
|
||||||
|
.nav-collapse .nav > li > a:hover,
|
||||||
|
.nav-collapse .dropdown-menu a:hover {
|
||||||
|
background-color: @navbarBackground;
|
||||||
|
}
|
||||||
|
// Buttons in the navbar
|
||||||
|
.nav-collapse.in .btn-group {
|
||||||
|
margin-top: 5px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
// Dropdowns in the navbar
|
||||||
|
.nav-collapse .dropdown-menu {
|
||||||
|
position: static;
|
||||||
|
top: auto;
|
||||||
|
left: auto;
|
||||||
|
float: none;
|
||||||
|
display: block;
|
||||||
|
max-width: none;
|
||||||
|
margin: 0 15px;
|
||||||
|
padding: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
.border-radius(0);
|
||||||
|
.box-shadow(none);
|
||||||
|
}
|
||||||
|
.nav-collapse .dropdown-menu:before,
|
||||||
|
.nav-collapse .dropdown-menu:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.nav-collapse .dropdown-menu .divider {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
// Forms in navbar
|
||||||
|
.nav-collapse .navbar-form,
|
||||||
|
.nav-collapse .navbar-search {
|
||||||
|
float: none;
|
||||||
|
padding: (@baseLineHeight / 2) 15px;
|
||||||
|
margin: (@baseLineHeight / 2) 0;
|
||||||
|
border-top: 1px solid @navbarBackground;
|
||||||
|
border-bottom: 1px solid @navbarBackground;
|
||||||
|
.box-shadow(~"inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1)");
|
||||||
|
}
|
||||||
|
// Pull right (secondary) nav content
|
||||||
|
.navbar .nav-collapse .nav.pull-right {
|
||||||
|
float: none;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
// Hide everything in the navbar save .brand and toggle button */
|
||||||
|
.nav-collapse,
|
||||||
|
.nav-collapse.collapse {
|
||||||
|
overflow: hidden;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
// Navbar button
|
||||||
|
.navbar .btn-navbar {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
// STATIC NAVBAR
|
||||||
|
// -------------
|
||||||
|
.navbar-static .navbar-inner {
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// DEFAULT DESKTOP
|
||||||
|
// ---------------
|
||||||
|
|
||||||
|
// Required to make the collapsing navbar work on regular desktops
|
||||||
|
@media (min-width: 980px) {
|
||||||
|
.nav-collapse.collapse {
|
||||||
|
height: auto !important;
|
||||||
|
overflow: visible !important;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
// RESPONSIVE CLASSES
|
||||||
|
// ------------------
|
||||||
|
|
||||||
|
// Hide from screenreaders and browsers
|
||||||
|
// Credit: HTML5 Boilerplate
|
||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Visibility utilities
|
||||||
|
|
||||||
|
// For desktops
|
||||||
|
.visible-phone { display: none !important; }
|
||||||
|
.visible-tablet { display: none !important; }
|
||||||
|
.visible-desktop { } // Don't set initially
|
||||||
|
.hidden-phone { }
|
||||||
|
.hidden-tablet { }
|
||||||
|
.hidden-desktop { display: none !important; }
|
||||||
|
|
||||||
|
// Phones only
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
// Show
|
||||||
|
.visible-phone { display: inherit !important; } // Use inherit to restore previous behavior
|
||||||
|
// Hide
|
||||||
|
.hidden-phone { display: none !important; }
|
||||||
|
// Hide everything else
|
||||||
|
.hidden-desktop { display: inherit !important; }
|
||||||
|
.visible-desktop { display: none !important; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tablets & small desktops only
|
||||||
|
@media (min-width: 768px) and (max-width: 979px) {
|
||||||
|
// Show
|
||||||
|
.visible-tablet { display: inherit !important; }
|
||||||
|
// Hide
|
||||||
|
.hidden-tablet { display: none !important; }
|
||||||
|
// Hide everything else
|
||||||
|
.hidden-desktop { display: inherit !important; }
|
||||||
|
.visible-desktop { display: none !important ; }
|
||||||
|
}
|
48
public/themes/default_without_html/less/responsive.less
Normal file
48
public/themes/default_without_html/less/responsive.less
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
/*!
|
||||||
|
* Bootstrap Responsive v2.0.3
|
||||||
|
*
|
||||||
|
* Copyright 2012 Twitter, Inc
|
||||||
|
* Licensed under the Apache License v2.0
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// Responsive.less
|
||||||
|
// For phone and tablet devices
|
||||||
|
// -------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// REPEAT VARIABLES & MIXINS
|
||||||
|
// -------------------------
|
||||||
|
// Required since we compile the responsive stuff separately
|
||||||
|
|
||||||
|
@import "variables.less"; // Modify this for custom colors, font-sizes, etc
|
||||||
|
@import "mixins.less";
|
||||||
|
|
||||||
|
|
||||||
|
// RESPONSIVE CLASSES
|
||||||
|
// ------------------
|
||||||
|
|
||||||
|
@import "responsive-utilities.less";
|
||||||
|
|
||||||
|
|
||||||
|
// MEDIA QUERIES
|
||||||
|
// ------------------
|
||||||
|
|
||||||
|
// Phones to portrait tablets and narrow desktops
|
||||||
|
@import "responsive-767px-max.less";
|
||||||
|
|
||||||
|
// Tablets to regular desktops
|
||||||
|
@import "responsive-768px-979px.less";
|
||||||
|
|
||||||
|
// Large desktops
|
||||||
|
@import "responsive-1200px-min.less";
|
||||||
|
|
||||||
|
|
||||||
|
// RESPONSIVE NAVBAR
|
||||||
|
// ------------------
|
||||||
|
|
||||||
|
// From 979px and below, show a button to toggle navbar contents
|
||||||
|
@import "responsive-navbar.less";
|
30
public/themes/default_without_html/less/scaffolding.less
Normal file
30
public/themes/default_without_html/less/scaffolding.less
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
// Scaffolding
|
||||||
|
// Basic and global styles for generating a grid system, structural layout, and page templates
|
||||||
|
// -------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// Body reset
|
||||||
|
// ----------
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-family: @baseFontFamily;
|
||||||
|
font-size: @baseFontSize;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
color: @textColor;
|
||||||
|
background-color: @bodyBackground;
|
||||||
|
padding-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Links
|
||||||
|
// -----
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: @linkColor;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: @linkColorHover;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
205
public/themes/default_without_html/less/sprites.less
Normal file
205
public/themes/default_without_html/less/sprites.less
Normal file
|
@ -0,0 +1,205 @@
|
||||||
|
// SPRITES
|
||||||
|
// Glyphs and icons for buttons, nav, and more
|
||||||
|
// -------------------------------------------
|
||||||
|
|
||||||
|
.rss {
|
||||||
|
display: inline-block;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
.ie7-restore-right-whitespace();
|
||||||
|
line-height: 16px;
|
||||||
|
vertical-align: text-top;
|
||||||
|
background-image: url("@{rssIconPath}");
|
||||||
|
background-position: 0 0;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ICONS
|
||||||
|
// -----
|
||||||
|
|
||||||
|
// All icons receive the styles of the <i> tag with a base class
|
||||||
|
// of .i and are then given a unique class to add width, height,
|
||||||
|
// and background-position. Your resulting HTML will look like
|
||||||
|
// <i class="icon-inbox"></i>.
|
||||||
|
|
||||||
|
// For the white version of the icons, just add the .icon-white class:
|
||||||
|
// <i class="icon-inbox icon-white"></i>
|
||||||
|
|
||||||
|
[class^="icon-"],
|
||||||
|
[class*=" icon-"] {
|
||||||
|
display: inline-block;
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
.ie7-restore-right-whitespace();
|
||||||
|
line-height: 14px;
|
||||||
|
vertical-align: text-top;
|
||||||
|
background-image: url("@{iconSpritePath}");
|
||||||
|
background-position: 14px 14px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
|
||||||
|
}
|
||||||
|
.icon-white {
|
||||||
|
background-image: url("@{iconWhiteSpritePath}");
|
||||||
|
}
|
||||||
|
.icon-spaced {
|
||||||
|
padding:0 3px 0 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-glass { background-position: 0 0; }
|
||||||
|
.icon-music { background-position: -24px 0; }
|
||||||
|
.icon-search { background-position: -48px 0; }
|
||||||
|
.icon-envelope { background-position: -72px 0; }
|
||||||
|
.icon-heart { background-position: -96px 0; }
|
||||||
|
.icon-star { background-position: -120px 0; }
|
||||||
|
.icon-star-empty { background-position: -144px 0; }
|
||||||
|
.icon-user { background-position: -168px 0; }
|
||||||
|
.icon-film { background-position: -192px 0; }
|
||||||
|
.icon-th-large { background-position: -216px 0; }
|
||||||
|
.icon-th { background-position: -240px 0; }
|
||||||
|
.icon-th-list { background-position: -264px 0; }
|
||||||
|
.icon-ok { background-position: -288px 0; }
|
||||||
|
.icon-remove { background-position: -312px 0; }
|
||||||
|
.icon-zoom-in { background-position: -336px 0; }
|
||||||
|
.icon-zoom-out { background-position: -360px 0; }
|
||||||
|
.icon-off { background-position: -384px 0; }
|
||||||
|
.icon-signal { background-position: -408px 0; }
|
||||||
|
.icon-cog { background-position: -432px 0; }
|
||||||
|
.icon-trash { background-position: -456px 0; }
|
||||||
|
|
||||||
|
.icon-home { background-position: 0 -24px; }
|
||||||
|
.icon-file { background-position: -24px -24px; }
|
||||||
|
.icon-time { background-position: -48px -24px; }
|
||||||
|
.icon-road { background-position: -72px -24px; }
|
||||||
|
.icon-download-alt { background-position: -96px -24px; }
|
||||||
|
.icon-download { background-position: -120px -24px; }
|
||||||
|
.icon-upload { background-position: -144px -24px; }
|
||||||
|
.icon-inbox { background-position: -168px -24px; }
|
||||||
|
.icon-play-circle { background-position: -192px -24px; }
|
||||||
|
.icon-repeat { background-position: -216px -24px; }
|
||||||
|
.icon-refresh { background-position: -240px -24px; }
|
||||||
|
.icon-list-alt { background-position: -264px -24px; }
|
||||||
|
.icon-lock { background-position: -287px -24px; } // 1px off
|
||||||
|
.icon-flag { background-position: -312px -24px; }
|
||||||
|
.icon-headphones { background-position: -336px -24px; }
|
||||||
|
.icon-volume-off { background-position: -360px -24px; }
|
||||||
|
.icon-volume-down { background-position: -384px -24px; }
|
||||||
|
.icon-volume-up { background-position: -408px -24px; }
|
||||||
|
.icon-qrcode { background-position: -432px -24px; }
|
||||||
|
.icon-barcode { background-position: -456px -24px; }
|
||||||
|
|
||||||
|
.icon-tag { background-position: 0 -48px; }
|
||||||
|
.icon-tags { background-position: -25px -48px; } // 1px off
|
||||||
|
.icon-book { background-position: -48px -48px; }
|
||||||
|
.icon-bookmark { background-position: -72px -48px; }
|
||||||
|
.icon-print { background-position: -96px -48px; }
|
||||||
|
.icon-camera { background-position: -120px -48px; }
|
||||||
|
.icon-font { background-position: -144px -48px; }
|
||||||
|
.icon-bold { background-position: -167px -48px; } // 1px off
|
||||||
|
.icon-italic { background-position: -192px -48px; }
|
||||||
|
.icon-text-height { background-position: -216px -48px; }
|
||||||
|
.icon-text-width { background-position: -240px -48px; }
|
||||||
|
.icon-align-left { background-position: -264px -48px; }
|
||||||
|
.icon-align-center { background-position: -288px -48px; }
|
||||||
|
.icon-align-right { background-position: -312px -48px; }
|
||||||
|
.icon-align-justify { background-position: -336px -48px; }
|
||||||
|
.icon-list { background-position: -360px -48px; }
|
||||||
|
.icon-indent-left { background-position: -384px -48px; }
|
||||||
|
.icon-indent-right { background-position: -408px -48px; }
|
||||||
|
.icon-facetime-video { background-position: -432px -48px; }
|
||||||
|
.icon-picture { background-position: -456px -48px; }
|
||||||
|
|
||||||
|
.icon-pencil { background-position: 0 -72px; }
|
||||||
|
.icon-map-marker { background-position: -24px -72px; }
|
||||||
|
.icon-adjust { background-position: -48px -72px; }
|
||||||
|
.icon-tint { background-position: -72px -72px; }
|
||||||
|
.icon-edit { background-position: -96px -72px; }
|
||||||
|
.icon-share { background-position: -120px -72px; }
|
||||||
|
.icon-check { background-position: -144px -72px; }
|
||||||
|
.icon-move { background-position: -168px -72px; }
|
||||||
|
.icon-step-backward { background-position: -192px -72px; }
|
||||||
|
.icon-fast-backward { background-position: -216px -72px; }
|
||||||
|
.icon-backward { background-position: -240px -72px; }
|
||||||
|
.icon-play { background-position: -264px -72px; }
|
||||||
|
.icon-pause { background-position: -288px -72px; }
|
||||||
|
.icon-stop { background-position: -312px -72px; }
|
||||||
|
.icon-forward { background-position: -336px -72px; }
|
||||||
|
.icon-fast-forward { background-position: -360px -72px; }
|
||||||
|
.icon-step-forward { background-position: -384px -72px; }
|
||||||
|
.icon-eject { background-position: -408px -72px; }
|
||||||
|
.icon-chevron-left { background-position: -432px -72px; }
|
||||||
|
.icon-chevron-right { background-position: -456px -72px; }
|
||||||
|
|
||||||
|
.icon-plus-sign { background-position: 0 -96px; }
|
||||||
|
.icon-minus-sign { background-position: -24px -96px; }
|
||||||
|
.icon-remove-sign { background-position: -48px -96px; }
|
||||||
|
.icon-ok-sign { background-position: -72px -96px; }
|
||||||
|
.icon-question-sign { background-position: -96px -96px; }
|
||||||
|
.icon-info-sign { background-position: -120px -96px; }
|
||||||
|
.icon-screenshot { background-position: -144px -96px; }
|
||||||
|
.icon-remove-circle { background-position: -168px -96px; }
|
||||||
|
.icon-ok-circle { background-position: -192px -96px; }
|
||||||
|
.icon-ban-circle { background-position: -216px -96px; }
|
||||||
|
.icon-arrow-left { background-position: -240px -96px; }
|
||||||
|
.icon-arrow-right { background-position: -264px -96px; }
|
||||||
|
.icon-arrow-up { background-position: -289px -96px; } // 1px off
|
||||||
|
.icon-arrow-down { background-position: -312px -96px; }
|
||||||
|
.icon-share-alt { background-position: -336px -96px; }
|
||||||
|
.icon-resize-full { background-position: -360px -96px; }
|
||||||
|
.icon-resize-small { background-position: -384px -96px; }
|
||||||
|
.icon-plus { background-position: -408px -96px; }
|
||||||
|
.icon-minus { background-position: -433px -96px; }
|
||||||
|
.icon-asterisk { background-position: -456px -96px; }
|
||||||
|
|
||||||
|
.icon-exclamation-sign { background-position: 0 -120px; }
|
||||||
|
.icon-gift { background-position: -24px -120px; }
|
||||||
|
.icon-leaf { background-position: -48px -120px; }
|
||||||
|
.icon-fire { background-position: -72px -120px; }
|
||||||
|
.icon-eye-open { background-position: -96px -120px; }
|
||||||
|
.icon-eye-close { background-position: -120px -120px; }
|
||||||
|
.icon-warning-sign { background-position: -144px -120px; }
|
||||||
|
.icon-plane { background-position: -168px -120px; }
|
||||||
|
.icon-calendar { background-position: -192px -120px; }
|
||||||
|
.icon-random { background-position: -216px -120px; }
|
||||||
|
.icon-comment { background-position: -240px -120px; }
|
||||||
|
.icon-magnet { background-position: -264px -120px; }
|
||||||
|
.icon-chevron-up { background-position: -288px -120px; }
|
||||||
|
.icon-chevron-down { background-position: -313px -119px; } // 1px, 1px off
|
||||||
|
.icon-retweet { background-position: -336px -120px; }
|
||||||
|
.icon-shopping-cart { background-position: -360px -120px; }
|
||||||
|
.icon-folder-close { background-position: -384px -120px; }
|
||||||
|
.icon-folder-open { background-position: -408px -120px; }
|
||||||
|
.icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off
|
||||||
|
.icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off
|
||||||
|
|
||||||
|
.icon-hdd { background-position: 0 -144px; }
|
||||||
|
.icon-bullhorn { background-position: -24px -144px; }
|
||||||
|
.icon-bell { background-position: -48px -144px; }
|
||||||
|
.icon-certificate { background-position: -72px -144px; }
|
||||||
|
.icon-thumbs-up { background-position: -96px -144px; }
|
||||||
|
.icon-thumbs-down { background-position: -120px -144px; }
|
||||||
|
.icon-hand-right { background-position: -144px -144px; }
|
||||||
|
.icon-hand-left { background-position: -168px -144px; }
|
||||||
|
.icon-hand-up { background-position: -192px -144px; }
|
||||||
|
.icon-hand-down { background-position: -216px -144px; }
|
||||||
|
.icon-circle-arrow-right { background-position: -240px -144px; }
|
||||||
|
.icon-circle-arrow-left { background-position: -264px -144px; }
|
||||||
|
.icon-circle-arrow-up { background-position: -288px -144px; }
|
||||||
|
.icon-circle-arrow-down { background-position: -312px -144px; }
|
||||||
|
.icon-globe { background-position: -336px -144px; }
|
||||||
|
.icon-wrench { background-position: -360px -144px; }
|
||||||
|
.icon-tasks { background-position: -384px -144px; }
|
||||||
|
.icon-filter { background-position: -408px -144px; }
|
||||||
|
.icon-briefcase { background-position: -432px -144px; }
|
||||||
|
.icon-fullscreen { background-position: -456px -144px; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
210
public/themes/default_without_html/less/tables.less
Normal file
210
public/themes/default_without_html/less/tables.less
Normal file
|
@ -0,0 +1,210 @@
|
||||||
|
//
|
||||||
|
// Tables.less
|
||||||
|
// Tables for, you guessed it, tabular data
|
||||||
|
// ----------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// BASE TABLES
|
||||||
|
// -----------------
|
||||||
|
|
||||||
|
table {
|
||||||
|
max-width: 100%;
|
||||||
|
background-color: @tableBackground;
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// BASELINE STYLES
|
||||||
|
// ---------------
|
||||||
|
|
||||||
|
.table {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
// Cells
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
padding: 8px;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: top;
|
||||||
|
border-top: 1px solid @tableBorder;
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
// Bottom align for column headings
|
||||||
|
thead th {
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
// Remove top border from thead by default
|
||||||
|
caption + thead tr:first-child th,
|
||||||
|
caption + thead tr:first-child td,
|
||||||
|
colgroup + thead tr:first-child th,
|
||||||
|
colgroup + thead tr:first-child td,
|
||||||
|
thead:first-child tr:first-child th,
|
||||||
|
thead:first-child tr:first-child td {
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
// Account for multiple tbody instances
|
||||||
|
tbody + tbody {
|
||||||
|
border-top: 2px solid @tableBorder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// CONDENSED TABLE W/ HALF PADDING
|
||||||
|
// -------------------------------
|
||||||
|
|
||||||
|
.table-condensed {
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
padding: 4px 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// BORDERED VERSION
|
||||||
|
// ----------------
|
||||||
|
|
||||||
|
.table-bordered {
|
||||||
|
border: 1px solid @tableBorder;
|
||||||
|
border-collapse: separate; // Done so we can round those corners!
|
||||||
|
*border-collapse: collapsed; // IE7 can't round corners anyway
|
||||||
|
border-left: 0;
|
||||||
|
.border-radius(4px);
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
border-left: 1px solid @tableBorder;
|
||||||
|
}
|
||||||
|
// Prevent a double border
|
||||||
|
caption + thead tr:first-child th,
|
||||||
|
caption + tbody tr:first-child th,
|
||||||
|
caption + tbody tr:first-child td,
|
||||||
|
colgroup + thead tr:first-child th,
|
||||||
|
colgroup + tbody tr:first-child th,
|
||||||
|
colgroup + tbody tr:first-child td,
|
||||||
|
thead:first-child tr:first-child th,
|
||||||
|
tbody:first-child tr:first-child th,
|
||||||
|
tbody:first-child tr:first-child td {
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
// For first th or td in the first row in the first thead or tbody
|
||||||
|
thead:first-child tr:first-child th:first-child,
|
||||||
|
tbody:first-child tr:first-child td:first-child {
|
||||||
|
-webkit-border-top-left-radius: 4px;
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
-moz-border-radius-topleft: 4px;
|
||||||
|
}
|
||||||
|
thead:first-child tr:first-child th:last-child,
|
||||||
|
tbody:first-child tr:first-child td:last-child {
|
||||||
|
-webkit-border-top-right-radius: 4px;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
-moz-border-radius-topright: 4px;
|
||||||
|
}
|
||||||
|
// For first th or td in the first row in the first thead or tbody
|
||||||
|
thead:last-child tr:last-child th:first-child,
|
||||||
|
tbody:last-child tr:last-child td:first-child {
|
||||||
|
.border-radius(0 0 0 4px);
|
||||||
|
-webkit-border-bottom-left-radius: 4px;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
-moz-border-radius-bottomleft: 4px;
|
||||||
|
}
|
||||||
|
thead:last-child tr:last-child th:last-child,
|
||||||
|
tbody:last-child tr:last-child td:last-child {
|
||||||
|
-webkit-border-bottom-right-radius: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
-moz-border-radius-bottomright: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ZEBRA-STRIPING
|
||||||
|
// --------------
|
||||||
|
|
||||||
|
// Default zebra-stripe styles (alternating gray and transparent backgrounds)
|
||||||
|
.table-striped {
|
||||||
|
tbody {
|
||||||
|
tr:nth-child(odd) td,
|
||||||
|
tr:nth-child(odd) th {
|
||||||
|
background-color: @tableBackgroundAccent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// HOVER EFFECT
|
||||||
|
// ------------
|
||||||
|
// Placed here since it has to come after the potential zebra striping
|
||||||
|
.table {
|
||||||
|
tbody tr:hover td,
|
||||||
|
tbody tr:hover th {
|
||||||
|
background-color: @tableBackgroundHover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// TABLE CELL SIZING
|
||||||
|
// -----------------
|
||||||
|
|
||||||
|
// Change the columns
|
||||||
|
table {
|
||||||
|
.span1 { .tableColumns(1); }
|
||||||
|
.span2 { .tableColumns(2); }
|
||||||
|
.span3 { .tableColumns(3); }
|
||||||
|
.span4 { .tableColumns(4); }
|
||||||
|
.span5 { .tableColumns(5); }
|
||||||
|
.span6 { .tableColumns(6); }
|
||||||
|
.span7 { .tableColumns(7); }
|
||||||
|
.span8 { .tableColumns(8); }
|
||||||
|
.span9 { .tableColumns(9); }
|
||||||
|
.span10 { .tableColumns(10); }
|
||||||
|
.span11 { .tableColumns(11); }
|
||||||
|
.span12 { .tableColumns(12); }
|
||||||
|
.span13 { .tableColumns(13); }
|
||||||
|
.span14 { .tableColumns(14); }
|
||||||
|
.span15 { .tableColumns(15); }
|
||||||
|
.span16 { .tableColumns(16); }
|
||||||
|
.span17 { .tableColumns(17); }
|
||||||
|
.span18 { .tableColumns(18); }
|
||||||
|
.span19 { .tableColumns(19); }
|
||||||
|
.span20 { .tableColumns(20); }
|
||||||
|
.span21 { .tableColumns(21); }
|
||||||
|
.span22 { .tableColumns(22); }
|
||||||
|
.span23 { .tableColumns(23); }
|
||||||
|
.span24 { .tableColumns(24); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.tree {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
border: 1px solid @treeHeaderBorder;
|
||||||
|
thead th {
|
||||||
|
padding: 8px;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: bottom;
|
||||||
|
#gradient > .vertical(@treeHeaderHighlight, @treeHeader);
|
||||||
|
border-bottom: 1px solid lighten(@treeHeaderBorder, 5%);
|
||||||
|
font-weight: bold;
|
||||||
|
color: @gray;
|
||||||
|
text-shadow: 1px 1px 1px rgba(255,255,255,1);
|
||||||
|
}
|
||||||
|
tbody td {
|
||||||
|
padding: 8px;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: top;
|
||||||
|
border-bottom: 1px solid #EEE;
|
||||||
|
background-color: #F8F8F8;
|
||||||
|
}
|
||||||
|
caption + thead tr:first-child th,
|
||||||
|
caption + thead tr:first-child td,
|
||||||
|
colgroup + thead tr:first-child th,
|
||||||
|
colgroup + thead tr:first-child td,
|
||||||
|
thead:first-child tr:first-child th,
|
||||||
|
thead:first-child tr:first-child td {
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
tbody tr:last-child td{border-bottom:0;}
|
||||||
|
}
|
47
public/themes/default_without_html/less/thumbnails.less
Normal file
47
public/themes/default_without_html/less/thumbnails.less
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
// THUMBNAILS
|
||||||
|
// ----------
|
||||||
|
// Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files
|
||||||
|
|
||||||
|
// Make wrapper ul behave like the grid
|
||||||
|
.thumbnails {
|
||||||
|
margin-left: -@gridGutterWidth;
|
||||||
|
list-style: none;
|
||||||
|
.clearfix();
|
||||||
|
}
|
||||||
|
// Fluid rows have no left margin
|
||||||
|
.row-fluid .thumbnails {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Float li to make thumbnails appear in a row
|
||||||
|
.thumbnails > li {
|
||||||
|
float: left; // Explicity set the float since we don't require .span* classes
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
margin-left: @gridGutterWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The actual thumbnail (can be `a` or `div`)
|
||||||
|
.thumbnail {
|
||||||
|
display: block;
|
||||||
|
padding: 4px;
|
||||||
|
line-height: 1;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
.border-radius(4px);
|
||||||
|
.box-shadow(0 1px 1px rgba(0,0,0,.075));
|
||||||
|
}
|
||||||
|
// Add a hover state for linked versions only
|
||||||
|
a.thumbnail:hover {
|
||||||
|
border-color: @linkColor;
|
||||||
|
.box-shadow(0 1px 4px rgba(0,105,214,.25));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Images and captions
|
||||||
|
.thumbnail > img {
|
||||||
|
display: block;
|
||||||
|
max-width: 100%;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
.thumbnail .caption {
|
||||||
|
padding: 9px;
|
||||||
|
}
|
35
public/themes/default_without_html/less/tooltip.less
Normal file
35
public/themes/default_without_html/less/tooltip.less
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
// TOOLTIP
|
||||||
|
// ------=
|
||||||
|
|
||||||
|
.tooltip {
|
||||||
|
position: absolute;
|
||||||
|
z-index: @zindexTooltip;
|
||||||
|
display: block;
|
||||||
|
visibility: visible;
|
||||||
|
padding: 5px;
|
||||||
|
font-size: 11px;
|
||||||
|
.opacity(0);
|
||||||
|
&.in { .opacity(80); }
|
||||||
|
&.top { margin-top: -2px; }
|
||||||
|
&.right { margin-left: 2px; }
|
||||||
|
&.bottom { margin-top: 2px; }
|
||||||
|
&.left { margin-left: -2px; }
|
||||||
|
&.top .tooltip-arrow { #popoverArrow > .top(); }
|
||||||
|
&.left .tooltip-arrow { #popoverArrow > .left(); }
|
||||||
|
&.bottom .tooltip-arrow { #popoverArrow > .bottom(); }
|
||||||
|
&.right .tooltip-arrow { #popoverArrow > .right(); }
|
||||||
|
}
|
||||||
|
.tooltip-inner {
|
||||||
|
max-width: 200px;
|
||||||
|
padding: 3px 8px;
|
||||||
|
color: @white;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: @black;
|
||||||
|
.border-radius(4px);
|
||||||
|
}
|
||||||
|
.tooltip-arrow {
|
||||||
|
position: absolute;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
235
public/themes/default_without_html/less/type.less
Normal file
235
public/themes/default_without_html/less/type.less
Normal file
|
@ -0,0 +1,235 @@
|
||||||
|
// Typography.less
|
||||||
|
// Headings, body text, lists, code, and more for a versatile and durable typography system
|
||||||
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// BODY TEXT
|
||||||
|
// ---------
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin: 0 0 @baseLineHeight / 2;
|
||||||
|
font-family: @baseFontFamily;
|
||||||
|
font-size: @baseFontSize;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
small {
|
||||||
|
font-size: @baseFontSize - 2;
|
||||||
|
color: @grayLight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.lead {
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 200;
|
||||||
|
line-height: @baseLineHeight * 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
// HEADINGS
|
||||||
|
// --------
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
margin: 0;
|
||||||
|
font-family: @headingsFontFamily;
|
||||||
|
font-weight: @headingsFontWeight;
|
||||||
|
color: @headingsColor;
|
||||||
|
text-rendering: optimizelegibility; // Fix the character spacing for headings
|
||||||
|
small {
|
||||||
|
font-weight: normal;
|
||||||
|
color: @grayLight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 30px;
|
||||||
|
line-height: @baseLineHeight * 2;
|
||||||
|
small {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: @baseLineHeight * 2;
|
||||||
|
small {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: @baseLineHeight * 1.5;
|
||||||
|
small {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h4, h5, h6 {
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
}
|
||||||
|
h4 {
|
||||||
|
font-size: 14px;
|
||||||
|
small {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
h6 {
|
||||||
|
font-size: 11px;
|
||||||
|
color: @grayLight;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Page header
|
||||||
|
.page-header {
|
||||||
|
padding-bottom: @baseLineHeight - 1;
|
||||||
|
margin: @baseLineHeight 0;
|
||||||
|
border-bottom: 1px solid @grayLighter;
|
||||||
|
}
|
||||||
|
.page-header h1 {
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// LISTS
|
||||||
|
// -----
|
||||||
|
|
||||||
|
// Unordered and Ordered lists
|
||||||
|
ul, ol {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0 0 @baseLineHeight / 2 25px;
|
||||||
|
}
|
||||||
|
ul ul,
|
||||||
|
ul ol,
|
||||||
|
ol ol,
|
||||||
|
ol ul {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
list-style: disc;
|
||||||
|
}
|
||||||
|
ol {
|
||||||
|
list-style: decimal;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
}
|
||||||
|
ul.unstyled,
|
||||||
|
ol.unstyled {
|
||||||
|
margin-left: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Description Lists
|
||||||
|
dl {
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
}
|
||||||
|
dt,
|
||||||
|
dd {
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
}
|
||||||
|
dt {
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: @baseLineHeight - 1; // fix jank Helvetica Neue font bug
|
||||||
|
}
|
||||||
|
dd {
|
||||||
|
margin-left: @baseLineHeight / 2;
|
||||||
|
}
|
||||||
|
// Horizontal layout (like forms)
|
||||||
|
.dl-horizontal {
|
||||||
|
dt {
|
||||||
|
float: left;
|
||||||
|
width: 120px;
|
||||||
|
clear: left;
|
||||||
|
text-align: right;
|
||||||
|
.text-overflow();
|
||||||
|
}
|
||||||
|
dd {
|
||||||
|
margin-left: 130px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MISC
|
||||||
|
// ----
|
||||||
|
|
||||||
|
// Horizontal rules
|
||||||
|
hr {
|
||||||
|
margin: @baseLineHeight 0;
|
||||||
|
border: 0;
|
||||||
|
border-top: 1px solid @hrBorder;
|
||||||
|
border-bottom: 1px solid @white;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Emphasis
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
em {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.muted {
|
||||||
|
color: @grayLight;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Abbreviations and acronyms
|
||||||
|
abbr[title] {
|
||||||
|
cursor: help;
|
||||||
|
border-bottom: 1px dotted #ddd;
|
||||||
|
}
|
||||||
|
abbr.initialism {
|
||||||
|
font-size: 90%;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Blockquotes
|
||||||
|
blockquote {
|
||||||
|
padding: 0 0 0 15px;
|
||||||
|
margin: 0 0 @baseLineHeight;
|
||||||
|
border-left: 5px solid @grayLighter;
|
||||||
|
p {
|
||||||
|
margin-bottom: 0;
|
||||||
|
#font > .shorthand(16px,300,@baseLineHeight * 1.25);
|
||||||
|
}
|
||||||
|
small {
|
||||||
|
display: block;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
color: @grayLight;
|
||||||
|
&:before {
|
||||||
|
content: '\2014 \00A0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Float right with text-align: right
|
||||||
|
&.pull-right {
|
||||||
|
float: right;
|
||||||
|
padding-right: 15px;
|
||||||
|
padding-left: 0;
|
||||||
|
border-right: 5px solid @grayLighter;
|
||||||
|
border-left: 0;
|
||||||
|
p,
|
||||||
|
small {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Quotes
|
||||||
|
q:before,
|
||||||
|
q:after,
|
||||||
|
blockquote:before,
|
||||||
|
blockquote:after {
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Addresses
|
||||||
|
address {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: @baseLineHeight;
|
||||||
|
font-style: normal;
|
||||||
|
line-height: @baseLineHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Misc
|
||||||
|
small {
|
||||||
|
font-size: 100%;
|
||||||
|
}
|
||||||
|
cite {
|
||||||
|
font-style: normal;
|
||||||
|
}
|
31
public/themes/default_without_html/less/utilities.less
Normal file
31
public/themes/default_without_html/less/utilities.less
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
// UTILITY CLASSES
|
||||||
|
// ---------------
|
||||||
|
|
||||||
|
// Quick floats
|
||||||
|
.pull-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.pull-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggling content
|
||||||
|
.hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.show {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Visibility
|
||||||
|
.invisible {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.space-right {
|
||||||
|
padding: 0 8px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.space-left {
|
||||||
|
padding: 0 0 0 8px;
|
||||||
|
}
|
210
public/themes/default_without_html/less/variables.less
Normal file
210
public/themes/default_without_html/less/variables.less
Normal file
|
@ -0,0 +1,210 @@
|
||||||
|
// Variables.less
|
||||||
|
// Variables to customize the look and feel of Bootstrap
|
||||||
|
// -----------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// GLOBAL VALUES
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// Grays
|
||||||
|
// -------------------------
|
||||||
|
@black: #000;
|
||||||
|
@grayDarker: #222;
|
||||||
|
@grayDark: #333;
|
||||||
|
@gray: #555;
|
||||||
|
@grayLight: #999;
|
||||||
|
@grayLighter: #eee;
|
||||||
|
@white: #fff;
|
||||||
|
|
||||||
|
|
||||||
|
// Accent colors
|
||||||
|
// -------------------------
|
||||||
|
@blue: #049cdb;
|
||||||
|
@blueDark: #0064cd;
|
||||||
|
@green: #46a546;
|
||||||
|
@red: #9d261d;
|
||||||
|
@yellow: #ffc40d;
|
||||||
|
@orange: #f89406;
|
||||||
|
@pink: #c3325f;
|
||||||
|
@purple: #7a43b6;
|
||||||
|
|
||||||
|
|
||||||
|
// Scaffolding
|
||||||
|
// -------------------------
|
||||||
|
@bodyBackground: @white;
|
||||||
|
@textColor: @grayDark;
|
||||||
|
|
||||||
|
|
||||||
|
// Links
|
||||||
|
// -------------------------
|
||||||
|
@linkColor: #4183c4;
|
||||||
|
@linkColorHover: darken(@linkColor, 15%);
|
||||||
|
|
||||||
|
|
||||||
|
// Typography
|
||||||
|
// -------------------------
|
||||||
|
@sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||||
|
@serifFontFamily: Georgia, "Times New Roman", Times, serif;
|
||||||
|
@monoFontFamily: Menlo, Monaco, Consolas, "Courier New", monospace;
|
||||||
|
|
||||||
|
@baseFontSize: 13px;
|
||||||
|
@baseFontFamily: @sansFontFamily;
|
||||||
|
@baseLineHeight: 18px;
|
||||||
|
@altFontFamily: @serifFontFamily;
|
||||||
|
|
||||||
|
@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily
|
||||||
|
@headingsFontWeight: bold; // instead of browser default, bold
|
||||||
|
@headingsColor: inherit; // empty to use BS default, @textColor
|
||||||
|
|
||||||
|
|
||||||
|
// Tables
|
||||||
|
// -------------------------
|
||||||
|
@tableBackground: transparent; // overall background-color
|
||||||
|
@tableBackgroundAccent: #f9f9f9; // for striping
|
||||||
|
@tableBackgroundHover: #f5f5f5; // for hover
|
||||||
|
@tableBorder: #ddd; // table and cell border
|
||||||
|
|
||||||
|
|
||||||
|
// Buttons
|
||||||
|
// -------------------------
|
||||||
|
@btnBackground: @white;
|
||||||
|
@btnBackgroundHighlight: darken(@white, 10%);
|
||||||
|
@btnBorder: #ccc;
|
||||||
|
|
||||||
|
@btnPrimaryBackground: @linkColor;
|
||||||
|
@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 10%);
|
||||||
|
|
||||||
|
@btnInfoBackground: #5bc0de;
|
||||||
|
@btnInfoBackgroundHighlight: #2f96b4;
|
||||||
|
|
||||||
|
@btnSuccessBackground: #62c462;
|
||||||
|
@btnSuccessBackgroundHighlight: #51a351;
|
||||||
|
|
||||||
|
@btnWarningBackground: lighten(@orange, 15%);
|
||||||
|
@btnWarningBackgroundHighlight: @orange;
|
||||||
|
|
||||||
|
@btnDangerBackground: #ee5f5b;
|
||||||
|
@btnDangerBackgroundHighlight: #bd362f;
|
||||||
|
|
||||||
|
@btnInverseBackground: @gray;
|
||||||
|
@btnInverseBackgroundHighlight: @grayDarker;
|
||||||
|
|
||||||
|
|
||||||
|
// Forms
|
||||||
|
// -------------------------
|
||||||
|
@inputBackground: @white;
|
||||||
|
@inputBorder: #ccc;
|
||||||
|
@inputBorderRadius: 3px;
|
||||||
|
@inputDisabledBackground: @grayLighter;
|
||||||
|
@formActionsBackground: #f5f5f5;
|
||||||
|
|
||||||
|
// Dropdowns
|
||||||
|
// -------------------------
|
||||||
|
@dropdownBackground: @white;
|
||||||
|
@dropdownBorder: rgba(0,0,0,.2);
|
||||||
|
@dropdownLinkColor: @grayDark;
|
||||||
|
@dropdownLinkColorHover: @white;
|
||||||
|
@dropdownLinkBackgroundHover: @linkColor;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// COMPONENT VARIABLES
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
// Z-index master list
|
||||||
|
// -------------------------
|
||||||
|
// Used for a bird's eye view of components dependent on the z-axis
|
||||||
|
// Try to avoid customizing these :)
|
||||||
|
@zindexDropdown: 1000;
|
||||||
|
@zindexPopover: 1010;
|
||||||
|
@zindexTooltip: 1020;
|
||||||
|
@zindexFixedNavbar: 1030;
|
||||||
|
@zindexModalBackdrop: 1040;
|
||||||
|
@zindexModal: 1050;
|
||||||
|
|
||||||
|
|
||||||
|
// Sprite icons path
|
||||||
|
// -------------------------
|
||||||
|
@iconSpritePath: "../img/glyphicons-halflings.png";
|
||||||
|
@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
|
||||||
|
@rssIconPath: "../img/feed.png";
|
||||||
|
@ajaxLoaderPath: "../img/ajax-loader.gif";
|
||||||
|
|
||||||
|
// Input placeholder text color
|
||||||
|
// -------------------------
|
||||||
|
@placeholderText: @grayLight;
|
||||||
|
|
||||||
|
|
||||||
|
// Hr border color
|
||||||
|
// -------------------------
|
||||||
|
@hrBorder: @grayLighter;
|
||||||
|
|
||||||
|
|
||||||
|
// Navbar
|
||||||
|
// -------------------------
|
||||||
|
@navbarHeight: 40px;
|
||||||
|
@navbarBackground: #eaeaea;
|
||||||
|
@navbarBackgroundHighlight: #fafafa;
|
||||||
|
@navbarBorderColor: #cacaca;
|
||||||
|
|
||||||
|
@navbarText: @grayDark;
|
||||||
|
@navbarLinkColor: @grayDarker;
|
||||||
|
@navbarLinkColorHover: @linkColor;
|
||||||
|
@navbarLinkColorActive: @navbarLinkColorHover;
|
||||||
|
|
||||||
|
@navbarSearchBackground: lighten(@navbarBackground, 25%);
|
||||||
|
@navbarSearchBackgroundFocus: @white;
|
||||||
|
@navbarSearchBorder: darken(@navbarSearchBackground, 30%);
|
||||||
|
@navbarSearchPlaceholderColor: #ccc;
|
||||||
|
@navbarBrandColor: @navbarLinkColor;
|
||||||
|
|
||||||
|
|
||||||
|
// Hero unit
|
||||||
|
// -------------------------
|
||||||
|
@heroUnitBackground: @grayLighter;
|
||||||
|
@heroUnitHeadingColor: inherit;
|
||||||
|
@heroUnitLeadColor: inherit;
|
||||||
|
|
||||||
|
|
||||||
|
// Form states and alerts
|
||||||
|
// -------------------------
|
||||||
|
@warningText: #c09853;
|
||||||
|
@warningBackground: #fcf8e3;
|
||||||
|
@warningBorder: darken(spin(@warningBackground, -10), 3%);
|
||||||
|
|
||||||
|
@errorText: #b94a48;
|
||||||
|
@errorBackground: #f2dede;
|
||||||
|
@errorBorder: darken(spin(@errorBackground, -10), 3%);
|
||||||
|
|
||||||
|
@successText: #468847;
|
||||||
|
@successBackground: #dff0d8;
|
||||||
|
@successBorder: darken(spin(@successBackground, -10), 5%);
|
||||||
|
|
||||||
|
@infoText: #3a87ad;
|
||||||
|
@infoBackground: #d9edf7;
|
||||||
|
@infoBorder: darken(spin(@infoBackground, -10), 7%);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// GRID
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
// Default 940px grid
|
||||||
|
// -------------------------
|
||||||
|
@gridColumns: 12;
|
||||||
|
@gridColumnWidth: 60px;
|
||||||
|
@gridGutterWidth: 20px;
|
||||||
|
@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
|
||||||
|
|
||||||
|
// Fluid grid
|
||||||
|
// -------------------------
|
||||||
|
@fluidGridColumnWidth: 6.382978723%;
|
||||||
|
@fluidGridGutterWidth: 2.127659574%;
|
||||||
|
|
||||||
|
// Tree
|
||||||
|
@treeHeader: @navbarBackground;
|
||||||
|
@treeHeaderHighlight: @navbarBackgroundHighlight;
|
||||||
|
@treeHeaderBorder: @navbarBorderColor;
|
27
public/themes/default_without_html/less/wells.less
Normal file
27
public/themes/default_without_html/less/wells.less
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
// WELLS
|
||||||
|
// -----
|
||||||
|
|
||||||
|
.well {
|
||||||
|
min-height: 20px;
|
||||||
|
padding: 19px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
border: 1px solid rgba(0,0,0,.05);
|
||||||
|
.border-radius(4px);
|
||||||
|
.box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
|
||||||
|
blockquote {
|
||||||
|
border-color: #ddd;
|
||||||
|
border-color: rgba(0,0,0,.15);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sizes
|
||||||
|
.well-large {
|
||||||
|
padding: 24px;
|
||||||
|
.border-radius(6px);
|
||||||
|
}
|
||||||
|
.well-small {
|
||||||
|
padding: 9px;
|
||||||
|
.border-radius(3px);
|
||||||
|
}
|
Loading…
Reference in a new issue