xueli.xue 9 years ago
parent 0006ae1672
commit a94fabad5b

@ -6,8 +6,6 @@
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>xxl-job-core</module>
<module>xxl-job-demo</module>
<module>xxl-job-admin</module>
</modules>

@ -1,26 +1,136 @@
package com.xxl.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.quartz.CronExpression;
import org.quartz.Job;
import org.quartz.SchedulerException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.xxl.quartz.DynamicSchedulerUtil;
import com.xxl.quartz.ReturnT;
@Controller
@RequestMapping("/job")
public class IndexController {
@RequestMapping("index")
@RequestMapping("/index")
public String index(Model model) {
List<Map<String, Object>> jobList = DynamicSchedulerUtil.getJobList();
model.addAttribute("jobList", jobList);
return "job/index";
}
@RequestMapping("/add")
@ResponseBody
public ReturnT<String> add(String triggerKeyName, String cronExpression, String jobClassName, String jobDesc) {
// triggerKeyName
if (StringUtils.isBlank(triggerKeyName)) {
return new ReturnT<String>(500, "请输入“任务key”");
}
// cronExpression
if (StringUtils.isBlank(cronExpression)) {
return new ReturnT<String>(500, "请输入“任务corn”");
}
if (!CronExpression.isValidExpression(cronExpression)) {
return new ReturnT<String>(500, "“任务corn”不合法");
}
// jobClassName
Class<?> clazz = null;
try {
clazz = Class.forName(jobClassName);
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
if (clazz == null) {
return new ReturnT<String>(500, "请输入“任务Impl”");
}
if (!Job.class.isAssignableFrom(clazz)) {
return new ReturnT<String>(500, "“任务Impl”类必须继承Job接口");
}
@SuppressWarnings("unchecked")
Class<? extends Job> jobClass = (Class<? extends Job>)clazz;
// jobDesc
if (StringUtils.isBlank(jobDesc)) {
return new ReturnT<String>(500, "请输入“任务描述”");
}
try {
Map<String, Object> jobData = new HashMap<String, Object>();
jobData.put(DynamicSchedulerUtil.job_desc, jobDesc);
DynamicSchedulerUtil.addJob(triggerKeyName, cronExpression, jobClass, jobData);
return ReturnT.SUCCESS;
} catch (SchedulerException e) {
e.printStackTrace();
}
return ReturnT.FAIL;
}
@RequestMapping("/reschedule")
@ResponseBody
public ReturnT<String> reschedule(String triggerKeyName, String cronExpression) {
// triggerKeyName
if (StringUtils.isBlank(triggerKeyName)) {
return new ReturnT<String>(500, "请输入“任务key”");
}
// cronExpression
if (StringUtils.isBlank(cronExpression)) {
return new ReturnT<String>(500, "请输入“任务corn”");
}
if (!CronExpression.isValidExpression(cronExpression)) {
return new ReturnT<String>(500, "“任务corn”不合法");
}
try {
DynamicSchedulerUtil.rescheduleJob(triggerKeyName, cronExpression);
return ReturnT.SUCCESS;
} catch (SchedulerException e) {
e.printStackTrace();
}
return ReturnT.FAIL;
}
@RequestMapping("/remove")
@ResponseBody
public ReturnT<String> remove(String triggerKeyName) {
try {
DynamicSchedulerUtil.removeJob(triggerKeyName);
return ReturnT.SUCCESS;
} catch (SchedulerException e) {
e.printStackTrace();
return ReturnT.FAIL;
}
}
@RequestMapping("/pause")
@ResponseBody
public ReturnT<String> pause(String triggerKeyName) {
try {
DynamicSchedulerUtil.pauseJob(triggerKeyName);
return ReturnT.SUCCESS;
} catch (SchedulerException e) {
e.printStackTrace();
return ReturnT.FAIL;
}
}
@RequestMapping("/resume")
@ResponseBody
public ReturnT<String> resume(String triggerKeyName) {
try {
DynamicSchedulerUtil.resumeJob(triggerKeyName);
return ReturnT.SUCCESS;
} catch (SchedulerException e) {
e.printStackTrace();
return ReturnT.FAIL;
}
}
@RequestMapping("/help")
public String help(Model model) {
return "job/help";

@ -17,6 +17,7 @@ import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.Trigger.TriggerState;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.quartz.impl.matchers.GroupMatcher;
@ -45,6 +46,9 @@ public final class DynamicSchedulerUtil implements InitializingBean {
List<Map<String, Object>> jobList = new ArrayList<Map<String,Object>>();
try {
if (scheduler.getJobGroupNames()==null || scheduler.getJobGroupNames().size()==0) {
return null;
}
String groupName = scheduler.getJobGroupNames().get(0);
Set<JobKey> jobKeys = scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName));
if (jobKeys!=null && jobKeys.size()>0) {
@ -52,10 +56,12 @@ public final class DynamicSchedulerUtil implements InitializingBean {
TriggerKey triggerKey = TriggerKey.triggerKey(jobKey.getName(), Scheduler.DEFAULT_GROUP);
Trigger trigger = scheduler.getTrigger(triggerKey);
JobDetail jobDetail = scheduler.getJobDetail(jobKey);
TriggerState triggerState = scheduler.getTriggerState(triggerKey);
Map<String, Object> jobMap = new HashMap<String, Object>();
jobMap.put("TriggerKey", triggerKey);
jobMap.put("Trigger", trigger);
jobMap.put("JobDetail", jobDetail);
jobMap.put("TriggerState", triggerState);
jobList.add(jobMap);
}
}
@ -67,6 +73,7 @@ public final class DynamicSchedulerUtil implements InitializingBean {
return jobList;
}
public static final String job_desc = "job_desc";
// addJob 新增
public static boolean addJob(String triggerKeyName, String cronExpression, Class<? extends Job> jobClass, Map<String, Object> jobData) throws SchedulerException {
// TriggerKey : name + group
@ -98,20 +105,6 @@ public final class DynamicSchedulerUtil implements InitializingBean {
return true;
}
// unscheduleJob 删除
public static boolean removeJob(String triggerKeyName) throws SchedulerException {
// TriggerKey : name + group
String group = Scheduler.DEFAULT_GROUP;
TriggerKey triggerKey = TriggerKey.triggerKey(triggerKeyName, group);
boolean result = false;
if (scheduler.checkExists(triggerKey)) {
result = scheduler.unscheduleJob(triggerKey);
}
logger.info(">>>>>>>>>>> removeJob, triggerKey:{}, result [{}]", triggerKey, result);
return result;
}
// reschedule 重置cron
public static boolean rescheduleJob(String triggerKeyName, String cronExpression) throws SchedulerException {
// TriggerKey : name + group
@ -132,6 +125,20 @@ public final class DynamicSchedulerUtil implements InitializingBean {
}
return result;
}
// unscheduleJob 删除
public static boolean removeJob(String triggerKeyName) throws SchedulerException {
// TriggerKey : name + group
String group = Scheduler.DEFAULT_GROUP;
TriggerKey triggerKey = TriggerKey.triggerKey(triggerKeyName, group);
boolean result = false;
if (scheduler.checkExists(triggerKey)) {
result = scheduler.unscheduleJob(triggerKey);
}
logger.info(">>>>>>>>>>> removeJob, triggerKey:{}, result [{}]", triggerKey, result);
return result;
}
// Pause 暂停
public static boolean pauseJob(String triggerKeyName) throws SchedulerException {
@ -151,7 +158,7 @@ public final class DynamicSchedulerUtil implements InitializingBean {
}
// resume 重启
public static boolean resumeTrigger(String triggerKeyName) throws SchedulerException {
public static boolean resumeJob(String triggerKeyName) throws SchedulerException {
// TriggerKey : name + group
String group = Scheduler.DEFAULT_GROUP;
TriggerKey triggerKey = TriggerKey.triggerKey(triggerKeyName, group);

@ -1,13 +1,7 @@
package com.xxl.service;
/**
* Trigger Service
* @author xuxueli
*/
public interface ITriggerService {
/**
*
*/
public void generateNetHtml();
public void beat();
}

@ -1,28 +1,17 @@
package com.xxl.service.impl;
import java.util.Date;
import org.apache.commons.lang.time.FastDateFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import com.xxl.service.ITriggerService;
/**
* Trigger Service
* @author xuxueli
*/
@Service("triggerService")
public class TriggerServiceImpl implements ITriggerService {
private static transient Logger logger = LoggerFactory.getLogger(TriggerServiceImpl.class);
/**
*
*/
public void generateNetHtml() {
logger.info("全站静态化 run at :{}", FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss").format(new Date()));
public void beat() {
logger.info(">>>>>>>>>> xxl-job : local quartz beat success.");
}
}

@ -1,17 +1,28 @@
package com.xxl.service.job;
import java.util.concurrent.TimeUnit;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
import com.xxl.quartz.DynamicSchedulerUtil;
public class TestDynamicJob implements Job {
private static Logger logger = LoggerFactory.getLogger(TestDynamicJob.class);
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
Object mailGuid = context.getMergedJobDataMap().get("mailGuid");
System.out.println("[demo-job] run at " + new Date() + " now, mailGuid=" + mailGuid);
logger.info("xxl-job run: name:{}, group:{}, job_desc:{}",
new Object[]{context.getTrigger().getKey().getName(), context.getTrigger().getKey().getGroup(),
context.getMergedJobDataMap().get(DynamicSchedulerUtil.job_desc)});
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

@ -9,16 +9,14 @@
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<!-- 全站静态化:Job Detail -->
<bean id="generateNetHtmlJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<bean id="beatJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="triggerService" />
<property name="targetMethod" value="generateNetHtml" />
<property name="targetMethod" value="beat" />
<property name="concurrent" value="false" />
</bean>
<!-- 全站静态化:Cron Trigger (quartz-2.x的配置) -->
<bean id="generateNetHtmlTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="generateNetHtmlJobDetail" />
<bean id="beatTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="beatJobDetail" />
<property name="cronExpression" value="0/10 * * * * ? *" />
</bean>
@ -26,7 +24,7 @@
<bean name="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="generateNetHtmlTrigger" />
<ref bean="beatTrigger" />
</list>
</property>
</bean>

@ -31,7 +31,10 @@
<div class="row">
<div class="col-xs-12">
<div class="box">
<div class="box-header"><h3 class="box-title">任务列表</h3></div>
<div class="box-header">
<h3 class="box-title">任务列表</h3>
<button class="btn btn-primary btn-xs add" type="button">新增</button>
</div>
<div class="box-body">
<table id="job_list" class="table table-bordered table-striped">
<thead>
@ -40,6 +43,7 @@
<th>cron</th>
<th>Job类路径</th>
<th>简介</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
@ -50,8 +54,33 @@
<td>${item['TriggerKey'].name}</td>
<td>${item['Trigger'].cronExpression}</td>
<td>${item['JobDetail'].jobClass}</td>
<td>-</td>
<td>X</td>
<td>
<#if item['JobDetail'].jobDataMap?exists>
<#assign job_desc=item['JobDetail'].jobDataMap['job_desc'] />
${job_desc}
</#if>
</td>
<td state="${item['TriggerState']}" >
<#if item['TriggerState'] == 'NORMAL'>
<button class="btn btn-block btn-success" type="button">运行ing</button>
<#elseif item['TriggerState'] == 'PAUSED'>
<button class="btn btn-block btn-warning" type="button">暂停ing</button>
<#else>
<button class="btn btn-block" type="button">${item['TriggerState']}</button>
</#if>
</td>
<td>
<p name="${item['TriggerKey'].name}" group="${item['TriggerKey'].group}"
cronExpression="${item['Trigger'].cronExpression}" jobClassName="${item['JobDetail'].jobClass}" jobDesc="${job_desc?if_exists}" >
<#if item['TriggerState'] == 'NORMAL'>
<button class="btn btn-info btn-xs job_operate" type="job_pause" type="button">暂停</button>
<#elseif item['TriggerState'] == 'PAUSED'>
<button class="btn btn-info btn-xs job_operate" type="job_resume" type="button">恢复</button>
</#if>
<button class="btn btn-info btn-xs update" type="button">修改</button>
<button class="btn btn-danger btn-xs job_operate" type="job_del" type="button">删除</button>
</p>
</td>
</tr>
</#list>
</#if>
@ -62,6 +91,7 @@
<th>cron</th>
<th>Job类路径</th>
<th>简介</th>
<th>状态</th>
<th>操作</th>
</tr>
</tfoot>
@ -78,10 +108,88 @@
<!-- control -->
<@netCommon.commonControl />
</div>
<!-- job新增.模态框 -->
<div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" >新增调度任务</h4>
</div>
<div class="modal-body">
<form class="form-horizontal form" role="form" >
<div class="form-group">
<label for="firstname" class="col-sm-2 control-label">任务Key</label>
<div class="col-sm-10"><input type="text" class="form-control" name="triggerKeyName" placeholder="请输入任务Key" minlength="4" maxlength="100" ></div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">任务Corn</label>
<div class="col-sm-10"><input type="text" class="form-control" name="cronExpression" placeholder="请输入任务Corn[允许修改]" maxlength="100" ></div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">任务Impl</label>
<div class="col-sm-10"><input type="text" class="form-control" name="jobClassName" placeholder="请输入任务Impl[不支持修改]" maxlength="100" ></div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">任务描述</label>
<div class="col-sm-10"><input type="text" class="form-control" name="jobDesc" placeholder="请输入任务描述[不支持修改]" maxlength="200" ></div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary" >保存</button>
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- 更新.模态框 -->
<div class="modal fade" id="updateModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" >更新配置</h4>
</div>
<div class="modal-body">
<form class="form-horizontal form" role="form" >
<div class="form-group">
<label for="firstname" class="col-sm-2 control-label">任务Key</label>
<div class="col-sm-10"><input type="text" class="form-control" name="triggerKeyName" placeholder="请输入任务Key" minlength="4" maxlength="100" readonly ></div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">任务Corn</label>
<div class="col-sm-10"><input type="text" class="form-control" name="cronExpression" placeholder="请输入任务Corn" maxlength="100" ></div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">任务Impl</label>
<div class="col-sm-10"><input type="text" class="form-control" name="jobClassName" placeholder="请输入任务Impl" maxlength="100" readonly ></div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">任务描述</label>
<div class="col-sm-10"><input type="text" class="form-control" name="jobDesc" placeholder="请输入任务描述" maxlength="200" readonly ></div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary" >保存</button>
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<@netCommon.commonScript />
<@netCommon.comAlert />
<!-- DataTables -->
<script src="${request.contextPath}/static/adminlte/plugins/datatables/jquery.dataTables.min.js"></script>
<script src="${request.contextPath}/static/adminlte/plugins/datatables/dataTables.bootstrap.min.js"></script>
<script src="${request.contextPath}/static/plugins/jquery/jquery.validate.min.js"></script>
<script>var base_url = '${request.contextPath}';</script>
<script src="${request.contextPath}/static/js/job.index.1.js"></script>
</body>
</html>

@ -1,36 +0,0 @@
// Mixins
// --------------------------------------------------
// Utilities
@import "mixins/hide-text.less";
@import "mixins/opacity.less";
@import "mixins/image.less";
@import "mixins/labels.less";
@import "mixins/reset-filter.less";
@import "mixins/resize.less";
@import "mixins/responsive-visibility.less";
@import "mixins/size.less";
@import "mixins/tab-focus.less";
@import "mixins/reset-text.less";
@import "mixins/text-emphasis.less";
@import "mixins/text-overflow.less";
@import "mixins/vendor-prefixes.less";
// Components
@import "mixins/alerts.less";
@import "mixins/buttons.less";
@import "mixins/panels.less";
@import "mixins/pagination.less";
@import "mixins/list-group.less";
@import "mixins/nav-divider.less";
@import "mixins/forms.less";
@import "mixins/progress-bar.less";
@import "mixins/table-row.less";
// Skins
@import "mixins/background-variant.less";
@import "mixins/border-radius.less";
@import "mixins/gradients.less";
// Layout
@import "mixins/clearfix.less";
@import "mixins/center-block.less";
@import "mixins/nav-vertical-align.less";
@import "mixins/grid-framework.less";
@import "mixins/grid.less";

@ -1,14 +0,0 @@
// Alerts
.alert-variant(@background; @border; @text-color) {
background-color: @background;
border-color: @border;
color: @text-color;
hr {
border-top-color: darken(@border, 5%);
}
.alert-link {
color: darken(@text-color, 10%);
}
}

@ -1,9 +0,0 @@
// Contextual backgrounds
.bg-variant(@color) {
background-color: @color;
a&:hover,
a&:focus {
background-color: darken(@color, 10%);
}
}

@ -1,21 +0,0 @@
// Single side border-radius
.border-top-radius(@radius) {
border-top-right-radius: @radius;
border-top-left-radius: @radius;
}
.border-right-radius(@radius) {
border-bottom-right-radius: @radius;
border-top-right-radius: @radius;
}
.border-bottom-radius(@radius) {
border-bottom-right-radius: @radius;
border-bottom-left-radius: @radius;
}
.border-left-radius(@radius) {
border-bottom-left-radius: @radius;
border-top-left-radius: @radius;
}

@ -1,68 +0,0 @@
// Button variants
//
// Easily pump out default styles, as well as :hover, :focus, :active,
// and disabled options for all buttons
.button-variant(@color; @background; @border) {
color: @color;
background-color: @background;
border-color: @border;
&:focus,
&.focus {
color: @color;
background-color: darken(@background, 10%);
border-color: darken(@border, 25%);
}
&:hover {
color: @color;
background-color: darken(@background, 10%);
border-color: darken(@border, 12%);
}
&:active,
&.active,
.open > .dropdown-toggle& {
color: @color;
background-color: darken(@background, 10%);
border-color: darken(@border, 12%);
&:hover,
&:focus,
&.focus {
color: @color;
background-color: darken(@background, 17%);
border-color: darken(@border, 25%);
}
}
&:active,
&.active,
.open > .dropdown-toggle& {
background-image: none;
}
&.disabled,
&[disabled],
fieldset[disabled] & {
&,
&:hover,
&:focus,
&.focus,
&:active,
&.active {
background-color: @background;
border-color: @border;
}
}
.badge {
color: @background;
background-color: @color;
}
}
// Button sizes
.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
padding: @padding-vertical @padding-horizontal;
font-size: @font-size;
line-height: @line-height;
border-radius: @border-radius;
}

@ -1,7 +0,0 @@
// Center-align a block level element
.center-block() {
display: block;
margin-left: auto;
margin-right: auto;
}

@ -1,22 +0,0 @@
// Clearfix
//
// For modern browsers
// 1. The space content is one way to avoid an Opera bug when the
// contenteditable attribute is included anywhere else in the document.
// Otherwise it causes space to appear at the top and bottom of elements
// that are clearfixed.
// 2. The use of `table` rather than `block` is only necessary if using
// `:before` to contain the top-margins of child elements.
//
// Source: http://nicolasgallagher.com/micro-clearfix-hack/
.clearfix() {
&:before,
&:after {
content: " "; // 1
display: table; // 2
}
&:after {
clear: both;
}
}

@ -1,84 +0,0 @@
// Form validation states
//
// Used in forms.less to generate the form validation CSS for warnings, errors,
// and successes.
.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {
// Color the label and help text
.help-block,
.control-label,
.radio,
.checkbox,
.radio-inline,
.checkbox-inline,
&.radio label,
&.checkbox label,
&.radio-inline label,
&.checkbox-inline label {
color: @text-color;
}
// Set the border and box shadow on specific inputs to match
.form-control {
border-color: @border-color;
.box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075)); // Redeclare so transitions work
&:focus {
border-color: darken(@border-color, 10%);
@shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px lighten(@border-color, 20%);
.box-shadow(@shadow);
}
}
// Set validation states also for addons
.input-group-addon {
color: @text-color;
border-color: @border-color;
background-color: @background-color;
}
// Optional feedback icon
.form-control-feedback {
color: @text-color;
}
}
// Form control focus state
//
// Generate a customized focus state and for any input with the specified color,
// which defaults to the `@input-border-focus` variable.
//
// We highly encourage you to not customize the default value, but instead use
// this to tweak colors on an as-needed basis. This aesthetic change is based on
// WebKit's default styles, but applicable to a wider range of browsers. Its
// usability and accessibility should be taken into account with any change.
//
// Example usage: change the default blue border and shadow to white for better
// contrast against a dark gray background.
.form-control-focus(@color: @input-border-focus) {
@color-rgba: rgba(red(@color), green(@color), blue(@color), .6);
&:focus {
border-color: @color;
outline: 0;
.box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}");
}
}
// Form control sizing
//
// Relative text size, padding, and border-radii changes for form controls. For
// horizontal sizing, wrap controls in the predefined grid classes. `<select>`
// element gets special love because it's special, and that's a fact!
.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
height: @input-height;
padding: @padding-vertical @padding-horizontal;
font-size: @font-size;
line-height: @line-height;
border-radius: @border-radius;
select& {
height: @input-height;
line-height: @input-height;
}
textarea&,
select[multiple] & {
height: auto;
}
}

@ -1,59 +0,0 @@
// Gradients
#gradient {
// Horizontal gradient, from left to right
//
// Creates two color stops, start and end, by specifying a color and position for each color stop.
// Color stops are not available in IE9 and below.
.horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+
background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12
background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
background-repeat: repeat-x;
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)", argb(@start-color), argb(@end-color))); // IE9 and down
}
// Vertical gradient, from top to bottom
//
// Creates two color stops, start and end, by specifying a color and position for each color stop.
// Color stops are not available in IE9 and below.
.vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+
background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12
background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
background-repeat: repeat-x;
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)", argb(@start-color), argb(@end-color))); // IE9 and down
}
.directional(@start-color: #555; @end-color: #333; @deg: 45deg) {
background-repeat: repeat-x;
background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+
background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12
background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
}
.horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);
background-repeat: no-repeat;
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
}
.vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);
background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);
background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);
background-repeat: no-repeat;
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
}
.radial(@inner-color: #555; @outer-color: #333) {
background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);
background-image: radial-gradient(circle, @inner-color, @outer-color);
background-repeat: no-repeat;
}
.striped(@color: rgba(255,255,255,.15); @angle: 45deg) {
background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
}
}

@ -1,102 +0,0 @@
// Framework grid generation
//
// Used only by Bootstrap to generate the correct number of grid classes given
// any value of `@grid-columns`.
.make-grid-columns() {
// Common styles for all sizes of grid columns, widths 1-12
.col(@index) {
// initial
@item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";
.col((@index + 1), @item);
}
.col(@index, @list) when (@index =< @grid-columns) {
// general; "=<" isn't a typo
@item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";
.col((@index + 1), ~"@{list}, @{item}");
}
.col(@index, @list) when (@index > @grid-columns) {
// terminal
@{list} {
position: relative;
// Prevent columns from collapsing when empty
min-height: 1px;
// Inner gutter via padding
padding-left: (@grid-gutter-width / 2);
padding-right: (@grid-gutter-width / 2);
}
}
.col(1); // kickstart it
}
.float-grid-columns(@class) {
.col(@index) {
// initial
@item: ~".col-@{class}-@{index}";
.col((@index + 1), @item);
}
.col(@index, @list) when (@index =< @grid-columns) {
// general
@item: ~".col-@{class}-@{index}";
.col((@index + 1), ~"@{list}, @{item}");
}
.col(@index, @list) when (@index > @grid-columns) {
// terminal
@{list} {
float: left;
}
}
.col(1); // kickstart it
}
.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {
.col-@{class}-@{index} {
width: percentage((@index / @grid-columns));
}
}
.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {
.col-@{class}-push-@{index} {
left: percentage((@index / @grid-columns));
}
}
.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {
.col-@{class}-push-0 {
left: auto;
}
}
.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {
.col-@{class}-pull-@{index} {
right: percentage((@index / @grid-columns));
}
}
.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {
.col-@{class}-pull-0 {
right: auto;
}
}
.calc-grid-column(@index, @class, @type) when (@type = offset) {
.col-@{class}-offset-@{index} {
margin-left: percentage((@index / @grid-columns));
}
}
// Basic looping in LESS
.loop-grid-columns(@index, @class, @type) when (@index >= 0) {
.calc-grid-column(@index, @class, @type);
// next iteration
.loop-grid-columns((@index - 1), @class, @type);
}
// Create grid for specific class
.make-grid(@class) {
.float-grid-columns(@class);
.loop-grid-columns(@grid-columns, @class, width);
.loop-grid-columns(@grid-columns, @class, pull);
.loop-grid-columns(@grid-columns, @class, push);
.loop-grid-columns(@grid-columns, @class, offset);
}

@ -1,134 +0,0 @@
// Grid system
//
// Generate semantic grid columns with these mixins.
// Centered container element
.container-fixed(@gutter: @grid-gutter-width) {
margin-right: auto;
margin-left: auto;
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
&:extend(.clearfix all);
}
// Creates a wrapper for a series of columns
.make-row(@gutter: @grid-gutter-width) {
margin-left: ceil((@gutter / -2));
margin-right: floor((@gutter / -2));
&:extend(.clearfix all);
}
// Generate the extra small columns
.make-xs-column(@columns; @gutter: @grid-gutter-width) {
position: relative;
float: left;
width: percentage((@columns / @grid-columns));
min-height: 1px;
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
}
.make-xs-column-offset(@columns) {
margin-left: percentage((@columns / @grid-columns));
}
.make-xs-column-push(@columns) {
left: percentage((@columns / @grid-columns));
}
.make-xs-column-pull(@columns) {
right: percentage((@columns / @grid-columns));
}
// Generate the small columns
.make-sm-column(@columns; @gutter: @grid-gutter-width) {
position: relative;
min-height: 1px;
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
@media (min-width: @screen-sm-min) {
float: left;
width: percentage((@columns / @grid-columns));
}
}
.make-sm-column-offset(@columns) {
@media (min-width: @screen-sm-min) {
margin-left: percentage((@columns / @grid-columns));
}
}
.make-sm-column-push(@columns) {
@media (min-width: @screen-sm-min) {
left: percentage((@columns / @grid-columns));
}
}
.make-sm-column-pull(@columns) {
@media (min-width: @screen-sm-min) {
right: percentage((@columns / @grid-columns));
}
}
// Generate the medium columns
.make-md-column(@columns; @gutter: @grid-gutter-width) {
position: relative;
min-height: 1px;
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
@media (min-width: @screen-md-min) {
float: left;
width: percentage((@columns / @grid-columns));
}
}
.make-md-column-offset(@columns) {
@media (min-width: @screen-md-min) {
margin-left: percentage((@columns / @grid-columns));
}
}
.make-md-column-push(@columns) {
@media (min-width: @screen-md-min) {
left: percentage((@columns / @grid-columns));
}
}
.make-md-column-pull(@columns) {
@media (min-width: @screen-md-min) {
right: percentage((@columns / @grid-columns));
}
}
// Generate the large columns
.make-lg-column(@columns; @gutter: @grid-gutter-width) {
position: relative;
min-height: 1px;
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
@media (min-width: @screen-lg-min) {
float: left;
width: percentage((@columns / @grid-columns));
}
}
.make-lg-column-offset(@columns) {
@media (min-width: @screen-lg-min) {
margin-left: percentage((@columns / @grid-columns));
}
}
.make-lg-column-push(@columns) {
@media (min-width: @screen-lg-min) {
left: percentage((@columns / @grid-columns));
}
}
.make-lg-column-pull(@columns) {
@media (min-width: @screen-lg-min) {
right: percentage((@columns / @grid-columns));
}
}

@ -1,21 +0,0 @@
// CSS image replacement
//
// Heads up! v3 launched with only `.hide-text()`, but per our pattern for
// mixins being reused as classes with the same name, this doesn't hold up. As
// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
//
// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
// Deprecated as of v3.0.1 (will be removed in v4)
.hide-text() {
font: ~"0/0" a;
color: transparent;
text-shadow: none;
background-color: transparent;
border: 0;
}
// New mixin to use as of v3.0.1
.text-hide() {
.hide-text();
}

@ -1,25 +0,0 @@
// Image Mixins
// - Responsive image
// - Retina image
// Responsive image
//
// Keep images from scaling beyond the width of their parents.
.img-responsive(@display: block) {
display: @display;
max-width: 100%; // Part 1: Set a maximum relative to the parent
height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
}
// Retina image
//
// Short retina mixin for setting background-image and -size. Note that the
// spelling of `min--moz-device-pixel-ratio` is intentional.
.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {
background-image: url("@{file-1x}");
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and ( min--moz-device-pixel-ratio: 2), only screen and ( -o-min-device-pixel-ratio: 2/1), only screen and ( min-device-pixel-ratio: 2), only screen and ( min-resolution: 192dpi), only screen and ( min-resolution: 2dppx) {
background-image: url("@{file-2x}");
background-size: @width-1x @height-1x;
}
}

@ -1,12 +0,0 @@
// Labels
.label-variant(@color) {
background-color: @color;
&[href] {
&:hover,
&:focus {
background-color: darken(@color, 10%);
}
}
}

@ -1,30 +0,0 @@
// List Groups
.list-group-item-variant(@state; @background; @color) {
.list-group-item-@{state} {
color: @color;
background-color: @background;
a&,
button& {
color: @color;
.list-group-item-heading {
color: inherit;
}
&:hover,
&:focus {
color: @color;
background-color: darken(@background, 5%);
}
&.active,
&.active:hover,
&.active:focus {
color: #fff;
background-color: @color;
border-color: @color;
}
}
}
}

@ -1,10 +0,0 @@
// Horizontal dividers
//
// Dividers (basically an hr) within dropdowns and nav lists
.nav-divider(@color: #e5e5e5) {
height: 1px;
margin: ((@line-height-computed / 2) - 1) 0;
overflow: hidden;
background-color: @color;
}

@ -1,9 +0,0 @@
// Navbar vertical align
//
// Vertically center elements in the navbar.
// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
.navbar-vertical-align(@element-height) {
margin-top: ((@navbar-height - @element-height) / 2);
margin-bottom: ((@navbar-height - @element-height) / 2);
}

@ -1,8 +0,0 @@
// Opacity
.opacity(@opacity) {
opacity: @opacity;
// IE8 filter
@opacity-ie: (@opacity * 100);
filter: ~"alpha(opacity=@{opacity-ie})";
}

@ -1,24 +0,0 @@
// Pagination
.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
> li {
> a,
> span {
padding: @padding-vertical @padding-horizontal;
font-size: @font-size;
line-height: @line-height;
}
&:first-child {
> a,
> span {
.border-left-radius(@border-radius);
}
}
&:last-child {
> a,
> span {
.border-right-radius(@border-radius);
}
}
}
}

@ -1,24 +0,0 @@
// Panels
.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {
border-color: @border;
& > .panel-heading {
color: @heading-text-color;
background-color: @heading-bg-color;
border-color: @heading-border;
+ .panel-collapse > .panel-body {
border-top-color: @border;
}
.badge {
color: @heading-bg-color;
background-color: @heading-text-color;
}
}
& > .panel-footer {
+ .panel-collapse > .panel-body {
border-bottom-color: @border;
}
}
}

@ -1,10 +0,0 @@
// Progress bars
.progress-bar-variant(@color) {
background-color: @color;
// Deprecated parent class requirement as of v3.2.0
.progress-striped & {
#gradient > .striped();
}
}

@ -1,8 +0,0 @@
// Reset filters for IE
//
// When you need to remove a gradient background, do not forget to use this to reset
// the IE filter for IE9 and below.
.reset-filter() {
filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
}

@ -1,18 +0,0 @@
.reset-text() {
font-family: @font-family-base;
// We deliberately do NOT reset font-size.
font-style: normal;
font-weight: normal;
letter-spacing: normal;
line-break: auto;
line-height: @line-height-base;
text-align: left; // Fallback for where `start` is not supported
text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
white-space: normal;
word-break: normal;
word-spacing: normal;
word-wrap: normal;
}

@ -1,6 +0,0 @@
// Resize anything
.resizable(@direction) {
resize: @direction; // Options: horizontal, vertical, both
overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
}

@ -1,21 +0,0 @@
// Responsive utilities
//
// More easily include all the states for responsive-utilities.less.
.responsive-visibility() {
display: block !important;
table& {
display: table !important;
}
tr& {
display: table-row !important;
}
th&,
td& {
display: table-cell !important;
}
}
.responsive-invisibility() {
display: none !important;
}

@ -1,10 +0,0 @@
// Sizing shortcuts
.size(@width; @height) {
width: @width;
height: @height;
}
.square(@size) {
.size(@size; @size);
}

@ -1,9 +0,0 @@
// WebKit-style focus
.tab-focus() {
// Default
outline: thin dotted;
// WebKit
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}

@ -1,28 +0,0 @@
// Tables
.table-row-variant(@state; @background) {
// Exact selectors below required to override `.table-striped` and prevent
// inheritance to nested tables.
.table > thead > tr,
.table > tbody > tr,
.table > tfoot > tr {
> td.@{state},
> th.@{state},
&.@{state} > td,
&.@{state} > th {
background-color: @background;
}
}
// Hover states for `.table-hover`
// Note: this is not available for cells or rows within `thead` or `tfoot`.
.table-hover > tbody > tr {
> td.@{state}:hover,
> th.@{state}:hover,
&.@{state}:hover > td,
&:hover > .@{state},
&.@{state}:hover > th {
background-color: darken(@background, 5%);
}
}
}

@ -1,9 +0,0 @@
// Typography
.text-emphasis-variant(@color) {
color: @color;
a&:hover,
a&:focus {
color: darken(@color, 10%);
}
}

@ -1,8 +0,0 @@
// Text overflow
// Requires inline-block or block for proper styling
.text-overflow() {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

@ -1,254 +0,0 @@
// Vendor Prefixes
//
// All vendor mixins are deprecated as of v3.2.0 due to the introduction of
// Autoprefixer in our Gruntfile. They will be removed in v4.
// - Animations
// - Backface visibility
// - Box shadow
// - Box sizing
// - Content columns
// - Hyphens
// - Placeholder text
// - Transformations
// - Transitions
// - User Select
// Animations
.animation(@animation) {
-webkit-animation: @animation;
-o-animation: @animation;
animation: @animation;
}
.animation-name(@name) {
-webkit-animation-name: @name;
animation-name: @name;
}
.animation-duration(@duration) {
-webkit-animation-duration: @duration;
animation-duration: @duration;
}
.animation-timing-function(@timing-function) {
-webkit-animation-timing-function: @timing-function;
animation-timing-function: @timing-function;
}
.animation-delay(@delay) {
-webkit-animation-delay: @delay;
animation-delay: @delay;
}
.animation-iteration-count(@iteration-count) {
-webkit-animation-iteration-count: @iteration-count;
animation-iteration-count: @iteration-count;
}
.animation-direction(@direction) {
-webkit-animation-direction: @direction;
animation-direction: @direction;
}
.animation-fill-mode(@fill-mode) {
-webkit-animation-fill-mode: @fill-mode;
animation-fill-mode: @fill-mode;
}
// Backface visibility
// Prevent browsers from flickering when using CSS 3D transforms.
// Default value is `visible`, but can be changed to `hidden`
.backface-visibility(@visibility) {
-webkit-backface-visibility: @visibility;
-moz-backface-visibility: @visibility;
backface-visibility: @visibility;
}
// Drop shadows
//
// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's
// supported browsers that have box shadow capabilities now support it.
.box-shadow(@shadow) {
-webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1
box-shadow: @shadow;
}
// Box sizing
.box-sizing(@boxmodel) {
-webkit-box-sizing: @boxmodel;
-moz-box-sizing: @boxmodel;
box-sizing: @boxmodel;
}
// CSS3 Content Columns
.content-columns(@column-count; @column-gap: @grid-gutter-width) {
-webkit-column-count: @column-count;
-moz-column-count: @column-count;
column-count: @column-count;
-webkit-column-gap: @column-gap;
-moz-column-gap: @column-gap;
column-gap: @column-gap;
}
// Optional hyphenation
.hyphens(@mode: auto) {
word-wrap: break-word;
-webkit-hyphens: @mode;
-moz-hyphens: @mode;
-ms-hyphens: @mode; // IE10+
-o-hyphens: @mode;
hyphens: @mode;
}
// Placeholder text
.placeholder(@color: @input-color-placeholder) {
// Firefox
&::-moz-placeholder {
color: @color;
opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526
}
&:-ms-input-placeholder {
color: @color;
}
// Internet Explorer 10+
&::-webkit-input-placeholder {
color: @color;
}
// Safari and Chrome
}
// Transformations
.scale(@ratio) {
-webkit-transform: scale(@ratio);
-ms-transform: scale(@ratio); // IE9 only
-o-transform: scale(@ratio);
transform: scale(@ratio);
}
.scale(@ratioX; @ratioY) {
-webkit-transform: scale(@ratioX, @ratioY);
-ms-transform: scale(@ratioX, @ratioY); // IE9 only
-o-transform: scale(@ratioX, @ratioY);
transform: scale(@ratioX, @ratioY);
}
.scaleX(@ratio) {
-webkit-transform: scaleX(@ratio);
-ms-transform: scaleX(@ratio); // IE9 only
-o-transform: scaleX(@ratio);
transform: scaleX(@ratio);
}
.scaleY(@ratio) {
-webkit-transform: scaleY(@ratio);
-ms-transform: scaleY(@ratio); // IE9 only
-o-transform: scaleY(@ratio);
transform: scaleY(@ratio);
}
.skew(@x; @y) {
-webkit-transform: skewX(@x) skewY(@y);
-ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
-o-transform: skewX(@x) skewY(@y);
transform: skewX(@x) skewY(@y);
}
.translate(@x; @y) {
-webkit-transform: translate(@x, @y);
-ms-transform: translate(@x, @y); // IE9 only
-o-transform: translate(@x, @y);
transform: translate(@x, @y);
}
.translate3d(@x; @y; @z) {
-webkit-transform: translate3d(@x, @y, @z);
transform: translate3d(@x, @y, @z);
}
.rotate(@degrees) {
-webkit-transform: rotate(@degrees);
-ms-transform: rotate(@degrees); // IE9 only
-o-transform: rotate(@degrees);
transform: rotate(@degrees);
}
.rotateX(@degrees) {
-webkit-transform: rotateX(@degrees);
-ms-transform: rotateX(@degrees); // IE9 only
-o-transform: rotateX(@degrees);
transform: rotateX(@degrees);
}
.rotateY(@degrees) {
-webkit-transform: rotateY(@degrees);
-ms-transform: rotateY(@degrees); // IE9 only
-o-transform: rotateY(@degrees);
transform: rotateY(@degrees);
}
.perspective(@perspective) {
-webkit-perspective: @perspective;
-moz-perspective: @perspective;
perspective: @perspective;
}
.perspective-origin(@perspective) {
-webkit-perspective-origin: @perspective;
-moz-perspective-origin: @perspective;
perspective-origin: @perspective;
}
.transform-origin(@origin) {
-webkit-transform-origin: @origin;
-moz-transform-origin: @origin;
-ms-transform-origin: @origin; // IE9 only
transform-origin: @origin;
}
// Transitions
.transition(@transition) {
-webkit-transition: @transition;
-o-transition: @transition;
transition: @transition;
}
.transition-property(@transition-property) {
-webkit-transition-property: @transition-property;
transition-property: @transition-property;
}
.transition-delay(@transition-delay) {
-webkit-transition-delay: @transition-delay;
transition-delay: @transition-delay;
}
.transition-duration(@transition-duration) {
-webkit-transition-duration: @transition-duration;
transition-duration: @transition-duration;
}
.transition-timing-function(@timing-function) {
-webkit-transition-timing-function: @timing-function;
transition-timing-function: @timing-function;
}
.transition-transform(@transition) {
-webkit-transition: -webkit-transform @transition;
-moz-transition: -moz-transform @transition;
-o-transition: -o-transform @transition;
transition: transform @transition;
}
// User select
// For selecting text on the page
.user-select(@select) {
-webkit-user-select: @select;
-moz-user-select: @select;
-ms-user-select: @select; // IE10+
user-select: @select;
}

@ -1,841 +0,0 @@
//
// Variables
// --------------------------------------------------
//== Colors
//
//## Gray and brand colors for use across Bootstrap.
@gray-base: #000;
@gray-darker: lighten(@gray-base, 13.5%);
// #222
@gray-dark: lighten(@gray-base, 20%);
// #333
@gray: lighten(@gray-base, 33.5%);
// #555
@gray-light: lighten(@gray-base, 46.7%);
// #777
@gray-lighter: lighten(@gray-base, 93.5%);
// #eee
@brand-primary: darken(#428bca, 6.5%);
// #337ab7
@brand-success: #5cb85c;
@brand-info: #5bc0de;
@brand-warning: #f0ad4e;
@brand-danger: #d9534f;
//== Scaffolding
//
//## Settings for some of the most global styles.
//** Background color for `<body>`.
@body-bg: #fff;
//** Global text color on `<body>`.
@text-color: @gray-dark;
//** Global textual link color.
@link-color: @brand-primary;
//** Link hover color set via `darken()` function.
@link-hover-color: darken(@link-color, 15%);
//** Link hover decoration.
@link-hover-decoration: underline;
//== Typography
//
//## Font, line-height, and color for body text, headings, and more.
@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
@font-family-serif: Georgia, "Times New Roman", Times, serif;
//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
@font-family-base: @font-family-sans-serif;
@font-size-base: 14px;
@font-size-large: ceil((@font-size-base * 1.25));
// ~18px
@font-size-small: ceil((@font-size-base * 0.85));
// ~12px
@font-size-h1: floor((@font-size-base * 2.6));
// ~36px
@font-size-h2: floor((@font-size-base * 2.15));
// ~30px
@font-size-h3: ceil((@font-size-base * 1.7));
// ~24px
@font-size-h4: ceil((@font-size-base * 1.25));
// ~18px
@font-size-h5: @font-size-base;
@font-size-h6: ceil((@font-size-base * 0.85));
// ~12px
//** Unit-less `line-height` for use in components like buttons.
@line-height-base: 1.428571429;
// 20/14
//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
@line-height-computed: floor((@font-size-base * @line-height-base));
// ~20px
//** By default, this inherits from the `<body>`.
@headings-font-family: inherit;
@headings-font-weight: 500;
@headings-line-height: 1.1;
@headings-color: inherit;
//== Iconography
//
//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
//** Load fonts from this directory.
@icon-font-path: "../fonts/";
//** File name for all font files.
@icon-font-name: "glyphicons-halflings-regular";
//** Element ID within SVG icon file.
@icon-font-svg-id: "glyphicons_halflingsregular";
//== Components
//
//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
@padding-base-vertical: 6px;
@padding-base-horizontal: 12px;
@padding-large-vertical: 10px;
@padding-large-horizontal: 16px;
@padding-small-vertical: 5px;
@padding-small-horizontal: 10px;
@padding-xs-vertical: 1px;
@padding-xs-horizontal: 5px;
@line-height-large: 1.3333333;
// extra decimals for Win 8.1 Chrome
@line-height-small: 1.5;
@border-radius-base: 4px;
@border-radius-large: 6px;
@border-radius-small: 3px;
//** Global color for active items (e.g., navs or dropdowns).
@component-active-color: #fff;
//** Global background color for active items (e.g., navs or dropdowns).
@component-active-bg: @brand-primary;
//** Width of the `border` for generating carets that indicator dropdowns.
@caret-width-base: 4px;
//** Carets increase slightly in size for larger components.
@caret-width-large: 5px;
//== Tables
//
//## Customizes the `.table` component with basic values, each used across all table variations.
//** Padding for `<th>`s and `<td>`s.
@table-cell-padding: 8px;
//** Padding for cells in `.table-condensed`.
@table-condensed-cell-padding: 5px;
//** Default background color used for all tables.
@table-bg: transparent;
//** Background color used for `.table-striped`.
@table-bg-accent: #f9f9f9;
//** Background color used for `.table-hover`.
@table-bg-hover: #f5f5f5;
@table-bg-active: @table-bg-hover;
//** Border color for table and cell borders.
@table-border-color: #ddd;
//== Buttons
//
//## For each of Bootstrap's buttons, define text, background and border color.
@btn-font-weight: normal;
@btn-default-color: #333;
@btn-default-bg: #fff;
@btn-default-border: #ccc;
@btn-primary-color: #fff;
@btn-primary-bg: @brand-primary;
@btn-primary-border: darken(@btn-primary-bg, 5%);
@btn-success-color: #fff;
@btn-success-bg: @brand-success;
@btn-success-border: darken(@btn-success-bg, 5%);
@btn-info-color: #fff;
@btn-info-bg: @brand-info;
@btn-info-border: darken(@btn-info-bg, 5%);
@btn-warning-color: #fff;
@btn-warning-bg: @brand-warning;
@btn-warning-border: darken(@btn-warning-bg, 5%);
@btn-danger-color: #fff;
@btn-danger-bg: @brand-danger;
@btn-danger-border: darken(@btn-danger-bg, 5%);
@btn-link-disabled-color: @gray-light;
//== Forms
//
//##
//** `<input>` background color
@input-bg: #fff;
//** `<input disabled>` background color
@input-bg-disabled: @gray-lighter;
//** Text color for `<input>`s
@input-color: @gray;
//** `<input>` border color
@input-border: #ccc;
// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
//** Default `.form-control` border radius
// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
@input-border-radius: @border-radius-base;
//** Large `.form-control` border radius
@input-border-radius-large: @border-radius-large;
//** Small `.form-control` border radius
@input-border-radius-small: @border-radius-small;
//** Border color for inputs on focus
@input-border-focus: #66afe9;
//** Placeholder text color
@input-color-placeholder: #999;
//** Default `.form-control` height
@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);
//** Large `.form-control` height
@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
//** Small `.form-control` height
@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
//** `.form-group` margin
@form-group-margin-bottom: 15px;
@legend-color: @gray-dark;
@legend-border-color: #e5e5e5;
//** Background color for textual input addons
@input-group-addon-bg: @gray-lighter;
//** Border color for textual input addons
@input-group-addon-border-color: @input-border;
//** Disabled cursor for form controls and buttons.
@cursor-disabled: not-allowed;
//== Dropdowns
//
//## Dropdown menu container and contents.
//** Background for the dropdown menu.
@dropdown-bg: #fff;
//** Dropdown menu `border-color`.
@dropdown-border: rgba(0, 0, 0, .15);
//** Dropdown menu `border-color` **for IE8**.
@dropdown-fallback-border: #ccc;
//** Divider color for between dropdown items.
@dropdown-divider-bg: #e5e5e5;
//** Dropdown link text color.
@dropdown-link-color: @gray-dark;
//** Hover color for dropdown links.
@dropdown-link-hover-color: darken(@gray-dark, 5%);
//** Hover background for dropdown links.
@dropdown-link-hover-bg: #f5f5f5;
//** Active dropdown menu item text color.
@dropdown-link-active-color: @component-active-color;
//** Active dropdown menu item background color.
@dropdown-link-active-bg: @component-active-bg;
//** Disabled dropdown menu item background color.
@dropdown-link-disabled-color: @gray-light;
//** Text color for headers within dropdown menus.
@dropdown-header-color: @gray-light;
//** Deprecated `@dropdown-caret-color` as of v3.1.0
@dropdown-caret-color: #000;
//-- Z-index master list
//
// Warning: Avoid customizing these values. They're used for a bird's eye view
// of components dependent on the z-axis and are designed to all work together.
//
// Note: These variables are not generated into the Customizer.
@zindex-navbar: 1000;
@zindex-dropdown: 1000;
@zindex-popover: 1060;
@zindex-tooltip: 1070;
@zindex-navbar-fixed: 1030;
@zindex-modal-background: 1040;
@zindex-modal: 1050;
//== Media queries breakpoints
//
//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
// Extra small screen / phone
//** Deprecated `@screen-xs` as of v3.0.1
@screen-xs: 480px;
//** Deprecated `@screen-xs-min` as of v3.2.0
@screen-xs-min: @screen-xs;
//** Deprecated `@screen-phone` as of v3.0.1
@screen-phone: @screen-xs-min;
// Small screen / tablet
//** Deprecated `@screen-sm` as of v3.0.1
@screen-sm: 768px;
@screen-sm-min: @screen-sm;
//** Deprecated `@screen-tablet` as of v3.0.1
@screen-tablet: @screen-sm-min;
// Medium screen / desktop
//** Deprecated `@screen-md` as of v3.0.1
@screen-md: 992px;
@screen-md-min: @screen-md;
//** Deprecated `@screen-desktop` as of v3.0.1
@screen-desktop: @screen-md-min;
// Large screen / wide desktop
//** Deprecated `@screen-lg` as of v3.0.1
@screen-lg: 1200px;
@screen-lg-min: @screen-lg;
//** Deprecated `@screen-lg-desktop` as of v3.0.1
@screen-lg-desktop: @screen-lg-min;
// So media queries don't overlap when required, provide a maximum
@screen-xs-max: (@screen-sm-min - 1);
@screen-sm-max: (@screen-md-min - 1);
@screen-md-max: (@screen-lg-min - 1);
//== Grid system
//
//## Define your custom responsive grid.
//** Number of columns in the grid.
@grid-columns: 12;
//** Padding between columns. Gets divided in half for the left and right.
@grid-gutter-width: 30px;
// Navbar collapse
//** Point at which the navbar becomes uncollapsed.
@grid-float-breakpoint: @screen-sm-min;
//** Point at which the navbar begins collapsing.
@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
//== Container sizes
//
//## Define the maximum width of `.container` for different screen sizes.
// Small screen / tablet
@container-tablet: (720px + @grid-gutter-width);
//** For `@screen-sm-min` and up.
@container-sm: @container-tablet;
// Medium screen / desktop
@container-desktop: (940px + @grid-gutter-width);
//** For `@screen-md-min` and up.
@container-md: @container-desktop;
// Large screen / wide desktop
@container-large-desktop: (1140px + @grid-gutter-width);
//** For `@screen-lg-min` and up.
@container-lg: @container-large-desktop;
//== Navbar
//
//##
// Basics of a navbar
@navbar-height: 50px;
@navbar-margin-bottom: @line-height-computed;
@navbar-border-radius: @border-radius-base;
@navbar-padding-horizontal: floor((@grid-gutter-width / 2));
@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
@navbar-collapse-max-height: 340px;
@navbar-default-color: #777;
@navbar-default-bg: #f8f8f8;
@navbar-default-border: darken(@navbar-default-bg, 6.5%);
// Navbar links
@navbar-default-link-color: #777;
@navbar-default-link-hover-color: #333;
@navbar-default-link-hover-bg: transparent;
@navbar-default-link-active-color: #555;
@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);
@navbar-default-link-disabled-color: #ccc;
@navbar-default-link-disabled-bg: transparent;
// Navbar brand label
@navbar-default-brand-color: @navbar-default-link-color;
@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);
@navbar-default-brand-hover-bg: transparent;
// Navbar toggle
@navbar-default-toggle-hover-bg: #ddd;
@navbar-default-toggle-icon-bar-bg: #888;
@navbar-default-toggle-border-color: #ddd;
// Inverted navbar
// Reset inverted navbar basics
@navbar-inverse-color: lighten(@gray-light, 15%);
@navbar-inverse-bg: #222;
@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);
// Inverted navbar links
@navbar-inverse-link-color: lighten(@gray-light, 15%);
@navbar-inverse-link-hover-color: #fff;
@navbar-inverse-link-hover-bg: transparent;
@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;
@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);
@navbar-inverse-link-disabled-color: #444;
@navbar-inverse-link-disabled-bg: transparent;
// Inverted navbar brand label
@navbar-inverse-brand-color: @navbar-inverse-link-color;
@navbar-inverse-brand-hover-color: #fff;
@navbar-inverse-brand-hover-bg: transparent;
// Inverted navbar toggle
@navbar-inverse-toggle-hover-bg: #333;
@navbar-inverse-toggle-icon-bar-bg: #fff;
@navbar-inverse-toggle-border-color: #333;
//== Navs
//
//##
//=== Shared nav styles
@nav-link-padding: 10px 15px;
@nav-link-hover-bg: @gray-lighter;
@nav-disabled-link-color: @gray-light;
@nav-disabled-link-hover-color: @gray-light;
//== Tabs
@nav-tabs-border-color: #ddd;
@nav-tabs-link-hover-border-color: @gray-lighter;
@nav-tabs-active-link-hover-bg: @body-bg;
@nav-tabs-active-link-hover-color: @gray;
@nav-tabs-active-link-hover-border-color: #ddd;
@nav-tabs-justified-link-border-color: #ddd;
@nav-tabs-justified-active-link-border-color: @body-bg;
//== Pills
@nav-pills-border-radius: @border-radius-base;
@nav-pills-active-link-hover-bg: @component-active-bg;
@nav-pills-active-link-hover-color: @component-active-color;
//== Pagination
//
//##
@pagination-color: @link-color;
@pagination-bg: #fff;
@pagination-border: #ddd;
@pagination-hover-color: @link-hover-color;
@pagination-hover-bg: @gray-lighter;
@pagination-hover-border: #ddd;
@pagination-active-color: #fff;
@pagination-active-bg: @brand-primary;
@pagination-active-border: @brand-primary;
@pagination-disabled-color: @gray-light;
@pagination-disabled-bg: #fff;
@pagination-disabled-border: #ddd;
//== Pager
//
//##
@pager-bg: @pagination-bg;
@pager-border: @pagination-border;
@pager-border-radius: 15px;
@pager-hover-bg: @pagination-hover-bg;
@pager-active-bg: @pagination-active-bg;
@pager-active-color: @pagination-active-color;
@pager-disabled-color: @pagination-disabled-color;
//== Jumbotron
//
//##
@jumbotron-padding: 30px;
@jumbotron-color: inherit;
@jumbotron-bg: @gray-lighter;
@jumbotron-heading-color: inherit;
@jumbotron-font-size: ceil((@font-size-base * 1.5));
//== Form states and alerts
//
//## Define colors for form feedback states and, by default, alerts.
@state-success-text: #3c763d;
@state-success-bg: #dff0d8;
@state-success-border: darken(spin(@state-success-bg, -10), 5%);
@state-info-text: #31708f;
@state-info-bg: #d9edf7;
@state-info-border: darken(spin(@state-info-bg, -10), 7%);
@state-warning-text: #8a6d3b;
@state-warning-bg: #fcf8e3;
@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);
@state-danger-text: #a94442;
@state-danger-bg: #f2dede;
@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);
//== Tooltips
//
//##
//** Tooltip max width
@tooltip-max-width: 200px;
//** Tooltip text color
@tooltip-color: #fff;
//** Tooltip background color
@tooltip-bg: #000;
@tooltip-opacity: .9;
//** Tooltip arrow width
@tooltip-arrow-width: 5px;
//** Tooltip arrow color
@tooltip-arrow-color: @tooltip-bg;
//== Popovers
//
//##
//** Popover body background color
@popover-bg: #fff;
//** Popover maximum width
@popover-max-width: 276px;
//** Popover border color
@popover-border-color: rgba(0, 0, 0, .2);
//** Popover fallback border color
@popover-fallback-border-color: #ccc;
//** Popover title background color
@popover-title-bg: darken(@popover-bg, 3%);
//** Popover arrow width
@popover-arrow-width: 10px;
//** Popover arrow color
@popover-arrow-color: @popover-bg;
//** Popover outer arrow width
@popover-arrow-outer-width: (@popover-arrow-width + 1);
//** Popover outer arrow color
@popover-arrow-outer-color: fadein(@popover-border-color, 5%);
//** Popover outer arrow fallback color
@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);
//== Labels
//
//##
//** Default label background color
@label-default-bg: @gray-light;
//** Primary label background color
@label-primary-bg: @brand-primary;
//** Success label background color
@label-success-bg: @brand-success;
//** Info label background color
@label-info-bg: @brand-info;
//** Warning label background color
@label-warning-bg: @brand-warning;
//** Danger label background color
@label-danger-bg: @brand-danger;
//** Default label text color
@label-color: #fff;
//** Default text color of a linked label
@label-link-hover-color: #fff;
//== Modals
//
//##
//** Padding applied to the modal body
@modal-inner-padding: 15px;
//** Padding applied to the modal title
@modal-title-padding: 15px;
//** Modal title line-height
@modal-title-line-height: @line-height-base;
//** Background color of modal content area
@modal-content-bg: #fff;
//** Modal content border color
@modal-content-border-color: rgba(0, 0, 0, .2);
//** Modal content border color **for IE8**
@modal-content-fallback-border-color: #999;
//** Modal backdrop background color
@modal-backdrop-bg: #000;
//** Modal backdrop opacity
@modal-backdrop-opacity: .5;
//** Modal header border color
@modal-header-border-color: #e5e5e5;
//** Modal footer border color
@modal-footer-border-color: @modal-header-border-color;
@modal-lg: 900px;
@modal-md: 600px;
@modal-sm: 300px;
//== Alerts
//
//## Define alert colors, border radius, and padding.
@alert-padding: 15px;
@alert-border-radius: @border-radius-base;
@alert-link-font-weight: bold;
@alert-success-bg: @state-success-bg;
@alert-success-text: @state-success-text;
@alert-success-border: @state-success-border;
@alert-info-bg: @state-info-bg;
@alert-info-text: @state-info-text;
@alert-info-border: @state-info-border;
@alert-warning-bg: @state-warning-bg;
@alert-warning-text: @state-warning-text;
@alert-warning-border: @state-warning-border;
@alert-danger-bg: @state-danger-bg;
@alert-danger-text: @state-danger-text;
@alert-danger-border: @state-danger-border;
//== Progress bars
//
//##
//** Background color of the whole progress component
@progress-bg: #f5f5f5;
//** Progress bar text color
@progress-bar-color: #fff;
//** Variable for setting rounded corners on progress bar.
@progress-border-radius: @border-radius-base;
//** Default progress bar color
@progress-bar-bg: @brand-primary;
//** Success progress bar color
@progress-bar-success-bg: @brand-success;
//** Warning progress bar color
@progress-bar-warning-bg: @brand-warning;
//** Danger progress bar color
@progress-bar-danger-bg: @brand-danger;
//** Info progress bar color
@progress-bar-info-bg: @brand-info;
//== List group
//
//##
//** Background color on `.list-group-item`
@list-group-bg: #fff;
//** `.list-group-item` border color
@list-group-border: #ddd;
//** List group border radius
@list-group-border-radius: @border-radius-base;
//** Background color of single list items on hover
@list-group-hover-bg: #f5f5f5;
//** Text color of active list items
@list-group-active-color: @component-active-color;
//** Background color of active list items
@list-group-active-bg: @component-active-bg;
//** Border color of active list elements
@list-group-active-border: @list-group-active-bg;
//** Text color for content within active list items
@list-group-active-text-color: lighten(@list-group-active-bg, 40%);
//** Text color of disabled list items
@list-group-disabled-color: @gray-light;
//** Background color of disabled list items
@list-group-disabled-bg: @gray-lighter;
//** Text color for content within disabled list items
@list-group-disabled-text-color: @list-group-disabled-color;
@list-group-link-color: #555;
@list-group-link-hover-color: @list-group-link-color;
@list-group-link-heading-color: #333;
//== Panels
//
//##
@panel-bg: #fff;
@panel-body-padding: 15px;
@panel-heading-padding: 10px 15px;
@panel-footer-padding: @panel-heading-padding;
@panel-border-radius: @border-radius-base;
//** Border color for elements within panels
@panel-inner-border: #ddd;
@panel-footer-bg: #f5f5f5;
@panel-default-text: @gray-dark;
@panel-default-border: #ddd;
@panel-default-heading-bg: #f5f5f5;
@panel-primary-text: #fff;
@panel-primary-border: @brand-primary;
@panel-primary-heading-bg: @brand-primary;
@panel-success-text: @state-success-text;
@panel-success-border: @state-success-border;
@panel-success-heading-bg: @state-success-bg;
@panel-info-text: @state-info-text;
@panel-info-border: @state-info-border;
@panel-info-heading-bg: @state-info-bg;
@panel-warning-text: @state-warning-text;
@panel-warning-border: @state-warning-border;
@panel-warning-heading-bg: @state-warning-bg;
@panel-danger-text: @state-danger-text;
@panel-danger-border: @state-danger-border;
@panel-danger-heading-bg: @state-danger-bg;
//== Thumbnails
//
//##
//** Padding around the thumbnail image
@thumbnail-padding: 4px;
//** Thumbnail background color
@thumbnail-bg: @body-bg;
//** Thumbnail border color
@thumbnail-border: #ddd;
//** Thumbnail border radius
@thumbnail-border-radius: @border-radius-base;
//** Custom text color for thumbnail captions
@thumbnail-caption-color: @text-color;
//** Padding around the thumbnail caption
@thumbnail-caption-padding: 9px;
//== Wells
//
//##
@well-bg: #f5f5f5;
@well-border: darken(@well-bg, 7%);
//== Badges
//
//##
@badge-color: #fff;
//** Linked badge text color on hover
@badge-link-hover-color: #fff;
@badge-bg: @gray-light;
//** Badge text color in active nav link
@badge-active-color: @link-color;
//** Badge background color in active nav link
@badge-active-bg: #fff;
@badge-font-weight: bold;
@badge-line-height: 1;
@badge-border-radius: 10px;
//== Breadcrumbs
//
//##
@breadcrumb-padding-vertical: 8px;
@breadcrumb-padding-horizontal: 15px;
//** Breadcrumb background color
@breadcrumb-bg: #f5f5f5;
//** Breadcrumb text color
@breadcrumb-color: #ccc;
//** Text color of current page in the breadcrumb
@breadcrumb-active-color: @gray-light;
//** Textual separator for between breadcrumb elements
@breadcrumb-separator: "/";
//== Carousel
//
//##
@carousel-text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
@carousel-control-color: #fff;
@carousel-control-width: 15%;
@carousel-control-opacity: .5;
@carousel-control-font-size: 20px;
@carousel-indicator-active-bg: #fff;
@carousel-indicator-border-color: #fff;
@carousel-caption-color: #fff;
//== Close
//
//##
@close-font-weight: bold;
@close-color: #000;
@close-text-shadow: 0 1px 0 #fff;
//== Code
//
//##
@code-color: #c7254e;
@code-bg: #f9f2f4;
@kbd-color: #fff;
@kbd-bg: #333;
@pre-bg: #f5f5f5;
@pre-color: @gray-dark;
@pre-border-color: #ccc;
@pre-scrollable-max-height: 340px;
//== Type
//
//##
//** Horizontal offset for forms and lists.
@component-offset-horizontal: 180px;
//** Text muted color
@text-muted: @gray-light;
//** Abbreviations and acronyms border color
@abbr-border-color: @gray-light;
//** Headings small color
@headings-small-color: @gray-light;
//** Blockquote small color
@blockquote-small-color: @gray-light;
//** Blockquote font size
@blockquote-font-size: (@font-size-base * 1.25);
//** Blockquote border color
@blockquote-border-color: @gray-lighter;
//** Page header border color
@page-header-border-color: @gray-lighter;
//** Width of horizontal description list titles
@dl-horizontal-offset: @component-offset-horizontal;
//** Horizontal line color.
@hr-border: @gray-lighter;

@ -1,23 +0,0 @@
{
"adjoining-classes": false,
"box-sizing": false,
"box-model": false,
"compatible-vendor-prefixes": false,
"floats": false,
"font-sizes": false,
"gradients": false,
"important": false,
"known-properties": false,
"outline-none": false,
"qualified-headings": false,
"regex-selectors": false,
"shorthand": false,
"text-indent": false,
"unique-headings": false,
"universal-selector": false,
"unqualified-attributes": false,
"ids": false,
"fallback-colors": false,
"vendor-prefix": false,
"import": false
}

@ -1,36 +0,0 @@
/*
* Page: 400 and 500 error pages
* ------------------------------
*/
.error-page {
width: 600px;
margin: 20px auto 0 auto;
@media (max-width: @screen-sm-max) {
width: 100%;
}
//For the error number e.g: 404
> .headline {
float: left;
font-size: 100px;
font-weight: 300;
@media (max-width: @screen-sm-max) {
float: none;
text-align: center;
}
}
//For the message
> .error-content {
margin-left: 190px;
@media (max-width: @screen-sm-max) {
margin-left: 0;
}
> h3 {
font-weight: 300;
font-size: 25px;
@media (max-width: @screen-sm-max) {
text-align: center;
}
}
display: block;
}
}

@ -1,61 +0,0 @@
/*!
* AdminLTE v2.3.2
* Author: Almsaeed Studio
* Website: Almsaeed Studio <http://almsaeedstudio.com>
* License: Open source - MIT
* Please visit http://opensource.org/licenses/MIT for more information
!*/
//google fonts
@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic);
//Bootstrap Variables & Mixins
//The core bootstrap code have not been modified. These files
//are included only for reference.
@import (reference) "../bootstrap-less/mixins.less";
@import (reference) "../bootstrap-less/variables.less";
//MISC
//----
@import "core.less";
@import "variables.less";
@import "mixins.less";
//COMPONENTS
//-----------
@import "header.less";
@import "sidebar.less";
@import "sidebar-mini.less";
@import "control-sidebar.less";
@import "dropdown.less";
@import "forms.less";
@import "progress-bars.less";
@import "small-box.less";
@import "boxes.less";
@import "info-box.less";
@import "timeline.less";
@import "buttons.less";
@import "callout.less";
@import "alerts.less";
@import "navs.less";
@import "products.less";
@import "table.less";
@import "labels.less";
@import "direct-chat.less";
@import "users-list.less";
@import "carousel.less";
@import "modal.less";
@import "social-widgets.less";
//PAGES
//------
@import "mailbox.less";
@import "lockscreen.less";
@import "login_and_register.less";
@import "404_500_errors.less";
@import "invoice.less";
@import "profile";
//Plugins
//--------
@import "bootstrap-social.less";
@import "fullcalendar.less";
@import "select2.less";
//Miscellaneous
//-------------
@import "miscellaneous.less";
@import "print.less";

@ -1,47 +0,0 @@
/*
* Component: alert
* ----------------
*/
.alert {
.border-radius(3px);
h4 {
font-weight: 600;
}
.icon {
margin-right: 10px;
}
.close {
color: #000;
.opacity(.2);
&:hover {
.opacity(.5);
}
}
a {
color: #fff;
text-decoration: underline;
}
}
//Alert Variants
.alert-success {
&:extend(.bg-green);
border-color: darken(@green, 5%);
}
.alert-danger,
.alert-error {
&:extend(.bg-red);
border-color: darken(@red, 5%);
}
.alert-warning {
&:extend(.bg-yellow);
border-color: darken(@yellow, 5%);
}
.alert-info {
&:extend(.bg-aqua);
border-color: darken(@aqua, 5%);
}

@ -1,172 +0,0 @@
/*
* Social Buttons for Bootstrap
*
* Copyright 2013-2015 Panayiotis Lipiridis
* Licensed under the MIT License
*
* https://github.com/lipis/bootstrap-social
*/
@bs-height-base: (@line-height-computed + @padding-base-vertical * 2);
@bs-height-lg: (floor(@font-size-large * @line-height-base) + @padding-large-vertical * 2);
@bs-height-sm: (floor(@font-size-small * 1.5) + @padding-small-vertical * 2);
@bs-height-xs: (floor(@font-size-small * 1.2) + @padding-small-vertical + 1);
.btn-social {
position: relative;
padding-left: (@bs-height-base + @padding-base-horizontal);
text-align: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
> :first-child {
position: absolute;
left: 0;
top: 0;
bottom: 0;
width: @bs-height-base;
line-height: (@bs-height-base + 2);
font-size: 1.6em;
text-align: center;
border-right: 1px solid rgba(0, 0, 0, 0.2);
}
&.btn-lg {
padding-left: (@bs-height-lg + @padding-large-horizontal);
> :first-child {
line-height: @bs-height-lg;
width: @bs-height-lg;
font-size: 1.8em;
}
}
&.btn-sm {
padding-left: (@bs-height-sm + @padding-small-horizontal);
> :first-child {
line-height: @bs-height-sm;
width: @bs-height-sm;
font-size: 1.4em;
}
}
&.btn-xs {
padding-left: (@bs-height-xs + @padding-small-horizontal);
> :first-child {
line-height: @bs-height-xs;
width: @bs-height-xs;
font-size: 1.2em;
}
}
}
.btn-social-icon {
.btn-social;
height: (@bs-height-base + 2);
width: (@bs-height-base + 2);
padding: 0;
> :first-child {
border: none;
text-align: center;
width: 100%;
}
&.btn-lg {
height: @bs-height-lg;
width: @bs-height-lg;
padding-left: 0;
padding-right: 0;
}
&.btn-sm {
height: (@bs-height-sm + 2);
width: (@bs-height-sm + 2);
padding-left: 0;
padding-right: 0;
}
&.btn-xs {
height: (@bs-height-xs + 2);
width: (@bs-height-xs + 2);
padding-left: 0;
padding-right: 0;
}
}
.btn-social(@color-bg, @color: #fff) {
background-color: @color-bg;
.button-variant(@color, @color-bg, rgba(0, 0, 0, .2));
}
.btn-adn {
.btn-social(#d87a68);
}
.btn-bitbucket {
.btn-social(#205081);
}
.btn-dropbox {
.btn-social(#1087dd);
}
.btn-facebook {
.btn-social(#3b5998);
}
.btn-flickr {
.btn-social(#ff0084);
}
.btn-foursquare {
.btn-social(#f94877);
}
.btn-github {
.btn-social(#444444);
}
.btn-google {
.btn-social(#dd4b39);
}
.btn-instagram {
.btn-social(#3f729b);
}
.btn-linkedin {
.btn-social(#007bb6);
}
.btn-microsoft {
.btn-social(#2672ec);
}
.btn-openid {
.btn-social(#f7931e);
}
.btn-pinterest {
.btn-social(#cb2027);
}
.btn-reddit {
.btn-social(#eff7ff, #000);
}
.btn-soundcloud {
.btn-social(#ff5500);
}
.btn-tumblr {
.btn-social(#2c4762);
}
.btn-twitter {
.btn-social(#55acee);
}
.btn-vimeo {
.btn-social(#1ab7ea);
}
.btn-vk {
.btn-social(#587ea3);
}
.btn-yahoo {
.btn-social(#720e9e);
}

@ -1,485 +0,0 @@
/*
* Component: Box
* --------------
*/
.box {
position: relative;
.border-radius(@box-border-radius);
background: #ffffff;
border-top: 3px solid @box-default-border-top-color;
margin-bottom: 20px;
width: 100%;
box-shadow: @box-boxshadow;
// Box color variations
&.box-primary {
border-top-color: @light-blue;
}
&.box-info {
border-top-color: @aqua;
}
&.box-danger {
border-top-color: @red;
}
&.box-warning {
border-top-color: @yellow;
}
&.box-success {
border-top-color: @green;
}
&.box-default {
border-top-color: @gray;
}
// collapsed mode
&.collapsed-box {
.box-body,
.box-footer {
display: none;
}
}
.nav-stacked {
> li {
border-bottom: 1px solid @box-border-color;
margin: 0;
&:last-of-type {
border-bottom: none;
}
}
}
// fixed height to 300px
&.height-control {
.box-body {
max-height: 300px;
overflow: auto;
}
}
.border-right {
border-right: 1px solid @box-border-color;
}
.border-left {
border-left: 1px solid @box-border-color;
}
//SOLID BOX
//---------
//use this class to get a colored header and borders
&.box-solid {
border-top: 0;
> .box-header {
.btn.btn-default {
background: transparent;
}
.btn,
a {
&:hover {
background: rgba(0, 0, 0, 0.1);
}
}
}
// Box color variations
&.box-default {
.box-solid-variant(@gray, #444);
}
&.box-primary {
.box-solid-variant(@light-blue);
}
&.box-info {
.box-solid-variant(@aqua);
}
&.box-danger {
.box-solid-variant(@red);
}
&.box-warning {
.box-solid-variant(@yellow);
}
&.box-success {
.box-solid-variant(@green);
}
> .box-header > .box-tools .btn {
border: 0;
box-shadow: none;
}
// Fix font color for tiles
&[class*='bg'] {
> .box-header {
color: #fff;
}
}
}
//BOX GROUP
.box-group {
> .box {
margin-bottom: 5px;
}
}
// jQuery Knob in a box
.knob-label {
text-align: center;
color: #333;
font-weight: 100;
font-size: 12px;
margin-bottom: 0.3em;
}
}
.box,
.overlay-wrapper {
// Box overlay for LOADING STATE effect
> .overlay,
> .loading-img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.overlay {
z-index: 50;
background: rgba(255, 255, 255, 0.7);
.border-radius(@box-border-radius);
> .fa {
position: absolute;
top: 50%;
left: 50%;
margin-left: -15px;
margin-top: -15px;
color: #000;
font-size: 30px;
}
}
.overlay.dark {
background: rgba(0, 0, 0, 0.5);
}
}
//Add clearfix to header, body and footer
.box-header,
.box-body,
.box-footer {
.clearfix();
}
//Box header
.box-header {
color: #444;
display: block;
padding: @box-padding;
position: relative;
//Add bottom border
&.with-border {
border-bottom: 1px solid @box-border-color;
.collapsed-box & {
border-bottom: none;
}
}
//Icons and box title
> .fa,
> .glyphicon,
> .ion,
.box-title {
display: inline-block;
font-size: 18px;
margin: 0;
line-height: 1;
}
> .fa,
> .glyphicon,
> .ion {
margin-right: 5px;
}
> .box-tools {
position: absolute;
right: 10px;
top: 5px;
[data-toggle="tooltip"] {
position: relative;
}
&.pull-right {
.dropdown-menu {
right: 0;
left: auto;
}
}
}
}
//Box Tools Buttons
.btn-box-tool {
padding: 5px;
font-size: 12px;
background: transparent;
color: darken(@box-default-border-top-color, 20%);
.open &,
&:hover {
color: darken(@box-default-border-top-color, 40%);
}
&.btn:active {
box-shadow: none;
}
}
//Box Body
.box-body {
.border-radius(0; 0; @box-border-radius; @box-border-radius);
padding: @box-padding;
.no-header & {
.border-top-radius(@box-border-radius);
}
// Tables within the box body
> .table {
margin-bottom: 0;
}
// Calendar within the box body
.fc {
margin-top: 5px;
}
.full-width-chart {
margin: -19px;
}
&.no-padding .full-width-chart {
margin: -9px;
}
.box-pane {
.border-radius(0; 0; @box-border-radius; 0);
}
.box-pane-right {
.border-radius(0; 0; 0; @box-border-radius);
}
}
//Box footer
.box-footer {
.border-radius(0; 0; @box-border-radius; @box-border-radius);
border-top: 1px solid @box-border-color;
padding: @box-padding;
background-color: @box-footer-bg;
}
.chart-legend {
&:extend(.list-unstyled);
margin: 10px 0;
> li {
@media (max-width: @screen-sm-max) {
float: left;
margin-right: 10px;
}
}
}
//Comment Box
.box-comments {
background: #f7f7f7;
.box-comment {
.clearfix();
padding: 8px 0;
border-bottom: 1px solid #eee;
&:last-of-type {
border-bottom: 0;
}
&:first-of-type {
padding-top: 0;
}
img {
&:extend(.img-sm);
float: left;
}
}
.comment-text {
margin-left: 40px;
color: #555;
}
.username {
color: #444;
display: block;
font-weight: 600;
}
.text-muted {
font-weight: 400;
font-size: 12px;
}
}
//Widgets
//-----------
/* Widget: TODO LIST */
.todo-list {
margin: 0;
padding: 0;
list-style: none;
overflow: auto;
// Todo list element
> li {
.border-radius(2px);
padding: 10px;
background: #f4f4f4;
margin-bottom: 2px;
border-left: 2px solid #e6e7e8;
color: #444;
&:last-of-type {
margin-bottom: 0;
}
> input[type='checkbox'] {
margin: 0 10px 0 5px;
}
.text {
display: inline-block;
margin-left: 5px;
font-weight: 600;
}
// Time labels
.label {
margin-left: 10px;
font-size: 9px;
}
// Tools and options box
.tools {
display: none;
float: right;
color: @red;
// icons
> .fa, > .glyphicon, > .ion {
margin-right: 5px;
cursor: pointer;
}
}
&:hover .tools {
display: inline-block;
}
&.done {
color: #999;
.text {
text-decoration: line-through;
font-weight: 500;
}
.label {
background: @gray !important;
}
}
}
// Color varaity
.danger {
border-left-color: @red;
}
.warning {
border-left-color: @yellow;
}
.info {
border-left-color: @aqua;
}
.success {
border-left-color: @green;
}
.primary {
border-left-color: @light-blue;
}
.handle {
display: inline-block;
cursor: move;
margin: 0 5px;
}
}
// END TODO WIDGET
/* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/
.chat {
padding: 5px 20px 5px 10px;
.item {
.clearfix();
margin-bottom: 10px;
// The image
> img {
width: 40px;
height: 40px;
border: 2px solid transparent;
.border-radius(50%);
}
> .online {
border: 2px solid @green;
}
> .offline {
border: 2px solid @red;
}
// The message body
> .message {
margin-left: 55px;
margin-top: -40px;
> .name {
display: block;
font-weight: 600;
}
}
// The attachment
> .attachment {
.border-radius(@attachment-border-radius);
background: #f4f4f4;
margin-left: 65px;
margin-right: 15px;
padding: 10px;
> h4 {
margin: 0 0 5px 0;
font-weight: 600;
font-size: 14px;
}
> p, > .filename {
font-weight: 600;
font-size: 13px;
font-style: italic;
margin: 0;
}
.clearfix();
}
}
}
//END CHAT WIDGET
//Input in box
.box-input {
max-width: 200px;
}
//A fix for panels body text color when placed within
// a modal
.modal {
.panel-body {
color: #444;
}
}

@ -1,168 +0,0 @@
/*
* Component: Button
* -----------------
*/
.btn {
.border-radius(@btn-border-radius);
.box-shadow(@btn-boxshadow);
border: 1px solid transparent;
&.uppercase {
text-transform: uppercase
}
// Flat buttons
&.btn-flat {
.border-radius(0);
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
border-width: 1px;
}
// Active state
&:active {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
&:focus {
outline: none;
}
// input file btn
&.btn-file {
position: relative;
overflow: hidden;
> input[type='file'] {
position: absolute;
top: 0;
right: 0;
min-width: 100%;
min-height: 100%;
font-size: 100px;
text-align: right;
.opacity(0);
outline: none;
background: white;
cursor: inherit;
display: block;
}
}
}
//Button color variations
.btn-default {
background-color: #f4f4f4;
color: #444;
border-color: #ddd;
&:hover,
&:active,
&.hover {
background-color: darken(#f4f4f4, 5%);
}
}
.btn-primary {
background-color: @light-blue;
border-color: darken(@light-blue, 5%);
&:hover, &:active, &.hover {
background-color: darken(@light-blue, 5%);
}
}
.btn-success {
background-color: @green;
border-color: darken(@green, 5%);
&:hover, &:active, &.hover {
background-color: darken(@green, 5%);
}
}
.btn-info {
background-color: @aqua;
border-color: darken(@aqua, 5%);
&:hover, &:active, &.hover {
background-color: darken(@aqua, 5%);
}
}
.btn-danger {
background-color: @red;
border-color: darken(@red, 5%);
&:hover, &:active, &.hover {
background-color: darken(@red, 5%);
}
}
.btn-warning {
background-color: @yellow;
border-color: darken(@yellow, 5%);
&:hover, &:active, &.hover {
background-color: darken(@yellow, 5%);
}
}
.btn-outline {
border: 1px solid #fff;
background: transparent;
color: #fff;
&:hover,
&:focus,
&:active {
color: rgba(255, 255, 255, .7);
border-color: rgba(255, 255, 255, .7);
}
}
.btn-link {
.box-shadow(none);
}
//General .btn with bg class
.btn[class*='bg-']:hover {
.box-shadow(inset 0 0 100px rgba(0, 0, 0, 0.2));
}
// Application buttons
.btn-app {
.border-radius(3px);
position: relative;
padding: 15px 5px;
margin: 0 0 10px 10px;
min-width: 80px;
height: 60px;
text-align: center;
color: #666;
border: 1px solid #ddd;
background-color: #f4f4f4;
font-size: 12px;
//Icons within the btn
> .fa, > .glyphicon, > .ion {
font-size: 20px;
display: block;
}
&:hover {
background: #f4f4f4;
color: #444;
border-color: #aaa;
}
&:active, &:focus {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
//The badge
> .badge {
position: absolute;
top: -3px;
right: -10px;
font-size: 10px;
font-weight: 400;
}
}

@ -1,48 +0,0 @@
/*
* Component: Callout
* ------------------
*/
// Base styles (regardless of theme)
.callout {
.border-radius(3px);
margin: 0 0 20px 0;
padding: 15px 30px 15px 15px;
border-left: 5px solid #eee;
a {
color: #fff;
text-decoration: underline;
&:hover {
color: #eee;
}
}
h4 {
margin-top: 0;
font-weight: 600;
}
p:last-child {
margin-bottom: 0;
}
code,
.highlight {
background-color: #fff;
}
// Themes for different contexts
&.callout-danger {
&:extend(.bg-red);
border-color: darken(@red, 10%);
}
&.callout-warning {
&:extend(.bg-yellow);
border-color: darken(@yellow, 10%);
}
&.callout-info {
&:extend(.bg-aqua);
border-color: darken(@aqua, 10%);
}
&.callout-success {
&:extend(.bg-green);
border-color: darken(@green, 10%);
}
}

@ -1,18 +0,0 @@
/*
* Component: Carousel
* -------------------
*/
.carousel-control {
&.left,
&.right {
background-image: none;
}
> .fa {
font-size: 40px;
position: absolute;
top: 50%;
z-index: 5;
display: inline-block;
margin-top: -20px;
}
}

@ -1,289 +0,0 @@
/*
* Component: Control sidebar. By default, this is the right sidebar.
*/
//The sidebar's background control class
//This is a hack to make the background visible while scrolling
.control-sidebar-bg {
position: fixed;
z-index: 1000;
bottom: 0;
}
//Transitions
.control-sidebar-bg,
.control-sidebar {
top: 0;
right: -@control-sidebar-width;
width: @control-sidebar-width;
.transition(right @transition-speed ease-in-out);
}
//The sidebar
.control-sidebar {
position: absolute;
padding-top: @navbar-height;
z-index: 1010;
//Fix position after header collapse
@media (max-width: @screen-sm) {
padding-top: @navbar-height + 50;
}
//Tab panes
> .tab-content {
padding: 10px 15px;
}
//Open state with slide over content effect
&.control-sidebar-open {
&,
+ .control-sidebar-bg {
right: 0;
}
}
}
//Open without slide over content
.control-sidebar-open {
.control-sidebar-bg,
.control-sidebar {
right: 0;
}
@media (min-width: @screen-sm) {
.content-wrapper,
.right-side,
.main-footer {
margin-right: @control-sidebar-width;
}
}
}
//Control sidebar tabs
.nav-tabs.control-sidebar-tabs {
> li {
&:first-of-type > a {
&,
&:hover,
&:focus {
border-left-width: 0;
}
}
> a {
.border-radius(0);
//Hover and active states
&,
&:hover {
border-top: none;
border-right: none;
border-left: 1px solid transparent;
border-bottom: 1px solid transparent;
}
.icon {
font-size: 16px;
}
}
//Active state
&.active {
> a {
&,
&:hover,
&:focus,
&:active {
border-top: none;
border-right: none;
border-bottom: none;
}
}
}
}
//Remove responsiveness on small screens
@media (max-width: @screen-sm) {
display: table;
> li {
display: table-cell;
}
}
}
//Headings in the sidebar content
.control-sidebar-heading {
font-weight: 400;
font-size: 16px;
padding: 10px 0;
margin-bottom: 10px;
}
//Subheadings
.control-sidebar-subheading {
display: block;
font-weight: 400;
font-size: 14px;
}
//Control Sidebar Menu
.control-sidebar-menu {
list-style: none;
padding: 0;
margin: 0 -15px;
> li > a {
.clearfix();
display: block;
padding: 10px 15px;
> .control-sidebar-subheading {
margin-top: 0;
}
}
.menu-icon {
float: left;
width: 35px;
height: 35px;
border-radius: 50%;
text-align: center;
line-height: 35px;
}
.menu-info {
margin-left: 45px;
margin-top: 3px;
> .control-sidebar-subheading {
margin: 0;
}
> p {
margin: 0;
font-size: 11px;
}
}
.progress {
margin: 0;
}
}
//Dark skin
.control-sidebar-dark {
color: @sidebar-dark-color;
// Background
&,
+ .control-sidebar-bg {
background: @sidebar-dark-bg;
}
// Sidebar tabs
.nav-tabs.control-sidebar-tabs {
border-bottom: darken(@sidebar-dark-bg, 3%);
> li {
> a {
background: darken(@sidebar-dark-bg, 5%);
color: @sidebar-dark-color;
//Hover and active states
&,
&:hover,
&:focus {
border-left-color: darken(@sidebar-dark-bg, 7%);
border-bottom-color: darken(@sidebar-dark-bg, 7%);
}
&:hover,
&:focus,
&:active {
background: darken(@sidebar-dark-bg, 3%);
}
&:hover {
color: #fff;
}
}
//Active state
&.active {
> a {
&,
&:hover,
&:focus,
&:active {
background: @sidebar-dark-bg;
color: #fff;
}
}
}
}
}
//Heading & subheading
.control-sidebar-heading,
.control-sidebar-subheading {
color: #fff;
}
//Sidebar list
.control-sidebar-menu {
> li {
> a {
&:hover {
background: @sidebar-dark-hover-bg;
}
.menu-info {
> p {
color: @sidebar-dark-color;
}
}
}
}
}
}
//Light skin
.control-sidebar-light {
color: lighten(@sidebar-light-color, 10%);
// Background
&,
+ .control-sidebar-bg {
background: @sidebar-light-bg;
border-left: 1px solid @gray;
}
// Sidebar tabs
.nav-tabs.control-sidebar-tabs {
border-bottom: @gray;
> li {
> a {
background: darken(@sidebar-light-bg, 5%);
color: @sidebar-light-color;
//Hover and active states
&,
&:hover,
&:focus {
border-left-color: @gray;
border-bottom-color: @gray;
}
&:hover,
&:focus,
&:active {
background: darken(@sidebar-light-bg, 3%);
}
}
//Active state
&.active {
> a {
&,
&:hover,
&:focus,
&:active {
background: @sidebar-light-bg;
color: #111;
}
}
}
}
}
//Heading & subheading
.control-sidebar-heading,
.control-sidebar-subheading {
color: #111;
}
//Sidebar list
.control-sidebar-menu {
margin-left: -14px;
> li {
> a {
&:hover {
background: @sidebar-light-hover-bg;
}
.menu-info {
> p {
color: lighten(@sidebar-light-color, 10%);
}
}
}
}
}
}

@ -1,174 +0,0 @@
/*
* Core: General Layout Style
* -------------------------
*/
html,
body {
min-height: 100%;
.layout-boxed & {
height: 100%;
}
}
body {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-weight: 400;
overflow-x: hidden;
overflow-y: auto;
}
/* Layout */
.wrapper {
.clearfix();
min-height: 100%;
position: relative;
overflow: hidden;
.layout-boxed & {
max-width: 1250px;
margin: 0 auto;
min-height: 100%;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.5);
position: relative;
}
}
.layout-boxed {
background: url('@{boxed-layout-bg-image-path}') repeat fixed;
}
/*
* Content Wrapper - contains the main content
* ```.right-side has been deprecated as of v2.0.0 in favor of .content-wrapper ```
*/
.content-wrapper,
.right-side,
.main-footer {
//Using disposable variable to join statements with a comma
@transition-rule: @transition-speed @transition-fn,
margin @transition-speed @transition-fn;
.transition-transform(@transition-rule);
margin-left: @sidebar-width;
z-index: 820;
//Top nav layout
.layout-top-nav & {
margin-left: 0;
}
@media (max-width: @screen-xs-max) {
margin-left: 0;
}
//When opening the sidebar on large screens
.sidebar-collapse & {
@media (min-width: @screen-sm) {
margin-left: 0;
}
}
//When opening the sidebar on small screens
.sidebar-open & {
@media (max-width: @screen-xs-max) {
.translate(@sidebar-width, 0);
}
}
}
.content-wrapper,
.right-side {
min-height: 100%;
background-color: @body-bg;
z-index: 800;
}
.main-footer {
background: #fff;
padding: 15px;
color: #444;
border-top: 1px solid @gray;
}
/* Fixed layout */
.fixed {
.main-header,
.main-sidebar,
.left-side {
position: fixed;
}
.main-header {
top: 0;
right: 0;
left: 0;
}
.content-wrapper,
.right-side {
padding-top: 50px;
@media (max-width: @screen-header-collapse) {
padding-top: 100px;
}
}
&.layout-boxed {
.wrapper {
max-width: 100%;
}
}
}
body.hold-transition {
.content-wrapper,
.right-side,
.main-footer,
.main-sidebar,
.left-side,
.main-header > .navbar,
.main-header .logo {
/* Fix for IE */
.transition(none);
}
}
/* Content */
.content {
min-height: 250px;
padding: 15px;
.container-fixed(@grid-gutter-width);
}
/* H1 - H6 font */
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
font-family: 'Source Sans Pro', sans-serif;
}
/* General Links */
a {
color: @link-color;
}
a:hover,
a:active,
a:focus {
outline: none;
text-decoration: none;
color: @link-hover-color;
}
/* Page Header */
.page-header {
margin: 10px 0 20px 0;
font-size: 22px;
> small {
color: #666;
display: block;
margin-top: 5px;
}
}

@ -1,194 +0,0 @@
/*
* Component: Direct Chat
* ----------------------
*/
.direct-chat {
.box-body {
.border-bottom-radius(0);
position: relative;
overflow-x: hidden;
padding: 0;
}
&.chat-pane-open {
.direct-chat-contacts {
.translate(0, 0);
}
}
}
.direct-chat-messages {
.translate(0, 0);
padding: 10px;
height: 250px;
overflow: auto;
}
.direct-chat-msg,
.direct-chat-text {
display: block;
}
.direct-chat-msg {
.clearfix();
margin-bottom: 10px;
}
.direct-chat-messages,
.direct-chat-contacts {
.transition-transform(.5s ease-in-out);
}
.direct-chat-text {
.border-radius(5px);
position: relative;
padding: 5px 10px;
background: @direct-chat-default-msg-bg;
border: 1px solid @direct-chat-default-msg-border-color;
margin: 5px 0 0 50px;
color: @direct-chat-default-font-color;
//Create the arrow
&:after,
&:before {
position: absolute;
right: 100%;
top: 15px;
border: solid transparent;
border-right-color: @direct-chat-default-msg-border-color;
content: ' ';
height: 0;
width: 0;
pointer-events: none;
}
&:after {
border-width: 5px;
margin-top: -5px;
}
&:before {
border-width: 6px;
margin-top: -6px;
}
.right & {
margin-right: 50px;
margin-left: 0;
&:after,
&:before {
right: auto;
left: 100%;
border-right-color: transparent;
border-left-color: @direct-chat-default-msg-border-color;
}
}
}
.direct-chat-img {
.border-radius(50%);
float: left;
width: 40px;
height: 40px;
.right & {
float: right;
}
}
.direct-chat-info {
display: block;
margin-bottom: 2px;
font-size: 12px;
}
.direct-chat-name {
font-weight: 600;
}
.direct-chat-timestamp {
color: #999;
}
//Direct chat contacts pane
.direct-chat-contacts-open {
.direct-chat-contacts {
.translate(0, 0);
}
}
.direct-chat-contacts {
.translate(101%, 0);
position: absolute;
top: 0;
bottom: 0;
height: 250px;
width: 100%;
background: #222d32;
color: #fff;
overflow: auto;
}
//Contacts list -- for displaying contacts in direct chat contacts pane
.contacts-list {
&:extend(.list-unstyled);
> li {
.clearfix();
border-bottom: 1px solid rgba(0, 0, 0, 0.2);
padding: 10px;
margin: 0;
&:last-of-type {
border-bottom: none;
}
}
}
.contacts-list-img {
.border-radius(50%);
width: 40px;
float: left;
}
.contacts-list-info {
margin-left: 45px;
color: #fff;
}
.contacts-list-name,
.contacts-list-status {
display: block;
}
.contacts-list-name {
font-weight: 600;
}
.contacts-list-status {
font-size: 12px;
}
.contacts-list-date {
color: #aaa;
font-weight: normal;
}
.contacts-list-msg {
color: #999;
}
//Direct Chat Variants
.direct-chat-danger {
.direct-chat-variant(@red);
}
.direct-chat-primary {
.direct-chat-variant(@light-blue);
}
.direct-chat-warning {
.direct-chat-variant(@yellow);
}
.direct-chat-info {
.direct-chat-variant(@aqua);
}
.direct-chat-success {
.direct-chat-variant(@green);
}

@ -1,350 +0,0 @@
/*
* Component: Dropdown menus
* -------------------------
*/
/*Dropdowns in general*/
.dropdown-menu {
box-shadow: none;
border-color: #eee;
> li > a {
color: #777;
}
> li > a > .glyphicon,
> li > a > .fa,
> li > a > .ion {
margin-right: 10px;
}
> li > a:hover {
background-color: lighten(@gray, 5%);
color: #333;
}
> .divider {
background-color: #eee;
}
}
//Navbar custom dropdown menu
.navbar-nav > .notifications-menu,
.navbar-nav > .messages-menu,
.navbar-nav > .tasks-menu {
//fix width and padding
> .dropdown-menu {
> li {
position: relative;
}
width: 280px;
//Remove padding and margins
padding: 0 0 0 0;
margin: 0;
top: 100%;
}
//Define header class
> .dropdown-menu > li.header {
.border-radius(4px; 4px; 0; 0);
background-color: #ffffff;
padding: 7px 10px;
border-bottom: 1px solid #f4f4f4;
color: #444444;
font-size: 14px;
}
//Define footer class
> .dropdown-menu > li.footer > a {
.border-radius(0; 0; 4px; 4px);
font-size: 12px;
background-color: #fff;
padding: 7px 10px;
border-bottom: 1px solid #eeeeee;
color: #444 !important;
@media (max-width: @screen-sm-max) {
background: #fff !important;
color: #444 !important;
}
text-align: center;
//Hover state
&:hover {
text-decoration: none;
font-weight: normal;
}
}
//Clear inner menu padding and margins
> .dropdown-menu > li .menu {
max-height: 200px;
margin: 0;
padding: 0;
list-style: none;
overflow-x: hidden;
> li > a {
display: block;
white-space: nowrap; /* Prevent text from breaking */
border-bottom: 1px solid #f4f4f4;
// Hove state
&:hover {
background: #f4f4f4;
text-decoration: none;
}
}
}
}
//Notifications menu
.navbar-nav > .notifications-menu {
> .dropdown-menu > li .menu {
// Links inside the menu
> li > a {
color: #444444;
overflow: hidden;
text-overflow: ellipsis;
padding: 10px;
// Icons inside the menu
> .glyphicon,
> .fa,
> .ion {
width: 20px;
}
}
}
}
//Messages menu
.navbar-nav > .messages-menu {
//Inner menu
> .dropdown-menu > li .menu {
// Messages menu item
> li > a {
margin: 0;
//line-height: 20px;
padding: 10px 10px;
// User image
> div > img {
margin: auto 10px auto auto;
width: 40px;
height: 40px;
}
// Message heading
> h4 {
padding: 0;
margin: 0 0 0 45px;
color: #444444;
font-size: 15px;
position: relative;
// Small for message time display
> small {
color: #999999;
font-size: 10px;
position: absolute;
top: 0;
right: 0;
}
}
> p {
margin: 0 0 0 45px;
font-size: 12px;
color: #888888;
}
.clearfix();
}
}
}
//Tasks menu
.navbar-nav > .tasks-menu {
> .dropdown-menu > li .menu {
> li > a {
padding: 10px;
> h3 {
font-size: 14px;
padding: 0;
margin: 0 0 10px 0;
color: #666666;
}
> .progress {
padding: 0;
margin: 0;
}
}
}
}
//User menu
.navbar-nav > .user-menu {
> .dropdown-menu {
.border-top-radius(0);
padding: 1px 0 0 0;
border-top-width: 0;
width: 280px;
&,
> .user-body {
.border-bottom-radius(4px);
}
// Header menu
> li.user-header {
height: 175px;
padding: 10px;
text-align: center;
// User image
> img {
z-index: 5;
height: 90px;
width: 90px;
border: 3px solid;
border-color: transparent;
border-color: rgba(255, 255, 255, 0.2);
}
> p {
z-index: 5;
color: #fff;
color: rgba(255, 255, 255, 0.8);
font-size: 17px;
//text-shadow: 2px 2px 3px #333333;
margin-top: 10px;
> small {
display: block;
font-size: 12px;
}
}
}
// Menu Body
> .user-body {
padding: 15px;
border-bottom: 1px solid #f4f4f4;
border-top: 1px solid #dddddd;
.clearfix();
a {
color: #444 !important;
@media (max-width: @screen-sm-max) {
background: #fff !important;
color: #444 !important;
}
}
}
// Menu Footer
> .user-footer {
background-color: #f9f9f9;
padding: 10px;
.clearfix();
.btn-default {
color: #666666;
&:hover {
@media (max-width: @screen-sm-max) {
background-color: #f9f9f9;
}
}
}
}
}
.user-image {
float: left;
width: 25px;
height: 25px;
border-radius: 50%;
margin-right: 10px;
margin-top: -2px;
@media (max-width: @screen-xs-max) {
float: none;
margin-right: 0;
margin-top: -8px;
line-height: 10px;
}
}
}
/* Add fade animation to dropdown menus by appending
the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/
.open:not(.dropup) > .animated-dropdown-menu {
backface-visibility: visible !important;
.animation(flipInX .7s both);
}
@keyframes flipInX {
0% {
transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
transition-timing-function: ease-in;
opacity: 0;
}
40% {
transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
transition-timing-function: ease-in;
}
60% {
transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
opacity: 1;
}
80% {
transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
}
100% {
transform: perspective(400px);
}
}
@-webkit-keyframes flipInX {
0% {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
-webkit-transition-timing-function: ease-in;
opacity: 0;
}
40% {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
-webkit-transition-timing-function: ease-in;
}
60% {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
opacity: 1;
}
80% {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
}
100% {
-webkit-transform: perspective(400px);
}
}
/* Fix dropdown menu in navbars */
.navbar-custom-menu > .navbar-nav {
> li {
position: relative;
> .dropdown-menu {
position: absolute;
right: 0;
left: auto;
}
}
}
@media (max-width: @screen-sm-max) {
.navbar-custom-menu > .navbar-nav {
float: right;
> li {
position: static;
> .dropdown-menu {
position: absolute;
right: 5%;
left: auto;
border: 1px solid #ddd;
background: #fff;
}
}
}
}

@ -1,96 +0,0 @@
/*
* Component: Form
* ---------------
*/
.form-control {
.border-radius(@input-radius);
box-shadow: none;
border-color: @gray;
&:focus {
border-color: @light-blue;
box-shadow: none;
}
&::-moz-placeholder,
&:-ms-input-placeholder,
&::-webkit-input-placeholder {
color: #bbb;
opacity: 1;
}
&:not(select) {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
}
.form-group {
&.has-success {
label {
color: @green;
}
.form-control {
border-color: @green;
box-shadow: none;
}
}
&.has-warning {
label {
color: @yellow;
}
.form-control {
border-color: @yellow;
box-shadow: none;
}
}
&.has-error {
label {
color: @red;
}
.form-control {
border-color: @red;
box-shadow: none;
}
}
}
/* Input group */
.input-group {
.input-group-addon {
.border-radius(@input-radius);
border-color: @gray;
background-color: #fff;
}
}
/* button groups */
.btn-group-vertical {
.btn {
&.btn-flat:first-of-type, &.btn-flat:last-of-type {
.border-radius(0);
}
}
}
.icheck > label {
padding-left: 0;
}
/* support Font Awesome icons in form-control */
.form-control-feedback.fa {
line-height: @input-height-base;
}
.input-lg + .form-control-feedback.fa,
.input-group-lg + .form-control-feedback.fa,
.form-group-lg .form-control + .form-control-feedback.fa {
line-height: @input-height-large;
}
.input-sm + .form-control-feedback.fa,
.input-group-sm + .form-control-feedback.fa,
.form-group-sm .form-control + .form-control-feedback.fa {
line-height: @input-height-small;
}

@ -1,100 +0,0 @@
/*
* Plugin: Full Calendar
* ---------------------
*/
//Fullcalendar buttons
.fc-button {
background: #f4f4f4;
background-image: none;
color: #444;
border-color: #ddd;
border-bottom-color: #ddd;
&:hover,
&:active,
&.hover {
background-color: #e9e9e9;
}
}
// Calendar title
.fc-header-title h2 {
font-size: 15px;
line-height: 1.6em;
color: #666;
margin-left: 10px;
}
.fc-header-right {
padding-right: 10px;
}
.fc-header-left {
padding-left: 10px;
}
// Calendar table header cells
.fc-widget-header {
background: #fafafa;
}
.fc-grid {
width: 100%;
border: 0;
}
.fc-widget-header:first-of-type,
.fc-widget-content:first-of-type {
border-left: 0;
border-right: 0;
}
.fc-widget-header:last-of-type,
.fc-widget-content:last-of-type {
border-right: 0;
}
.fc-toolbar {
padding: @box-padding;
margin: 0;
}
.fc-day-number {
font-size: 20px;
font-weight: 300;
padding-right: 10px;
}
.fc-color-picker {
list-style: none;
margin: 0;
padding: 0;
> li {
float: left;
font-size: 30px;
margin-right: 5px;
line-height: 30px;
.fa {
.transition-transform(linear .3s);
&:hover {
.rotate(30deg);
}
}
}
}
#add-new-event {
.transition(all linear .3s);
}
.external-event {
padding: 5px 10px;
font-weight: bold;
margin-bottom: 4px;
box-shadow: @box-boxshadow;
text-shadow: @box-boxshadow;
border-radius: @box-border-radius;
cursor: move;
&:hover {
box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2);
}
}

@ -1,248 +0,0 @@
/*
* Component: Main Header
* ----------------------
*/
.main-header {
position: relative;
max-height: 100px;
z-index: 1030;
//Navbar
> .navbar {
.transition(margin-left @transition-speed @transition-fn);
margin-bottom: 0;
margin-left: @sidebar-width;
border: none;
min-height: @navbar-height;
border-radius: 0;
.layout-top-nav & {
margin-left: 0;
}
}
//Navbar search text input
#navbar-search-input.form-control {
background: rgba(255, 255, 255, .2);
border-color: transparent;
&:focus,
&:active {
border-color: rgba(0, 0, 0, .1);
background: rgba(255, 255, 255, .9);
}
&::-moz-placeholder {
color: #ccc;
opacity: 1;
}
&:-ms-input-placeholder {
color: #ccc;
}
&::-webkit-input-placeholder {
color: #ccc;
}
}
//Navbar Right Menu
.navbar-custom-menu,
.navbar-right {
float: right;
@media (max-width: @screen-sm-max) {
a {
color: inherit;
background: transparent;
}
}
}
.navbar-right {
@media (max-width: @screen-header-collapse) {
float: none;
.navbar-collapse & {
margin: 7.5px -15px;
}
> li {
color: inherit;
border: 0;
}
}
}
//Navbar toggle button
.sidebar-toggle {
float: left;
background-color: transparent;
background-image: none;
padding: @navbar-padding-vertical @navbar-padding-horizontal;
//Add the fontawesome bars icon
font-family: fontAwesome;
&:before {
content: "\f0c9";
}
&:hover {
color: #fff;
}
&:focus,
&:active {
background: transparent;
}
}
.sidebar-toggle .icon-bar {
display: none;
}
//Navbar User Menu
.navbar .nav > li.user > a {
> .fa,
> .glyphicon,
> .ion {
margin-right: 5px;
}
}
//Labels in navbar
.navbar .nav > li > a > .label {
position: absolute;
top: 9px;
right: 7px;
text-align: center;
font-size: 9px;
padding: 2px 3px;
line-height: .9;
}
//Logo bar
.logo {
.transition(width @transition-speed @transition-fn);
display: block;
float: left;
height: @navbar-height;
font-size: 20px;
line-height: 50px;
text-align: center;
width: @sidebar-width;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
padding: 0 15px;
font-weight: 300;
overflow: hidden;
//Add support to sidebar mini by allowing the user to create
//2 logo designs. mini and lg
.logo-lg {
//should be visibile when sidebar isn't collapsed
display: block;
}
.logo-mini {
display: none;
}
}
//Navbar Brand. Alternative logo with layout-top-nav
.navbar-brand {
color: #fff;
}
}
// Content Header
.content-header {
position: relative;
padding: 15px 15px 0 15px;
// Header Text
> h1 {
margin: 0;
font-size: 24px;
> small {
font-size: 15px;
display: inline-block;
padding-left: 4px;
font-weight: 300;
}
}
> .breadcrumb {
float: right;
background: transparent;
margin-top: 0;
margin-bottom: 0;
font-size: 12px;
padding: 7px 5px;
position: absolute;
top: 15px;
right: 10px;
.border-radius(2px);
> li > a {
color: #444;
text-decoration: none;
display: inline-block;
> .fa, > .glyphicon, > .ion {
margin-right: 5px;
}
}
> li + li:before {
content: '>\00a0';
}
}
@media (max-width: @screen-sm-max) {
> .breadcrumb {
position: relative;
margin-top: 5px;
top: 0;
right: 0;
float: none;
background: @gray;
padding-left: 10px;
li:before {
color: darken(@gray, 20%);
}
}
}
}
.navbar-toggle {
color: #fff;
border: 0;
margin: 0;
padding: @navbar-padding-vertical @navbar-padding-horizontal;
}
//Control navbar scaffolding on x-small screens
@media (max-width: @screen-sm-max) {
.navbar-custom-menu .navbar-nav > li {
float: left;
}
//Dont't let links get full width
.navbar-custom-menu .navbar-nav {
margin: 0;
float: left;
}
.navbar-custom-menu .navbar-nav > li > a {
padding-top: 15px;
padding-bottom: 15px;
line-height: 20px;
}
}
// Collapse header
@media (max-width: @screen-header-collapse) {
.main-header {
position: relative;
.logo,
.navbar {
width: 100%;
float: none;
}
.navbar {
margin: 0;
}
.navbar-custom-menu {
float: right;
}
}
}
.navbar-collapse.pull-left {
@media (max-width: @screen-sm-max) {
float: none !important;
+ .navbar-custom-menu {
display: block;
position: absolute;
top: 0;
right: 40px;
}
}
}

@ -1,75 +0,0 @@
/*
* Component: Info Box
* -------------------
*/
.info-box {
display: block;
min-height: 90px;
background: #fff;
width: 100%;
box-shadow: @box-boxshadow;
.border-radius(2px);
margin-bottom: 15px;
small {
font-size: 14px;
}
.progress {
background: rgba(0, 0, 0, .2);
margin: 5px -10px 5px -10px;
height: 2px;
&,
& .progress-bar {
.border-radius(0);
}
.progress-bar {
background: #fff;
}
}
}
.info-box-icon {
.border-radius(2px; 0; 2px; 0);
display: block;
float: left;
height: 90px;
width: 90px;
text-align: center;
font-size: 45px;
line-height: 90px;
background: rgba(0, 0, 0, 0.2);
> img {
max-width: 100%;
}
}
.info-box-content {
padding: 5px 10px;
margin-left: 90px;
}
.info-box-number {
display: block;
font-weight: bold;
font-size: 18px;
}
.progress-description,
.info-box-text {
display: block;
font-size: 14px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.info-box-text {
text-transform: uppercase;
}
.info-box-more {
display: block;
}
.progress-description {
margin: 0;
}

@ -1,16 +0,0 @@
/*
* Page: Invoice
* -------------
*/
.invoice {
position: relative;
background: #fff;
border: 1px solid #f4f4f4;
padding: 20px;
margin: 10px 25px;
}
.invoice-title {
margin-top: 0;
}

@ -1,28 +0,0 @@
/*
* Component: Label
* ----------------
*/
.label-default {
background-color: @gray;
color: #444;
}
.label-danger {
&:extend(.bg-red);
}
.label-info {
&:extend(.bg-aqua);
}
.label-warning {
&:extend(.bg-yellow);
}
.label-primary {
&:extend(.bg-light-blue);
}
.label-success {
&:extend(.bg-green);
}

@ -1,73 +0,0 @@
/*
* Page: Lock Screen
* -----------------
*/
/* ADD THIS CLASS TO THE <BODY> TAG */
.lockscreen {
background: @gray;
}
.lockscreen-logo {
font-size: 35px;
text-align: center;
margin-bottom: 25px;
font-weight: 300;
a {
color: #444;
}
}
.lockscreen-wrapper {
max-width: 400px;
margin: 0 auto;
margin-top: 10%;
}
/* User name [optional] */
.lockscreen .lockscreen-name {
text-align: center;
font-weight: 600;
}
/* Will contain the image and the sign in form */
.lockscreen-item {
.border-radius(4px);
padding: 0;
background: #fff;
position: relative;
margin: 10px auto 30px auto;
width: 290px;
}
/* User image */
.lockscreen-image {
.border-radius(50%);
position: absolute;
left: -10px;
top: -25px;
background: #fff;
padding: 5px;
z-index: 10;
> img {
.border-radius(50%);
width: 70px;
height: 70px;
}
}
/* Contains the password input and the login button */
.lockscreen-credentials {
margin-left: 70px;
.form-control {
border: 0;
}
.btn {
background-color: #fff;
border: 0;
padding: 0 10px;
}
}
.lockscreen-footer {
margin-top: 10px;
}

@ -1,52 +0,0 @@
/*
* Page: Login & Register
* ----------------------
*/
.login-logo,
.register-logo {
font-size: 35px;
text-align: center;
margin-bottom: 25px;
font-weight: 300;
a {
color: #444;
}
}
.login-page,
.register-page {
background: @gray;
}
.login-box,
.register-box {
width: 360px;
margin: 7% auto;
@media (max-width: @screen-sm) {
width: 90%;
margin-top: 20px;
}
}
.login-box-body,
.register-box-body {
background: #fff;
padding: 20px;
border-top: 0;
color: #666;
.form-control-feedback {
color: #777;
}
}
.login-box-msg,
.register-box-msg {
margin: 0;
text-align: center;
padding: 0 20px 20px 20px;
}
.social-auth-links {
margin: 10px 0;
}

@ -1,88 +0,0 @@
/*
* Page: Mailbox
* -------------
*/
.mailbox-messages {
> .table {
margin: 0;
}
}
.mailbox-controls {
padding: 5px;
&.with-border {
border-bottom: 1px solid @box-border-color;
}
}
.mailbox-read-info {
border-bottom: 1px solid @box-border-color;
padding: 10px;
h3 {
font-size: 20px;
margin: 0;
}
h5 {
margin: 0;
padding: 5px 0 0 0;
}
}
.mailbox-read-time {
color: #999;
font-size: 13px;
}
.mailbox-read-message {
padding: 10px;
}
.mailbox-attachments {
&:extend(.list-unstyled);
li {
float: left;
width: 200px;
border: 1px solid #eee;
margin-bottom: 10px;
margin-right: 10px;
}
}
.mailbox-attachment-name {
font-weight: bold;
color: #666;
}
.mailbox-attachment-icon,
.mailbox-attachment-info,
.mailbox-attachment-size {
display: block;
}
.mailbox-attachment-info {
padding: 10px;
background: #f4f4f4;
}
.mailbox-attachment-size {
color: #999;
font-size: 12px;
}
.mailbox-attachment-icon {
text-align: center;
font-size: 65px;
color: #666;
padding: 20px 10px;
&.has-img {
padding: 0;
> img {
max-width: 100%;
height: auto;
}
}
}
.mailbox-attachment-close {
&:extend(.close);
}

@ -1,606 +0,0 @@
/*
* General: Miscellaneous
* ----------------------
*/
// 10px padding and margins
.pad {
padding: 10px;
}
.margin {
margin: 10px;
}
.margin-bottom {
margin-bottom: 20px;
}
.margin-bottom-none {
margin-bottom: 0;
}
.margin-r-5 {
margin-right: 5px;
}
// Display inline
.inline {
display: inline;
}
// Description Blocks
.description-block {
display: block;
margin: 10px 0;
text-align: center;
&.margin-bottom {
margin-bottom: 25px;
}
> .description-header {
margin: 0;
padding: 0;
font-weight: 600;
font-size: 16px;
}
> .description-text {
text-transform: uppercase;
}
}
// Background colors
.bg-red,
.bg-yellow,
.bg-aqua,
.bg-blue,
.bg-light-blue,
.bg-green,
.bg-navy,
.bg-teal,
.bg-olive,
.bg-lime,
.bg-orange,
.bg-fuchsia,
.bg-purple,
.bg-maroon,
.bg-black,
.bg-red-active,
.bg-yellow-active,
.bg-aqua-active,
.bg-blue-active,
.bg-light-blue-active,
.bg-green-active,
.bg-navy-active,
.bg-teal-active,
.bg-olive-active,
.bg-lime-active,
.bg-orange-active,
.bg-fuchsia-active,
.bg-purple-active,
.bg-maroon-active,
.bg-black-active {
color: #fff !important;
}
.bg-gray {
color: #000;
background-color: @gray !important;
}
.bg-gray-light {
background-color: #f7f7f7;
}
.bg-black {
background-color: @black !important;
}
.bg-red {
background-color: @red !important;
}
.bg-yellow {
background-color: @yellow !important;
}
.bg-aqua {
background-color: @aqua !important;
}
.bg-blue {
background-color: @blue !important;
}
.bg-light-blue {
background-color: @light-blue !important;
}
.bg-green {
background-color: @green !important;
}
.bg-navy {
background-color: @navy !important;
}
.bg-teal {
background-color: @teal !important;
}
.bg-olive {
background-color: @olive !important;
}
.bg-lime {
background-color: @lime !important;
}
.bg-orange {
background-color: @orange !important;
}
.bg-fuchsia {
background-color: @fuchsia !important;
}
.bg-purple {
background-color: @purple !important;
}
.bg-maroon {
background-color: @maroon !important;
}
//Set of Active Background Colors
.bg-gray-active {
color: #000;
background-color: darken(@gray, 10%) !important;
}
.bg-black-active {
background-color: darken(@black, 10%) !important;
}
.bg-red-active {
background-color: darken(@red , 6%) !important;
}
.bg-yellow-active {
background-color: darken(@yellow , 6%) !important;
}
.bg-aqua-active {
background-color: darken(@aqua , 6%) !important;
}
.bg-blue-active {
background-color: darken(@blue , 10%) !important;
}
.bg-light-blue-active {
background-color: darken(@light-blue , 6%) !important;
}
.bg-green-active {
background-color: darken(@green , 5%) !important;
}
.bg-navy-active {
background-color: darken(@navy , 2%) !important;
}
.bg-teal-active {
background-color: darken(@teal , 5%) !important;
}
.bg-olive-active {
background-color: darken(@olive , 5%) !important;
}
.bg-lime-active {
background-color: darken(@lime , 5%) !important;
}
.bg-orange-active {
background-color: darken(@orange , 5%) !important;
}
.bg-fuchsia-active {
background-color: darken(@fuchsia , 5%) !important;
}
.bg-purple-active {
background-color: darken(@purple , 5%) !important;
}
.bg-maroon-active {
background-color: darken(@maroon , 3%) !important;
}
//Disabled!
[class^="bg-"].disabled {
.opacity(.65);
}
// Text colors
.text-red {
color: @red !important;
}
.text-yellow {
color: @yellow !important;
}
.text-aqua {
color: @aqua !important;
}
.text-blue {
color: @blue !important;
}
.text-black {
color: @black !important;
}
.text-light-blue {
color: @light-blue !important;
}
.text-green {
color: @green !important;
}
.text-gray {
color: @gray !important;
}
.text-navy {
color: @navy !important;
}
.text-teal {
color: @teal !important;
}
.text-olive {
color: @olive !important;
}
.text-lime {
color: @lime !important;
}
.text-orange {
color: @orange !important;
}
.text-fuchsia {
color: @fuchsia !important;
}
.text-purple {
color: @purple !important;
}
.text-maroon {
color: @maroon !important;
}
.link-muted {
color: darken(@gray, 30%);
&:hover,
&:focus {
color: darken(@gray, 40%);
}
}
.link-black {
color: #666;
&:hover,
&:focus {
color: #999;
}
}
// Hide elements by display none only
.hide {
display: none !important;
}
// Remove borders
.no-border {
border: 0 !important;
}
// Remove padding
.no-padding {
padding: 0 !important;
}
// Remove margins
.no-margin {
margin: 0 !important;
}
// Remove box shadow
.no-shadow {
box-shadow: none !important;
}
// Unstyled List
.list-unstyled {
list-style: none;
margin: 0;
padding: 0;
}
.list-group-unbordered {
> .list-group-item {
border-left: 0;
border-right: 0;
border-radius: 0;
padding-left: 0;
padding-right: 0;
}
}
// Remove border radius
.flat {
.border-radius(0) !important;
}
.text-bold {
&, &.table td, &.table th {
font-weight: 700;
}
}
.text-sm {
font-size: 12px;
}
// _fix for sparkline tooltip
.jqstooltip {
padding: 5px !important;
width: auto !important;
height: auto !important;
}
// Gradient Background colors
.bg-teal-gradient {
.gradient(@teal; @teal; lighten(@teal, 16%)) !important;
color: #fff;
}
.bg-light-blue-gradient {
.gradient(@light-blue; @light-blue; lighten(@light-blue, 12%)) !important;
color: #fff;
}
.bg-blue-gradient {
.gradient(@blue; @blue; lighten(@blue, 7%)) !important;
color: #fff;
}
.bg-aqua-gradient {
.gradient(@aqua; @aqua; lighten(@aqua, 7%)) !important;
color: #fff;
}
.bg-yellow-gradient {
.gradient(@yellow; @yellow; lighten(@yellow, 16%)) !important;
color: #fff;
}
.bg-purple-gradient {
.gradient(@purple; @purple; lighten(@purple, 16%)) !important;
color: #fff;
}
.bg-green-gradient {
.gradient(@green; @green; lighten(@green, 7%)) !important;
color: #fff;
}
.bg-red-gradient {
.gradient(@red; @red; lighten(@red, 10%)) !important;
color: #fff;
}
.bg-black-gradient {
.gradient(@black; @black; lighten(@black, 10%)) !important;
color: #fff;
}
.bg-maroon-gradient {
.gradient(@maroon; @maroon; lighten(@maroon, 10%)) !important;
color: #fff;
}
//Description Block Extension
.description-block {
.description-icon {
font-size: 16px;
}
}
//Remove top padding
.no-pad-top {
padding-top: 0;
}
//Make position static
.position-static {
position: static !important;
}
//List utility classes
.list-header {
font-size: 15px;
padding: 10px 4px;
font-weight: bold;
color: #666;
}
.list-seperator {
height: 1px;
background: @box-border-color;
margin: 15px 0 9px 0;
}
.list-link {
> a {
padding: 4px;
color: #777;
&:hover {
color: #222;
}
}
}
//Light font weight
.font-light {
font-weight: 300;
}
//User block
.user-block {
.clearfix();
img {
width: 40px;
height: 40px;
float: left;
}
.username,
.description,
.comment {
display: block;
margin-left: 50px;
}
.username {
font-size: 16px;
font-weight: 600;
}
.description {
color: #999;
font-size: 13px;
}
&.user-block-sm {
img {
&:extend(.img-sm);
}
.username,
.description,
.comment {
margin-left: 40px;
}
.username {
font-size: 14px;
}
}
}
//Image sizes
.img-sm,
.img-md,
.img-lg {
float: left;
}
.img-sm {
width: 30px !important;
height: 30px !important;
+ .img-push {
margin-left: 40px;
}
}
.img-md {
width: 60px;
height: 60px;
+ .img-push {
margin-left: 70px;
}
}
.img-lg {
width: 100px;
height: 100px;
+ .img-push {
margin-left: 110px;
}
}
// Image bordered
.img-bordered {
border: 3px solid @gray;
padding: 3px;
}
.img-bordered-sm {
border: 2px solid @gray;
padding: 2px;
}
//General attachemnt block
.attachment-block {
border: 1px solid @box-border-color;
padding: 5px;
margin-bottom: 10px;
background: #f7f7f7;
.attachment-img {
max-width: 100px;
max-height: 100px;
height: auto;
float: left;
}
.attachment-pushed {
margin-left: 110px;
}
.attachment-heading {
margin: 0;
}
.attachment-text {
color: #555;
}
}
.connectedSortable {
min-height: 100px;
}
.ui-helper-hidden-accessible {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
.sort-highlight {
background: #f4f4f4;
border: 1px dashed #ddd;
margin-bottom: 10px;
}
.full-opacity-hover {
.opacity(.65);
&:hover {
.opacity(1);
}
}
// Charts
.chart {
position: relative;
overflow: hidden;
width: 100%;
svg,
canvas {
width: 100% !important;
}
}

@ -1,313 +0,0 @@
//AdminLTE mixins
//===============
//Changes the color and the hovering properties of the navbar
.navbar-variant(@color; @font-color: rgba(255, 255, 255, 0.8); @hover-color: #f6f6f6; @hover-bg: rgba(0, 0, 0, 0.1)) {
background-color: @color;
//Navbar links
.nav > li > a {
color: @font-color;
}
.nav > li > a:hover,
.nav > li > a:active,
.nav > li > a:focus,
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus,
.nav > .active > a {
background: @hover-bg;
color: @hover-color;
}
//Add color to the sidebar toggle button
.sidebar-toggle {
color: @font-color;
&:hover {
color: @hover-color;
background: @hover-bg;
}
}
}
//Logo color variation
.logo-variant(@bg-color; @color: #fff; @border-bottom-color: transparent; @border-bottom-width: 0) {
background-color: @bg-color;
color: @color;
border-bottom: @border-bottom-width solid @border-bottom-color;
&:hover {
background-color: darken(@bg-color, 1%);
}
}
//Box solid color variantion creator
.box-solid-variant(@color; @text-color: #fff) {
border: 1px solid @color;
> .box-header {
color: @text-color;
background: @color;
background-color: @color;
a,
.btn {
color: @text-color;
}
}
}
//Direct Chat Variant
.direct-chat-variant(@bg-color; @color: #fff) {
.right > .direct-chat-text {
background: @bg-color;
border-color: @bg-color;
color: @color;
&:after,
&:before {
border-left-color: @bg-color;
}
}
}
//border radius creator
.border-radius(@radius) {
border-radius: @radius;
}
//Different radius each side
.border-radius(@top-left;
@top-right
;
@bottom-left
;
@bottom-right
)
{
border-top-left-radius: @top-left
;
border-top-right-radius: @top-right
;
border-bottom-right-radius: @bottom-right
;
border-bottom-left-radius: @bottom-left
;
}
//Gradient background
.gradient(@color: #F5F5F5, @start: #EEE, @stop: #FFF) {
background: @color;
background: -webkit-gradient(linear,
left bottom,
left top,
color-stop(0, @start),
color-stop(1, @stop));
background: -ms-linear-gradient(bottom,
@start,
@stop);
background: -moz-linear-gradient(center bottom,
@start 0%,
@stop 100%);
background: -o-linear-gradient(@stop,
@start);
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@stop,@start));
}
//Added 2.1.0
//Skins Mixins
//Dark Sidebar Mixin
.skin-dark-sidebar(@link-hover-border-color) {
// Sidebar background color (Both .wrapper and .left-side are responsible for sidebar bg color)
.wrapper,
.main-sidebar,
.left-side {
background-color: @sidebar-dark-bg;
}
//User Panel (resides in the sidebar)
.user-panel {
> .info, > .info > a {
color: #fff;
}
}
//Sidebar Menu. First level links
.sidebar-menu > li {
//Section Headning
&.header {
color: lighten(@sidebar-dark-bg, 20%);
background: darken(@sidebar-dark-bg, 4%);
}
//links
> a {
border-left: 3px solid transparent;
}
//Hover and active states
&:hover > a, &.active > a {
color: @sidebar-dark-hover-color;
background: @sidebar-dark-hover-bg;
border-left-color: @link-hover-border-color;
}
//First Level Submenu
> .treeview-menu {
margin: 0 1px;
background: @sidebar-dark-submenu-bg;
}
}
//All links within the sidebar menu
.sidebar a {
color: @sidebar-dark-color;
&:hover {
text-decoration: none;
}
}
//All submenus
.treeview-menu {
> li {
> a {
color: @sidebar-dark-submenu-color;
}
&.active > a, > a:hover {
color: @sidebar-dark-submenu-hover-color;
}
}
}
//The sidebar search form
.sidebar-form {
.border-radius(3px);
border: 1px solid lighten(@sidebar-dark-bg, 10%);
margin: 10px 10px;
input[type="text"], .btn {
box-shadow: none;
background-color: lighten(@sidebar-dark-bg, 10%);
border: 1px solid transparent;
height: 35px;
.transition(all @transition-speed @transition-fn);
}
input[type="text"] {
color: #666;
.border-radius(2px, 0, 2px, 0);
&:focus, &:focus + .input-group-btn .btn {
background-color: #fff;
color: #666;
}
&:focus + .input-group-btn .btn {
border-left-color: #fff;
}
}
.btn {
color: #999;
.border-radius(0, 2px, 0, 2px);
}
}
}
//Light Sidebar Mixin
.skin-light-sidebar(@icon-active-color) {
// Sidebar background color (Both .wrapper and .left-side are responsible for sidebar bg color)
.wrapper,
.main-sidebar,
.left-side {
background-color: @sidebar-light-bg;
}
.content-wrapper,
.main-footer {
border-left: 1px solid @gray;
}
//User Panel (resides in the sidebar)
.user-panel {
> .info, > .info > a {
color: @sidebar-light-color;
}
}
//Sidebar Menu. First level links
.sidebar-menu > li {
.transition(border-left-color .3s ease);
//border-left: 3px solid transparent;
//Section Headning
&.header {
color: lighten(@sidebar-light-color, 25%);
background: @sidebar-light-bg;
}
//links
> a {
border-left: 3px solid transparent;
font-weight: 600;
}
//Hover and active states
&:hover > a,
&.active > a {
color: @sidebar-light-hover-color;
background: @sidebar-light-hover-bg;
}
&:hover > a {
}
&.active {
border-left-color: @icon-active-color;
> a {
font-weight: 600;
}
}
//First Level Submenu
> .treeview-menu {
background: @sidebar-light-submenu-bg;
}
}
//All links within the sidebar menu
.sidebar a {
color: @sidebar-light-color;
&:hover {
text-decoration: none;
}
}
//All submenus
.treeview-menu {
> li {
> a {
color: @sidebar-light-submenu-color;
}
&.active > a,
> a:hover {
color: @sidebar-light-submenu-hover-color;
}
&.active > a {
font-weight: 600;
}
}
}
//The sidebar search form
.sidebar-form {
.border-radius(3px);
border: 1px solid @gray; //darken(@sidebar-light-bg, 5%);
margin: 10px 10px;
input[type="text"],
.btn {
box-shadow: none;
background-color: #fff; //darken(@sidebar-light-bg, 3%);
border: 1px solid transparent;
height: 35px;
.transition(all @transition-speed @transition-fn);
}
input[type="text"] {
color: #666;
.border-radius(2px, 0, 2px, 0);
&:focus,
&:focus + .input-group-btn .btn {
background-color: #fff;
color: #666;
}
&:focus + .input-group-btn .btn {
border-left-color: #fff;
}
}
.btn {
color: #999;
.border-radius(0, 2px, 0, 2px);
}
}
@media (min-width: @screen-sm-min) {
&.sidebar-mini.sidebar-collapse {
.sidebar-menu > li > .treeview-menu {
border-left: 1px solid @gray;
}
}
}
}

@ -1,80 +0,0 @@
/*
* Component: modal
* ----------------
*/
.modal {
background: rgba(0, 0, 0, .3);
}
.modal-content {
.border-radius(0);
.box-shadow(0 2px 3px rgba(0, 0, 0, .125));
border: 0;
@media (min-width: @screen-sm-min) {
.box-shadow(0 2px 3px rgba(0, 0, 0, .125));
}
}
.modal-header {
border-bottom-color: @box-border-color;
}
.modal-footer {
border-top-color: @box-border-color;
}
//Modal variants
.modal-primary {
.modal-body {
&:extend(.bg-light-blue);
}
.modal-header,
.modal-footer {
&:extend(.bg-light-blue-active);
border-color: darken(@light-blue, 10%);
}
}
.modal-warning {
.modal-body {
&:extend(.bg-yellow);
}
.modal-header,
.modal-footer {
&:extend(.bg-yellow-active);
border-color: darken(@yellow, 10%);
}
}
.modal-info {
.modal-body {
&:extend(.bg-aqua);
}
.modal-header,
.modal-footer {
&:extend(.bg-aqua-active);
border-color: darken(@aqua, 10%);
}
}
.modal-success {
.modal-body {
&:extend(.bg-green);
}
.modal-header,
.modal-footer {
&:extend(.bg-green-active);
border-color: darken(@green, 10%);
}
}
.modal-danger {
.modal-body {
&:extend(.bg-red);
}
.modal-header,
.modal-footer {
&:extend(.bg-red-active);
border-color: darken(@red, 10%);
}
}

@ -1,226 +0,0 @@
/*
* Component: Nav
* --------------
*/
.nav {
> li > a:hover,
> li > a:active,
> li > a:focus {
color: #444;
background: #f7f7f7;
}
}
/* NAV PILLS */
.nav-pills {
> li > a {
.border-radius(0);
border-top: 3px solid transparent;
color: #444;
> .fa,
> .glyphicon,
> .ion {
margin-right: 5px;
}
}
> li.active > a,
> li.active > a:hover,
> li.active > a:focus {
border-top-color: @light-blue;
}
> li.active > a {
font-weight: 600;
}
}
/* NAV STACKED */
.nav-stacked {
> li > a {
.border-radius(0);
border-top: 0;
border-left: 3px solid transparent;
color: #444;
}
> li.active > a,
> li.active > a:hover {
background: transparent;
color: #444;
border-top: 0;
border-left-color: @light-blue;
}
> li.header {
border-bottom: 1px solid #ddd;
color: #777;
margin-bottom: 10px;
padding: 5px 10px;
text-transform: uppercase;
}
}
/* NAV TABS */
.nav-tabs-custom {
margin-bottom: 20px;
background: #fff;
box-shadow: @box-boxshadow;
border-radius: @box-border-radius;
> .nav-tabs {
margin: 0;
border-bottom-color: #f4f4f4;
.border-top-radius(@box-border-radius);
> li {
border-top: 3px solid transparent;
margin-bottom: -2px;
> a {
color: #444;
.border-radius(0);
&.text-muted {
color: #999;
}
&,
&:hover {
background: transparent;
margin: 0;
}
&:hover {
color: #999;
}
}
&:not(.active) {
> a:hover,
> a:focus,
> a:active {
border-color: transparent;
}
}
margin-right: 5px;
}
> li.active {
border-top-color: @light-blue;
& > a,
&:hover > a {
background-color: #fff;
color: #444;
}
> a {
border-top-color: transparent;
border-left-color: #f4f4f4;
border-right-color: #f4f4f4;
}
}
> li:first-of-type {
margin-left: 0;
&.active {
> a {
border-left-color: transparent;
}
}
}
//Pulled to the right
&.pull-right {
float: none !important;
> li {
float: right;
}
> li:first-of-type {
margin-right: 0;
> a {
border-left-width: 1px;
}
&.active {
> a {
border-left-color: #f4f4f4;
border-right-color: transparent;
}
}
}
}
> li.header {
line-height: 35px;
padding: 0 10px;
font-size: 20px;
color: #444;
> .fa,
> .glyphicon,
> .ion {
margin-right: 5px;
}
}
}
> .tab-content {
background: #fff;
padding: 10px;
.border-bottom-radius(@box-border-radius);
}
.dropdown.open > a {
&:active,
&:focus {
background: transparent;
color: #999;
}
}
// Tab color variations
&.tab-primary {
> .nav-tabs {
> li.active {
border-top-color: @light-blue;
}
}
}
&.tab-info {
> .nav-tabs {
> li.active {
border-top-color: @aqua;
}
}
}
&.tab-danger {
> .nav-tabs {
> li.active {
border-top-color: @red;
}
}
}
&.tab-warning {
> .nav-tabs {
> li.active {
border-top-color: @yellow;
}
}
}
&.tab-success {
> .nav-tabs {
> li.active {
border-top-color: @green;
}
}
}
&.tab-default {
> .nav-tabs {
> li.active {
border-top-color: @gray;
}
}
}
}
/* PAGINATION */
.pagination {
> li > a {
background: #fafafa;
color: #666;
}
&.pagination-flat {
> li > a {
.border-radius(0) !important;
}
}
}

@ -1,54 +0,0 @@
/*
* Misc: print
* -----------
*/
@media print {
//Add to elements that you do not want to show when printing
.no-print {
display: none !important;
}
//Elements that we want to hide when printing
.main-sidebar,
.left-side,
.main-header,
.content-header {
&:extend(.no-print);
}
//This is the only element that should appear, so let's remove the margins
.content-wrapper,
.right-side,
.main-footer {
margin-left: 0 !important;
min-height: 0 !important;
.translate(0, 0) !important;
}
.fixed .content-wrapper,
.fixed .right-side {
padding-top: 0 !important;
}
//Invoice printing
.invoice {
width: 100%;
border: 0;
margin: 0;
padding: 0;
}
.invoice-col {
float: left;
width: 33.3333333%;
}
//Make sure table content displays properly
.table-responsive {
overflow: auto;
> .table tr th,
> .table tr td {
white-space: normal !important;
}
}
}

@ -1,45 +0,0 @@
/*
* Component: Products List
* ------------------------
*/
.products-list {
list-style: none;
margin: 0;
padding: 0;
> .item {
.border-radius(@box-border-radius);
.box-shadow(@box-boxshadow);
.clearfix();
padding: 10px 0;
background: #fff;
}
.product-img {
float: left;
img {
width: 50px;
height: 50px;
}
}
.product-info {
margin-left: 60px;
}
.product-title {
font-weight: 600;
}
.product-description {
display: block;
color: #999;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.product-list-in-box > .item {
.box-shadow(none);
.border-radius(0);
border-bottom: 1px solid @box-border-color;
&:last-of-type {
border-bottom-width: 0;
}
}

@ -1,31 +0,0 @@
/*
* Page: Profile
* -------------
*/
.profile-user-img {
margin: 0 auto;
width: 100px;
padding: 3px;
border: 3px solid @gray;
}
.profile-username {
font-size: 21px;
margin-top: 5px;
}
.post {
border-bottom: 1px solid @gray;
margin-bottom: 15px;
padding-bottom: 15px;
color: #666;
&:last-of-type {
border-bottom: 0;
margin-bottom: 0;
padding-bottom: 0;
}
.user-block {
margin-bottom: 15px;
}
}

@ -1,111 +0,0 @@
/*
* Component: Progress Bar
* -----------------------
*/
//General CSS
.progress,
.progress > .progress-bar {
.box-shadow(none);
&, .progress-bar {
.border-radius(@progress-bar-border-radius);
}
}
/* size variation */
.progress.sm,
.progress-sm {
height: 10px;
&, .progress-bar {
.border-radius(@progress-bar-sm-border-radius);
}
}
.progress.xs,
.progress-xs {
height: 7px;
&, .progress-bar {
.border-radius(@progress-bar-xs-border-radius);
}
}
.progress.xxs,
.progress-xxs {
height: 3px;
&, .progress-bar {
.border-radius(@progress-bar-xs-border-radius);
}
}
/* Vertical bars */
.progress.vertical {
position: relative;
width: 30px;
height: 200px;
display: inline-block;
margin-right: 10px;
> .progress-bar {
width: 100%;
position: absolute;
bottom: 0;
}
//Sizes
&.sm,
&.progress-sm {
width: 20px;
}
&.xs,
&.progress-xs {
width: 10px;
}
&.xxs,
&.progress-xxs {
width: 3px;
}
}
//Progress Groups
.progress-group {
.progress-text {
font-weight: 600;
}
.progress-number {
float: right;
}
}
/* Remove margins from progress bars when put in a table */
.table {
tr > td .progress {
margin: 0;
}
}
// Variations
// -------------------------
.progress-bar-light-blue,
.progress-bar-primary {
.progress-bar-variant(@light-blue);
}
.progress-bar-green,
.progress-bar-success {
.progress-bar-variant(@green);
}
.progress-bar-aqua,
.progress-bar-info {
.progress-bar-variant(@aqua);
}
.progress-bar-yellow,
.progress-bar-warning {
.progress-bar-variant(@yellow);
}
.progress-bar-red,
.progress-bar-danger {
.progress-bar-variant(@red);
}

@ -1,117 +0,0 @@
/*
* Plugin: Select2
* ---------------
*/
//Signle select
.select2-container--default,
.select2-selection {
&.select2-container--focus,
&:focus,
&:active {
outline: none;
}
.select2-selection--single {
border: 1px solid @gray;
border-radius: @input-radius;
padding: 6px 12px;
height: 34px;
}
}
.select2-container--default.select2-container--open {
border-color: @light-blue;
}
.select2-dropdown {
border: 1px solid @gray;
border-radius: @input-radius;
}
.select2-container--default .select2-results__option--highlighted[aria-selected] {
background-color: @light-blue;
color: white;
}
.select2-results__option {
padding: 6px 12px;
user-select: none;
-webkit-user-select: none;
}
.select2-container .select2-selection--single .select2-selection__rendered {
padding-left: 0;
padding-right: 0;
height: auto;
margin-top: -4px;
}
.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
padding-right: 6px;
padding-left: 20px;
}
.select2-container--default .select2-selection--single .select2-selection__arrow {
height: 28px;
right: 3px;
}
.select2-container--default .select2-selection--single .select2-selection__arrow b {
margin-top: 0;
}
.select2-dropdown,
.select2-search--inline {
.select2-search__field {
border: 1px solid @gray;
&:focus {
outline: none;
border: 1px solid @light-blue;
}
}
}
.select2-container--default .select2-results__option[aria-disabled=true] {
color: #999;
}
.select2-container--default .select2-results__option[aria-selected=true] {
background-color: #ddd;
&,
&:hover {
color: #444;
}
}
//Multiple select
.select2-container--default {
.select2-selection--multiple {
border: 1px solid @gray;
border-radius: @input-radius;
&:focus {
border-color: @light-blue;
}
}
&.select2-container--focus .select2-selection--multiple {
border-color: @gray;
}
}
.select2-container--default .select2-selection--multiple .select2-selection__choice {
background-color: @light-blue;
border-color: darken(@light-blue, 5%);
padding: 1px 10px;
color: #fff;
}
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
margin-right: 5px;
color: rgba(255, 255, 255, .7);
&:hover {
color: #fff;
}
}
.select2-container .select2-selection--single .select2-selection__rendered {
padding-right: 10px;
}

@ -1,141 +0,0 @@
/*
* Component: Sidebar Mini
*/
//Add sidebar-mini class to the body tag to activate this feature
.sidebar-mini {
//Sidebar mini should work only on devices larger than @screen-sm
@media (min-width: @screen-sm) {
//When the sidebar is collapsed...
&.sidebar-collapse {
//Apply the new margining to the main content and footer
.content-wrapper,
.right-side,
.main-footer {
margin-left: 50px !important;
z-index: 840;
}
//Modify the sidebar to shrink instead of disappearing
.main-sidebar {
//Don't go away! Just shrink
.translate(0, 0);
width: 50px !important;
z-index: 850;
}
.sidebar-menu {
> li {
position: relative;
> a {
margin-right: 0;
}
> a > span {
border-top-right-radius: 4px;
}
&:not(.treeview) {
> a > span {
border-bottom-right-radius: 4px;
}
}
> .treeview-menu {
//Add some padding to the treeview menu
padding-top: 5px;
padding-bottom: 5px;
border-bottom-right-radius: 4px;
}
//Show menu items on hover
&:hover {
> a {
//overflow: visible;
}
> a > span:not(.pull-right),
> .treeview-menu {
display: block !important;
position: absolute;
width: @sidebar-width - 50;
left: 50px;
}
//position the header & treeview menus
> a > span {
top: 0;
margin-left: -3px;
padding: 12px 5px 12px 20px;
background-color: inherit;
}
> .treeview-menu {
top: 44px;
margin-left: 0;
}
}
}
}
//Make the sidebar links, menus, labels, badges
//and angle icons disappear
.main-sidebar .user-panel > .info,
.sidebar-form,
.sidebar-menu > li > a > span,
.sidebar-menu > li > .treeview-menu,
.sidebar-menu > li > a > .pull-right,
.sidebar-menu li.header {
display: none !important;
-webkit-transform: translateZ(0);
}
.main-header {
//Let's make the logo also shrink and the mini logo to appear
.logo {
width: 50px;
> .logo-mini {
display: block;
margin-left: -15px;
margin-right: -15px;
font-size: 18px;
}
> .logo-lg {
display: none;
}
}
//Since the logo got smaller, we need to fix the navbar's position
.navbar {
margin-left: 50px;
}
}
}
}
}
//A fix for text overflow while transitioning from sidebar mini to full sidebar
.sidebar-menu,
.main-sidebar .user-panel,
.sidebar-menu > li.header {
white-space: nowrap;
overflow: hidden;
}
.sidebar-menu:hover {
overflow: visible;
}
.sidebar-form,
.sidebar-menu > li.header {
overflow: hidden;
text-overflow: clip;
}
.sidebar-menu li > a {
position: relative;
> .pull-right {
position: absolute;
right: 10px;
top: 50%;
margin-top: -7px;
}
}

@ -1,158 +0,0 @@
/*
* Component: Sidebar
* ------------------
*/
//Main Sidebar
// ``` .left-side has been deprecated as of 2.0.0 in favor of .main-sidebar ```
.main-sidebar,
.left-side {
position: absolute;
top: 0;
left: 0;
padding-top: 50px;
min-height: 100%;
width: @sidebar-width;
z-index: 810;
//Using disposable variable to join statements with a comma
@transition-rule: @transition-speed @transition-fn,
width @transition-speed @transition-fn;
.transition-transform(@transition-rule);
@media (max-width: @screen-header-collapse) {
padding-top: 100px;
}
@media (max-width: @screen-xs-max) {
.translate(-@sidebar-width, 0);
}
.sidebar-collapse & {
@media (min-width: @screen-sm) {
.translate(-@sidebar-width, 0);
}
}
.sidebar-open & {
@media (max-width: @screen-xs-max) {
.translate(0, 0);
}
}
}
.sidebar {
padding-bottom: 10px;
}
// remove border from form
.sidebar-form {
input:focus {
border-color: transparent;
}
}
//Sidebar user panel
.user-panel {
position: relative;
width: 100%;
padding: 10px;
overflow: hidden;
.clearfix();
> .image > img {
width: 100%;
max-width: 45px;
height: auto;
}
> .info {
padding: 5px 5px 5px 15px;
line-height: 1;
position: absolute;
left: 55px;
> p {
font-weight: 600;
margin-bottom: 9px;
}
> a {
text-decoration: none;
padding-right: 5px;
margin-top: 3px;
font-size: 11px;
> .fa,
> .ion,
> .glyphicon {
margin-right: 3px;
}
}
}
}
// Sidebar menu
.sidebar-menu {
list-style: none;
margin: 0;
padding: 0;
//First Level
> li {
position: relative;
margin: 0;
padding: 0;
> a {
padding: 12px 5px 12px 15px;
display: block;
> .fa,
> .glyphicon,
> .ion {
width: 20px;
}
}
.label,
.badge {
margin-top: 3px;
margin-right: 5px;
}
}
li.header {
padding: 10px 25px 10px 15px;
font-size: 12px;
}
li > a > .fa-angle-left {
width: auto;
height: auto;
padding: 0;
margin-right: 10px;
margin-top: 3px;
}
li.active {
> a > .fa-angle-left {
.rotate(-90deg);
}
> .treeview-menu {
display: block;
}
}
// Tree view menu
.treeview-menu {
display: none;
list-style: none;
padding: 0;
margin: 0;
padding-left: 5px;
.treeview-menu {
padding-left: 20px;
}
> li {
margin: 0;
> a {
padding: 5px 5px 5px 15px;
display: block;
font-size: 14px;
> .fa,
> .glyphicon,
> .ion {
width: 20px;
}
> .fa-angle-left,
> .fa-angle-down {
width: auto;
}
}
}
}
}

@ -1,13 +0,0 @@
//All skins in one file
@import "skin-blue.less";
@import "skin-blue-light.less";
@import "skin-black.less";
@import "skin-black-light.less";
@import "skin-green.less";
@import "skin-green-light.less";
@import "skin-red.less";
@import "skin-red-light.less";
@import "skin-yellow.less";
@import "skin-yellow-light.less";
@import "skin-purple.less";
@import "skin-purple-light.less";

@ -1,64 +0,0 @@
/*
* Skin: Black
* -----------
*/
@import "../../bootstrap-less/mixins.less";
@import "../../bootstrap-less/variables.less";
@import "../variables.less";
@import "../mixins.less";
/* skin-black navbar */
.skin-black-light {
//Navbar & Logo
.main-header {
.box-shadow(0px 1px 1px rgba(0, 0, 0, 0.05));
.navbar-toggle {
color: #333;
}
.navbar-brand {
color: #333;
border-right: 1px solid #eee;
}
> .navbar {
.navbar-variant(#fff; #333; #999; #fff);
> .sidebar-toggle {
color: #333;
border-right: 1px solid #eee;
}
.navbar-nav {
> li > a {
border-right: 1px solid #eee;
}
}
.navbar-custom-menu .navbar-nav,
.navbar-right {
> li {
> a {
border-left: 1px solid #eee;
border-right-width: 0;
}
}
}
}
> .logo {
.logo-variant(#fff; #333);
border-right: 1px solid #eee;
@media (max-width: @screen-header-collapse) {
.logo-variant(#222; #fff);
border-right: none;
}
}
li.user-header {
background-color: #222;
}
}
//Content Header
.content-header {
background: transparent;
box-shadow: none;
}
//Create the sidebar skin
.skin-light-sidebar(#fff);
}

@ -1,64 +0,0 @@
/*
* Skin: Black
* -----------
*/
@import "../../bootstrap-less/mixins.less";
@import "../../bootstrap-less/variables.less";
@import "../variables.less";
@import "../mixins.less";
/* skin-black navbar */
.skin-black {
//Navbar & Logo
.main-header {
.box-shadow(0px 1px 1px rgba(0, 0, 0, 0.05));
.navbar-toggle {
color: #333;
}
.navbar-brand {
color: #333;
border-right: 1px solid #eee;
}
> .navbar {
.navbar-variant(#fff; #333; #999; #fff);
> .sidebar-toggle {
color: #333;
border-right: 1px solid #eee;
}
.navbar-nav {
> li > a {
border-right: 1px solid #eee;
}
}
.navbar-custom-menu .navbar-nav,
.navbar-right {
> li {
> a {
border-left: 1px solid #eee;
border-right-width: 0;
}
}
}
}
> .logo {
.logo-variant(#fff; #333);
border-right: 1px solid #eee;
@media (max-width: @screen-header-collapse) {
.logo-variant(#222; #fff);
border-right: none;
}
}
li.user-header {
background-color: #222;
}
}
//Content Header
.content-header {
background: transparent;
box-shadow: none;
}
//Create the sidebar skin
.skin-dark-sidebar(#fff);
}

@ -1,61 +0,0 @@
/*
* Skin: Blue
* ----------
*/
@import "../../bootstrap-less/mixins.less";
@import "../../bootstrap-less/variables.less";
@import "../variables.less";
@import "../mixins.less";
.skin-blue-light {
//Navbar
.main-header {
.navbar {
.navbar-variant(@light-blue; #fff);
.sidebar-toggle {
color: #fff;
&:hover {
background-color: darken(@light-blue, 5%);
}
}
@media (max-width: @screen-header-collapse) {
.dropdown-menu {
li {
&.divider {
background-color: rgba(255, 255, 255, 0.1);
}
a {
color: #fff;
&:hover {
background: darken(@light-blue, 5%);
}
}
}
}
}
}
//Logo
.logo {
.logo-variant(@light-blue);
}
li.user-header {
background-color: @light-blue;
}
}
//Content Header
.content-header {
background: transparent;
}
//Create the sidebar skin
.skin-light-sidebar(@light-blue);
.main-footer {
border-top-color: @gray;
}
}
.skin-blue.layout-top-nav .main-header > .logo {
.logo-variant(@light-blue);
}

@ -1,58 +0,0 @@
/*
* Skin: Blue
* ----------
*/
@import "../../bootstrap-less/mixins.less";
@import "../../bootstrap-less/variables.less";
@import "../variables.less";
@import "../mixins.less";
.skin-blue {
//Navbar
.main-header {
.navbar {
.navbar-variant(@light-blue; #fff);
.sidebar-toggle {
color: #fff;
&:hover {
background-color: darken(@light-blue, 5%);
}
}
@media (max-width: @screen-header-collapse) {
.dropdown-menu {
li {
&.divider {
background-color: rgba(255, 255, 255, 0.1);
}
a {
color: #fff;
&:hover {
background: darken(@light-blue, 5%);
}
}
}
}
}
}
//Logo
.logo {
.logo-variant(darken(@light-blue, 5%));
}
li.user-header {
background-color: @light-blue;
}
}
//Content Header
.content-header {
background: transparent;
}
//Create the sidebar skin
.skin-dark-sidebar(@light-blue);
}
.skin-blue.layout-top-nav .main-header > .logo {
.logo-variant(@light-blue);
}

@ -1,55 +0,0 @@
/*
* Skin: Green
* -----------
*/
@import "../../bootstrap-less/mixins.less";
@import "../../bootstrap-less/variables.less";
@import "../variables.less";
@import "../mixins.less";
.skin-green-light {
//Navbar
.main-header {
.navbar {
.navbar-variant(@green; #fff);
.sidebar-toggle {
color: #fff;
&:hover {
background-color: darken(@green, 5%);
}
}
@media (max-width: @screen-header-collapse) {
.dropdown-menu {
li {
&.divider {
background-color: rgba(255, 255, 255, 0.1);
}
a {
color: #fff;
&:hover {
background: darken(@green, 5%);
}
}
}
}
}
}
//Logo
.logo {
.logo-variant(@green);
}
li.user-header {
background-color: @green;
}
}
//Content Header
.content-header {
background: transparent;
}
//Create the sidebar skin
.skin-light-sidebar(@green);
}

@ -1,55 +0,0 @@
/*
* Skin: Green
* -----------
*/
@import "../../bootstrap-less/mixins.less";
@import "../../bootstrap-less/variables.less";
@import "../variables.less";
@import "../mixins.less";
.skin-green {
//Navbar
.main-header {
.navbar {
.navbar-variant(@green; #fff);
.sidebar-toggle {
color: #fff;
&:hover {
background-color: darken(@green, 5%);
}
}
@media (max-width: @screen-header-collapse) {
.dropdown-menu {
li {
&.divider {
background-color: rgba(255, 255, 255, 0.1);
}
a {
color: #fff;
&:hover {
background: darken(@green, 5%);
}
}
}
}
}
}
//Logo
.logo {
.logo-variant(darken(@green, 5%));
}
li.user-header {
background-color: @green;
}
}
//Content Header
.content-header {
background: transparent;
}
//Create the sidebar skin
.skin-dark-sidebar(@green);
}

@ -1,54 +0,0 @@
/*
* Skin: Purple
* ------------
*/
@import "../../bootstrap-less/mixins.less";
@import "../../bootstrap-less/variables.less";
@import "../variables.less";
@import "../mixins.less";
.skin-purple-light {
//Navbar
.main-header {
.navbar {
.navbar-variant(@purple; #fff);
.sidebar-toggle {
color: #fff;
&:hover {
background-color: darken(@purple, 5%);
}
}
@media (max-width: @screen-header-collapse) {
.dropdown-menu {
li {
&.divider {
background-color: rgba(255, 255, 255, 0.1);
}
a {
color: #fff;
&:hover {
background: darken(@purple, 5%);
}
}
}
}
}
}
//Logo
.logo {
.logo-variant(@purple);
}
li.user-header {
background-color: @purple;
}
}
//Content Header
.content-header {
background: transparent;
}
//Create the sidebar skin
.skin-light-sidebar(@purple);
}

@ -1,54 +0,0 @@
/*
* Skin: Purple
* ------------
*/
@import "../../bootstrap-less/mixins.less";
@import "../../bootstrap-less/variables.less";
@import "../variables.less";
@import "../mixins.less";
.skin-purple {
//Navbar
.main-header {
.navbar {
.navbar-variant(@purple; #fff);
.sidebar-toggle {
color: #fff;
&:hover {
background-color: darken(@purple, 5%);
}
}
@media (max-width: @screen-header-collapse) {
.dropdown-menu {
li {
&.divider {
background-color: rgba(255, 255, 255, 0.1);
}
a {
color: #fff;
&:hover {
background: darken(@purple, 5%);
}
}
}
}
}
}
//Logo
.logo {
.logo-variant(darken(@purple, 5%));
}
li.user-header {
background-color: @purple;
}
}
//Content Header
.content-header {
background: transparent;
}
//Create the sidebar skin
.skin-dark-sidebar(@purple);
}

@ -1,54 +0,0 @@
/*
* Skin: Red
* ---------
*/
@import "../../bootstrap-less/mixins.less";
@import "../../bootstrap-less/variables.less";
@import "../variables.less";
@import "../mixins.less";
.skin-red-light {
//Navbar
.main-header {
.navbar {
.navbar-variant(@red; #fff);
.sidebar-toggle {
color: #fff;
&:hover {
background-color: darken(@red, 5%);
}
}
@media (max-width: @screen-header-collapse) {
.dropdown-menu {
li {
&.divider {
background-color: rgba(255, 255, 255, 0.1);
}
a {
color: #fff;
&:hover {
background: darken(@red, 5%);
}
}
}
}
}
}
//Logo
.logo {
.logo-variant(@red);
}
li.user-header {
background-color: @red;
}
}
//Content Header
.content-header {
background: transparent;
}
//Create the sidebar skin
.skin-light-sidebar(@red);
}

@ -1,54 +0,0 @@
/*
* Skin: Red
* ---------
*/
@import "../../bootstrap-less/mixins.less";
@import "../../bootstrap-less/variables.less";
@import "../variables.less";
@import "../mixins.less";
.skin-red {
//Navbar
.main-header {
.navbar {
.navbar-variant(@red; #fff);
.sidebar-toggle {
color: #fff;
&:hover {
background-color: darken(@red, 5%);
}
}
@media (max-width: @screen-header-collapse) {
.dropdown-menu {
li {
&.divider {
background-color: rgba(255, 255, 255, 0.1);
}
a {
color: #fff;
&:hover {
background: darken(@red, 5%);
}
}
}
}
}
}
//Logo
.logo {
.logo-variant(darken(@red, 5%));
}
li.user-header {
background-color: @red;
}
}
//Content Header
.content-header {
background: transparent;
}
//Create the sidebar skin
.skin-dark-sidebar(@red);
}

@ -1,54 +0,0 @@
/*
* Skin: Yellow
* ------------
*/
@import "../../bootstrap-less/mixins.less";
@import "../../bootstrap-less/variables.less";
@import "../variables.less";
@import "../mixins.less";
.skin-yellow-light {
//Navbar
.main-header {
.navbar {
.navbar-variant(@yellow; #fff);
.sidebar-toggle {
color: #fff;
&:hover {
background-color: darken(@yellow, 5%);
}
}
@media (max-width: @screen-header-collapse) {
.dropdown-menu {
li {
&.divider {
background-color: rgba(255, 255, 255, 0.1);
}
a {
color: #fff;
&:hover {
background: darken(@yellow, 5%);
}
}
}
}
}
}
//Logo
.logo {
.logo-variant(@yellow);
}
li.user-header {
background-color: @yellow;
}
}
//Content Header
.content-header {
background: transparent;
}
//Create the sidebar skin
.skin-light-sidebar(@yellow);
}

@ -1,54 +0,0 @@
/*
* Skin: Yellow
* ------------
*/
@import "../../bootstrap-less/mixins.less";
@import "../../bootstrap-less/variables.less";
@import "../variables.less";
@import "../mixins.less";
.skin-yellow {
//Navbar
.main-header {
.navbar {
.navbar-variant(@yellow; #fff);
.sidebar-toggle {
color: #fff;
&:hover {
background-color: darken(@yellow, 5%);
}
}
@media (max-width: @screen-header-collapse) {
.dropdown-menu {
li {
&.divider {
background-color: rgba(255, 255, 255, 0.1);
}
a {
color: #fff;
&:hover {
background: darken(@yellow, 5%);
}
}
}
}
}
}
//Logo
.logo {
.logo-variant(darken(@yellow, 5%));
}
li.user-header {
background-color: @yellow;
}
}
//Content Header
.content-header {
background: transparent;
}
//Create the sidebar skin
.skin-dark-sidebar(@yellow);
}

@ -1,89 +0,0 @@
/*
* Component: Small Box
* --------------------
*/
.small-box {
.border-radius(2px);
position: relative;
display: block;
margin-bottom: 20px;
box-shadow: @box-boxshadow;
// content wrapper
> .inner {
padding: 10px;
}
> .small-box-footer {
position: relative;
text-align: center;
padding: 3px 0;
color: #fff;
color: rgba(255, 255, 255, 0.8);
display: block;
z-index: 10;
background: rgba(0, 0, 0, 0.1);
text-decoration: none;
&:hover {
color: #fff;
background: rgba(0, 0, 0, 0.15);
}
}
h3 {
font-size: 38px;
font-weight: bold;
margin: 0 0 10px 0;
white-space: nowrap;
padding: 0;
}
p {
font-size: 15px;
> small {
display: block;
color: #f9f9f9;
font-size: 13px;
margin-top: 5px;
}
}
h3, p {
z-index: 5px;
}
// the icon
.icon {
.transition(all @transition-speed linear);
position: absolute;
top: -10px;
right: 10px;
z-index: 0;
font-size: 90px;
color: rgba(0, 0, 0, 0.15);
}
// Small box hover state
&:hover {
text-decoration: none;
color: #f9f9f9;
// Animate icons on small box hover
.icon {
font-size: 95px;
}
}
}
@media (max-width: @screen-xs-max) {
// No need for icons on very small devices
.small-box {
text-align: center;
.icon {
display: none;
}
p {
font-size: 12px;
}
}
}

@ -1,78 +0,0 @@
/*
* Component: Social Widgets
* -------------------------
*/
//General widget style
.box-widget {
border: none;
position: relative;
}
//User Widget Style 1
.widget-user {
//User name container
.widget-user-header {
padding: 20px;
height: 120px;
.border-top-radius(@box-border-radius);
}
//User name
.widget-user-username {
margin-top: 0;
margin-bottom: 5px;
font-size: 25px;
font-weight: 300;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
}
//User single line description
.widget-user-desc {
margin-top: 0;
}
//User image container
.widget-user-image {
position: absolute;
top: 65px;
left: 50%;
margin-left: -45px;
> img {
width: 90px;
height: auto;
border: 3px solid #fff;
}
}
.box-footer {
padding-top: 30px;
}
}
//User Widget Style 2
.widget-user-2 {
//User name container
.widget-user-header {
padding: 20px;
.border-top-radius(@box-border-radius);
}
//User name
.widget-user-username {
margin-top: 5px;
margin-bottom: 5px;
font-size: 25px;
font-weight: 300;
}
//User single line description
.widget-user-desc {
margin-top: 0;
}
.widget-user-username,
.widget-user-desc {
margin-left: 75px;
}
//User image container
.widget-user-image {
> img {
width: 65px;
height: auto;
float: left;
}
}
}

@ -1,71 +0,0 @@
/*
* Component: Table
* ----------------
*/
.table {
//Cells
> thead,
> tbody,
> tfoot {
> tr {
> th,
> td {
border-top: 1px solid @box-border-color;
}
}
}
//thead cells
> thead > tr > th {
border-bottom: 2px solid @box-border-color;
}
//progress bars in tables
tr td .progress {
margin-top: 5px;
}
}
//Bordered Table
.table-bordered {
border: 1px solid @box-border-color;
> thead,
> tbody,
> tfoot {
> tr {
> th,
> td {
border: 1px solid @box-border-color;
}
}
}
> thead > tr {
> th,
> td {
border-bottom-width: 2px;
}
}
}
.table.no-border {
&,
td,
th {
border: 0;
}
}
/* .text-center in tables */
table.text-center {
&, td, th {
text-align: center;
}
}
.table.align {
th {
text-align: left;
}
td {
text-align: right;
}
}

@ -1,110 +0,0 @@
/*
* Component: Timeline
* -------------------
*/
.timeline {
position: relative;
margin: 0 0 30px 0;
padding: 0;
list-style: none;
// The line
&:before {
content: '';
position: absolute;
top: 0;
bottom: 0;
width: 4px;
background: #ddd;
left: 31px;
margin: 0;
.border-radius(2px);
}
> li {
position: relative;
margin-right: 10px;
margin-bottom: 15px;
.clearfix();
// The content
> .timeline-item {
.box-shadow(@box-boxshadow);
.border-radius(@box-border-radius);
margin-top: 0;
background: #fff;
color: #444;
margin-left: 60px;
margin-right: 15px;
padding: 0;
position: relative;
// The time and header
> .time {
color: #999;
float: right;
padding: 10px;
font-size: 12px;
}
> .timeline-header {
margin: 0;
color: #555;
border-bottom: 1px solid @box-border-color;
padding: 10px;
font-size: 16px;
line-height: 1.1;
> a {
font-weight: 600;
}
}
// Item body and footer
> .timeline-body, > .timeline-footer {
padding: 10px;
}
}
// The icons
> .fa,
> .glyphicon,
> .ion {
width: 30px;
height: 30px;
font-size: 15px;
line-height: 30px;
position: absolute;
color: #666;
background: @gray;
border-radius: 50%;
text-align: center;
left: 18px;
top: 0;
}
}
// Time label
> .time-label {
> span {
font-weight: 600;
padding: 5px;
display: inline-block;
background-color: #fff;
.border-radius(4px);
}
}
}
.timeline-inverse {
> li {
> .timeline-item {
background: #f0f0f0;
border: 1px solid #ddd;
.box-shadow(none);
> .timeline-header {
border-bottom-color: #ddd;
}
}
}
}

@ -1,42 +0,0 @@
/*
* Component: Users List
* ---------------------
*/
.users-list {
&:extend(.list-unstyled);
> li {
width: 25%;
float: left;
padding: 10px;
text-align: center;
img {
.border-radius(50%);
max-width: 100%;
height: auto;
}
> a:hover {
&,
.users-list-name {
color: #999;
}
}
}
}
.users-list-name,
.users-list-date {
display: block;
}
.users-list-name {
font-weight: 600;
color: #444;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.users-list-date {
color: #999;
font-size: 12px;
}

@ -1,123 +0,0 @@
//AdminLTE 2 Variables.less
//=========================
//PATHS
//--------------------------------------------------------
@boxed-layout-bg-image-path: "../img/boxed-bg.jpg";
//COLORS
//--------------------------------------------------------
//Primary
@light-blue: #3c8dbc;
//Danger
@red: #dd4b39;
//Success
@green: #00a65a;
//Info
@aqua: #00c0ef;
//Warning
@yellow: #f39c12;
@blue: #0073b7;
@navy: #001F3F;
@teal: #39CCCC;
@olive: #3D9970;
@lime: #01FF70;
@orange: #FF851B;
@fuchsia: #F012BE;
@purple: #605ca8;
@maroon: #D81B60;
@black: #111;
@gray: #d2d6de;
//LAYOUT
//--------------------------------------------------------
//Side bar and logo width
@sidebar-width: 230px;
//Boxed layout maximum width
@boxed-layout-max-width: 1024px;
//When the logo should go to the top of the screen
@screen-header-collapse: @screen-xs-max;
//Link colors (Aka: <a> tags)
@link-color: @light-blue;
@link-hover-color: lighten(@link-color, 15%);
//Body background (Affects main content background only)
@body-bg: #ecf0f5;
//SIDEBAR SKINS
//--------------------------------------------------------
//Dark sidebar
@sidebar-dark-bg: #222d32;
@sidebar-dark-hover-bg: darken(@sidebar-dark-bg, 2%);
@sidebar-dark-color: lighten(@sidebar-dark-bg, 60%);
@sidebar-dark-hover-color: #fff;
@sidebar-dark-submenu-bg: lighten(@sidebar-dark-bg, 5%);
@sidebar-dark-submenu-color: lighten(@sidebar-dark-submenu-bg, 40%);
@sidebar-dark-submenu-hover-color: #fff;
//Light sidebar
@sidebar-light-bg: #f9fafc;
@sidebar-light-hover-bg: lighten(#f0f0f1, 1.5%);
@sidebar-light-color: #444;
@sidebar-light-hover-color: #000;
@sidebar-light-submenu-bg: @sidebar-light-hover-bg;
@sidebar-light-submenu-color: #777;
@sidebar-light-submenu-hover-color: #000;
//CONTROL SIDEBAR
//--------------------------------------------------------
@control-sidebar-width: @sidebar-width;
//BOXES
//--------------------------------------------------------
@box-border-color: #f4f4f4;
@box-border-radius: 3px;
@box-footer-bg: #fff;
@box-boxshadow: 0 1px 1px rgba(0, 0, 0, .1);
@box-padding: 10px;
//Box variants
@box-default-border-top-color: #d2d6de;
//BUTTONS
//--------------------------------------------------------
@btn-boxshadow: none;
//PROGRESS BARS
//--------------------------------------------------------
@progress-bar-border-radius: 1px;
@progress-bar-sm-border-radius: 1px;
@progress-bar-xs-border-radius: 1px;
//FORMS
//--------------------------------------------------------
@input-radius: 0;
//BUTTONS
//--------------------------------------------------------
//Border radius for non flat buttons
@btn-border-radius: 3px;
//DIRECT CHAT
//--------------------------------------------------------
@direct-chat-height: 250px;
@direct-chat-default-msg-bg: @gray;
@direct-chat-default-font-color: #444;
@direct-chat-default-msg-border-color: @gray;
//CHAT WIDGET
//--------------------------------------------------------
@attachment-border-radius: 3px;
//TRANSITIONS SETTINGS
//--------------------------------------------------------
//Transition global options
@transition-speed: .3s;
@transition-fn: ease-in-out;
//cubic-bezier(0.32,1.25,0.375,1.15);

@ -1,123 +0,0 @@
<section id="adminlte-options">
<h2 class="page-header"><a href="#adminlte-options">AdminLTE Javascript Options</a></h2>
<p class="lead">Modifying the options of AdminLTE's app.js can be done using one of the following ways.</p>
<h3>Editing app.js</h3>
<p>Within the main Javascript file, modify the <code>$.AdminLTE.options</code> object to suit your use case.</p>
<h3>Defining AdminLTEOptions</h3>
<p>Alternatively, you can define a global options variable named <code>AdminLTEOptions</code> and initialize it before loading app.js.</p>
<p>Example</p>
<pre class="prettyprint"><code class="html">&LT;script>
var AdminLTEOptions = {
//Enable sidebar expand on hover effect for sidebar mini
//This option is forced to true if both the fixed layout and sidebar mini
//are used together
sidebarExpandOnHover: true,
//BoxRefresh Plugin
enableBoxRefresh: true,
//Bootstrap.js tooltip
enableBSToppltip: true
};
&LT;/script>
&LT;script src="dist/js/app.js" type="text/javascript">&LT;/script></code></pre>
<h3>Available AdminLTE Options</h3>
<pre class="prettyprint"><code class="javascript">{
//Add slimscroll to navbar menus
//This requires you to load the slimscroll plugin
//in every page before app.js
navbarMenuSlimscroll: true,
navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar
navbarMenuHeight: "200px", //The height of the inner menu
//General animation speed for JS animated elements such as box collapse/expand and
//sidebar treeview slide up/down. This options accepts an integer as milliseconds,
//'fast', 'normal', or 'slow'
animationSpeed: 500,
//Sidebar push menu toggle button selector
sidebarToggleSelector: "[data-toggle='offcanvas']",
//Activate sidebar push menu
sidebarPushMenu: true,
//Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)
sidebarSlimScroll: true,
//Enable sidebar expand on hover effect for sidebar mini
//This option is forced to true if both the fixed layout and sidebar mini
//are used together
sidebarExpandOnHover: false,
//BoxRefresh Plugin
enableBoxRefresh: true,
//Bootstrap.js tooltip
enableBSToppltip: true,
BSTooltipSelector: "[data-toggle='tooltip']",
//Enable Fast Click. Fastclick.js creates a more
//native touch experience with touch devices. If you
//choose to enable the plugin, make sure you load the script
//before AdminLTE's app.js
enableFastclick: true,
//Control Sidebar Options
enableControlSidebar: true,
controlSidebarOptions: {
//Which button should trigger the open/close event
toggleBtnSelector: "[data-toggle='control-sidebar']",
//The sidebar selector
selector: ".control-sidebar",
//Enable slide over content
slide: true
},
//Box Widget Plugin. Enable this plugin
//to allow boxes to be collapsed and/or removed
enableBoxWidget: true,
//Box Widget plugin options
boxWidgetOptions: {
boxWidgetIcons: {
//Collapse icon
collapse: 'fa-minus',
//Open icon
open: 'fa-plus',
//Remove icon
remove: 'fa-times'
},
boxWidgetSelectors: {
//Remove button selector
remove: '[data-widget="remove"]',
//Collapse button selector
collapse: '[data-widget="collapse"]'
}
},
//Direct Chat plugin options
directChat: {
//Enable direct chat by default
enable: true,
//The button to open and close the chat contacts pane
contactToggleSelector: '[data-widget="chat-pane-toggle"]'
},
//Define the set of colors to use globally around the website
colors: {
lightBlue: "#3c8dbc",
red: "#f56954",
green: "#00a65a",
aqua: "#00c0ef",
yellow: "#f39c12",
blue: "#0073b7",
navy: "#001F3F",
teal: "#39CCCC",
olive: "#3D9970",
lime: "#01FF70",
orange: "#FF851B",
fuchsia: "#F012BE",
purple: "#8E24AA",
maroon: "#D81B60",
black: "#222222",
gray: "#d2d6de"
},
//The standard screen sizes that bootstrap uses.
//If you change these in the variables.less file, change
//them here too.
screenSizes: {
xs: 480,
sm: 768,
md: 992,
lg: 1200
}
}</code></pre>
</section>

@ -1,17 +0,0 @@
<section id="advice">
<h2 class="page-header"><a href="#advice">A Word of Advice</a></h2>
<p class="lead">
Before you go to see your new awesome theme, here are few tips on how to familiarize yourself with it:
</p>
<ul>
<li><b>AdminLTE is based on <a href="http://getbootstrap.com/" target="_blank">Bootstrap 3</a>.</b> If you are unfamiliar with Bootstrap, visit their website and read through the documentation. All of Bootstrap components have been modified to fit the style of AdminLTE and provide a consistent look throughout the template. This way, we guarantee you will get the best of AdminLTE.</li>
<li><b>Go through the pages that are bundled with the theme.</b> Most of the template example pages contain quick tips on how to create or use a component which can be really helpful when you need to create something on the fly.</li>
<li><b>Documentation.</b> We are trying our best to make your experience with AdminLTE be smooth. One way to achieve that is to provide documentation and support. If you think that something is missing from the documentation, please do not hesitate to create an issue to tell us about it. Also, if you would like to contribute, email the support team at <a href="mailto:support@almsaeedstudio.com">support@almsaeedstudio.com</a>.</li>
<li><b>Built with <a href="http://lesscss.org/" target="_blank">LESS</a>.</b> This theme uses the LESS compiler to make it easier to customize and use. LESS is easy to learn if you know CSS or SASS. It is not necessary to learn LESS but it will benefit you a lot in the future.</li>
<li><b>Hosted on <a href="https://github.com/almasaeed2010/AdminLTE/" target="_blank">GitHub</a>.</b> Visit our GitHub repository to view issues, make requests, or contribute to the project.</li>
</ul>
<p>
<b>Note:</b> LESS files are better commented than the compiled CSS file.
</p>
</section>

@ -1,12 +0,0 @@
<section id="browsers">
<h2 class="page-header"><a href="#browsers">Browser Support</a></h2>
<p class="lead">AdminLTE supports the following browsers:</p>
<ul>
<li>IE9+</li>
<li>Firefox (latest)</li>
<li>Safari (latest)</li>
<li>Chrome (latest)</li>
<li>Opera (latest)</li>
</ul>
<p><b>Note:</b> IE9 does not support transitions or animations. The template will function properly but it won't use animations/transitions on IE9.</p>
</section>

@ -1,10 +0,0 @@
<section id="dependencies">
<h2 class="page-header"><a href="#dependencies">Dependencies</a></h2>
<p class="lead">AdminLTE depends on two main frameworks.
The downloadable package contains both of these libraries, so you don't have to manually download them.</p>
<ul class="bring-up">
<li><a href="http://getbootstrap.com" target="_blank">Bootstrap 3</a></li>
<li><a href="http://jquery.com/" target="_blank">jQuery 1.11+</a></li>
<li><a href="#plugins">All other plugins are listed below</a></li>
</ul>
</section>

@ -1,48 +0,0 @@
<section id="download">
<h2 class="page-header"><a href="#download">Download</a></h2>
<p class="lead">
AdminLTE can be downloaded in two different versions, each appealing to different skill levels and use case.
</p>
<div class="row">
<div class="col-sm-6">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Ready</h3>
<span class="label label-primary pull-right"><i class="fa fa-html5"></i></span>
</div><!-- /.box-header -->
<div class="box-body">
<p>Compiled and ready to use in production. Download this version if you don't want to customize AdminLTE's LESS files.</p>
<a href="http://almsaeedstudio.com/download/AdminLTE-dist" class="btn btn-primary"><i class="fa fa-download"></i> Download</a>
</div><!-- /.box-body -->
</div><!-- /.box -->
</div><!-- /.col -->
<div class="col-sm-6">
<div class="box box-danger">
<div class="box-header with-border">
<h3 class="box-title">Source Code</h3>
<span class="label label-danger pull-right"><i class="fa fa-database"></i></span>
</div><!-- /.box-header -->
<div class="box-body">
<p>All files including the compiled CSS. Download this version if you plan on customizing the template. <b>Requires a LESS compiler.</b></p>
<a href="http://almsaeedstudio.com/download/AdminLTE" class="btn btn-danger"><i class="fa fa-download"></i> Download</a>
</div><!-- /.box-body -->
</div><!-- /.box -->
</div><!-- /.col -->
</div><!-- /.row -->
<pre class="hierarchy bring-up"><code class="language-bash" data-lang="bash">File Hierarchy of the Source Code Package
AdminLTE/
├── dist/
│ ├── CSS/
│ ├── JS
│ ├── img
├── build/
│ ├── less/
│ │ ├── AdminLTE's Less files
│ └── Bootstrap-less/ (Only for reference. No modifications have been made)
│ ├── mixins/
│ ├── variables.less
│ ├── mixins.less
└── plugins/
├── All the customized plugins CSS and JS files</code></pre>
</section>

@ -1,12 +0,0 @@
<section id="faq">
<h2 class="page-header"><a href="#faq">FAQ</a></h2>
<h3>Can AdminLTE be used with Wordpress?</h3>
<p class="lead">AdminLTE is an HTML template that can be used for any purpose. However, it is not made to be easily installed on Wordpress. It will require some effort and enough knowledge of the Wordpress script to do so.</p>
<h3>Is there an integration guide for PHP frameworks such as Yii or Symfony?</h3>
<p class="lead">Short answer, no. However, there are forks and tutorials around the web that provide info on how to integrate with many different frameworks. There are even versions of AdminLTE that are integrated with jQuery ajax, AngularJS and/or MVC5 ASP .NET.</p>
<h3>How do I get notified of new AdminLTE versions?</h3>
<p class="lead">The best option is to subscribe to our mailing list using the <a href="http://almsaeedstudio.com/#subscribe">subscription form on Almsaeed Studio</a>.
If that's not appealing to you, you may watch the <a href="https://github.com/almasaeed2010/AdminLTE">repository on Github</a> or visit <a href="http://almsaeedstudio.com">Almsaeed Studio</a> every now and then for updates and announcements.</p>
</section>

@ -1,17 +0,0 @@
<section id="implementations">
<h2 class="page-header"><a href="#implementations">Implementations</a></h2>
<p class="lead">Thanks to many of AdminLTE users, there are multiple implementations of the template
for easy integration with back-end frameworks. The following are some of them:</p>
<ul>
<li><a href="https://github.com/mmdsharifi/AdminLTE-RTL">Persian RTL</a> by <a href="https://github.com/mmdsharifi">Mohammad Sharifi</a></li>
<li><a href="https://github.com/dmstr/yii2-adminlte-asset" target="_blank">Yii 2</a> by <a href="https://github.com/schmunk42" target="_blank">Tobias Munk</a></li>
<li><a href="https://github.com/yajra/laravel-admin-template" target="_blank">Laravel</a> by <a href="https://github.com/yajra" target="_blank">Arjay Angeles</a></li>
<li><a href="https://github.com/avanzu/AdminThemeBundle" target="_blank">Symfony</a> by <a href="https://github.com/avanzu" target="_blank">Marc Bach</a></li>
<li>Rails gems: <a href="https://github.com/nicolas-besnard/adminlte2-rails" target="_blank">adminlte2-rails</a> by <a href="https://github.com/nicolas-besnard" target="_blank">Nicolas Besnard</a> and <a href="https://github.com/racketlogger/lte-rails" target="_blank">lte-rails</a> (using AdminLTE sources) by <a href="https://github.com/racketlogger" target="_blank">Carlos at RacketLogger</a></li>
</ul>
<p><b class="text-red">Note:</b> these implementations are not supported by Almsaeed Studio. However,
they do provide a good example of how to integrate AdminLTE into different frameworks. For the latest release
of AdminLTE, please visit our <a href="https://github.com/almasaeed2010/AdminLTE">repository</a> or <a href="https://almsaeedstudio.com">website</a></p>
</section>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save