├── lib ├── lte-rails.rb └── lte │ ├── rails.rb │ └── rails │ ├── version.rb │ └── engine.rb ├── vendor └── assets │ └── stylesheets │ ├── lte-rails.less │ └── AdminLTE │ ├── invoice.less │ ├── carousel.less │ ├── skins │ ├── _all-skins.less │ ├── skin-red-light.less │ ├── skin-red.less │ ├── skin-green-light.less │ ├── skin-green.less │ ├── skin-purple-light.less │ ├── skin-purple.less │ ├── skin-yellow-light.less │ ├── skin-yellow.less │ ├── skin-blue.less │ ├── skin-blue-light.less │ ├── skin-black-light.less │ └── skin-black.less │ ├── labels.less │ ├── profile.less │ ├── .csslintrc │ ├── users-list.less │ ├── alerts.less │ ├── 404_500_errors.less │ ├── login_and_register.less │ ├── products.less │ ├── callout.less │ ├── print.less │ ├── table.less │ ├── info-box.less │ ├── lockscreen.less │ ├── mailbox.less │ ├── modal.less │ ├── social-widgets.less │ ├── small-box.less │ ├── AdminLTE.less │ ├── fullcalendar.less │ ├── progress-bars.less │ ├── forms.less │ ├── timeline.less │ ├── select2.less │ ├── sidebar.less │ ├── variables.less │ ├── core.less │ ├── bootstrap-social.less │ ├── buttons.less │ ├── direct-chat.less │ ├── sidebar-mini.less │ ├── navs.less │ ├── header.less │ ├── control-sidebar.less │ ├── mixins.less │ ├── dropdown.less │ ├── boxes.less │ └── miscellaneous.less ├── .gitmodules ├── Gemfile ├── README.md ├── .gitignore ├── LICENSE ├── Rakefile ├── lte-rails.gemspec └── Gemfile.lock /lib/lte-rails.rb: -------------------------------------------------------------------------------- 1 | require 'lte/rails' 2 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/lte-rails.less: -------------------------------------------------------------------------------- 1 | @import "AdminLTE/AdminLTE.less"; 2 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "AdminLTE"] 2 | path = AdminLTE 3 | url = git@github.com:almasaeed2010/AdminLTE.git 4 | -------------------------------------------------------------------------------- /lib/lte/rails.rb: -------------------------------------------------------------------------------- 1 | require 'lte/rails/engine' 2 | require 'lte/rails/version' 3 | 4 | module Lte 5 | module Rails 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'less-rails-bootstrap', github: 'nicke/less-rails-bootstrap' 4 | 5 | # Specify gem's dependencies in lte-rails.gemspec 6 | gemspec 7 | -------------------------------------------------------------------------------- /lib/lte/rails/version.rb: -------------------------------------------------------------------------------- 1 | module Lte 2 | module Rails 3 | # NOTE: this needs to be changed in the Makefile at the same time! 4 | VERSION = "0.1.0" 5 | ADMIN_LTE_VERSION = "2.3.5" 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/invoice.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Page: Invoice 3 | * ------------- 4 | */ 5 | 6 | .invoice { 7 | position: relative; 8 | background: #fff; 9 | border: 1px solid #f4f4f4; 10 | padding: 20px; 11 | margin: 10px 25px; 12 | } 13 | 14 | .invoice-title { 15 | margin-top: 0; 16 | } 17 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/carousel.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Carousel 3 | * ------------------- 4 | */ 5 | .carousel-control { 6 | &.left, 7 | &.right { 8 | background-image: none; 9 | } 10 | > .fa { 11 | font-size: 40px; 12 | position: absolute; 13 | top: 50%; 14 | z-index: 5; 15 | display: inline-block; 16 | margin-top: -20px; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/lte/rails/engine.rb: -------------------------------------------------------------------------------- 1 | module Lte 2 | module Rails 3 | class Engine < ::Rails::Engine 4 | #initializer 'admin-lte-rails.setup', 5 | # :after => 'less-rails.after.load_config_initializers', 6 | # :group => :all do |app| 7 | # if defined?(Less) 8 | # app.config.less.paths << File.join(config.root, 'vendor', 'toolkit') 9 | # end 10 | # end 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/_all-skins.less: -------------------------------------------------------------------------------- 1 | //All skins in one file 2 | @import "skin-blue.less"; 3 | @import "skin-blue-light.less"; 4 | @import "skin-black.less"; 5 | @import "skin-black-light.less"; 6 | @import "skin-green.less"; 7 | @import "skin-green-light.less"; 8 | @import "skin-red.less"; 9 | @import "skin-red-light.less"; 10 | @import "skin-yellow.less"; 11 | @import "skin-yellow-light.less"; 12 | @import "skin-purple.less"; 13 | @import "skin-purple-light.less"; 14 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/labels.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Label 3 | * ---------------- 4 | */ 5 | .label-default { 6 | background-color: @gray; 7 | color: #444; 8 | } 9 | 10 | .label-danger { 11 | &:extend(.bg-red); 12 | } 13 | 14 | .label-info { 15 | &:extend(.bg-aqua); 16 | } 17 | 18 | .label-warning { 19 | &:extend(.bg-yellow); 20 | } 21 | 22 | .label-primary { 23 | &:extend(.bg-light-blue); 24 | } 25 | 26 | .label-success { 27 | &:extend(.bg-green); 28 | } 29 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/profile.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Page: Profile 3 | * ------------- 4 | */ 5 | 6 | .profile-user-img { 7 | margin: 0 auto; 8 | width: 100px; 9 | padding: 3px; 10 | border: 3px solid @gray; 11 | } 12 | 13 | .profile-username { 14 | font-size: 21px; 15 | margin-top: 5px; 16 | } 17 | 18 | .post { 19 | border-bottom: 1px solid @gray; 20 | margin-bottom: 15px; 21 | padding-bottom: 15px; 22 | color: #666; 23 | &:last-of-type { 24 | border-bottom: 0; 25 | margin-bottom: 0; 26 | padding-bottom: 0; 27 | } 28 | .user-block { 29 | margin-bottom: 15px; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/.csslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "adjoining-classes": false, 3 | "box-sizing": false, 4 | "box-model": false, 5 | "compatible-vendor-prefixes": false, 6 | "floats": false, 7 | "font-sizes": false, 8 | "gradients": false, 9 | "important": false, 10 | "known-properties": false, 11 | "outline-none": false, 12 | "qualified-headings": false, 13 | "regex-selectors": false, 14 | "shorthand": false, 15 | "text-indent": false, 16 | "unique-headings": false, 17 | "universal-selector": false, 18 | "unqualified-attributes": false, 19 | "ids": false, 20 | "fallback-colors": false, 21 | "vendor-prefix": false, 22 | "import": false 23 | } 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AdminLTE gem for Rails 2 | 3 | This is a gem for using the [AdminLTE](https://github.com/almasaeed2010/AdminLTE) template within a Rails project. 4 | 5 | This gem is currently using AvminLTE v2.3.5. 6 | 7 | To use, add this to your Gemfile: 8 | ``` 9 | gem 'lte-rails' 10 | ``` 11 | 12 | and add this (changing the skin name to anything you want or adding more) to your application.css: 13 | 14 | ``` 15 | *= require lte-rails 16 | *= require AdminLTE/skins/skin-blue 17 | ``` 18 | 19 | # Notes 20 | 21 | This gem uses the main AdminLTE github repo to re-generate the gem from them by dynamically patching so that the assets work properly within the Rails environment. 22 | 23 | This gem is not supporting the Javascript parts, yet. 24 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/users-list.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Users List 3 | * --------------------- 4 | */ 5 | .users-list { 6 | &:extend(.list-unstyled); 7 | > li { 8 | width: 25%; 9 | float: left; 10 | padding: 10px; 11 | text-align: center; 12 | img { 13 | .border-radius(50%); 14 | max-width: 100%; 15 | height: auto; 16 | } 17 | > a:hover { 18 | &, 19 | .users-list-name { 20 | color: #999; 21 | } 22 | } 23 | } 24 | } 25 | 26 | .users-list-name, 27 | .users-list-date { 28 | display: block; 29 | } 30 | 31 | .users-list-name { 32 | font-weight: 600; 33 | color: #444; 34 | overflow: hidden; 35 | white-space: nowrap; 36 | text-overflow: ellipsis; 37 | } 38 | 39 | .users-list-date { 40 | color: #999; 41 | font-size: 12px; 42 | } 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.rbc 2 | capybara-*.html 3 | .rspec 4 | /log 5 | /tmp 6 | /db/*.sqlite3 7 | /db/*.sqlite3-journal 8 | /public/system 9 | /coverage/ 10 | /spec/tmp 11 | **.orig 12 | rerun.txt 13 | pickle-email-*.html 14 | 15 | # TODO Comment out these rules if you are OK with secrets being uploaded to the repo 16 | config/initializers/secret_token.rb 17 | config/secrets.yml 18 | 19 | ## Environment normalisation: 20 | /.bundle 21 | /vendor/bundle 22 | 23 | # these should all be checked in to normalise the environment: 24 | # Gemfile.lock, .ruby-version, .ruby-gemset 25 | 26 | *.gem 27 | 28 | # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: 29 | .rvmrc 30 | 31 | # if using bower-rails ignore default bower_components path bower.json files 32 | /vendor/assets/bower_components 33 | *.bowerrc 34 | bower.json 35 | 36 | # Ignore pow environment settings 37 | .powenv 38 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/alerts.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: alert 3 | * ---------------- 4 | */ 5 | 6 | .alert { 7 | .border-radius(3px); 8 | h4 { 9 | font-weight: 600; 10 | } 11 | .icon { 12 | margin-right: 10px; 13 | } 14 | .close { 15 | color: #000; 16 | .opacity(.2); 17 | &:hover { 18 | .opacity(.5); 19 | } 20 | } 21 | a { 22 | color: #fff; 23 | text-decoration: underline; 24 | } 25 | } 26 | 27 | //Alert Variants 28 | .alert-success { 29 | &:extend(.bg-green); 30 | border-color: darken(@green, 5%); 31 | } 32 | 33 | .alert-danger, 34 | .alert-error { 35 | &:extend(.bg-red); 36 | border-color: darken(@red, 5%); 37 | } 38 | 39 | .alert-warning { 40 | &:extend(.bg-yellow); 41 | border-color: darken(@yellow, 5%); 42 | } 43 | 44 | .alert-info { 45 | &:extend(.bg-aqua); 46 | border-color: darken(@aqua, 5%); 47 | } 48 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/404_500_errors.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Page: 400 and 500 error pages 3 | * ------------------------------ 4 | */ 5 | .error-page { 6 | width: 600px; 7 | margin: 20px auto 0 auto; 8 | @media (max-width: @screen-sm-max) { 9 | width: 100%; 10 | } 11 | //For the error number e.g: 404 12 | > .headline { 13 | float: left; 14 | font-size: 100px; 15 | font-weight: 300; 16 | @media (max-width: @screen-sm-max) { 17 | float: none; 18 | text-align: center; 19 | } 20 | } 21 | //For the message 22 | > .error-content { 23 | margin-left: 190px; 24 | @media (max-width: @screen-sm-max) { 25 | margin-left: 0; 26 | } 27 | > h3 { 28 | font-weight: 300; 29 | font-size: 25px; 30 | @media (max-width: @screen-sm-max) { 31 | text-align: center; 32 | } 33 | } 34 | display: block; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/login_and_register.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Page: Login & Register 3 | * ---------------------- 4 | */ 5 | 6 | .login-logo, 7 | .register-logo { 8 | font-size: 35px; 9 | text-align: center; 10 | margin-bottom: 25px; 11 | font-weight: 300; 12 | a { 13 | color: #444; 14 | } 15 | } 16 | 17 | .login-page, 18 | .register-page { 19 | background: @gray; 20 | } 21 | 22 | .login-box, 23 | .register-box { 24 | width: 360px; 25 | margin: 7% auto; 26 | @media (max-width: @screen-sm) { 27 | width: 90%; 28 | margin-top: 20px; 29 | } 30 | } 31 | 32 | .login-box-body, 33 | .register-box-body { 34 | background: #fff; 35 | padding: 20px; 36 | border-top: 0; 37 | color: #666; 38 | .form-control-feedback { 39 | color: #777; 40 | } 41 | } 42 | 43 | .login-box-msg, 44 | .register-box-msg { 45 | margin: 0; 46 | text-align: center; 47 | padding: 0 20px 20px 20px; 48 | } 49 | 50 | .social-auth-links { 51 | margin: 10px 0; 52 | } 53 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/products.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Products List 3 | * ------------------------ 4 | */ 5 | .products-list { 6 | list-style: none; 7 | margin: 0; 8 | padding: 0; 9 | > .item { 10 | .border-radius(@box-border-radius); 11 | .box-shadow(@box-boxshadow); 12 | .clearfix(); 13 | padding: 10px 0; 14 | background: #fff; 15 | } 16 | .product-img { 17 | float: left; 18 | img { 19 | width: 50px; 20 | height: 50px; 21 | } 22 | } 23 | .product-info { 24 | margin-left: 60px; 25 | } 26 | .product-title { 27 | font-weight: 600; 28 | } 29 | .product-description { 30 | display: block; 31 | color: #999; 32 | overflow: hidden; 33 | white-space: nowrap; 34 | text-overflow: ellipsis; 35 | } 36 | } 37 | 38 | .product-list-in-box > .item { 39 | .box-shadow(none); 40 | .border-radius(0); 41 | border-bottom: 1px solid @box-border-color; 42 | &:last-of-type { 43 | border-bottom-width: 0; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/callout.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Callout 3 | * ------------------ 4 | */ 5 | 6 | // Base styles (regardless of theme) 7 | .callout { 8 | .border-radius(3px); 9 | margin: 0 0 20px 0; 10 | padding: 15px 30px 15px 15px; 11 | border-left: 5px solid #eee; 12 | a { 13 | color: #fff; 14 | text-decoration: underline; 15 | &:hover { 16 | color: #eee; 17 | } 18 | } 19 | h4 { 20 | margin-top: 0; 21 | font-weight: 600; 22 | } 23 | p:last-child { 24 | margin-bottom: 0; 25 | } 26 | code, 27 | .highlight { 28 | background-color: #fff; 29 | } 30 | 31 | // Themes for different contexts 32 | &.callout-danger { 33 | &:extend(.bg-red); 34 | border-color: darken(@red, 10%); 35 | } 36 | &.callout-warning { 37 | &:extend(.bg-yellow); 38 | border-color: darken(@yellow, 10%); 39 | } 40 | &.callout-info { 41 | &:extend(.bg-aqua); 42 | border-color: darken(@aqua, 10%); 43 | } 44 | &.callout-success { 45 | &:extend(.bg-green); 46 | border-color: darken(@green, 10%); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 RacketLogger 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/print.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Misc: print 3 | * ----------- 4 | */ 5 | @media print { 6 | //Add to elements that you do not want to show when printing 7 | .no-print { 8 | display: none !important; 9 | } 10 | 11 | //Elements that we want to hide when printing 12 | .main-sidebar, 13 | .left-side, 14 | .main-header, 15 | .content-header { 16 | &:extend(.no-print); 17 | } 18 | 19 | //This is the only element that should appear, so let's remove the margins 20 | .content-wrapper, 21 | .right-side, 22 | .main-footer { 23 | margin-left: 0 !important; 24 | min-height: 0 !important; 25 | .translate(0, 0) !important; 26 | } 27 | 28 | .fixed .content-wrapper, 29 | .fixed .right-side { 30 | padding-top: 0 !important; 31 | } 32 | 33 | //Invoice printing 34 | .invoice { 35 | width: 100%; 36 | border: 0; 37 | margin: 0; 38 | padding: 0; 39 | } 40 | 41 | .invoice-col { 42 | float: left; 43 | width: 33.3333333%; 44 | } 45 | 46 | //Make sure table content displays properly 47 | .table-responsive { 48 | overflow: auto; 49 | > .table tr th, 50 | > .table tr td { 51 | white-space: normal !important; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/table.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Table 3 | * ---------------- 4 | */ 5 | 6 | .table { 7 | //Cells 8 | > thead, 9 | > tbody, 10 | > tfoot { 11 | > tr { 12 | > th, 13 | > td { 14 | border-top: 1px solid @box-border-color; 15 | } 16 | } 17 | } 18 | //thead cells 19 | > thead > tr > th { 20 | border-bottom: 2px solid @box-border-color; 21 | } 22 | //progress bars in tables 23 | tr td .progress { 24 | margin-top: 5px; 25 | } 26 | } 27 | 28 | //Bordered Table 29 | .table-bordered { 30 | border: 1px solid @box-border-color; 31 | > thead, 32 | > tbody, 33 | > tfoot { 34 | > tr { 35 | > th, 36 | > td { 37 | border: 1px solid @box-border-color; 38 | } 39 | } 40 | } 41 | > thead > tr { 42 | > th, 43 | > td { 44 | border-bottom-width: 2px; 45 | } 46 | } 47 | } 48 | 49 | .table.no-border { 50 | &, 51 | td, 52 | th { 53 | border: 0; 54 | } 55 | } 56 | 57 | /* .text-center in tables */ 58 | table.text-center { 59 | &, td, th { 60 | text-align: center; 61 | } 62 | } 63 | 64 | .table.align { 65 | th { 66 | text-align: left; 67 | } 68 | td { 69 | text-align: right; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/skin-red-light.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Red 3 | * --------- 4 | */ 5 | @import "twitter/bootstrap/mixins.less"; 6 | @import "twitter/bootstrap/variables.less"; 7 | @import "../variables.less"; 8 | @import "../mixins.less"; 9 | 10 | .skin-red-light { 11 | //Navbar 12 | .main-header { 13 | .navbar { 14 | .navbar-variant(@red; #fff); 15 | .sidebar-toggle { 16 | color: #fff; 17 | &:hover { 18 | background-color: darken(@red, 5%); 19 | } 20 | } 21 | @media (max-width: @screen-header-collapse) { 22 | .dropdown-menu { 23 | li { 24 | &.divider { 25 | background-color: rgba(255, 255, 255, 0.1); 26 | } 27 | a { 28 | color: #fff; 29 | &:hover { 30 | background: darken(@red, 5%); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | } 37 | //Logo 38 | .logo { 39 | .logo-variant(@red); 40 | } 41 | 42 | li.user-header { 43 | background-color: @red; 44 | } 45 | } 46 | 47 | //Content Header 48 | .content-header { 49 | background: transparent; 50 | } 51 | 52 | //Create the sidebar skin 53 | .skin-light-sidebar(@red); 54 | } 55 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/skin-red.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Red 3 | * --------- 4 | */ 5 | @import "twitter/bootstrap/mixins.less"; 6 | @import "twitter/bootstrap/variables.less"; 7 | @import "../variables.less"; 8 | @import "../mixins.less"; 9 | 10 | .skin-red { 11 | //Navbar 12 | .main-header { 13 | .navbar { 14 | .navbar-variant(@red; #fff); 15 | .sidebar-toggle { 16 | color: #fff; 17 | &:hover { 18 | background-color: darken(@red, 5%); 19 | } 20 | } 21 | @media (max-width: @screen-header-collapse) { 22 | .dropdown-menu { 23 | li { 24 | &.divider { 25 | background-color: rgba(255, 255, 255, 0.1); 26 | } 27 | a { 28 | color: #fff; 29 | &:hover { 30 | background: darken(@red, 5%); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | } 37 | //Logo 38 | .logo { 39 | .logo-variant(darken(@red, 5%)); 40 | } 41 | 42 | li.user-header { 43 | background-color: @red; 44 | } 45 | } 46 | 47 | //Content Header 48 | .content-header { 49 | background: transparent; 50 | } 51 | 52 | //Create the sidebar skin 53 | .skin-dark-sidebar(@red); 54 | } 55 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/skin-green-light.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Green 3 | * ----------- 4 | */ 5 | @import "twitter/bootstrap/mixins.less"; 6 | @import "twitter/bootstrap/variables.less"; 7 | @import "../variables.less"; 8 | @import "../mixins.less"; 9 | 10 | .skin-green-light { 11 | //Navbar 12 | .main-header { 13 | .navbar { 14 | .navbar-variant(@green; #fff); 15 | .sidebar-toggle { 16 | color: #fff; 17 | &:hover { 18 | background-color: darken(@green, 5%); 19 | } 20 | } 21 | @media (max-width: @screen-header-collapse) { 22 | .dropdown-menu { 23 | li { 24 | &.divider { 25 | background-color: rgba(255, 255, 255, 0.1); 26 | } 27 | a { 28 | color: #fff; 29 | &:hover { 30 | background: darken(@green, 5%); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | } 37 | //Logo 38 | .logo { 39 | .logo-variant(@green); 40 | } 41 | 42 | li.user-header { 43 | background-color: @green; 44 | } 45 | } 46 | 47 | //Content Header 48 | .content-header { 49 | background: transparent; 50 | } 51 | 52 | //Create the sidebar skin 53 | .skin-light-sidebar(@green); 54 | 55 | } 56 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/skin-green.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Green 3 | * ----------- 4 | */ 5 | @import "twitter/bootstrap/mixins.less"; 6 | @import "twitter/bootstrap/variables.less"; 7 | @import "../variables.less"; 8 | @import "../mixins.less"; 9 | 10 | .skin-green { 11 | //Navbar 12 | .main-header { 13 | .navbar { 14 | .navbar-variant(@green; #fff); 15 | .sidebar-toggle { 16 | color: #fff; 17 | &:hover { 18 | background-color: darken(@green, 5%); 19 | } 20 | } 21 | @media (max-width: @screen-header-collapse) { 22 | .dropdown-menu { 23 | li { 24 | &.divider { 25 | background-color: rgba(255, 255, 255, 0.1); 26 | } 27 | a { 28 | color: #fff; 29 | &:hover { 30 | background: darken(@green, 5%); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | } 37 | //Logo 38 | .logo { 39 | .logo-variant(darken(@green, 5%)); 40 | } 41 | 42 | li.user-header { 43 | background-color: @green; 44 | } 45 | } 46 | 47 | //Content Header 48 | .content-header { 49 | background: transparent; 50 | } 51 | 52 | //Create the sidebar skin 53 | .skin-dark-sidebar(@green); 54 | 55 | } 56 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/skin-purple-light.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Purple 3 | * ------------ 4 | */ 5 | @import "twitter/bootstrap/mixins.less"; 6 | @import "twitter/bootstrap/variables.less"; 7 | @import "../variables.less"; 8 | @import "../mixins.less"; 9 | 10 | .skin-purple-light { 11 | //Navbar 12 | .main-header { 13 | .navbar { 14 | .navbar-variant(@purple; #fff); 15 | .sidebar-toggle { 16 | color: #fff; 17 | &:hover { 18 | background-color: darken(@purple, 5%); 19 | } 20 | } 21 | @media (max-width: @screen-header-collapse) { 22 | .dropdown-menu { 23 | li { 24 | &.divider { 25 | background-color: rgba(255, 255, 255, 0.1); 26 | } 27 | a { 28 | color: #fff; 29 | &:hover { 30 | background: darken(@purple, 5%); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | } 37 | //Logo 38 | .logo { 39 | .logo-variant(@purple); 40 | } 41 | 42 | li.user-header { 43 | background-color: @purple; 44 | } 45 | } 46 | 47 | //Content Header 48 | .content-header { 49 | background: transparent; 50 | } 51 | 52 | //Create the sidebar skin 53 | .skin-light-sidebar(@purple); 54 | } 55 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/skin-purple.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Purple 3 | * ------------ 4 | */ 5 | @import "twitter/bootstrap/mixins.less"; 6 | @import "twitter/bootstrap/variables.less"; 7 | @import "../variables.less"; 8 | @import "../mixins.less"; 9 | 10 | .skin-purple { 11 | //Navbar 12 | .main-header { 13 | .navbar { 14 | .navbar-variant(@purple; #fff); 15 | .sidebar-toggle { 16 | color: #fff; 17 | &:hover { 18 | background-color: darken(@purple, 5%); 19 | } 20 | } 21 | @media (max-width: @screen-header-collapse) { 22 | .dropdown-menu { 23 | li { 24 | &.divider { 25 | background-color: rgba(255, 255, 255, 0.1); 26 | } 27 | a { 28 | color: #fff; 29 | &:hover { 30 | background: darken(@purple, 5%); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | } 37 | //Logo 38 | .logo { 39 | .logo-variant(darken(@purple, 5%)); 40 | } 41 | 42 | li.user-header { 43 | background-color: @purple; 44 | } 45 | } 46 | 47 | //Content Header 48 | .content-header { 49 | background: transparent; 50 | } 51 | 52 | //Create the sidebar skin 53 | .skin-dark-sidebar(@purple); 54 | } 55 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/skin-yellow-light.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Yellow 3 | * ------------ 4 | */ 5 | @import "twitter/bootstrap/mixins.less"; 6 | @import "twitter/bootstrap/variables.less"; 7 | @import "../variables.less"; 8 | @import "../mixins.less"; 9 | 10 | .skin-yellow-light { 11 | //Navbar 12 | .main-header { 13 | .navbar { 14 | .navbar-variant(@yellow; #fff); 15 | .sidebar-toggle { 16 | color: #fff; 17 | &:hover { 18 | background-color: darken(@yellow, 5%); 19 | } 20 | } 21 | @media (max-width: @screen-header-collapse) { 22 | .dropdown-menu { 23 | li { 24 | &.divider { 25 | background-color: rgba(255, 255, 255, 0.1); 26 | } 27 | a { 28 | color: #fff; 29 | &:hover { 30 | background: darken(@yellow, 5%); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | } 37 | //Logo 38 | .logo { 39 | .logo-variant(@yellow); 40 | } 41 | 42 | li.user-header { 43 | background-color: @yellow; 44 | } 45 | } 46 | 47 | //Content Header 48 | .content-header { 49 | background: transparent; 50 | } 51 | 52 | //Create the sidebar skin 53 | .skin-light-sidebar(@yellow); 54 | } 55 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/skin-yellow.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Yellow 3 | * ------------ 4 | */ 5 | @import "twitter/bootstrap/mixins.less"; 6 | @import "twitter/bootstrap/variables.less"; 7 | @import "../variables.less"; 8 | @import "../mixins.less"; 9 | 10 | .skin-yellow { 11 | //Navbar 12 | .main-header { 13 | .navbar { 14 | .navbar-variant(@yellow; #fff); 15 | .sidebar-toggle { 16 | color: #fff; 17 | &:hover { 18 | background-color: darken(@yellow, 5%); 19 | } 20 | } 21 | @media (max-width: @screen-header-collapse) { 22 | .dropdown-menu { 23 | li { 24 | &.divider { 25 | background-color: rgba(255, 255, 255, 0.1); 26 | } 27 | a { 28 | color: #fff; 29 | &:hover { 30 | background: darken(@yellow, 5%); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | } 37 | //Logo 38 | .logo { 39 | .logo-variant(darken(@yellow, 5%)); 40 | } 41 | 42 | li.user-header { 43 | background-color: @yellow; 44 | } 45 | } 46 | 47 | //Content Header 48 | .content-header { 49 | background: transparent; 50 | } 51 | 52 | //Create the sidebar skin 53 | .skin-dark-sidebar(@yellow); 54 | } 55 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/skin-blue.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Blue 3 | * ---------- 4 | */ 5 | @import "twitter/bootstrap/mixins.less"; 6 | @import "twitter/bootstrap/variables.less"; 7 | @import "../variables.less"; 8 | @import "../mixins.less"; 9 | 10 | .skin-blue { 11 | //Navbar 12 | .main-header { 13 | .navbar { 14 | .navbar-variant(@light-blue; #fff); 15 | .sidebar-toggle { 16 | color: #fff; 17 | &:hover { 18 | background-color: darken(@light-blue, 5%); 19 | } 20 | } 21 | @media (max-width: @screen-header-collapse) { 22 | .dropdown-menu { 23 | li { 24 | &.divider { 25 | background-color: rgba(255, 255, 255, 0.1); 26 | } 27 | a { 28 | color: #fff; 29 | &:hover { 30 | background: darken(@light-blue, 5%); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | } 37 | //Logo 38 | .logo { 39 | .logo-variant(darken(@light-blue, 5%)); 40 | } 41 | 42 | li.user-header { 43 | background-color: @light-blue; 44 | } 45 | } 46 | 47 | //Content Header 48 | .content-header { 49 | background: transparent; 50 | } 51 | 52 | //Create the sidebar skin 53 | .skin-dark-sidebar(@light-blue); 54 | } 55 | 56 | .skin-blue.layout-top-nav .main-header > .logo { 57 | .logo-variant(@light-blue); 58 | } 59 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/skin-blue-light.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Blue 3 | * ---------- 4 | */ 5 | @import "twitter/bootstrap/mixins.less"; 6 | @import "twitter/bootstrap/variables.less"; 7 | @import "../variables.less"; 8 | @import "../mixins.less"; 9 | 10 | .skin-blue-light { 11 | //Navbar 12 | .main-header { 13 | .navbar { 14 | .navbar-variant(@light-blue; #fff); 15 | .sidebar-toggle { 16 | color: #fff; 17 | &:hover { 18 | background-color: darken(@light-blue, 5%); 19 | } 20 | } 21 | @media (max-width: @screen-header-collapse) { 22 | .dropdown-menu { 23 | li { 24 | &.divider { 25 | background-color: rgba(255, 255, 255, 0.1); 26 | } 27 | a { 28 | color: #fff; 29 | &:hover { 30 | background: darken(@light-blue, 5%); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | } 37 | //Logo 38 | .logo { 39 | .logo-variant(@light-blue); 40 | } 41 | 42 | li.user-header { 43 | background-color: @light-blue; 44 | } 45 | } 46 | 47 | //Content Header 48 | .content-header { 49 | background: transparent; 50 | } 51 | 52 | //Create the sidebar skin 53 | .skin-light-sidebar(@light-blue); 54 | .main-footer { 55 | border-top-color: @gray; 56 | } 57 | } 58 | 59 | .skin-blue.layout-top-nav .main-header > .logo { 60 | .logo-variant(@light-blue); 61 | } 62 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/info-box.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Info Box 3 | * ------------------- 4 | */ 5 | .info-box { 6 | display: block; 7 | min-height: 90px; 8 | background: #fff; 9 | width: 100%; 10 | box-shadow: @box-boxshadow; 11 | .border-radius(2px); 12 | margin-bottom: 15px; 13 | small { 14 | font-size: 14px; 15 | } 16 | .progress { 17 | background: rgba(0, 0, 0, .2); 18 | margin: 5px -10px 5px -10px; 19 | height: 2px; 20 | &, 21 | & .progress-bar { 22 | .border-radius(0); 23 | } 24 | .progress-bar { 25 | background: #fff; 26 | } 27 | } 28 | } 29 | 30 | .info-box-icon { 31 | .border-radius(2px; 0; 2px; 0); 32 | display: block; 33 | float: left; 34 | height: 90px; 35 | width: 90px; 36 | text-align: center; 37 | font-size: 45px; 38 | line-height: 90px; 39 | background: rgba(0, 0, 0, 0.2); 40 | > img { 41 | max-width: 100%; 42 | } 43 | } 44 | 45 | .info-box-content { 46 | padding: 5px 10px; 47 | margin-left: 90px; 48 | } 49 | 50 | .info-box-number { 51 | display: block; 52 | font-weight: bold; 53 | font-size: 18px; 54 | } 55 | 56 | .progress-description, 57 | .info-box-text { 58 | display: block; 59 | font-size: 14px; 60 | white-space: nowrap; 61 | overflow: hidden; 62 | text-overflow: ellipsis; 63 | } 64 | 65 | .info-box-text { 66 | text-transform: uppercase; 67 | } 68 | 69 | .info-box-more { 70 | display: block; 71 | } 72 | 73 | .progress-description { 74 | margin: 0; 75 | } 76 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/lockscreen.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Page: Lock Screen 3 | * ----------------- 4 | */ 5 | /* ADD THIS CLASS TO THE TAG */ 6 | .lockscreen { 7 | background: @gray; 8 | } 9 | 10 | .lockscreen-logo { 11 | font-size: 35px; 12 | text-align: center; 13 | margin-bottom: 25px; 14 | font-weight: 300; 15 | a { 16 | color: #444; 17 | } 18 | } 19 | 20 | .lockscreen-wrapper { 21 | max-width: 400px; 22 | margin: 0 auto; 23 | margin-top: 10%; 24 | } 25 | 26 | /* User name [optional] */ 27 | .lockscreen .lockscreen-name { 28 | text-align: center; 29 | font-weight: 600; 30 | } 31 | 32 | /* Will contain the image and the sign in form */ 33 | .lockscreen-item { 34 | .border-radius(4px); 35 | padding: 0; 36 | background: #fff; 37 | position: relative; 38 | margin: 10px auto 30px auto; 39 | width: 290px; 40 | } 41 | 42 | /* User image */ 43 | .lockscreen-image { 44 | .border-radius(50%); 45 | position: absolute; 46 | left: -10px; 47 | top: -25px; 48 | background: #fff; 49 | padding: 5px; 50 | z-index: 10; 51 | > img { 52 | .border-radius(50%); 53 | width: 70px; 54 | height: 70px; 55 | } 56 | } 57 | 58 | /* Contains the password input and the login button */ 59 | .lockscreen-credentials { 60 | margin-left: 70px; 61 | .form-control { 62 | border: 0; 63 | } 64 | .btn { 65 | background-color: #fff; 66 | border: 0; 67 | padding: 0 10px; 68 | } 69 | } 70 | 71 | .lockscreen-footer { 72 | margin-top: 10px; 73 | } 74 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env rake 2 | require "bundler" 3 | require "bundler/gem_tasks" 4 | 5 | VERSION = Lte::Rails::VERSION 6 | 7 | Bundler::GemHelper.install_tasks 8 | 9 | TARGET_DIR = 'vendor/assets/stylesheets' 10 | FULL_DIR = File.join(TARGET_DIR, "AdminLTE") 11 | 12 | def replace_in_file(filename, source, replacement) 13 | text = File.read(filename) 14 | repl = text.gsub(source, replacement) 15 | File.open(filename, 'w') { |f| f << repl } 16 | end 17 | 18 | desc "Bundle the gem" 19 | task :bundle => [:bundle_install, :build_files] do 20 | sh 'gem build *.gemspec' 21 | end 22 | 23 | desc "Install the gem" 24 | task :install => [:bundle] do 25 | sh 'gem install *.gem' 26 | sh 'rm *.gem' 27 | end 28 | 29 | 30 | desc "Runs bundle install" 31 | task :bundle_install do 32 | sh 'bundle install' 33 | end 34 | 35 | desc "Pushes the latest gem to rubygems" 36 | task :push_gem => [:build] do 37 | sh "gem push pkg/lte-rails-#{VERSION}.gem" 38 | end 39 | 40 | desc "Copy the stylesheets from the sources" 41 | task :build_files => [:clean] do 42 | FileUtils.cp_r "AdminLTE/build/less/", TARGET_DIR, preserve: true 43 | Dir.chdir TARGET_DIR do 44 | FileUtils.mv 'less', "AdminLTE" 45 | replace_in_file("AdminLTE/AdminLTE.less", /\.\.\/bootstrap-less\//, 'twitter/bootstrap/') 46 | Dir.glob("AdminLTE/skins/*.less").each do |f| 47 | replace_in_file(f, /\.\.\/\.\.\/bootstrap-less\//, 'twitter/bootstrap/') 48 | end 49 | end 50 | end 51 | 52 | desc "Clean the assets" 53 | task :clean do 54 | FileUtils.rm_rf FULL_DIR 55 | end 56 | 57 | task(:default).clear 58 | task :default => :bundle 59 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/skin-black-light.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Black 3 | * ----------- 4 | */ 5 | @import "twitter/bootstrap/mixins.less"; 6 | @import "twitter/bootstrap/variables.less"; 7 | @import "../variables.less"; 8 | @import "../mixins.less"; 9 | 10 | /* skin-black navbar */ 11 | .skin-black-light { 12 | //Navbar & Logo 13 | .main-header { 14 | .box-shadow(0px 1px 1px rgba(0, 0, 0, 0.05)); 15 | .navbar-toggle { 16 | color: #333; 17 | } 18 | .navbar-brand { 19 | color: #333; 20 | border-right: 1px solid #eee; 21 | } 22 | .navbar { 23 | .navbar-variant(#fff; #333; #999; #fff); 24 | > .sidebar-toggle { 25 | color: #333; 26 | border-right: 1px solid #eee; 27 | } 28 | .navbar-nav { 29 | > li > a { 30 | border-right: 1px solid #eee; 31 | } 32 | } 33 | .navbar-custom-menu .navbar-nav, 34 | .navbar-right { 35 | > li { 36 | > a { 37 | border-left: 1px solid #eee; 38 | border-right-width: 0; 39 | } 40 | } 41 | } 42 | } 43 | > .logo { 44 | .logo-variant(#fff; #333); 45 | border-right: 1px solid #eee; 46 | @media (max-width: @screen-header-collapse) { 47 | .logo-variant(#222; #fff); 48 | border-right: none; 49 | } 50 | } 51 | 52 | li.user-header { 53 | background-color: #222; 54 | } 55 | } 56 | 57 | //Content Header 58 | .content-header { 59 | background: transparent; 60 | box-shadow: none; 61 | } 62 | //Create the sidebar skin 63 | .skin-light-sidebar(#fff); 64 | } 65 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/mailbox.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Page: Mailbox 3 | * ------------- 4 | */ 5 | .mailbox-messages { 6 | > .table { 7 | margin: 0; 8 | } 9 | } 10 | 11 | .mailbox-controls { 12 | padding: 5px; 13 | &.with-border { 14 | border-bottom: 1px solid @box-border-color; 15 | } 16 | } 17 | 18 | .mailbox-read-info { 19 | border-bottom: 1px solid @box-border-color; 20 | padding: 10px; 21 | h3 { 22 | font-size: 20px; 23 | margin: 0; 24 | } 25 | h5 { 26 | margin: 0; 27 | padding: 5px 0 0 0; 28 | } 29 | } 30 | 31 | .mailbox-read-time { 32 | color: #999; 33 | font-size: 13px; 34 | } 35 | 36 | .mailbox-read-message { 37 | padding: 10px; 38 | } 39 | 40 | .mailbox-attachments { 41 | &:extend(.list-unstyled); 42 | li { 43 | float: left; 44 | width: 200px; 45 | border: 1px solid #eee; 46 | margin-bottom: 10px; 47 | margin-right: 10px; 48 | } 49 | } 50 | 51 | .mailbox-attachment-name { 52 | font-weight: bold; 53 | color: #666; 54 | } 55 | 56 | .mailbox-attachment-icon, 57 | .mailbox-attachment-info, 58 | .mailbox-attachment-size { 59 | display: block; 60 | } 61 | 62 | .mailbox-attachment-info { 63 | padding: 10px; 64 | background: #f4f4f4; 65 | } 66 | 67 | .mailbox-attachment-size { 68 | color: #999; 69 | font-size: 12px; 70 | } 71 | 72 | .mailbox-attachment-icon { 73 | text-align: center; 74 | font-size: 65px; 75 | color: #666; 76 | padding: 20px 10px; 77 | &.has-img { 78 | padding: 0; 79 | > img { 80 | max-width: 100%; 81 | height: auto; 82 | } 83 | } 84 | } 85 | 86 | .mailbox-attachment-close { 87 | &:extend(.close); 88 | } 89 | -------------------------------------------------------------------------------- /lte-rails.gemspec: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | require File.expand_path('../lib/lte/rails/version', __FILE__) 3 | 4 | Gem::Specification.new do |spec| 5 | spec.name = "lte-rails" 6 | spec.version = Lte::Rails::VERSION 7 | spec.authors = ["Carlos Puchol"] 8 | spec.email = ["cpg+git at racketlogger.com"] 9 | 10 | spec.summary = %q{ Provides Admin LTE assets} 11 | spec.description = %q{ This gem provides all the assets for Admin LTE for use in a rails project} 12 | spec.homepage = "https://github.com/racketlogger/admin-lte-rails" 13 | spec.license = "MIT" 14 | 15 | # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or 16 | # delete this section to allow pushing this gem to any host. 17 | if spec.respond_to?(:metadata) 18 | spec.metadata['allowed_push_host'] = "https://rubygems.org" 19 | else 20 | raise "RubyGems 2.0 or newer is required to protect against public gem pushes." 21 | end 22 | 23 | spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } 24 | spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) } 25 | 26 | spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } 27 | spec.require_path = 'lib' 28 | 29 | spec.add_development_dependency "bundler", "~> 1.10" 30 | spec.add_development_dependency "rake", "~> 10.0" 31 | spec.add_development_dependency "rspec", "~> 3" 32 | 33 | spec.add_development_dependency 'less', '~> 2.6' 34 | 35 | spec.add_runtime_dependency 'less-rails-bootstrap', '~> 3.3' 36 | spec.add_runtime_dependency 'less-rails', '~> 4.0' 37 | 38 | end 39 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/modal.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: modal 3 | * ---------------- 4 | */ 5 | .modal { 6 | background: rgba(0, 0, 0, .3); 7 | } 8 | 9 | .modal-content { 10 | .border-radius(0); 11 | .box-shadow(0 2px 3px rgba(0, 0, 0, .125)); 12 | border: 0; 13 | @media (min-width: @screen-sm-min) { 14 | .box-shadow(0 2px 3px rgba(0, 0, 0, .125)); 15 | } 16 | } 17 | 18 | .modal-header { 19 | border-bottom-color: @box-border-color; 20 | } 21 | 22 | .modal-footer { 23 | border-top-color: @box-border-color; 24 | } 25 | 26 | //Modal variants 27 | .modal-primary { 28 | .modal-body { 29 | &:extend(.bg-light-blue); 30 | } 31 | .modal-header, 32 | .modal-footer { 33 | &:extend(.bg-light-blue-active); 34 | border-color: darken(@light-blue, 10%); 35 | } 36 | } 37 | 38 | .modal-warning { 39 | .modal-body { 40 | &:extend(.bg-yellow); 41 | } 42 | .modal-header, 43 | .modal-footer { 44 | &:extend(.bg-yellow-active); 45 | border-color: darken(@yellow, 10%); 46 | } 47 | } 48 | 49 | .modal-info { 50 | .modal-body { 51 | &:extend(.bg-aqua); 52 | } 53 | .modal-header, 54 | .modal-footer { 55 | &:extend(.bg-aqua-active); 56 | border-color: darken(@aqua, 10%); 57 | } 58 | } 59 | 60 | .modal-success { 61 | .modal-body { 62 | &:extend(.bg-green); 63 | } 64 | .modal-header, 65 | .modal-footer { 66 | &:extend(.bg-green-active); 67 | border-color: darken(@green, 10%); 68 | } 69 | } 70 | 71 | .modal-danger { 72 | .modal-body { 73 | &:extend(.bg-red); 74 | } 75 | .modal-header, 76 | .modal-footer { 77 | &:extend(.bg-red-active); 78 | border-color: darken(@red, 10%); 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/social-widgets.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Social Widgets 3 | * ------------------------- 4 | */ 5 | //General widget style 6 | .box-widget { 7 | border: none; 8 | position: relative; 9 | } 10 | 11 | //User Widget Style 1 12 | .widget-user { 13 | //User name container 14 | .widget-user-header { 15 | padding: 20px; 16 | height: 120px; 17 | .border-top-radius(@box-border-radius); 18 | } 19 | //User name 20 | .widget-user-username { 21 | margin-top: 0; 22 | margin-bottom: 5px; 23 | font-size: 25px; 24 | font-weight: 300; 25 | text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); 26 | } 27 | //User single line description 28 | .widget-user-desc { 29 | margin-top: 0; 30 | } 31 | //User image container 32 | .widget-user-image { 33 | position: absolute; 34 | top: 65px; 35 | left: 50%; 36 | margin-left: -45px; 37 | > img { 38 | width: 90px; 39 | height: auto; 40 | border: 3px solid #fff; 41 | } 42 | } 43 | .box-footer { 44 | padding-top: 30px; 45 | } 46 | } 47 | 48 | //User Widget Style 2 49 | .widget-user-2 { 50 | //User name container 51 | .widget-user-header { 52 | padding: 20px; 53 | .border-top-radius(@box-border-radius); 54 | } 55 | //User name 56 | .widget-user-username { 57 | margin-top: 5px; 58 | margin-bottom: 5px; 59 | font-size: 25px; 60 | font-weight: 300; 61 | } 62 | //User single line description 63 | .widget-user-desc { 64 | margin-top: 0; 65 | } 66 | .widget-user-username, 67 | .widget-user-desc { 68 | margin-left: 75px; 69 | } 70 | //User image container 71 | .widget-user-image { 72 | > img { 73 | width: 65px; 74 | height: auto; 75 | float: left; 76 | } 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/skins/skin-black.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Skin: Black 3 | * ----------- 4 | */ 5 | @import "twitter/bootstrap/mixins.less"; 6 | @import "twitter/bootstrap/variables.less"; 7 | @import "../variables.less"; 8 | @import "../mixins.less"; 9 | 10 | /* skin-black navbar */ 11 | .skin-black { 12 | //Navbar & Logo 13 | .main-header { 14 | .box-shadow(0px 1px 1px rgba(0, 0, 0, 0.05)); 15 | .navbar-toggle { 16 | color: #333; 17 | } 18 | .navbar-brand { 19 | color: #333; 20 | border-right: 1px solid #eee; 21 | } 22 | .navbar { 23 | .navbar-variant(#fff; #333; #999; #fff); 24 | > .sidebar-toggle { 25 | color: #333; 26 | border-right: 1px solid #eee; 27 | } 28 | .navbar-nav { 29 | > li > a { 30 | border-right: 1px solid #eee; 31 | } 32 | } 33 | .navbar-custom-menu .navbar-nav, 34 | .navbar-right { 35 | > li { 36 | > a { 37 | border-left: 1px solid #eee; 38 | border-right-width: 0; 39 | } 40 | } 41 | } 42 | } 43 | > .logo { 44 | .logo-variant(#fff; #333); 45 | border-right: 1px solid #eee; 46 | @media (max-width: @screen-header-collapse) { 47 | .logo-variant(#222; #fff); 48 | border-right: none; 49 | } 50 | } 51 | 52 | li.user-header { 53 | background-color: #222; 54 | } 55 | } 56 | 57 | //Content Header 58 | .content-header { 59 | background: transparent; 60 | box-shadow: none; 61 | } 62 | //Create the sidebar skin 63 | .skin-dark-sidebar(#fff); 64 | 65 | .pace { 66 | .pace-progress { 67 | background: #222; 68 | } 69 | .pace-activity { 70 | border-top-color: #222; 71 | border-left-color: #222; 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/small-box.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Small Box 3 | * -------------------- 4 | */ 5 | 6 | .small-box { 7 | .border-radius(2px); 8 | position: relative; 9 | display: block; 10 | margin-bottom: 20px; 11 | box-shadow: @box-boxshadow; 12 | // content wrapper 13 | > .inner { 14 | padding: 10px; 15 | } 16 | 17 | > .small-box-footer { 18 | position: relative; 19 | text-align: center; 20 | padding: 3px 0; 21 | color: #fff; 22 | color: rgba(255, 255, 255, 0.8); 23 | display: block; 24 | z-index: 10; 25 | background: rgba(0, 0, 0, 0.1); 26 | text-decoration: none; 27 | &:hover { 28 | color: #fff; 29 | background: rgba(0, 0, 0, 0.15); 30 | } 31 | } 32 | 33 | h3 { 34 | font-size: 38px; 35 | font-weight: bold; 36 | margin: 0 0 10px 0; 37 | white-space: nowrap; 38 | padding: 0; 39 | 40 | } 41 | 42 | p { 43 | font-size: 15px; 44 | > small { 45 | display: block; 46 | color: #f9f9f9; 47 | font-size: 13px; 48 | margin-top: 5px; 49 | } 50 | } 51 | 52 | h3, p { 53 | z-index: 5; 54 | } 55 | 56 | // the icon 57 | .icon { 58 | .transition(all @transition-speed linear); 59 | position: absolute; 60 | top: -10px; 61 | right: 10px; 62 | z-index: 0; 63 | font-size: 90px; 64 | color: rgba(0, 0, 0, 0.15); 65 | } 66 | 67 | // Small box hover state 68 | &:hover { 69 | text-decoration: none; 70 | color: #f9f9f9; 71 | // Animate icons on small box hover 72 | .icon { 73 | font-size: 95px; 74 | } 75 | } 76 | } 77 | 78 | @media (max-width: @screen-xs-max) { 79 | // No need for icons on very small devices 80 | .small-box { 81 | text-align: center; 82 | .icon { 83 | display: none; 84 | } 85 | p { 86 | font-size: 12px; 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/AdminLTE.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * AdminLTE v2.3.5 3 | * Author: Almsaeed Studio 4 | * Website: Almsaeed Studio 5 | * License: Open source - MIT 6 | * Please visit http://opensource.org/licenses/MIT for more information 7 | !*/ 8 | //google fonts 9 | @import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic); 10 | //Bootstrap Variables & Mixins 11 | //The core bootstrap code have not been modified. These files 12 | //are included only for reference. 13 | @import (reference) "twitter/bootstrap/mixins.less"; 14 | @import (reference) "twitter/bootstrap/variables.less"; 15 | //MISC 16 | //---- 17 | @import "core.less"; 18 | @import "variables.less"; 19 | @import "mixins.less"; 20 | //COMPONENTS 21 | //----------- 22 | @import "header.less"; 23 | @import "sidebar.less"; 24 | @import "sidebar-mini.less"; 25 | @import "control-sidebar.less"; 26 | @import "dropdown.less"; 27 | @import "forms.less"; 28 | @import "progress-bars.less"; 29 | @import "small-box.less"; 30 | @import "boxes.less"; 31 | @import "info-box.less"; 32 | @import "timeline.less"; 33 | @import "buttons.less"; 34 | @import "callout.less"; 35 | @import "alerts.less"; 36 | @import "navs.less"; 37 | @import "products.less"; 38 | @import "table.less"; 39 | @import "labels.less"; 40 | @import "direct-chat.less"; 41 | @import "users-list.less"; 42 | @import "carousel.less"; 43 | @import "modal.less"; 44 | @import "social-widgets.less"; 45 | //PAGES 46 | //------ 47 | @import "mailbox.less"; 48 | @import "lockscreen.less"; 49 | @import "login_and_register.less"; 50 | @import "404_500_errors.less"; 51 | @import "invoice.less"; 52 | @import "profile"; 53 | //Plugins 54 | //-------- 55 | @import "bootstrap-social.less"; 56 | @import "fullcalendar.less"; 57 | @import "select2.less"; 58 | //Miscellaneous 59 | //------------- 60 | @import "miscellaneous.less"; 61 | @import "print.less"; 62 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/fullcalendar.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Plugin: Full Calendar 3 | * --------------------- 4 | */ 5 | //Fullcalendar buttons 6 | .fc-button { 7 | background: #f4f4f4; 8 | background-image: none; 9 | color: #444; 10 | border-color: #ddd; 11 | border-bottom-color: #ddd; 12 | &:hover, 13 | &:active, 14 | &.hover { 15 | background-color: #e9e9e9; 16 | } 17 | } 18 | 19 | // Calendar title 20 | .fc-header-title h2 { 21 | font-size: 15px; 22 | line-height: 1.6em; 23 | color: #666; 24 | margin-left: 10px; 25 | } 26 | 27 | .fc-header-right { 28 | padding-right: 10px; 29 | } 30 | 31 | .fc-header-left { 32 | padding-left: 10px; 33 | } 34 | 35 | // Calendar table header cells 36 | .fc-widget-header { 37 | background: #fafafa; 38 | } 39 | 40 | .fc-grid { 41 | width: 100%; 42 | border: 0; 43 | } 44 | 45 | .fc-widget-header:first-of-type, 46 | .fc-widget-content:first-of-type { 47 | border-left: 0; 48 | border-right: 0; 49 | } 50 | 51 | .fc-widget-header:last-of-type, 52 | .fc-widget-content:last-of-type { 53 | border-right: 0; 54 | } 55 | 56 | .fc-toolbar { 57 | padding: @box-padding; 58 | margin: 0; 59 | } 60 | 61 | .fc-day-number { 62 | font-size: 20px; 63 | font-weight: 300; 64 | padding-right: 10px; 65 | } 66 | 67 | .fc-color-picker { 68 | list-style: none; 69 | margin: 0; 70 | padding: 0; 71 | > li { 72 | float: left; 73 | font-size: 30px; 74 | margin-right: 5px; 75 | line-height: 30px; 76 | .fa { 77 | .transition-transform(linear .3s); 78 | &:hover { 79 | .rotate(30deg); 80 | } 81 | } 82 | } 83 | } 84 | 85 | #add-new-event { 86 | .transition(all linear .3s); 87 | } 88 | 89 | .external-event { 90 | padding: 5px 10px; 91 | font-weight: bold; 92 | margin-bottom: 4px; 93 | box-shadow: @box-boxshadow; 94 | text-shadow: @box-boxshadow; 95 | border-radius: @box-border-radius; 96 | cursor: move; 97 | &:hover { 98 | box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2); 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/progress-bars.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Progress Bar 3 | * ----------------------- 4 | */ 5 | 6 | //General CSS 7 | .progress, 8 | .progress > .progress-bar { 9 | .box-shadow(none); 10 | &, .progress-bar { 11 | .border-radius(@progress-bar-border-radius); 12 | } 13 | } 14 | 15 | /* size variation */ 16 | .progress.sm, 17 | .progress-sm { 18 | height: 10px; 19 | &, .progress-bar { 20 | .border-radius(@progress-bar-sm-border-radius); 21 | } 22 | } 23 | 24 | .progress.xs, 25 | .progress-xs { 26 | height: 7px; 27 | &, .progress-bar { 28 | .border-radius(@progress-bar-xs-border-radius); 29 | } 30 | } 31 | 32 | .progress.xxs, 33 | .progress-xxs { 34 | height: 3px; 35 | &, .progress-bar { 36 | .border-radius(@progress-bar-xs-border-radius); 37 | } 38 | } 39 | 40 | /* Vertical bars */ 41 | .progress.vertical { 42 | position: relative; 43 | width: 30px; 44 | height: 200px; 45 | display: inline-block; 46 | margin-right: 10px; 47 | > .progress-bar { 48 | width: 100%; 49 | position: absolute; 50 | bottom: 0; 51 | } 52 | 53 | //Sizes 54 | &.sm, 55 | &.progress-sm { 56 | width: 20px; 57 | } 58 | 59 | &.xs, 60 | &.progress-xs { 61 | width: 10px; 62 | } 63 | &.xxs, 64 | &.progress-xxs { 65 | width: 3px; 66 | } 67 | } 68 | 69 | //Progress Groups 70 | .progress-group { 71 | .progress-text { 72 | font-weight: 600; 73 | } 74 | .progress-number { 75 | float: right; 76 | } 77 | } 78 | 79 | /* Remove margins from progress bars when put in a table */ 80 | .table { 81 | tr > td .progress { 82 | margin: 0; 83 | } 84 | } 85 | 86 | // Variations 87 | // ------------------------- 88 | .progress-bar-light-blue, 89 | .progress-bar-primary { 90 | .progress-bar-variant(@light-blue); 91 | } 92 | 93 | .progress-bar-green, 94 | .progress-bar-success { 95 | .progress-bar-variant(@green); 96 | } 97 | 98 | .progress-bar-aqua, 99 | .progress-bar-info { 100 | .progress-bar-variant(@aqua); 101 | } 102 | 103 | .progress-bar-yellow, 104 | .progress-bar-warning { 105 | .progress-bar-variant(@yellow); 106 | } 107 | 108 | .progress-bar-red, 109 | .progress-bar-danger { 110 | .progress-bar-variant(@red); 111 | } 112 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/forms.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Form 3 | * --------------- 4 | */ 5 | .form-control { 6 | .border-radius(@input-radius); 7 | box-shadow: none; 8 | border-color: @gray; 9 | &:focus { 10 | border-color: @light-blue; 11 | box-shadow: none; 12 | } 13 | &::-moz-placeholder, 14 | &:-ms-input-placeholder, 15 | &::-webkit-input-placeholder { 16 | color: #bbb; 17 | opacity: 1; 18 | } 19 | 20 | &:not(select) { 21 | -webkit-appearance: none; 22 | -moz-appearance: none; 23 | appearance: none; 24 | } 25 | } 26 | 27 | .form-group { 28 | &.has-success { 29 | label { 30 | color: @green; 31 | } 32 | .form-control { 33 | border-color: @green; 34 | box-shadow: none; 35 | } 36 | .help-block { 37 | color: @green; 38 | } 39 | } 40 | 41 | &.has-warning { 42 | label { 43 | color: @yellow; 44 | } 45 | .form-control { 46 | border-color: @yellow; 47 | box-shadow: none; 48 | } 49 | .help-block { 50 | color: @yellow; 51 | } 52 | } 53 | 54 | &.has-error { 55 | label { 56 | color: @red; 57 | } 58 | .form-control { 59 | border-color: @red; 60 | box-shadow: none; 61 | } 62 | .help-block { 63 | color: @red; 64 | } 65 | } 66 | } 67 | 68 | /* Input group */ 69 | .input-group { 70 | .input-group-addon { 71 | .border-radius(@input-radius); 72 | border-color: @gray; 73 | background-color: #fff; 74 | } 75 | } 76 | 77 | /* button groups */ 78 | .btn-group-vertical { 79 | .btn { 80 | &.btn-flat:first-of-type, &.btn-flat:last-of-type { 81 | .border-radius(0); 82 | } 83 | } 84 | } 85 | 86 | .icheck > label { 87 | padding-left: 0; 88 | } 89 | 90 | /* support Font Awesome icons in form-control */ 91 | .form-control-feedback.fa { 92 | line-height: @input-height-base; 93 | } 94 | 95 | .input-lg + .form-control-feedback.fa, 96 | .input-group-lg + .form-control-feedback.fa, 97 | .form-group-lg .form-control + .form-control-feedback.fa { 98 | line-height: @input-height-large; 99 | } 100 | 101 | .input-sm + .form-control-feedback.fa, 102 | .input-group-sm + .form-control-feedback.fa, 103 | .form-group-sm .form-control + .form-control-feedback.fa { 104 | line-height: @input-height-small; 105 | } 106 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/timeline.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Timeline 3 | * ------------------- 4 | */ 5 | 6 | .timeline { 7 | position: relative; 8 | margin: 0 0 30px 0; 9 | padding: 0; 10 | list-style: none; 11 | 12 | // The line 13 | &:before { 14 | content: ''; 15 | position: absolute; 16 | top: 0; 17 | bottom: 0; 18 | width: 4px; 19 | background: #ddd; 20 | left: 31px; 21 | margin: 0; 22 | .border-radius(2px); 23 | } 24 | 25 | > li { 26 | position: relative; 27 | margin-right: 10px; 28 | margin-bottom: 15px; 29 | .clearfix(); 30 | 31 | // The content 32 | > .timeline-item { 33 | .box-shadow(@box-boxshadow); 34 | .border-radius(@box-border-radius); 35 | margin-top: 0; 36 | background: #fff; 37 | color: #444; 38 | margin-left: 60px; 39 | margin-right: 15px; 40 | padding: 0; 41 | position: relative; 42 | 43 | // The time and header 44 | > .time { 45 | color: #999; 46 | float: right; 47 | padding: 10px; 48 | font-size: 12px; 49 | } 50 | > .timeline-header { 51 | margin: 0; 52 | color: #555; 53 | border-bottom: 1px solid @box-border-color; 54 | padding: 10px; 55 | font-size: 16px; 56 | line-height: 1.1; 57 | > a { 58 | font-weight: 600; 59 | } 60 | } 61 | // Item body and footer 62 | > .timeline-body, > .timeline-footer { 63 | padding: 10px; 64 | } 65 | 66 | } 67 | 68 | // The icons 69 | > .fa, 70 | > .glyphicon, 71 | > .ion { 72 | width: 30px; 73 | height: 30px; 74 | font-size: 15px; 75 | line-height: 30px; 76 | position: absolute; 77 | color: #666; 78 | background: @gray; 79 | border-radius: 50%; 80 | text-align: center; 81 | left: 18px; 82 | top: 0; 83 | } 84 | } 85 | 86 | // Time label 87 | > .time-label { 88 | > span { 89 | font-weight: 600; 90 | padding: 5px; 91 | display: inline-block; 92 | background-color: #fff; 93 | 94 | .border-radius(4px); 95 | } 96 | } 97 | } 98 | 99 | .timeline-inverse { 100 | > li { 101 | > .timeline-item { 102 | background: #f0f0f0; 103 | border: 1px solid #ddd; 104 | .box-shadow(none); 105 | > .timeline-header { 106 | border-bottom-color: #ddd; 107 | } 108 | } 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GIT 2 | remote: https://github.com/nicke/less-rails-bootstrap.git 3 | revision: 365fba903cce8d2b368f55d05da64a50acea0659 4 | specs: 5 | less-rails-bootstrap (3.3.7.0) 6 | less-rails (>= 3.0) 7 | 8 | PATH 9 | remote: . 10 | specs: 11 | lte-rails (0.0.5) 12 | less-rails (~> 4.0) 13 | less-rails-bootstrap (~> 3.3) 14 | 15 | GEM 16 | remote: https://rubygems.org/ 17 | specs: 18 | actionpack (5.2.2) 19 | actionview (= 5.2.2) 20 | activesupport (= 5.2.2) 21 | rack (~> 2.0) 22 | rack-test (>= 0.6.3) 23 | rails-dom-testing (~> 2.0) 24 | rails-html-sanitizer (~> 1.0, >= 1.0.2) 25 | actionview (5.2.2) 26 | activesupport (= 5.2.2) 27 | builder (~> 3.1) 28 | erubi (~> 1.4) 29 | rails-dom-testing (~> 2.0) 30 | rails-html-sanitizer (~> 1.0, >= 1.0.3) 31 | activesupport (5.2.2) 32 | concurrent-ruby (~> 1.0, >= 1.0.2) 33 | i18n (>= 0.7, < 2) 34 | minitest (~> 5.1) 35 | tzinfo (~> 1.1) 36 | builder (3.2.3) 37 | commonjs (0.2.7) 38 | concurrent-ruby (1.1.4) 39 | crass (1.0.4) 40 | diff-lcs (1.3) 41 | erubi (1.8.0) 42 | i18n (1.5.1) 43 | concurrent-ruby (~> 1.0) 44 | less (2.6.0) 45 | commonjs (~> 0.2.7) 46 | less-rails (4.0.0) 47 | actionpack (>= 4) 48 | less (~> 2.6.0) 49 | sprockets (>= 2) 50 | loofah (2.2.3) 51 | crass (~> 1.0.2) 52 | nokogiri (>= 1.5.9) 53 | mini_portile2 (2.4.0) 54 | minitest (5.11.3) 55 | nokogiri (1.10.0) 56 | mini_portile2 (~> 2.4.0) 57 | rack (2.0.6) 58 | rack-test (1.1.0) 59 | rack (>= 1.0, < 3) 60 | rails-dom-testing (2.0.3) 61 | activesupport (>= 4.2.0) 62 | nokogiri (>= 1.6) 63 | rails-html-sanitizer (1.0.4) 64 | loofah (~> 2.2, >= 2.2.2) 65 | rake (10.5.0) 66 | rspec (3.8.0) 67 | rspec-core (~> 3.8.0) 68 | rspec-expectations (~> 3.8.0) 69 | rspec-mocks (~> 3.8.0) 70 | rspec-core (3.8.0) 71 | rspec-support (~> 3.8.0) 72 | rspec-expectations (3.8.2) 73 | diff-lcs (>= 1.2.0, < 2.0) 74 | rspec-support (~> 3.8.0) 75 | rspec-mocks (3.8.0) 76 | diff-lcs (>= 1.2.0, < 2.0) 77 | rspec-support (~> 3.8.0) 78 | rspec-support (3.8.0) 79 | sprockets (3.7.2) 80 | concurrent-ruby (~> 1.0) 81 | rack (> 1, < 3) 82 | thread_safe (0.3.6) 83 | tzinfo (1.2.5) 84 | thread_safe (~> 0.1) 85 | 86 | PLATFORMS 87 | ruby 88 | 89 | DEPENDENCIES 90 | bundler (~> 1.10) 91 | less (~> 2.6) 92 | less-rails-bootstrap! 93 | lte-rails! 94 | rake (~> 10.0) 95 | rspec (~> 3) 96 | 97 | BUNDLED WITH 98 | 1.17.2 99 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/select2.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Plugin: Select2 3 | * --------------- 4 | */ 5 | 6 | //Signle select 7 | .select2-container--default, 8 | .select2-selection { 9 | &.select2-container--focus, 10 | &:focus, 11 | &:active { 12 | outline: none; 13 | } 14 | .select2-selection--single { 15 | border: 1px solid @gray; 16 | border-radius: @input-radius; 17 | padding: 6px 12px; 18 | height: 34px; 19 | } 20 | } 21 | 22 | .select2-container--default.select2-container--open { 23 | border-color: @light-blue; 24 | } 25 | 26 | .select2-dropdown { 27 | border: 1px solid @gray; 28 | border-radius: @input-radius; 29 | } 30 | 31 | .select2-container--default .select2-results__option--highlighted[aria-selected] { 32 | background-color: @light-blue; 33 | color: white; 34 | } 35 | 36 | .select2-results__option { 37 | padding: 6px 12px; 38 | user-select: none; 39 | -webkit-user-select: none; 40 | } 41 | 42 | .select2-container .select2-selection--single .select2-selection__rendered { 43 | padding-left: 0; 44 | padding-right: 0; 45 | height: auto; 46 | margin-top: -4px; 47 | } 48 | 49 | .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { 50 | padding-right: 6px; 51 | padding-left: 20px; 52 | } 53 | 54 | .select2-container--default .select2-selection--single .select2-selection__arrow { 55 | height: 28px; 56 | right: 3px; 57 | } 58 | 59 | .select2-container--default .select2-selection--single .select2-selection__arrow b { 60 | margin-top: 0; 61 | } 62 | 63 | .select2-dropdown, 64 | .select2-search--inline { 65 | .select2-search__field { 66 | border: 1px solid @gray; 67 | &:focus { 68 | outline: none; 69 | border: 1px solid @light-blue; 70 | } 71 | } 72 | } 73 | 74 | .select2-container--default .select2-results__option[aria-disabled=true] { 75 | color: #999; 76 | } 77 | 78 | .select2-container--default .select2-results__option[aria-selected=true] { 79 | background-color: #ddd; 80 | &, 81 | &:hover { 82 | color: #444; 83 | } 84 | } 85 | 86 | //Multiple select 87 | .select2-container--default { 88 | .select2-selection--multiple { 89 | border: 1px solid @gray; 90 | border-radius: @input-radius; 91 | &:focus { 92 | border-color: @light-blue; 93 | } 94 | } 95 | &.select2-container--focus .select2-selection--multiple { 96 | border-color: @gray; 97 | } 98 | } 99 | 100 | .select2-container--default .select2-selection--multiple .select2-selection__choice { 101 | background-color: @light-blue; 102 | border-color: darken(@light-blue, 5%); 103 | padding: 1px 10px; 104 | color: #fff; 105 | } 106 | 107 | .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { 108 | margin-right: 5px; 109 | color: rgba(255, 255, 255, .7); 110 | &:hover { 111 | color: #fff; 112 | } 113 | } 114 | 115 | .select2-container .select2-selection--single .select2-selection__rendered { 116 | padding-right: 10px; 117 | } 118 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/sidebar.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Sidebar 3 | * ------------------ 4 | */ 5 | //Main Sidebar 6 | // ``` .left-side has been deprecated as of 2.0.0 in favor of .main-sidebar ``` 7 | 8 | .main-sidebar, 9 | .left-side { 10 | position: absolute; 11 | top: 0; 12 | left: 0; 13 | padding-top: 50px; 14 | min-height: 100%; 15 | width: @sidebar-width; 16 | z-index: 810; 17 | //Using disposable variable to join statements with a comma 18 | @transition-rule: @transition-speed @transition-fn, 19 | width @transition-speed @transition-fn; 20 | .transition-transform(@transition-rule); 21 | @media (max-width: @screen-header-collapse) { 22 | padding-top: 100px; 23 | } 24 | @media (max-width: @screen-xs-max) { 25 | .translate(-@sidebar-width, 0); 26 | } 27 | .sidebar-collapse & { 28 | @media (min-width: @screen-sm) { 29 | .translate(-@sidebar-width, 0); 30 | } 31 | } 32 | .sidebar-open & { 33 | @media (max-width: @screen-xs-max) { 34 | .translate(0, 0); 35 | } 36 | } 37 | } 38 | 39 | .sidebar { 40 | padding-bottom: 10px; 41 | } 42 | 43 | // remove border from form 44 | .sidebar-form { 45 | input:focus { 46 | border-color: transparent; 47 | } 48 | } 49 | 50 | //Sidebar user panel 51 | .user-panel { 52 | position: relative; 53 | width: 100%; 54 | padding: 10px; 55 | overflow: hidden; 56 | .clearfix(); 57 | > .image > img { 58 | width: 100%; 59 | max-width: 45px; 60 | height: auto; 61 | } 62 | > .info { 63 | padding: 5px 5px 5px 15px; 64 | line-height: 1; 65 | position: absolute; 66 | left: 55px; 67 | > p { 68 | font-weight: 600; 69 | margin-bottom: 9px; 70 | } 71 | > a { 72 | text-decoration: none; 73 | padding-right: 5px; 74 | margin-top: 3px; 75 | font-size: 11px; 76 | > .fa, 77 | > .ion, 78 | > .glyphicon { 79 | margin-right: 3px; 80 | } 81 | } 82 | } 83 | } 84 | 85 | // Sidebar menu 86 | .sidebar-menu { 87 | list-style: none; 88 | margin: 0; 89 | padding: 0; 90 | //First Level 91 | > li { 92 | position: relative; 93 | margin: 0; 94 | padding: 0; 95 | > a { 96 | padding: 12px 5px 12px 15px; 97 | display: block; 98 | > .fa, 99 | > .glyphicon, 100 | > .ion { 101 | width: 20px; 102 | } 103 | } 104 | .label, 105 | .badge { 106 | margin-right: 5px; 107 | } 108 | .badge { 109 | margin-top: 3px; 110 | } 111 | } 112 | li.header { 113 | padding: 10px 25px 10px 15px; 114 | font-size: 12px; 115 | } 116 | li > a > .pull-right-container > .fa-angle-left { 117 | width: auto; 118 | height: auto; 119 | padding: 0; 120 | margin-right: 10px; 121 | } 122 | li.active { 123 | > a > .pull-right-container > .fa-angle-left { 124 | .rotate(-90deg); 125 | } 126 | > .treeview-menu { 127 | display: block; 128 | } 129 | } 130 | 131 | // Tree view menu 132 | .treeview-menu { 133 | display: none; 134 | list-style: none; 135 | padding: 0; 136 | margin: 0; 137 | padding-left: 5px; 138 | .treeview-menu { 139 | padding-left: 20px; 140 | } 141 | > li { 142 | margin: 0; 143 | > a { 144 | padding: 5px 5px 5px 15px; 145 | display: block; 146 | font-size: 14px; 147 | > .fa, 148 | > .glyphicon, 149 | > .ion { 150 | width: 20px; 151 | } 152 | > .pull-right-container > .fa-angle-left, 153 | > .fa-angle-down { 154 | width: auto; 155 | } 156 | } 157 | } 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/variables.less: -------------------------------------------------------------------------------- 1 | //AdminLTE 2 Variables.less 2 | //========================= 3 | 4 | //PATHS 5 | //-------------------------------------------------------- 6 | 7 | @boxed-layout-bg-image-path: "../img/boxed-bg.jpg"; 8 | 9 | //COLORS 10 | //-------------------------------------------------------- 11 | //Primary 12 | @light-blue: #3c8dbc; 13 | //Danger 14 | @red: #dd4b39; 15 | //Success 16 | @green: #00a65a; 17 | //Info 18 | @aqua: #00c0ef; 19 | //Warning 20 | @yellow: #f39c12; 21 | @blue: #0073b7; 22 | @navy: #001F3F; 23 | @teal: #39CCCC; 24 | @olive: #3D9970; 25 | @lime: #01FF70; 26 | @orange: #FF851B; 27 | @fuchsia: #F012BE; 28 | @purple: #605ca8; 29 | @maroon: #D81B60; 30 | @black: #111; 31 | @gray: #d2d6de; 32 | 33 | //LAYOUT 34 | //-------------------------------------------------------- 35 | 36 | //Side bar and logo width 37 | @sidebar-width: 230px; 38 | //Boxed layout maximum width 39 | @boxed-layout-max-width: 1024px; 40 | //When the logo should go to the top of the screen 41 | @screen-header-collapse: @screen-xs-max; 42 | 43 | //Link colors (Aka: tags) 44 | @link-color: @light-blue; 45 | @link-hover-color: lighten(@link-color, 15%); 46 | 47 | //Body background (Affects main content background only) 48 | @body-bg: #ecf0f5; 49 | 50 | //SIDEBAR SKINS 51 | //-------------------------------------------------------- 52 | 53 | //Dark sidebar 54 | @sidebar-dark-bg: #222d32; 55 | @sidebar-dark-hover-bg: darken(@sidebar-dark-bg, 2%); 56 | @sidebar-dark-color: lighten(@sidebar-dark-bg, 60%); 57 | @sidebar-dark-hover-color: #fff; 58 | @sidebar-dark-submenu-bg: lighten(@sidebar-dark-bg, 5%); 59 | @sidebar-dark-submenu-color: lighten(@sidebar-dark-submenu-bg, 40%); 60 | @sidebar-dark-submenu-hover-color: #fff; 61 | 62 | //Light sidebar 63 | @sidebar-light-bg: #f9fafc; 64 | @sidebar-light-hover-bg: lighten(#f0f0f1, 1.5%); 65 | @sidebar-light-color: #444; 66 | @sidebar-light-hover-color: #000; 67 | @sidebar-light-submenu-bg: @sidebar-light-hover-bg; 68 | @sidebar-light-submenu-color: #777; 69 | @sidebar-light-submenu-hover-color: #000; 70 | 71 | //CONTROL SIDEBAR 72 | //-------------------------------------------------------- 73 | @control-sidebar-width: @sidebar-width; 74 | 75 | //BOXES 76 | //-------------------------------------------------------- 77 | @box-border-color: #f4f4f4; 78 | @box-border-radius: 3px; 79 | @box-footer-bg: #fff; 80 | @box-boxshadow: 0 1px 1px rgba(0, 0, 0, .1); 81 | @box-padding: 10px; 82 | 83 | //Box variants 84 | @box-default-border-top-color: #d2d6de; 85 | 86 | //BUTTONS 87 | //-------------------------------------------------------- 88 | @btn-boxshadow: none; 89 | 90 | //PROGRESS BARS 91 | //-------------------------------------------------------- 92 | @progress-bar-border-radius: 1px; 93 | @progress-bar-sm-border-radius: 1px; 94 | @progress-bar-xs-border-radius: 1px; 95 | 96 | //FORMS 97 | //-------------------------------------------------------- 98 | @input-radius: 0; 99 | 100 | //BUTTONS 101 | //-------------------------------------------------------- 102 | 103 | //Border radius for non flat buttons 104 | @btn-border-radius: 3px; 105 | 106 | //DIRECT CHAT 107 | //-------------------------------------------------------- 108 | @direct-chat-height: 250px; 109 | @direct-chat-default-msg-bg: @gray; 110 | @direct-chat-default-font-color: #444; 111 | @direct-chat-default-msg-border-color: @gray; 112 | 113 | //CHAT WIDGET 114 | //-------------------------------------------------------- 115 | @attachment-border-radius: 3px; 116 | 117 | //TRANSITIONS SETTINGS 118 | //-------------------------------------------------------- 119 | 120 | //Transition global options 121 | @transition-speed: .3s; 122 | @transition-fn: ease-in-out; 123 | //cubic-bezier(0.32,1.25,0.375,1.15); 124 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/core.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Core: General Layout Style 3 | * ------------------------- 4 | */ 5 | html, 6 | body { 7 | min-height: 100%; 8 | .layout-boxed & { 9 | height: 100%; 10 | } 11 | } 12 | 13 | body { 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif; 17 | font-weight: 400; 18 | overflow-x: hidden; 19 | overflow-y: auto; 20 | } 21 | 22 | /* Layout */ 23 | .wrapper { 24 | .clearfix(); 25 | min-height: 100%; 26 | position: relative; 27 | overflow: hidden; 28 | .layout-boxed & { 29 | max-width: 1250px; 30 | margin: 0 auto; 31 | min-height: 100%; 32 | box-shadow: 0 0 8px rgba(0, 0, 0, 0.5); 33 | position: relative; 34 | } 35 | } 36 | 37 | .layout-boxed { 38 | background: url('@{boxed-layout-bg-image-path}') repeat fixed; 39 | } 40 | 41 | /* 42 | * Content Wrapper - contains the main content 43 | * ```.right-side has been deprecated as of v2.0.0 in favor of .content-wrapper ``` 44 | */ 45 | .content-wrapper, 46 | .right-side, 47 | .main-footer { 48 | //Using disposable variable to join statements with a comma 49 | @transition-rule: @transition-speed @transition-fn, 50 | margin @transition-speed @transition-fn; 51 | .transition-transform(@transition-rule); 52 | margin-left: @sidebar-width; 53 | z-index: 820; 54 | //Top nav layout 55 | .layout-top-nav & { 56 | margin-left: 0; 57 | } 58 | @media (max-width: @screen-xs-max) { 59 | margin-left: 0; 60 | } 61 | //When opening the sidebar on large screens 62 | .sidebar-collapse & { 63 | @media (min-width: @screen-sm) { 64 | margin-left: 0; 65 | } 66 | } 67 | //When opening the sidebar on small screens 68 | .sidebar-open & { 69 | @media (max-width: @screen-xs-max) { 70 | .translate(@sidebar-width, 0); 71 | } 72 | } 73 | } 74 | 75 | .content-wrapper, 76 | .right-side { 77 | min-height: 100%; 78 | background-color: @body-bg; 79 | z-index: 800; 80 | } 81 | 82 | .main-footer { 83 | background: #fff; 84 | padding: 15px; 85 | color: #444; 86 | border-top: 1px solid @gray; 87 | } 88 | 89 | /* Fixed layout */ 90 | .fixed { 91 | .main-header, 92 | .main-sidebar, 93 | .left-side { 94 | position: fixed; 95 | } 96 | .main-header { 97 | top: 0; 98 | right: 0; 99 | left: 0; 100 | } 101 | .content-wrapper, 102 | .right-side { 103 | padding-top: 50px; 104 | @media (max-width: @screen-header-collapse) { 105 | padding-top: 100px; 106 | } 107 | } 108 | &.layout-boxed { 109 | .wrapper { 110 | max-width: 100%; 111 | } 112 | } 113 | } 114 | 115 | body.hold-transition { 116 | .content-wrapper, 117 | .right-side, 118 | .main-footer, 119 | .main-sidebar, 120 | .left-side, 121 | .main-header .navbar, 122 | .main-header .logo { 123 | /* Fix for IE */ 124 | .transition(none); 125 | } 126 | } 127 | 128 | /* Content */ 129 | .content { 130 | min-height: 250px; 131 | padding: 15px; 132 | .container-fixed(@grid-gutter-width); 133 | } 134 | 135 | /* H1 - H6 font */ 136 | h1, 137 | h2, 138 | h3, 139 | h4, 140 | h5, 141 | h6, 142 | .h1, 143 | .h2, 144 | .h3, 145 | .h4, 146 | .h5, 147 | .h6 { 148 | font-family: 'Source Sans Pro', sans-serif; 149 | } 150 | 151 | /* General Links */ 152 | a { 153 | color: @link-color; 154 | } 155 | 156 | a:hover, 157 | a:active, 158 | a:focus { 159 | outline: none; 160 | text-decoration: none; 161 | color: @link-hover-color; 162 | } 163 | 164 | /* Page Header */ 165 | .page-header { 166 | margin: 10px 0 20px 0; 167 | font-size: 22px; 168 | 169 | > small { 170 | color: #666; 171 | display: block; 172 | margin-top: 5px; 173 | } 174 | } 175 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/bootstrap-social.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Social Buttons for Bootstrap 3 | * 4 | * Copyright 2013-2015 Panayiotis Lipiridis 5 | * Licensed under the MIT License 6 | * 7 | * https://github.com/lipis/bootstrap-social 8 | */ 9 | 10 | @bs-height-base: (@line-height-computed + @padding-base-vertical * 2); 11 | @bs-height-lg: (floor(@font-size-large * @line-height-base) + @padding-large-vertical * 2); 12 | @bs-height-sm: (floor(@font-size-small * 1.5) + @padding-small-vertical * 2); 13 | @bs-height-xs: (floor(@font-size-small * 1.2) + @padding-small-vertical + 1); 14 | 15 | .btn-social { 16 | position: relative; 17 | padding-left: (@bs-height-base + @padding-base-horizontal); 18 | text-align: left; 19 | white-space: nowrap; 20 | overflow: hidden; 21 | text-overflow: ellipsis; 22 | > :first-child { 23 | position: absolute; 24 | left: 0; 25 | top: 0; 26 | bottom: 0; 27 | width: @bs-height-base; 28 | line-height: (@bs-height-base + 2); 29 | font-size: 1.6em; 30 | text-align: center; 31 | border-right: 1px solid rgba(0, 0, 0, 0.2); 32 | } 33 | &.btn-lg { 34 | padding-left: (@bs-height-lg + @padding-large-horizontal); 35 | > :first-child { 36 | line-height: @bs-height-lg; 37 | width: @bs-height-lg; 38 | font-size: 1.8em; 39 | } 40 | } 41 | &.btn-sm { 42 | padding-left: (@bs-height-sm + @padding-small-horizontal); 43 | > :first-child { 44 | line-height: @bs-height-sm; 45 | width: @bs-height-sm; 46 | font-size: 1.4em; 47 | } 48 | } 49 | &.btn-xs { 50 | padding-left: (@bs-height-xs + @padding-small-horizontal); 51 | > :first-child { 52 | line-height: @bs-height-xs; 53 | width: @bs-height-xs; 54 | font-size: 1.2em; 55 | } 56 | } 57 | } 58 | 59 | .btn-social-icon { 60 | .btn-social; 61 | height: (@bs-height-base + 2); 62 | width: (@bs-height-base + 2); 63 | padding: 0; 64 | > :first-child { 65 | border: none; 66 | text-align: center; 67 | width: 100%; 68 | } 69 | &.btn-lg { 70 | height: @bs-height-lg; 71 | width: @bs-height-lg; 72 | padding-left: 0; 73 | padding-right: 0; 74 | } 75 | &.btn-sm { 76 | height: (@bs-height-sm + 2); 77 | width: (@bs-height-sm + 2); 78 | padding-left: 0; 79 | padding-right: 0; 80 | } 81 | &.btn-xs { 82 | height: (@bs-height-xs + 2); 83 | width: (@bs-height-xs + 2); 84 | padding-left: 0; 85 | padding-right: 0; 86 | } 87 | } 88 | 89 | .btn-social(@color-bg, @color: #fff) { 90 | background-color: @color-bg; 91 | .button-variant(@color, @color-bg, rgba(0, 0, 0, .2)); 92 | } 93 | 94 | .btn-adn { 95 | .btn-social(#d87a68); 96 | } 97 | 98 | .btn-bitbucket { 99 | .btn-social(#205081); 100 | } 101 | 102 | .btn-dropbox { 103 | .btn-social(#1087dd); 104 | } 105 | 106 | .btn-facebook { 107 | .btn-social(#3b5998); 108 | } 109 | 110 | .btn-flickr { 111 | .btn-social(#ff0084); 112 | } 113 | 114 | .btn-foursquare { 115 | .btn-social(#f94877); 116 | } 117 | 118 | .btn-github { 119 | .btn-social(#444444); 120 | } 121 | 122 | .btn-google { 123 | .btn-social(#dd4b39); 124 | } 125 | 126 | .btn-instagram { 127 | .btn-social(#3f729b); 128 | } 129 | 130 | .btn-linkedin { 131 | .btn-social(#007bb6); 132 | } 133 | 134 | .btn-microsoft { 135 | .btn-social(#2672ec); 136 | } 137 | 138 | .btn-openid { 139 | .btn-social(#f7931e); 140 | } 141 | 142 | .btn-pinterest { 143 | .btn-social(#cb2027); 144 | } 145 | 146 | .btn-reddit { 147 | .btn-social(#eff7ff, #000); 148 | } 149 | 150 | .btn-soundcloud { 151 | .btn-social(#ff5500); 152 | } 153 | 154 | .btn-tumblr { 155 | .btn-social(#2c4762); 156 | } 157 | 158 | .btn-twitter { 159 | .btn-social(#55acee); 160 | } 161 | 162 | .btn-vimeo { 163 | .btn-social(#1ab7ea); 164 | } 165 | 166 | .btn-vk { 167 | .btn-social(#587ea3); 168 | } 169 | 170 | .btn-yahoo { 171 | .btn-social(#720e9e); 172 | } 173 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/buttons.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Button 3 | * ----------------- 4 | */ 5 | 6 | .btn { 7 | .border-radius(@btn-border-radius); 8 | .box-shadow(@btn-boxshadow); 9 | border: 1px solid transparent; 10 | 11 | &.uppercase { 12 | text-transform: uppercase 13 | } 14 | 15 | // Flat buttons 16 | &.btn-flat { 17 | .border-radius(0); 18 | -webkit-box-shadow: none; 19 | -moz-box-shadow: none; 20 | box-shadow: none; 21 | border-width: 1px; 22 | } 23 | 24 | // Active state 25 | &:active { 26 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 27 | -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 28 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 29 | } 30 | 31 | &:focus { 32 | outline: none; 33 | } 34 | 35 | // input file btn 36 | &.btn-file { 37 | position: relative; 38 | overflow: hidden; 39 | > input[type='file'] { 40 | position: absolute; 41 | top: 0; 42 | right: 0; 43 | min-width: 100%; 44 | min-height: 100%; 45 | font-size: 100px; 46 | text-align: right; 47 | .opacity(0); 48 | outline: none; 49 | background: white; 50 | cursor: inherit; 51 | display: block; 52 | } 53 | } 54 | } 55 | 56 | //Button color variations 57 | .btn-default { 58 | background-color: #f4f4f4; 59 | color: #444; 60 | border-color: #ddd; 61 | &:hover, 62 | &:active, 63 | &.hover { 64 | background-color: darken(#f4f4f4, 5%); 65 | } 66 | } 67 | 68 | .btn-primary { 69 | background-color: @light-blue; 70 | border-color: darken(@light-blue, 5%); 71 | &:hover, &:active, &.hover { 72 | background-color: darken(@light-blue, 5%); 73 | } 74 | } 75 | 76 | .btn-success { 77 | background-color: @green; 78 | border-color: darken(@green, 5%); 79 | &:hover, &:active, &.hover { 80 | background-color: darken(@green, 5%); 81 | } 82 | } 83 | 84 | .btn-info { 85 | background-color: @aqua; 86 | border-color: darken(@aqua, 5%); 87 | &:hover, &:active, &.hover { 88 | background-color: darken(@aqua, 5%); 89 | } 90 | } 91 | 92 | .btn-danger { 93 | background-color: @red; 94 | border-color: darken(@red, 5%); 95 | &:hover, &:active, &.hover { 96 | background-color: darken(@red, 5%); 97 | } 98 | } 99 | 100 | .btn-warning { 101 | background-color: @yellow; 102 | border-color: darken(@yellow, 5%); 103 | &:hover, &:active, &.hover { 104 | background-color: darken(@yellow, 5%); 105 | } 106 | } 107 | 108 | .btn-outline { 109 | border: 1px solid #fff; 110 | background: transparent; 111 | color: #fff; 112 | &:hover, 113 | &:focus, 114 | &:active { 115 | color: rgba(255, 255, 255, .7); 116 | border-color: rgba(255, 255, 255, .7); 117 | } 118 | } 119 | 120 | .btn-link { 121 | .box-shadow(none); 122 | } 123 | 124 | //General .btn with bg class 125 | .btn[class*='bg-']:hover { 126 | .box-shadow(inset 0 0 100px rgba(0, 0, 0, 0.2)); 127 | } 128 | 129 | // Application buttons 130 | .btn-app { 131 | .border-radius(3px); 132 | position: relative; 133 | padding: 15px 5px; 134 | margin: 0 0 10px 10px; 135 | min-width: 80px; 136 | height: 60px; 137 | text-align: center; 138 | color: #666; 139 | border: 1px solid #ddd; 140 | background-color: #f4f4f4; 141 | font-size: 12px; 142 | //Icons within the btn 143 | > .fa, > .glyphicon, > .ion { 144 | font-size: 20px; 145 | display: block; 146 | } 147 | 148 | &:hover { 149 | background: #f4f4f4; 150 | color: #444; 151 | border-color: #aaa; 152 | } 153 | 154 | &:active, &:focus { 155 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 156 | -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 157 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); 158 | } 159 | 160 | //The badge 161 | > .badge { 162 | position: absolute; 163 | top: -3px; 164 | right: -10px; 165 | font-size: 10px; 166 | font-weight: 400; 167 | } 168 | } 169 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/direct-chat.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Direct Chat 3 | * ---------------------- 4 | */ 5 | .direct-chat { 6 | .box-body { 7 | .border-bottom-radius(0); 8 | position: relative; 9 | overflow-x: hidden; 10 | padding: 0; 11 | } 12 | &.chat-pane-open { 13 | .direct-chat-contacts { 14 | .translate(0, 0); 15 | } 16 | } 17 | } 18 | 19 | .direct-chat-messages { 20 | .translate(0, 0); 21 | padding: 10px; 22 | height: 250px; 23 | overflow: auto; 24 | } 25 | 26 | .direct-chat-msg, 27 | .direct-chat-text { 28 | display: block; 29 | } 30 | 31 | .direct-chat-msg { 32 | .clearfix(); 33 | margin-bottom: 10px; 34 | } 35 | 36 | .direct-chat-messages, 37 | .direct-chat-contacts { 38 | .transition-transform(.5s ease-in-out); 39 | } 40 | 41 | .direct-chat-text { 42 | .border-radius(5px); 43 | position: relative; 44 | padding: 5px 10px; 45 | background: @direct-chat-default-msg-bg; 46 | border: 1px solid @direct-chat-default-msg-border-color; 47 | margin: 5px 0 0 50px; 48 | color: @direct-chat-default-font-color; 49 | 50 | //Create the arrow 51 | &:after, 52 | &:before { 53 | position: absolute; 54 | right: 100%; 55 | top: 15px; 56 | border: solid transparent; 57 | border-right-color: @direct-chat-default-msg-border-color; 58 | content: ' '; 59 | height: 0; 60 | width: 0; 61 | pointer-events: none; 62 | } 63 | 64 | &:after { 65 | border-width: 5px; 66 | margin-top: -5px; 67 | } 68 | &:before { 69 | border-width: 6px; 70 | margin-top: -6px; 71 | } 72 | .right & { 73 | margin-right: 50px; 74 | margin-left: 0; 75 | &:after, 76 | &:before { 77 | right: auto; 78 | left: 100%; 79 | border-right-color: transparent; 80 | border-left-color: @direct-chat-default-msg-border-color; 81 | } 82 | } 83 | } 84 | 85 | .direct-chat-img { 86 | .border-radius(50%); 87 | float: left; 88 | width: 40px; 89 | height: 40px; 90 | .right & { 91 | float: right; 92 | } 93 | } 94 | 95 | .direct-chat-info { 96 | display: block; 97 | margin-bottom: 2px; 98 | font-size: 12px; 99 | } 100 | 101 | .direct-chat-name { 102 | font-weight: 600; 103 | } 104 | 105 | .direct-chat-timestamp { 106 | color: #999; 107 | } 108 | 109 | //Direct chat contacts pane 110 | .direct-chat-contacts-open { 111 | .direct-chat-contacts { 112 | .translate(0, 0); 113 | } 114 | } 115 | 116 | .direct-chat-contacts { 117 | .translate(101%, 0); 118 | position: absolute; 119 | top: 0; 120 | bottom: 0; 121 | height: 250px; 122 | width: 100%; 123 | background: #222d32; 124 | color: #fff; 125 | overflow: auto; 126 | } 127 | 128 | //Contacts list -- for displaying contacts in direct chat contacts pane 129 | .contacts-list { 130 | &:extend(.list-unstyled); 131 | > li { 132 | .clearfix(); 133 | border-bottom: 1px solid rgba(0, 0, 0, 0.2); 134 | padding: 10px; 135 | margin: 0; 136 | &:last-of-type { 137 | border-bottom: none; 138 | } 139 | } 140 | } 141 | 142 | .contacts-list-img { 143 | .border-radius(50%); 144 | width: 40px; 145 | float: left; 146 | } 147 | 148 | .contacts-list-info { 149 | margin-left: 45px; 150 | color: #fff; 151 | } 152 | 153 | .contacts-list-name, 154 | .contacts-list-status { 155 | display: block; 156 | } 157 | 158 | .contacts-list-name { 159 | font-weight: 600; 160 | } 161 | 162 | .contacts-list-status { 163 | font-size: 12px; 164 | } 165 | 166 | .contacts-list-date { 167 | color: #aaa; 168 | font-weight: normal; 169 | } 170 | 171 | .contacts-list-msg { 172 | color: #999; 173 | } 174 | 175 | //Direct Chat Variants 176 | .direct-chat-danger { 177 | .direct-chat-variant(@red); 178 | } 179 | 180 | .direct-chat-primary { 181 | .direct-chat-variant(@light-blue); 182 | } 183 | 184 | .direct-chat-warning { 185 | .direct-chat-variant(@yellow); 186 | } 187 | 188 | .direct-chat-info { 189 | .direct-chat-variant(@aqua); 190 | } 191 | 192 | .direct-chat-success { 193 | .direct-chat-variant(@green); 194 | } 195 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/sidebar-mini.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Sidebar Mini 3 | */ 4 | 5 | //Add sidebar-mini class to the body tag to activate this feature 6 | .sidebar-mini { 7 | //Sidebar mini should work only on devices larger than @screen-sm 8 | @media (min-width: @screen-sm) { 9 | //When the sidebar is collapsed... 10 | &.sidebar-collapse { 11 | 12 | //Apply the new margining to the main content and footer 13 | .content-wrapper, 14 | .right-side, 15 | .main-footer { 16 | margin-left: 50px !important; 17 | z-index: 840; 18 | } 19 | 20 | //Modify the sidebar to shrink instead of disappearing 21 | .main-sidebar { 22 | //Don't go away! Just shrink 23 | .translate(0, 0); 24 | width: 50px !important; 25 | z-index: 850; 26 | } 27 | 28 | .sidebar-menu { 29 | > li { 30 | position: relative; 31 | > a { 32 | margin-right: 0; 33 | } 34 | > a > span { 35 | border-top-right-radius: 4px; 36 | } 37 | 38 | &:not(.treeview) { 39 | > a > span { 40 | border-bottom-right-radius: 4px; 41 | } 42 | } 43 | 44 | > .treeview-menu { 45 | //Add some padding to the treeview menu 46 | padding-top: 5px; 47 | padding-bottom: 5px; 48 | border-bottom-right-radius: 4px; 49 | } 50 | 51 | //Show menu items on hover 52 | &:hover { 53 | > a { 54 | //overflow: visible; 55 | } 56 | > a > span:not(.pull-right),//:not(.pull-right-container), 57 | > .treeview-menu { 58 | display: block !important; 59 | position: absolute; 60 | width: @sidebar-width - 50; 61 | left: 50px; 62 | } 63 | 64 | //position the header & treeview menus 65 | > a > span { 66 | top: 0; 67 | margin-left: -3px; 68 | padding: 12px 5px 12px 20px; 69 | background-color: inherit; 70 | } 71 | > a > .pull-right-container { 72 | //display: block!important; 73 | float: right; 74 | width: auto!important; 75 | left: 200px!important; 76 | top: 10px!important; 77 | > .label:not(:first-of-type) { 78 | display: none; 79 | } 80 | } 81 | > .treeview-menu { 82 | top: 44px; 83 | margin-left: 0; 84 | } 85 | } 86 | } 87 | } 88 | 89 | //Make the sidebar links, menus, labels, badges 90 | //and angle icons disappear 91 | .main-sidebar .user-panel > .info, 92 | .sidebar-form, 93 | .sidebar-menu > li > a > span, 94 | .sidebar-menu > li > .treeview-menu, 95 | .sidebar-menu > li > a > .pull-right, 96 | .sidebar-menu li.header { 97 | display: none !important; 98 | -webkit-transform: translateZ(0); 99 | } 100 | 101 | .main-header { 102 | //Let's make the logo also shrink and the mini logo to appear 103 | .logo { 104 | width: 50px; 105 | > .logo-mini { 106 | display: block; 107 | margin-left: -15px; 108 | margin-right: -15px; 109 | font-size: 18px; 110 | } 111 | > .logo-lg { 112 | display: none; 113 | } 114 | } 115 | 116 | //Since the logo got smaller, we need to fix the navbar's position 117 | .navbar { 118 | margin-left: 50px; 119 | } 120 | } 121 | } 122 | } 123 | } 124 | 125 | //A fix for text overflow while transitioning from sidebar mini to full sidebar 126 | .sidebar-menu, 127 | .main-sidebar .user-panel, 128 | .sidebar-menu > li.header { 129 | white-space: nowrap; 130 | overflow: hidden; 131 | } 132 | 133 | .sidebar-menu:hover { 134 | overflow: visible; 135 | } 136 | 137 | .sidebar-form, 138 | .sidebar-menu > li.header { 139 | overflow: hidden; 140 | text-overflow: clip; 141 | } 142 | 143 | .sidebar-menu li > a { 144 | position: relative; 145 | > .pull-right-container { 146 | position: absolute; 147 | right: 10px; 148 | top: 50%; 149 | margin-top: -7px; 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/navs.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Nav 3 | * -------------- 4 | */ 5 | 6 | .nav { 7 | > li > a:hover, 8 | > li > a:active, 9 | > li > a:focus { 10 | color: #444; 11 | background: #f7f7f7; 12 | } 13 | } 14 | 15 | /* NAV PILLS */ 16 | .nav-pills { 17 | > li > a { 18 | .border-radius(0); 19 | border-top: 3px solid transparent; 20 | color: #444; 21 | > .fa, 22 | > .glyphicon, 23 | > .ion { 24 | margin-right: 5px; 25 | } 26 | } 27 | > li.active > a, 28 | > li.active > a:hover, 29 | > li.active > a:focus { 30 | border-top-color: @light-blue; 31 | } 32 | > li.active > a { 33 | font-weight: 600; 34 | } 35 | } 36 | 37 | /* NAV STACKED */ 38 | .nav-stacked { 39 | > li > a { 40 | .border-radius(0); 41 | border-top: 0; 42 | border-left: 3px solid transparent; 43 | color: #444; 44 | } 45 | > li.active > a, 46 | > li.active > a:hover { 47 | background: transparent; 48 | color: #444; 49 | border-top: 0; 50 | border-left-color: @light-blue; 51 | } 52 | 53 | > li.header { 54 | border-bottom: 1px solid #ddd; 55 | color: #777; 56 | margin-bottom: 10px; 57 | padding: 5px 10px; 58 | text-transform: uppercase; 59 | } 60 | } 61 | 62 | /* NAV TABS */ 63 | .nav-tabs-custom { 64 | margin-bottom: 20px; 65 | background: #fff; 66 | box-shadow: @box-boxshadow; 67 | border-radius: @box-border-radius; 68 | > .nav-tabs { 69 | margin: 0; 70 | border-bottom-color: #f4f4f4; 71 | .border-top-radius(@box-border-radius); 72 | > li { 73 | border-top: 3px solid transparent; 74 | margin-bottom: -2px; 75 | > a { 76 | color: #444; 77 | .border-radius(0); 78 | &.text-muted { 79 | color: #999; 80 | } 81 | &, 82 | &:hover { 83 | background: transparent; 84 | margin: 0; 85 | } 86 | &:hover { 87 | color: #999; 88 | } 89 | } 90 | &:not(.active) { 91 | > a:hover, 92 | > a:focus, 93 | > a:active { 94 | border-color: transparent; 95 | } 96 | } 97 | margin-right: 5px; 98 | } 99 | 100 | > li.active { 101 | border-top-color: @light-blue; 102 | & > a, 103 | &:hover > a { 104 | background-color: #fff; 105 | color: #444; 106 | } 107 | > a { 108 | border-top-color: transparent; 109 | border-left-color: #f4f4f4; 110 | border-right-color: #f4f4f4; 111 | } 112 | 113 | } 114 | 115 | > li:first-of-type { 116 | margin-left: 0; 117 | &.active { 118 | > a { 119 | border-left-color: transparent; 120 | } 121 | } 122 | } 123 | 124 | //Pulled to the right 125 | &.pull-right { 126 | float: none !important; 127 | > li { 128 | float: right; 129 | } 130 | > li:first-of-type { 131 | margin-right: 0; 132 | > a { 133 | border-left-width: 1px; 134 | } 135 | &.active { 136 | > a { 137 | border-left-color: #f4f4f4; 138 | border-right-color: transparent; 139 | } 140 | } 141 | } 142 | } 143 | 144 | > li.header { 145 | line-height: 35px; 146 | padding: 0 10px; 147 | font-size: 20px; 148 | color: #444; 149 | > .fa, 150 | > .glyphicon, 151 | > .ion { 152 | margin-right: 5px; 153 | } 154 | } 155 | } 156 | 157 | > .tab-content { 158 | background: #fff; 159 | padding: 10px; 160 | .border-bottom-radius(@box-border-radius); 161 | } 162 | 163 | .dropdown.open > a { 164 | &:active, 165 | &:focus { 166 | background: transparent; 167 | color: #999; 168 | } 169 | } 170 | // Tab color variations 171 | &.tab-primary { 172 | > .nav-tabs { 173 | > li.active { 174 | border-top-color: @light-blue; 175 | } 176 | } 177 | } 178 | &.tab-info { 179 | > .nav-tabs { 180 | > li.active { 181 | border-top-color: @aqua; 182 | } 183 | } 184 | } 185 | &.tab-danger { 186 | > .nav-tabs { 187 | > li.active { 188 | border-top-color: @red; 189 | } 190 | } 191 | } 192 | &.tab-warning { 193 | > .nav-tabs { 194 | > li.active { 195 | border-top-color: @yellow; 196 | } 197 | } 198 | } 199 | &.tab-success { 200 | > .nav-tabs { 201 | > li.active { 202 | border-top-color: @green; 203 | } 204 | } 205 | } 206 | &.tab-default { 207 | > .nav-tabs { 208 | > li.active { 209 | border-top-color: @gray; 210 | } 211 | } 212 | } 213 | } 214 | 215 | /* PAGINATION */ 216 | .pagination { 217 | > li > a { 218 | background: #fafafa; 219 | color: #666; 220 | } 221 | &.pagination-flat { 222 | > li > a { 223 | .border-radius(0) !important; 224 | } 225 | } 226 | } 227 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/header.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Main Header 3 | * ---------------------- 4 | */ 5 | 6 | .main-header { 7 | position: relative; 8 | max-height: 100px; 9 | z-index: 1030; 10 | //Navbar 11 | .navbar { 12 | .transition(margin-left @transition-speed @transition-fn); 13 | margin-bottom: 0; 14 | margin-left: @sidebar-width; 15 | border: none; 16 | min-height: @navbar-height; 17 | border-radius: 0; 18 | .layout-top-nav & { 19 | margin-left: 0; 20 | } 21 | } 22 | //Navbar search text input 23 | #navbar-search-input.form-control { 24 | background: rgba(255, 255, 255, .2); 25 | border-color: transparent; 26 | &:focus, 27 | &:active { 28 | border-color: rgba(0, 0, 0, .1); 29 | background: rgba(255, 255, 255, .9); 30 | } 31 | &::-moz-placeholder { 32 | color: #ccc; 33 | opacity: 1; 34 | } 35 | &:-ms-input-placeholder { 36 | color: #ccc; 37 | } 38 | &::-webkit-input-placeholder { 39 | color: #ccc; 40 | } 41 | } 42 | //Navbar Right Menu 43 | .navbar-custom-menu, 44 | .navbar-right { 45 | float: right; 46 | @media (max-width: @screen-sm-max) { 47 | a { 48 | color: inherit; 49 | background: transparent; 50 | } 51 | } 52 | } 53 | .navbar-right { 54 | @media (max-width: @screen-header-collapse) { 55 | float: none; 56 | .navbar-collapse & { 57 | margin: 7.5px -15px; 58 | } 59 | 60 | > li { 61 | color: inherit; 62 | border: 0; 63 | } 64 | } 65 | } 66 | //Navbar toggle button 67 | .sidebar-toggle { 68 | float: left; 69 | background-color: transparent; 70 | background-image: none; 71 | padding: @navbar-padding-vertical @navbar-padding-horizontal; 72 | //Add the fontawesome bars icon 73 | font-family: fontAwesome; 74 | &:before { 75 | content: "\f0c9"; 76 | } 77 | &:hover { 78 | color: #fff; 79 | } 80 | &:focus, 81 | &:active { 82 | background: transparent; 83 | } 84 | } 85 | .sidebar-toggle .icon-bar { 86 | display: none; 87 | } 88 | //Navbar User Menu 89 | .navbar .nav > li.user > a { 90 | > .fa, 91 | > .glyphicon, 92 | > .ion { 93 | margin-right: 5px; 94 | } 95 | } 96 | 97 | //Labels in navbar 98 | .navbar .nav > li > a > .label { 99 | position: absolute; 100 | top: 9px; 101 | right: 7px; 102 | text-align: center; 103 | font-size: 9px; 104 | padding: 2px 3px; 105 | line-height: .9; 106 | } 107 | 108 | //Logo bar 109 | .logo { 110 | .transition(width @transition-speed @transition-fn); 111 | display: block; 112 | float: left; 113 | height: @navbar-height; 114 | font-size: 20px; 115 | line-height: 50px; 116 | text-align: center; 117 | width: @sidebar-width; 118 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 119 | padding: 0 15px; 120 | font-weight: 300; 121 | overflow: hidden; 122 | //Add support to sidebar mini by allowing the user to create 123 | //2 logo designs. mini and lg 124 | .logo-lg { 125 | //should be visibile when sidebar isn't collapsed 126 | display: block; 127 | } 128 | .logo-mini { 129 | display: none; 130 | } 131 | } 132 | //Navbar Brand. Alternative logo with layout-top-nav 133 | .navbar-brand { 134 | color: #fff; 135 | } 136 | } 137 | 138 | // Content Header 139 | .content-header { 140 | position: relative; 141 | padding: 15px 15px 0 15px; 142 | // Header Text 143 | > h1 { 144 | margin: 0; 145 | font-size: 24px; 146 | > small { 147 | font-size: 15px; 148 | display: inline-block; 149 | padding-left: 4px; 150 | font-weight: 300; 151 | } 152 | } 153 | 154 | > .breadcrumb { 155 | float: right; 156 | background: transparent; 157 | margin-top: 0; 158 | margin-bottom: 0; 159 | font-size: 12px; 160 | padding: 7px 5px; 161 | position: absolute; 162 | top: 15px; 163 | right: 10px; 164 | .border-radius(2px); 165 | > li > a { 166 | color: #444; 167 | text-decoration: none; 168 | display: inline-block; 169 | > .fa, > .glyphicon, > .ion { 170 | margin-right: 5px; 171 | } 172 | } 173 | > li + li:before { 174 | content: '>\00a0'; 175 | } 176 | } 177 | 178 | @media (max-width: @screen-sm-max) { 179 | > .breadcrumb { 180 | position: relative; 181 | margin-top: 5px; 182 | top: 0; 183 | right: 0; 184 | float: none; 185 | background: @gray; 186 | padding-left: 10px; 187 | li:before { 188 | color: darken(@gray, 20%); 189 | } 190 | } 191 | } 192 | } 193 | 194 | .navbar-toggle { 195 | color: #fff; 196 | border: 0; 197 | margin: 0; 198 | padding: @navbar-padding-vertical @navbar-padding-horizontal; 199 | } 200 | 201 | //Control navbar scaffolding on x-small screens 202 | @media (max-width: @screen-sm-max) { 203 | .navbar-custom-menu .navbar-nav > li { 204 | float: left; 205 | } 206 | 207 | //Dont't let links get full width 208 | .navbar-custom-menu .navbar-nav { 209 | margin: 0; 210 | float: left; 211 | } 212 | 213 | .navbar-custom-menu .navbar-nav > li > a { 214 | padding-top: 15px; 215 | padding-bottom: 15px; 216 | line-height: 20px; 217 | } 218 | } 219 | 220 | // Collapse header 221 | @media (max-width: @screen-header-collapse) { 222 | .main-header { 223 | position: relative; 224 | .logo, 225 | .navbar { 226 | width: 100%; 227 | float: none; 228 | } 229 | .navbar { 230 | margin: 0; 231 | } 232 | .navbar-custom-menu { 233 | float: right; 234 | } 235 | } 236 | } 237 | 238 | .navbar-collapse.pull-left { 239 | @media (max-width: @screen-sm-max) { 240 | float: none !important; 241 | + .navbar-custom-menu { 242 | display: block; 243 | position: absolute; 244 | top: 0; 245 | right: 40px; 246 | } 247 | } 248 | } 249 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/control-sidebar.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Control sidebar. By default, this is the right sidebar. 3 | */ 4 | //The sidebar's background control class 5 | //This is a hack to make the background visible while scrolling 6 | .control-sidebar-bg { 7 | position: fixed; 8 | z-index: 1000; 9 | bottom: 0; 10 | } 11 | 12 | //Transitions 13 | .control-sidebar-bg, 14 | .control-sidebar { 15 | top: 0; 16 | right: -@control-sidebar-width; 17 | width: @control-sidebar-width; 18 | .transition(right @transition-speed ease-in-out); 19 | } 20 | 21 | //The sidebar 22 | .control-sidebar { 23 | position: absolute; 24 | padding-top: @navbar-height; 25 | z-index: 1010; 26 | //Fix position after header collapse 27 | @media (max-width: @screen-sm) { 28 | padding-top: @navbar-height + 50; 29 | } 30 | //Tab panes 31 | > .tab-content { 32 | padding: 10px 15px; 33 | } 34 | //Open state with slide over content effect 35 | &.control-sidebar-open { 36 | &, 37 | + .control-sidebar-bg { 38 | right: 0; 39 | } 40 | } 41 | } 42 | 43 | //Open without slide over content 44 | .control-sidebar-open { 45 | .control-sidebar-bg, 46 | .control-sidebar { 47 | right: 0; 48 | } 49 | @media (min-width: @screen-sm) { 50 | .content-wrapper, 51 | .right-side, 52 | .main-footer { 53 | margin-right: @control-sidebar-width; 54 | } 55 | } 56 | } 57 | 58 | //Control sidebar tabs 59 | .nav-tabs.control-sidebar-tabs { 60 | > li { 61 | &:first-of-type > a { 62 | &, 63 | &:hover, 64 | &:focus { 65 | border-left-width: 0; 66 | } 67 | } 68 | > a { 69 | .border-radius(0); 70 | 71 | //Hover and active states 72 | &, 73 | &:hover { 74 | border-top: none; 75 | border-right: none; 76 | border-left: 1px solid transparent; 77 | border-bottom: 1px solid transparent; 78 | } 79 | .icon { 80 | font-size: 16px; 81 | } 82 | } 83 | //Active state 84 | &.active { 85 | > a { 86 | &, 87 | &:hover, 88 | &:focus, 89 | &:active { 90 | border-top: none; 91 | border-right: none; 92 | border-bottom: none; 93 | } 94 | } 95 | } 96 | } 97 | //Remove responsiveness on small screens 98 | @media (max-width: @screen-sm) { 99 | display: table; 100 | > li { 101 | display: table-cell; 102 | } 103 | } 104 | } 105 | 106 | //Headings in the sidebar content 107 | .control-sidebar-heading { 108 | font-weight: 400; 109 | font-size: 16px; 110 | padding: 10px 0; 111 | margin-bottom: 10px; 112 | } 113 | 114 | //Subheadings 115 | .control-sidebar-subheading { 116 | display: block; 117 | font-weight: 400; 118 | font-size: 14px; 119 | } 120 | 121 | //Control Sidebar Menu 122 | .control-sidebar-menu { 123 | list-style: none; 124 | padding: 0; 125 | margin: 0 -15px; 126 | > li > a { 127 | .clearfix(); 128 | display: block; 129 | padding: 10px 15px; 130 | > .control-sidebar-subheading { 131 | margin-top: 0; 132 | } 133 | } 134 | .menu-icon { 135 | float: left; 136 | width: 35px; 137 | height: 35px; 138 | border-radius: 50%; 139 | text-align: center; 140 | line-height: 35px; 141 | } 142 | .menu-info { 143 | margin-left: 45px; 144 | margin-top: 3px; 145 | > .control-sidebar-subheading { 146 | margin: 0; 147 | } 148 | > p { 149 | margin: 0; 150 | font-size: 11px; 151 | } 152 | } 153 | .progress { 154 | margin: 0; 155 | } 156 | } 157 | 158 | //Dark skin 159 | .control-sidebar-dark { 160 | color: @sidebar-dark-color; 161 | // Background 162 | &, 163 | + .control-sidebar-bg { 164 | background: @sidebar-dark-bg; 165 | } 166 | // Sidebar tabs 167 | .nav-tabs.control-sidebar-tabs { 168 | border-bottom: darken(@sidebar-dark-bg, 3%); 169 | > li { 170 | > a { 171 | background: darken(@sidebar-dark-bg, 5%); 172 | color: @sidebar-dark-color; 173 | //Hover and active states 174 | &, 175 | &:hover, 176 | &:focus { 177 | border-left-color: darken(@sidebar-dark-bg, 7%); 178 | border-bottom-color: darken(@sidebar-dark-bg, 7%); 179 | } 180 | &:hover, 181 | &:focus, 182 | &:active { 183 | background: darken(@sidebar-dark-bg, 3%); 184 | } 185 | &:hover { 186 | color: #fff; 187 | } 188 | } 189 | //Active state 190 | &.active { 191 | > a { 192 | &, 193 | &:hover, 194 | &:focus, 195 | &:active { 196 | background: @sidebar-dark-bg; 197 | color: #fff; 198 | } 199 | } 200 | } 201 | } 202 | } 203 | //Heading & subheading 204 | .control-sidebar-heading, 205 | .control-sidebar-subheading { 206 | color: #fff; 207 | } 208 | //Sidebar list 209 | .control-sidebar-menu { 210 | > li { 211 | > a { 212 | &:hover { 213 | background: @sidebar-dark-hover-bg; 214 | } 215 | .menu-info { 216 | > p { 217 | color: @sidebar-dark-color; 218 | } 219 | } 220 | } 221 | } 222 | } 223 | } 224 | 225 | //Light skin 226 | .control-sidebar-light { 227 | color: lighten(@sidebar-light-color, 10%); 228 | // Background 229 | &, 230 | + .control-sidebar-bg { 231 | background: @sidebar-light-bg; 232 | border-left: 1px solid @gray; 233 | } 234 | // Sidebar tabs 235 | .nav-tabs.control-sidebar-tabs { 236 | border-bottom: @gray; 237 | > li { 238 | > a { 239 | background: darken(@sidebar-light-bg, 5%); 240 | color: @sidebar-light-color; 241 | //Hover and active states 242 | &, 243 | &:hover, 244 | &:focus { 245 | border-left-color: @gray; 246 | border-bottom-color: @gray; 247 | } 248 | &:hover, 249 | &:focus, 250 | &:active { 251 | background: darken(@sidebar-light-bg, 3%); 252 | } 253 | } 254 | //Active state 255 | &.active { 256 | > a { 257 | &, 258 | &:hover, 259 | &:focus, 260 | &:active { 261 | background: @sidebar-light-bg; 262 | color: #111; 263 | } 264 | } 265 | } 266 | } 267 | } 268 | //Heading & subheading 269 | .control-sidebar-heading, 270 | .control-sidebar-subheading { 271 | color: #111; 272 | } 273 | //Sidebar list 274 | .control-sidebar-menu { 275 | margin-left: -14px; 276 | > li { 277 | > a { 278 | &:hover { 279 | background: @sidebar-light-hover-bg; 280 | } 281 | .menu-info { 282 | > p { 283 | color: lighten(@sidebar-light-color, 10%); 284 | } 285 | } 286 | } 287 | } 288 | } 289 | } 290 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/mixins.less: -------------------------------------------------------------------------------- 1 | //AdminLTE mixins 2 | //=============== 3 | 4 | //Changes the color and the hovering properties of the navbar 5 | .navbar-variant(@color; @font-color: rgba(255, 255, 255, 0.8); @hover-color: #f6f6f6; @hover-bg: rgba(0, 0, 0, 0.1)) { 6 | background-color: @color; 7 | //Navbar links 8 | .nav > li > a { 9 | color: @font-color; 10 | } 11 | 12 | .nav > li > a:hover, 13 | .nav > li > a:active, 14 | .nav > li > a:focus, 15 | .nav .open > a, 16 | .nav .open > a:hover, 17 | .nav .open > a:focus, 18 | .nav > .active > a { 19 | background: @hover-bg; 20 | color: @hover-color; 21 | } 22 | 23 | //Add color to the sidebar toggle button 24 | .sidebar-toggle { 25 | color: @font-color; 26 | &:hover { 27 | color: @hover-color; 28 | background: @hover-bg; 29 | } 30 | } 31 | } 32 | 33 | //Logo color variation 34 | .logo-variant(@bg-color; @color: #fff; @border-bottom-color: transparent; @border-bottom-width: 0) { 35 | background-color: @bg-color; 36 | color: @color; 37 | border-bottom: @border-bottom-width solid @border-bottom-color; 38 | 39 | &:hover { 40 | background-color: darken(@bg-color, 1%); 41 | } 42 | } 43 | 44 | //Box solid color variantion creator 45 | .box-solid-variant(@color; @text-color: #fff) { 46 | border: 1px solid @color; 47 | > .box-header { 48 | color: @text-color; 49 | background: @color; 50 | background-color: @color; 51 | a, 52 | .btn { 53 | color: @text-color; 54 | } 55 | } 56 | } 57 | 58 | //Direct Chat Variant 59 | .direct-chat-variant(@bg-color; @color: #fff) { 60 | .right > .direct-chat-text { 61 | background: @bg-color; 62 | border-color: @bg-color; 63 | color: @color; 64 | &:after, 65 | &:before { 66 | border-left-color: @bg-color; 67 | } 68 | } 69 | } 70 | 71 | //border radius creator 72 | .border-radius(@radius) { 73 | border-radius: @radius; 74 | } 75 | 76 | //Different radius each side 77 | .border-radius(@top-left; 78 | @top-right 79 | ; 80 | @bottom-left 81 | ; 82 | @bottom-right 83 | ) 84 | { 85 | border-top-left-radius: @top-left 86 | ; 87 | border-top-right-radius: @top-right 88 | ; 89 | border-bottom-right-radius: @bottom-right 90 | ; 91 | border-bottom-left-radius: @bottom-left 92 | ; 93 | } 94 | 95 | //Gradient background 96 | .gradient(@color: #F5F5F5, @start: #EEE, @stop: #FFF) { 97 | background: @color; 98 | background: -webkit-gradient(linear, 99 | left bottom, 100 | left top, 101 | color-stop(0, @start), 102 | color-stop(1, @stop)); 103 | background: -ms-linear-gradient(bottom, 104 | @start, 105 | @stop); 106 | background: -moz-linear-gradient(center bottom, 107 | @start 0%, 108 | @stop 100%); 109 | background: -o-linear-gradient(@stop, 110 | @start); 111 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@stop,@start)); 112 | } 113 | 114 | //Added 2.1.0 115 | //Skins Mixins 116 | 117 | //Dark Sidebar Mixin 118 | .skin-dark-sidebar(@link-hover-border-color) { 119 | // Sidebar background color (Both .wrapper and .left-side are responsible for sidebar bg color) 120 | .wrapper, 121 | .main-sidebar, 122 | .left-side { 123 | background-color: @sidebar-dark-bg; 124 | } 125 | //User Panel (resides in the sidebar) 126 | .user-panel { 127 | > .info, > .info > a { 128 | color: #fff; 129 | } 130 | } 131 | //Sidebar Menu. First level links 132 | .sidebar-menu > li { 133 | //Section Headning 134 | &.header { 135 | color: lighten(@sidebar-dark-bg, 20%); 136 | background: darken(@sidebar-dark-bg, 4%); 137 | } 138 | //links 139 | > a { 140 | border-left: 3px solid transparent; 141 | } 142 | //Hover and active states 143 | &:hover > a, &.active > a { 144 | color: @sidebar-dark-hover-color; 145 | background: @sidebar-dark-hover-bg; 146 | border-left-color: @link-hover-border-color; 147 | } 148 | //First Level Submenu 149 | > .treeview-menu { 150 | margin: 0 1px; 151 | background: @sidebar-dark-submenu-bg; 152 | } 153 | } 154 | //All links within the sidebar menu 155 | .sidebar a { 156 | color: @sidebar-dark-color; 157 | &:hover { 158 | text-decoration: none; 159 | } 160 | } 161 | //All submenus 162 | .treeview-menu { 163 | > li { 164 | > a { 165 | color: @sidebar-dark-submenu-color; 166 | } 167 | &.active > a, > a:hover { 168 | color: @sidebar-dark-submenu-hover-color; 169 | } 170 | } 171 | } 172 | //The sidebar search form 173 | .sidebar-form { 174 | .border-radius(3px); 175 | border: 1px solid lighten(@sidebar-dark-bg, 10%); 176 | margin: 10px 10px; 177 | input[type="text"], .btn { 178 | box-shadow: none; 179 | background-color: lighten(@sidebar-dark-bg, 10%); 180 | border: 1px solid transparent; 181 | height: 35px; 182 | //.transition(all @transition-speed @transition-fn); 183 | } 184 | input[type="text"] { 185 | color: #666; 186 | .border-radius(2px, 0, 2px, 0); 187 | &:focus, 188 | &:focus + .input-group-btn .btn { 189 | background-color: #fff; 190 | color: #666; 191 | } 192 | &:focus + .input-group-btn .btn { 193 | border-left-color: #fff; 194 | 195 | } 196 | } 197 | .btn { 198 | color: #999; 199 | .border-radius(0, 2px, 0, 2px); 200 | } 201 | } 202 | } 203 | 204 | //Light Sidebar Mixin 205 | .skin-light-sidebar(@icon-active-color) { 206 | // Sidebar background color (Both .wrapper and .left-side are responsible for sidebar bg color) 207 | .wrapper, 208 | .main-sidebar, 209 | .left-side { 210 | background-color: @sidebar-light-bg; 211 | } 212 | .content-wrapper, 213 | .main-footer { 214 | border-left: 1px solid @gray; 215 | } 216 | //User Panel (resides in the sidebar) 217 | .user-panel { 218 | > .info, > .info > a { 219 | color: @sidebar-light-color; 220 | } 221 | } 222 | //Sidebar Menu. First level links 223 | .sidebar-menu > li { 224 | .transition(border-left-color .3s ease); 225 | //border-left: 3px solid transparent; 226 | //Section Headning 227 | &.header { 228 | color: lighten(@sidebar-light-color, 25%); 229 | background: @sidebar-light-bg; 230 | } 231 | //links 232 | > a { 233 | border-left: 3px solid transparent; 234 | font-weight: 600; 235 | } 236 | //Hover and active states 237 | &:hover > a, 238 | &.active > a { 239 | color: @sidebar-light-hover-color; 240 | background: @sidebar-light-hover-bg; 241 | } 242 | &:hover > a { 243 | 244 | } 245 | &.active { 246 | border-left-color: @icon-active-color; 247 | > a { 248 | font-weight: 600; 249 | } 250 | } 251 | //First Level Submenu 252 | > .treeview-menu { 253 | background: @sidebar-light-submenu-bg; 254 | } 255 | } 256 | //All links within the sidebar menu 257 | .sidebar a { 258 | color: @sidebar-light-color; 259 | &:hover { 260 | text-decoration: none; 261 | } 262 | } 263 | //All submenus 264 | .treeview-menu { 265 | > li { 266 | > a { 267 | color: @sidebar-light-submenu-color; 268 | } 269 | &.active > a, 270 | > a:hover { 271 | color: @sidebar-light-submenu-hover-color; 272 | } 273 | &.active > a { 274 | font-weight: 600; 275 | } 276 | } 277 | } 278 | //The sidebar search form 279 | .sidebar-form { 280 | .border-radius(3px); 281 | border: 1px solid @gray; //darken(@sidebar-light-bg, 5%); 282 | margin: 10px 10px; 283 | input[type="text"], 284 | .btn { 285 | box-shadow: none; 286 | background-color: #fff; //darken(@sidebar-light-bg, 3%); 287 | border: 1px solid transparent; 288 | height: 35px; 289 | //.transition(all @transition-speed @transition-fn); 290 | } 291 | input[type="text"] { 292 | color: #666; 293 | .border-radius(2px, 0, 2px, 0); 294 | &:focus, 295 | &:focus + .input-group-btn .btn { 296 | background-color: #fff; 297 | color: #666; 298 | } 299 | &:focus + .input-group-btn .btn { 300 | border-left-color: #fff; 301 | } 302 | } 303 | .btn { 304 | color: #999; 305 | .border-radius(0, 2px, 0, 2px); 306 | } 307 | } 308 | @media (min-width: @screen-sm-min) { 309 | &.sidebar-mini.sidebar-collapse { 310 | .sidebar-menu > li > .treeview-menu { 311 | border-left: 1px solid @gray; 312 | } 313 | } 314 | } 315 | } 316 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/dropdown.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Dropdown menus 3 | * ------------------------- 4 | */ 5 | 6 | /*Dropdowns in general*/ 7 | .dropdown-menu { 8 | box-shadow: none; 9 | border-color: #eee; 10 | > li > a { 11 | color: #777; 12 | } 13 | > li > a > .glyphicon, 14 | > li > a > .fa, 15 | > li > a > .ion { 16 | margin-right: 10px; 17 | } 18 | > li > a:hover { 19 | background-color: lighten(@gray, 5%); 20 | color: #333; 21 | } 22 | > .divider { 23 | background-color: #eee; 24 | } 25 | } 26 | 27 | //Navbar custom dropdown menu 28 | .navbar-nav > .notifications-menu, 29 | .navbar-nav > .messages-menu, 30 | .navbar-nav > .tasks-menu { 31 | //fix width and padding 32 | > .dropdown-menu { 33 | > li { 34 | position: relative; 35 | } 36 | width: 280px; 37 | //Remove padding and margins 38 | padding: 0 0 0 0; 39 | margin: 0; 40 | top: 100%; 41 | } 42 | //Define header class 43 | > .dropdown-menu > li.header { 44 | .border-radius(4px; 4px; 0; 0); 45 | background-color: #ffffff; 46 | padding: 7px 10px; 47 | border-bottom: 1px solid #f4f4f4; 48 | color: #444444; 49 | font-size: 14px; 50 | } 51 | 52 | //Define footer class 53 | > .dropdown-menu > li.footer > a { 54 | .border-radius(0; 0; 4px; 4px); 55 | font-size: 12px; 56 | background-color: #fff; 57 | padding: 7px 10px; 58 | border-bottom: 1px solid #eeeeee; 59 | color: #444 !important; 60 | @media (max-width: @screen-sm-max) { 61 | background: #fff !important; 62 | color: #444 !important; 63 | } 64 | text-align: center; 65 | //Hover state 66 | &:hover { 67 | text-decoration: none; 68 | font-weight: normal; 69 | } 70 | } 71 | 72 | //Clear inner menu padding and margins 73 | > .dropdown-menu > li .menu { 74 | max-height: 200px; 75 | margin: 0; 76 | padding: 0; 77 | list-style: none; 78 | overflow-x: hidden; 79 | > li > a { 80 | display: block; 81 | white-space: nowrap; /* Prevent text from breaking */ 82 | border-bottom: 1px solid #f4f4f4; 83 | // Hove state 84 | &:hover { 85 | background: #f4f4f4; 86 | text-decoration: none; 87 | } 88 | } 89 | } 90 | } 91 | 92 | //Notifications menu 93 | .navbar-nav > .notifications-menu { 94 | > .dropdown-menu > li .menu { 95 | // Links inside the menu 96 | > li > a { 97 | color: #444444; 98 | overflow: hidden; 99 | text-overflow: ellipsis; 100 | padding: 10px; 101 | // Icons inside the menu 102 | > .glyphicon, 103 | > .fa, 104 | > .ion { 105 | width: 20px; 106 | } 107 | } 108 | 109 | } 110 | } 111 | 112 | //Messages menu 113 | .navbar-nav > .messages-menu { 114 | //Inner menu 115 | > .dropdown-menu > li .menu { 116 | // Messages menu item 117 | > li > a { 118 | margin: 0; 119 | //line-height: 20px; 120 | padding: 10px 10px; 121 | // User image 122 | > div > img { 123 | margin: auto 10px auto auto; 124 | width: 40px; 125 | height: 40px; 126 | } 127 | // Message heading 128 | > h4 { 129 | padding: 0; 130 | margin: 0 0 0 45px; 131 | color: #444444; 132 | font-size: 15px; 133 | position: relative; 134 | // Small for message time display 135 | > small { 136 | color: #999999; 137 | font-size: 10px; 138 | position: absolute; 139 | top: 0; 140 | right: 0; 141 | } 142 | } 143 | 144 | > p { 145 | margin: 0 0 0 45px; 146 | font-size: 12px; 147 | color: #888888; 148 | } 149 | 150 | .clearfix(); 151 | 152 | } 153 | 154 | } 155 | } 156 | 157 | //Tasks menu 158 | .navbar-nav > .tasks-menu { 159 | > .dropdown-menu > li .menu { 160 | > li > a { 161 | padding: 10px; 162 | 163 | > h3 { 164 | font-size: 14px; 165 | padding: 0; 166 | margin: 0 0 10px 0; 167 | color: #666666; 168 | } 169 | 170 | > .progress { 171 | padding: 0; 172 | margin: 0; 173 | } 174 | } 175 | } 176 | } 177 | 178 | //User menu 179 | .navbar-nav > .user-menu { 180 | > .dropdown-menu { 181 | .border-top-radius(0); 182 | padding: 1px 0 0 0; 183 | border-top-width: 0; 184 | width: 280px; 185 | 186 | &, 187 | > .user-body { 188 | .border-bottom-radius(4px); 189 | } 190 | // Header menu 191 | > li.user-header { 192 | height: 175px; 193 | padding: 10px; 194 | text-align: center; 195 | // User image 196 | > img { 197 | z-index: 5; 198 | height: 90px; 199 | width: 90px; 200 | border: 3px solid; 201 | border-color: transparent; 202 | border-color: rgba(255, 255, 255, 0.2); 203 | } 204 | > p { 205 | z-index: 5; 206 | color: #fff; 207 | color: rgba(255, 255, 255, 0.8); 208 | font-size: 17px; 209 | //text-shadow: 2px 2px 3px #333333; 210 | margin-top: 10px; 211 | > small { 212 | display: block; 213 | font-size: 12px; 214 | } 215 | } 216 | } 217 | 218 | // Menu Body 219 | > .user-body { 220 | padding: 15px; 221 | border-bottom: 1px solid #f4f4f4; 222 | border-top: 1px solid #dddddd; 223 | .clearfix(); 224 | a { 225 | color: #444 !important; 226 | @media (max-width: @screen-sm-max) { 227 | background: #fff !important; 228 | color: #444 !important; 229 | } 230 | } 231 | } 232 | 233 | // Menu Footer 234 | > .user-footer { 235 | background-color: #f9f9f9; 236 | padding: 10px; 237 | .clearfix(); 238 | .btn-default { 239 | color: #666666; 240 | &:hover { 241 | @media (max-width: @screen-sm-max) { 242 | background-color: #f9f9f9; 243 | } 244 | } 245 | } 246 | } 247 | } 248 | .user-image { 249 | float: left; 250 | width: 25px; 251 | height: 25px; 252 | border-radius: 50%; 253 | margin-right: 10px; 254 | margin-top: -2px; 255 | @media (max-width: @screen-xs-max) { 256 | float: none; 257 | margin-right: 0; 258 | margin-top: -8px; 259 | line-height: 10px; 260 | } 261 | } 262 | } 263 | 264 | /* Add fade animation to dropdown menus by appending 265 | the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/ 266 | .open:not(.dropup) > .animated-dropdown-menu { 267 | backface-visibility: visible !important; 268 | .animation(flipInX .7s both); 269 | 270 | } 271 | 272 | @keyframes flipInX { 273 | 0% { 274 | transform: perspective(400px) rotate3d(1, 0, 0, 90deg); 275 | transition-timing-function: ease-in; 276 | opacity: 0; 277 | } 278 | 279 | 40% { 280 | transform: perspective(400px) rotate3d(1, 0, 0, -20deg); 281 | transition-timing-function: ease-in; 282 | } 283 | 284 | 60% { 285 | transform: perspective(400px) rotate3d(1, 0, 0, 10deg); 286 | opacity: 1; 287 | } 288 | 289 | 80% { 290 | transform: perspective(400px) rotate3d(1, 0, 0, -5deg); 291 | } 292 | 293 | 100% { 294 | transform: perspective(400px); 295 | } 296 | } 297 | 298 | @-webkit-keyframes flipInX { 299 | 0% { 300 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); 301 | -webkit-transition-timing-function: ease-in; 302 | opacity: 0; 303 | } 304 | 305 | 40% { 306 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); 307 | -webkit-transition-timing-function: ease-in; 308 | } 309 | 310 | 60% { 311 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); 312 | opacity: 1; 313 | } 314 | 315 | 80% { 316 | -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); 317 | } 318 | 319 | 100% { 320 | -webkit-transform: perspective(400px); 321 | } 322 | } 323 | 324 | /* Fix dropdown menu in navbars */ 325 | .navbar-custom-menu > .navbar-nav { 326 | > li { 327 | position: relative; 328 | > .dropdown-menu { 329 | position: absolute; 330 | right: 0; 331 | left: auto; 332 | } 333 | } 334 | } 335 | 336 | @media (max-width: @screen-sm-max) { 337 | .navbar-custom-menu > .navbar-nav { 338 | float: right; 339 | > li { 340 | position: static; 341 | > .dropdown-menu { 342 | position: absolute; 343 | right: 5%; 344 | left: auto; 345 | border: 1px solid #ddd; 346 | background: #fff; 347 | } 348 | } 349 | } 350 | } 351 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/boxes.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Component: Box 3 | * -------------- 4 | */ 5 | .box { 6 | position: relative; 7 | .border-radius(@box-border-radius); 8 | background: #ffffff; 9 | border-top: 3px solid @box-default-border-top-color; 10 | margin-bottom: 20px; 11 | width: 100%; 12 | box-shadow: @box-boxshadow; 13 | 14 | // Box color variations 15 | &.box-primary { 16 | border-top-color: @light-blue; 17 | } 18 | &.box-info { 19 | border-top-color: @aqua; 20 | } 21 | &.box-danger { 22 | border-top-color: @red; 23 | } 24 | &.box-warning { 25 | border-top-color: @yellow; 26 | } 27 | &.box-success { 28 | border-top-color: @green; 29 | } 30 | &.box-default { 31 | border-top-color: @gray; 32 | } 33 | 34 | // collapsed mode 35 | &.collapsed-box { 36 | .box-body, 37 | .box-footer { 38 | display: none; 39 | } 40 | } 41 | 42 | .nav-stacked { 43 | > li { 44 | border-bottom: 1px solid @box-border-color; 45 | margin: 0; 46 | &:last-of-type { 47 | border-bottom: none; 48 | } 49 | } 50 | } 51 | 52 | // fixed height to 300px 53 | &.height-control { 54 | .box-body { 55 | max-height: 300px; 56 | overflow: auto; 57 | } 58 | } 59 | 60 | .border-right { 61 | border-right: 1px solid @box-border-color; 62 | } 63 | .border-left { 64 | border-left: 1px solid @box-border-color; 65 | } 66 | 67 | //SOLID BOX 68 | //--------- 69 | //use this class to get a colored header and borders 70 | 71 | &.box-solid { 72 | border-top: 0; 73 | > .box-header { 74 | .btn.btn-default { 75 | background: transparent; 76 | } 77 | .btn, 78 | a { 79 | &:hover { 80 | background: rgba(0, 0, 0, 0.1); 81 | } 82 | } 83 | } 84 | 85 | // Box color variations 86 | &.box-default { 87 | .box-solid-variant(@gray, #444); 88 | } 89 | &.box-primary { 90 | .box-solid-variant(@light-blue); 91 | } 92 | &.box-info { 93 | .box-solid-variant(@aqua); 94 | } 95 | &.box-danger { 96 | .box-solid-variant(@red); 97 | } 98 | &.box-warning { 99 | .box-solid-variant(@yellow); 100 | } 101 | &.box-success { 102 | .box-solid-variant(@green); 103 | } 104 | 105 | > .box-header > .box-tools .btn { 106 | border: 0; 107 | box-shadow: none; 108 | } 109 | 110 | // Fix font color for tiles 111 | &[class*='bg'] { 112 | > .box-header { 113 | color: #fff; 114 | } 115 | } 116 | 117 | } 118 | 119 | //BOX GROUP 120 | .box-group { 121 | > .box { 122 | margin-bottom: 5px; 123 | } 124 | } 125 | 126 | // jQuery Knob in a box 127 | .knob-label { 128 | text-align: center; 129 | color: #333; 130 | font-weight: 100; 131 | font-size: 12px; 132 | margin-bottom: 0.3em; 133 | } 134 | } 135 | 136 | .box, 137 | .overlay-wrapper { 138 | // Box overlay for LOADING STATE effect 139 | > .overlay, 140 | > .loading-img { 141 | position: absolute; 142 | top: 0; 143 | left: 0; 144 | width: 100%; 145 | height: 100%; 146 | } 147 | 148 | .overlay { 149 | z-index: 50; 150 | background: rgba(255, 255, 255, 0.7); 151 | .border-radius(@box-border-radius); 152 | > .fa { 153 | position: absolute; 154 | top: 50%; 155 | left: 50%; 156 | margin-left: -15px; 157 | margin-top: -15px; 158 | color: #000; 159 | font-size: 30px; 160 | } 161 | } 162 | 163 | .overlay.dark { 164 | background: rgba(0, 0, 0, 0.5); 165 | } 166 | } 167 | 168 | //Add clearfix to header, body and footer 169 | .box-header, 170 | .box-body, 171 | .box-footer { 172 | .clearfix(); 173 | } 174 | 175 | //Box header 176 | .box-header { 177 | color: #444; 178 | display: block; 179 | padding: @box-padding; 180 | position: relative; 181 | 182 | //Add bottom border 183 | &.with-border { 184 | border-bottom: 1px solid @box-border-color; 185 | .collapsed-box & { 186 | border-bottom: none; 187 | } 188 | } 189 | 190 | //Icons and box title 191 | > .fa, 192 | > .glyphicon, 193 | > .ion, 194 | .box-title { 195 | display: inline-block; 196 | font-size: 18px; 197 | margin: 0; 198 | line-height: 1; 199 | } 200 | > .fa, 201 | > .glyphicon, 202 | > .ion { 203 | margin-right: 5px; 204 | } 205 | > .box-tools { 206 | position: absolute; 207 | right: 10px; 208 | top: 5px; 209 | [data-toggle="tooltip"] { 210 | position: relative; 211 | } 212 | 213 | &.pull-right { 214 | .dropdown-menu { 215 | right: 0; 216 | left: auto; 217 | } 218 | } 219 | } 220 | } 221 | 222 | //Box Tools Buttons 223 | .btn-box-tool { 224 | padding: 5px; 225 | font-size: 12px; 226 | background: transparent; 227 | color: darken(@box-default-border-top-color, 20%); 228 | .open &, 229 | &:hover { 230 | color: darken(@box-default-border-top-color, 40%); 231 | } 232 | &.btn:active { 233 | box-shadow: none; 234 | } 235 | } 236 | 237 | //Box Body 238 | .box-body { 239 | .border-radius(0; 0; @box-border-radius; @box-border-radius); 240 | padding: @box-padding; 241 | .no-header & { 242 | .border-top-radius(@box-border-radius); 243 | } 244 | // Tables within the box body 245 | > .table { 246 | margin-bottom: 0; 247 | } 248 | 249 | // Calendar within the box body 250 | .fc { 251 | margin-top: 5px; 252 | } 253 | 254 | .full-width-chart { 255 | margin: -19px; 256 | } 257 | &.no-padding .full-width-chart { 258 | margin: -9px; 259 | } 260 | 261 | .box-pane { 262 | .border-radius(0; 0; @box-border-radius; 0); 263 | } 264 | .box-pane-right { 265 | .border-radius(0; 0; 0; @box-border-radius); 266 | } 267 | } 268 | 269 | //Box footer 270 | .box-footer { 271 | .border-radius(0; 0; @box-border-radius; @box-border-radius); 272 | border-top: 1px solid @box-border-color; 273 | padding: @box-padding; 274 | background-color: @box-footer-bg; 275 | } 276 | 277 | .chart-legend { 278 | &:extend(.list-unstyled); 279 | margin: 10px 0; 280 | > li { 281 | @media (max-width: @screen-sm-max) { 282 | float: left; 283 | margin-right: 10px; 284 | } 285 | } 286 | } 287 | 288 | //Comment Box 289 | .box-comments { 290 | background: #f7f7f7; 291 | .box-comment { 292 | .clearfix(); 293 | padding: 8px 0; 294 | border-bottom: 1px solid #eee; 295 | &:last-of-type { 296 | border-bottom: 0; 297 | } 298 | &:first-of-type { 299 | padding-top: 0; 300 | } 301 | img { 302 | &:extend(.img-sm); 303 | float: left; 304 | } 305 | } 306 | .comment-text { 307 | margin-left: 40px; 308 | color: #555; 309 | } 310 | .username { 311 | color: #444; 312 | display: block; 313 | font-weight: 600; 314 | } 315 | .text-muted { 316 | font-weight: 400; 317 | font-size: 12px; 318 | } 319 | } 320 | 321 | //Widgets 322 | //----------- 323 | 324 | /* Widget: TODO LIST */ 325 | 326 | .todo-list { 327 | margin: 0; 328 | padding: 0; 329 | list-style: none; 330 | overflow: auto; 331 | // Todo list element 332 | > li { 333 | .border-radius(2px); 334 | padding: 10px; 335 | background: #f4f4f4; 336 | margin-bottom: 2px; 337 | border-left: 2px solid #e6e7e8; 338 | color: #444; 339 | &:last-of-type { 340 | margin-bottom: 0; 341 | } 342 | 343 | > input[type='checkbox'] { 344 | margin: 0 10px 0 5px; 345 | } 346 | 347 | .text { 348 | display: inline-block; 349 | margin-left: 5px; 350 | font-weight: 600; 351 | } 352 | 353 | // Time labels 354 | .label { 355 | margin-left: 10px; 356 | font-size: 9px; 357 | } 358 | 359 | // Tools and options box 360 | .tools { 361 | display: none; 362 | float: right; 363 | color: @red; 364 | // icons 365 | > .fa, > .glyphicon, > .ion { 366 | margin-right: 5px; 367 | cursor: pointer; 368 | } 369 | 370 | } 371 | &:hover .tools { 372 | display: inline-block; 373 | } 374 | 375 | &.done { 376 | color: #999; 377 | .text { 378 | text-decoration: line-through; 379 | font-weight: 500; 380 | } 381 | 382 | .label { 383 | background: @gray !important; 384 | } 385 | } 386 | } 387 | 388 | // Color varaity 389 | .danger { 390 | border-left-color: @red; 391 | } 392 | .warning { 393 | border-left-color: @yellow; 394 | } 395 | .info { 396 | border-left-color: @aqua; 397 | } 398 | .success { 399 | border-left-color: @green; 400 | } 401 | .primary { 402 | border-left-color: @light-blue; 403 | } 404 | 405 | .handle { 406 | display: inline-block; 407 | cursor: move; 408 | margin: 0 5px; 409 | } 410 | 411 | } 412 | 413 | // END TODO WIDGET 414 | 415 | /* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/ 416 | .chat { 417 | padding: 5px 20px 5px 10px; 418 | 419 | .item { 420 | .clearfix(); 421 | margin-bottom: 10px; 422 | // The image 423 | > img { 424 | width: 40px; 425 | height: 40px; 426 | border: 2px solid transparent; 427 | .border-radius(50%); 428 | } 429 | 430 | > .online { 431 | border: 2px solid @green; 432 | } 433 | > .offline { 434 | border: 2px solid @red; 435 | } 436 | 437 | // The message body 438 | > .message { 439 | margin-left: 55px; 440 | margin-top: -40px; 441 | > .name { 442 | display: block; 443 | font-weight: 600; 444 | } 445 | } 446 | 447 | // The attachment 448 | > .attachment { 449 | .border-radius(@attachment-border-radius); 450 | background: #f4f4f4; 451 | margin-left: 65px; 452 | margin-right: 15px; 453 | padding: 10px; 454 | > h4 { 455 | margin: 0 0 5px 0; 456 | font-weight: 600; 457 | font-size: 14px; 458 | } 459 | > p, > .filename { 460 | font-weight: 600; 461 | font-size: 13px; 462 | font-style: italic; 463 | margin: 0; 464 | 465 | } 466 | .clearfix(); 467 | } 468 | } 469 | 470 | } 471 | 472 | //END CHAT WIDGET 473 | 474 | //Input in box 475 | .box-input { 476 | max-width: 200px; 477 | } 478 | 479 | //A fix for panels body text color when placed within 480 | // a modal 481 | .modal { 482 | .panel-body { 483 | color: #444; 484 | } 485 | } 486 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/AdminLTE/miscellaneous.less: -------------------------------------------------------------------------------- 1 | /* 2 | * General: Miscellaneous 3 | * ---------------------- 4 | */ 5 | // 10px padding and margins 6 | .pad { 7 | padding: 10px; 8 | } 9 | 10 | .margin { 11 | margin: 10px; 12 | } 13 | 14 | .margin-bottom { 15 | margin-bottom: 20px; 16 | } 17 | 18 | .margin-bottom-none { 19 | margin-bottom: 0; 20 | } 21 | 22 | .margin-r-5 { 23 | margin-right: 5px; 24 | } 25 | 26 | // Display inline 27 | .inline { 28 | display: inline; 29 | } 30 | 31 | // Description Blocks 32 | .description-block { 33 | display: block; 34 | margin: 10px 0; 35 | text-align: center; 36 | &.margin-bottom { 37 | margin-bottom: 25px; 38 | } 39 | > .description-header { 40 | margin: 0; 41 | padding: 0; 42 | font-weight: 600; 43 | font-size: 16px; 44 | } 45 | > .description-text { 46 | text-transform: uppercase; 47 | } 48 | } 49 | 50 | // Background colors 51 | .bg-red, 52 | .bg-yellow, 53 | .bg-aqua, 54 | .bg-blue, 55 | .bg-light-blue, 56 | .bg-green, 57 | .bg-navy, 58 | .bg-teal, 59 | .bg-olive, 60 | .bg-lime, 61 | .bg-orange, 62 | .bg-fuchsia, 63 | .bg-purple, 64 | .bg-maroon, 65 | .bg-black, 66 | .bg-red-active, 67 | .bg-yellow-active, 68 | .bg-aqua-active, 69 | .bg-blue-active, 70 | .bg-light-blue-active, 71 | .bg-green-active, 72 | .bg-navy-active, 73 | .bg-teal-active, 74 | .bg-olive-active, 75 | .bg-lime-active, 76 | .bg-orange-active, 77 | .bg-fuchsia-active, 78 | .bg-purple-active, 79 | .bg-maroon-active, 80 | .bg-black-active { 81 | color: #fff !important; 82 | } 83 | 84 | .bg-gray { 85 | color: #000; 86 | background-color: @gray !important; 87 | } 88 | 89 | .bg-gray-light { 90 | background-color: #f7f7f7; 91 | } 92 | 93 | .bg-black { 94 | background-color: @black !important; 95 | } 96 | 97 | .bg-red { 98 | background-color: @red !important; 99 | } 100 | 101 | .bg-yellow { 102 | background-color: @yellow !important; 103 | } 104 | 105 | .bg-aqua { 106 | background-color: @aqua !important; 107 | } 108 | 109 | .bg-blue { 110 | background-color: @blue !important; 111 | } 112 | 113 | .bg-light-blue { 114 | background-color: @light-blue !important; 115 | } 116 | 117 | .bg-green { 118 | background-color: @green !important; 119 | } 120 | 121 | .bg-navy { 122 | background-color: @navy !important; 123 | } 124 | 125 | .bg-teal { 126 | background-color: @teal !important; 127 | } 128 | 129 | .bg-olive { 130 | background-color: @olive !important; 131 | } 132 | 133 | .bg-lime { 134 | background-color: @lime !important; 135 | } 136 | 137 | .bg-orange { 138 | background-color: @orange !important; 139 | } 140 | 141 | .bg-fuchsia { 142 | background-color: @fuchsia !important; 143 | } 144 | 145 | .bg-purple { 146 | background-color: @purple !important; 147 | } 148 | 149 | .bg-maroon { 150 | background-color: @maroon !important; 151 | } 152 | 153 | //Set of Active Background Colors 154 | .bg-gray-active { 155 | color: #000; 156 | background-color: darken(@gray, 10%) !important; 157 | } 158 | 159 | .bg-black-active { 160 | background-color: darken(@black, 10%) !important; 161 | } 162 | 163 | .bg-red-active { 164 | background-color: darken(@red , 6%) !important; 165 | } 166 | 167 | .bg-yellow-active { 168 | background-color: darken(@yellow , 6%) !important; 169 | } 170 | 171 | .bg-aqua-active { 172 | background-color: darken(@aqua , 6%) !important; 173 | } 174 | 175 | .bg-blue-active { 176 | background-color: darken(@blue , 10%) !important; 177 | } 178 | 179 | .bg-light-blue-active { 180 | background-color: darken(@light-blue , 6%) !important; 181 | } 182 | 183 | .bg-green-active { 184 | background-color: darken(@green , 5%) !important; 185 | } 186 | 187 | .bg-navy-active { 188 | background-color: darken(@navy , 2%) !important; 189 | } 190 | 191 | .bg-teal-active { 192 | background-color: darken(@teal , 5%) !important; 193 | } 194 | 195 | .bg-olive-active { 196 | background-color: darken(@olive , 5%) !important; 197 | } 198 | 199 | .bg-lime-active { 200 | background-color: darken(@lime , 5%) !important; 201 | } 202 | 203 | .bg-orange-active { 204 | background-color: darken(@orange , 5%) !important; 205 | } 206 | 207 | .bg-fuchsia-active { 208 | background-color: darken(@fuchsia , 5%) !important; 209 | } 210 | 211 | .bg-purple-active { 212 | background-color: darken(@purple , 5%) !important; 213 | } 214 | 215 | .bg-maroon-active { 216 | background-color: darken(@maroon , 3%) !important; 217 | } 218 | 219 | //Disabled! 220 | [class^="bg-"].disabled { 221 | .opacity(.65); 222 | } 223 | 224 | // Text colors 225 | .text-red { 226 | color: @red !important; 227 | } 228 | 229 | .text-yellow { 230 | color: @yellow !important; 231 | } 232 | 233 | .text-aqua { 234 | color: @aqua !important; 235 | } 236 | 237 | .text-blue { 238 | color: @blue !important; 239 | } 240 | 241 | .text-black { 242 | color: @black !important; 243 | } 244 | 245 | .text-light-blue { 246 | color: @light-blue !important; 247 | } 248 | 249 | .text-green { 250 | color: @green !important; 251 | } 252 | 253 | .text-gray { 254 | color: @gray !important; 255 | } 256 | 257 | .text-navy { 258 | color: @navy !important; 259 | } 260 | 261 | .text-teal { 262 | color: @teal !important; 263 | } 264 | 265 | .text-olive { 266 | color: @olive !important; 267 | } 268 | 269 | .text-lime { 270 | color: @lime !important; 271 | } 272 | 273 | .text-orange { 274 | color: @orange !important; 275 | } 276 | 277 | .text-fuchsia { 278 | color: @fuchsia !important; 279 | } 280 | 281 | .text-purple { 282 | color: @purple !important; 283 | } 284 | 285 | .text-maroon { 286 | color: @maroon !important; 287 | } 288 | 289 | .link-muted { 290 | color: darken(@gray, 30%); 291 | &:hover, 292 | &:focus { 293 | color: darken(@gray, 40%); 294 | } 295 | } 296 | 297 | .link-black { 298 | color: #666; 299 | &:hover, 300 | &:focus { 301 | color: #999; 302 | } 303 | } 304 | 305 | // Hide elements by display none only 306 | .hide { 307 | display: none !important; 308 | } 309 | 310 | // Remove borders 311 | .no-border { 312 | border: 0 !important; 313 | } 314 | 315 | // Remove padding 316 | .no-padding { 317 | padding: 0 !important; 318 | } 319 | 320 | // Remove margins 321 | .no-margin { 322 | margin: 0 !important; 323 | } 324 | 325 | // Remove box shadow 326 | .no-shadow { 327 | box-shadow: none !important; 328 | } 329 | 330 | // Unstyled List 331 | .list-unstyled { 332 | list-style: none; 333 | margin: 0; 334 | padding: 0; 335 | } 336 | 337 | .list-group-unbordered { 338 | > .list-group-item { 339 | border-left: 0; 340 | border-right: 0; 341 | border-radius: 0; 342 | padding-left: 0; 343 | padding-right: 0; 344 | } 345 | } 346 | 347 | // Remove border radius 348 | .flat { 349 | .border-radius(0) !important; 350 | } 351 | 352 | .text-bold { 353 | &, &.table td, &.table th { 354 | font-weight: 700; 355 | } 356 | } 357 | 358 | .text-sm { 359 | font-size: 12px; 360 | } 361 | 362 | // _fix for sparkline tooltip 363 | .jqstooltip { 364 | padding: 5px !important; 365 | width: auto !important; 366 | height: auto !important; 367 | } 368 | 369 | // Gradient Background colors 370 | .bg-teal-gradient { 371 | .gradient(@teal; @teal; lighten(@teal, 16%)) !important; 372 | color: #fff; 373 | } 374 | 375 | .bg-light-blue-gradient { 376 | .gradient(@light-blue; @light-blue; lighten(@light-blue, 12%)) !important; 377 | color: #fff; 378 | } 379 | 380 | .bg-blue-gradient { 381 | .gradient(@blue; @blue; lighten(@blue, 7%)) !important; 382 | color: #fff; 383 | } 384 | 385 | .bg-aqua-gradient { 386 | .gradient(@aqua; @aqua; lighten(@aqua, 7%)) !important; 387 | color: #fff; 388 | } 389 | 390 | .bg-yellow-gradient { 391 | .gradient(@yellow; @yellow; lighten(@yellow, 16%)) !important; 392 | color: #fff; 393 | } 394 | 395 | .bg-purple-gradient { 396 | .gradient(@purple; @purple; lighten(@purple, 16%)) !important; 397 | color: #fff; 398 | } 399 | 400 | .bg-green-gradient { 401 | .gradient(@green; @green; lighten(@green, 7%)) !important; 402 | color: #fff; 403 | } 404 | 405 | .bg-red-gradient { 406 | .gradient(@red; @red; lighten(@red, 10%)) !important; 407 | color: #fff; 408 | } 409 | 410 | .bg-black-gradient { 411 | .gradient(@black; @black; lighten(@black, 10%)) !important; 412 | color: #fff; 413 | } 414 | 415 | .bg-maroon-gradient { 416 | .gradient(@maroon; @maroon; lighten(@maroon, 10%)) !important; 417 | color: #fff; 418 | } 419 | 420 | //Description Block Extension 421 | .description-block { 422 | .description-icon { 423 | font-size: 16px; 424 | } 425 | } 426 | 427 | //Remove top padding 428 | .no-pad-top { 429 | padding-top: 0; 430 | } 431 | 432 | //Make position static 433 | .position-static { 434 | position: static !important; 435 | } 436 | 437 | //List utility classes 438 | .list-header { 439 | font-size: 15px; 440 | padding: 10px 4px; 441 | font-weight: bold; 442 | color: #666; 443 | } 444 | 445 | .list-seperator { 446 | height: 1px; 447 | background: @box-border-color; 448 | margin: 15px 0 9px 0; 449 | } 450 | 451 | .list-link { 452 | > a { 453 | padding: 4px; 454 | color: #777; 455 | &:hover { 456 | color: #222; 457 | } 458 | } 459 | } 460 | 461 | //Light font weight 462 | .font-light { 463 | font-weight: 300; 464 | } 465 | 466 | //User block 467 | .user-block { 468 | .clearfix(); 469 | img { 470 | width: 40px; 471 | height: 40px; 472 | float: left; 473 | } 474 | .username, 475 | .description, 476 | .comment { 477 | display: block; 478 | margin-left: 50px; 479 | } 480 | .username { 481 | font-size: 16px; 482 | font-weight: 600; 483 | } 484 | .description { 485 | color: #999; 486 | font-size: 13px; 487 | } 488 | &.user-block-sm { 489 | img { 490 | &:extend(.img-sm); 491 | } 492 | .username, 493 | .description, 494 | .comment { 495 | margin-left: 40px; 496 | } 497 | .username { 498 | font-size: 14px; 499 | } 500 | } 501 | } 502 | 503 | //Image sizes 504 | .img-sm, 505 | .img-md, 506 | .img-lg { 507 | float: left; 508 | } 509 | 510 | .img-sm { 511 | width: 30px !important; 512 | height: 30px !important; 513 | + .img-push { 514 | margin-left: 40px; 515 | } 516 | } 517 | 518 | .img-md { 519 | width: 60px; 520 | height: 60px; 521 | + .img-push { 522 | margin-left: 70px; 523 | } 524 | } 525 | 526 | .img-lg { 527 | width: 100px; 528 | height: 100px; 529 | + .img-push { 530 | margin-left: 110px; 531 | } 532 | } 533 | 534 | // Image bordered 535 | .img-bordered { 536 | border: 3px solid @gray; 537 | padding: 3px; 538 | } 539 | 540 | .img-bordered-sm { 541 | border: 2px solid @gray; 542 | padding: 2px; 543 | } 544 | 545 | //General attachemnt block 546 | .attachment-block { 547 | border: 1px solid @box-border-color; 548 | padding: 5px; 549 | margin-bottom: 10px; 550 | background: #f7f7f7; 551 | 552 | .attachment-img { 553 | max-width: 100px; 554 | max-height: 100px; 555 | height: auto; 556 | float: left; 557 | } 558 | .attachment-pushed { 559 | margin-left: 110px; 560 | } 561 | .attachment-heading { 562 | margin: 0; 563 | } 564 | .attachment-text { 565 | color: #555; 566 | } 567 | } 568 | 569 | .connectedSortable { 570 | min-height: 100px; 571 | } 572 | 573 | .ui-helper-hidden-accessible { 574 | border: 0; 575 | clip: rect(0 0 0 0); 576 | height: 1px; 577 | margin: -1px; 578 | overflow: hidden; 579 | padding: 0; 580 | position: absolute; 581 | width: 1px; 582 | } 583 | 584 | .sort-highlight { 585 | background: #f4f4f4; 586 | border: 1px dashed #ddd; 587 | margin-bottom: 10px; 588 | } 589 | 590 | .full-opacity-hover { 591 | .opacity(.65); 592 | &:hover { 593 | .opacity(1); 594 | } 595 | } 596 | 597 | // Charts 598 | .chart { 599 | position: relative; 600 | overflow: hidden; 601 | width: 100%; 602 | svg, 603 | canvas { 604 | width: 100% !important; 605 | } 606 | } 607 | --------------------------------------------------------------------------------