@ -0,0 +1,41 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Net.Mail; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace Sevomin.Models.Helpers | |||||
{ | |||||
public class SevominEmailer | |||||
{ | |||||
public Dictionary<string, string> Parameters { get; set; } | |||||
public SevominEmailer() | |||||
{ | |||||
} | |||||
public async void Send(string to, string subject, string template, bool isHtml) | |||||
{ | |||||
SmtpClient client = new SmtpClient(); | |||||
MailMessage msg = new MailMessage(); | |||||
foreach (var address in to.Split(',')) | |||||
msg.To.Add(address); | |||||
msg.From = new MailAddress("[email protected]", "سومین - مرکز کاریابی کنترل پروژه"); | |||||
msg.SubjectEncoding = Encoding.UTF8; | |||||
msg.BodyEncoding = Encoding.UTF8; | |||||
msg.Subject = subject; | |||||
msg.IsBodyHtml = isHtml; | |||||
Func<string> getBody = () => | |||||
{ | |||||
foreach (var param in Parameters) | |||||
template = template.Replace(param.Key, param.Value); | |||||
return template; | |||||
}; | |||||
msg.Body = getBody(); | |||||
client.SendAsync(msg, null); | |||||
} | |||||
} | |||||
} |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class InitialCreate : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(InitialCreate)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403261205298_InitialCreate"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,104 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class InitialCreate : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
CreateTable( | |||||
"dbo.AspNetRoles", | |||||
c => new | |||||
{ | |||||
Id = c.String(nullable: false, maxLength: 128), | |||||
Name = c.String(nullable: false, maxLength: 256), | |||||
}) | |||||
.PrimaryKey(t => t.Id) | |||||
.Index(t => t.Name, unique: true, name: "RoleNameIndex"); | |||||
CreateTable( | |||||
"dbo.AspNetUserRoles", | |||||
c => new | |||||
{ | |||||
UserId = c.String(nullable: false, maxLength: 128), | |||||
RoleId = c.String(nullable: false, maxLength: 128), | |||||
}) | |||||
.PrimaryKey(t => new { t.UserId, t.RoleId }) | |||||
.ForeignKey("dbo.AspNetRoles", t => t.RoleId, cascadeDelete: true) | |||||
.ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true) | |||||
.Index(t => t.UserId) | |||||
.Index(t => t.RoleId); | |||||
CreateTable( | |||||
"dbo.AspNetUsers", | |||||
c => new | |||||
{ | |||||
Id = c.String(nullable: false, maxLength: 128), | |||||
DisplayName = c.String(), | |||||
SignUpDate = c.DateTime(nullable: false), | |||||
Email = c.String(maxLength: 256), | |||||
EmailConfirmed = c.Boolean(nullable: false), | |||||
PasswordHash = c.String(), | |||||
SecurityStamp = c.String(), | |||||
PhoneNumber = c.String(), | |||||
PhoneNumberConfirmed = c.Boolean(nullable: false), | |||||
TwoFactorEnabled = c.Boolean(nullable: false), | |||||
LockoutEndDateUtc = c.DateTime(), | |||||
LockoutEnabled = c.Boolean(nullable: false), | |||||
AccessFailedCount = c.Int(nullable: false), | |||||
UserName = c.String(nullable: false, maxLength: 256), | |||||
CompanyName = c.String(), | |||||
FirstName = c.String(), | |||||
LastName = c.String(), | |||||
Discriminator = c.String(nullable: false, maxLength: 128), | |||||
}) | |||||
.PrimaryKey(t => t.Id) | |||||
.Index(t => t.UserName, unique: true, name: "UserNameIndex"); | |||||
CreateTable( | |||||
"dbo.AspNetUserClaims", | |||||
c => new | |||||
{ | |||||
Id = c.Int(nullable: false, identity: true), | |||||
UserId = c.String(nullable: false, maxLength: 128), | |||||
ClaimType = c.String(), | |||||
ClaimValue = c.String(), | |||||
}) | |||||
.PrimaryKey(t => t.Id) | |||||
.ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true) | |||||
.Index(t => t.UserId); | |||||
CreateTable( | |||||
"dbo.AspNetUserLogins", | |||||
c => new | |||||
{ | |||||
LoginProvider = c.String(nullable: false, maxLength: 128), | |||||
ProviderKey = c.String(nullable: false, maxLength: 128), | |||||
UserId = c.String(nullable: false, maxLength: 128), | |||||
}) | |||||
.PrimaryKey(t => new { t.LoginProvider, t.ProviderKey, t.UserId }) | |||||
.ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true) | |||||
.Index(t => t.UserId); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
DropForeignKey("dbo.AspNetUserRoles", "UserId", "dbo.AspNetUsers"); | |||||
DropForeignKey("dbo.AspNetUserLogins", "UserId", "dbo.AspNetUsers"); | |||||
DropForeignKey("dbo.AspNetUserClaims", "UserId", "dbo.AspNetUsers"); | |||||
DropForeignKey("dbo.AspNetUserRoles", "RoleId", "dbo.AspNetRoles"); | |||||
DropIndex("dbo.AspNetUserLogins", new[] { "UserId" }); | |||||
DropIndex("dbo.AspNetUserClaims", new[] { "UserId" }); | |||||
DropIndex("dbo.AspNetUsers", "UserNameIndex"); | |||||
DropIndex("dbo.AspNetUserRoles", new[] { "RoleId" }); | |||||
DropIndex("dbo.AspNetUserRoles", new[] { "UserId" }); | |||||
DropIndex("dbo.AspNetRoles", "RoleNameIndex"); | |||||
DropTable("dbo.AspNetUserLogins"); | |||||
DropTable("dbo.AspNetUserClaims"); | |||||
DropTable("dbo.AspNetUsers"); | |||||
DropTable("dbo.AspNetUserRoles"); | |||||
DropTable("dbo.AspNetRoles"); | |||||
} | |||||
} | |||||
} |
@ -1,126 +0,0 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<data name="Target" xml:space="preserve"> | |||||
<value>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</value> | |||||
</data> | |||||
<data name="DefaultSchema" xml:space="preserve"> | |||||
<value>dbo</value> | |||||
</data> | |||||
</root> |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class Avalin_Dovomin_New_Tables : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(Avalin_Dovomin_New_Tables)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403270612529_Avalin_Dovomin_New_Tables"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,52 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class Avalin_Dovomin_New_Tables : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
CreateTable( | |||||
"dbo.Avalin", | |||||
c => new | |||||
{ | |||||
Id = c.String(nullable: false, maxLength: 128), | |||||
CompanyName = c.String(), | |||||
}) | |||||
.PrimaryKey(t => t.Id) | |||||
.ForeignKey("dbo.AspNetUsers", t => t.Id) | |||||
.Index(t => t.Id); | |||||
CreateTable( | |||||
"dbo.Dovomin", | |||||
c => new | |||||
{ | |||||
Id = c.String(nullable: false, maxLength: 128), | |||||
FirstName = c.String(), | |||||
LastName = c.String(), | |||||
}) | |||||
.PrimaryKey(t => t.Id) | |||||
.ForeignKey("dbo.AspNetUsers", t => t.Id) | |||||
.Index(t => t.Id); | |||||
DropColumn("dbo.AspNetUsers", "CompanyName"); | |||||
DropColumn("dbo.AspNetUsers", "FirstName"); | |||||
DropColumn("dbo.AspNetUsers", "LastName"); | |||||
DropColumn("dbo.AspNetUsers", "Discriminator"); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
AddColumn("dbo.AspNetUsers", "Discriminator", c => c.String(nullable: false, maxLength: 128)); | |||||
AddColumn("dbo.AspNetUsers", "LastName", c => c.String()); | |||||
AddColumn("dbo.AspNetUsers", "FirstName", c => c.String()); | |||||
AddColumn("dbo.AspNetUsers", "CompanyName", c => c.String()); | |||||
DropForeignKey("dbo.Dovomin", "Id", "dbo.AspNetUsers"); | |||||
DropForeignKey("dbo.Avalin", "Id", "dbo.AspNetUsers"); | |||||
DropIndex("dbo.Dovomin", new[] { "Id" }); | |||||
DropIndex("dbo.Avalin", new[] { "Id" }); | |||||
DropTable("dbo.Dovomin"); | |||||
DropTable("dbo.Avalin"); | |||||
} | |||||
} | |||||
} |
@ -1,126 +0,0 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<data name="Target" xml:space="preserve"> | |||||
<value>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</value> | |||||
</data> | |||||
<data name="DefaultSchema" xml:space="preserve"> | |||||
<value>dbo</value> | |||||
</data> | |||||
</root> |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class National_Id_Avalin : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(National_Id_Avalin)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403270618585_National_Id_Avalin"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,17 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class National_Id_Avalin : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
AddColumn("dbo.Avalin", "NationalId", c => c.String(nullable: false)); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
DropColumn("dbo.Avalin", "NationalId"); | |||||
} | |||||
} | |||||
} |
@ -1,126 +0,0 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<data name="Target" xml:space="preserve"> | |||||
<value>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</value> | |||||
</data> | |||||
<data name="DefaultSchema" xml:space="preserve"> | |||||
<value>dbo</value> | |||||
</data> | |||||
</root> |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class Avvalinupdate : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(Avvalinupdate)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403270733330_Avvalin-update"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,27 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class Avvalinupdate : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
AddColumn("dbo.Avalin", "RegisterId", c => c.String(maxLength: 10)); | |||||
AddColumn("dbo.Avalin", "Address", c => c.String()); | |||||
AddColumn("dbo.Avalin", "CompanyPhoneNumber", c => c.String()); | |||||
AddColumn("dbo.Avalin", "EMail", c => c.String()); | |||||
AlterColumn("dbo.Avalin", "CompanyName", c => c.String(nullable: false)); | |||||
AlterColumn("dbo.Avalin", "NationalId", c => c.String(maxLength: 12)); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
AlterColumn("dbo.Avalin", "NationalId", c => c.String(nullable: false)); | |||||
AlterColumn("dbo.Avalin", "CompanyName", c => c.String()); | |||||
DropColumn("dbo.Avalin", "EMail"); | |||||
DropColumn("dbo.Avalin", "CompanyPhoneNumber"); | |||||
DropColumn("dbo.Avalin", "Address"); | |||||
DropColumn("dbo.Avalin", "RegisterId"); | |||||
} | |||||
} | |||||
} |
@ -1,126 +0,0 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<data name="Target" xml:space="preserve"> | |||||
<value>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</value> | |||||
</data> | |||||
<data name="DefaultSchema" xml:space="preserve"> | |||||
<value>dbo</value> | |||||
</data> | |||||
</root> |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class Paramvalues : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(Paramvalues)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403280733264_Param values"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,46 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class Paramvalues : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
CreateTable( | |||||
"dbo.Parameters", | |||||
c => new | |||||
{ | |||||
Id = c.Int(nullable: false, identity: true), | |||||
Name = c.String(nullable: false), | |||||
Moscow = c.Boolean(nullable: false), | |||||
DisplayMethod = c.Byte(nullable: false), | |||||
GroupName = c.String(nullable: false), | |||||
CommentAvalin = c.String(maxLength: 140), | |||||
CommentDovomin = c.String(maxLength: 140), | |||||
ParameterValueId = c.String(maxLength: 50), | |||||
}) | |||||
.PrimaryKey(t => t.Id) | |||||
.Index(t=>t.ParameterValueId); | |||||
CreateTable( | |||||
"dbo.ParameterValues", | |||||
c => new | |||||
{ | |||||
GroupKey = c.String(nullable: false, maxLength: 50), | |||||
Value = c.String(nullable: false, maxLength: 50), | |||||
}) | |||||
.PrimaryKey(t => new { t.GroupKey, t.Value }) | |||||
.Index(t => t.GroupKey); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
DropForeignKey("dbo.ParameterValues", "Parameter_Id", "dbo.Parameters"); | |||||
DropIndex("dbo.ParameterValues", new[] { "Parameter_Id" }); | |||||
DropIndex("dbo.ParameterValues", new[] { "GroupKey" }); | |||||
DropTable("dbo.ParameterValues"); | |||||
DropTable("dbo.Parameters"); | |||||
} | |||||
} | |||||
} |
@ -1,126 +0,0 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<data name="Target" xml:space="preserve"> | |||||
<value>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</value> | |||||
</data> | |||||
<data name="DefaultSchema" xml:space="preserve"> | |||||
<value>dbo</value> | |||||
</data> | |||||
</root> |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class Job : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(Job)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403280938368_Job"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,50 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class Job : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
DropForeignKey("dbo.ParameterValues", "Parameter_Id", "dbo.Parameters"); | |||||
DropIndex("dbo.ParameterValues", new[] { "Parameter_Id" }); | |||||
DropPrimaryKey("dbo.Parameters"); | |||||
CreateTable( | |||||
"dbo.Jobs", | |||||
c => new | |||||
{ | |||||
Id = c.Long(nullable: false, identity: true), | |||||
AvalinId = c.String(nullable: false, maxLength: 128), | |||||
ExpireDate = c.DateTime(nullable: false), | |||||
Description = c.String(), | |||||
ResumeType = c.Byte(nullable: false), | |||||
ContactPersonName = c.String(), | |||||
ContactPersonPhone = c.String(), | |||||
ContactPersonEMail = c.String(), | |||||
ShowCompanyName = c.Boolean(nullable: false), | |||||
ShowCompanyLogo = c.Boolean(nullable: false), | |||||
IsFullTime = c.Boolean(nullable: false), | |||||
}) | |||||
.PrimaryKey(t => t.Id) | |||||
.ForeignKey("dbo.Avalin", t => t.AvalinId) | |||||
.Index(t => t.AvalinId); | |||||
AlterColumn("dbo.Parameters", "Id", c => c.Long(nullable: false, identity: true)); | |||||
AddPrimaryKey("dbo.Parameters", "Id"); | |||||
DropColumn("dbo.ParameterValues", "Parameter_Id"); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
AddColumn("dbo.ParameterValues", "Parameter_Id", c => c.Int()); | |||||
DropForeignKey("dbo.Jobs", "AvalinId", "dbo.Avalin"); | |||||
DropIndex("dbo.Jobs", new[] { "AvalinId" }); | |||||
DropPrimaryKey("dbo.Parameters"); | |||||
AlterColumn("dbo.Parameters", "Id", c => c.Int(nullable: false, identity: true)); | |||||
DropTable("dbo.Jobs"); | |||||
AddPrimaryKey("dbo.Parameters", "Id"); | |||||
CreateIndex("dbo.ParameterValues", "Parameter_Id"); | |||||
AddForeignKey("dbo.ParameterValues", "Parameter_Id", "dbo.Parameters", "Id"); | |||||
} | |||||
} | |||||
} |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class JobParameter : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(JobParameter)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403281016428_JobParameter"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,37 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class JobParameter : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
CreateTable( | |||||
"dbo.JobParameters", | |||||
c => new | |||||
{ | |||||
Id = c.Long(nullable: false, identity: true), | |||||
ParameterId = c.Long(nullable: false), | |||||
JobId = c.Long(nullable: false), | |||||
StringValue = c.String(), | |||||
NumericValue = c.Decimal(precision: 18, scale: 2), | |||||
Moscow = c.Byte(nullable: false), | |||||
}) | |||||
.PrimaryKey(t => t.Id) | |||||
.ForeignKey("dbo.Jobs", t => t.JobId, cascadeDelete: true) | |||||
.ForeignKey("dbo.Parameters", t => t.ParameterId, cascadeDelete: true) | |||||
.Index(t => new { t.ParameterId, t.JobId }, unique: true, name: "IX_JobParameterUniqueIndex") | |||||
.Index(t => t.JobId); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
DropForeignKey("dbo.JobParameters", "ParameterId", "dbo.Parameters"); | |||||
DropForeignKey("dbo.JobParameters", "JobId", "dbo.Jobs"); | |||||
DropIndex("dbo.JobParameters", new[] { "JobId" }); | |||||
DropIndex("dbo.JobParameters", "IX_JobParameterUniqueIndex"); | |||||
DropTable("dbo.JobParameters"); | |||||
} | |||||
} | |||||
} |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class ParameterValueChange : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(ParameterValueChange)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403290719225_ParameterValue Change"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,17 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class ParameterValueChange : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
AddColumn("dbo.ParameterValues", "NumbericValue", c => c.Decimal(nullable: false, precision: 18, scale: 2)); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
DropColumn("dbo.ParameterValues", "NumbericValue"); | |||||
} | |||||
} | |||||
} |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class DovominParameter : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(DovominParameter)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403300806354_DovominParameter"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,49 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class DovominParameter : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
CreateTable( | |||||
"dbo.DovominParameters", | |||||
c => new | |||||
{ | |||||
Id = c.Long(nullable: false, identity: true), | |||||
ParameterId = c.Long(nullable: false), | |||||
DovominId = c.String(nullable: false, maxLength: 128), | |||||
StringValue = c.String(), | |||||
NumericValue = c.Decimal(precision: 18, scale: 2), | |||||
Moscow = c.Byte(nullable: false), | |||||
}) | |||||
.PrimaryKey(t => t.Id) | |||||
.ForeignKey("dbo.Dovomin", t => t.DovominId) | |||||
.ForeignKey("dbo.Parameters", t => t.ParameterId, cascadeDelete: true) | |||||
.Index(t => new { t.ParameterId, t.DovominId }, unique: true, name: "IX_DovominParameterUniqueIndex") | |||||
.Index(t => t.DovominId); | |||||
AddColumn("dbo.Dovomin", "BirthDate", c => c.DateTime(nullable: false)); | |||||
AddColumn("dbo.Dovomin", "IsFulltime", c => c.Boolean(nullable: false)); | |||||
AddColumn("dbo.Dovomin", "IsPartTime", c => c.Boolean(nullable: false)); | |||||
AddColumn("dbo.Dovomin", "Description", c => c.String()); | |||||
AddColumn("dbo.Dovomin", "EnglishResume", c => c.String()); | |||||
AddColumn("dbo.Dovomin", "PersianResume", c => c.String()); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
DropForeignKey("dbo.DovominParameters", "ParameterId", "dbo.Parameters"); | |||||
DropForeignKey("dbo.DovominParameters", "DovominId", "dbo.Dovomin"); | |||||
DropIndex("dbo.DovominParameters", new[] { "DovominId" }); | |||||
DropIndex("dbo.DovominParameters", "IX_DovominParameterUniqueIndex"); | |||||
DropColumn("dbo.Dovomin", "PersianResume"); | |||||
DropColumn("dbo.Dovomin", "EnglishResume"); | |||||
DropColumn("dbo.Dovomin", "Description"); | |||||
DropColumn("dbo.Dovomin", "IsPartTime"); | |||||
DropColumn("dbo.Dovomin", "IsFulltime"); | |||||
DropColumn("dbo.Dovomin", "BirthDate"); | |||||
DropTable("dbo.DovominParameters"); | |||||
} | |||||
} | |||||
} |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class removedovominParametermoscow : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(removedovominParametermoscow)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403301120307_remove-dovominParameter-moscow"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,17 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class removedovominParametermoscow : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
DropColumn("dbo.DovominParameters", "Moscow"); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
AddColumn("dbo.DovominParameters", "Moscow", c => c.Byte(nullable: false)); | |||||
} | |||||
} | |||||
} |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class JobCreateDate : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(JobCreateDate)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403310557099_Job CreateDate"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,17 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class JobCreateDate : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
AddColumn("dbo.Jobs", "CreateDate", c => c.DateTime(nullable: false)); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
DropColumn("dbo.Jobs", "CreateDate"); | |||||
} | |||||
} | |||||
} |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class DispalyFormat : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(DispalyFormat)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403310658336_DispalyFormat"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,17 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class DispalyFormat : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
AddColumn("dbo.JobParameters", "DisplayFormat", c => c.String()); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
DropColumn("dbo.JobParameters", "DisplayFormat"); | |||||
} | |||||
} | |||||
} |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class bugfix : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(bugfix)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403310716012_bugfix"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,19 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class bugfix : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
AddColumn("dbo.Parameters", "DisplayFormat", c => c.String(maxLength: 50)); | |||||
DropColumn("dbo.JobParameters", "DisplayFormat"); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
AddColumn("dbo.JobParameters", "DisplayFormat", c => c.String()); | |||||
DropColumn("dbo.Parameters", "DisplayFormat"); | |||||
} | |||||
} | |||||
} |
@ -1,28 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class DovominJob : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(DovominJob)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201403311237412_DovominJob"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,41 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.Data.Entity.Migrations; | |||||
public partial class DovominJob : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
CreateTable( | |||||
"dbo.DovominJobs", | |||||
c => new | |||||
{ | |||||
Id = c.Long(nullable: false, identity: true), | |||||
DovominId = c.String(nullable: false, maxLength: 128), | |||||
JobId = c.Long(nullable: false), | |||||
ApplyDate = c.DateTime(nullable: false), | |||||
CoverLetter = c.String(nullable: false), | |||||
Affinity = c.Decimal(nullable: false, precision: 18, scale: 2), | |||||
MinimumRequirement = c.Boolean(nullable: false), | |||||
AvalinSeen = c.DateTime(), | |||||
AvalinComment = c.String(), | |||||
AvalinDelete = c.Boolean(nullable: false), | |||||
}) | |||||
.PrimaryKey(t => t.Id) | |||||
.ForeignKey("dbo.Dovomin", t => t.DovominId) | |||||
.ForeignKey("dbo.Jobs", t => t.JobId, cascadeDelete: true) | |||||
.Index(t => new { t.DovominId, t.JobId }, unique: true, name: "IX_DovominJobUniqueIndex") | |||||
.Index(t => t.JobId); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
DropForeignKey("dbo.DovominJobs", "JobId", "dbo.Jobs"); | |||||
DropForeignKey("dbo.DovominJobs", "DovominId", "dbo.Dovomin"); | |||||
DropIndex("dbo.DovominJobs", new[] { "JobId" }); | |||||
DropIndex("dbo.DovominJobs", "IX_DovominJobUniqueIndex"); | |||||
DropTable("dbo.DovominJobs"); | |||||
} | |||||
} | |||||
} |
@ -1,29 +0,0 @@ | |||||
// <auto-generated /> | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System.CodeDom.Compiler; | |||||
using System.Data.Entity.Migrations; | |||||
using System.Data.Entity.Migrations.Infrastructure; | |||||
using System.Resources; | |||||
[GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")] | |||||
public sealed partial class Dovomin_Birthday_Made_Nullable : IMigrationMetadata | |||||
{ | |||||
private readonly ResourceManager Resources = new ResourceManager(typeof(Dovomin_Birthday_Made_Nullable)); | |||||
string IMigrationMetadata.Id | |||||
{ | |||||
get { return "201404051222069_Dovomin_Birthday_Made_Nullable"; } | |||||
} | |||||
string IMigrationMetadata.Source | |||||
{ | |||||
get { return null; } | |||||
} | |||||
string IMigrationMetadata.Target | |||||
{ | |||||
get { return Resources.GetString("Target"); } | |||||
} | |||||
} | |||||
} |
@ -1,18 +0,0 @@ | |||||
namespace Sevomin.Models.Migrations | |||||
{ | |||||
using System; | |||||
using System.Data.Entity.Migrations; | |||||
public partial class Dovomin_Birthday_Made_Nullable : DbMigration | |||||
{ | |||||
public override void Up() | |||||
{ | |||||
AlterColumn("dbo.Dovomin", "BirthDate", c => c.DateTime()); | |||||
} | |||||
public override void Down() | |||||
{ | |||||
AlterColumn("dbo.Dovomin", "BirthDate", c => c.DateTime(nullable: false)); | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,67 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace Sevomin.Models.Repositories | |||||
{ | |||||
public class UserRepository : IUserRepository | |||||
{ | |||||
#region Singleton | |||||
private static UserRepository member; | |||||
private static object locker = new object(); | |||||
private UserRepository() | |||||
{ | |||||
} | |||||
static UserRepository() | |||||
{ | |||||
lock (locker) | |||||
{ | |||||
UserRepository.member = new UserRepository(); | |||||
} | |||||
} | |||||
public static UserRepository Current | |||||
{ | |||||
get | |||||
{ | |||||
return UserRepository.member; | |||||
} | |||||
} | |||||
#endregion | |||||
public User FindWithConfirmationCode(string code) | |||||
{ | |||||
return SevominDbContext.Current.Users.FirstOrDefault(u => u.ConfirmationCode == code); | |||||
} | |||||
public void Add(User entity) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public User Find(string identifier) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public void Delete(User entity) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public void Save() | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public User Find(long identifier) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,297 @@ | |||||
{ | |||||
"always-semicolon": true, | |||||
"block-indent": 2, | |||||
"colon-space": true, | |||||
"color-case": "lower", | |||||
"color-shorthand": true, | |||||
"combinator-space": true, | |||||
"element-case": "lower", | |||||
"eof-newline": true, | |||||
"leading-zero": false, | |||||
"remove-empty-rulesets": true, | |||||
"rule-indent": 2, | |||||
"stick-brace": true, | |||||
"strip-spaces": true, | |||||
"unitless-zero": true, | |||||
"vendor-prefix-align": true, | |||||
"sort-order": [ | |||||
[ | |||||
"position", | |||||
"top", | |||||
"right", | |||||
"bottom", | |||||
"left", | |||||
"z-index", | |||||
"display", | |||||
"float", | |||||
"width", | |||||
"min-width", | |||||
"max-width", | |||||
"height", | |||||
"min-height", | |||||
"max-height", | |||||
"-webkit-box-sizing", | |||||
"-moz-box-sizing", | |||||
"box-sizing", | |||||
"-webkit-appearance", | |||||
"padding", | |||||
"padding-top", | |||||
"padding-right", | |||||
"padding-bottom", | |||||
"padding-left", | |||||
"margin", | |||||
"margin-top", | |||||
"margin-right", | |||||
"margin-bottom", | |||||
"margin-left", | |||||
"overflow", | |||||
"overflow-x", | |||||
"overflow-y", | |||||
"-webkit-overflow-scrolling", | |||||
"-ms-overflow-x", | |||||
"-ms-overflow-y", | |||||
"-ms-overflow-style", | |||||
"clip", | |||||
"clear", | |||||
"font", | |||||
"font-family", | |||||
"font-size", | |||||
"font-style", | |||||
"font-weight", | |||||
"font-variant", | |||||
"font-size-adjust", | |||||
"font-stretch", | |||||
"font-effect", | |||||
"font-emphasize", | |||||
"font-emphasize-position", | |||||
"font-emphasize-style", | |||||
"font-smooth", | |||||
"-webkit-hyphens", | |||||
"-moz-hyphens", | |||||
"hyphens", | |||||
"line-height", | |||||
"color", | |||||
"text-align", | |||||
"-webkit-text-align-last", | |||||
"-moz-text-align-last", | |||||
"-ms-text-align-last", | |||||
"text-align-last", | |||||
"text-emphasis", | |||||
"text-emphasis-color", | |||||
"text-emphasis-style", | |||||
"text-emphasis-position", | |||||
"text-decoration", | |||||
"text-indent", | |||||
"text-justify", | |||||
"text-outline", | |||||
"-ms-text-overflow", | |||||
"text-overflow", | |||||
"text-overflow-ellipsis", | |||||
"text-overflow-mode", | |||||
"text-shadow", | |||||
"text-transform", | |||||
"text-wrap", | |||||
"-webkit-text-size-adjust", | |||||
"-ms-text-size-adjust", | |||||
"letter-spacing", | |||||
"-ms-word-break", | |||||
"word-break", | |||||
"word-spacing", | |||||
"-ms-word-wrap", | |||||
"word-wrap", | |||||
"-moz-tab-size", | |||||
"-o-tab-size", | |||||
"tab-size", | |||||
"white-space", | |||||
"vertical-align", | |||||
"list-style", | |||||
"list-style-position", | |||||
"list-style-type", | |||||
"list-style-image", | |||||
"pointer-events", | |||||
"cursor", | |||||
"visibility", | |||||
"zoom", | |||||
"flex-direction", | |||||
"flex-order", | |||||
"flex-pack", | |||||
"flex-align", | |||||
"table-layout", | |||||
"empty-cells", | |||||
"caption-side", | |||||
"border-spacing", | |||||
"border-collapse", | |||||
"content", | |||||
"quotes", | |||||
"counter-reset", | |||||
"counter-increment", | |||||
"resize", | |||||
"-webkit-user-select", | |||||
"-moz-user-select", | |||||
"-ms-user-select", | |||||
"-o-user-select", | |||||
"user-select", | |||||
"nav-index", | |||||
"nav-up", | |||||
"nav-right", | |||||
"nav-down", | |||||
"nav-left", | |||||
"background", | |||||
"background-color", | |||||
"background-image", | |||||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", | |||||
"filter:progid:DXImageTransform.Microsoft.gradient", | |||||
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", | |||||
"filter", | |||||
"background-repeat", | |||||
"background-attachment", | |||||
"background-position", | |||||
"background-position-x", | |||||
"background-position-y", | |||||
"-webkit-background-clip", | |||||
"-moz-background-clip", | |||||
"background-clip", | |||||
"background-origin", | |||||
"-webkit-background-size", | |||||
"-moz-background-size", | |||||
"-o-background-size", | |||||
"background-size", | |||||
"border", | |||||
"border-color", | |||||
"border-style", | |||||
"border-width", | |||||
"border-top", | |||||
"border-top-color", | |||||
"border-top-style", | |||||
"border-top-width", | |||||
"border-right", | |||||
"border-right-color", | |||||
"border-right-style", | |||||
"border-right-width", | |||||
"border-bottom", | |||||
"border-bottom-color", | |||||
"border-bottom-style", | |||||
"border-bottom-width", | |||||
"border-left", | |||||
"border-left-color", | |||||
"border-left-style", | |||||
"border-left-width", | |||||
"border-radius", | |||||
"border-top-left-radius", | |||||
"border-top-right-radius", | |||||
"border-bottom-right-radius", | |||||
"border-bottom-left-radius", | |||||
"-webkit-border-image", | |||||
"-moz-border-image", | |||||
"-o-border-image", | |||||
"border-image", | |||||
"-webkit-border-image-source", | |||||
"-moz-border-image-source", | |||||
"-o-border-image-source", | |||||
"border-image-source", | |||||
"-webkit-border-image-slice", | |||||
"-moz-border-image-slice", | |||||
"-o-border-image-slice", | |||||
"border-image-slice", | |||||
"-webkit-border-image-width", | |||||
"-moz-border-image-width", | |||||
"-o-border-image-width", | |||||
"border-image-width", | |||||
"-webkit-border-image-outset", | |||||
"-moz-border-image-outset", | |||||
"-o-border-image-outset", | |||||
"border-image-outset", | |||||
"-webkit-border-image-repeat", | |||||
"-moz-border-image-repeat", | |||||
"-o-border-image-repeat", | |||||
"border-image-repeat", | |||||
"outline", | |||||
"outline-width", | |||||
"outline-style", | |||||
"outline-color", | |||||
"outline-offset", | |||||
"-webkit-box-shadow", | |||||
"-moz-box-shadow", | |||||
"box-shadow", | |||||
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", | |||||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", | |||||
"opacity", | |||||
"-ms-interpolation-mode", | |||||
"-webkit-transition", | |||||
"-moz-transition", | |||||
"-ms-transition", | |||||
"-o-transition", | |||||
"transition", | |||||
"-webkit-transition-delay", | |||||
"-moz-transition-delay", | |||||
"-ms-transition-delay", | |||||
"-o-transition-delay", | |||||
"transition-delay", | |||||
"-webkit-transition-timing-function", | |||||
"-moz-transition-timing-function", | |||||
"-ms-transition-timing-function", | |||||
"-o-transition-timing-function", | |||||
"transition-timing-function", | |||||
"-webkit-transition-duration", | |||||
"-moz-transition-duration", | |||||
"-ms-transition-duration", | |||||
"-o-transition-duration", | |||||
"transition-duration", | |||||
"-webkit-transition-property", | |||||
"-moz-transition-property", | |||||
"-ms-transition-property", | |||||
"-o-transition-property", | |||||
"transition-property", | |||||
"-webkit-transform", | |||||
"-moz-transform", | |||||
"-ms-transform", | |||||
"-o-transform", | |||||
"transform", | |||||
"-webkit-transform-origin", | |||||
"-moz-transform-origin", | |||||
"-ms-transform-origin", | |||||
"-o-transform-origin", | |||||
"transform-origin", | |||||
"-webkit-animation", | |||||
"-moz-animation", | |||||
"-ms-animation", | |||||
"-o-animation", | |||||
"animation", | |||||
"-webkit-animation-name", | |||||
"-moz-animation-name", | |||||
"-ms-animation-name", | |||||
"-o-animation-name", | |||||
"animation-name", | |||||
"-webkit-animation-duration", | |||||
"-moz-animation-duration", | |||||
"-ms-animation-duration", | |||||
"-o-animation-duration", | |||||
"animation-duration", | |||||
"-webkit-animation-play-state", | |||||
"-moz-animation-play-state", | |||||
"-ms-animation-play-state", | |||||
"-o-animation-play-state", | |||||
"animation-play-state", | |||||
"-webkit-animation-timing-function", | |||||
"-moz-animation-timing-function", | |||||
"-ms-animation-timing-function", | |||||
"-o-animation-timing-function", | |||||
"animation-timing-function", | |||||
"-webkit-animation-delay", | |||||
"-moz-animation-delay", | |||||
"-ms-animation-delay", | |||||
"-o-animation-delay", | |||||
"animation-delay", | |||||
"-webkit-animation-iteration-count", | |||||
"-moz-animation-iteration-count", | |||||
"-ms-animation-iteration-count", | |||||
"-o-animation-iteration-count", | |||||
"animation-iteration-count", | |||||
"-webkit-animation-direction", | |||||
"-moz-animation-direction", | |||||
"-ms-animation-direction", | |||||
"-o-animation-direction", | |||||
"animation-direction" | |||||
] | |||||
] | |||||
} |
@ -0,0 +1,19 @@ | |||||
{ | |||||
"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 | |||||
} |
@ -0,0 +1,67 @@ | |||||
// | |||||
// Alerts | |||||
// -------------------------------------------------- | |||||
// Base styles | |||||
// ------------------------- | |||||
.alert { | |||||
padding: @alert-padding; | |||||
margin-bottom: @line-height-computed; | |||||
border: 1px solid transparent; | |||||
border-radius: @alert-border-radius; | |||||
// Headings for larger alerts | |||||
h4 { | |||||
margin-top: 0; | |||||
// Specified for the h4 to prevent conflicts of changing @headings-color | |||||
color: inherit; | |||||
} | |||||
// Provide class for links that match alerts | |||||
.alert-link { | |||||
font-weight: @alert-link-font-weight; | |||||
} | |||||
// Improve alignment and spacing of inner content | |||||
> p, | |||||
> ul { | |||||
margin-bottom: 0; | |||||
} | |||||
> p + p { | |||||
margin-top: 5px; | |||||
} | |||||
} | |||||
// Dismissable alerts | |||||
// | |||||
// Expand the right padding and account for the close button's positioning. | |||||
.alert-dismissable { | |||||
padding-right: (@alert-padding + 20); | |||||
// Adjust close link position | |||||
.close { | |||||
position: relative; | |||||
top: -2px; | |||||
right: -21px; | |||||
color: inherit; | |||||
} | |||||
} | |||||
// Alternate styles | |||||
// | |||||
// Generate contextual modifier classes for colorizing the alert. | |||||
.alert-success { | |||||
.alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); | |||||
} | |||||
.alert-info { | |||||
.alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); | |||||
} | |||||
.alert-warning { | |||||
.alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); | |||||
} | |||||
.alert-danger { | |||||
.alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); | |||||
} |
@ -0,0 +1,55 @@ | |||||
// | |||||
// Badges | |||||
// -------------------------------------------------- | |||||
// Base classes | |||||
.badge { | |||||
display: inline-block; | |||||
min-width: 10px; | |||||
padding: 3px 7px; | |||||
font-size: @font-size-small; | |||||
font-weight: @badge-font-weight; | |||||
color: @badge-color; | |||||
line-height: @badge-line-height; | |||||
vertical-align: baseline; | |||||
white-space: nowrap; | |||||
text-align: center; | |||||
background-color: @badge-bg; | |||||
border-radius: @badge-border-radius; | |||||
// Empty badges collapse automatically (not available in IE8) | |||||
&:empty { | |||||
display: none; | |||||
} | |||||
// Quick fix for badges in buttons | |||||
.btn & { | |||||
position: relative; | |||||
top: -1px; | |||||
} | |||||
.btn-xs & { | |||||
top: 0; | |||||
padding: 1px 5px; | |||||
} | |||||
} | |||||
// Hover state, but only for links | |||||
a.badge { | |||||
&:hover, | |||||
&:focus { | |||||
color: @badge-link-hover-color; | |||||
text-decoration: none; | |||||
cursor: pointer; | |||||
} | |||||
} | |||||
// Account for counters in navs | |||||
a.list-group-item.active > .badge, | |||||
.nav-pills > .active > a > .badge { | |||||
color: @badge-active-color; | |||||
background-color: @badge-active-bg; | |||||
} | |||||
.nav-pills > li > a > .badge { | |||||
margin-left: 3px; | |||||
} |
@ -0,0 +1,49 @@ | |||||
// Core variables and mixins | |||||
@import "variables.less"; | |||||
@import "mixins.less"; | |||||
// Reset | |||||
@import "normalize.less"; | |||||
@import "print.less"; | |||||
// Core CSS | |||||
@import "scaffolding.less"; | |||||
@import "type.less"; | |||||
@import "code.less"; | |||||
@import "grid.less"; | |||||
@import "tables.less"; | |||||
@import "forms.less"; | |||||
@import "buttons.less"; | |||||
// Components | |||||
@import "component-animations.less"; | |||||
@import "glyphicons.less"; | |||||
@import "dropdowns.less"; | |||||
@import "button-groups.less"; | |||||
@import "input-groups.less"; | |||||
@import "navs.less"; | |||||
@import "navbar.less"; | |||||
@import "breadcrumbs.less"; | |||||
@import "pagination.less"; | |||||
@import "pager.less"; | |||||
@import "labels.less"; | |||||
@import "badges.less"; | |||||
@import "jumbotron.less"; | |||||
@import "thumbnails.less"; | |||||
@import "alerts.less"; | |||||
@import "progress-bars.less"; | |||||
@import "media.less"; | |||||
@import "list-group.less"; | |||||
@import "panels.less"; | |||||
@import "wells.less"; | |||||
@import "close.less"; | |||||
// Components w/ JavaScript | |||||
@import "modals.less"; | |||||
@import "tooltip.less"; | |||||
@import "popovers.less"; | |||||
@import "carousel.less"; | |||||
// Utility classes | |||||
@import "utilities.less"; | |||||
@import "responsive-utilities.less"; |
@ -0,0 +1,26 @@ | |||||
// | |||||
// Breadcrumbs | |||||
// -------------------------------------------------- | |||||
.breadcrumb { | |||||
padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; | |||||
margin-bottom: @line-height-computed; | |||||
list-style: none; | |||||
background-color: @breadcrumb-bg; | |||||
border-radius: @border-radius-base; | |||||
> li { | |||||
display: inline-block; | |||||
+ li:before { | |||||
content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space | |||||
padding: 0 5px; | |||||
color: @breadcrumb-color; | |||||
} | |||||
} | |||||
> .active { | |||||
color: @breadcrumb-active-color; | |||||
} | |||||
} |
@ -0,0 +1,226 @@ | |||||
// | |||||
// Button groups | |||||
// -------------------------------------------------- | |||||
// Make the div behave like a button | |||||
.btn-group, | |||||
.btn-group-vertical { | |||||
position: relative; | |||||
display: inline-block; | |||||
vertical-align: middle; // match .btn alignment given font-size hack above | |||||
> .btn { | |||||
position: relative; | |||||
float: left; | |||||
// Bring the "active" button to the front | |||||
&:hover, | |||||
&:focus, | |||||
&:active, | |||||
&.active { | |||||
z-index: 2; | |||||
} | |||||
&:focus { | |||||
// Remove focus outline when dropdown JS adds it after closing the menu | |||||
outline: none; | |||||
} | |||||
} | |||||
} | |||||
// Prevent double borders when buttons are next to each other | |||||
.btn-group { | |||||
.btn + .btn, | |||||
.btn + .btn-group, | |||||
.btn-group + .btn, | |||||
.btn-group + .btn-group { | |||||
margin-left: -1px; | |||||
} | |||||
} | |||||
// Optional: Group multiple button groups together for a toolbar | |||||
.btn-toolbar { | |||||
margin-left: -5px; // Offset the first child's margin | |||||
&:extend(.clearfix all); | |||||
.btn-group, | |||||
.input-group { | |||||
float: left; | |||||
} | |||||
> .btn, | |||||
> .btn-group, | |||||
> .input-group { | |||||
margin-left: 5px; | |||||
} | |||||
} | |||||
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { | |||||
border-radius: 0; | |||||
} | |||||
// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match | |||||
.btn-group > .btn:first-child { | |||||
margin-left: 0; | |||||
&:not(:last-child):not(.dropdown-toggle) { | |||||
.border-right-radius(0); | |||||
} | |||||
} | |||||
// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it | |||||
.btn-group > .btn:last-child:not(:first-child), | |||||
.btn-group > .dropdown-toggle:not(:first-child) { | |||||
.border-left-radius(0); | |||||
} | |||||
// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) | |||||
.btn-group > .btn-group { | |||||
float: left; | |||||
} | |||||
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { | |||||
border-radius: 0; | |||||
} | |||||
.btn-group > .btn-group:first-child { | |||||
> .btn:last-child, | |||||
> .dropdown-toggle { | |||||
.border-right-radius(0); | |||||
} | |||||
} | |||||
.btn-group > .btn-group:last-child > .btn:first-child { | |||||
.border-left-radius(0); | |||||
} | |||||
// On active and open, don't show outline | |||||
.btn-group .dropdown-toggle:active, | |||||
.btn-group.open .dropdown-toggle { | |||||
outline: 0; | |||||
} | |||||
// Sizing | |||||
// | |||||
// Remix the default button sizing classes into new ones for easier manipulation. | |||||
.btn-group-xs > .btn { &:extend(.btn-xs); } | |||||
.btn-group-sm > .btn { &:extend(.btn-sm); } | |||||
.btn-group-lg > .btn { &:extend(.btn-lg); } | |||||
// Split button dropdowns | |||||
// ---------------------- | |||||
// Give the line between buttons some depth | |||||
.btn-group > .btn + .dropdown-toggle { | |||||
padding-left: 8px; | |||||
padding-right: 8px; | |||||
} | |||||
.btn-group > .btn-lg + .dropdown-toggle { | |||||
padding-left: 12px; | |||||
padding-right: 12px; | |||||
} | |||||
// The clickable button for toggling the menu | |||||
// Remove the gradient and set the same inset shadow as the :active state | |||||
.btn-group.open .dropdown-toggle { | |||||
.box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); | |||||
// Show no shadow for `.btn-link` since it has no other button styles. | |||||
&.btn-link { | |||||
.box-shadow(none); | |||||
} | |||||
} | |||||
// Reposition the caret | |||||
.btn .caret { | |||||
margin-left: 0; | |||||
} | |||||
// Carets in other button sizes | |||||
.btn-lg .caret { | |||||
border-width: @caret-width-large @caret-width-large 0; | |||||
border-bottom-width: 0; | |||||
} | |||||
// Upside down carets for .dropup | |||||
.dropup .btn-lg .caret { | |||||
border-width: 0 @caret-width-large @caret-width-large; | |||||
} | |||||
// Vertical button groups | |||||
// ---------------------- | |||||
.btn-group-vertical { | |||||
> .btn, | |||||
> .btn-group, | |||||
> .btn-group > .btn { | |||||
display: block; | |||||
float: none; | |||||
width: 100%; | |||||
max-width: 100%; | |||||
} | |||||
// Clear floats so dropdown menus can be properly placed | |||||
> .btn-group { | |||||
&:extend(.clearfix all); | |||||
> .btn { | |||||
float: none; | |||||
} | |||||
} | |||||
> .btn + .btn, | |||||
> .btn + .btn-group, | |||||
> .btn-group + .btn, | |||||
> .btn-group + .btn-group { | |||||
margin-top: -1px; | |||||
margin-left: 0; | |||||
} | |||||
} | |||||
.btn-group-vertical > .btn { | |||||
&:not(:first-child):not(:last-child) { | |||||
border-radius: 0; | |||||
} | |||||
&:first-child:not(:last-child) { | |||||
border-top-right-radius: @border-radius-base; | |||||
.border-bottom-radius(0); | |||||
} | |||||
&:last-child:not(:first-child) { | |||||
border-bottom-left-radius: @border-radius-base; | |||||
.border-top-radius(0); | |||||
} | |||||
} | |||||
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { | |||||
border-radius: 0; | |||||
} | |||||
.btn-group-vertical > .btn-group:first-child:not(:last-child) { | |||||
> .btn:last-child, | |||||
> .dropdown-toggle { | |||||
.border-bottom-radius(0); | |||||
} | |||||
} | |||||
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { | |||||
.border-top-radius(0); | |||||
} | |||||
// Justified button groups | |||||
// ---------------------- | |||||
.btn-group-justified { | |||||
display: table; | |||||
width: 100%; | |||||
table-layout: fixed; | |||||
border-collapse: separate; | |||||
> .btn, | |||||
> .btn-group { | |||||
float: none; | |||||
display: table-cell; | |||||
width: 1%; | |||||
} | |||||
> .btn-group .btn { | |||||
width: 100%; | |||||
} | |||||
} | |||||
// Checkbox and radio options | |||||
[data-toggle="buttons"] > .btn > input[type="radio"], | |||||
[data-toggle="buttons"] > .btn > input[type="checkbox"] { | |||||
display: none; | |||||
} |
@ -0,0 +1,159 @@ | |||||
// | |||||
// Buttons | |||||
// -------------------------------------------------- | |||||
// Base styles | |||||
// -------------------------------------------------- | |||||
.btn { | |||||
display: inline-block; | |||||
margin-bottom: 0; // For input.btn | |||||
font-weight: @btn-font-weight; | |||||
text-align: center; | |||||
vertical-align: middle; | |||||
cursor: pointer; | |||||
background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 | |||||
border: 1px solid transparent; | |||||
white-space: nowrap; | |||||
.button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base); | |||||
.user-select(none); | |||||
&, | |||||
&:active, | |||||
&.active { | |||||
&:focus { | |||||
.tab-focus(); | |||||
} | |||||
} | |||||
&:hover, | |||||
&:focus { | |||||
color: @btn-default-color; | |||||
text-decoration: none; | |||||
} | |||||
&:active, | |||||
&.active { | |||||
outline: 0; | |||||
background-image: none; | |||||
.box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); | |||||
} | |||||
&.disabled, | |||||
&[disabled], | |||||
fieldset[disabled] & { | |||||
cursor: not-allowed; | |||||
pointer-events: none; // Future-proof disabling of clicks | |||||
.opacity(.65); | |||||
.box-shadow(none); | |||||
} | |||||
} | |||||
// Alternate buttons | |||||
// -------------------------------------------------- | |||||
.btn-default { | |||||
.button-variant(@btn-default-color; @btn-default-bg; @btn-default-border); | |||||
} | |||||
.btn-primary { | |||||
.button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border); | |||||
} | |||||
// Success appears as green | |||||
.btn-success { | |||||
.button-variant(@btn-success-color; @btn-success-bg; @btn-success-border); | |||||
} | |||||
// Info appears as blue-green | |||||
.btn-info { | |||||
.button-variant(@btn-info-color; @btn-info-bg; @btn-info-border); | |||||
} | |||||
// Warning appears as orange | |||||
.btn-warning { | |||||
.button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border); | |||||
} | |||||
// Danger and error appear as red | |||||
.btn-danger { | |||||
.button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border); | |||||
} | |||||
// Link buttons | |||||
// ------------------------- | |||||
// Make a button look and behave like a link | |||||
.btn-link { | |||||
color: @link-color; | |||||
font-weight: normal; | |||||
cursor: pointer; | |||||
border-radius: 0; | |||||
&, | |||||
&:active, | |||||
&[disabled], | |||||
fieldset[disabled] & { | |||||
background-color: transparent; | |||||
.box-shadow(none); | |||||
} | |||||
&, | |||||
&:hover, | |||||
&:focus, | |||||
&:active { | |||||
border-color: transparent; | |||||
} | |||||
&:hover, | |||||
&:focus { | |||||
color: @link-hover-color; | |||||
text-decoration: underline; | |||||
background-color: transparent; | |||||
} | |||||
&[disabled], | |||||
fieldset[disabled] & { | |||||
&:hover, | |||||
&:focus { | |||||
color: @btn-link-disabled-color; | |||||
text-decoration: none; | |||||
} | |||||
} | |||||
} | |||||
// Button Sizes | |||||
// -------------------------------------------------- | |||||
.btn-lg { | |||||
// line-height: ensure even-numbered height of button next to large input | |||||
.button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large); | |||||
} | |||||
.btn-sm { | |||||
// line-height: ensure proper height of button next to small input | |||||
.button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); | |||||
} | |||||
.btn-xs { | |||||
.button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small); | |||||
} | |||||
// Block button | |||||
// -------------------------------------------------- | |||||
.btn-block { | |||||
display: block; | |||||
width: 100%; | |||||
padding-left: 0; | |||||
padding-right: 0; | |||||
} | |||||
// Vertically space out multiple block buttons | |||||
.btn-block + .btn-block { | |||||
margin-top: 5px; | |||||
} | |||||
// Specificity overrides | |||||
input[type="submit"], | |||||
input[type="reset"], | |||||
input[type="button"] { | |||||
&.btn-block { | |||||
width: 100%; | |||||
} | |||||
} |
@ -0,0 +1,232 @@ | |||||
// | |||||
// Carousel | |||||
// -------------------------------------------------- | |||||
// Wrapper for the slide container and indicators | |||||
.carousel { | |||||
position: relative; | |||||
} | |||||
.carousel-inner { | |||||
position: relative; | |||||
overflow: hidden; | |||||
width: 100%; | |||||
> .item { | |||||
display: none; | |||||
position: relative; | |||||
.transition(.6s ease-in-out left); | |||||
// Account for jankitude on images | |||||
> img, | |||||
> a > img { | |||||
&:extend(.img-responsive); | |||||
line-height: 1; | |||||
} | |||||
} | |||||
> .active, | |||||
> .next, | |||||
> .prev { display: block; } | |||||
> .active { | |||||
left: 0; | |||||
} | |||||
> .next, | |||||
> .prev { | |||||
position: absolute; | |||||
top: 0; | |||||
width: 100%; | |||||
} | |||||
> .next { | |||||
left: 100%; | |||||
} | |||||
> .prev { | |||||
left: -100%; | |||||
} | |||||
> .next.left, | |||||
> .prev.right { | |||||
left: 0; | |||||
} | |||||
> .active.left { | |||||
left: -100%; | |||||
} | |||||
> .active.right { | |||||
left: 100%; | |||||
} | |||||
} | |||||
// Left/right controls for nav | |||||
// --------------------------- | |||||
.carousel-control { | |||||
position: absolute; | |||||
top: 0; | |||||
left: 0; | |||||
bottom: 0; | |||||
width: @carousel-control-width; | |||||
.opacity(@carousel-control-opacity); | |||||
font-size: @carousel-control-font-size; | |||||
color: @carousel-control-color; | |||||
text-align: center; | |||||
text-shadow: @carousel-text-shadow; | |||||
// We can't have this transition here because WebKit cancels the carousel | |||||
// animation if you trip this while in the middle of another animation. | |||||
// Set gradients for backgrounds | |||||
&.left { | |||||
#gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001)); | |||||
} | |||||
&.right { | |||||
left: auto; | |||||
right: 0; | |||||
#gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5)); | |||||
} | |||||
// Hover/focus state | |||||
&:hover, | |||||
&:focus { | |||||
outline: none; | |||||
color: @carousel-control-color; | |||||
text-decoration: none; | |||||
.opacity(.9); | |||||
} | |||||
// Toggles | |||||
.icon-prev, | |||||
.icon-next, | |||||
.glyphicon-chevron-left, | |||||
.glyphicon-chevron-right { | |||||
position: absolute; | |||||
top: 50%; | |||||
z-index: 5; | |||||
display: inline-block; | |||||
} | |||||
.icon-prev, | |||||
.glyphicon-chevron-left { | |||||
left: 50%; | |||||
} | |||||
.icon-next, | |||||
.glyphicon-chevron-right { | |||||
right: 50%; | |||||
} | |||||
.icon-prev, | |||||
.icon-next { | |||||
width: 20px; | |||||
height: 20px; | |||||
margin-top: -10px; | |||||
margin-left: -10px; | |||||
font-family: serif; | |||||
} | |||||
.icon-prev { | |||||
&:before { | |||||
content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) | |||||
} | |||||
} | |||||
.icon-next { | |||||
&:before { | |||||
content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) | |||||
} | |||||
} | |||||
} | |||||
// Optional indicator pips | |||||
// | |||||
// Add an unordered list with the following class and add a list item for each | |||||
// slide your carousel holds. | |||||
.carousel-indicators { | |||||
position: absolute; | |||||
bottom: 10px; | |||||
left: 50%; | |||||
z-index: 15; | |||||
width: 60%; | |||||
margin-left: -30%; | |||||
padding-left: 0; | |||||
list-style: none; | |||||
text-align: center; | |||||
li { | |||||
display: inline-block; | |||||
width: 10px; | |||||
height: 10px; | |||||
margin: 1px; | |||||
text-indent: -999px; | |||||
border: 1px solid @carousel-indicator-border-color; | |||||
border-radius: 10px; | |||||
cursor: pointer; | |||||
// IE8-9 hack for event handling | |||||
// | |||||
// Internet Explorer 8-9 does not support clicks on elements without a set | |||||
// `background-color`. We cannot use `filter` since that's not viewed as a | |||||
// background color by the browser. Thus, a hack is needed. | |||||
// | |||||
// For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we | |||||
// set alpha transparency for the best results possible. | |||||
background-color: #000 \9; // IE8 | |||||
background-color: rgba(0,0,0,0); // IE9 | |||||
} | |||||
.active { | |||||
margin: 0; | |||||
width: 12px; | |||||
height: 12px; | |||||
background-color: @carousel-indicator-active-bg; | |||||
} | |||||
} | |||||
// Optional captions | |||||
// ----------------------------- | |||||
// Hidden by default for smaller viewports | |||||
.carousel-caption { | |||||
position: absolute; | |||||
left: 15%; | |||||
right: 15%; | |||||
bottom: 20px; | |||||
z-index: 10; | |||||
padding-top: 20px; | |||||
padding-bottom: 20px; | |||||
color: @carousel-caption-color; | |||||
text-align: center; | |||||
text-shadow: @carousel-text-shadow; | |||||
& .btn { | |||||
text-shadow: none; // No shadow for button elements in carousel-caption | |||||
} | |||||
} | |||||
// Scale up controls for tablets and up | |||||
@media screen and (min-width: @screen-sm-min) { | |||||
// Scale up the controls a smidge | |||||
.carousel-control { | |||||
.glyphicon-chevron-left, | |||||
.glyphicon-chevron-right, | |||||
.icon-prev, | |||||
.icon-next { | |||||
width: 30px; | |||||
height: 30px; | |||||
margin-top: -15px; | |||||
margin-left: -15px; | |||||
font-size: 30px; | |||||
} | |||||
} | |||||
// Show and left align the captions | |||||
.carousel-caption { | |||||
left: 20%; | |||||
right: 20%; | |||||
padding-bottom: 30px; | |||||
} | |||||
// Move up the indicators | |||||
.carousel-indicators { | |||||
bottom: 20px; | |||||
} | |||||
} |
@ -0,0 +1,33 @@ | |||||
// | |||||
// Close icons | |||||
// -------------------------------------------------- | |||||
.close { | |||||
float: right; | |||||
font-size: (@font-size-base * 1.5); | |||||
font-weight: @close-font-weight; | |||||
line-height: 1; | |||||
color: @close-color; | |||||
text-shadow: @close-text-shadow; | |||||
.opacity(.2); | |||||
&:hover, | |||||
&:focus { | |||||
color: @close-color; | |||||
text-decoration: none; | |||||
cursor: pointer; | |||||
.opacity(.5); | |||||
} | |||||
// Additional properties for button version | |||||
// iOS requires the button element instead of an anchor tag. | |||||
// If you want the anchor version, it requires `href="#"`. | |||||
button& { | |||||
padding: 0; | |||||
cursor: pointer; | |||||
background: transparent; | |||||
border: 0; | |||||
-webkit-appearance: none; | |||||
} | |||||
} |
@ -0,0 +1,63 @@ | |||||
// | |||||
// Code (inline and block) | |||||
// -------------------------------------------------- | |||||
// Inline and block code styles | |||||
code, | |||||
kbd, | |||||
pre, | |||||
samp { | |||||
font-family: @font-family-monospace; | |||||
} | |||||
// Inline code | |||||
code { | |||||
padding: 2px 4px; | |||||
font-size: 90%; | |||||
color: @code-color; | |||||
background-color: @code-bg; | |||||
white-space: nowrap; | |||||
border-radius: @border-radius-base; | |||||
} | |||||
// User input typically entered via keyboard | |||||
kbd { | |||||
padding: 2px 4px; | |||||
font-size: 90%; | |||||
color: @kbd-color; | |||||
background-color: @kbd-bg; | |||||
border-radius: @border-radius-small; | |||||
box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); | |||||
} | |||||
// Blocks of code | |||||
pre { | |||||
display: block; | |||||
padding: ((@line-height-computed - 1) / 2); | |||||
margin: 0 0 (@line-height-computed / 2); | |||||
font-size: (@font-size-base - 1); // 14px to 13px | |||||
line-height: @line-height-base; | |||||
word-break: break-all; | |||||
word-wrap: break-word; | |||||
color: @pre-color; | |||||
background-color: @pre-bg; | |||||
border: 1px solid @pre-border-color; | |||||
border-radius: @border-radius-base; | |||||
// Account for some code outputs that place code tags in pre tags | |||||
code { | |||||
padding: 0; | |||||
font-size: inherit; | |||||
color: inherit; | |||||
white-space: pre-wrap; | |||||
background-color: transparent; | |||||
border-radius: 0; | |||||
} | |||||
} | |||||
// Enable scrollable blocks of code | |||||
.pre-scrollable { | |||||
max-height: @pre-scrollable-max-height; | |||||
overflow-y: scroll; | |||||
} |
@ -0,0 +1,29 @@ | |||||
// | |||||
// Component animations | |||||
// -------------------------------------------------- | |||||
// Heads up! | |||||
// | |||||
// We don't use the `.opacity()` mixin here since it causes a bug with text | |||||
// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552. | |||||
.fade { | |||||
opacity: 0; | |||||
.transition(opacity .15s linear); | |||||
&.in { | |||||
opacity: 1; | |||||
} | |||||
} | |||||
.collapse { | |||||
display: none; | |||||
&.in { | |||||
display: block; | |||||
} | |||||
} | |||||
.collapsing { | |||||
position: relative; | |||||
height: 0; | |||||
overflow: hidden; | |||||
.transition(height .35s ease); | |||||
} |
@ -0,0 +1,213 @@ | |||||
// | |||||
// Dropdown menus | |||||
// -------------------------------------------------- | |||||
// Dropdown arrow/caret | |||||
.caret { | |||||
display: inline-block; | |||||
width: 0; | |||||
height: 0; | |||||
margin-left: 2px; | |||||
vertical-align: middle; | |||||
border-top: @caret-width-base solid; | |||||
border-right: @caret-width-base solid transparent; | |||||
border-left: @caret-width-base solid transparent; | |||||
} | |||||
// The dropdown wrapper (div) | |||||
.dropdown { | |||||
position: relative; | |||||
} | |||||
// Prevent the focus on the dropdown toggle when closing dropdowns | |||||
.dropdown-toggle:focus { | |||||
outline: 0; | |||||
} | |||||
// The dropdown menu (ul) | |||||
.dropdown-menu { | |||||
position: absolute; | |||||
top: 100%; | |||||
left: 0; | |||||
z-index: @zindex-dropdown; | |||||
display: none; // none by default, but block on "open" of the menu | |||||
float: left; | |||||
min-width: 160px; | |||||
padding: 5px 0; | |||||
margin: 2px 0 0; // override default ul | |||||
list-style: none; | |||||
font-size: @font-size-base; | |||||
background-color: @dropdown-bg; | |||||
border: 1px solid @dropdown-fallback-border; // IE8 fallback | |||||
border: 1px solid @dropdown-border; | |||||
border-radius: @border-radius-base; | |||||
.box-shadow(0 6px 12px rgba(0,0,0,.175)); | |||||
background-clip: padding-box; | |||||
// Aligns the dropdown menu to right | |||||
// | |||||
// Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` | |||||
&.pull-right { | |||||
right: 0; | |||||
left: auto; | |||||
} | |||||
// Dividers (basically an hr) within the dropdown | |||||
.divider { | |||||
.nav-divider(@dropdown-divider-bg); | |||||
} | |||||
// Links within the dropdown menu | |||||
> li > a { | |||||
display: block; | |||||
padding: 3px 20px; | |||||
clear: both; | |||||
font-weight: normal; | |||||
line-height: @line-height-base; | |||||
color: @dropdown-link-color; | |||||
white-space: nowrap; // prevent links from randomly breaking onto new lines | |||||
} | |||||
} | |||||
// Hover/Focus state | |||||
.dropdown-menu > li > a { | |||||
&:hover, | |||||
&:focus { | |||||
text-decoration: none; | |||||
color: @dropdown-link-hover-color; | |||||
background-color: @dropdown-link-hover-bg; | |||||
} | |||||
} | |||||
// Active state | |||||
.dropdown-menu > .active > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
color: @dropdown-link-active-color; | |||||
text-decoration: none; | |||||
outline: 0; | |||||
background-color: @dropdown-link-active-bg; | |||||
} | |||||
} | |||||
// Disabled state | |||||
// | |||||
// Gray out text and ensure the hover/focus state remains gray | |||||
.dropdown-menu > .disabled > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
color: @dropdown-link-disabled-color; | |||||
} | |||||
} | |||||
// Nuke hover/focus effects | |||||
.dropdown-menu > .disabled > a { | |||||
&:hover, | |||||
&:focus { | |||||
text-decoration: none; | |||||
background-color: transparent; | |||||
background-image: none; // Remove CSS gradient | |||||
.reset-filter(); | |||||
cursor: not-allowed; | |||||
} | |||||
} | |||||
// Open state for the dropdown | |||||
.open { | |||||
// Show the menu | |||||
> .dropdown-menu { | |||||
display: block; | |||||
} | |||||
// Remove the outline when :focus is triggered | |||||
> a { | |||||
outline: 0; | |||||
} | |||||
} | |||||
// Menu positioning | |||||
// | |||||
// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown | |||||
// menu with the parent. | |||||
.dropdown-menu-right { | |||||
left: auto; // Reset the default from `.dropdown-menu` | |||||
right: 0; | |||||
} | |||||
// With v3, we enabled auto-flipping if you have a dropdown within a right | |||||
// aligned nav component. To enable the undoing of that, we provide an override | |||||
// to restore the default dropdown menu alignment. | |||||
// | |||||
// This is only for left-aligning a dropdown menu within a `.navbar-right` or | |||||
// `.pull-right` nav component. | |||||
.dropdown-menu-left { | |||||
left: 0; | |||||
right: auto; | |||||
} | |||||
// Dropdown section headers | |||||
.dropdown-header { | |||||
display: block; | |||||
padding: 3px 20px; | |||||
font-size: @font-size-small; | |||||
line-height: @line-height-base; | |||||
color: @dropdown-header-color; | |||||
} | |||||
// Backdrop to catch body clicks on mobile, etc. | |||||
.dropdown-backdrop { | |||||
position: fixed; | |||||
left: 0; | |||||
right: 0; | |||||
bottom: 0; | |||||
top: 0; | |||||
z-index: (@zindex-dropdown - 10); | |||||
} | |||||
// Right aligned dropdowns | |||||
.pull-right > .dropdown-menu { | |||||
right: 0; | |||||
left: auto; | |||||
} | |||||
// Allow for dropdowns to go bottom up (aka, dropup-menu) | |||||
// | |||||
// Just add .dropup after the standard .dropdown class and you're set, bro. | |||||
// TODO: abstract this so that the navbar fixed styles are not placed here? | |||||
.dropup, | |||||
.navbar-fixed-bottom .dropdown { | |||||
// Reverse the caret | |||||
.caret { | |||||
border-top: 0; | |||||
border-bottom: @caret-width-base solid; | |||||
content: ""; | |||||
} | |||||
// Different positioning for bottom up menu | |||||
.dropdown-menu { | |||||
top: auto; | |||||
bottom: 100%; | |||||
margin-bottom: 1px; | |||||
} | |||||
} | |||||
// Component alignment | |||||
// | |||||
// Reiterate per navbar.less and the modified component alignment there. | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
.navbar-right { | |||||
.dropdown-menu { | |||||
.dropdown-menu-right(); | |||||
} | |||||
// Necessary for overrides of the default right aligned menu. | |||||
// Will remove come v4 in all likelihood. | |||||
.dropdown-menu-left { | |||||
.dropdown-menu-left(); | |||||
} | |||||
} | |||||
} | |||||
@ -0,0 +1,438 @@ | |||||
// | |||||
// Forms | |||||
// -------------------------------------------------- | |||||
// Normalize non-controls | |||||
// | |||||
// Restyle and baseline non-control form elements. | |||||
fieldset { | |||||
padding: 0; | |||||
margin: 0; | |||||
border: 0; | |||||
// Chrome and Firefox set a `min-width: -webkit-min-content;` on fieldsets, | |||||
// so we reset that to ensure it behaves more like a standard block element. | |||||
// See https://github.com/twbs/bootstrap/issues/12359. | |||||
min-width: 0; | |||||
} | |||||
legend { | |||||
display: block; | |||||
width: 100%; | |||||
padding: 0; | |||||
margin-bottom: @line-height-computed; | |||||
font-size: (@font-size-base * 1.5); | |||||
line-height: inherit; | |||||
color: @legend-color; | |||||
border: 0; | |||||
border-bottom: 1px solid @legend-border-color; | |||||
} | |||||
label { | |||||
display: inline-block; | |||||
margin-bottom: 5px; | |||||
font-weight: bold; | |||||
} | |||||
// Normalize form controls | |||||
// | |||||
// While most of our form styles require extra classes, some basic normalization | |||||
// is required to ensure optimum display with or without those classes to better | |||||
// address browser inconsistencies. | |||||
// Override content-box in Normalize (* isn't specific enough) | |||||
input[type="search"] { | |||||
.box-sizing(border-box); | |||||
} | |||||
// Position radios and checkboxes better | |||||
input[type="radio"], | |||||
input[type="checkbox"] { | |||||
margin: 4px 0 0; | |||||
margin-top: 1px \9; /* IE8-9 */ | |||||
line-height: normal; | |||||
} | |||||
// Set the height of file controls to match text inputs | |||||
input[type="file"] { | |||||
display: block; | |||||
} | |||||
// Make range inputs behave like textual form controls | |||||
input[type="range"] { | |||||
display: block; | |||||
width: 100%; | |||||
} | |||||
// Make multiple select elements height not fixed | |||||
select[multiple], | |||||
select[size] { | |||||
height: auto; | |||||
} | |||||
// Focus for file, radio, and checkbox | |||||
input[type="file"]:focus, | |||||
input[type="radio"]:focus, | |||||
input[type="checkbox"]:focus { | |||||
.tab-focus(); | |||||
} | |||||
// Adjust output element | |||||
output { | |||||
display: block; | |||||
padding-top: (@padding-base-vertical + 1); | |||||
font-size: @font-size-base; | |||||
line-height: @line-height-base; | |||||
color: @input-color; | |||||
} | |||||
// Common form controls | |||||
// | |||||
// Shared size and type resets for form controls. Apply `.form-control` to any | |||||
// of the following form controls: | |||||
// | |||||
// select | |||||
// textarea | |||||
// input[type="text"] | |||||
// input[type="password"] | |||||
// input[type="datetime"] | |||||
// input[type="datetime-local"] | |||||
// input[type="date"] | |||||
// input[type="month"] | |||||
// input[type="time"] | |||||
// input[type="week"] | |||||
// input[type="number"] | |||||
// input[type="email"] | |||||
// input[type="url"] | |||||
// input[type="search"] | |||||
// input[type="tel"] | |||||
// input[type="color"] | |||||
.form-control { | |||||
display: block; | |||||
width: 100%; | |||||
height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) | |||||
padding: @padding-base-vertical @padding-base-horizontal; | |||||
font-size: @font-size-base; | |||||
line-height: @line-height-base; | |||||
color: @input-color; | |||||
background-color: @input-bg; | |||||
background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 | |||||
border: 1px solid @input-border; | |||||
border-radius: @input-border-radius; | |||||
.box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); | |||||
.transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s"); | |||||
// Customize the `:focus` state to imitate native WebKit styles. | |||||
.form-control-focus(); | |||||
// Placeholder | |||||
.placeholder(); | |||||
// Disabled and read-only inputs | |||||
// | |||||
// HTML5 says that controls under a fieldset > legend:first-child won't be | |||||
// disabled if the fieldset is disabled. Due to implementation difficulty, we | |||||
// don't honor that edge case; we style them as disabled anyway. | |||||
&[disabled], | |||||
&[readonly], | |||||
fieldset[disabled] & { | |||||
cursor: not-allowed; | |||||
background-color: @input-bg-disabled; | |||||
opacity: 1; // iOS fix for unreadable disabled content | |||||
} | |||||
// Reset height for `textarea`s | |||||
textarea& { | |||||
height: auto; | |||||
} | |||||
} | |||||
// Search inputs in iOS | |||||
// | |||||
// This overrides the extra rounded corners on search inputs in iOS so that our | |||||
// `.form-control` class can properly style them. Note that this cannot simply | |||||
// be added to `.form-control` as it's not specific enough. For details, see | |||||
// https://github.com/twbs/bootstrap/issues/11586. | |||||
input[type="search"] { | |||||
-webkit-appearance: none; | |||||
} | |||||
// Special styles for iOS date input | |||||
// | |||||
// In Mobile Safari, date inputs require a pixel line-height that matches the | |||||
// given height of the input. | |||||
input[type="date"] { | |||||
line-height: @input-height-base; | |||||
} | |||||
// Form groups | |||||
// | |||||
// Designed to help with the organization and spacing of vertical forms. For | |||||
// horizontal forms, use the predefined grid classes. | |||||
.form-group { | |||||
margin-bottom: 15px; | |||||
} | |||||
// Checkboxes and radios | |||||
// | |||||
// Indent the labels to position radios/checkboxes as hanging controls. | |||||
.radio, | |||||
.checkbox { | |||||
display: block; | |||||
min-height: @line-height-computed; // clear the floating input if there is no label text | |||||
margin-top: 10px; | |||||
margin-bottom: 10px; | |||||
padding-left: 20px; | |||||
label { | |||||
display: inline; | |||||
font-weight: normal; | |||||
cursor: pointer; | |||||
} | |||||
} | |||||
.radio input[type="radio"], | |||||
.radio-inline input[type="radio"], | |||||
.checkbox input[type="checkbox"], | |||||
.checkbox-inline input[type="checkbox"] { | |||||
float: left; | |||||
margin-left: -20px; | |||||
} | |||||
.radio + .radio, | |||||
.checkbox + .checkbox { | |||||
margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing | |||||
} | |||||
// Radios and checkboxes on same line | |||||
.radio-inline, | |||||
.checkbox-inline { | |||||
display: inline-block; | |||||
padding-left: 20px; | |||||
margin-bottom: 0; | |||||
vertical-align: middle; | |||||
font-weight: normal; | |||||
cursor: pointer; | |||||
} | |||||
.radio-inline + .radio-inline, | |||||
.checkbox-inline + .checkbox-inline { | |||||
margin-top: 0; | |||||
margin-left: 10px; // space out consecutive inline controls | |||||
} | |||||
// Apply same disabled cursor tweak as for inputs | |||||
// | |||||
// Note: Neither radios nor checkboxes can be readonly. | |||||
input[type="radio"], | |||||
input[type="checkbox"], | |||||
.radio, | |||||
.radio-inline, | |||||
.checkbox, | |||||
.checkbox-inline { | |||||
&[disabled], | |||||
fieldset[disabled] & { | |||||
cursor: not-allowed; | |||||
} | |||||
} | |||||
// Form control sizing | |||||
// | |||||
// Build on `.form-control` with modifier classes to decrease or increase the | |||||
// height and font-size of form controls. | |||||
.input-sm { | |||||
.input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); | |||||
} | |||||
.input-lg { | |||||
.input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large); | |||||
} | |||||
// Form control feedback states | |||||
// | |||||
// Apply contextual and semantic states to individual form controls. | |||||
.has-feedback { | |||||
// Enable absolute positioning | |||||
position: relative; | |||||
// Ensure icons don't overlap text | |||||
.form-control { | |||||
padding-right: (@input-height-base * 1.25); | |||||
} | |||||
// Feedback icon (requires .glyphicon classes) | |||||
.form-control-feedback { | |||||
position: absolute; | |||||
top: (@line-height-computed + 5); // Height of the `label` and its margin | |||||
right: 0; | |||||
display: block; | |||||
width: @input-height-base; | |||||
height: @input-height-base; | |||||
line-height: @input-height-base; | |||||
text-align: center; | |||||
} | |||||
} | |||||
// Feedback states | |||||
.has-success { | |||||
.form-control-validation(@state-success-text; @state-success-text; @state-success-bg); | |||||
} | |||||
.has-warning { | |||||
.form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg); | |||||
} | |||||
.has-error { | |||||
.form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg); | |||||
} | |||||
// Static form control text | |||||
// | |||||
// Apply class to a `p` element to make any string of text align with labels in | |||||
// a horizontal form layout. | |||||
.form-control-static { | |||||
margin-bottom: 0; // Remove default margin from `p` | |||||
} | |||||
// Help text | |||||
// | |||||
// Apply to any element you wish to create light text for placement immediately | |||||
// below a form control. Use for general help, formatting, or instructional text. | |||||
.help-block { | |||||
display: block; // account for any element using help-block | |||||
margin-top: 5px; | |||||
margin-bottom: 10px; | |||||
color: lighten(@text-color, 25%); // lighten the text some for contrast | |||||
} | |||||
// Inline forms | |||||
// | |||||
// Make forms appear inline(-block) by adding the `.form-inline` class. Inline | |||||
// forms begin stacked on extra small (mobile) devices and then go inline when | |||||
// viewports reach <768px. | |||||
// | |||||
// Requires wrapping inputs and labels with `.form-group` for proper display of | |||||
// default HTML form controls and our custom form controls (e.g., input groups). | |||||
// | |||||
// Heads up! This is mixin-ed into `.navbar-form` in navbars.less. | |||||
.form-inline { | |||||
// Kick in the inline | |||||
@media (min-width: @screen-sm-min) { | |||||
// Inline-block all the things for "inline" | |||||
.form-group { | |||||
display: inline-block; | |||||
margin-bottom: 0; | |||||
vertical-align: middle; | |||||
} | |||||
// In navbar-form, allow folks to *not* use `.form-group` | |||||
.form-control { | |||||
display: inline-block; | |||||
width: auto; // Prevent labels from stacking above inputs in `.form-group` | |||||
vertical-align: middle; | |||||
} | |||||
// Input groups need that 100% width though | |||||
.input-group > .form-control { | |||||
width: 100%; | |||||
} | |||||
.control-label { | |||||
margin-bottom: 0; | |||||
vertical-align: middle; | |||||
} | |||||
// Remove default margin on radios/checkboxes that were used for stacking, and | |||||
// then undo the floating of radios and checkboxes to match (which also avoids | |||||
// a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969). | |||||
.radio, | |||||
.checkbox { | |||||
display: inline-block; | |||||
margin-top: 0; | |||||
margin-bottom: 0; | |||||
padding-left: 0; | |||||
vertical-align: middle; | |||||
} | |||||
.radio input[type="radio"], | |||||
.checkbox input[type="checkbox"] { | |||||
float: none; | |||||
margin-left: 0; | |||||
} | |||||
// Validation states | |||||
// | |||||
// Reposition the icon because it's now within a grid column and columns have | |||||
// `position: relative;` on them. Also accounts for the grid gutter padding. | |||||
.has-feedback .form-control-feedback { | |||||
top: 0; | |||||
} | |||||
} | |||||
} | |||||
// Horizontal forms | |||||
// | |||||
// Horizontal forms are built on grid classes and allow you to create forms with | |||||
// labels on the left and inputs on the right. | |||||
.form-horizontal { | |||||
// Consistent vertical alignment of labels, radios, and checkboxes | |||||
.control-label, | |||||
.radio, | |||||
.checkbox, | |||||
.radio-inline, | |||||
.checkbox-inline { | |||||
margin-top: 0; | |||||
margin-bottom: 0; | |||||
padding-top: (@padding-base-vertical + 1); // Default padding plus a border | |||||
} | |||||
// Account for padding we're adding to ensure the alignment and of help text | |||||
// and other content below items | |||||
.radio, | |||||
.checkbox { | |||||
min-height: (@line-height-computed + (@padding-base-vertical + 1)); | |||||
} | |||||
// Make form groups behave like rows | |||||
.form-group { | |||||
.make-row(); | |||||
} | |||||
.form-control-static { | |||||
padding-top: (@padding-base-vertical + 1); | |||||
} | |||||
// Only right align form labels here when the columns stop stacking | |||||
@media (min-width: @screen-sm-min) { | |||||
.control-label { | |||||
text-align: right; | |||||
} | |||||
} | |||||
// Validation states | |||||
// | |||||
// Reposition the icon because it's now within a grid column and columns have | |||||
// `position: relative;` on them. Also accounts for the grid gutter padding. | |||||
.has-feedback .form-control-feedback { | |||||
top: 0; | |||||
right: (@grid-gutter-width / 2); | |||||
} | |||||
} |
@ -0,0 +1,233 @@ | |||||
// | |||||
// Glyphicons for Bootstrap | |||||
// | |||||
// Since icons are fonts, they can be placed anywhere text is placed and are | |||||
// thus automatically sized to match the surrounding child. To use, create an | |||||
// inline element with the appropriate classes, like so: | |||||
// | |||||
// <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a> | |||||
// Import the fonts | |||||
@font-face { | |||||
font-family: 'Glyphicons Halflings'; | |||||
src: ~"url('@{icon-font-path}@{icon-font-name}.eot')"; | |||||
src: ~"url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype')", | |||||
~"url('@{icon-font-path}@{icon-font-name}.woff') format('woff')", | |||||
~"url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype')", | |||||
~"url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg')"; | |||||
} | |||||
// Catchall baseclass | |||||
.glyphicon { | |||||
position: relative; | |||||
top: 1px; | |||||
display: inline-block; | |||||
font-family: 'Glyphicons Halflings'; | |||||
font-style: normal; | |||||
font-weight: normal; | |||||
line-height: 1; | |||||
-webkit-font-smoothing: antialiased; | |||||
-moz-osx-font-smoothing: grayscale; | |||||
} | |||||
// Individual icons | |||||
.glyphicon-asterisk { &:before { content: "\2a"; } } | |||||
.glyphicon-plus { &:before { content: "\2b"; } } | |||||
.glyphicon-euro { &:before { content: "\20ac"; } } | |||||
.glyphicon-minus { &:before { content: "\2212"; } } | |||||
.glyphicon-cloud { &:before { content: "\2601"; } } | |||||
.glyphicon-envelope { &:before { content: "\2709"; } } | |||||
.glyphicon-pencil { &:before { content: "\270f"; } } | |||||
.glyphicon-glass { &:before { content: "\e001"; } } | |||||
.glyphicon-music { &:before { content: "\e002"; } } | |||||
.glyphicon-search { &:before { content: "\e003"; } } | |||||
.glyphicon-heart { &:before { content: "\e005"; } } | |||||
.glyphicon-star { &:before { content: "\e006"; } } | |||||
.glyphicon-star-empty { &:before { content: "\e007"; } } | |||||
.glyphicon-user { &:before { content: "\e008"; } } | |||||
.glyphicon-film { &:before { content: "\e009"; } } | |||||
.glyphicon-th-large { &:before { content: "\e010"; } } | |||||
.glyphicon-th { &:before { content: "\e011"; } } | |||||
.glyphicon-th-list { &:before { content: "\e012"; } } | |||||
.glyphicon-ok { &:before { content: "\e013"; } } | |||||
.glyphicon-remove { &:before { content: "\e014"; } } | |||||
.glyphicon-zoom-in { &:before { content: "\e015"; } } | |||||
.glyphicon-zoom-out { &:before { content: "\e016"; } } | |||||
.glyphicon-off { &:before { content: "\e017"; } } | |||||
.glyphicon-signal { &:before { content: "\e018"; } } | |||||
.glyphicon-cog { &:before { content: "\e019"; } } | |||||
.glyphicon-trash { &:before { content: "\e020"; } } | |||||
.glyphicon-home { &:before { content: "\e021"; } } | |||||
.glyphicon-file { &:before { content: "\e022"; } } | |||||
.glyphicon-time { &:before { content: "\e023"; } } | |||||
.glyphicon-road { &:before { content: "\e024"; } } | |||||
.glyphicon-download-alt { &:before { content: "\e025"; } } | |||||
.glyphicon-download { &:before { content: "\e026"; } } | |||||
.glyphicon-upload { &:before { content: "\e027"; } } | |||||
.glyphicon-inbox { &:before { content: "\e028"; } } | |||||
.glyphicon-play-circle { &:before { content: "\e029"; } } | |||||
.glyphicon-repeat { &:before { content: "\e030"; } } | |||||
.glyphicon-refresh { &:before { content: "\e031"; } } | |||||
.glyphicon-list-alt { &:before { content: "\e032"; } } | |||||
.glyphicon-lock { &:before { content: "\e033"; } } | |||||
.glyphicon-flag { &:before { content: "\e034"; } } | |||||
.glyphicon-headphones { &:before { content: "\e035"; } } | |||||
.glyphicon-volume-off { &:before { content: "\e036"; } } | |||||
.glyphicon-volume-down { &:before { content: "\e037"; } } | |||||
.glyphicon-volume-up { &:before { content: "\e038"; } } | |||||
.glyphicon-qrcode { &:before { content: "\e039"; } } | |||||
.glyphicon-barcode { &:before { content: "\e040"; } } | |||||
.glyphicon-tag { &:before { content: "\e041"; } } | |||||
.glyphicon-tags { &:before { content: "\e042"; } } | |||||
.glyphicon-book { &:before { content: "\e043"; } } | |||||
.glyphicon-bookmark { &:before { content: "\e044"; } } | |||||
.glyphicon-print { &:before { content: "\e045"; } } | |||||
.glyphicon-camera { &:before { content: "\e046"; } } | |||||
.glyphicon-font { &:before { content: "\e047"; } } | |||||
.glyphicon-bold { &:before { content: "\e048"; } } | |||||
.glyphicon-italic { &:before { content: "\e049"; } } | |||||
.glyphicon-text-height { &:before { content: "\e050"; } } | |||||
.glyphicon-text-width { &:before { content: "\e051"; } } | |||||
.glyphicon-align-left { &:before { content: "\e052"; } } | |||||
.glyphicon-align-center { &:before { content: "\e053"; } } | |||||
.glyphicon-align-right { &:before { content: "\e054"; } } | |||||
.glyphicon-align-justify { &:before { content: "\e055"; } } | |||||
.glyphicon-list { &:before { content: "\e056"; } } | |||||
.glyphicon-indent-left { &:before { content: "\e057"; } } | |||||
.glyphicon-indent-right { &:before { content: "\e058"; } } | |||||
.glyphicon-facetime-video { &:before { content: "\e059"; } } | |||||
.glyphicon-picture { &:before { content: "\e060"; } } | |||||
.glyphicon-map-marker { &:before { content: "\e062"; } } | |||||
.glyphicon-adjust { &:before { content: "\e063"; } } | |||||
.glyphicon-tint { &:before { content: "\e064"; } } | |||||
.glyphicon-edit { &:before { content: "\e065"; } } | |||||
.glyphicon-share { &:before { content: "\e066"; } } | |||||
.glyphicon-check { &:before { content: "\e067"; } } | |||||
.glyphicon-move { &:before { content: "\e068"; } } | |||||
.glyphicon-step-backward { &:before { content: "\e069"; } } | |||||
.glyphicon-fast-backward { &:before { content: "\e070"; } } | |||||
.glyphicon-backward { &:before { content: "\e071"; } } | |||||
.glyphicon-play { &:before { content: "\e072"; } } | |||||
.glyphicon-pause { &:before { content: "\e073"; } } | |||||
.glyphicon-stop { &:before { content: "\e074"; } } | |||||
.glyphicon-forward { &:before { content: "\e075"; } } | |||||
.glyphicon-fast-forward { &:before { content: "\e076"; } } | |||||
.glyphicon-step-forward { &:before { content: "\e077"; } } | |||||
.glyphicon-eject { &:before { content: "\e078"; } } | |||||
.glyphicon-chevron-left { &:before { content: "\e079"; } } | |||||
.glyphicon-chevron-right { &:before { content: "\e080"; } } | |||||
.glyphicon-plus-sign { &:before { content: "\e081"; } } | |||||
.glyphicon-minus-sign { &:before { content: "\e082"; } } | |||||
.glyphicon-remove-sign { &:before { content: "\e083"; } } | |||||
.glyphicon-ok-sign { &:before { content: "\e084"; } } | |||||
.glyphicon-question-sign { &:before { content: "\e085"; } } | |||||
.glyphicon-info-sign { &:before { content: "\e086"; } } | |||||
.glyphicon-screenshot { &:before { content: "\e087"; } } | |||||
.glyphicon-remove-circle { &:before { content: "\e088"; } } | |||||
.glyphicon-ok-circle { &:before { content: "\e089"; } } | |||||
.glyphicon-ban-circle { &:before { content: "\e090"; } } | |||||
.glyphicon-arrow-left { &:before { content: "\e091"; } } | |||||
.glyphicon-arrow-right { &:before { content: "\e092"; } } | |||||
.glyphicon-arrow-up { &:before { content: "\e093"; } } | |||||
.glyphicon-arrow-down { &:before { content: "\e094"; } } | |||||
.glyphicon-share-alt { &:before { content: "\e095"; } } | |||||
.glyphicon-resize-full { &:before { content: "\e096"; } } | |||||
.glyphicon-resize-small { &:before { content: "\e097"; } } | |||||
.glyphicon-exclamation-sign { &:before { content: "\e101"; } } | |||||
.glyphicon-gift { &:before { content: "\e102"; } } | |||||
.glyphicon-leaf { &:before { content: "\e103"; } } | |||||
.glyphicon-fire { &:before { content: "\e104"; } } | |||||
.glyphicon-eye-open { &:before { content: "\e105"; } } | |||||
.glyphicon-eye-close { &:before { content: "\e106"; } } | |||||
.glyphicon-warning-sign { &:before { content: "\e107"; } } | |||||
.glyphicon-plane { &:before { content: "\e108"; } } | |||||
.glyphicon-calendar { &:before { content: "\e109"; } } | |||||
.glyphicon-random { &:before { content: "\e110"; } } | |||||
.glyphicon-comment { &:before { content: "\e111"; } } | |||||
.glyphicon-magnet { &:before { content: "\e112"; } } | |||||
.glyphicon-chevron-up { &:before { content: "\e113"; } } | |||||
.glyphicon-chevron-down { &:before { content: "\e114"; } } | |||||
.glyphicon-retweet { &:before { content: "\e115"; } } | |||||
.glyphicon-shopping-cart { &:before { content: "\e116"; } } | |||||
.glyphicon-folder-close { &:before { content: "\e117"; } } | |||||
.glyphicon-folder-open { &:before { content: "\e118"; } } | |||||
.glyphicon-resize-vertical { &:before { content: "\e119"; } } | |||||
.glyphicon-resize-horizontal { &:before { content: "\e120"; } } | |||||
.glyphicon-hdd { &:before { content: "\e121"; } } | |||||
.glyphicon-bullhorn { &:before { content: "\e122"; } } | |||||
.glyphicon-bell { &:before { content: "\e123"; } } | |||||
.glyphicon-certificate { &:before { content: "\e124"; } } | |||||
.glyphicon-thumbs-up { &:before { content: "\e125"; } } | |||||
.glyphicon-thumbs-down { &:before { content: "\e126"; } } | |||||
.glyphicon-hand-right { &:before { content: "\e127"; } } | |||||
.glyphicon-hand-left { &:before { content: "\e128"; } } | |||||
.glyphicon-hand-up { &:before { content: "\e129"; } } | |||||
.glyphicon-hand-down { &:before { content: "\e130"; } } | |||||
.glyphicon-circle-arrow-right { &:before { content: "\e131"; } } | |||||
.glyphicon-circle-arrow-left { &:before { content: "\e132"; } } | |||||
.glyphicon-circle-arrow-up { &:before { content: "\e133"; } } | |||||
.glyphicon-circle-arrow-down { &:before { content: "\e134"; } } | |||||
.glyphicon-globe { &:before { content: "\e135"; } } | |||||
.glyphicon-wrench { &:before { content: "\e136"; } } | |||||
.glyphicon-tasks { &:before { content: "\e137"; } } | |||||
.glyphicon-filter { &:before { content: "\e138"; } } | |||||
.glyphicon-briefcase { &:before { content: "\e139"; } } | |||||
.glyphicon-fullscreen { &:before { content: "\e140"; } } | |||||
.glyphicon-dashboard { &:before { content: "\e141"; } } | |||||
.glyphicon-paperclip { &:before { content: "\e142"; } } | |||||
.glyphicon-heart-empty { &:before { content: "\e143"; } } | |||||
.glyphicon-link { &:before { content: "\e144"; } } | |||||
.glyphicon-phone { &:before { content: "\e145"; } } | |||||
.glyphicon-pushpin { &:before { content: "\e146"; } } | |||||
.glyphicon-usd { &:before { content: "\e148"; } } | |||||
.glyphicon-gbp { &:before { content: "\e149"; } } | |||||
.glyphicon-sort { &:before { content: "\e150"; } } | |||||
.glyphicon-sort-by-alphabet { &:before { content: "\e151"; } } | |||||
.glyphicon-sort-by-alphabet-alt { &:before { content: "\e152"; } } | |||||
.glyphicon-sort-by-order { &:before { content: "\e153"; } } | |||||
.glyphicon-sort-by-order-alt { &:before { content: "\e154"; } } | |||||
.glyphicon-sort-by-attributes { &:before { content: "\e155"; } } | |||||
.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } } | |||||
.glyphicon-unchecked { &:before { content: "\e157"; } } | |||||
.glyphicon-expand { &:before { content: "\e158"; } } | |||||
.glyphicon-collapse-down { &:before { content: "\e159"; } } | |||||
.glyphicon-collapse-up { &:before { content: "\e160"; } } | |||||
.glyphicon-log-in { &:before { content: "\e161"; } } | |||||
.glyphicon-flash { &:before { content: "\e162"; } } | |||||
.glyphicon-log-out { &:before { content: "\e163"; } } | |||||
.glyphicon-new-window { &:before { content: "\e164"; } } | |||||
.glyphicon-record { &:before { content: "\e165"; } } | |||||
.glyphicon-save { &:before { content: "\e166"; } } | |||||
.glyphicon-open { &:before { content: "\e167"; } } | |||||
.glyphicon-saved { &:before { content: "\e168"; } } | |||||
.glyphicon-import { &:before { content: "\e169"; } } | |||||
.glyphicon-export { &:before { content: "\e170"; } } | |||||
.glyphicon-send { &:before { content: "\e171"; } } | |||||
.glyphicon-floppy-disk { &:before { content: "\e172"; } } | |||||
.glyphicon-floppy-saved { &:before { content: "\e173"; } } | |||||
.glyphicon-floppy-remove { &:before { content: "\e174"; } } | |||||
.glyphicon-floppy-save { &:before { content: "\e175"; } } | |||||
.glyphicon-floppy-open { &:before { content: "\e176"; } } | |||||
.glyphicon-credit-card { &:before { content: "\e177"; } } | |||||
.glyphicon-transfer { &:before { content: "\e178"; } } | |||||
.glyphicon-cutlery { &:before { content: "\e179"; } } | |||||
.glyphicon-header { &:before { content: "\e180"; } } | |||||
.glyphicon-compressed { &:before { content: "\e181"; } } | |||||
.glyphicon-earphone { &:before { content: "\e182"; } } | |||||
.glyphicon-phone-alt { &:before { content: "\e183"; } } | |||||
.glyphicon-tower { &:before { content: "\e184"; } } | |||||
.glyphicon-stats { &:before { content: "\e185"; } } | |||||
.glyphicon-sd-video { &:before { content: "\e186"; } } | |||||
.glyphicon-hd-video { &:before { content: "\e187"; } } | |||||
.glyphicon-subtitles { &:before { content: "\e188"; } } | |||||
.glyphicon-sound-stereo { &:before { content: "\e189"; } } | |||||
.glyphicon-sound-dolby { &:before { content: "\e190"; } } | |||||
.glyphicon-sound-5-1 { &:before { content: "\e191"; } } | |||||
.glyphicon-sound-6-1 { &:before { content: "\e192"; } } | |||||
.glyphicon-sound-7-1 { &:before { content: "\e193"; } } | |||||
.glyphicon-copyright-mark { &:before { content: "\e194"; } } | |||||
.glyphicon-registration-mark { &:before { content: "\e195"; } } | |||||
.glyphicon-cloud-download { &:before { content: "\e197"; } } | |||||
.glyphicon-cloud-upload { &:before { content: "\e198"; } } | |||||
.glyphicon-tree-conifer { &:before { content: "\e199"; } } | |||||
.glyphicon-tree-deciduous { &:before { content: "\e200"; } } |
@ -0,0 +1,84 @@ | |||||
// | |||||
// Grid system | |||||
// -------------------------------------------------- | |||||
// Container widths | |||||
// | |||||
// Set the container width, and override it for fixed navbars in media queries. | |||||
.container { | |||||
.container-fixed(); | |||||
@media (min-width: @screen-sm-min) { | |||||
width: @container-sm; | |||||
} | |||||
@media (min-width: @screen-md-min) { | |||||
width: @container-md; | |||||
} | |||||
@media (min-width: @screen-lg-min) { | |||||
width: @container-lg; | |||||
} | |||||
} | |||||
// Fluid container | |||||
// | |||||
// Utilizes the mixin meant for fixed width containers, but without any defined | |||||
// width for fluid, full width layouts. | |||||
.container-fluid { | |||||
.container-fixed(); | |||||
} | |||||
// Row | |||||
// | |||||
// Rows contain and clear the floats of your columns. | |||||
.row { | |||||
.make-row(); | |||||
} | |||||
// Columns | |||||
// | |||||
// Common styles for small and large grid columns | |||||
.make-grid-columns(); | |||||
// Extra small grid | |||||
// | |||||
// Columns, offsets, pushes, and pulls for extra small devices like | |||||
// smartphones. | |||||
.make-grid(xs); | |||||
// Small grid | |||||
// | |||||
// Columns, offsets, pushes, and pulls for the small device range, from phones | |||||
// to tablets. | |||||
@media (min-width: @screen-sm-min) { | |||||
.make-grid(sm); | |||||
} | |||||
// Medium grid | |||||
// | |||||
// Columns, offsets, pushes, and pulls for the desktop device range. | |||||
@media (min-width: @screen-md-min) { | |||||
.make-grid(md); | |||||
} | |||||
// Large grid | |||||
// | |||||
// Columns, offsets, pushes, and pulls for the large desktop device range. | |||||
@media (min-width: @screen-lg-min) { | |||||
.make-grid(lg); | |||||
} |
@ -0,0 +1,162 @@ | |||||
// | |||||
// Input groups | |||||
// -------------------------------------------------- | |||||
// Base styles | |||||
// ------------------------- | |||||
.input-group { | |||||
position: relative; // For dropdowns | |||||
display: table; | |||||
border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table | |||||
// Undo padding and float of grid classes | |||||
&[class*="col-"] { | |||||
float: none; | |||||
padding-left: 0; | |||||
padding-right: 0; | |||||
} | |||||
.form-control { | |||||
// Ensure that the input is always above the *appended* addon button for | |||||
// proper border colors. | |||||
position: relative; | |||||
z-index: 2; | |||||
// IE9 fubars the placeholder attribute in text inputs and the arrows on | |||||
// select elements in input groups. To fix it, we float the input. Details: | |||||
// https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855 | |||||
float: left; | |||||
width: 100%; | |||||
margin-bottom: 0; | |||||
} | |||||
} | |||||
// Sizing options | |||||
// | |||||
// Remix the default form control sizing classes into new ones for easier | |||||
// manipulation. | |||||
.input-group-lg > .form-control, | |||||
.input-group-lg > .input-group-addon, | |||||
.input-group-lg > .input-group-btn > .btn { .input-lg(); } | |||||
.input-group-sm > .form-control, | |||||
.input-group-sm > .input-group-addon, | |||||
.input-group-sm > .input-group-btn > .btn { .input-sm(); } | |||||
// Display as table-cell | |||||
// ------------------------- | |||||
.input-group-addon, | |||||
.input-group-btn, | |||||
.input-group .form-control { | |||||
display: table-cell; | |||||
&:not(:first-child):not(:last-child) { | |||||
border-radius: 0; | |||||
} | |||||
} | |||||
// Addon and addon wrapper for buttons | |||||
.input-group-addon, | |||||
.input-group-btn { | |||||
width: 1%; | |||||
white-space: nowrap; | |||||
vertical-align: middle; // Match the inputs | |||||
} | |||||
// Text input groups | |||||
// ------------------------- | |||||
.input-group-addon { | |||||
padding: @padding-base-vertical @padding-base-horizontal; | |||||
font-size: @font-size-base; | |||||
font-weight: normal; | |||||
line-height: 1; | |||||
color: @input-color; | |||||
text-align: center; | |||||
background-color: @input-group-addon-bg; | |||||
border: 1px solid @input-group-addon-border-color; | |||||
border-radius: @border-radius-base; | |||||
// Sizing | |||||
&.input-sm { | |||||
padding: @padding-small-vertical @padding-small-horizontal; | |||||
font-size: @font-size-small; | |||||
border-radius: @border-radius-small; | |||||
} | |||||
&.input-lg { | |||||
padding: @padding-large-vertical @padding-large-horizontal; | |||||
font-size: @font-size-large; | |||||
border-radius: @border-radius-large; | |||||
} | |||||
// Nuke default margins from checkboxes and radios to vertically center within. | |||||
input[type="radio"], | |||||
input[type="checkbox"] { | |||||
margin-top: 0; | |||||
} | |||||
} | |||||
// Reset rounded corners | |||||
.input-group .form-control:first-child, | |||||
.input-group-addon:first-child, | |||||
.input-group-btn:first-child > .btn, | |||||
.input-group-btn:first-child > .btn-group > .btn, | |||||
.input-group-btn:first-child > .dropdown-toggle, | |||||
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), | |||||
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { | |||||
.border-right-radius(0); | |||||
} | |||||
.input-group-addon:first-child { | |||||
border-right: 0; | |||||
} | |||||
.input-group .form-control:last-child, | |||||
.input-group-addon:last-child, | |||||
.input-group-btn:last-child > .btn, | |||||
.input-group-btn:last-child > .btn-group > .btn, | |||||
.input-group-btn:last-child > .dropdown-toggle, | |||||
.input-group-btn:first-child > .btn:not(:first-child), | |||||
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { | |||||
.border-left-radius(0); | |||||
} | |||||
.input-group-addon:last-child { | |||||
border-left: 0; | |||||
} | |||||
// Button input groups | |||||
// ------------------------- | |||||
.input-group-btn { | |||||
position: relative; | |||||
// Jankily prevent input button groups from wrapping with `white-space` and | |||||
// `font-size` in combination with `inline-block` on buttons. | |||||
font-size: 0; | |||||
white-space: nowrap; | |||||
// Negative margin for spacing, position for bringing hovered/focused/actived | |||||
// element above the siblings. | |||||
> .btn { | |||||
position: relative; | |||||
+ .btn { | |||||
margin-left: -1px; | |||||
} | |||||
// Bring the "active" button to the front | |||||
&:hover, | |||||
&:focus, | |||||
&:active { | |||||
z-index: 2; | |||||
} | |||||
} | |||||
// Negative margin to only have a 1px border between the two | |||||
&:first-child { | |||||
> .btn, | |||||
> .btn-group { | |||||
margin-right: -1px; | |||||
} | |||||
} | |||||
&:last-child { | |||||
> .btn, | |||||
> .btn-group { | |||||
margin-left: -1px; | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,44 @@ | |||||
// | |||||
// Jumbotron | |||||
// -------------------------------------------------- | |||||
.jumbotron { | |||||
padding: @jumbotron-padding; | |||||
margin-bottom: @jumbotron-padding; | |||||
color: @jumbotron-color; | |||||
background-color: @jumbotron-bg; | |||||
h1, | |||||
.h1 { | |||||
color: @jumbotron-heading-color; | |||||
} | |||||
p { | |||||
margin-bottom: (@jumbotron-padding / 2); | |||||
font-size: @jumbotron-font-size; | |||||
font-weight: 200; | |||||
} | |||||
.container & { | |||||
border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container | |||||
} | |||||
.container { | |||||
max-width: 100%; | |||||
} | |||||
@media screen and (min-width: @screen-sm-min) { | |||||
padding-top: (@jumbotron-padding * 1.6); | |||||
padding-bottom: (@jumbotron-padding * 1.6); | |||||
.container & { | |||||
padding-left: (@jumbotron-padding * 2); | |||||
padding-right: (@jumbotron-padding * 2); | |||||
} | |||||
h1, | |||||
.h1 { | |||||
font-size: (@font-size-base * 4.5); | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,64 @@ | |||||
// | |||||
// Labels | |||||
// -------------------------------------------------- | |||||
.label { | |||||
display: inline; | |||||
padding: .2em .6em .3em; | |||||
font-size: 75%; | |||||
font-weight: bold; | |||||
line-height: 1; | |||||
color: @label-color; | |||||
text-align: center; | |||||
white-space: nowrap; | |||||
vertical-align: baseline; | |||||
border-radius: .25em; | |||||
// Add hover effects, but only for links | |||||
&[href] { | |||||
&:hover, | |||||
&:focus { | |||||
color: @label-link-hover-color; | |||||
text-decoration: none; | |||||
cursor: pointer; | |||||
} | |||||
} | |||||
// Empty labels collapse automatically (not available in IE8) | |||||
&:empty { | |||||
display: none; | |||||
} | |||||
// Quick fix for labels in buttons | |||||
.btn & { | |||||
position: relative; | |||||
top: -1px; | |||||
} | |||||
} | |||||
// Colors | |||||
// Contextual variations (linked labels get darker on :hover) | |||||
.label-default { | |||||
.label-variant(@label-default-bg); | |||||
} | |||||
.label-primary { | |||||
.label-variant(@label-primary-bg); | |||||
} | |||||
.label-success { | |||||
.label-variant(@label-success-bg); | |||||
} | |||||
.label-info { | |||||
.label-variant(@label-info-bg); | |||||
} | |||||
.label-warning { | |||||
.label-variant(@label-warning-bg); | |||||
} | |||||
.label-danger { | |||||
.label-variant(@label-danger-bg); | |||||
} |
@ -0,0 +1,110 @@ | |||||
// | |||||
// List groups | |||||
// -------------------------------------------------- | |||||
// Base class | |||||
// | |||||
// Easily usable on <ul>, <ol>, or <div>. | |||||
.list-group { | |||||
// No need to set list-style: none; since .list-group-item is block level | |||||
margin-bottom: 20px; | |||||
padding-left: 0; // reset padding because ul and ol | |||||
} | |||||
// Individual list items | |||||
// | |||||
// Use on `li`s or `div`s within the `.list-group` parent. | |||||
.list-group-item { | |||||
position: relative; | |||||
display: block; | |||||
padding: 10px 15px; | |||||
// Place the border on the list items and negative margin up for better styling | |||||
margin-bottom: -1px; | |||||
background-color: @list-group-bg; | |||||
border: 1px solid @list-group-border; | |||||
// Round the first and last items | |||||
&:first-child { | |||||
.border-top-radius(@list-group-border-radius); | |||||
} | |||||
&:last-child { | |||||
margin-bottom: 0; | |||||
.border-bottom-radius(@list-group-border-radius); | |||||
} | |||||
// Align badges within list items | |||||
> .badge { | |||||
float: right; | |||||
} | |||||
> .badge + .badge { | |||||
margin-right: 5px; | |||||
} | |||||
} | |||||
// Linked list items | |||||
// | |||||
// Use anchor elements instead of `li`s or `div`s to create linked list items. | |||||
// Includes an extra `.active` modifier class for showing selected items. | |||||
a.list-group-item { | |||||
color: @list-group-link-color; | |||||
.list-group-item-heading { | |||||
color: @list-group-link-heading-color; | |||||
} | |||||
// Hover state | |||||
&:hover, | |||||
&:focus { | |||||
text-decoration: none; | |||||
background-color: @list-group-hover-bg; | |||||
} | |||||
// Active class on item itself, not parent | |||||
&.active, | |||||
&.active:hover, | |||||
&.active:focus { | |||||
z-index: 2; // Place active items above their siblings for proper border styling | |||||
color: @list-group-active-color; | |||||
background-color: @list-group-active-bg; | |||||
border-color: @list-group-active-border; | |||||
// Force color to inherit for custom content | |||||
.list-group-item-heading { | |||||
color: inherit; | |||||
} | |||||
.list-group-item-text { | |||||
color: @list-group-active-text-color; | |||||
} | |||||
} | |||||
} | |||||
// Contextual variants | |||||
// | |||||
// Add modifier classes to change text and background color on individual items. | |||||
// Organizationally, this must come after the `:hover` states. | |||||
.list-group-item-variant(success; @state-success-bg; @state-success-text); | |||||
.list-group-item-variant(info; @state-info-bg; @state-info-text); | |||||
.list-group-item-variant(warning; @state-warning-bg; @state-warning-text); | |||||
.list-group-item-variant(danger; @state-danger-bg; @state-danger-text); | |||||
// Custom content options | |||||
// | |||||
// Extra classes for creating well-formatted content within `.list-group-item`s. | |||||
.list-group-item-heading { | |||||
margin-top: 0; | |||||
margin-bottom: 5px; | |||||
} | |||||
.list-group-item-text { | |||||
margin-bottom: 0; | |||||
line-height: 1.3; | |||||
} |
@ -0,0 +1,56 @@ | |||||
// Media objects | |||||
// Source: http://stubbornella.org/content/?p=497 | |||||
// -------------------------------------------------- | |||||
// Common styles | |||||
// ------------------------- | |||||
// Clear the floats | |||||
.media, | |||||
.media-body { | |||||
overflow: hidden; | |||||
zoom: 1; | |||||
} | |||||
// Proper spacing between instances of .media | |||||
.media, | |||||
.media .media { | |||||
margin-top: 15px; | |||||
} | |||||
.media:first-child { | |||||
margin-top: 0; | |||||
} | |||||
// For images and videos, set to block | |||||
.media-object { | |||||
display: block; | |||||
} | |||||
// Reset margins on headings for tighter default spacing | |||||
.media-heading { | |||||
margin: 0 0 5px; | |||||
} | |||||
// Media image alignment | |||||
// ------------------------- | |||||
.media { | |||||
> .pull-left { | |||||
margin-right: 10px; | |||||
} | |||||
> .pull-right { | |||||
margin-left: 10px; | |||||
} | |||||
} | |||||
// Media list variation | |||||
// ------------------------- | |||||
// Undo default ul/ol styles | |||||
.media-list { | |||||
padding-left: 0; | |||||
list-style: none; | |||||
} |
@ -0,0 +1,929 @@ | |||||
// | |||||
// Mixins | |||||
// -------------------------------------------------- | |||||
// Utilities | |||||
// ------------------------- | |||||
// Clearfix | |||||
// Source: http://nicolasgallagher.com/micro-clearfix-hack/ | |||||
// | |||||
// 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. | |||||
.clearfix() { | |||||
&:before, | |||||
&:after { | |||||
content: " "; // 1 | |||||
display: table; // 2 | |||||
} | |||||
&:after { | |||||
clear: both; | |||||
} | |||||
} | |||||
// WebKit-style focus | |||||
.tab-focus() { | |||||
// Default | |||||
outline: thin dotted; | |||||
// WebKit | |||||
outline: 5px auto -webkit-focus-ring-color; | |||||
outline-offset: -2px; | |||||
} | |||||
// Center-align a block level element | |||||
.center-block() { | |||||
display: block; | |||||
margin-left: auto; | |||||
margin-right: auto; | |||||
} | |||||
// Sizing shortcuts | |||||
.size(@width; @height) { | |||||
width: @width; | |||||
height: @height; | |||||
} | |||||
.square(@size) { | |||||
.size(@size; @size); | |||||
} | |||||
// Placeholder text | |||||
.placeholder(@color: @input-color-placeholder) { | |||||
&::-moz-placeholder { color: @color; // Firefox | |||||
opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526 | |||||
&:-ms-input-placeholder { color: @color; } // Internet Explorer 10+ | |||||
&::-webkit-input-placeholder { color: @color; } // Safari and Chrome | |||||
} | |||||
// Text overflow | |||||
// Requires inline-block or block for proper styling | |||||
.text-overflow() { | |||||
overflow: hidden; | |||||
text-overflow: ellipsis; | |||||
white-space: nowrap; | |||||
} | |||||
// CSS image replacement | |||||
// | |||||
// Heads up! v3 launched with 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()`. Note | |||||
// that we cannot chain the mixins together in Less, so they are repeated. | |||||
// | |||||
// 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(); | |||||
} | |||||
// CSS3 PROPERTIES | |||||
// -------------------------------------------------- | |||||
// 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; | |||||
} | |||||
// 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 the | |||||
// standard `box-shadow` property. | |||||
.box-shadow(@shadow) { | |||||
-webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1 | |||||
box-shadow: @shadow; | |||||
} | |||||
// Transitions | |||||
.transition(@transition) { | |||||
-webkit-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-transform(@transition) { | |||||
-webkit-transition: -webkit-transform @transition; | |||||
-moz-transition: -moz-transform @transition; | |||||
-o-transition: -o-transform @transition; | |||||
transition: transform @transition; | |||||
} | |||||
// Transformations | |||||
.rotate(@degrees) { | |||||
-webkit-transform: rotate(@degrees); | |||||
-ms-transform: rotate(@degrees); // IE9 only | |||||
transform: rotate(@degrees); | |||||
} | |||||
.scale(@ratio; @ratio-y...) { | |||||
-webkit-transform: scale(@ratio, @ratio-y); | |||||
-ms-transform: scale(@ratio, @ratio-y); // IE9 only | |||||
transform: scale(@ratio, @ratio-y); | |||||
} | |||||
.translate(@x; @y) { | |||||
-webkit-transform: translate(@x, @y); | |||||
-ms-transform: translate(@x, @y); // IE9 only | |||||
transform: translate(@x, @y); | |||||
} | |||||
.skew(@x; @y) { | |||||
-webkit-transform: skew(@x, @y); | |||||
-ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ | |||||
transform: skew(@x, @y); | |||||
} | |||||
.translate3d(@x; @y; @z) { | |||||
-webkit-transform: translate3d(@x, @y, @z); | |||||
transform: translate3d(@x, @y, @z); | |||||
} | |||||
.rotateX(@degrees) { | |||||
-webkit-transform: rotateX(@degrees); | |||||
-ms-transform: rotateX(@degrees); // IE9 only | |||||
transform: rotateX(@degrees); | |||||
} | |||||
.rotateY(@degrees) { | |||||
-webkit-transform: rotateY(@degrees); | |||||
-ms-transform: rotateY(@degrees); // IE9 only | |||||
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; | |||||
} | |||||
// Animations | |||||
.animation(@animation) { | |||||
-webkit-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; | |||||
} | |||||
// 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; | |||||
} | |||||
// Box sizing | |||||
.box-sizing(@boxmodel) { | |||||
-webkit-box-sizing: @boxmodel; | |||||
-moz-box-sizing: @boxmodel; | |||||
box-sizing: @boxmodel; | |||||
} | |||||
// User select | |||||
// For selecting text on the page | |||||
.user-select(@select) { | |||||
-webkit-user-select: @select; | |||||
-moz-user-select: @select; | |||||
-ms-user-select: @select; // IE10+ | |||||
user-select: @select; | |||||
} | |||||
// Resize anything | |||||
.resizable(@direction) { | |||||
resize: @direction; // Options: horizontal, vertical, both | |||||
overflow: auto; // Safari fix | |||||
} | |||||
// 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; | |||||
} | |||||
// Opacity | |||||
.opacity(@opacity) { | |||||
opacity: @opacity; | |||||
// IE8 filter | |||||
@opacity-ie: (@opacity * 100); | |||||
filter: ~"alpha(opacity=@{opacity-ie})"; | |||||
} | |||||
// 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, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+ | |||||
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: 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: 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: 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: 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: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); | |||||
} | |||||
} | |||||
// 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)")); | |||||
} | |||||
// Retina images | |||||
// | |||||
// Short retina mixin for setting background-image and -size | |||||
.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; | |||||
} | |||||
} | |||||
// 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 | |||||
} | |||||
// COMPONENT MIXINS | |||||
// -------------------------------------------------- | |||||
// 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; | |||||
} | |||||
// 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; | |||||
} | |||||
} | |||||
& > .panel-footer { | |||||
+ .panel-collapse .panel-body { | |||||
border-bottom-color: @border; | |||||
} | |||||
} | |||||
} | |||||
// 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%); | |||||
} | |||||
} | |||||
// 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, | |||||
&.@{state}:hover > th { | |||||
background-color: darken(@background, 5%); | |||||
} | |||||
} | |||||
} | |||||
// List Groups | |||||
// ------------------------- | |||||
.list-group-item-variant(@state; @background; @color) { | |||||
.list-group-item-@{state} { | |||||
color: @color; | |||||
background-color: @background; | |||||
a& { | |||||
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; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
// 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; | |||||
&:hover, | |||||
&:focus, | |||||
&:active, | |||||
&.active, | |||||
.open .dropdown-toggle& { | |||||
color: @color; | |||||
background-color: darken(@background, 8%); | |||||
border-color: darken(@border, 12%); | |||||
} | |||||
&:active, | |||||
&.active, | |||||
.open .dropdown-toggle& { | |||||
background-image: none; | |||||
} | |||||
&.disabled, | |||||
&[disabled], | |||||
fieldset[disabled] & { | |||||
&, | |||||
&:hover, | |||||
&: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; | |||||
} | |||||
// Pagination | |||||
// ------------------------- | |||||
.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) { | |||||
> li { | |||||
> a, | |||||
> span { | |||||
padding: @padding-vertical @padding-horizontal; | |||||
font-size: @font-size; | |||||
} | |||||
&:first-child { | |||||
> a, | |||||
> span { | |||||
.border-left-radius(@border-radius); | |||||
} | |||||
} | |||||
&:last-child { | |||||
> a, | |||||
> span { | |||||
.border-right-radius(@border-radius); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
// Labels | |||||
// ------------------------- | |||||
.label-variant(@color) { | |||||
background-color: @color; | |||||
&[href] { | |||||
&:hover, | |||||
&:focus { | |||||
background-color: darken(@color, 10%); | |||||
} | |||||
} | |||||
} | |||||
// Contextual backgrounds | |||||
// ------------------------- | |||||
.bg-variant(@color) { | |||||
background-color: @color; | |||||
a&:hover { | |||||
background-color: darken(@color, 10%); | |||||
} | |||||
} | |||||
// Typography | |||||
// ------------------------- | |||||
.text-emphasis-variant(@color) { | |||||
color: @color; | |||||
a&:hover { | |||||
color: darken(@color, 10%); | |||||
} | |||||
} | |||||
// 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); | |||||
} | |||||
// Progress bars | |||||
// ------------------------- | |||||
.progress-bar-variant(@color) { | |||||
background-color: @color; | |||||
.progress-striped & { | |||||
#gradient > .striped(); | |||||
} | |||||
} | |||||
// Responsive utilities | |||||
// ------------------------- | |||||
// More easily include all the states for responsive-utilities.less. | |||||
.responsive-visibility() { | |||||
display: block !important; | |||||
table& { display: table; } | |||||
tr& { display: table-row !important; } | |||||
th&, | |||||
td& { display: table-cell !important; } | |||||
} | |||||
.responsive-invisibility() { | |||||
display: none !important; | |||||
} | |||||
// Grid System | |||||
// ----------- | |||||
// Centered container element | |||||
.container-fixed() { | |||||
margin-right: auto; | |||||
margin-left: auto; | |||||
padding-left: (@grid-gutter-width / 2); | |||||
padding-right: (@grid-gutter-width / 2); | |||||
&:extend(.clearfix all); | |||||
} | |||||
// Creates a wrapper for a series of columns | |||||
.make-row(@gutter: @grid-gutter-width) { | |||||
margin-left: (@gutter / -2); | |||||
margin-right: (@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) { | |||||
@media (min-width: @screen-xs-min) { | |||||
margin-left: percentage((@columns / @grid-columns)); | |||||
} | |||||
} | |||||
.make-xs-column-push(@columns) { | |||||
@media (min-width: @screen-xs-min) { | |||||
left: percentage((@columns / @grid-columns)); | |||||
} | |||||
} | |||||
.make-xs-column-pull(@columns) { | |||||
@media (min-width: @screen-xs-min) { | |||||
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)); | |||||
} | |||||
} | |||||
// 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) when (@index = 1) { // 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) when (@index = 1) { // 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) { | |||||
.col-@{class}-push-@{index} { | |||||
left: percentage((@index / @grid-columns)); | |||||
} | |||||
} | |||||
.calc-grid-column(@index, @class, @type) when (@type = pull) { | |||||
.col-@{class}-pull-@{index} { | |||||
right: percentage((@index / @grid-columns)); | |||||
} | |||||
} | |||||
.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); | |||||
} | |||||
// 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 { | |||||
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-focus-border` 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; | |||||
} | |||||
} |
@ -0,0 +1,139 @@ | |||||
// | |||||
// Modals | |||||
// -------------------------------------------------- | |||||
// .modal-open - body class for killing the scroll | |||||
// .modal - container to scroll within | |||||
// .modal-dialog - positioning shell for the actual modal | |||||
// .modal-content - actual modal w/ bg and corners and shit | |||||
// Kill the scroll on the body | |||||
.modal-open { | |||||
overflow: hidden; | |||||
} | |||||
// Container that the modal scrolls within | |||||
.modal { | |||||
display: none; | |||||
overflow: auto; | |||||
overflow-y: scroll; | |||||
position: fixed; | |||||
top: 0; | |||||
right: 0; | |||||
bottom: 0; | |||||
left: 0; | |||||
z-index: @zindex-modal; | |||||
-webkit-overflow-scrolling: touch; | |||||
// Prevent Chrome on Windows from adding a focus outline. For details, see | |||||
// https://github.com/twbs/bootstrap/pull/10951. | |||||
outline: 0; | |||||
// When fading in the modal, animate it to slide down | |||||
&.fade .modal-dialog { | |||||
.translate(0, -25%); | |||||
.transition-transform(~"0.3s ease-out"); | |||||
} | |||||
&.in .modal-dialog { .translate(0, 0)} | |||||
} | |||||
// Shell div to position the modal with bottom padding | |||||
.modal-dialog { | |||||
position: relative; | |||||
width: auto; | |||||
margin: 10px; | |||||
} | |||||
// Actual modal | |||||
.modal-content { | |||||
position: relative; | |||||
background-color: @modal-content-bg; | |||||
border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc) | |||||
border: 1px solid @modal-content-border-color; | |||||
border-radius: @border-radius-large; | |||||
.box-shadow(0 3px 9px rgba(0,0,0,.5)); | |||||
background-clip: padding-box; | |||||
// Remove focus outline from opened modal | |||||
outline: none; | |||||
} | |||||
// Modal background | |||||
.modal-backdrop { | |||||
position: fixed; | |||||
top: 0; | |||||
right: 0; | |||||
bottom: 0; | |||||
left: 0; | |||||
z-index: @zindex-modal-background; | |||||
background-color: @modal-backdrop-bg; | |||||
// Fade for backdrop | |||||
&.fade { .opacity(0); } | |||||
&.in { .opacity(@modal-backdrop-opacity); } | |||||
} | |||||
// Modal header | |||||
// Top section of the modal w/ title and dismiss | |||||
.modal-header { | |||||
padding: @modal-title-padding; | |||||
border-bottom: 1px solid @modal-header-border-color; | |||||
min-height: (@modal-title-padding + @modal-title-line-height); | |||||
} | |||||
// Close icon | |||||
.modal-header .close { | |||||
margin-top: -2px; | |||||
} | |||||
// Title text within header | |||||
.modal-title { | |||||
margin: 0; | |||||
line-height: @modal-title-line-height; | |||||
} | |||||
// Modal body | |||||
// Where all modal content resides (sibling of .modal-header and .modal-footer) | |||||
.modal-body { | |||||
position: relative; | |||||
padding: @modal-inner-padding; | |||||
} | |||||
// Footer (for actions) | |||||
.modal-footer { | |||||
margin-top: 15px; | |||||
padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding; | |||||
text-align: right; // right align buttons | |||||
border-top: 1px solid @modal-footer-border-color; | |||||
&:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons | |||||
// Properly space out buttons | |||||
.btn + .btn { | |||||
margin-left: 5px; | |||||
margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs | |||||
} | |||||
// but override that for button groups | |||||
.btn-group .btn + .btn { | |||||
margin-left: -1px; | |||||
} | |||||
// and override it for block buttons as well | |||||
.btn-block + .btn-block { | |||||
margin-left: 0; | |||||
} | |||||
} | |||||
// Scale up the modal | |||||
@media (min-width: @screen-sm-min) { | |||||
// Automatically set modal's width for larger viewports | |||||
.modal-dialog { | |||||
width: @modal-md; | |||||
margin: 30px auto; | |||||
} | |||||
.modal-content { | |||||
.box-shadow(0 5px 15px rgba(0,0,0,.5)); | |||||
} | |||||
// Modal sizes | |||||
.modal-sm { width: @modal-sm; } | |||||
} | |||||
@media (min-width: @screen-md-min) { | |||||
.modal-lg { width: @modal-lg; } | |||||
} |
@ -0,0 +1,616 @@ | |||||
// | |||||
// Navbars | |||||
// -------------------------------------------------- | |||||
// Wrapper and base class | |||||
// | |||||
// Provide a static navbar from which we expand to create full-width, fixed, and | |||||
// other navbar variations. | |||||
.navbar { | |||||
position: relative; | |||||
min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode) | |||||
margin-bottom: @navbar-margin-bottom; | |||||
border: 1px solid transparent; | |||||
// Prevent floats from breaking the navbar | |||||
&:extend(.clearfix all); | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
border-radius: @navbar-border-radius; | |||||
} | |||||
} | |||||
// Navbar heading | |||||
// | |||||
// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy | |||||
// styling of responsive aspects. | |||||
.navbar-header { | |||||
&:extend(.clearfix all); | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
float: left; | |||||
} | |||||
} | |||||
// Navbar collapse (body) | |||||
// | |||||
// Group your navbar content into this for easy collapsing and expanding across | |||||
// various device sizes. By default, this content is collapsed when <768px, but | |||||
// will expand past that for a horizontal display. | |||||
// | |||||
// To start (on mobile devices) the navbar links, forms, and buttons are stacked | |||||
// vertically and include a `max-height` to overflow in case you have too much | |||||
// content for the user's viewport. | |||||
.navbar-collapse { | |||||
max-height: @navbar-collapse-max-height; | |||||
overflow-x: visible; | |||||
padding-right: @navbar-padding-horizontal; | |||||
padding-left: @navbar-padding-horizontal; | |||||
border-top: 1px solid transparent; | |||||
box-shadow: inset 0 1px 0 rgba(255,255,255,.1); | |||||
&:extend(.clearfix all); | |||||
-webkit-overflow-scrolling: touch; | |||||
&.in { | |||||
overflow-y: auto; | |||||
} | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
width: auto; | |||||
border-top: 0; | |||||
box-shadow: none; | |||||
&.collapse { | |||||
display: block !important; | |||||
height: auto !important; | |||||
padding-bottom: 0; // Override default setting | |||||
overflow: visible !important; | |||||
} | |||||
&.in { | |||||
overflow-y: visible; | |||||
} | |||||
// Undo the collapse side padding for navbars with containers to ensure | |||||
// alignment of right-aligned contents. | |||||
.navbar-fixed-top &, | |||||
.navbar-static-top &, | |||||
.navbar-fixed-bottom & { | |||||
padding-left: 0; | |||||
padding-right: 0; | |||||
} | |||||
} | |||||
} | |||||
// Both navbar header and collapse | |||||
// | |||||
// When a container is present, change the behavior of the header and collapse. | |||||
.container, | |||||
.container-fluid { | |||||
> .navbar-header, | |||||
> .navbar-collapse { | |||||
margin-right: -@navbar-padding-horizontal; | |||||
margin-left: -@navbar-padding-horizontal; | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
margin-right: 0; | |||||
margin-left: 0; | |||||
} | |||||
} | |||||
} | |||||
// | |||||
// Navbar alignment options | |||||
// | |||||
// Display the navbar across the entirety of the page or fixed it to the top or | |||||
// bottom of the page. | |||||
// Static top (unfixed, but 100% wide) navbar | |||||
.navbar-static-top { | |||||
z-index: @zindex-navbar; | |||||
border-width: 0 0 1px; | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
border-radius: 0; | |||||
} | |||||
} | |||||
// Fix the top/bottom navbars when screen real estate supports it | |||||
.navbar-fixed-top, | |||||
.navbar-fixed-bottom { | |||||
position: fixed; | |||||
right: 0; | |||||
left: 0; | |||||
z-index: @zindex-navbar-fixed; | |||||
// Undo the rounded corners | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
border-radius: 0; | |||||
} | |||||
} | |||||
.navbar-fixed-top { | |||||
top: 0; | |||||
border-width: 0 0 1px; | |||||
} | |||||
.navbar-fixed-bottom { | |||||
bottom: 0; | |||||
margin-bottom: 0; // override .navbar defaults | |||||
border-width: 1px 0 0; | |||||
} | |||||
// Brand/project name | |||||
.navbar-brand { | |||||
float: left; | |||||
padding: @navbar-padding-vertical @navbar-padding-horizontal; | |||||
font-size: @font-size-large; | |||||
line-height: @line-height-computed; | |||||
height: @navbar-height; | |||||
&:hover, | |||||
&:focus { | |||||
text-decoration: none; | |||||
} | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
.navbar > .container &, | |||||
.navbar > .container-fluid & { | |||||
margin-left: -@navbar-padding-horizontal; | |||||
} | |||||
} | |||||
} | |||||
// Navbar toggle | |||||
// | |||||
// Custom button for toggling the `.navbar-collapse`, powered by the collapse | |||||
// JavaScript plugin. | |||||
.navbar-toggle { | |||||
position: relative; | |||||
float: right; | |||||
margin-right: @navbar-padding-horizontal; | |||||
padding: 9px 10px; | |||||
.navbar-vertical-align(34px); | |||||
background-color: transparent; | |||||
background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 | |||||
border: 1px solid transparent; | |||||
border-radius: @border-radius-base; | |||||
// We remove the `outline` here, but later compensate by attaching `:hover` | |||||
// styles to `:focus`. | |||||
&:focus { | |||||
outline: none; | |||||
} | |||||
// Bars | |||||
.icon-bar { | |||||
display: block; | |||||
width: 22px; | |||||
height: 2px; | |||||
border-radius: 1px; | |||||
} | |||||
.icon-bar + .icon-bar { | |||||
margin-top: 4px; | |||||
} | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
display: none; | |||||
} | |||||
} | |||||
// Navbar nav links | |||||
// | |||||
// Builds on top of the `.nav` components with its own modifier class to make | |||||
// the nav the full height of the horizontal nav (above 768px). | |||||
.navbar-nav { | |||||
margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal; | |||||
> li > a { | |||||
padding-top: 10px; | |||||
padding-bottom: 10px; | |||||
line-height: @line-height-computed; | |||||
} | |||||
@media (max-width: @grid-float-breakpoint-max) { | |||||
// Dropdowns get custom display when collapsed | |||||
.open .dropdown-menu { | |||||
position: static; | |||||
float: none; | |||||
width: auto; | |||||
margin-top: 0; | |||||
background-color: transparent; | |||||
border: 0; | |||||
box-shadow: none; | |||||
> li > a, | |||||
.dropdown-header { | |||||
padding: 5px 15px 5px 25px; | |||||
} | |||||
> li > a { | |||||
line-height: @line-height-computed; | |||||
&:hover, | |||||
&:focus { | |||||
background-image: none; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
// Uncollapse the nav | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
float: left; | |||||
margin: 0; | |||||
> li { | |||||
float: right; | |||||
> a { | |||||
padding-top: @navbar-padding-vertical; | |||||
padding-bottom: @navbar-padding-vertical; | |||||
} | |||||
} | |||||
&.navbar-right:last-child { | |||||
margin-right: -@navbar-padding-horizontal; | |||||
} | |||||
} | |||||
} | |||||
// Component alignment | |||||
// | |||||
// Repurpose the pull utilities as their own navbar utilities to avoid specificity | |||||
// issues with parents and chaining. Only do this when the navbar is uncollapsed | |||||
// though so that navbar contents properly stack and align in mobile. | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
.navbar-left { .pull-left(); } | |||||
.navbar-right { .pull-right(); } | |||||
} | |||||
// Navbar form | |||||
// | |||||
// Extension of the `.form-inline` with some extra flavor for optimum display in | |||||
// our navbars. | |||||
.navbar-form { | |||||
margin-left: -@navbar-padding-horizontal; | |||||
margin-right: -@navbar-padding-horizontal; | |||||
padding: 10px @navbar-padding-horizontal; | |||||
border-top: 1px solid transparent; | |||||
border-bottom: 1px solid transparent; | |||||
@shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); | |||||
.box-shadow(@shadow); | |||||
// Mixin behavior for optimum display | |||||
.form-inline(); | |||||
.form-group { | |||||
@media (max-width: @grid-float-breakpoint-max) { | |||||
margin-bottom: 5px; | |||||
} | |||||
} | |||||
// Vertically center in expanded, horizontal navbar | |||||
.navbar-vertical-align(@input-height-base); | |||||
// Undo 100% width for pull classes | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
width: auto; | |||||
border: 0; | |||||
margin-left: 0; | |||||
margin-right: 0; | |||||
padding-top: 0; | |||||
padding-bottom: 0; | |||||
.box-shadow(none); | |||||
// Outdent the form if last child to line up with content down the page | |||||
&.navbar-right:last-child { | |||||
margin-right: -@navbar-padding-horizontal; | |||||
} | |||||
} | |||||
} | |||||
// Dropdown menus | |||||
// Menu position and menu carets | |||||
.navbar-nav > li > .dropdown-menu { | |||||
margin-top: 0; | |||||
.border-top-radius(0); | |||||
} | |||||
// Menu position and menu caret support for dropups via extra dropup class | |||||
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { | |||||
.border-bottom-radius(0); | |||||
} | |||||
// Buttons in navbars | |||||
// | |||||
// Vertically center a button within a navbar (when *not* in a form). | |||||
.navbar-btn { | |||||
.navbar-vertical-align(@input-height-base); | |||||
&.btn-sm { | |||||
.navbar-vertical-align(@input-height-small); | |||||
} | |||||
&.btn-xs { | |||||
.navbar-vertical-align(22); | |||||
} | |||||
} | |||||
// Text in navbars | |||||
// | |||||
// Add a class to make any element properly align itself vertically within the navbars. | |||||
.navbar-text { | |||||
.navbar-vertical-align(@line-height-computed); | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
float: left; | |||||
margin-left: @navbar-padding-horizontal; | |||||
margin-right: @navbar-padding-horizontal; | |||||
// Outdent the form if last child to line up with content down the page | |||||
&.navbar-right:last-child { | |||||
margin-right: 0; | |||||
} | |||||
} | |||||
} | |||||
// Alternate navbars | |||||
// -------------------------------------------------- | |||||
// Default navbar | |||||
.navbar-default { | |||||
background-color: @navbar-default-bg; | |||||
border-color: @navbar-default-border; | |||||
.navbar-brand { | |||||
color: @navbar-default-brand-color; | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-default-brand-hover-color; | |||||
background-color: @navbar-default-brand-hover-bg; | |||||
} | |||||
} | |||||
.navbar-text { | |||||
color: @navbar-default-color; | |||||
} | |||||
.navbar-nav { | |||||
> li > a { | |||||
color: @navbar-default-link-color; | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-default-link-hover-color; | |||||
background-color: @navbar-default-link-hover-bg; | |||||
} | |||||
} | |||||
> .active > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-default-link-active-color; | |||||
background-color: @navbar-default-link-active-bg; | |||||
} | |||||
} | |||||
> .disabled > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-default-link-disabled-color; | |||||
background-color: @navbar-default-link-disabled-bg; | |||||
} | |||||
} | |||||
} | |||||
.navbar-toggle { | |||||
border-color: @navbar-default-toggle-border-color; | |||||
&:hover, | |||||
&:focus { | |||||
background-color: @navbar-default-toggle-hover-bg; | |||||
} | |||||
.icon-bar { | |||||
background-color: @navbar-default-toggle-icon-bar-bg; | |||||
} | |||||
} | |||||
.navbar-collapse, | |||||
.navbar-form { | |||||
border-color: @navbar-default-border; | |||||
} | |||||
// Dropdown menu items | |||||
.navbar-nav { | |||||
// Remove background color from open dropdown | |||||
> .open > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
background-color: @navbar-default-link-active-bg; | |||||
color: @navbar-default-link-active-color; | |||||
} | |||||
} | |||||
@media (max-width: @grid-float-breakpoint-max) { | |||||
// Dropdowns get custom display when collapsed | |||||
.open .dropdown-menu { | |||||
> li > a { | |||||
color: @navbar-default-link-color; | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-default-link-hover-color; | |||||
background-color: @navbar-default-link-hover-bg; | |||||
} | |||||
} | |||||
> .active > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-default-link-active-color; | |||||
background-color: @navbar-default-link-active-bg; | |||||
} | |||||
} | |||||
> .disabled > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-default-link-disabled-color; | |||||
background-color: @navbar-default-link-disabled-bg; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
// Links in navbars | |||||
// | |||||
// Add a class to ensure links outside the navbar nav are colored correctly. | |||||
.navbar-link { | |||||
color: @navbar-default-link-color; | |||||
&:hover { | |||||
color: @navbar-default-link-hover-color; | |||||
} | |||||
} | |||||
} | |||||
// Inverse navbar | |||||
.navbar-inverse { | |||||
background-color: @navbar-inverse-bg; | |||||
border-color: @navbar-inverse-border; | |||||
.navbar-brand { | |||||
color: @navbar-inverse-brand-color; | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-inverse-brand-hover-color; | |||||
background-color: @navbar-inverse-brand-hover-bg; | |||||
} | |||||
} | |||||
.navbar-text { | |||||
color: @navbar-inverse-color; | |||||
} | |||||
.navbar-nav { | |||||
> li > a { | |||||
color: @navbar-inverse-link-color; | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-inverse-link-hover-color; | |||||
background-color: @navbar-inverse-link-hover-bg; | |||||
} | |||||
} | |||||
> .active > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-inverse-link-active-color; | |||||
background-color: @navbar-inverse-link-active-bg; | |||||
} | |||||
} | |||||
> .disabled > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-inverse-link-disabled-color; | |||||
background-color: @navbar-inverse-link-disabled-bg; | |||||
} | |||||
} | |||||
} | |||||
// Darken the responsive nav toggle | |||||
.navbar-toggle { | |||||
border-color: @navbar-inverse-toggle-border-color; | |||||
&:hover, | |||||
&:focus { | |||||
background-color: @navbar-inverse-toggle-hover-bg; | |||||
} | |||||
.icon-bar { | |||||
background-color: @navbar-inverse-toggle-icon-bar-bg; | |||||
} | |||||
} | |||||
.navbar-collapse, | |||||
.navbar-form { | |||||
border-color: darken(@navbar-inverse-bg, 7%); | |||||
} | |||||
// Dropdowns | |||||
.navbar-nav { | |||||
> .open > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
background-color: @navbar-inverse-link-active-bg; | |||||
color: @navbar-inverse-link-active-color; | |||||
} | |||||
} | |||||
@media (max-width: @grid-float-breakpoint-max) { | |||||
// Dropdowns get custom display | |||||
.open .dropdown-menu { | |||||
> .dropdown-header { | |||||
border-color: @navbar-inverse-border; | |||||
} | |||||
.divider { | |||||
background-color: @navbar-inverse-border; | |||||
} | |||||
> li > a { | |||||
color: @navbar-inverse-link-color; | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-inverse-link-hover-color; | |||||
background-color: @navbar-inverse-link-hover-bg; | |||||
} | |||||
} | |||||
> .active > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-inverse-link-active-color; | |||||
background-color: @navbar-inverse-link-active-bg; | |||||
} | |||||
} | |||||
> .disabled > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
color: @navbar-inverse-link-disabled-color; | |||||
background-color: @navbar-inverse-link-disabled-bg; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
.navbar-link { | |||||
color: @navbar-inverse-link-color; | |||||
&:hover { | |||||
color: @navbar-inverse-link-hover-color; | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,242 @@ | |||||
// | |||||
// Navs | |||||
// -------------------------------------------------- | |||||
// Base class | |||||
// -------------------------------------------------- | |||||
.nav { | |||||
margin-bottom: 0; | |||||
padding-left: 0; // Override default ul/ol | |||||
list-style: none; | |||||
&:extend(.clearfix all); | |||||
> li { | |||||
position: relative; | |||||
display: block; | |||||
> a { | |||||
position: relative; | |||||
display: block; | |||||
padding: @nav-link-padding; | |||||
&:hover, | |||||
&:focus { | |||||
text-decoration: none; | |||||
background-color: @nav-link-hover-bg; | |||||
} | |||||
} | |||||
// Disabled state sets text to gray and nukes hover/tab effects | |||||
&.disabled > a { | |||||
color: @nav-disabled-link-color; | |||||
&:hover, | |||||
&:focus { | |||||
color: @nav-disabled-link-hover-color; | |||||
text-decoration: none; | |||||
background-color: transparent; | |||||
cursor: not-allowed; | |||||
} | |||||
} | |||||
} | |||||
// Open dropdowns | |||||
.open > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
background-color: @nav-link-hover-bg; | |||||
border-color: @link-color; | |||||
} | |||||
} | |||||
// Nav dividers (deprecated with v3.0.1) | |||||
// | |||||
// This should have been removed in v3 with the dropping of `.nav-list`, but | |||||
// we missed it. We don't currently support this anywhere, but in the interest | |||||
// of maintaining backward compatibility in case you use it, it's deprecated. | |||||
.nav-divider { | |||||
.nav-divider(); | |||||
} | |||||
// Prevent IE8 from misplacing imgs | |||||
// | |||||
// See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989 | |||||
> li > a > img { | |||||
max-width: none; | |||||
} | |||||
} | |||||
// Tabs | |||||
// ------------------------- | |||||
// Give the tabs something to sit on | |||||
.nav-tabs { | |||||
border-bottom: 1px solid @nav-tabs-border-color; | |||||
> li { | |||||
float: left; | |||||
// Make the list-items overlay the bottom border | |||||
margin-bottom: -1px; | |||||
// Actual tabs (as links) | |||||
> a { | |||||
margin-right: 2px; | |||||
line-height: @line-height-base; | |||||
border: 1px solid transparent; | |||||
border-radius: @border-radius-base @border-radius-base 0 0; | |||||
&:hover { | |||||
border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color; | |||||
} | |||||
} | |||||
// Active state, and its :hover to override normal :hover | |||||
&.active > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
color: @nav-tabs-active-link-hover-color; | |||||
background-color: @nav-tabs-active-link-hover-bg; | |||||
border: 1px solid @nav-tabs-active-link-hover-border-color; | |||||
border-bottom-color: transparent; | |||||
cursor: default; | |||||
} | |||||
} | |||||
} | |||||
// pulling this in mainly for less shorthand | |||||
&.nav-justified { | |||||
.nav-justified(); | |||||
.nav-tabs-justified(); | |||||
} | |||||
} | |||||
// Pills | |||||
// ------------------------- | |||||
.nav-pills { | |||||
> li { | |||||
float: left; | |||||
// Links rendered as pills | |||||
> a { | |||||
border-radius: @nav-pills-border-radius; | |||||
} | |||||
+ li { | |||||
margin-left: 2px; | |||||
} | |||||
// Active state | |||||
&.active > a { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
color: @nav-pills-active-link-hover-color; | |||||
background-color: @nav-pills-active-link-hover-bg; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
// Stacked pills | |||||
.nav-stacked { | |||||
> li { | |||||
float: none; | |||||
+ li { | |||||
margin-top: 2px; | |||||
margin-left: 0; // no need for this gap between nav items | |||||
} | |||||
} | |||||
} | |||||
// Nav variations | |||||
// -------------------------------------------------- | |||||
// Justified nav links | |||||
// ------------------------- | |||||
.nav-justified { | |||||
width: 100%; | |||||
> li { | |||||
float: none; | |||||
> a { | |||||
text-align: center; | |||||
margin-bottom: 5px; | |||||
} | |||||
} | |||||
> .dropdown .dropdown-menu { | |||||
top: auto; | |||||
left: auto; | |||||
} | |||||
@media (min-width: @screen-sm-min) { | |||||
> li { | |||||
display: table-cell; | |||||
width: 1%; | |||||
> a { | |||||
margin-bottom: 0; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
// Move borders to anchors instead of bottom of list | |||||
// | |||||
// Mixin for adding on top the shared `.nav-justified` styles for our tabs | |||||
.nav-tabs-justified { | |||||
border-bottom: 0; | |||||
> li > a { | |||||
// Override margin from .nav-tabs | |||||
margin-right: 0; | |||||
border-radius: @border-radius-base; | |||||
} | |||||
> .active > a, | |||||
> .active > a:hover, | |||||
> .active > a:focus { | |||||
border: 1px solid @nav-tabs-justified-link-border-color; | |||||
} | |||||
@media (min-width: @screen-sm-min) { | |||||
> li > a { | |||||
border-bottom: 1px solid @nav-tabs-justified-link-border-color; | |||||
border-radius: @border-radius-base @border-radius-base 0 0; | |||||
} | |||||
> .active > a, | |||||
> .active > a:hover, | |||||
> .active > a:focus { | |||||
border-bottom-color: @nav-tabs-justified-active-link-border-color; | |||||
} | |||||
} | |||||
} | |||||
// Tabbable tabs | |||||
// ------------------------- | |||||
// Hide tabbable panes to start, show them when `.active` | |||||
.tab-content { | |||||
> .tab-pane { | |||||
display: none; | |||||
} | |||||
> .active { | |||||
display: block; | |||||
} | |||||
} | |||||
// Dropdowns | |||||
// ------------------------- | |||||
// Specific dropdowns | |||||
.nav-tabs .dropdown-menu { | |||||
// make dropdown border overlap tab border | |||||
margin-top: -1px; | |||||
// Remove the top rounded corners here since there is a hard edge above the menu | |||||
.border-top-radius(0); | |||||
} |
@ -0,0 +1,423 @@ | |||||
/*! normalize.css v3.0.0 | MIT License | git.io/normalize */ | |||||
// | |||||
// 1. Set default font family to sans-serif. | |||||
// 2. Prevent iOS text size adjust after orientation change, without disabling | |||||
// user zoom. | |||||
// | |||||
html { | |||||
font-family: sans-serif; // 1 | |||||
-ms-text-size-adjust: 100%; // 2 | |||||
-webkit-text-size-adjust: 100%; // 2 | |||||
} | |||||
// | |||||
// Remove default margin. | |||||
// | |||||
body { | |||||
margin: 0; | |||||
} | |||||
// HTML5 display definitions | |||||
// ========================================================================== | |||||
// | |||||
// Correct `block` display not defined in IE 8/9. | |||||
// | |||||
article, | |||||
aside, | |||||
details, | |||||
figcaption, | |||||
figure, | |||||
footer, | |||||
header, | |||||
hgroup, | |||||
main, | |||||
nav, | |||||
section, | |||||
summary { | |||||
display: block; | |||||
} | |||||
// | |||||
// 1. Correct `inline-block` display not defined in IE 8/9. | |||||
// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. | |||||
// | |||||
audio, | |||||
canvas, | |||||
progress, | |||||
video { | |||||
display: inline-block; // 1 | |||||
vertical-align: baseline; // 2 | |||||
} | |||||
// | |||||
// Prevent modern browsers from displaying `audio` without controls. | |||||
// Remove excess height in iOS 5 devices. | |||||
// | |||||
audio:not([controls]) { | |||||
display: none; | |||||
height: 0; | |||||
} | |||||
// | |||||
// Address `[hidden]` styling not present in IE 8/9. | |||||
// Hide the `template` element in IE, Safari, and Firefox < 22. | |||||
// | |||||
[hidden], | |||||
template { | |||||
display: none; | |||||
} | |||||
// Links | |||||
// ========================================================================== | |||||
// | |||||
// Remove the gray background color from active links in IE 10. | |||||
// | |||||
a { | |||||
background: transparent; | |||||
} | |||||
// | |||||
// Improve readability when focused and also mouse hovered in all browsers. | |||||
// | |||||
a:active, | |||||
a:hover { | |||||
outline: 0; | |||||
} | |||||
// Text-level semantics | |||||
// ========================================================================== | |||||
// | |||||
// Address styling not present in IE 8/9, Safari 5, and Chrome. | |||||
// | |||||
abbr[title] { | |||||
border-bottom: 1px dotted; | |||||
} | |||||
// | |||||
// Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. | |||||
// | |||||
b, | |||||
strong { | |||||
font-weight: bold; | |||||
} | |||||
// | |||||
// Address styling not present in Safari 5 and Chrome. | |||||
// | |||||
dfn { | |||||
font-style: italic; | |||||
} | |||||
// | |||||
// Address variable `h1` font-size and margin within `section` and `article` | |||||
// contexts in Firefox 4+, Safari 5, and Chrome. | |||||
// | |||||
h1 { | |||||
font-size: 2em; | |||||
margin: 0.67em 0; | |||||
} | |||||
// | |||||
// Address styling not present in IE 8/9. | |||||
// | |||||
mark { | |||||
background: #ff0; | |||||
color: #000; | |||||
} | |||||
// | |||||
// Address inconsistent and variable font size in all browsers. | |||||
// | |||||
small { | |||||
font-size: 80%; | |||||
} | |||||
// | |||||
// Prevent `sub` and `sup` affecting `line-height` in all browsers. | |||||
// | |||||
sub, | |||||
sup { | |||||
font-size: 75%; | |||||
line-height: 0; | |||||
position: relative; | |||||
vertical-align: baseline; | |||||
} | |||||
sup { | |||||
top: -0.5em; | |||||
} | |||||
sub { | |||||
bottom: -0.25em; | |||||
} | |||||
// Embedded content | |||||
// ========================================================================== | |||||
// | |||||
// Remove border when inside `a` element in IE 8/9. | |||||
// | |||||
img { | |||||
border: 0; | |||||
} | |||||
// | |||||
// Correct overflow displayed oddly in IE 9. | |||||
// | |||||
svg:not(:root) { | |||||
overflow: hidden; | |||||
} | |||||
// Grouping content | |||||
// ========================================================================== | |||||
// | |||||
// Address margin not present in IE 8/9 and Safari 5. | |||||
// | |||||
figure { | |||||
margin: 1em 40px; | |||||
} | |||||
// | |||||
// Address differences between Firefox and other browsers. | |||||
// | |||||
hr { | |||||
-moz-box-sizing: content-box; | |||||
box-sizing: content-box; | |||||
height: 0; | |||||
} | |||||
// | |||||
// Contain overflow in all browsers. | |||||
// | |||||
pre { | |||||
overflow: auto; | |||||
} | |||||
// | |||||
// Address odd `em`-unit font size rendering in all browsers. | |||||
// | |||||
code, | |||||
kbd, | |||||
pre, | |||||
samp { | |||||
font-family: monospace, monospace; | |||||
font-size: 1em; | |||||
} | |||||
// Forms | |||||
// ========================================================================== | |||||
// | |||||
// Known limitation: by default, Chrome and Safari on OS X allow very limited | |||||
// styling of `select`, unless a `border` property is set. | |||||
// | |||||
// | |||||
// 1. Correct color not being inherited. | |||||
// Known issue: affects color of disabled elements. | |||||
// 2. Correct font properties not being inherited. | |||||
// 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. | |||||
// | |||||
button, | |||||
input, | |||||
optgroup, | |||||
select, | |||||
textarea { | |||||
color: inherit; // 1 | |||||
font: inherit; // 2 | |||||
margin: 0; // 3 | |||||
} | |||||
// | |||||
// Address `overflow` set to `hidden` in IE 8/9/10. | |||||
// | |||||
button { | |||||
overflow: visible; | |||||
} | |||||
// | |||||
// Address inconsistent `text-transform` inheritance for `button` and `select`. | |||||
// All other form control elements do not inherit `text-transform` values. | |||||
// Correct `button` style inheritance in Firefox, IE 8+, and Opera | |||||
// Correct `select` style inheritance in Firefox. | |||||
// | |||||
button, | |||||
select { | |||||
text-transform: none; | |||||
} | |||||
// | |||||
// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` | |||||
// and `video` controls. | |||||
// 2. Correct inability to style clickable `input` types in iOS. | |||||
// 3. Improve usability and consistency of cursor style between image-type | |||||
// `input` and others. | |||||
// | |||||
button, | |||||
html input[type="button"], // 1 | |||||
input[type="reset"], | |||||
input[type="submit"] { | |||||
-webkit-appearance: button; // 2 | |||||
cursor: pointer; // 3 | |||||
} | |||||
// | |||||
// Re-set default cursor for disabled elements. | |||||
// | |||||
button[disabled], | |||||
html input[disabled] { | |||||
cursor: default; | |||||
} | |||||
// | |||||
// Remove inner padding and border in Firefox 4+. | |||||
// | |||||
button::-moz-focus-inner, | |||||
input::-moz-focus-inner { | |||||
border: 0; | |||||
padding: 0; | |||||
} | |||||
// | |||||
// Address Firefox 4+ setting `line-height` on `input` using `!important` in | |||||
// the UA stylesheet. | |||||
// | |||||
input { | |||||
line-height: normal; | |||||
} | |||||
// | |||||
// It's recommended that you don't attempt to style these elements. | |||||
// Firefox's implementation doesn't respect box-sizing, padding, or width. | |||||
// | |||||
// 1. Address box sizing set to `content-box` in IE 8/9/10. | |||||
// 2. Remove excess padding in IE 8/9/10. | |||||
// | |||||
input[type="checkbox"], | |||||
input[type="radio"] { | |||||
box-sizing: border-box; // 1 | |||||
padding: 0; // 2 | |||||
} | |||||
// | |||||
// Fix the cursor style for Chrome's increment/decrement buttons. For certain | |||||
// `font-size` values of the `input`, it causes the cursor style of the | |||||
// decrement button to change from `default` to `text`. | |||||
// | |||||
input[type="number"]::-webkit-inner-spin-button, | |||||
input[type="number"]::-webkit-outer-spin-button { | |||||
height: auto; | |||||
} | |||||
// | |||||
// 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. | |||||
// 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome | |||||
// (include `-moz` to future-proof). | |||||
// | |||||
input[type="search"] { | |||||
-webkit-appearance: textfield; // 1 | |||||
-moz-box-sizing: content-box; | |||||
-webkit-box-sizing: content-box; // 2 | |||||
box-sizing: content-box; | |||||
} | |||||
// | |||||
// Remove inner padding and search cancel button in Safari and Chrome on OS X. | |||||
// Safari (but not Chrome) clips the cancel button when the search input has | |||||
// padding (and `textfield` appearance). | |||||
// | |||||
input[type="search"]::-webkit-search-cancel-button, | |||||
input[type="search"]::-webkit-search-decoration { | |||||
-webkit-appearance: none; | |||||
} | |||||
// | |||||
// Define consistent border, margin, and padding. | |||||
// | |||||
fieldset { | |||||
border: 1px solid #c0c0c0; | |||||
margin: 0 2px; | |||||
padding: 0.35em 0.625em 0.75em; | |||||
} | |||||
// | |||||
// 1. Correct `color` not being inherited in IE 8/9. | |||||
// 2. Remove padding so people aren't caught out if they zero out fieldsets. | |||||
// | |||||
legend { | |||||
border: 0; // 1 | |||||
padding: 0; // 2 | |||||
} | |||||
// | |||||
// Remove default vertical scrollbar in IE 8/9. | |||||
// | |||||
textarea { | |||||
overflow: auto; | |||||
} | |||||
// | |||||
// Don't inherit the `font-weight` (applied by a rule above). | |||||
// NOTE: the default cannot safely be changed in Chrome and Safari on OS X. | |||||
// | |||||
optgroup { | |||||
font-weight: bold; | |||||
} | |||||
// Tables | |||||
// ========================================================================== | |||||
// | |||||
// Remove most spacing between table cells. | |||||
// | |||||
table { | |||||
border-collapse: collapse; | |||||
border-spacing: 0; | |||||
} | |||||
td, | |||||
th { | |||||
padding: 0; | |||||
} |
@ -0,0 +1,55 @@ | |||||
// | |||||
// Pager pagination | |||||
// -------------------------------------------------- | |||||
.pager { | |||||
padding-left: 0; | |||||
margin: @line-height-computed 0; | |||||
list-style: none; | |||||
text-align: center; | |||||
&:extend(.clearfix all); | |||||
li { | |||||
display: inline; | |||||
> a, | |||||
> span { | |||||
display: inline-block; | |||||
padding: 5px 14px; | |||||
background-color: @pager-bg; | |||||
border: 1px solid @pager-border; | |||||
border-radius: @pager-border-radius; | |||||
} | |||||
> a:hover, | |||||
> a:focus { | |||||
text-decoration: none; | |||||
background-color: @pager-hover-bg; | |||||
} | |||||
} | |||||
.next { | |||||
> a, | |||||
> span { | |||||
float: right; | |||||
} | |||||
} | |||||
.previous { | |||||
> a, | |||||
> span { | |||||
float: left; | |||||
} | |||||
} | |||||
.disabled { | |||||
> a, | |||||
> a:hover, | |||||
> a:focus, | |||||
> span { | |||||
color: @pager-disabled-color; | |||||
background-color: @pager-bg; | |||||
cursor: not-allowed; | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,88 @@ | |||||
// | |||||
// Pagination (multiple pages) | |||||
// -------------------------------------------------- | |||||
.pagination { | |||||
display: inline-block; | |||||
padding-left: 0; | |||||
margin: @line-height-computed 0; | |||||
border-radius: @border-radius-base; | |||||
> li { | |||||
display: inline; // Remove list-style and block-level defaults | |||||
> a, | |||||
> span { | |||||
position: relative; | |||||
float: left; // Collapse white-space | |||||
padding: @padding-base-vertical @padding-base-horizontal; | |||||
line-height: @line-height-base; | |||||
text-decoration: none; | |||||
color: @pagination-color; | |||||
background-color: @pagination-bg; | |||||
border: 1px solid @pagination-border; | |||||
margin-left: -1px; | |||||
} | |||||
&:first-child { | |||||
> a, | |||||
> span { | |||||
margin-left: 0; | |||||
.border-left-radius(@border-radius-base); | |||||
} | |||||
} | |||||
&:last-child { | |||||
> a, | |||||
> span { | |||||
.border-right-radius(@border-radius-base); | |||||
} | |||||
} | |||||
} | |||||
> li > a, | |||||
> li > span { | |||||
&:hover, | |||||
&:focus { | |||||
color: @pagination-hover-color; | |||||
background-color: @pagination-hover-bg; | |||||
border-color: @pagination-hover-border; | |||||
} | |||||
} | |||||
> .active > a, | |||||
> .active > span { | |||||
&, | |||||
&:hover, | |||||
&:focus { | |||||
z-index: 2; | |||||
color: @pagination-active-color; | |||||
background-color: @pagination-active-bg; | |||||
border-color: @pagination-active-border; | |||||
cursor: default; | |||||
} | |||||
} | |||||
> .disabled { | |||||
> span, | |||||
> span:hover, | |||||
> span:focus, | |||||
> a, | |||||
> a:hover, | |||||
> a:focus { | |||||
color: @pagination-disabled-color; | |||||
background-color: @pagination-disabled-bg; | |||||
border-color: @pagination-disabled-border; | |||||
cursor: not-allowed; | |||||
} | |||||
} | |||||
} | |||||
// Sizing | |||||
// -------------------------------------------------- | |||||
// Large | |||||
.pagination-lg { | |||||
.pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large); | |||||
} | |||||
// Small | |||||
.pagination-sm { | |||||
.pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small); | |||||
} |
@ -0,0 +1,241 @@ | |||||
// | |||||
// Panels | |||||
// -------------------------------------------------- | |||||
// Base class | |||||
.panel { | |||||
margin-bottom: @line-height-computed; | |||||
background-color: @panel-bg; | |||||
border: 1px solid transparent; | |||||
border-radius: @panel-border-radius; | |||||
.box-shadow(0 1px 1px rgba(0,0,0,.05)); | |||||
} | |||||
// Panel contents | |||||
.panel-body { | |||||
padding: @panel-body-padding; | |||||
&:extend(.clearfix all); | |||||
} | |||||
// Optional heading | |||||
.panel-heading { | |||||
padding: 10px 15px; | |||||
border-bottom: 1px solid transparent; | |||||
.border-top-radius((@panel-border-radius - 1)); | |||||
> .dropdown .dropdown-toggle { | |||||
color: inherit; | |||||
} | |||||
} | |||||
// Within heading, strip any `h*` tag of its default margins for spacing. | |||||
.panel-title { | |||||
margin-top: 0; | |||||
margin-bottom: 0; | |||||
font-size: ceil((@font-size-base * 1.125)); | |||||
color: inherit; | |||||
> a { | |||||
color: inherit; | |||||
} | |||||
} | |||||
// Optional footer (stays gray in every modifier class) | |||||
.panel-footer { | |||||
padding: 10px 15px; | |||||
background-color: @panel-footer-bg; | |||||
border-top: 1px solid @panel-inner-border; | |||||
.border-bottom-radius((@panel-border-radius - 1)); | |||||
} | |||||
// List groups in panels | |||||
// | |||||
// By default, space out list group content from panel headings to account for | |||||
// any kind of custom content between the two. | |||||
.panel { | |||||
> .list-group { | |||||
margin-bottom: 0; | |||||
.list-group-item { | |||||
border-width: 1px 0; | |||||
border-radius: 0; | |||||
} | |||||
// Add border top radius for first one | |||||
&:first-child { | |||||
.list-group-item:first-child { | |||||
border-top: 0; | |||||
.border-top-radius((@panel-border-radius - 1)); | |||||
} | |||||
} | |||||
// Add border bottom radius for last one | |||||
&:last-child { | |||||
.list-group-item:last-child { | |||||
border-bottom: 0; | |||||
.border-bottom-radius((@panel-border-radius - 1)); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
// Collapse space between when there's no additional content. | |||||
.panel-heading + .list-group { | |||||
.list-group-item:first-child { | |||||
border-top-width: 0; | |||||
} | |||||
} | |||||
// Tables in panels | |||||
// | |||||
// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and | |||||
// watch it go full width. | |||||
.panel { | |||||
> .table, | |||||
> .table-responsive > .table { | |||||
margin-bottom: 0; | |||||
} | |||||
// Add border top radius for first one | |||||
> .table:first-child, | |||||
> .table-responsive:first-child > .table:first-child { | |||||
.border-top-radius((@panel-border-radius - 1)); | |||||
> thead:first-child, | |||||
> tbody:first-child { | |||||
> tr:first-child { | |||||
td:first-child, | |||||
th:first-child { | |||||
border-top-left-radius: (@panel-border-radius - 1); | |||||
} | |||||
td:last-child, | |||||
th:last-child { | |||||
border-top-right-radius: (@panel-border-radius - 1); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
// Add border bottom radius for last one | |||||
> .table:last-child, | |||||
> .table-responsive:last-child > .table:last-child { | |||||
.border-bottom-radius((@panel-border-radius - 1)); | |||||
> tbody:last-child, | |||||
> tfoot:last-child { | |||||
> tr:last-child { | |||||
td:first-child, | |||||
th:first-child { | |||||
border-bottom-left-radius: (@panel-border-radius - 1); | |||||
} | |||||
td:last-child, | |||||
th:last-child { | |||||
border-bottom-right-radius: (@panel-border-radius - 1); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
> .panel-body + .table, | |||||
> .panel-body + .table-responsive { | |||||
border-top: 1px solid @table-border-color; | |||||
} | |||||
> .table > tbody:first-child > tr:first-child th, | |||||
> .table > tbody:first-child > tr:first-child td { | |||||
border-top: 0; | |||||
} | |||||
> .table-bordered, | |||||
> .table-responsive > .table-bordered { | |||||
border: 0; | |||||
> thead, | |||||
> tbody, | |||||
> tfoot { | |||||
> tr { | |||||
> th:first-child, | |||||
> td:first-child { | |||||
border-left: 0; | |||||
} | |||||
> th:last-child, | |||||
> td:last-child { | |||||
border-right: 0; | |||||
} | |||||
} | |||||
} | |||||
> thead, | |||||
> tbody { | |||||
> tr:first-child { | |||||
> td, | |||||
> th { | |||||
border-bottom: 0; | |||||
} | |||||
} | |||||
} | |||||
> tbody, | |||||
> tfoot { | |||||
> tr:last-child { | |||||
> td, | |||||
> th { | |||||
border-bottom: 0; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
> .table-responsive { | |||||
border: 0; | |||||
margin-bottom: 0; | |||||
} | |||||
} | |||||
// Collapsable panels (aka, accordion) | |||||
// | |||||
// Wrap a series of panels in `.panel-group` to turn them into an accordion with | |||||
// the help of our collapse JavaScript plugin. | |||||
.panel-group { | |||||
margin-bottom: @line-height-computed; | |||||
// Tighten up margin so it's only between panels | |||||
.panel { | |||||
margin-bottom: 0; | |||||
border-radius: @panel-border-radius; | |||||
overflow: hidden; // crop contents when collapsed | |||||
+ .panel { | |||||
margin-top: 5px; | |||||
} | |||||
} | |||||
.panel-heading { | |||||
border-bottom: 0; | |||||
+ .panel-collapse .panel-body { | |||||
border-top: 1px solid @panel-inner-border; | |||||
} | |||||
} | |||||
.panel-footer { | |||||
border-top: 0; | |||||
+ .panel-collapse .panel-body { | |||||
border-bottom: 1px solid @panel-inner-border; | |||||
} | |||||
} | |||||
} | |||||
// Contextual variations | |||||
.panel-default { | |||||
.panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border); | |||||
} | |||||
.panel-primary { | |||||
.panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border); | |||||
} | |||||
.panel-success { | |||||
.panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border); | |||||
} | |||||
.panel-info { | |||||
.panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border); | |||||
} | |||||
.panel-warning { | |||||
.panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border); | |||||
} | |||||
.panel-danger { | |||||
.panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border); | |||||
} |
@ -0,0 +1,133 @@ | |||||
// | |||||
// Popovers | |||||
// -------------------------------------------------- | |||||
.popover { | |||||
position: absolute; | |||||
top: 0; | |||||
left: 0; | |||||
z-index: @zindex-popover; | |||||
display: none; | |||||
max-width: @popover-max-width; | |||||
padding: 1px; | |||||
text-align: left; // Reset given new insertion method | |||||
background-color: @popover-bg; | |||||
background-clip: padding-box; | |||||
border: 1px solid @popover-fallback-border-color; | |||||
border: 1px solid @popover-border-color; | |||||
border-radius: @border-radius-large; | |||||
.box-shadow(0 5px 10px rgba(0,0,0,.2)); | |||||
// Overrides for proper insertion | |||||
white-space: normal; | |||||
// Offset the popover to account for the popover arrow | |||||
&.top { margin-top: -@popover-arrow-width; } | |||||
&.right { margin-left: @popover-arrow-width; } | |||||
&.bottom { margin-top: @popover-arrow-width; } | |||||
&.left { margin-left: -@popover-arrow-width; } | |||||
} | |||||
.popover-title { | |||||
margin: 0; // reset heading margin | |||||
padding: 8px 14px; | |||||
font-size: @font-size-base; | |||||
font-weight: normal; | |||||
line-height: 18px; | |||||
background-color: @popover-title-bg; | |||||
border-bottom: 1px solid darken(@popover-title-bg, 5%); | |||||
border-radius: 5px 5px 0 0; | |||||
} | |||||
.popover-content { | |||||
padding: 9px 14px; | |||||
} | |||||
// Arrows | |||||
// | |||||
// .arrow is outer, .arrow:after is inner | |||||
.popover > .arrow { | |||||
&, | |||||
&:after { | |||||
position: absolute; | |||||
display: block; | |||||
width: 0; | |||||
height: 0; | |||||
border-color: transparent; | |||||
border-style: solid; | |||||
} | |||||
} | |||||
.popover > .arrow { | |||||
border-width: @popover-arrow-outer-width; | |||||
} | |||||
.popover > .arrow:after { | |||||
border-width: @popover-arrow-width; | |||||
content: ""; | |||||
} | |||||
.popover { | |||||
&.top > .arrow { | |||||
left: 50%; | |||||
margin-left: -@popover-arrow-outer-width; | |||||
border-bottom-width: 0; | |||||
border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback | |||||
border-top-color: @popover-arrow-outer-color; | |||||
bottom: -@popover-arrow-outer-width; | |||||
&:after { | |||||
content: " "; | |||||
bottom: 1px; | |||||
margin-left: -@popover-arrow-width; | |||||
border-bottom-width: 0; | |||||
border-top-color: @popover-arrow-color; | |||||
} | |||||
} | |||||
&.right > .arrow { | |||||
top: 50%; | |||||
left: -@popover-arrow-outer-width; | |||||
margin-top: -@popover-arrow-outer-width; | |||||
border-left-width: 0; | |||||
border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback | |||||
border-right-color: @popover-arrow-outer-color; | |||||
&:after { | |||||
content: " "; | |||||
left: 1px; | |||||
bottom: -@popover-arrow-width; | |||||
border-left-width: 0; | |||||
border-right-color: @popover-arrow-color; | |||||
} | |||||
} | |||||
&.bottom > .arrow { | |||||
left: 50%; | |||||
margin-left: -@popover-arrow-outer-width; | |||||
border-top-width: 0; | |||||
border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback | |||||
border-bottom-color: @popover-arrow-outer-color; | |||||
top: -@popover-arrow-outer-width; | |||||
&:after { | |||||
content: " "; | |||||
top: 1px; | |||||
margin-left: -@popover-arrow-width; | |||||
border-top-width: 0; | |||||
border-bottom-color: @popover-arrow-color; | |||||
} | |||||
} | |||||
&.left > .arrow { | |||||
top: 50%; | |||||
right: -@popover-arrow-outer-width; | |||||
margin-top: -@popover-arrow-outer-width; | |||||
border-right-width: 0; | |||||
border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback | |||||
border-left-color: @popover-arrow-outer-color; | |||||
&:after { | |||||
content: " "; | |||||
right: 1px; | |||||
border-right-width: 0; | |||||
border-left-color: @popover-arrow-color; | |||||
bottom: -@popover-arrow-width; | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,101 @@ | |||||
// | |||||
// Basic print styles | |||||
// -------------------------------------------------- | |||||
// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css | |||||
@media print { | |||||
* { | |||||
text-shadow: none !important; | |||||
color: #000 !important; // Black prints faster: h5bp.com/s | |||||
background: transparent !important; | |||||
box-shadow: none !important; | |||||
} | |||||
a, | |||||
a:visited { | |||||
text-decoration: underline; | |||||
} | |||||
a[href]:after { | |||||
content: " (" attr(href) ")"; | |||||
} | |||||
abbr[title]:after { | |||||
content: " (" attr(title) ")"; | |||||
} | |||||
// Don't show links for images, or javascript/internal links | |||||
a[href^="javascript:"]:after, | |||||
a[href^="#"]:after { | |||||
content: ""; | |||||
} | |||||
pre, | |||||
blockquote { | |||||
border: 1px solid #999; | |||||
page-break-inside: avoid; | |||||
} | |||||
thead { | |||||
display: table-header-group; // h5bp.com/t | |||||
} | |||||
tr, | |||||
img { | |||||
page-break-inside: avoid; | |||||
} | |||||
img { | |||||
max-width: 100% !important; | |||||
} | |||||
p, | |||||
h2, | |||||
h3 { | |||||
orphans: 3; | |||||
widows: 3; | |||||
} | |||||
h2, | |||||
h3 { | |||||
page-break-after: avoid; | |||||
} | |||||
// Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245 | |||||
// Once fixed, we can just straight up remove this. | |||||
select { | |||||
background: #fff !important; | |||||
} | |||||
// Bootstrap components | |||||
.navbar { | |||||
display: none; | |||||
} | |||||
.table { | |||||
td, | |||||
th { | |||||
background-color: #fff !important; | |||||
} | |||||
} | |||||
.btn, | |||||
.dropup > .btn { | |||||
> .caret { | |||||
border-top-color: #000 !important; | |||||
} | |||||
} | |||||
.label { | |||||
border: 1px solid #000; | |||||
} | |||||
.table { | |||||
border-collapse: collapse !important; | |||||
} | |||||
.table-bordered { | |||||
th, | |||||
td { | |||||
border: 1px solid #ddd !important; | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,80 @@ | |||||
// | |||||
// Progress bars | |||||
// -------------------------------------------------- | |||||
// Bar animations | |||||
// ------------------------- | |||||
// WebKit | |||||
@-webkit-keyframes progress-bar-stripes { | |||||
from { background-position: 40px 0; } | |||||
to { background-position: 0 0; } | |||||
} | |||||
// Spec and IE10+ | |||||
@keyframes progress-bar-stripes { | |||||
from { background-position: 40px 0; } | |||||
to { background-position: 0 0; } | |||||
} | |||||
// Bar itself | |||||
// ------------------------- | |||||
// Outer container | |||||
.progress { | |||||
overflow: hidden; | |||||
height: @line-height-computed; | |||||
margin-bottom: @line-height-computed; | |||||
background-color: @progress-bg; | |||||
border-radius: @border-radius-base; | |||||
.box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); | |||||
} | |||||
// Bar of progress | |||||
.progress-bar { | |||||
float: left; | |||||
width: 0%; | |||||
height: 100%; | |||||
font-size: @font-size-small; | |||||
line-height: @line-height-computed; | |||||
color: @progress-bar-color; | |||||
text-align: center; | |||||
background-color: @progress-bar-bg; | |||||
.box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); | |||||
.transition(width .6s ease); | |||||
} | |||||
// Striped bars | |||||
.progress-striped .progress-bar { | |||||
#gradient > .striped(); | |||||
background-size: 40px 40px; | |||||
} | |||||
// Call animation for the active one | |||||
.progress.active .progress-bar { | |||||
.animation(progress-bar-stripes 2s linear infinite); | |||||
} | |||||
// Variations | |||||
// ------------------------- | |||||
.progress-bar-success { | |||||
.progress-bar-variant(@progress-bar-success-bg); | |||||
} | |||||
.progress-bar-info { | |||||
.progress-bar-variant(@progress-bar-info-bg); | |||||
} | |||||
.progress-bar-warning { | |||||
.progress-bar-variant(@progress-bar-warning-bg); | |||||
} | |||||
.progress-bar-danger { | |||||
.progress-bar-variant(@progress-bar-danger-bg); | |||||
} |
@ -0,0 +1,92 @@ | |||||
// | |||||
// Responsive: Utility classes | |||||
// -------------------------------------------------- | |||||
// IE10 in Windows (Phone) 8 | |||||
// | |||||
// Support for responsive views via media queries is kind of borked in IE10, for | |||||
// Surface/desktop in split view and for Windows Phone 8. This particular fix | |||||
// must be accompanied by a snippet of JavaScript to sniff the user agent and | |||||
// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at | |||||
// our Getting Started page for more information on this bug. | |||||
// | |||||
// For more information, see the following: | |||||
// | |||||
// Issue: https://github.com/twbs/bootstrap/issues/10497 | |||||
// Docs: http://getbootstrap.com/getting-started/#browsers | |||||
// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ | |||||
@-ms-viewport { | |||||
width: device-width; | |||||
} | |||||
// Visibility utilities | |||||
.visible-xs, | |||||
.visible-sm, | |||||
.visible-md, | |||||
.visible-lg { | |||||
.responsive-invisibility(); | |||||
} | |||||
.visible-xs { | |||||
@media (max-width: @screen-xs-max) { | |||||
.responsive-visibility(); | |||||
} | |||||
} | |||||
.visible-sm { | |||||
@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { | |||||
.responsive-visibility(); | |||||
} | |||||
} | |||||
.visible-md { | |||||
@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { | |||||
.responsive-visibility(); | |||||
} | |||||
} | |||||
.visible-lg { | |||||
@media (min-width: @screen-lg-min) { | |||||
.responsive-visibility(); | |||||
} | |||||
} | |||||
.hidden-xs { | |||||
@media (max-width: @screen-xs-max) { | |||||
.responsive-invisibility(); | |||||
} | |||||
} | |||||
.hidden-sm { | |||||
@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { | |||||
.responsive-invisibility(); | |||||
} | |||||
} | |||||
.hidden-md { | |||||
@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { | |||||
.responsive-invisibility(); | |||||
} | |||||
} | |||||
.hidden-lg { | |||||
@media (min-width: @screen-lg-min) { | |||||
.responsive-invisibility(); | |||||
} | |||||
} | |||||
// Print utilities | |||||
// | |||||
// Media queries are placed on the inside to be mixin-friendly. | |||||
.visible-print { | |||||
.responsive-invisibility(); | |||||
@media print { | |||||
.responsive-visibility(); | |||||
} | |||||
} | |||||
.hidden-print { | |||||
@media print { | |||||
.responsive-invisibility(); | |||||
} | |||||
} |
@ -0,0 +1,134 @@ | |||||
// | |||||
// Scaffolding | |||||
// -------------------------------------------------- | |||||
// Reset the box-sizing | |||||
// | |||||
// Heads up! This reset may cause conflicts with some third-party widgets. | |||||
// For recommendations on resolving such conflicts, see | |||||
// http://getbootstrap.com/getting-started/#third-box-sizing | |||||
* { | |||||
.box-sizing(border-box); | |||||
} | |||||
*:before, | |||||
*:after { | |||||
.box-sizing(border-box); | |||||
} | |||||
// Body reset | |||||
html { | |||||
font-size: 62.5%; | |||||
-webkit-tap-highlight-color: rgba(0,0,0,0); | |||||
} | |||||
body { | |||||
font-family: @font-family-base; | |||||
font-size: @font-size-base; | |||||
line-height: @line-height-base; | |||||
color: @text-color; | |||||
background-color: @body-bg; | |||||
} | |||||
// Reset fonts for relevant elements | |||||
input, | |||||
button, | |||||
select, | |||||
textarea { | |||||
font-family: inherit; | |||||
font-size: inherit; | |||||
line-height: inherit; | |||||
} | |||||
// Links | |||||
a { | |||||
color: @link-color; | |||||
text-decoration: none; | |||||
&:hover, | |||||
&:focus { | |||||
color: @link-hover-color; | |||||
text-decoration: underline; | |||||
} | |||||
&:focus { | |||||
.tab-focus(); | |||||
} | |||||
} | |||||
// Figures | |||||
// | |||||
// We reset this here because previously Normalize had no `figure` margins. This | |||||
// ensures we don't break anyone's use of the element. | |||||
figure { | |||||
margin: 0; | |||||
} | |||||
// Images | |||||
img { | |||||
vertical-align: middle; | |||||
} | |||||
// Responsive images (ensure images don't scale beyond their parents) | |||||
.img-responsive { | |||||
.img-responsive(); | |||||
} | |||||
// Rounded corners | |||||
.img-rounded { | |||||
border-radius: @border-radius-large; | |||||
} | |||||
// Image thumbnails | |||||
// | |||||
// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`. | |||||
.img-thumbnail { | |||||
padding: @thumbnail-padding; | |||||
line-height: @line-height-base; | |||||
background-color: @thumbnail-bg; | |||||
border: 1px solid @thumbnail-border; | |||||
border-radius: @thumbnail-border-radius; | |||||
.transition(all .2s ease-in-out); | |||||
// Keep them at most 100% wide | |||||
.img-responsive(inline-block); | |||||
} | |||||
// Perfect circle | |||||
.img-circle { | |||||
border-radius: 50%; // set radius in percents | |||||
} | |||||
// Horizontal rules | |||||
hr { | |||||
margin-top: @line-height-computed; | |||||
margin-bottom: @line-height-computed; | |||||
border: 0; | |||||
border-top: 1px solid @hr-border; | |||||
} | |||||
// Only display content to screen readers | |||||
// | |||||
// See: http://a11yproject.com/posts/how-to-hide-content/ | |||||
.sr-only { | |||||
position: absolute; | |||||
width: 1px; | |||||
height: 1px; | |||||
margin: -1px; | |||||
padding: 0; | |||||
overflow: hidden; | |||||
clip: rect(0,0,0,0); | |||||
border: 0; | |||||
} |
@ -0,0 +1,233 @@ | |||||
// | |||||
// Tables | |||||
// -------------------------------------------------- | |||||
table { | |||||
max-width: 100%; | |||||
background-color: @table-bg; | |||||
} | |||||
th { | |||||
text-align: left; | |||||
} | |||||
// Baseline styles | |||||
.table { | |||||
width: 100%; | |||||
margin-bottom: @line-height-computed; | |||||
// Cells | |||||
> thead, | |||||
> tbody, | |||||
> tfoot { | |||||
> tr { | |||||
> th, | |||||
> td { | |||||
padding: @table-cell-padding; | |||||
line-height: @line-height-base; | |||||
vertical-align: top; | |||||
border-top: 1px solid @table-border-color; | |||||
} | |||||
} | |||||
} | |||||
// Bottom align for column headings | |||||
> thead > tr > th { | |||||
vertical-align: bottom; | |||||
border-bottom: 2px solid @table-border-color; | |||||
} | |||||
// Remove top border from thead by default | |||||
> caption + thead, | |||||
> colgroup + thead, | |||||
> thead:first-child { | |||||
> tr:first-child { | |||||
> th, | |||||
> td { | |||||
border-top: 0; | |||||
} | |||||
} | |||||
} | |||||
// Account for multiple tbody instances | |||||
> tbody + tbody { | |||||
border-top: 2px solid @table-border-color; | |||||
} | |||||
// Nesting | |||||
.table { | |||||
background-color: @body-bg; | |||||
} | |||||
} | |||||
// Condensed table w/ half padding | |||||
.table-condensed { | |||||
> thead, | |||||
> tbody, | |||||
> tfoot { | |||||
> tr { | |||||
> th, | |||||
> td { | |||||
padding: @table-condensed-cell-padding; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
// Bordered version | |||||
// | |||||
// Add borders all around the table and between all the columns. | |||||
.table-bordered { | |||||
border: 1px solid @table-border-color; | |||||
> thead, | |||||
> tbody, | |||||
> tfoot { | |||||
> tr { | |||||
> th, | |||||
> td { | |||||
border: 1px solid @table-border-color; | |||||
} | |||||
} | |||||
} | |||||
> thead > tr { | |||||
> th, | |||||
> td { | |||||
border-bottom-width: 2px; | |||||
} | |||||
} | |||||
} | |||||
// Zebra-striping | |||||
// | |||||
// Default zebra-stripe styles (alternating gray and transparent backgrounds) | |||||
.table-striped { | |||||
> tbody > tr:nth-child(odd) { | |||||
> td, | |||||
> th { | |||||
background-color: @table-bg-accent; | |||||
} | |||||
} | |||||
} | |||||
// Hover effect | |||||
// | |||||
// Placed here since it has to come after the potential zebra striping | |||||
.table-hover { | |||||
> tbody > tr:hover { | |||||
> td, | |||||
> th { | |||||
background-color: @table-bg-hover; | |||||
} | |||||
} | |||||
} | |||||
// Table cell sizing | |||||
// | |||||
// Reset default table behavior | |||||
table col[class*="col-"] { | |||||
position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623) | |||||
float: none; | |||||
display: table-column; | |||||
} | |||||
table { | |||||
td, | |||||
th { | |||||
&[class*="col-"] { | |||||
position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623) | |||||
float: none; | |||||
display: table-cell; | |||||
} | |||||
} | |||||
} | |||||
// Table backgrounds | |||||
// | |||||
// Exact selectors below required to override `.table-striped` and prevent | |||||
// inheritance to nested tables. | |||||
// Generate the contextual variants | |||||
.table-row-variant(active; @table-bg-active); | |||||
.table-row-variant(success; @state-success-bg); | |||||
.table-row-variant(info; @state-info-bg); | |||||
.table-row-variant(warning; @state-warning-bg); | |||||
.table-row-variant(danger; @state-danger-bg); | |||||
// Responsive tables | |||||
// | |||||
// Wrap your tables in `.table-responsive` and we'll make them mobile friendly | |||||
// by enabling horizontal scrolling. Only applies <768px. Everything above that | |||||
// will display normally. | |||||
@media (max-width: @screen-xs-max) { | |||||
.table-responsive { | |||||
width: 100%; | |||||
margin-bottom: (@line-height-computed * 0.75); | |||||
overflow-y: hidden; | |||||
overflow-x: scroll; | |||||
-ms-overflow-style: -ms-autohiding-scrollbar; | |||||
border: 1px solid @table-border-color; | |||||
-webkit-overflow-scrolling: touch; | |||||
// Tighten up spacing | |||||
> .table { | |||||
margin-bottom: 0; | |||||
// Ensure the content doesn't wrap | |||||
> thead, | |||||
> tbody, | |||||
> tfoot { | |||||
> tr { | |||||
> th, | |||||
> td { | |||||
white-space: nowrap; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
// Special overrides for the bordered tables | |||||
> .table-bordered { | |||||
border: 0; | |||||
// Nuke the appropriate borders so that the parent can handle them | |||||
> thead, | |||||
> tbody, | |||||
> tfoot { | |||||
> tr { | |||||
> th:first-child, | |||||
> td:first-child { | |||||
border-left: 0; | |||||
} | |||||
> th:last-child, | |||||
> td:last-child { | |||||
border-right: 0; | |||||
} | |||||
} | |||||
} | |||||
// Only nuke the last row's bottom-border in `tbody` and `tfoot` since | |||||
// chances are there will be only one `tr` in a `thead` and that would | |||||
// remove the border altogether. | |||||
> tbody, | |||||
> tfoot { | |||||
> tr:last-child { | |||||
> th, | |||||
> td { | |||||
border-bottom: 0; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,247 @@ | |||||
// | |||||
// Load core variables and mixins | |||||
// -------------------------------------------------- | |||||
@import "variables.less"; | |||||
@import "mixins.less"; | |||||
// | |||||
// Buttons | |||||
// -------------------------------------------------- | |||||
// Common styles | |||||
.btn-default, | |||||
.btn-primary, | |||||
.btn-success, | |||||
.btn-info, | |||||
.btn-warning, | |||||
.btn-danger { | |||||
text-shadow: 0 -1px 0 rgba(0,0,0,.2); | |||||
@shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075); | |||||
.box-shadow(@shadow); | |||||
// Reset the shadow | |||||
&:active, | |||||
&.active { | |||||
.box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); | |||||
} | |||||
} | |||||
// Mixin for generating new styles | |||||
.btn-styles(@btn-color: #555) { | |||||
#gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%)); | |||||
.reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners | |||||
background-repeat: repeat-x; | |||||
border-color: darken(@btn-color, 14%); | |||||
&:hover, | |||||
&:focus { | |||||
background-color: darken(@btn-color, 12%); | |||||
background-position: 0 -15px; | |||||
} | |||||
&:active, | |||||
&.active { | |||||
background-color: darken(@btn-color, 12%); | |||||
border-color: darken(@btn-color, 14%); | |||||
} | |||||
} | |||||
// Common styles | |||||
.btn { | |||||
// Remove the gradient for the pressed/active state | |||||
&:active, | |||||
&.active { | |||||
background-image: none; | |||||
} | |||||
} | |||||
// Apply the mixin to the buttons | |||||
.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; } | |||||
.btn-primary { .btn-styles(@btn-primary-bg); } | |||||
.btn-success { .btn-styles(@btn-success-bg); } | |||||
.btn-info { .btn-styles(@btn-info-bg); } | |||||
.btn-warning { .btn-styles(@btn-warning-bg); } | |||||
.btn-danger { .btn-styles(@btn-danger-bg); } | |||||
// | |||||
// Images | |||||
// -------------------------------------------------- | |||||
.thumbnail, | |||||
.img-thumbnail { | |||||
.box-shadow(0 1px 2px rgba(0,0,0,.075)); | |||||
} | |||||
// | |||||
// Dropdowns | |||||
// -------------------------------------------------- | |||||
.dropdown-menu > li > a:hover, | |||||
.dropdown-menu > li > a:focus { | |||||
#gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%)); | |||||
background-color: darken(@dropdown-link-hover-bg, 5%); | |||||
} | |||||
.dropdown-menu > .active > a, | |||||
.dropdown-menu > .active > a:hover, | |||||
.dropdown-menu > .active > a:focus { | |||||
#gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%)); | |||||
background-color: darken(@dropdown-link-active-bg, 5%); | |||||
} | |||||
// | |||||
// Navbar | |||||
// -------------------------------------------------- | |||||
// Default navbar | |||||
.navbar-default { | |||||
#gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg); | |||||
.reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered | |||||
border-radius: @navbar-border-radius; | |||||
@shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075); | |||||
.box-shadow(@shadow); | |||||
.navbar-nav > .active > a { | |||||
#gradient > .vertical(@start-color: darken(@navbar-default-bg, 5%); @end-color: darken(@navbar-default-bg, 2%)); | |||||
.box-shadow(inset 0 3px 9px rgba(0,0,0,.075)); | |||||
} | |||||
} | |||||
.navbar-brand, | |||||
.navbar-nav > li > a { | |||||
text-shadow: 0 1px 0 rgba(255,255,255,.25); | |||||
} | |||||
// Inverted navbar | |||||
.navbar-inverse { | |||||
#gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg); | |||||
.reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered | |||||
.navbar-nav > .active > a { | |||||
#gradient > .vertical(@start-color: @navbar-inverse-bg; @end-color: lighten(@navbar-inverse-bg, 2.5%)); | |||||
.box-shadow(inset 0 3px 9px rgba(0,0,0,.25)); | |||||
} | |||||
.navbar-brand, | |||||
.navbar-nav > li > a { | |||||
text-shadow: 0 -1px 0 rgba(0,0,0,.25); | |||||
} | |||||
} | |||||
// Undo rounded corners in static and fixed navbars | |||||
.navbar-static-top, | |||||
.navbar-fixed-top, | |||||
.navbar-fixed-bottom { | |||||
border-radius: 0; | |||||
} | |||||
// | |||||
// Alerts | |||||
// -------------------------------------------------- | |||||
// Common styles | |||||
.alert { | |||||
text-shadow: 0 1px 0 rgba(255,255,255,.2); | |||||
@shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05); | |||||
.box-shadow(@shadow); | |||||
} | |||||
// Mixin for generating new styles | |||||
.alert-styles(@color) { | |||||
#gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%)); | |||||
border-color: darken(@color, 15%); | |||||
} | |||||
// Apply the mixin to the alerts | |||||
.alert-success { .alert-styles(@alert-success-bg); } | |||||
.alert-info { .alert-styles(@alert-info-bg); } | |||||
.alert-warning { .alert-styles(@alert-warning-bg); } | |||||
.alert-danger { .alert-styles(@alert-danger-bg); } | |||||
// | |||||
// Progress bars | |||||
// -------------------------------------------------- | |||||
// Give the progress background some depth | |||||
.progress { | |||||
#gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg) | |||||
} | |||||
// Mixin for generating new styles | |||||
.progress-bar-styles(@color) { | |||||
#gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%)); | |||||
} | |||||
// Apply the mixin to the progress bars | |||||
.progress-bar { .progress-bar-styles(@progress-bar-bg); } | |||||
.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); } | |||||
.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); } | |||||
.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); } | |||||
.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); } | |||||
// | |||||
// List groups | |||||
// -------------------------------------------------- | |||||
.list-group { | |||||
border-radius: @border-radius-base; | |||||
.box-shadow(0 1px 2px rgba(0,0,0,.075)); | |||||
} | |||||
.list-group-item.active, | |||||
.list-group-item.active:hover, | |||||
.list-group-item.active:focus { | |||||
text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%); | |||||
#gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%)); | |||||
border-color: darken(@list-group-active-border, 7.5%); | |||||
} | |||||
// | |||||
// Panels | |||||
// -------------------------------------------------- | |||||
// Common styles | |||||
.panel { | |||||
.box-shadow(0 1px 2px rgba(0,0,0,.05)); | |||||
} | |||||
// Mixin for generating new styles | |||||
.panel-heading-styles(@color) { | |||||
#gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%)); | |||||
} | |||||
// Apply the mixin to the panel headings only | |||||
.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); } | |||||
.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); } | |||||
.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); } | |||||
.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); } | |||||
.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); } | |||||
.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); } | |||||
// | |||||
// Wells | |||||
// -------------------------------------------------- | |||||
.well { | |||||
#gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg); | |||||
border-color: darken(@well-bg, 10%); | |||||
@shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1); | |||||
.box-shadow(@shadow); | |||||
} |
@ -0,0 +1,36 @@ | |||||
// | |||||
// Thumbnails | |||||
// -------------------------------------------------- | |||||
// Mixin and adjust the regular image class | |||||
.thumbnail { | |||||
display: block; | |||||
padding: @thumbnail-padding; | |||||
margin-bottom: @line-height-computed; | |||||
line-height: @line-height-base; | |||||
background-color: @thumbnail-bg; | |||||
border: 1px solid @thumbnail-border; | |||||
border-radius: @thumbnail-border-radius; | |||||
.transition(all .2s ease-in-out); | |||||
> img, | |||||
a > img { | |||||
&:extend(.img-responsive); | |||||
margin-left: auto; | |||||
margin-right: auto; | |||||
} | |||||
// Add a hover state for linked versions only | |||||
a&:hover, | |||||
a&:focus, | |||||
a&.active { | |||||
border-color: @link-color; | |||||
} | |||||
// Image captions | |||||
.caption { | |||||
padding: @thumbnail-caption-padding; | |||||
color: @thumbnail-caption-color; | |||||
} | |||||
} |
@ -0,0 +1,95 @@ | |||||
// | |||||
// Tooltips | |||||
// -------------------------------------------------- | |||||
// Base class | |||||
.tooltip { | |||||
position: absolute; | |||||
z-index: @zindex-tooltip; | |||||
display: block; | |||||
visibility: visible; | |||||
font-size: @font-size-small; | |||||
line-height: 1.4; | |||||
.opacity(0); | |||||
&.in { .opacity(@tooltip-opacity); } | |||||
&.top { margin-top: -3px; padding: @tooltip-arrow-width 0; } | |||||
&.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; } | |||||
&.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; } | |||||
&.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; } | |||||
} | |||||
// Wrapper for the tooltip content | |||||
.tooltip-inner { | |||||
max-width: @tooltip-max-width; | |||||
padding: 3px 8px; | |||||
color: @tooltip-color; | |||||
text-align: center; | |||||
text-decoration: none; | |||||
background-color: @tooltip-bg; | |||||
border-radius: @border-radius-base; | |||||
} | |||||
// Arrows | |||||
.tooltip-arrow { | |||||
position: absolute; | |||||
width: 0; | |||||
height: 0; | |||||
border-color: transparent; | |||||
border-style: solid; | |||||
} | |||||
.tooltip { | |||||
&.top .tooltip-arrow { | |||||
bottom: 0; | |||||
left: 50%; | |||||
margin-left: -@tooltip-arrow-width; | |||||
border-width: @tooltip-arrow-width @tooltip-arrow-width 0; | |||||
border-top-color: @tooltip-arrow-color; | |||||
} | |||||
&.top-left .tooltip-arrow { | |||||
bottom: 0; | |||||
left: @tooltip-arrow-width; | |||||
border-width: @tooltip-arrow-width @tooltip-arrow-width 0; | |||||
border-top-color: @tooltip-arrow-color; | |||||
} | |||||
&.top-right .tooltip-arrow { | |||||
bottom: 0; | |||||
right: @tooltip-arrow-width; | |||||
border-width: @tooltip-arrow-width @tooltip-arrow-width 0; | |||||
border-top-color: @tooltip-arrow-color; | |||||
} | |||||
&.right .tooltip-arrow { | |||||
top: 50%; | |||||
left: 0; | |||||
margin-top: -@tooltip-arrow-width; | |||||
border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0; | |||||
border-right-color: @tooltip-arrow-color; | |||||
} | |||||
&.left .tooltip-arrow { | |||||
top: 50%; | |||||
right: 0; | |||||
margin-top: -@tooltip-arrow-width; | |||||
border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width; | |||||
border-left-color: @tooltip-arrow-color; | |||||
} | |||||
&.bottom .tooltip-arrow { | |||||
top: 0; | |||||
left: 50%; | |||||
margin-left: -@tooltip-arrow-width; | |||||
border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; | |||||
border-bottom-color: @tooltip-arrow-color; | |||||
} | |||||
&.bottom-left .tooltip-arrow { | |||||
top: 0; | |||||
left: @tooltip-arrow-width; | |||||
border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; | |||||
border-bottom-color: @tooltip-arrow-color; | |||||
} | |||||
&.bottom-right .tooltip-arrow { | |||||
top: 0; | |||||
right: @tooltip-arrow-width; | |||||
border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; | |||||
border-bottom-color: @tooltip-arrow-color; | |||||
} | |||||
} |
@ -0,0 +1,293 @@ | |||||
// | |||||
// Typography | |||||
// -------------------------------------------------- | |||||
// Headings | |||||
// ------------------------- | |||||
h1, h2, h3, h4, h5, h6, | |||||
.h1, .h2, .h3, .h4, .h5, .h6 { | |||||
font-family: @headings-font-family; | |||||
font-weight: @headings-font-weight; | |||||
line-height: @headings-line-height; | |||||
color: @headings-color; | |||||
small, | |||||
.small { | |||||
font-weight: normal; | |||||
line-height: 1; | |||||
color: @headings-small-color; | |||||
} | |||||
} | |||||
h1, .h1, | |||||
h2, .h2, | |||||
h3, .h3 { | |||||
margin-top: @line-height-computed; | |||||
margin-bottom: (@line-height-computed / 2); | |||||
small, | |||||
.small { | |||||
font-size: 65%; | |||||
} | |||||
} | |||||
h4, .h4, | |||||
h5, .h5, | |||||
h6, .h6 { | |||||
margin-top: (@line-height-computed / 2); | |||||
margin-bottom: (@line-height-computed / 2); | |||||
small, | |||||
.small { | |||||
font-size: 75%; | |||||
} | |||||
} | |||||
h1, .h1 { font-size: @font-size-h1; } | |||||
h2, .h2 { font-size: @font-size-h2; } | |||||
h3, .h3 { font-size: @font-size-h3; } | |||||
h4, .h4 { font-size: @font-size-h4; } | |||||
h5, .h5 { font-size: @font-size-h5; } | |||||
h6, .h6 { font-size: @font-size-h6; } | |||||
// Body text | |||||
// ------------------------- | |||||
p { | |||||
margin: 0 0 (@line-height-computed / 2); | |||||
} | |||||
.lead { | |||||
margin-bottom: @line-height-computed; | |||||
font-size: floor((@font-size-base * 1.15)); | |||||
font-weight: 200; | |||||
line-height: 1.4; | |||||
@media (min-width: @screen-sm-min) { | |||||
font-size: (@font-size-base * 1.5); | |||||
} | |||||
} | |||||
// Emphasis & misc | |||||
// ------------------------- | |||||
// Ex: 14px base font * 85% = about 12px | |||||
small, | |||||
.small { font-size: 85%; } | |||||
// Undo browser default styling | |||||
cite { font-style: normal; } | |||||
// Alignment | |||||
.text-left { text-align: left; } | |||||
.text-right { text-align: right; } | |||||
.text-center { text-align: center; } | |||||
.text-justify { text-align: justify; } | |||||
// Contextual colors | |||||
.text-muted { | |||||
color: @text-muted; | |||||
} | |||||
.text-primary { | |||||
.text-emphasis-variant(@brand-primary); | |||||
} | |||||
.text-success { | |||||
.text-emphasis-variant(@state-success-text); | |||||
} | |||||
.text-info { | |||||
.text-emphasis-variant(@state-info-text); | |||||
} | |||||
.text-warning { | |||||
.text-emphasis-variant(@state-warning-text); | |||||
} | |||||
.text-danger { | |||||
.text-emphasis-variant(@state-danger-text); | |||||
} | |||||
// Contextual backgrounds | |||||
// For now we'll leave these alongside the text classes until v4 when we can | |||||
// safely shift things around (per SemVer rules). | |||||
.bg-primary { | |||||
// Given the contrast here, this is the only class to have its color inverted | |||||
// automatically. | |||||
color: #fff; | |||||
.bg-variant(@brand-primary); | |||||
} | |||||
.bg-success { | |||||
.bg-variant(@state-success-bg); | |||||
} | |||||
.bg-info { | |||||
.bg-variant(@state-info-bg); | |||||
} | |||||
.bg-warning { | |||||
.bg-variant(@state-warning-bg); | |||||
} | |||||
.bg-danger { | |||||
.bg-variant(@state-danger-bg); | |||||
} | |||||
// Page header | |||||
// ------------------------- | |||||
.page-header { | |||||
padding-bottom: ((@line-height-computed / 2) - 1); | |||||
margin: (@line-height-computed * 2) 0 @line-height-computed; | |||||
border-bottom: 1px solid @page-header-border-color; | |||||
} | |||||
// Lists | |||||
// -------------------------------------------------- | |||||
// Unordered and Ordered lists | |||||
ul, | |||||
ol { | |||||
margin-top: 0; | |||||
margin-bottom: (@line-height-computed / 2); | |||||
ul, | |||||
ol { | |||||
margin-bottom: 0; | |||||
} | |||||
} | |||||
// List options | |||||
// Unstyled keeps list items block level, just removes default browser padding and list-style | |||||
.list-unstyled { | |||||
padding-left: 0; | |||||
list-style: none; | |||||
} | |||||
// Inline turns list items into inline-block | |||||
.list-inline { | |||||
.list-unstyled(); | |||||
margin-left: -5px; | |||||
> li { | |||||
display: inline-block; | |||||
padding-left: 5px; | |||||
padding-right: 5px; | |||||
} | |||||
} | |||||
// Description Lists | |||||
dl { | |||||
margin-top: 0; // Remove browser default | |||||
margin-bottom: @line-height-computed; | |||||
} | |||||
dt, | |||||
dd { | |||||
line-height: @line-height-base; | |||||
} | |||||
dt { | |||||
font-weight: bold; | |||||
} | |||||
dd { | |||||
margin-left: 0; // Undo browser default | |||||
} | |||||
// Horizontal description lists | |||||
// | |||||
// Defaults to being stacked without any of the below styles applied, until the | |||||
// grid breakpoint is reached (default of ~768px). | |||||
@media (min-width: @grid-float-breakpoint) { | |||||
.dl-horizontal { | |||||
dt { | |||||
float: left; | |||||
width: (@component-offset-horizontal - 20); | |||||
clear: left; | |||||
text-align: right; | |||||
.text-overflow(); | |||||
} | |||||
dd { | |||||
margin-left: @component-offset-horizontal; | |||||
&:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present | |||||
} | |||||
} | |||||
} | |||||
// MISC | |||||
// ---- | |||||
// Abbreviations and acronyms | |||||
abbr[title], | |||||
// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257 | |||||
abbr[data-original-title] { | |||||
cursor: help; | |||||
border-bottom: 1px dotted @abbr-border-color; | |||||
} | |||||
.initialism { | |||||
font-size: 90%; | |||||
text-transform: uppercase; | |||||
} | |||||
// Blockquotes | |||||
blockquote { | |||||
padding: (@line-height-computed / 2) @line-height-computed; | |||||
margin: 0 0 @line-height-computed; | |||||
font-size: @blockquote-font-size; | |||||
border-left: 5px solid @blockquote-border-color; | |||||
p, | |||||
ul, | |||||
ol { | |||||
&:last-child { | |||||
margin-bottom: 0; | |||||
} | |||||
} | |||||
// Note: Deprecated small and .small as of v3.1.0 | |||||
// Context: https://github.com/twbs/bootstrap/issues/11660 | |||||
footer, | |||||
small, | |||||
.small { | |||||
display: block; | |||||
font-size: 80%; // back to default font-size | |||||
line-height: @line-height-base; | |||||
color: @blockquote-small-color; | |||||
&:before { | |||||
content: '\2014 \00A0'; // em dash, nbsp | |||||
} | |||||
} | |||||
} | |||||
// Opposite alignment of blockquote | |||||
// | |||||
// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0. | |||||
.blockquote-reverse, | |||||
blockquote.pull-right { | |||||
padding-right: 15px; | |||||
padding-left: 0; | |||||
border-right: 5px solid @blockquote-border-color; | |||||
border-left: 0; | |||||
text-align: right; | |||||
// Account for citation | |||||
footer, | |||||
small, | |||||
.small { | |||||
&:before { content: ''; } | |||||
&:after { | |||||
content: '\00A0 \2014'; // nbsp, em dash | |||||
} | |||||
} | |||||
} | |||||
// Quotes | |||||
blockquote:before, | |||||
blockquote:after { | |||||
content: ""; | |||||
} | |||||
// Addresses | |||||
address { | |||||
margin-bottom: @line-height-computed; | |||||
font-style: normal; | |||||
line-height: @line-height-base; | |||||
} |
@ -0,0 +1,56 @@ | |||||
// | |||||
// Utility classes | |||||
// -------------------------------------------------- | |||||
// Floats | |||||
// ------------------------- | |||||
.clearfix { | |||||
.clearfix(); | |||||
} | |||||
.center-block { | |||||
.center-block(); | |||||
} | |||||
.pull-right { | |||||
float: right !important; | |||||
} | |||||
.pull-left { | |||||
float: left !important; | |||||
} | |||||
// Toggling content | |||||
// ------------------------- | |||||
// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 | |||||
.hide { | |||||
display: none !important; | |||||
} | |||||
.show { | |||||
display: block !important; | |||||
} | |||||
.invisible { | |||||
visibility: hidden; | |||||
} | |||||
.text-hide { | |||||
.text-hide(); | |||||
} | |||||
// Hide from screenreaders and browsers | |||||
// | |||||
// Credit: HTML5 Boilerplate | |||||
.hidden { | |||||
display: none !important; | |||||
visibility: hidden !important; | |||||
} | |||||
// For Affix plugin | |||||
// ------------------------- | |||||
.affix { | |||||
position: fixed; | |||||
} |
@ -0,0 +1,829 @@ | |||||
// | |||||
// Variables | |||||
// -------------------------------------------------- | |||||
//== Colors | |||||
// | |||||
//## Gray and brand colors for use across Bootstrap. | |||||
@gray-darker: lighten(#000, 13.5%); // #222 | |||||
@gray-dark: lighten(#000, 20%); // #333 | |||||
@gray: lighten(#000, 33.5%); // #555 | |||||
@gray-light: lighten(#000, 60%); // #999 | |||||
@gray-lighter: lighten(#000, 93.5%); // #eee | |||||
@brand-primary: #428bca; | |||||
@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%); | |||||
//== 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 locations of the include Glyphicons icon font. Useful for those including Bootstrap via Bower. | |||||
@icon-font-path: "../fonts/"; | |||||
@icon-font-name: "glyphicons-halflings-regular"; | |||||
@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.33; | |||||
@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; | |||||
//** `<input>` border radius | |||||
@input-border-radius: @border-radius-base; | |||||
//** Border color for inputs on focus | |||||
@input-border-focus: #66afe9; | |||||
//** Placeholder text color | |||||
@input-color-placeholder: @gray-light; | |||||
//** 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); | |||||
@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; | |||||
//== 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; | |||||
// Note: 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: 1010; | |||||
@zindex-tooltip: 1030; | |||||
@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 | |||||
// Note: Deprecated @screen-xs and @screen-phone as of v3.0.1 | |||||
@screen-xs: 480px; | |||||
@screen-xs-min: @screen-xs; | |||||
@screen-phone: @screen-xs-min; | |||||
// Small screen / tablet | |||||
// Note: Deprecated @screen-sm and @screen-tablet as of v3.0.1 | |||||
@screen-sm: 768px; | |||||
@screen-sm-min: @screen-sm; | |||||
@screen-tablet: @screen-sm-min; | |||||
// Medium screen / desktop | |||||
// Note: Deprecated @screen-md and @screen-desktop as of v3.0.1 | |||||
@screen-md: 992px; | |||||
@screen-md-min: @screen-md; | |||||
@screen-desktop: @screen-md-min; | |||||
// Large screen / wide desktop | |||||
// Note: Deprecated @screen-lg and @screen-lg-desktop as of v3.0.1 | |||||
@screen-lg: 1200px; | |||||
@screen-lg-min: @screen-lg; | |||||
@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: 0px; | |||||
@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: #5B9BD5; | |||||
@navbar-default-border: darken(@navbar-default-bg, 6.5%); | |||||
// Navbar links | |||||
@navbar-default-link-color: #fff; | |||||
@navbar-default-link-hover-color: #d0d0d0; | |||||
@navbar-default-link-hover-bg: transparent; | |||||
@navbar-default-link-active-color: #d0d0d0; | |||||
@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: @gray-light; | |||||
@navbar-inverse-bg: #222; | |||||
@navbar-inverse-border: darken(@navbar-inverse-bg, 10%); | |||||
// Inverted navbar links | |||||
@navbar-inverse-link-color: @gray-light; | |||||
@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; | |||||
@nav-open-link-hover-color: #fff; | |||||
//== 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: #fff; | |||||
//** 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: 20px; | |||||
//** 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; | |||||
//** 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 elements on hover | |||||
@list-group-hover-bg: #f5f5f5; | |||||
//** Text color of active list elements | |||||
@list-group-active-color: @component-active-color; | |||||
//** Background color of active list elements | |||||
@list-group-active-bg: @component-active-bg; | |||||
//** Border color of active list elements | |||||
@list-group-active-border: @list-group-active-bg; | |||||
@list-group-active-text-color: lighten(@list-group-active-bg, 40%); | |||||
@list-group-link-color: #555; | |||||
@list-group-link-heading-color: #333; | |||||
//== Panels | |||||
// | |||||
//## | |||||
@panel-bg: #fff; | |||||
@panel-body-padding: 15px; | |||||
@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 | |||||
// | |||||
//## | |||||
//** 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; | |||||
//== Miscellaneous | |||||
// | |||||
//## | |||||
//** Horizontal line color. | |||||
@hr-border: @gray-lighter; | |||||
//** Horizontal offset for forms and lists. | |||||
@component-offset-horizontal: 180px; |
@ -0,0 +1,29 @@ | |||||
// | |||||
// Wells | |||||
// -------------------------------------------------- | |||||
// Base class | |||||
.well { | |||||
min-height: 20px; | |||||
padding: 19px; | |||||
margin-bottom: 20px; | |||||
background-color: @well-bg; | |||||
border: 1px solid @well-border; | |||||
border-radius: @border-radius-base; | |||||
.box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); | |||||
blockquote { | |||||
border-color: #ddd; | |||||
border-color: rgba(0,0,0,.15); | |||||
} | |||||
} | |||||
// Sizes | |||||
.well-lg { | |||||
padding: 24px; | |||||
border-radius: @border-radius-large; | |||||
} | |||||
.well-sm { | |||||
padding: 9px; | |||||
border-radius: @border-radius-small; | |||||
} |