diff --git a/LNbits/static/Gruntfile.js b/LNbits/static/Gruntfile.js new file mode 100644 index 000000000..8e2b46f48 --- /dev/null +++ b/LNbits/static/Gruntfile.js @@ -0,0 +1,68 @@ +'use strict'; +module.exports = function (grunt) { + // load all grunt tasks + grunt.loadNpmTasks('grunt-contrib-less'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.initConfig({ + watch: { + // if any .less file changes in directory "build/less/" run the "less"-task. + files: ["build/less/*.less", "build/less/skins/*.less", "dist/js/app.js"], + tasks: ["less", "uglify"] + }, + // "less"-task configuration + //this task will compile all less files upon saving to create both AdminLTE.css and AdminLTE.min.css + less: { + //Development not compressed + development: { + options: { + //Wether to compress or not + compress: false + }, + files: { + // compilation.css : source.less + "dist/css/AdminLTE.css": "build/less/AdminLTE.less", + "dist/css/skins/skin-blue.css": "build/less/skins/skin-blue.less", + "dist/css/skins/skin-black.css": "build/less/skins/skin-black.less", + "dist/css/skins/skin-yellow.css": "build/less/skins/skin-yellow.less", + "dist/css/skins/skin-green.css": "build/less/skins/skin-green.less", + "dist/css/skins/skin-red.css": "build/less/skins/skin-red.less", + "dist/css/skins/skin-purple.css": "build/less/skins/skin-purple.less", + "dist/css/skins/_all-skins.css": "build/less/skins/_all-skins.less" + } + }, + //production compresses version + production: { + options: { + //Wether to compress or not + compress: true + }, + files: { + // compilation.css : source.less + "dist/css/AdminLTE.min.css": "build/less/AdminLTE.less", + "dist/css/skins/skin-blue.min.css": "build/less/skins/skin-blue.less", + "dist/css/skins/skin-black.min.css": "build/less/skins/skin-black.less", + "dist/css/skins/skin-yellow.min.css": "build/less/skins/skin-yellow.less", + "dist/css/skins/skin-green.min.css": "build/less/skins/skin-green.less", + "dist/css/skins/skin-red.min.css": "build/less/skins/skin-red.less", + "dist/css/skins/skin-purple.min.css": "build/less/skins/skin-purple.less", + "dist/css/skins/_all-skins.min.css": "build/less/skins/_all-skins.less" + } + } + }, + //Uglify task info. Compress the js files. + uglify: { + options: { + mangle: true, + preserveComments: 'some' + }, + my_target: { + files: { + 'dist/js/app.min.js': ['dist/js/app.js'] + } + } + } + }); + // the default task (running "grunt" in console) is "watch" + grunt.registerTask('default', ['watch']); +}; \ No newline at end of file diff --git a/LNbits/static/README.md b/LNbits/static/README.md new file mode 100644 index 000000000..116ea28b8 --- /dev/null +++ b/LNbits/static/README.md @@ -0,0 +1,145 @@ +Introduction +============ + +**AdminLTE** -- is a fully responsive admin template. Based on **Bootstrap 3** framework. Highly customizable and easy to use. Fits many screen resolutions from small mobile devices to large desktops. Check out the live preview now and see for yourself. + +**Download & Preview on [Almsaeed Studio](http://almsaeedstudio.com)** + +Looking for Premium Templates? +------------------------------ +**Almsaeed studio just opened a new premium templates page. Hand picked to insure the best quality and the most affordable prices. Visit http://almsaeedstudio.com/premium for more information.** + + +!["AdminLTE Presentation"] (http://almsaeedstudio.com/AdminLTE2.png "AdminLTE Presentation") + +**AdminLTE** has been carefully coded with clear comments in all of its JS, LESS and HTML files. LESS has been used to increase code customizability. + +Installation +------------ +There are multiple ways to install AdminLTE. + +####Download: + +Download from Github or [visit Almsaeed Studio](http://almsaeedstudio.com) and download the lateset release. + +####Using The Command Line: + +**Github** + +- Fork the repository ([here is the guide](https://help.github.com/articles/fork-a-repo/)). +- Clone to your machine +``` +git clone https://github.com/YOUR_USERNAME/AdminLTE.git" +``` + +**Bower** + +``` +bower install git://github.com/almasaeed2010/AdminLTE.git +``` + +**Composer** + +``` +composer require "almasaeed2010/adminlte=~2.0" +``` + +Documentation +------------- +Visit the [online documentation](http://almsaeedstudio.com/themes/AdminLTE/documentation/index.html) for the most +updated guide. Information will be added on a weekly basis. + +Browser Support +--------------- +- IE 9+ +- Firefox (latest) +- Chrome (latest) +- Safari (latest) +- Opera (latest) + +Contribution +------------ +Contribution are always **welcome and recommended**! Here is how: + +- Fork the repository ([here is the guide](https://help.github.com/articles/fork-a-repo/)). +- Clone to your machine ```git clone https://github.com/YOUR_USERNAME/AdminLTE.git" +- Make your changes +- Create a pull request + +#### Contribution Requirements: + +- When you contribute, you agree to give a non-exclusive license to Almsaeed Studio to use that contribution in any context as we (Almsaeed Studio) see appropriate. +- If you use content provided by another party, it must be appropriately licensed using an [open source](http://opensource.org/licenses) license. +- Contributions are only accepted through Github pull requests. +- Finally, contributed code must work in all supported browsers (see above for browser support). + +License +------- +AdminLTE is an open source project by [Almsaeed Studio](http://almsaeedstudio.com) that is licensed under [MIT](http://opensource.org/licenses/MIT). Almsaeed Studio +reserves the right to change the license of future releases. + +Legacy Realeases +---------------- +AdminLTE 1.x can be easily upgraded to 2.x using [this guide](http://almsaeedstudio.com/themes/AdminLTE/documentation/index.html#browsers), but if you intend to keep using AdminLTE 1.x, you can download the latest release from the [releases](https://github.com/almasaeed2010/AdminLTE/releases) section above. + +Change log +---------- +**v2.0:** + +- Major layout bug fixes +- Change in layout mark up +- Added transitions to the sidebar +- New skins and modified previous skins +- Change in color scheme to a more complementing scheme +- Added footer support +- Removed pace.js from the main app.js +- Added support for collapsed sidebar as an initial state (add .sidebar-collapse to the body tag) +- Added boxed layout (.layout-boxed) +- Enhanced consistency in padding and margining +- Updated Bootstrap to 3.3.2 +- Fixed navbar dropdown menu on small screens positioning issues. +- Updated Ion Icons to 2.0.0 +- Updated FontAwesome to 4.3.0 +- Added ChartJS 1.0.1 +- Removed iCheck dependency +- Created Dashboard 2.0 +- Created new Chat widget (DirectChat) +- Added transitions to DirectChat +- Added contacts pane to DirectChat +- Changed .right-side to .content-wrapper +- Changed .navbar-right to .navbar-custom-menu +- Removed unused files +- Updated lockscreen style (HTML markup changed!) +- Updated Login & Registration pages (HTML markup changed!) +- Updated buttons style. +- Enhanced border-radius consistency +- Added mailbox: inbox, read, and compose pages +- Bootstrap & jQuery are now hosted locally +- Created documentation. + +**ver 1.2:** + +- Fixed the sidebar scroll issue when using the fixed layout. +- Added [Bootstrap Social Buttons](http://lipis.github.io/bootstrap-social/ "Bootstrap Social") plugin. +- Fixed RequireJS bug. Thanks to [StaticSphere](https://github.com/StaticSphere "github user"). + +**ver 1.1:** + +- Added new skin. class: .skin-black +- Added [pace](http://github.hubspot.com/pace/docs/welcome/ "pace") plugin. + +Image Credits +------------- +[Pixeden](http://www.pixeden.com/psd-web-elements/flat-responsive-showcase-psd) + +[Graphicsfuel](http://www.graphicsfuel.com/2013/02/13-high-resolution-blur-backgrounds/) + +[Pickaface](http://pickaface.net/) + +[Unsplash](https://unsplash.com/) + +Donations +--------- +Donations are **greatly appreciated!** + +[![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif "AdminLTE Presentation")](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=629XCUSXBHCBC "Donate") diff --git a/LNbits/static/build/bootstrap-less/mixins.less b/LNbits/static/build/bootstrap-less/mixins.less new file mode 100644 index 000000000..af4408fc2 --- /dev/null +++ b/LNbits/static/build/bootstrap-less/mixins.less @@ -0,0 +1,39 @@ +// Mixins +// -------------------------------------------------- + +// Utilities +@import "mixins/hide-text.less"; +@import "mixins/opacity.less"; +@import "mixins/image.less"; +@import "mixins/labels.less"; +@import "mixins/reset-filter.less"; +@import "mixins/resize.less"; +@import "mixins/responsive-visibility.less"; +@import "mixins/size.less"; +@import "mixins/tab-focus.less"; +@import "mixins/text-emphasis.less"; +@import "mixins/text-overflow.less"; +@import "mixins/vendor-prefixes.less"; + +// Components +@import "mixins/alerts.less"; +@import "mixins/buttons.less"; +@import "mixins/panels.less"; +@import "mixins/pagination.less"; +@import "mixins/list-group.less"; +@import "mixins/nav-divider.less"; +@import "mixins/forms.less"; +@import "mixins/progress-bar.less"; +@import "mixins/table-row.less"; + +// Skins +@import "mixins/background-variant.less"; +@import "mixins/border-radius.less"; +@import "mixins/gradients.less"; + +// Layout +@import "mixins/clearfix.less"; +@import "mixins/center-block.less"; +@import "mixins/nav-vertical-align.less"; +@import "mixins/grid-framework.less"; +@import "mixins/grid.less"; diff --git a/LNbits/static/build/bootstrap-less/mixins/alerts.less b/LNbits/static/build/bootstrap-less/mixins/alerts.less new file mode 100644 index 000000000..396196f43 --- /dev/null +++ b/LNbits/static/build/bootstrap-less/mixins/alerts.less @@ -0,0 +1,14 @@ +// Alerts + +.alert-variant(@background; @border; @text-color) { + background-color: @background; + border-color: @border; + color: @text-color; + + hr { + border-top-color: darken(@border, 5%); + } + .alert-link { + color: darken(@text-color, 10%); + } +} diff --git a/LNbits/static/build/bootstrap-less/mixins/background-variant.less b/LNbits/static/build/bootstrap-less/mixins/background-variant.less new file mode 100644 index 000000000..556e490d4 --- /dev/null +++ b/LNbits/static/build/bootstrap-less/mixins/background-variant.less @@ -0,0 +1,8 @@ +// Contextual backgrounds + +.bg-variant(@color) { + background-color: @color; + a&:hover { + background-color: darken(@color, 10%); + } +} diff --git a/LNbits/static/build/bootstrap-less/mixins/border-radius.less b/LNbits/static/build/bootstrap-less/mixins/border-radius.less new file mode 100644 index 000000000..ca05dbf45 --- /dev/null +++ b/LNbits/static/build/bootstrap-less/mixins/border-radius.less @@ -0,0 +1,18 @@ +// Single side border-radius + +.border-top-radius(@radius) { + border-top-right-radius: @radius; + border-top-left-radius: @radius; +} +.border-right-radius(@radius) { + border-bottom-right-radius: @radius; + border-top-right-radius: @radius; +} +.border-bottom-radius(@radius) { + border-bottom-right-radius: @radius; + border-bottom-left-radius: @radius; +} +.border-left-radius(@radius) { + border-bottom-left-radius: @radius; + border-top-left-radius: @radius; +} diff --git a/LNbits/static/build/bootstrap-less/mixins/buttons.less b/LNbits/static/build/bootstrap-less/mixins/buttons.less new file mode 100644 index 000000000..92d8a056c --- /dev/null +++ b/LNbits/static/build/bootstrap-less/mixins/buttons.less @@ -0,0 +1,52 @@ +// Button variants +// +// Easily pump out default styles, as well as :hover, :focus, :active, +// and disabled options for all buttons + +.button-variant(@color; @background; @border) { + color: @color; + background-color: @background; + border-color: @border; + + &:hover, + &:focus, + &.focus, + &:active, + &.active, + .open > .dropdown-toggle& { + color: @color; + background-color: darken(@background, 10%); + border-color: darken(@border, 12%); + } + &:active, + &.active, + .open > .dropdown-toggle& { + background-image: none; + } + &.disabled, + &[disabled], + fieldset[disabled] & { + &, + &:hover, + &:focus, + &.focus, + &:active, + &.active { + background-color: @background; + border-color: @border; + } + } + + .badge { + color: @background; + background-color: @color; + } +} + +// Button sizes +.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { + padding: @padding-vertical @padding-horizontal; + font-size: @font-size; + line-height: @line-height; + border-radius: @border-radius; +} diff --git a/LNbits/static/build/bootstrap-less/mixins/center-block.less b/LNbits/static/build/bootstrap-less/mixins/center-block.less new file mode 100644 index 000000000..d18d6de9e --- /dev/null +++ b/LNbits/static/build/bootstrap-less/mixins/center-block.less @@ -0,0 +1,7 @@ +// Center-align a block level element + +.center-block() { + display: block; + margin-left: auto; + margin-right: auto; +} diff --git a/LNbits/static/build/bootstrap-less/mixins/clearfix.less b/LNbits/static/build/bootstrap-less/mixins/clearfix.less new file mode 100644 index 000000000..3f7a3820c --- /dev/null +++ b/LNbits/static/build/bootstrap-less/mixins/clearfix.less @@ -0,0 +1,22 @@ +// Clearfix +// +// For modern browsers +// 1. The space content is one way to avoid an Opera bug when the +// contenteditable attribute is included anywhere else in the document. +// Otherwise it causes space to appear at the top and bottom of elements +// that are clearfixed. +// 2. The use of `table` rather than `block` is only necessary if using +// `:before` to contain the top-margins of child elements. +// +// Source: http://nicolasgallagher.com/micro-clearfix-hack/ + +.clearfix() { + &:before, + &:after { + content: " "; // 1 + display: table; // 2 + } + &:after { + clear: both; + } +} diff --git a/LNbits/static/build/bootstrap-less/mixins/forms.less b/LNbits/static/build/bootstrap-less/mixins/forms.less new file mode 100644 index 000000000..6f55ed967 --- /dev/null +++ b/LNbits/static/build/bootstrap-less/mixins/forms.less @@ -0,0 +1,85 @@ +// Form validation states +// +// Used in forms.less to generate the form validation CSS for warnings, errors, +// and successes. + +.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) { + // Color the label and help text + .help-block, + .control-label, + .radio, + .checkbox, + .radio-inline, + .checkbox-inline, + &.radio label, + &.checkbox label, + &.radio-inline label, + &.checkbox-inline label { + color: @text-color; + } + // Set the border and box shadow on specific inputs to match + .form-control { + border-color: @border-color; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work + &:focus { + border-color: darken(@border-color, 10%); + @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%); + .box-shadow(@shadow); + } + } + // Set validation states also for addons + .input-group-addon { + color: @text-color; + border-color: @border-color; + background-color: @background-color; + } + // Optional feedback icon + .form-control-feedback { + color: @text-color; + } +} + + +// Form control focus state +// +// Generate a customized focus state and for any input with the specified color, +// which defaults to the `@input-border-focus` variable. +// +// We highly encourage you to not customize the default value, but instead use +// this to tweak colors on an as-needed basis. This aesthetic change is based on +// WebKit's default styles, but applicable to a wider range of browsers. Its +// usability and accessibility should be taken into account with any change. +// +// Example usage: change the default blue border and shadow to white for better +// contrast against a dark gray background. +.form-control-focus(@color: @input-border-focus) { + @color-rgba: rgba(red(@color), green(@color), blue(@color), .6); + &:focus { + border-color: @color; + outline: 0; + .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}"); + } +} + +// Form control sizing +// +// Relative text size, padding, and border-radii changes for form controls. For +// horizontal sizing, wrap controls in the predefined grid classes. `` background color +@input-bg: #fff; +//** `` background color +@input-bg-disabled: @gray-lighter; + +//** Text color for ``s +@input-color: @gray; +//** `` border color +@input-border: #ccc; + +// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4 +//** Default `.form-control` border radius +// This has no effect on ``s in CSS. +@input-border-radius: @border-radius-base; +//** Large `.form-control` border radius +@input-border-radius-large: @border-radius-large; +//** Small `.form-control` border radius +@input-border-radius-small: @border-radius-small; + +//** Border color for inputs on focus +@input-border-focus: #66afe9; + +//** Placeholder text color +@input-color-placeholder: #999; + +//** Default `.form-control` height +@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2); +//** Large `.form-control` height +@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2); +//** Small `.form-control` height +@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2); + +@legend-color: @gray-dark; +@legend-border-color: #e5e5e5; + +//** Background color for textual input addons +@input-group-addon-bg: @gray-lighter; +//** Border color for textual input addons +@input-group-addon-border-color: @input-border; + +//** Disabled cursor for form controls and buttons. +@cursor-disabled: not-allowed; + + +//== Dropdowns +// +//## Dropdown menu container and contents. + +//** Background for the dropdown menu. +@dropdown-bg: #fff; +//** Dropdown menu `border-color`. +@dropdown-border: rgba(0,0,0,.15); +//** Dropdown menu `border-color` **for IE8**. +@dropdown-fallback-border: #ccc; +//** Divider color for between dropdown items. +@dropdown-divider-bg: #e5e5e5; + +//** Dropdown link text color. +@dropdown-link-color: @gray-dark; +//** Hover color for dropdown links. +@dropdown-link-hover-color: darken(@gray-dark, 5%); +//** Hover background for dropdown links. +@dropdown-link-hover-bg: #f5f5f5; + +//** Active dropdown menu item text color. +@dropdown-link-active-color: @component-active-color; +//** Active dropdown menu item background color. +@dropdown-link-active-bg: @component-active-bg; + +//** Disabled dropdown menu item background color. +@dropdown-link-disabled-color: @gray-light; + +//** Text color for headers within dropdown menus. +@dropdown-header-color: @gray-light; + +//** Deprecated `@dropdown-caret-color` as of v3.1.0 +@dropdown-caret-color: #000; + + +//-- Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. +// +// Note: These variables are not generated into the Customizer. + +@zindex-navbar: 1000; +@zindex-dropdown: 1000; +@zindex-popover: 1060; +@zindex-tooltip: 1070; +@zindex-navbar-fixed: 1030; +@zindex-modal: 1040; + + +//== Media queries breakpoints +// +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +// Extra small screen / phone +//** Deprecated `@screen-xs` as of v3.0.1 +@screen-xs: 480px; +//** Deprecated `@screen-xs-min` as of v3.2.0 +@screen-xs-min: @screen-xs; +//** Deprecated `@screen-phone` as of v3.0.1 +@screen-phone: @screen-xs-min; + +// Small screen / tablet +//** Deprecated `@screen-sm` as of v3.0.1 +@screen-sm: 768px; +@screen-sm-min: @screen-sm; +//** Deprecated `@screen-tablet` as of v3.0.1 +@screen-tablet: @screen-sm-min; + +// Medium screen / desktop +//** Deprecated `@screen-md` as of v3.0.1 +@screen-md: 992px; +@screen-md-min: @screen-md; +//** Deprecated `@screen-desktop` as of v3.0.1 +@screen-desktop: @screen-md-min; + +// Large screen / wide desktop +//** Deprecated `@screen-lg` as of v3.0.1 +@screen-lg: 1200px; +@screen-lg-min: @screen-lg; +//** Deprecated `@screen-lg-desktop` as of v3.0.1 +@screen-lg-desktop: @screen-lg-min; + +// So media queries don't overlap when required, provide a maximum +@screen-xs-max: (@screen-sm-min - 1); +@screen-sm-max: (@screen-md-min - 1); +@screen-md-max: (@screen-lg-min - 1); + + +//== Grid system +// +//## Define your custom responsive grid. + +//** Number of columns in the grid. +@grid-columns: 12; +//** Padding between columns. Gets divided in half for the left and right. +@grid-gutter-width: 30px; +// Navbar collapse +//** Point at which the navbar becomes uncollapsed. +@grid-float-breakpoint: @screen-sm-min; +//** Point at which the navbar begins collapsing. +@grid-float-breakpoint-max: (@grid-float-breakpoint - 1); + + +//== Container sizes +// +//## Define the maximum width of `.container` for different screen sizes. + +// Small screen / tablet +@container-tablet: (720px + @grid-gutter-width); +//** For `@screen-sm-min` and up. +@container-sm: @container-tablet; + +// Medium screen / desktop +@container-desktop: (940px + @grid-gutter-width); +//** For `@screen-md-min` and up. +@container-md: @container-desktop; + +// Large screen / wide desktop +@container-large-desktop: (1140px + @grid-gutter-width); +//** For `@screen-lg-min` and up. +@container-lg: @container-large-desktop; + + +//== Navbar +// +//## + +// Basics of a navbar +@navbar-height: 50px; +@navbar-margin-bottom: @line-height-computed; +@navbar-border-radius: @border-radius-base; +@navbar-padding-horizontal: floor((@grid-gutter-width / 2)); +@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2); +@navbar-collapse-max-height: 340px; + +@navbar-default-color: #777; +@navbar-default-bg: #f8f8f8; +@navbar-default-border: darken(@navbar-default-bg, 6.5%); + +// Navbar links +@navbar-default-link-color: #777; +@navbar-default-link-hover-color: #333; +@navbar-default-link-hover-bg: transparent; +@navbar-default-link-active-color: #555; +@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%); +@navbar-default-link-disabled-color: #ccc; +@navbar-default-link-disabled-bg: transparent; + +// Navbar brand label +@navbar-default-brand-color: @navbar-default-link-color; +@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%); +@navbar-default-brand-hover-bg: transparent; + +// Navbar toggle +@navbar-default-toggle-hover-bg: #ddd; +@navbar-default-toggle-icon-bar-bg: #888; +@navbar-default-toggle-border-color: #ddd; + + +// Inverted navbar +// Reset inverted navbar basics +@navbar-inverse-color: lighten(@gray-light, 15%); +@navbar-inverse-bg: #222; +@navbar-inverse-border: darken(@navbar-inverse-bg, 10%); + +// Inverted navbar links +@navbar-inverse-link-color: lighten(@gray-light, 15%); +@navbar-inverse-link-hover-color: #fff; +@navbar-inverse-link-hover-bg: transparent; +@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color; +@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%); +@navbar-inverse-link-disabled-color: #444; +@navbar-inverse-link-disabled-bg: transparent; + +// Inverted navbar brand label +@navbar-inverse-brand-color: @navbar-inverse-link-color; +@navbar-inverse-brand-hover-color: #fff; +@navbar-inverse-brand-hover-bg: transparent; + +// Inverted navbar toggle +@navbar-inverse-toggle-hover-bg: #333; +@navbar-inverse-toggle-icon-bar-bg: #fff; +@navbar-inverse-toggle-border-color: #333; + + +//== Navs +// +//## + +//=== Shared nav styles +@nav-link-padding: 10px 15px; +@nav-link-hover-bg: @gray-lighter; + +@nav-disabled-link-color: @gray-light; +@nav-disabled-link-hover-color: @gray-light; + +//== Tabs +@nav-tabs-border-color: #ddd; + +@nav-tabs-link-hover-border-color: @gray-lighter; + +@nav-tabs-active-link-hover-bg: @body-bg; +@nav-tabs-active-link-hover-color: @gray; +@nav-tabs-active-link-hover-border-color: #ddd; + +@nav-tabs-justified-link-border-color: #ddd; +@nav-tabs-justified-active-link-border-color: @body-bg; + +//== Pills +@nav-pills-border-radius: @border-radius-base; +@nav-pills-active-link-hover-bg: @component-active-bg; +@nav-pills-active-link-hover-color: @component-active-color; + + +//== Pagination +// +//## + +@pagination-color: @link-color; +@pagination-bg: #fff; +@pagination-border: #ddd; + +@pagination-hover-color: @link-hover-color; +@pagination-hover-bg: @gray-lighter; +@pagination-hover-border: #ddd; + +@pagination-active-color: #fff; +@pagination-active-bg: @brand-primary; +@pagination-active-border: @brand-primary; + +@pagination-disabled-color: @gray-light; +@pagination-disabled-bg: #fff; +@pagination-disabled-border: #ddd; + + +//== Pager +// +//## + +@pager-bg: @pagination-bg; +@pager-border: @pagination-border; +@pager-border-radius: 15px; + +@pager-hover-bg: @pagination-hover-bg; + +@pager-active-bg: @pagination-active-bg; +@pager-active-color: @pagination-active-color; + +@pager-disabled-color: @pagination-disabled-color; + + +//== Jumbotron +// +//## + +@jumbotron-padding: 30px; +@jumbotron-color: inherit; +@jumbotron-bg: @gray-lighter; +@jumbotron-heading-color: inherit; +@jumbotron-font-size: ceil((@font-size-base * 1.5)); + + +//== Form states and alerts +// +//## Define colors for form feedback states and, by default, alerts. + +@state-success-text: #3c763d; +@state-success-bg: #dff0d8; +@state-success-border: darken(spin(@state-success-bg, -10), 5%); + +@state-info-text: #31708f; +@state-info-bg: #d9edf7; +@state-info-border: darken(spin(@state-info-bg, -10), 7%); + +@state-warning-text: #8a6d3b; +@state-warning-bg: #fcf8e3; +@state-warning-border: darken(spin(@state-warning-bg, -10), 5%); + +@state-danger-text: #a94442; +@state-danger-bg: #f2dede; +@state-danger-border: darken(spin(@state-danger-bg, -10), 5%); + + +//== Tooltips +// +//## + +//** Tooltip max width +@tooltip-max-width: 200px; +//** Tooltip text color +@tooltip-color: #fff; +//** Tooltip background color +@tooltip-bg: #000; +@tooltip-opacity: .9; + +//** Tooltip arrow width +@tooltip-arrow-width: 5px; +//** Tooltip arrow color +@tooltip-arrow-color: @tooltip-bg; + + +//== Popovers +// +//## + +//** Popover body background color +@popover-bg: #fff; +//** Popover maximum width +@popover-max-width: 276px; +//** Popover border color +@popover-border-color: rgba(0,0,0,.2); +//** Popover fallback border color +@popover-fallback-border-color: #ccc; + +//** Popover title background color +@popover-title-bg: darken(@popover-bg, 3%); + +//** Popover arrow width +@popover-arrow-width: 10px; +//** Popover arrow color +@popover-arrow-color: @popover-bg; + +//** Popover outer arrow width +@popover-arrow-outer-width: (@popover-arrow-width + 1); +//** Popover outer arrow color +@popover-arrow-outer-color: fadein(@popover-border-color, 5%); +//** Popover outer arrow fallback color +@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%); + + +//== Labels +// +//## + +//** Default label background color +@label-default-bg: @gray-light; +//** Primary label background color +@label-primary-bg: @brand-primary; +//** Success label background color +@label-success-bg: @brand-success; +//** Info label background color +@label-info-bg: @brand-info; +//** Warning label background color +@label-warning-bg: @brand-warning; +//** Danger label background color +@label-danger-bg: @brand-danger; + +//** Default label text color +@label-color: #fff; +//** Default text color of a linked label +@label-link-hover-color: #fff; + + +//== Modals +// +//## + +//** Padding applied to the modal body +@modal-inner-padding: 15px; + +//** Padding applied to the modal title +@modal-title-padding: 15px; +//** Modal title line-height +@modal-title-line-height: @line-height-base; + +//** Background color of modal content area +@modal-content-bg: #fff; +//** Modal content border color +@modal-content-border-color: rgba(0,0,0,.2); +//** Modal content border color **for IE8** +@modal-content-fallback-border-color: #999; + +//** Modal backdrop background color +@modal-backdrop-bg: #000; +//** Modal backdrop opacity +@modal-backdrop-opacity: .5; +//** Modal header border color +@modal-header-border-color: #e5e5e5; +//** Modal footer border color +@modal-footer-border-color: @modal-header-border-color; + +@modal-lg: 900px; +@modal-md: 600px; +@modal-sm: 300px; + + +//== Alerts +// +//## Define alert colors, border radius, and padding. + +@alert-padding: 15px; +@alert-border-radius: @border-radius-base; +@alert-link-font-weight: bold; + +@alert-success-bg: @state-success-bg; +@alert-success-text: @state-success-text; +@alert-success-border: @state-success-border; + +@alert-info-bg: @state-info-bg; +@alert-info-text: @state-info-text; +@alert-info-border: @state-info-border; + +@alert-warning-bg: @state-warning-bg; +@alert-warning-text: @state-warning-text; +@alert-warning-border: @state-warning-border; + +@alert-danger-bg: @state-danger-bg; +@alert-danger-text: @state-danger-text; +@alert-danger-border: @state-danger-border; + + +//== Progress bars +// +//## + +//** Background color of the whole progress component +@progress-bg: #f5f5f5; +//** Progress bar text color +@progress-bar-color: #fff; +//** Variable for setting rounded corners on progress bar. +@progress-border-radius: @border-radius-base; + +//** Default progress bar color +@progress-bar-bg: @brand-primary; +//** Success progress bar color +@progress-bar-success-bg: @brand-success; +//** Warning progress bar color +@progress-bar-warning-bg: @brand-warning; +//** Danger progress bar color +@progress-bar-danger-bg: @brand-danger; +//** Info progress bar color +@progress-bar-info-bg: @brand-info; + + +//== List group +// +//## + +//** Background color on `.list-group-item` +@list-group-bg: #fff; +//** `.list-group-item` border color +@list-group-border: #ddd; +//** List group border radius +@list-group-border-radius: @border-radius-base; + +//** Background color of single list items on hover +@list-group-hover-bg: #f5f5f5; +//** Text color of active list items +@list-group-active-color: @component-active-color; +//** Background color of active list items +@list-group-active-bg: @component-active-bg; +//** Border color of active list elements +@list-group-active-border: @list-group-active-bg; +//** Text color for content within active list items +@list-group-active-text-color: lighten(@list-group-active-bg, 40%); + +//** Text color of disabled list items +@list-group-disabled-color: @gray-light; +//** Background color of disabled list items +@list-group-disabled-bg: @gray-lighter; +//** Text color for content within disabled list items +@list-group-disabled-text-color: @list-group-disabled-color; + +@list-group-link-color: #555; +@list-group-link-hover-color: @list-group-link-color; +@list-group-link-heading-color: #333; + + +//== Panels +// +//## + +@panel-bg: #fff; +@panel-body-padding: 15px; +@panel-heading-padding: 10px 15px; +@panel-footer-padding: @panel-heading-padding; +@panel-border-radius: @border-radius-base; + +//** Border color for elements within panels +@panel-inner-border: #ddd; +@panel-footer-bg: #f5f5f5; + +@panel-default-text: @gray-dark; +@panel-default-border: #ddd; +@panel-default-heading-bg: #f5f5f5; + +@panel-primary-text: #fff; +@panel-primary-border: @brand-primary; +@panel-primary-heading-bg: @brand-primary; + +@panel-success-text: @state-success-text; +@panel-success-border: @state-success-border; +@panel-success-heading-bg: @state-success-bg; + +@panel-info-text: @state-info-text; +@panel-info-border: @state-info-border; +@panel-info-heading-bg: @state-info-bg; + +@panel-warning-text: @state-warning-text; +@panel-warning-border: @state-warning-border; +@panel-warning-heading-bg: @state-warning-bg; + +@panel-danger-text: @state-danger-text; +@panel-danger-border: @state-danger-border; +@panel-danger-heading-bg: @state-danger-bg; + + +//== Thumbnails +// +//## + +//** Padding around the thumbnail image +@thumbnail-padding: 4px; +//** Thumbnail background color +@thumbnail-bg: @body-bg; +//** Thumbnail border color +@thumbnail-border: #ddd; +//** Thumbnail border radius +@thumbnail-border-radius: @border-radius-base; + +//** Custom text color for thumbnail captions +@thumbnail-caption-color: @text-color; +//** Padding around the thumbnail caption +@thumbnail-caption-padding: 9px; + + +//== Wells +// +//## + +@well-bg: #f5f5f5; +@well-border: darken(@well-bg, 7%); + + +//== Badges +// +//## + +@badge-color: #fff; +//** Linked badge text color on hover +@badge-link-hover-color: #fff; +@badge-bg: @gray-light; + +//** Badge text color in active nav link +@badge-active-color: @link-color; +//** Badge background color in active nav link +@badge-active-bg: #fff; + +@badge-font-weight: bold; +@badge-line-height: 1; +@badge-border-radius: 10px; + + +//== Breadcrumbs +// +//## + +@breadcrumb-padding-vertical: 8px; +@breadcrumb-padding-horizontal: 15px; +//** Breadcrumb background color +@breadcrumb-bg: #f5f5f5; +//** Breadcrumb text color +@breadcrumb-color: #ccc; +//** Text color of current page in the breadcrumb +@breadcrumb-active-color: @gray-light; +//** Textual separator for between breadcrumb elements +@breadcrumb-separator: "/"; + + +//== Carousel +// +//## + +@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6); + +@carousel-control-color: #fff; +@carousel-control-width: 15%; +@carousel-control-opacity: .5; +@carousel-control-font-size: 20px; + +@carousel-indicator-active-bg: #fff; +@carousel-indicator-border-color: #fff; + +@carousel-caption-color: #fff; + + +//== Close +// +//## + +@close-font-weight: bold; +@close-color: #000; +@close-text-shadow: 0 1px 0 #fff; + + +//== Code +// +//## + +@code-color: #c7254e; +@code-bg: #f9f2f4; + +@kbd-color: #fff; +@kbd-bg: #333; + +@pre-bg: #f5f5f5; +@pre-color: @gray-dark; +@pre-border-color: #ccc; +@pre-scrollable-max-height: 340px; + + +//== Type +// +//## + +//** Horizontal offset for forms and lists. +@component-offset-horizontal: 180px; +//** Text muted color +@text-muted: @gray-light; +//** Abbreviations and acronyms border color +@abbr-border-color: @gray-light; +//** Headings small color +@headings-small-color: @gray-light; +//** Blockquote small color +@blockquote-small-color: @gray-light; +//** Blockquote font size +@blockquote-font-size: (@font-size-base * 1.25); +//** Blockquote border color +@blockquote-border-color: @gray-lighter; +//** Page header border color +@page-header-border-color: @gray-lighter; +//** Width of horizontal description list titles +@dl-horizontal-offset: @component-offset-horizontal; +//** Horizontal line color. +@hr-border: @gray-lighter; diff --git a/LNbits/static/build/less/404_500_errors.less b/LNbits/static/build/less/404_500_errors.less new file mode 100644 index 000000000..15ed6d450 --- /dev/null +++ b/LNbits/static/build/less/404_500_errors.less @@ -0,0 +1,36 @@ +/* + * Page: 400 and 500 error pages + * ------------------------------ + */ +.error-page { + width: 600px; + margin: 20px auto 0 auto; + @media (max-width: @screen-sm-max) { + width: 100%; + } + //For the error number e.g: 404 + > .headline { + float: left; + font-size: 100px; + font-weight: 300; + @media (max-width: @screen-sm-max) { + float: none; + text-align: center; + } + } + //For the message + > .error-content { + margin-left: 190px; + @media (max-width: @screen-sm-max) { + margin-left: 0; + } + > h3 { + font-weight: 300; + font-size: 25px; + @media(max-width: @screen-sm-max) { + text-align: center; + } + } + display: block; + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/AdminLTE.less b/LNbits/static/build/less/AdminLTE.less new file mode 100644 index 000000000..1643975f9 --- /dev/null +++ b/LNbits/static/build/less/AdminLTE.less @@ -0,0 +1,71 @@ +/*! + * AdminLTE v2.0.1 + * Author: Almsaeed Studio + * Website: Almsaeed Studio + * License: Open source - MIT + * Please visit http://opensource.org/licenses/MIT for more information +!*/ + +//google fonts +@import url(//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic); + +//Bootstrap Variables & Mixins +//The core bootstrap code have not been modified. These files +//are included only for refrence. +@import "../bootstrap-less/mixins.less"; +@import "../bootstrap-less/variables.less"; + +//MISC +//---- +@import "core.less"; +@import "variables.less"; +@import "mixins.less"; + +//COMPONENTS +//----------- +@import "header.less"; +@import "sidebar.less"; +@import "dropdown.less"; +@import "forms.less"; +@import "progress-bars.less"; +@import "small-box.less"; +@import "boxes.less"; +@import "info-box.less"; +@import "timeline.less"; +@import "buttons.less"; +@import "callout.less"; +@import "alerts.less"; +@import "navs.less"; +@import "products.less"; +@import "table.less"; +@import "labels.less"; +@import "direct-chat.less"; +@import "users-list.less"; +@import "carousel.less"; +@import "modal.less"; + +//PAGES +//------ +@import "mailbox.less"; +@import "lockscreen.less"; +@import "login_and_register.less"; +@import "404_500_errors.less"; +@import "invoice.less"; + +//Skins +//------- +//@import "skins/skin-blue.less"; +//@import "skins/skin-black.less"; +//@import "skins/skin-red.less"; +//@import "skins/skin-green.less"; +//@import "skins/skin-yellow.less"; +//@import "skins/skin-purple.less"; + +//Plugins +//-------- +@import "bootstrap-social.less"; +@import "fullcalendar.less"; + +//Miscellaneous +//------------- +@import "miscellaneous.less"; diff --git a/LNbits/static/build/less/alerts.less b/LNbits/static/build/less/alerts.less new file mode 100644 index 000000000..d76b4e1f4 --- /dev/null +++ b/LNbits/static/build/less/alerts.less @@ -0,0 +1,44 @@ +/* + * Component: alert + * ---------------- + */ + +.alert { + .border-radius(3px); + h4 { + font-weight: 600; + } + .icon { + margin-right: 10px; + } + .close { + color: #000; + .opacity(.2); + &:hover { + .opacity(.5); + } + } + a { + color: #fff; + text-decoration: underline; + } +} + +//Alert Variants +.alert-success { + &:extend(.bg-green); + border-color: darken(@green, 5%); +} +.alert-danger, +.alert-error { + &:extend(.bg-red); + border-color: darken(@red, 5%); +} +.alert-warning { + &:extend(.bg-yellow); + border-color: darken(@yellow, 5%); +} +.alert-info { + &:extend(.bg-aqua); + border-color: darken(@aqua, 5%); +} diff --git a/LNbits/static/build/less/bootstrap-social.less b/LNbits/static/build/less/bootstrap-social.less new file mode 100644 index 000000000..ebfdcbb56 --- /dev/null +++ b/LNbits/static/build/less/bootstrap-social.less @@ -0,0 +1,107 @@ +/* + * Plugin: Social Buttons + * ---------------------- + */ + +// Copyright 2013-2014 Panayiotis Lipiridis +// Licensed under the MIT License +// +// https://github.com/lipis/bootstrap-social + +@bs-height-base: (@line-height-computed + @padding-base-vertical * 2); +@bs-height-lg: (floor(@font-size-large * @line-height-base) + @padding-large-vertical * 2); +@bs-height-sm: (floor(@font-size-small * 1.5) + @padding-small-vertical * 2); +@bs-height-xs: (floor(@font-size-small * 1.2) + @padding-small-vertical + 1); + +.btn-social { + position: relative; + padding-left: @bs-height-base + @padding-base-horizontal!important; + text-align: left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + :first-child { + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: @bs-height-base!important; + line-height: (@bs-height-base + 2)!important; + font-size: 1.6em!important; + text-align: center; + border-right: 1px solid rgba(0, 0, 0, 0.2); + } + &.btn-lg { + padding-left: @bs-height-lg + @padding-large-horizontal!important; + :first-child { + line-height: @bs-height-lg; + width: @bs-height-lg; + font-size: 1.8em; + } + } + &.btn-sm { + padding-left: @bs-height-sm + @padding-small-horizontal!important; + :first-child { + line-height: @bs-height-sm; + width: @bs-height-sm; + font-size: 1.4em; + } + } + &.btn-xs { + padding-left: @bs-height-xs + @padding-small-horizontal!important; + :first-child { + line-height: @bs-height-xs; + width: @bs-height-xs; + font-size: 1.2em; + } + } +} + +.btn-social-icon { + .btn-social; + height: (@bs-height-base + 2); + width: (@bs-height-base + 2); + padding: 0; + :first-child { + border: none; + text-align: center; + width: 100%!important; + } + &.btn-lg { + height: @bs-height-lg; + width: @bs-height-lg; + padding-left: 0; + padding-right: 0; + } + &.btn-sm { + height: (@bs-height-sm + 2); + width: (@bs-height-sm + 2); + padding-left: 0; + padding-right: 0; + } + &.btn-xs { + height: (@bs-height-xs + 2); + width: (@bs-height-xs + 2); + padding-left: 0; + padding-right: 0; + } +} + +.btn-social(@color-bg, @color: white) { + background-color: @color-bg; + .button-variant(@color, @color-bg, rgba(0, 0, 0, 0.2)); +} + + +.btn-bitbucket { .btn-social(#205081); } +.btn-dropbox { .btn-social(#1087dd); } +.btn-facebook { .btn-social(#3b5998); } +.btn-flickr { .btn-social(#ff0084); } +.btn-foursquare { .btn-social(#0072b1); } +.btn-github { .btn-social(#444444); } +.btn-google-plus { .btn-social(#dd4b39); } +.btn-instagram { .btn-social(#3f729b); } +.btn-linkedin { .btn-social(#007bb6); } +.btn-tumblr { .btn-social(#2c4762); } +.btn-twitter { .btn-social(#55acee); } +.btn-vk { .btn-social(#587ea3); } \ No newline at end of file diff --git a/LNbits/static/build/less/boxes.less b/LNbits/static/build/less/boxes.less new file mode 100644 index 000000000..27b6833c0 --- /dev/null +++ b/LNbits/static/build/less/boxes.less @@ -0,0 +1,446 @@ +/* + * Component: Box + * -------------- + */ +.box { + position: relative; + .border-radius(@box-border-radius); + background: #ffffff; + border-top: 3px solid @box-default-border-top-color; + margin-bottom: 20px; + width: 100%; + box-shadow: @box-boxshadow; + + // Box color variations + &.box-primary { + border-top-color: @light-blue; + } + &.box-info { + border-top-color: @aqua; + } + &.box-danger { + border-top-color: @red; + } + &.box-warning { + border-top-color: @yellow; + } + &.box-success { + border-top-color: @green; + } + &.box-default { + border-top-color: @gray; + } + + // collapsed mode + &.collapsed-box { + .box-body, + .box-footer { + display: none; + } + } + + .nav-stacked { + > li { + border-bottom: 1px solid @box-border-color; + margin: 0; + &:last-of-type { + border-bottom: none; + } + } + } + + // fixed height to 300px + &.height-control { + .box-body { + max-height: 300px; + overflow: auto; + } + } + + .border-right { + border-right: 1px solid @box-border-color; + } + .border-left { + border-left: 1px solid @box-border-color; + } + + //SOLID BOX + //--------- + //use this class to get a colored header and borders + + &.box-solid { + border-top: 0px; + > .box-header { + .btn.btn-default { + background: transparent; + } + .btn, + a { + &:hover { + background: rgba(0,0,0,0.1)!important; + } + } + } + + // Box color variations + &.box-default { + .box-solid-variant(@gray, #444); + } + &.box-primary { + .box-solid-variant(@light-blue); + } + &.box-info { + .box-solid-variant(@aqua); + } + &.box-danger { + .box-solid-variant(@red); + } + &.box-warning { + .box-solid-variant(@yellow); + } + &.box-success { + .box-solid-variant(@green); + } + + > .box-header > .box-tools .btn { + border: 0; + box-shadow: none; + } + + // Fix font color for tiles + &[class*='bg'] { + > .box-header { + color: #fff; + } + } + + } + + //BOX GROUP + .box-group { + > .box { + margin-bottom: 5px; + } + } + + + // jQuery Knob in a box + .knob-label { + text-align: center; + color: #333; + font-weight: 100; + font-size: 12px; + margin-bottom: 0.3em; + } + + // Box overlay for LOADING STATE effect + > .overlay, + > .loading-img { + position: absolute; + top: -3px; + left: 0; + width: 100%; + height: 100%; + } + + .overlay { + z-index: 1010; + background: rgba(255, 255, 255, 0.7); + .border-radius(@box-border-radius); + > .fa { + position: absolute; + top: 50%; + left: 50%; + margin-left: -15px; + margin-top: -15px; + color: #000; + font-size: 30px; + } + } + + .overlay.dark { + background: rgba(0, 0, 0, 0.5); + } + +} + +//Box header +.box-header { + //Add top left and top right border radius + .clearfix(); + color: #444; + display: block; + padding: @box-padding; + position: relative; + + //Add bottom border + &.with-border { + border-bottom: 1px solid @box-border-color; + .collapsed-box & { + border-bottom: none; + } + } + + //Icons and box title + > .fa, + > .glyphicon, + > .ion, + .box-title { + display: inline-block; + font-size: 18px; + margin: 0; + line-height: 1; + } + > .fa, + > .glyphicon, + > .ion { + margin-right: 5px; + } + > .box-tools { + position: absolute; + right: 10px; + top: 5px; + [data-toggle="tooltip"] { + position: relative; + } + //float: none!important; + &.pull-right { + .dropdown-menu { + right: 0; + left: auto; + } + } + } +} + +//Box Tools Buttons +.btn-box-tool { + padding: 5px; + font-size: 12px; + background: transparent; + box-shadow: none!important; + color: darken(@box-default-border-top-color, 20%); + .open &, + &:hover { + color: darken(@box-default-border-top-color, 40%); + } + &:active { + outline: none!important; + } +} + +//Box Body +.box-body { + .border-radius(0; 0; @box-border-radius; @box-border-radius); + padding: @box-padding; + .no-header & { + .border-top-radius(@box-border-radius); + } + // Tables within the box body + > .table { + margin-bottom: 0; + } + + // Charts + > .chart { + position: relative; + overflow: hidden; + width: 100%; + svg, + canvas { + width: 100%!important; + } + } + + // Calendar within the box body + .fc { + margin-top: 5px; + } + + .full-width-chart { + margin: -19px; + } + &.no-padding .full-width-chart { + margin: -9px; + } + + .box-pane { + .border-radius(0; 0; @box-border-radius; 0); + } + .box-pane-right { + .border-radius(0; 0; 0; @box-border-radius); + } +} + +//Box footer +.box-footer { + .border-radius(0; 0; @box-border-radius; @box-border-radius); + border-top: 1px solid @box-border-color; + padding: @box-padding; + background-color: @box-footer-bg; +} +.chart-legend { + &:extend(.list-unstyled); + margin: 10px 0; + > li { + @media (max-width: @screen-sm-max) { + float: left; + margin-right: 10px; + } + } +} + +//Widgets +//----------- + +/* Widget: TODO LIST */ + +.todo-list { + margin: 0; + padding: 0px 0px; + list-style: none; + overflow: auto; + // Todo list element + > li { + .border-radius(2px); + padding: 10px; + background: #f4f4f4; + margin-bottom: 2px; + border-left: 2px solid #e6e7e8; + color: #444; + &:last-of-type { + margin-bottom: 0; + } + // Color varaity + &.danger { + border-left-color: @red; + } + &.warning { + border-left-color: @yellow; + } + &.info { + border-left-color: @aqua; + } + &.success { + border-left-color: @green; + } + &.primary { + border-left-color: @light-blue; + } + + > input[type='checkbox'] { + margin: 0 10px 0 5px; + } + + .text { + display: inline-block; + margin-left: 5px; + font-weight: 600; + } + + // Time labels + .label { + margin-left: 10px; + font-size: 9px; + } + + // Tools and options box + .tools { + display: none; + float: right; + color: @red; + // icons + > .fa, > .glyphicon, > .ion { + margin-right: 5px; + cursor: pointer; + } + + } + &:hover .tools { + display: inline-block; + } + + &.done { + color: #999; + .text { + text-decoration: line-through; + font-weight: 500; + } + + .label { + background: @gray!important; + } + } + } + + .handle { + display: inline-block; + cursor: move; + margin: 0 5px; + } + +} +// END TODO WIDGET + +/* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/ +.chat { + padding: 5px 20px 5px 10px; + + .item { + .clearfix(); + margin-bottom: 10px; + // The image + > img { + //display: inline-block; + width: 40px; + height: 40px; + border: 2px solid transparent; + .border-radius(50%)!important; + &.online { + border: 2px solid @green; + } + &.offline { + border: 2px solid @red; + } + } + + // The message body + > .message { + margin-left: 55px; + margin-top: -40px; + > .name { + display: block; + font-weight: 600; + } + } + + // The attachment + > .attachment { + .border-radius(@attachment-border-radius); + background: #f4f4f4; + margin-left: 65px; + margin-right: 15px; + padding: 10px; + > h4 { + margin: 0 0 5px 0; + font-weight: 600; + font-size: 14px; + } + > p, > .filename { + font-weight: 600; + font-size: 13px; + font-style: italic; + margin: 0; + + } + .clearfix(); + } + } + +} +//END CHAT WIDGET + +//Input in box +.box-input { + max-width: 200px; +} \ No newline at end of file diff --git a/LNbits/static/build/less/buttons.less b/LNbits/static/build/less/buttons.less new file mode 100644 index 000000000..ee161c62e --- /dev/null +++ b/LNbits/static/build/less/buttons.less @@ -0,0 +1,157 @@ +/* + * Component: Button + * ----------------- + */ + +.btn { + .border-radius(@btn-border-radius); + .box-shadow(@btn-boxshadow); + border: 1px solid transparent; + + &.uppercase { + text-transform: uppercase + } + + // Flat buttons + &.btn-flat { + .border-radius(0); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + border-width: 1px; + } + + // Active state + &:active { + -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,.125); + -moz-box-shadow: inset 0 3px 5px rgba(0,0,0,.125); + box-shadow: inset 0 3px 5px rgba(0,0,0,.125); + } + + &:focus { + outline: none; + } + + // input file btn + &.btn-file { + position: relative; + overflow: hidden; + > input[type='file'] { + position: absolute; + top: 0; + right: 0; + min-width: 100%; + min-height: 100%; + font-size: 100px; + text-align: right; + .opacity(0); + outline: none; + background: white; + cursor: inherit; + display: block; + } + } +} + +//Button color variations +.btn-default { + background-color: #f4f4f4; + color: #444; + border-color: #ddd; + &:hover, &:active, &.hover { + background-color:darken(#f4f4f4, 5%)!important; + } +} +.btn-primary { + background-color: @light-blue; + border-color: darken(@light-blue, 5%); + &:hover, &:active, &.hover { + background-color: darken(@light-blue, 5%); + } +} +.btn-success { + background-color: @green; + border-color: darken(@green, 5%); + &:hover, &:active, &.hover { + background-color: darken(@green, 5%); + } +} +.btn-info { + background-color: @aqua; + border-color: darken(@aqua, 5%); + &:hover, &:active, &.hover { + background-color: darken(@aqua, 5%); + } +} +.btn-danger { + background-color: @red; + border-color: darken(@red, 5%); + &:hover, &:active, &.hover { + background-color: darken(@red, 5%); + } +} +.btn-warning { + background-color: @yellow; + border-color: darken(@yellow, 5%); + &:hover, &:active, &.hover { + background-color: darken(@yellow, 5%); + } +} +.btn-outline { + border: 1px solid #fff; + background: transparent; + color: #fff; + &:hover, + &:focus, + &:active { + color: rgba(255,255,255,.7); + border-color: rgba(255,255,255,.7); + } +} +.btn-link { + .box-shadow(none); +} +//General .btn with bg class +.btn[class*='bg-']:hover { + .box-shadow(inset 0 0 100px rgba(0,0,0,0.2)); +} +// Application buttons +.btn-app { + .border-radius(3px); + position: relative; + padding: 15px 5px; + margin: 0 0 10px 10px; + min-width: 80px; + height: 60px; + text-align: center; + color: #666; + border: 1px solid #ddd; + background-color: #f4f4f4; + font-size: 12px; + //Icons within the btn + > .fa, > .glyphicon, > .ion { + font-size: 20px; + display: block; + } + + &:hover { + background: #f4f4f4; + color: #444; + border-color: #aaa; + } + + &:active, &:focus { + -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,.125); + -moz-box-shadow: inset 0 3px 5px rgba(0,0,0,.125); + box-shadow: inset 0 3px 5px rgba(0,0,0,.125); + } + + //The badge + > .badge { + position: absolute; + top: -3px; + right: -10px; + font-size: 10px; + font-weight: 400; + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/callout.less b/LNbits/static/build/less/callout.less new file mode 100644 index 000000000..633189068 --- /dev/null +++ b/LNbits/static/build/less/callout.less @@ -0,0 +1,48 @@ +/* + * Component: Callout + * ------------------ + */ + +// Base styles (regardless of theme) +.callout { + .border-radius(3px); + margin: 0 0 20px 0; + padding: 15px 30px 15px 15px; + border-left: 5px solid #eee; + a { + color: #fff; + text-decoration: underline; + &:hover { + color: #eee; + } + } + h4 { + margin-top: 0; + font-weight: 600; + } + p:last-child { + margin-bottom: 0; + } + code, + .highlight { + background-color: #fff; + } + + // Themes for different contexts + &.callout-danger { + &:extend(.bg-red); + border-color: darken(@red, 10%); + } + &.callout-warning { + &:extend(.bg-yellow); + border-color: darken(@yellow, 10%); + } + &.callout-info { + &:extend(.bg-aqua); + border-color: darken(@aqua, 10%); + } + &.callout-success { + &:extend(.bg-green); + border-color: darken(@green, 10%); + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/carousel.less b/LNbits/static/build/less/carousel.less new file mode 100644 index 000000000..0af39a399 --- /dev/null +++ b/LNbits/static/build/less/carousel.less @@ -0,0 +1,15 @@ +/* + * Component: Carousel + * ------------------- + */ +.carousel-control { + background-image: none!important; + > .fa { + font-size: 40px; + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -20px; + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/core.less b/LNbits/static/build/less/core.less new file mode 100644 index 000000000..e8ec41c21 --- /dev/null +++ b/LNbits/static/build/less/core.less @@ -0,0 +1,175 @@ +/* + * Core: Genral Layout Style + * ------------------------- + */ +html, +body { + min-height: 100%; + .layout-boxed & { + height: 100%; + } +} + +body { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 400; + overflow-x: hidden; + overflow-y: auto; +} + +/* Layout */ +.wrapper { + .clearfix(); + min-height: 100%; + position: static; + overflow: hidden; + .layout-boxed & { + max-width: 1250px; + margin: 0 auto; + min-height: 100%; + box-shadow: 0 0 8px rgba(0,0,0,0.5); + position: relative; + } +} + +.layout-boxed { + background: url('../img/boxed-bg.jpg') repeat fixed; +} + +/* + * Content Wrapper - contins main content + * ```.right-side has been deprecated as of v2.0 in favor of .content-wrapper ``` + */ +.content-wrapper, +.right-side, +.main-footer { + .transition-transform(@transition-speed @transition-fn); + .transition(margin-left @transition-speed @transition-fn); + margin-left: @sidebar-width; + z-index: 820; + //Top nav layout + .layout-top-nav & { + margin-left: 0; + } + @media (max-width: @screen-xs-max) { + margin-left: 0; + } + //When opening the sidebar on large screens + .sidebar-collapse & { + @media (min-width: @screen-sm) { + margin-left: 0; + } + } + //When opening the sidebar on small screens + .sidebar-open & { + @media (max-width: @screen-xs-max) { + .translate(@sidebar-width, 0); + } + } +} + +.content-wrapper, +.right-side { + min-height: 100%; + background-color: @body-bg; + z-index: 800; +} +.main-footer { + background: #fff; + padding: 15px; + color: #444; + border-top: 1px solid #eee; +} + +/* Fixed layout */ +.fixed { + .main-header, + .main-sidebar, + .left-side { + position: fixed; + } + .main-header { + top: 0; + right: 0; + left: 0; + } + .content-wrapper, + .right-side { + padding-top: 50px; + @media (max-width: @screen-header-collapse) { + padding-top: 100px; + } + } + &.layout-boxed { + .wrapper { + max-width: 100%; + } + } +} + +/* Content */ +.content { + min-height: 250px; + padding: 15px; + .container-fixed(@grid-gutter-width); +} + +/* H1 - H6 font */ +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: 'Source Sans Pro', sans-serif; +} +/* General Links */ +a { + color: @link-color; +} +a:hover, a:active, a:focus { + outline: none; + text-decoration: none; + color: @link-hover-color; +} + +/* Page Header */ +.page-header { + margin: 10px 0 20px 0; + font-size: 22px; + + > small { + color: #666; + display: block; + margin-top: 5px; + } +} + +/* Don't display when printing */ +@media print { + //Add to elements that you do not want to show when printing + .no-print { + display: none; + } + + //Elements that we want to hide when printing + .main-sidebar, + .left-side, + .main-header, + .content-header { + display: none; + } + //This is the only element that should appear, so let's remove the margins + .content-wrapper, + .right-side { + margin: 0!important; + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/direct-chat.less b/LNbits/static/build/less/direct-chat.less new file mode 100644 index 000000000..f23e48025 --- /dev/null +++ b/LNbits/static/build/less/direct-chat.less @@ -0,0 +1,175 @@ +/* + * Component: Direct Chat + * ---------------------- + */ +.direct-chat { + .box-body { + .border-bottom-radius(0); + position: relative; + overflow-x: hidden; + padding: 0; + } + &.chat-pane-open { + .direct-chat-contacts { + .translate(0, 0); + } + } +} +.direct-chat-messages { + .translate(0, 0); + padding: 10px; + height: 250px; + overflow: auto; +} +.direct-chat-msg, +.direct-chat-text { + display: block; +} +.direct-chat-msg { + .clearfix(); + margin-bottom: 10px; +} +.direct-chat-messages, +.direct-chat-contacts { + .transition-transform(.5s ease-in-out); +} +.direct-chat-text { + .border-radius(5px); + position: relative; + padding: 5px 10px; + background: @direct-chat-default-msg-bg; + border: 1px solid @direct-chat-default-msg-border-color; + margin: 5px 0 0 50px; + color: @direct-chat-default-font-color; + + //Create the arrow + &:after, + &:before { + position: absolute; + right: 100%; + top: 15px; + border: solid transparent; + border-right-color: @direct-chat-default-msg-border-color; + content: ' '; + height: 0; + width: 0; + pointer-events: none; + } + + &:after { + border-width: 5px; + margin-top: -5px; + } + &:before { + border-width: 6px; + margin-top: -6px; + } + .right & { + margin-right: 50px; + margin-left: 0; + &:after, + &:before { + right: auto; + left: 100%; + border-right-color: transparent; + border-left-color: @direct-chat-default-msg-border-color; + } + } +} +.direct-chat-img { + .border-radius(50%); + float: left; + width: 40px; + height: 40px; + .right & { + float: right; + } +} +.direct-chat-info { + display: block; + margin-bottom: 2px; + font-size: 12px; +} +.direct-chat-name { + font-weight: 600; +} +.direct-chat-timestamp { + color: #999; +} +//Direct chat contacts pane +.direct-chat-contacts-open { + /*.direct-chat-messages { + .translate(-101%, 0); + }*/ + .direct-chat-contacts { + .translate(0, 0); + } +} +.direct-chat-contacts { + .translate(101%, 0); + position: absolute; + top: 0; + bottom: 0; + height: 250px; + width: 100%; + background: #222d32; + color: #fff; + overflow: auto; +} + +//Contacts list -- for displaying contacts in direct chat contacts pane +.contacts-list { + &:extend(.list-unstyled); + > li { + .clearfix(); + border-bottom: 1px solid rgba(0,0,0,0.2); + padding: 10px; + margin: 0; + &:last-of-type { + border-bottom: none; + } + } +} +.contacts-list-img { + .border-radius(50%); + width: 40px; + float: left; +} +.contacts-list-info { + margin-left: 45px; + color: #fff; +} +.contacts-list-name, +.contacts-list-status { + display: block; +} +.contacts-list-name { + font-weight: 600; +} +.contacts-list-status { + font-size: 12px; +} +.contacts-list-date { + color: #aaa; + font-weight: normal; +} +.contacts-list-msg { + color: #999; +} + +//Direct Chat Variants +.direct-chat-danger { + .direct-chat-variant(@red); +} +.direct-chat-primary { + .direct-chat-variant(@light-blue); +} +.direct-chat-warning { + .direct-chat-variant(@yellow); +} +.direct-chat-info { + .direct-chat-variant(@aqua); +} +.direct-chat-success { + .direct-chat-variant(@green); +} \ No newline at end of file diff --git a/LNbits/static/build/less/dropdown.less b/LNbits/static/build/less/dropdown.less new file mode 100644 index 000000000..ca4ab60c5 --- /dev/null +++ b/LNbits/static/build/less/dropdown.less @@ -0,0 +1,342 @@ +/* + * Component: Dropdown menus + * ------------------------- + */ + +/*Dropdowns in general*/ +.dropdown-menu { + box-shadow: @box-boxshadow; + border-color: #eee; + > li > a { + color: #777; + } + > li > a > .glyphicon, + > li > a > .fa, + > li > a > .ion{ + margin-right: 10px; + } + > li > a:hover { + background-color: lighten(@gray, 5%); + color: #333; + } + > .divider { + background-color: #eee; + } +} + +/* + Navbar custom dropdown menu +------------------------------------ +*/ +.navbar-nav > .notifications-menu, +.navbar-nav > .messages-menu, +.navbar-nav > .tasks-menu { + position: relative; + //fix width and padding + > .dropdown-menu { + > li { + position: relative; + } + width: 280px; + //Remove padding and margins + padding: 0 0 0 0!important; + margin: 0!important; + top: 100%; + //.border-radius(4px)!important; + } + //Define header class + > .dropdown-menu > li.header { + .border-radius(4px; 4px; 0; 0); + background-color: #ffffff; + padding: 7px 10px; + border-bottom: 1px solid #f4f4f4; + color: #444444; + font-size: 14px; + } + + + //Define footer class + > .dropdown-menu > li.footer > a { + .border-radius(0px; 0px; 4px; 4px); + font-size: 12px; + background-color: #fff; + padding: 7px 10px; + border-bottom: 1px solid #eeeeee; + color: #444!important; + @media (max-width: @screen-sm-max) { + background: #fff!important; + color: #444!important; + } + text-align: center; + //Hover state + &:hover { + text-decoration: none; + font-weight: normal; + } + } + + //Clear inner menu padding and margins + > .dropdown-menu > li .menu { + max-height: 200px; + margin: 0; + padding: 0; + list-style: none; + overflow-x: hidden; + > li > a { + display: block; + white-space: nowrap; /* Prevent text from breaking */ + border-bottom: 1px solid #f4f4f4; + // Hove state + &:hover { + background: #f4f4f4; + text-decoration: none; + } + } + } +} + +//Notifications menu +.navbar-nav > .notifications-menu { + > .dropdown-menu > li .menu { + // Links inside the menu + > li > a { + color: #444444; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding: 10px; + // Icons inside the menu + > .glyphicon, + > .fa, + > .ion { + width: 20px; + } + } + + } +} + +//Messages menu +.navbar-nav > .messages-menu { + //Inner menu + > .dropdown-menu > li .menu { + // Messages menu item + > li > a { + margin: 0px; + //line-height: 20px; + padding: 10px 10px; + // User image + > div > img { + margin: auto 10px auto auto; + width: 40px; + height: 40px; + } + // Message heading + > h4 { + padding: 0; + margin: 0 0 0 45px; + color: #444444; + font-size: 15px; + position: relative; + // Small for message time display + > small { + color: #999999; + font-size: 10px; + position: absolute; + top: 0px; + right: 0px; + } + } + + > p { + margin: 0 0 0 45px; + font-size: 12px; + color: #888888; + } + + .clearfix(); + + } + + } +} +//Tasks menu +.navbar-nav > .tasks-menu { + > .dropdown-menu > li .menu { + > li > a { + padding: 10px; + + > h3 { + font-size: 14px; + padding: 0; + margin: 0 0 10px 0; + color: #666666; + } + + > .progress { + padding: 0; + margin: 0; + } + } + } +} +//User menu +.navbar-nav > .user-menu { + > .dropdown-menu { + .border-radius(0); + padding: 1px 0 0 0; + border-top-width: 0; + width: 280px; + // Header menu + > li.user-header { + height: 175px; + padding: 10px; + text-align: center; + // User image + > img { + z-index: 5; + height: 90px; + width: 90px; + border: 3px solid; + border-color: transparent; + border-color: rgba(255, 255, 255, 0.2); + } + > p { + z-index: 5; + color: #fff; + color: rgba(255, 255, 255, 0.8); + font-size: 17px; + //text-shadow: 2px 2px 3px #333333; + margin-top: 10px; + > small { + display: block; + font-size: 12px; + } + } + } + + // Menu Body + > .user-body { + padding: 15px; + border-bottom: 1px solid #f4f4f4; + border-top: 1px solid #dddddd; + .clearfix(); + a { + color: #444 !important; + @media (max-width: @screen-sm-max) { + background: #fff !important; + color: #444 !important; + } + } + } + + // Menu Footer + > .user-footer { + background-color: #f9f9f9; + padding: 10px; + .clearfix(); + .btn-default { + color: #666666; + } + } + } + .user-image { + float: left; + width: 25px; + height: 25px; + border-radius: 50%; + margin-right: 10px; + margin-top: -2px; + @media (max-width: @screen-xs-max) { + float: none; + margin-right: 0; + margin-top: -8px; + line-height: 10px; + } + } +} + +/* Add fade animation to dropdown menus by appending + the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/ +.open:not(.dropup) > .animated-dropdown-menu { + backface-visibility: visible !important; + .animation(flipInX .7s both); + +} +@keyframes flipInX { + 0% { + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transition-timing-function: ease-in; + opacity: 0; + } + + 40% { + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transition-timing-function: ease-in; + } + + 60% { + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + 100% { + transform: perspective(400px); + } +} +@-webkit-keyframes flipInX { + 0% { + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transition-timing-function: ease-in; + opacity: 0; + } + + 40% { + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transition-timing-function: ease-in; + } + + 60% { + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + 100% { + transform: perspective(400px); + } +} + +/* Fix dropdown menu in navbars */ +.navbar-custom-menu > .navbar-nav { + > li { + position: relative; + > .dropdown-menu { + position: absolute; + right: 0; + left: auto; + } + } + } +@media (max-width: @screen-sm-max) { + .navbar-custom-menu > .navbar-nav { + float: right; + > li { + position: static; + > .dropdown-menu { + position: absolute; + right: 5%; + left: auto; + border: 1px solid #ddd; + background: #fff; + } + } + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/forms.less b/LNbits/static/build/less/forms.less new file mode 100644 index 000000000..109235bb1 --- /dev/null +++ b/LNbits/static/build/less/forms.less @@ -0,0 +1,82 @@ +/* + * Component: Form + * --------------- + */ +.form-control { + .border-radius(@input-radius)!important; + box-shadow: none; + border-color: @gray; + &:focus { + border-color: @light-blue !important; + box-shadow: none; + } + &::-moz-placeholder { + color: #bbb; + opacity: 1; + } + &:-ms-input-placeholder { + color: #bbb; + } + &::-webkit-input-placeholder { + color: #bbb; + } + + &:not(select) { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + } +} + +.form-group { + &.has-success { + label { + color: @green; + } + .form-control { + border-color: @green !important; + box-shadow: none; + } + } + + &.has-warning { + label { + color: @yellow; + } + .form-control { + border-color: @yellow !important; + box-shadow: none; + } + } + + &.has-error { + label { + color: @red; + } + .form-control { + border-color: @red !important; + box-shadow: none; + } + } +} + +/* Input group */ +.input-group { + .input-group-addon { + .border-radius(@input-radius); + border-color: @gray; + background-color: #fff; + } +} +/* button groups */ +.btn-group-vertical { + .btn { + &.btn-flat:first-of-type, &.btn-flat:last-of-type { + .border-radius(0); + } + } +} + +.icheck > label { + padding-left: 0; +} \ No newline at end of file diff --git a/LNbits/static/build/less/fullcalendar.less b/LNbits/static/build/less/fullcalendar.less new file mode 100644 index 000000000..5acbb51ca --- /dev/null +++ b/LNbits/static/build/less/fullcalendar.less @@ -0,0 +1,88 @@ +/* + * Plugin: Full Calendar + * --------------------- + */ +//Fullcalendar buttons +.fc-button { + background: #f4f4f4; + background-image: none; + color: #444; + border-color: #ddd; + border-bottom-color: #ddd; + &:hover, + &:active, + &.hover { + background-color: #e9e9e9; + } +} +// Calendar title +.fc-header-title h2 { + font-size: 15px; + line-height: 1.6em; + color: #666; + margin-left: 10px; +} +.fc-header-right { + padding-right: 10px; +} +.fc-header-left { + padding-left: 10px; +} +// Calendar table header cells +.fc-widget-header { + background: #fafafa; +} +.fc-grid { + width: 100%; + border: 0; +} +.fc-widget-header:first-of-type, +.fc-widget-content:first-of-type { + border-left: 0; + border-right: 0; +} +.fc-widget-header:last-of-type, +.fc-widget-content:last-of-type { + border-right: 0; +} +.fc-toolbar { + padding: @box-padding; + margin: 0; +} +.fc-day-number { + font-size: 20px; + font-weight: 300; + padding-right: 10px; +} +.fc-color-picker { + list-style: none; + margin: 0; + padding: 0; + > li { + float: left; + font-size: 30px; + margin-right: 5px; + line-height: 30px; + .fa { + .transition-transform(linear .3s); + &:hover { + .rotate(30deg); + } + } + } +} +#add-new-event { + .transition(all linear .3s); +} +.external-event { + padding: 5px 10px; + font-weight: bold; + margin-bottom: 4px; + box-shadow: @box-boxshadow; + text-shadow: @box-boxshadow; + border-radius: @box-border-radius; + cursor: move; + &:hover { + box-shadow: inset 0 0 90px rgba(0,0,0,0.2); + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/header.less b/LNbits/static/build/less/header.less new file mode 100644 index 000000000..05c413f74 --- /dev/null +++ b/LNbits/static/build/less/header.less @@ -0,0 +1,221 @@ +/* + * Component: Main Header + * ---------------------- + */ + +.main-header { + position: relative; + max-height: 100px; + z-index: 1030; + //Navbar + > .navbar { + margin-bottom: 0; + margin-left: @sidebar-width; + border: none; + min-height: @navbar-height; + border-radius: 0; + .layout-top-nav & { + margin-left: 0!important; + } + } + //Navbar search text input + #navbar-search-input { + background: rgba(255,255,255,.2); + border-color: transparent; + &:focus, + &:active { + border-color: rgba(0,0,0,.1)!important; + background: rgba(255,255,255,.9); + } + &::-moz-placeholder { + color: #ccc; + opacity: 1; + } + &:-ms-input-placeholder { + color: #ccc; + } + &::-webkit-input-placeholder { + color: #ccc; + } + } + //Navbar Right Menu + .navbar-custom-menu, + .navbar-right { + margin-right: 5px; + float: right; + @media (max-width: @screen-sm-max) { + a { + color: inherit; + background: transparent; + } + } + } + .navbar-right { + @media (max-width: @screen-header-collapse) { + float: none; + .navbar-collapse & { + margin: 7.5px -15px; + } + > li { + color: inherit; + border: 0; + } + } + } + //Navbar toggle button + .sidebar-toggle { + float: left; + background-color: transparent; + background-image: none; + padding: @navbar-padding-vertical @navbar-padding-horizontal; + //Add the fontawesome bars icon + font-family: fontAwesome; + &:before { + content: "\f0c9"; + } + &:hover { + color: #fff; + } + } + .sidebar-toggle .icon-bar { + display: none; + } + //Navbar User Menu + .navbar .nav > li.user > a { + > .fa, + > .glyphicon, + > .ion { + margin-right: 5px; + } + } + + //Labels in navbar + .navbar .nav > li > a > .label { + position: absolute; + top: 9px; + right: 7px; + text-align: center; + font-size: 9px; + padding: 2px 3px; + line-height: .9; + } + + //Logo bar + .logo { + display: block; + float: left; + height: 50px; + font-size: 20px; + line-height: 50px; + text-align: center; + width: @sidebar-width; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 0 15px; + font-weight: 300; + } + //Navbar Brand. Alternative logo with layout-top-nav + .navbar-brand { + color: #fff; + } +} + +// Content Header +.content-header { + position: relative; + padding: 15px 15px 0 15px; + // Header Text + > h1 { + margin: 0; + font-size: 24px; + > small { + font-size: 15px; + display: inline-block; + padding-left: 4px; + font-weight: 300; + } + } + + > .breadcrumb { + float: right; + background: transparent; + margin-top: 0px; + margin-bottom: 0; + font-size: 12px; + padding: 7px 5px; + position: absolute; + top: 15px; + right: 10px; + .border-radius(2px); + > li > a { + color: #444; + text-decoration: none; + > .fa, > .glyphicon, > .ion { + margin-right: 5px; + } + } + > li + li:before { + content: '>\00a0'; + } + } + + @media (max-width: @screen-sm-max) { + > .breadcrumb { + position: relative; + margin-top: 5px; + top: 0; + right: 0; + float: none; + background: @gray; + padding-left: 10px; + li:before { + color: darken(@gray, 20%); + } + } + } +} +.navbar-toggle { + color: #fff; + border: 0; + margin: 0; + padding: @navbar-padding-vertical @navbar-padding-horizontal; +} +//Control navbar scaffolding on x-small screens +@media (max-width: @screen-sm-max) { + .navbar-custom-menu .navbar-nav > li { + float: left; + } + //Dont't let links get full width + .navbar-custom-menu .navbar-nav { + margin: 0; + float: left; + } + + .navbar-custom-menu .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + line-height: 20px; + } +} + +// Collapse header +@media (max-width: @screen-header-collapse) { + .main-header { + position: relative; + .logo, + .navbar { + width: 100%; + float: none; + position: relative!important; + } + .navbar { + margin: 0; + } + .navbar-custom-menu { + float: right; + } + } + .main-sidebar, + .left-side { + padding-top: 100px!important; + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/info-box.less b/LNbits/static/build/less/info-box.less new file mode 100644 index 000000000..b952f1bb0 --- /dev/null +++ b/LNbits/static/build/less/info-box.less @@ -0,0 +1,63 @@ +/* + * Component: Info Box + * ------------------- + */ +.info-box { + display: block; + min-height: 90px; + background: #fff; + width: 100%; + box-shadow: @box-boxshadow; + .border-radius(2px); + margin-bottom: 15px; + small { + font-size: 14px; + } + .progress { + background: rgba(0,0,0,.2); + margin: 5px -10px 5px -10px; + height: 2px; + &, + & .progress-bar { + .border-radius(0); + } + .progress-bar { + background: #fff; + } + } +} +.info-box-icon { + .border-radius(2px; 0; 2px; 0); + display: block; + float: left; + height: 90px; + width: 90px; + text-align: center; + font-size: 45px; + line-height: 90px; + background: rgba(0,0,0,0.2); +} +.info-box-content { + padding: 5px 10px; + margin-left: 90px; +} +.info-box-number { + display: block; + font-weight: bold; + font-size: 18px; +} +.progress-description, +.info-box-text { + display: block; + font-size: 14px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.info-box-more { + display: block; +} + +.progress-description { + margin: 0; +} \ No newline at end of file diff --git a/LNbits/static/build/less/invoice.less b/LNbits/static/build/less/invoice.less new file mode 100644 index 000000000..8ffc60052 --- /dev/null +++ b/LNbits/static/build/less/invoice.less @@ -0,0 +1,39 @@ +/* + * Page: Invoice + * ------------- + */ + +.invoice { + position: relative; + background: #fff; + border: 1px solid #f4f4f4; + padding: 20px; + margin: 10px 25px; +} + +.invoice-title { + margin-top: 0; +} + +/* Enhancement for printing */ +@media print { + .invoice { + width: 100%; + border: 0; + margin: 0; + padding: 0; + } + .invoice-col { + float: left; + width: 33.3333333%; + } + + .table-responsive { + overflow: auto; + > .table tr th, + > .table tr td { + white-space: normal!important; + } + } + +} \ No newline at end of file diff --git a/LNbits/static/build/less/labels.less b/LNbits/static/build/less/labels.less new file mode 100644 index 000000000..0852ecaf1 --- /dev/null +++ b/LNbits/static/build/less/labels.less @@ -0,0 +1,23 @@ +/* + * Component: Label + * ---------------- + */ +.label-default { + background-color: @gray; + color: #444; +} +.label-danger { + &:extend(.bg-red); +} +.label-info { + &:extend(.bg-aqua); +} +.label-waring { + &:extend(.bg-yellow); +} +.label-primary { + &:extend(.bg-light-blue); +} +.label-success { + &:extend(.bg-green); +} \ No newline at end of file diff --git a/LNbits/static/build/less/lockscreen.less b/LNbits/static/build/less/lockscreen.less new file mode 100644 index 000000000..db107f696 --- /dev/null +++ b/LNbits/static/build/less/lockscreen.less @@ -0,0 +1,68 @@ +/* + * Page: Lock Screen + * ----------------- + */ +/* ADD THIS CLASS TO THE TAG */ +.lockscreen { + background: @gray; +} +.lockscreen-logo { + font-size: 35px; + text-align: center; + margin-bottom: 25px; + font-weight: 300; + a { + color: #444; + } +} +.lockscreen-wrapper { + max-width: 400px; + margin: 0 auto; + margin-top: 10%; +} +/* User name [optional] */ +.lockscreen .lockscreen-name { + text-align: center; + font-weight: 600; +} +/* Will contain the image and the sign in form */ +.lockscreen-item { + .border-radius(4px); + padding: 0; + background: #fff; + position: relative; + margin: 10px auto 30px auto; + width: 290px; +} +/* User image */ +.lockscreen-image { + .border-radius(50%); + position: absolute; + left: -10px; + top: -25px; + background: #fff; + padding: 5px; + z-index: 10; + > img { + .border-radius(50%); + width: 70px; + height: 70px; + } +} + +/* Contains the password input and the login button */ +.lockscreen-credentials { + margin-left: 70px; + .form-control { + border: 0 !important; + } + .btn { + background-color: #fff; + border: 0; + padding: 0 10px; + } +} + +.lockscreen-footer { + margin-top: 10px; +} \ No newline at end of file diff --git a/LNbits/static/build/less/login_and_register.less b/LNbits/static/build/less/login_and_register.less new file mode 100644 index 000000000..3e7775be0 --- /dev/null +++ b/LNbits/static/build/less/login_and_register.less @@ -0,0 +1,51 @@ +/* + * Page: Login & Register + * ---------------------- + */ + +.login-logo, +.register-logo { + font-size: 35px; + text-align: center; + margin-bottom: 25px; + font-weight: 300; + a { + color: #444; + } +} + +.login-page, +.register-page { + background: @gray; +} + +.login-box, +.register-box { + width: 360px; + margin: 7% auto; + @media (max-width: @screen-sm) { + width: 90%; + margin-top: 20px; + } +} + +.login-box-body, +.register-box-body { + background: #fff; + padding: 20px; + color: #444; + border-top: 0; + color: #666; + .form-control-feedback { + color: #777; + } +} +.login-box-msg, +.register-box-msg { + margin: 0; + text-align: center; + padding: 0 20px 20px 20px; +} +.social-auth-links { + margin: 10px 0; +} \ No newline at end of file diff --git a/LNbits/static/build/less/mailbox.less b/LNbits/static/build/less/mailbox.less new file mode 100644 index 000000000..67e33919b --- /dev/null +++ b/LNbits/static/build/less/mailbox.less @@ -0,0 +1,136 @@ +/* + * Page: Mailbox + * ------------- + */ +.mailbox-messages { + > .table { + margin: 0; + } +} +.mailbox-controls { + padding: 5px; + &.with-border { + border-bottom: 1px solid @box-border-color; + } +} +.mailbox-read-info { + border-bottom: 1px solid @box-border-color; + padding: 10px; + h3 { + font-size: 20px; + margin: 0; + } + h5 { + margin: 0; + padding: 5px 0 0 0; + } +} +.mailbox-read-time { + color: #999; + font-size: 13px; +} +.mailbox-read-message { + padding: 10px; +} +.mailbox-attachments { + &:extend(.list-unstyled); + li { + float: left; + width: 200px; + border: 1px solid #eee; + margin-bottom: 10px; + margin-right: 10px; + } +} +.mailbox-attachment-name { + font-weight: bold; + color: #666; +} +.mailbox-attachment-icon, +.mailbox-attachment-info, +.mailbox-attachment-size { + display: block; +} +.mailbox-attachment-info { + padding: 10px; + background: #f4f4f4; +} +.mailbox-attachment-size { + color: #999; + font-size: 12px; +} +.mailbox-attachment-icon { + text-align: center; + font-size: 65px; + color: #666; + padding: 20px 10px; + &.has-img { + padding: 0; + > img { + max-width: 100%; + height: auto; + } + } +} +.mailbox-attachment-close { + &:extend(.close); +} + +// ``` These are the rules of the old mailbox, which is now deprecated and will be removed in the a future release ``` +.mailbox { + .table-mailbox { + border-left: 1px solid @box-border-color; + border-right: 1px solid @box-border-color; + border-bottom: 1px solid @box-border-color; + tr { + &.unread { + > td { + background-color: rgba(0, 0, 0, 0.05); + color: #000; + font-weight: 600; + } + } + > td > .fa.fa-star, + > td > .fa.fa-star-o, + > td > .glyphicon.glyphicon-star, + > td > .glyphicon.glyphicon-star-empty{ + color: @yellow; + cursor: pointer; + } + + > td.small-col { + width: 30px; + } + + > td.name { + width: 150px; + font-weight: 600; + } + > td.time { + text-align: right; + width: 100px; + } + > td { + white-space: nowrap; + } + + & > td > a {color: #444;} + } + } + + @media (max-width: @screen-sm-max) { + .nav-stacked { + > li:not(.header) { + float: left; + width: 50%; + &.header { + border: 0!important; + } + } + } + + .search-form { + margin-top: 10px; + } + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/miscellaneous.less b/LNbits/static/build/less/miscellaneous.less new file mode 100644 index 000000000..80f0f034d --- /dev/null +++ b/LNbits/static/build/less/miscellaneous.less @@ -0,0 +1,345 @@ +/* + * General: Miscellaneous + * ---------------------- + */ +/* 10px padding and margins */ +.pad { + padding: 10px; +} +.margin { + margin: 10px; +} +.margin-bottom { + margin-bottom: 20px; +} +/* Display inline */ +.inline { + display: inline; + width: auto; +} + +/* Description Blocks */ +.description-block { + display: block; + margin: 10px 0; + text-align: center; + &.margin-bottom { + margin-bottom: 25px; + } + > .description-header { + margin: 0; + padding: 0; + font-weight: 600; + font-size: 16px; + } + > .description-text { + text-transform: uppercase; + } +} + +/* Background colors */ +.bg-red, +.bg-yellow, +.bg-aqua, +.bg-blue, +.bg-light-blue, +.bg-green, +.bg-navy, +.bg-teal, +.bg-olive, +.bg-lime, +.bg-orange , +.bg-fuchsia, +.bg-purple, +.bg-maroon, +.bg-black, +.bg-red-active, +.bg-yellow-active, +.bg-aqua-active, +.bg-blue-active, +.bg-light-blue-active, +.bg-green-active, +.bg-navy-active, +.bg-teal-active, +.bg-olive-active, +.bg-lime-active, +.bg-orange-active, +.bg-fuchsia-active, +.bg-purple-active, +.bg-maroon-active, +.bg-black-active { + color: #fff !important; +} +.bg-gray { + color: #000; + background-color: @gray!important; +} +.bg-black { + background-color: @black!important; +} +.bg-red { + background-color: @red !important; +} +.bg-yellow { + background-color: @yellow !important; +} +.bg-aqua { + background-color: @aqua !important; +} +.bg-blue { + background-color: @blue !important; +} +.bg-light-blue { + background-color: @light-blue !important; +} +.bg-green { + background-color: @green !important; +} +.bg-navy { + background-color: @navy !important; +} +.bg-teal { + background-color: @teal !important; +} +.bg-olive { + background-color: @olive !important; +} +.bg-lime { + background-color: @lime !important; +} +.bg-orange { + background-color: @orange !important; +} +.bg-fuchsia { + background-color: @fuchsia !important; +} +.bg-purple { + background-color: @purple !important; +} +.bg-maroon { + background-color: @maroon !important; +} + +//Set of Active Background Colors +.bg-gray-active { + color: #000; + background-color: darken(@gray,10%)!important; +} +.bg-black-active { + background-color: darken(@black, 10%)!important; +} +.bg-red-active { + background-color: darken(@red , 6%)!important; +} +.bg-yellow-active { + background-color: darken(@yellow , 6%)!important; +} +.bg-aqua-active { + background-color: darken(@aqua , 6%)!important; +} +.bg-blue-active { + background-color: darken(@blue , 10%)!important; +} +.bg-light-blue-active { + background-color: darken(@light-blue , 6%)!important; +} +.bg-green-active { + background-color: darken(@green , 5%)!important; +} +.bg-navy-active { + background-color: darken(@navy , 2%)!important; +} +.bg-teal-active { + background-color: darken(@teal , 5%)!important; +} +.bg-olive-active { + background-color: darken(@olive , 5%)!important; +} +.bg-lime-active { + background-color: darken(@lime , 5%)!important; +} +.bg-orange-active { + background-color: darken(@orange , 5%)!important; +} +.bg-fuchsia-active { + background-color: darken(@fuchsia , 5%)!important; +} +.bg-purple-active { + background-color: darken(@purple , 5%)!important; +} +.bg-maroon-active { + background-color: darken(@maroon , 3%)!important; +} + +//Disabled! +[class^="bg-"].disabled { + .opacity(.65); +} + +/* Text colors */ +.text-red { + color: @red !important; +} +.text-yellow { + color: @yellow !important; +} +.text-aqua { + color: @aqua !important; +} +.text-blue { + color: @blue !important; +} +.text-black { + color: @black!important; +} +.text-light-blue { + color: @light-blue !important; +} +.text-green { + color: @green !important; +} +.text-gray { + color: @gray !important; +} +.text-navy { + color: @navy !important; +} +.text-teal { + color: @teal !important; +} +.text-olive { + color: @olive !important; +} +.text-lime { + color: @lime !important; +} +.text-orange { + color: @orange !important; +} +.text-fuchsia { + color: @fuchsia !important; +} +.text-purple { + color: @purple !important; +} +.text-maroon { + color: @maroon !important; +} + +/*Hide elements by display none only*/ +.hide { + display: none !important; +} + +/* Remove borders */ +.no-border { + border: 0px !important; +} +/* Remove padding */ +.no-padding { + padding: 0px !important; +} +/* Remove margins */ +.no-margin { + margin: 0px !important; +} + +/* Remove box shadow */ +.no-shadow { + box-shadow: none!important; +} + +/* Unstyled List */ +.list-unstyled { + list-style: none; + margin: 0; + padding: 0; +} + +/* Remove border radius */ +.flat { + .border-radius(0)!important; +} + +.text-bold { + &, &.table td, &.table th { + font-weight: 700; + } + + +} + +/* _fix for sparkline tooltip */ +.jqstooltip{ + padding: 5px!important; + width:auto!important; + height:auto!important; +} + +/* +Gradient Background colors +*/ +.bg-teal-gradient { + .gradient(@teal; @teal; lighten(@teal, 16%))!important; + color: #fff; +} +.bg-light-blue-gradient { + .gradient(@light-blue; @light-blue; lighten(@light-blue, 12%))!important; + color: #fff; +} +.bg-blue-gradient { + .gradient(@blue; @blue; lighten(@blue, 7%))!important; + color: #fff; +} +.bg-aqua-gradient { + .gradient(@aqua; @aqua; lighten(@aqua, 7%))!important; + color: #fff; +} +.bg-yellow-gradient { + .gradient(@yellow; @yellow; lighten(@yellow, 16%))!important; + color: #fff; +} +.bg-purple-gradient { + .gradient(@purple; @purple; lighten(@purple, 16%))!important; + color: #fff; +} +.bg-green-gradient { + .gradient(@green; @green; lighten(@green, 7%))!important; + color: #fff; +} +.bg-red-gradient { + .gradient(@red; @red; lighten(@red, 10%))!important; + color: #fff; +} +.bg-black-gradient { + .gradient(@black; @black; lighten(@black, 10%))!important; + color: #fff; +} +.bg-maroon-gradient { + .gradient(@maroon; @maroon; lighten(@maroon, 10%))!important; + color: #fff; +} +.connectedSortable { + min-height: 100px; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.sort-highlight { + background: #f4f4f4; + border: 1px dashed #ddd; + margin-bottom: 10px; +} +.full-opacity-hover { + .opacity(.65); + &:hover { + .opacity(1); + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/mixins.less b/LNbits/static/build/less/mixins.less new file mode 100644 index 000000000..61daa6bf9 --- /dev/null +++ b/LNbits/static/build/less/mixins.less @@ -0,0 +1,105 @@ +//AdminLTE mixins +//=============== + +//Changes the color and the hovering properties of the navbar +.navbar-variant(@color; @font-color: rgba(255, 255, 255, 0.8); @hover-color: #f6f6f6; @hover-bg: rgba(0, 0, 0, 0.1)) { + background-color: @color; + //Navbar links + .nav > li > a { + color: @font-color; + } + + .nav > li > a:hover, + .nav > li > a:active, + .nav > li > a:focus, + .nav .open > a, + .nav .open > a:hover, + .nav .open > a:focus { + background: @hover-bg; + color: @hover-color; + } + + .navbar-custom-menu > .nav { + margin-right: 10px; + } + //Add color to the sidebar toggle button + .sidebar-toggle { + color: @font-color; + &:hover { + color: @hover-color; + background: @hover-bg; + } + } +} + +//Logo color variation +.logo-variant(@bg-color; @color: #fff; @border-bottom-color: transparent; @border-bottom-width: 0px) { + background-color: @bg-color; + color: @color; + border-bottom: @border-bottom-width solid @border-bottom-color; + > a { + color: @color; + } + + &:hover { + background: darken(@bg-color, 1%); + } +} + +//Box solid color variantion creator +.box-solid-variant(@color; @text-color: #fff) { + border: 1px solid @color; + > .box-header { + color: @text-color; + background: @color; + background-color: @color; + a, + .btn { + color: @text-color; + } + } +} + +//Direct Chat Variant +.direct-chat-variant(@bg-color; @color: #fff) { + .right > .direct-chat-text { + background: @bg-color; + border-color: @bg-color; + color: @color; + &:after, + &:before { + border-left-color: @bg-color; + } + } +} + +//border radius creator +.border-radius(@radius) { + border-radius: @radius; +} +//Different radius each side +.border-radius(@top-left; @top-right; @bottom-left; @bottom-right) { + border-top-left-radius: @top-left; + border-top-right-radius: @top-right; + border-bottom-right-radius: @bottom-right; + border-bottom-left-radius: @bottom-left; +} + +//Gradient background +.gradient(@color: #F5F5F5, @start: #EEE, @stop: #FFF) { + background: @color; + background: -webkit-gradient(linear, + left bottom, + left top, + color-stop(0, @start), + color-stop(1, @stop)); + background: -ms-linear-gradient(bottom, + @start, + @stop); + background: -moz-linear-gradient(center bottom, + @start 0%, + @stop 100%); + background: -o-linear-gradient(@stop, + @start); + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@stop,@start)); +} \ No newline at end of file diff --git a/LNbits/static/build/less/modal.less b/LNbits/static/build/less/modal.less new file mode 100644 index 000000000..5a6d9de3a --- /dev/null +++ b/LNbits/static/build/less/modal.less @@ -0,0 +1,73 @@ +/* + * Component: modal + * ---------------- + */ +.modal { + background: rgba(0,0,0,.3); +} +.modal-content { + .border-radius(0); + .box-shadow(0 2px 3px rgba(0,0,0,.125))!important; + border: 0; + @media (min-width: @screen-sm-min) { + .box-shadow(0 2px 3px rgba(0,0,0,.125))!important; + } +} +.modal-header { + border-bottom-color: @box-border-color; +} +.modal-footer { + border-top-color: @box-border-color; +} + +//Modal variants +.modal-primary { + .modal-body { + &:extend(.bg-light-blue); + } + .modal-header, + .modal-footer { + &:extend(.bg-light-blue-active); + border-color: darken(@light-blue, 10%); + } +} +.modal-warning { + .modal-body { + &:extend(.bg-yellow); + } + .modal-header, + .modal-footer { + &:extend(.bg-yellow-active); + border-color: darken(@yellow, 10%); + } +} +.modal-info { + .modal-body { + &:extend(.bg-aqua); + } + .modal-header, + .modal-footer { + &:extend(.bg-aqua-active); + border-color: darken(@aqua, 10%); + } +} +.modal-success { + .modal-body { + &:extend(.bg-green); + } + .modal-header, + .modal-footer { + &:extend(.bg-green-active); + border-color: darken(@green, 10%); + } +} +.modal-danger { + .modal-body { + &:extend(.bg-red); + } + .modal-header, + .modal-footer { + &:extend(.bg-red-active); + border-color: darken(@red, 10%); + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/navs.less b/LNbits/static/build/less/navs.less new file mode 100644 index 000000000..4b8675e29 --- /dev/null +++ b/LNbits/static/build/less/navs.less @@ -0,0 +1,170 @@ +/* + * Component: Nav + * -------------- + */ + +/* NAV PILLS */ +.nav-pills { + > li > a { + .border-radius(0); + border-top: 3px solid transparent; + color: #444; + > .fa, + > .glyphicon, + > .ion { + margin-right: 5px; + } + } + > li.active > a, + > li.active > a:hover { + background-color: #f4f4f4; + border-top-color: @light-blue; + color: #444; + } + > li.active > a { + font-weight: 600; + } + > li > a:hover { + background-color: #f6f6f6; + } +} +/* NAV STACKED */ +.nav-stacked { + > li > a { + .border-radius(0); + border-top: 0; + border-left: 3px solid transparent; + color: #444; + } + > li.active > a, + > li.active > a:hover { + background-color: #f4f4f4; + border-top: 0; + border-left-color: @light-blue; + color: #444; + } + + > li.header { + border-bottom: 1px solid #ddd; + color: #777; + margin-bottom: 10px; + padding: 5px 10px; + text-transform: uppercase; + } +} + +/* NAV TABS */ +.nav-tabs-custom { + margin-bottom: 20px; + background: #fff; + box-shadow: @box-boxshadow; + border-radius: @box-border-radius; + > .nav-tabs { + margin: 0; + border-bottom-color: #f4f4f4; + .border-top-radius(@box-border-radius); + > li { + border-top: 3px solid transparent; + margin-bottom: -2px; + > a { + .border-radius(0)!important; + &, + &:hover { + background: transparent; + margin: 0; + } + } + &:not(.active) { + > a:hover, + > a:focus, + > a:active { + border-color: transparent; + } + } + margin-right: 5px; + } + + > li.active { + border-top-color: @light-blue; + & > a, + &:hover > a { + background-color: #fff; + + } + > a { + border-top: 0; + border-left-color: #f4f4f4; + border-right-color: #f4f4f4; + } + + } + + > li:first-of-type { + margin-left: 0; + &.active { + > a { + border-left-width: 0; + } + } + } + + //Pulled to the right + &.pull-right { + float: none!important; + > li { + float: right; + } + > li:first-of-type { + margin-right: 0; + &.active { + > a { + border-left-width: 1px; + border-right-width: 0; + } + } + } + } + + > li.header { + line-height: 35px; + padding: 0 10px; + font-size: 20px; + color: #444; + > .fa, + > .glyphicon, + > .ion { + margin-right: 5px; + } + } + } + + > .tab-content { + background: #fff; + padding: 10px; + .border-bottom-radius(@box-border-radius); + } +} + +/* Nav tabs bottom */ +.tabs-bottom { + &.nav-3 { + li a { + width: percentage(100/3)!important; + } + } + li a { + border: 0; + } +} + +/* PAGINATION */ +.pagination { + > li > a { + background: #fafafa; + color: #666; + } + > li:first-of-type a, + > li:last-of-type a { + .border-radius(0); + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/products.less b/LNbits/static/build/less/products.less new file mode 100644 index 000000000..43aa505a5 --- /dev/null +++ b/LNbits/static/build/less/products.less @@ -0,0 +1,44 @@ +/* + * Component: Products List + * ------------------------ + */ +.products-list { + list-style: none; + margin: 0; + padding: 0; + > .item { + .border-radius(@box-border-radius); + .box-shadow(@box-boxshadow); + .clearfix(); + padding: 10px 0; + background: #fff; + } + .product-img { + float: left; + img { + width: 50px; + height: 50px; + } + } + .product-info { + margin-left: 60px; + } + .product-title { + font-weight: 600; + } + .product-description { + display: block; + color: #999; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } +} +.product-list-in-box > .item { + .box-shadow(none); + .border-radius(0); + border-bottom: 1px solid @box-border-color; + &:last-of-type { + border-bottom-width: 0; + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/progress-bars.less b/LNbits/static/build/less/progress-bars.less new file mode 100644 index 000000000..bf9d48ffa --- /dev/null +++ b/LNbits/static/build/less/progress-bars.less @@ -0,0 +1,107 @@ +/* + * Component: Progress Bar + * ----------------------- + */ + +//General CSS +.progress, +.progress > .progress-bar { + .box-shadow(none); + &, .progress-bar { + .border-radius(@progress-bar-border-radius); + } +} + +/* size variation */ +.progress.sm, +.progress-sm { + height: 10px; + &, .progress-bar { + .border-radius(@progress-bar-sm-border-radius); + } +} +.progress.xs, +.progress-xs { + height: 7px; + &, .progress-bar { + .border-radius(@progress-bar-xs-border-radius); + } +} +.progress.xxs, +.progress-xxs { + height: 3px; + &, .progress-bar { + .border-radius(@progress-bar-xs-border-radius); + } +} +/* Vertical bars */ +.progress.vertical { + position: relative; + width: 30px; + height: 200px; + display: inline-block; + margin-right: 10px; + > .progress-bar { + width: 100%!important; + position: absolute; + bottom: 0; + } + + //Sizes + &.sm, + &.progress-sm{ + width: 20px; + } + + &.xs, + &.progress-xs{ + width: 10px; + } + &.xxs, + &.progress-xxs{ + width: 3px; + } +} + +//Progress Groups +.progress-group { + .progress-text { + font-weight: 600; + } + .progress-number { + float: right; + } +} + +/* Remove margins from progress bars when put in a table */ +.table { + tr > td .progress { + margin: 0; + } +} + +// Variations +// ------------------------- +.progress-bar-light-blue, +.progress-bar-primary { + .progress-bar-variant(@light-blue); +} +.progress-bar-green, +.progress-bar-success { + .progress-bar-variant(@green); +} + +.progress-bar-aqua, +.progress-bar-info { + .progress-bar-variant(@aqua); +} + +.progress-bar-yellow, +.progress-bar-warning { + .progress-bar-variant(@yellow); +} + +.progress-bar-red, +.progress-bar-danger { + .progress-bar-variant(@red); +} \ No newline at end of file diff --git a/LNbits/static/build/less/sidebar.less b/LNbits/static/build/less/sidebar.less new file mode 100644 index 000000000..2a6e9cac4 --- /dev/null +++ b/LNbits/static/build/less/sidebar.less @@ -0,0 +1,150 @@ +/* + * Component: Sidebar + * ------------------ + */ +//Main Sidebar +// ``` .left-side has been deprecated in favor of .main-sidebar ``` + +.main-sidebar, +.left-side { + position: absolute; + top: 0; + left: 0; + padding-top: 50px; + height: 100%; + width: @sidebar-width; + z-index: 810; + .transition-transform(@transition-speed @transition-fn); + @media (max-width: @screen-xs-max) { + .translate(-@sidebar-width, 0); + } + .sidebar-collapse & { + @media (min-width: @screen-sm) { + .translate(-@sidebar-width, 0); + } + } + + .sidebar-open & { + @media (max-width: @screen-xs-max) { + .translate(0, 0); + } + } +} + +.sidebar { + padding-bottom: 10px; + .fixed & { + overflow: auto; + height: 100%; + } +} +// remove border from form +.sidebar-form { + input:focus { + border-color: transparent!important; + } +} + +//Sidebar user panel +.user-panel { + padding: 10px; + .clearfix(); + > .image > img { + width: 45px; + height: 45px; + } + > .info { + font-weight: 600; + padding: 5px 5px 5px 15px; + font-size: 14px; + line-height: 1; + } + > .info > p { + margin-bottom: 9px; + } + > .info > a { + text-decoration: none; + padding-right: 5px; + margin-top: 3px; + font-size: 11px; + font-weight: normal; + > .fa, > .ion, > .glyphicon { + margin-right: 3px; + } + } +} + +// Sidebar menu +.sidebar-menu { + list-style: none; + margin: 0; + padding: 0; + + > li { + position: relative; + margin: 0; + padding: 0; + > a { + padding: 12px 5px 12px 15px; + display: block; + > .fa, + > .glyphicon, + > .ion { + width: 20px; + } + } + .label, + .badge { + margin-top: 3px; + margin-right: 5px; + } + } + li.header { + padding: 10px 25px 10px 15px; + font-size: 12px; + } + li > a > .fa-angle-left { + width: auto; + height: auto; + padding: 0; + margin-right: 10px; + margin-top: 3px; + } + li.active { + > a > .fa-angle-left { + .rotate(-90deg); + } + > .treeview-menu { + display: block; + } + } + + // Tree view menu + .treeview-menu { + display: none; + list-style: none; + padding:0; + margin:0; + padding-left: 5px; + .treeview-menu { + padding-left: 20px; + } + > li { + margin: 0; + > a { + padding: 5px 5px 5px 15px; + display: block; + font-size: 14px; + > .fa, + > .glyphicon, + > .ion { + width: 20px; + } + > .fa-angle-left, + > .fa-angle-down { + width: auto; + } + } + } + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/skins/_all-skins.less b/LNbits/static/build/less/skins/_all-skins.less new file mode 100644 index 000000000..2e76950c0 --- /dev/null +++ b/LNbits/static/build/less/skins/_all-skins.less @@ -0,0 +1,7 @@ +//All skins in one file +@import "skin-blue.less"; +@import "skin-black.less"; +@import "skin-green.less"; +@import "skin-red.less"; +@import "skin-yellow.less"; +@import "skin-purple.less"; \ No newline at end of file diff --git a/LNbits/static/build/less/skins/skin-black.less b/LNbits/static/build/less/skins/skin-black.less new file mode 100644 index 000000000..5da8366c2 --- /dev/null +++ b/LNbits/static/build/less/skins/skin-black.less @@ -0,0 +1,149 @@ +/* + * Skin: Black + * ----------- + */ +@import "../../bootstrap-less/mixins.less"; +@import "../../bootstrap-less/variables.less"; +@import "../variables.less"; +@import "../mixins.less"; + +/* skin-black navbar */ +.skin-black { + //Navbar & Logo + .main-header { + .box-shadow(0px 1px 1px rgba(0, 0, 0, 0.05)); + .navbar-toggle { + color: #333; + } + .navbar-brand { + color: #333; + border-right: 1px solid #eee; + } + > .navbar { + .navbar-variant(#fff; #333; #999; #fff); + > .sidebar-toggle { + color: #333; + border-right: 1px solid #eee; + } + .navbar-nav { + > li > a { + border-right: 1px solid #eee; + } + } + .navbar-custom-menu .navbar-nav, + .navbar-right { + > li { + > a { + border-left: 1px solid #eee; + border-right-width: 0; + } + } + } + } + > .logo { + .logo-variant(#fff; #333); + border-right: 1px solid #eee; + @media (max-width: @screen-header-collapse) { + .logo-variant(#222; #fff); + border-right: none; + } + } + + li.user-header { + background-color: #222; + } + } + + //Content Header + .content-header { + background: transparent; + box-shadow: none; + } + //User Panel (resides in sidebar) + .user-panel { + > .image > img { + border: 1px solid #444; + } + + > .info, > .info > a { + color: #eee; + } + } + //Sidebar & Treeview + // Sidebar color + .main-sidebar, + .left-side, + .wrapper { + background: #222; + } + // the menu + .sidebar > .sidebar-menu > li { + &.header { + background: darken(#222, 2%); + color: rgba(255, 255, 255, .4); + } + > a { + margin-right: 1px; + border-left: 3px solid transparent; + } + //Hover and active states + > a:hover, + &.active > a { + color: #fff; + background: #444; + border-left-color: #fff; + } + + > .treeview-menu { + background: #333; + } + } + + .sidebar a { + color: #eee; + &:hover { + text-decoration: none; + } + } + // skin blue treeview-menu + .treeview-menu { + > li { + > a { + color: #ccc; + } + &.active > a, + > a:hover { + color: #fff; + } + } + } + + //Sidebar Search Form + .sidebar-form { + .border-radius(3px); + border: 1px solid lighten(#222, 10%); + margin: 10px 10px; + input[type="text"], .btn { + box-shadow: none; + background-color: lighten(#222, 10%); + border: 1px solid transparent; + height: 35px; + .transition(all @transition-speed @transition-fn); + } + input[type="text"] { + color: #666; + .border-radius(2px, 0, 2px, 0) !important; + &:focus, &:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; + } + &:focus + .input-group-btn .btn { + border-left-color: #fff; + } + } + .btn { + color: #999; + .border-radius(0, 2px, 0, 2px) !important; + } + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/skins/skin-blue.less b/LNbits/static/build/less/skins/skin-blue.less new file mode 100644 index 000000000..8bf04a18a --- /dev/null +++ b/LNbits/static/build/less/skins/skin-blue.less @@ -0,0 +1,140 @@ +/* + * Skin: Blue + * ---------- + */ +@import "../../bootstrap-less/mixins.less"; +@import "../../bootstrap-less/variables.less"; +@import "../variables.less"; +@import "../mixins.less"; + +.skin-blue { + //Navbar + .main-header { + .navbar { + .navbar-variant(@light-blue; #fff); + .sidebar-toggle { + color: #fff; + &:hover { + background-color: darken(@light-blue, 5%); + } + } + @media (max-width: @screen-header-collapse) { + .dropdown-menu { + li { + &.divider { + background-color: rgba(255, 255, 255, 0.1); + } + a { + color: #fff; + &:hover { + background: darken(@light-blue, 5%); + } + } + } + } + } + } + //Logo + .logo { + .logo-variant(darken(@light-blue, 5%)); + } + + li.user-header { + background-color: @light-blue; + } + } + + //Content Header + .content-header { + background: transparent; + } + + //User Panel (resides in the sidebar) + .user-panel { + + > .info, > .info > a { + color: #fff; + } + } + + //Sidebar & Treeview menu + // the menu + .sidebar-menu > li { + &.header { + color: lighten(@sidebar-dark-bg, 20%); + background: darken(@sidebar-dark-bg, 4%); + } + > a { + border-left: 3px solid transparent; + margin-right: 1px; + } + //Hover and active states + > a:hover, &.active > a { + color: @sidebar-dark-hover-color; + background: @sidebar-dark-hover-bg; + border-left-color: @light-blue; + } + + > .treeview-menu { + margin: 0 1px; + background: @sidebar-dark-submenu-bg; + } + } + + // Sidebar color (Both .wrapper and .left-side are responsible for sidebar bg color) + .wrapper, + .main-sidebar, + .left-side { + background: @sidebar-dark-bg; + } + + .sidebar a { + color: @sidebar-dark-color; + &:hover { + text-decoration: none; + } + } + // skin blue treeview-menu + .treeview-menu { + > li { + > a { + color: @sidebar-dark-submenu-color; + } + &.active > a, > a:hover { + color: @sidebar-dark-submenu-hover-color; + } + } + } + + .sidebar-form { + .border-radius(3px); + border: 1px solid lighten(@sidebar-dark-bg, 10%); + margin: 10px 10px; + input[type="text"], .btn { + box-shadow: none; + background-color: lighten(@sidebar-dark-bg, 10%); + border: 1px solid transparent; + height: 35px; + .transition(all @transition-speed @transition-fn); + } + input[type="text"] { + color: #666; + .border-radius(2px, 0, 2px, 0) !important; + &:focus, &:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; + } + &:focus + .input-group-btn .btn { + border-left-color: #fff; + } + } + .btn { + color: #999; + .border-radius(0, 2px, 0, 2px) !important; + } + } +} + +.skin-blue.layout-top-nav .main-header > .logo { + .logo-variant(@light-blue); +} \ No newline at end of file diff --git a/LNbits/static/build/less/skins/skin-green.less b/LNbits/static/build/less/skins/skin-green.less new file mode 100644 index 000000000..7f621e2e6 --- /dev/null +++ b/LNbits/static/build/less/skins/skin-green.less @@ -0,0 +1,135 @@ +/* + * Skin: Green + * ----------- + */ + +@import "../../bootstrap-less/mixins.less"; +@import "../../bootstrap-less/variables.less"; +@import "../variables.less"; +@import "../mixins.less"; + +.skin-green { + //Navbar + .main-header { + .navbar { + .navbar-variant(@green; #fff); + .sidebar-toggle { + color: #fff; + &:hover { + background-color: darken(@green, 5%); + } + } + @media(max-width: @screen-header-collapse) { + .dropdown-menu { + li { + &.divider { + background-color: rgba(255,255,255,0.1); + } + a { + color: #fff; + &:hover { + background: darken(@green, 5%); + } + } + } + } + } + } + //Logo + .logo { + .logo-variant(darken(@green, 5%)); + } + + li.user-header { + background-color: @green; + } + } + + //Content Header + .content-header { + background: transparent; + } + + //User Panel (resides in the sidebar) + .user-panel { + + > .info, > .info > a { + color: #fff; + } + } + + //Sidebar & Treeview menu + // the menu + .sidebar-menu > li { + &.header { + color: lighten(@sidebar-dark-bg, 20%); + background: darken(@sidebar-dark-bg, 4%); + } + > a { + border-left: 3px solid transparent; + margin-right: 1px; + } + //Hover and active states + > a:hover, &.active > a { + color: @sidebar-dark-hover-color; + background: @sidebar-dark-hover-bg; + border-left-color: @green; + } + + > .treeview-menu { + margin: 0 1px; + background: @sidebar-dark-submenu-bg; + } + } + + // Sidebar color (Both .wrapper and .left-side are responsible for sidebar bg color) + .wrapper , + .main-sidebar, + .left-side { + background: @sidebar-dark-bg; + } + + .sidebar a { + color: @sidebar-dark-color; + &:hover { + text-decoration: none; + } + } + // skin blue treeview-menu + .treeview-menu { + > li { + > a {color: @sidebar-dark-submenu-color;} + &.active > a, > a:hover { + color: @sidebar-dark-submenu-hover-color; + } + } + } + + .sidebar-form { + .border-radius(3px); + border: 1px solid lighten(@sidebar-dark-bg, 10%); + margin: 10px 10px; + input[type="text"], .btn { + box-shadow: none; + background-color: lighten(@sidebar-dark-bg, 10%); + border: 1px solid transparent; + height: 35px; + .transition(all @transition-speed @transition-fn); + } + input[type="text"]{ + color: #666; + .border-radius(2px, 0, 2px, 0)!important; + &:focus, &:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; + } + &:focus + .input-group-btn .btn { + border-left-color: #fff; + } + } + .btn { + color: #999; + .border-radius(0, 2px, 0, 2px)!important; + } + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/skins/skin-purple.less b/LNbits/static/build/less/skins/skin-purple.less new file mode 100644 index 000000000..ac38eb052 --- /dev/null +++ b/LNbits/static/build/less/skins/skin-purple.less @@ -0,0 +1,135 @@ +/* + * Skin: Purple + * ------------ + */ + +@import "../../bootstrap-less/mixins.less"; +@import "../../bootstrap-less/variables.less"; +@import "../variables.less"; +@import "../mixins.less"; + +.skin-purple { + //Navbar + .main-header { + .navbar { + .navbar-variant(@purple; #fff); + .sidebar-toggle { + color: #fff; + &:hover { + background-color: darken(@purple, 5%); + } + } + @media(max-width: @screen-header-collapse) { + .dropdown-menu { + li { + &.divider { + background-color: rgba(255,255,255,0.1); + } + a { + color: #fff; + &:hover { + background: darken(@purple, 5%); + } + } + } + } + } + } + //Logo + .logo { + .logo-variant(darken(@purple, 5%)); + } + + li.user-header { + background-color: @purple; + } + } + + //Content Header + .content-header { + background: transparent; + } + + //User Panel (resides in the sidebar) + .user-panel { + + > .info, > .info > a { + color: #fff; + } + } + + //Sidebar & Treeview menu + // the menu + .sidebar-menu > li { + &.header { + color: lighten(@sidebar-dark-bg, 20%); + background: darken(@sidebar-dark-bg, 4%); + } + > a { + border-left: 3px solid transparent; + margin-right: 1px; + } + //Hover and active states + > a:hover, &.active > a { + color: @sidebar-dark-hover-color; + background: @sidebar-dark-hover-bg; + border-left-color: @purple; + } + + > .treeview-menu { + margin: 0 1px; + background: @sidebar-dark-submenu-bg; + } + } + + // Sidebar color (Both .wrapper and .left-side are responsible for sidebar bg color) + .wrapper , + .main-sidebar, + .left-side { + background: @sidebar-dark-bg; + } + + .sidebar a { + color: @sidebar-dark-color; + &:hover { + text-decoration: none; + } + } + // skin blue treeview-menu + .treeview-menu { + > li { + > a {color: @sidebar-dark-submenu-color;} + &.active > a, > a:hover { + color: @sidebar-dark-submenu-hover-color; + } + } + } + + .sidebar-form { + .border-radius(3px); + border: 1px solid lighten(@sidebar-dark-bg, 10%); + margin: 10px 10px; + input[type="text"], .btn { + box-shadow: none; + background-color: lighten(@sidebar-dark-bg, 10%); + border: 1px solid transparent; + height: 35px; + .transition(all @transition-speed @transition-fn); + } + input[type="text"]{ + color: #666; + .border-radius(2px, 0, 2px, 0)!important; + &:focus, &:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; + } + &:focus + .input-group-btn .btn { + border-left-color: #fff; + } + } + .btn { + color: #999; + .border-radius(0, 2px, 0, 2px)!important; + } + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/skins/skin-red.less b/LNbits/static/build/less/skins/skin-red.less new file mode 100644 index 000000000..9f69220d6 --- /dev/null +++ b/LNbits/static/build/less/skins/skin-red.less @@ -0,0 +1,135 @@ +/* + * Skin: Red + * --------- + */ + +@import "../../bootstrap-less/mixins.less"; +@import "../../bootstrap-less/variables.less"; +@import "../variables.less"; +@import "../mixins.less"; + +.skin-red { + //Navbar + .main-header { + .navbar { + .navbar-variant(@red; #fff); + .sidebar-toggle { + color: #fff; + &:hover { + background-color: darken(@red, 5%); + } + } + @media(max-width: @screen-header-collapse) { + .dropdown-menu { + li { + &.divider { + background-color: rgba(255,255,255,0.1); + } + a { + color: #fff; + &:hover { + background: darken(@red, 5%); + } + } + } + } + } + } + //Logo + .logo { + .logo-variant(darken(@red, 5%)); + } + + li.user-header { + background-color: @red; + } + } + + //Content Header + .content-header { + background: transparent; + } + + //User Panel (resides in the sidebar) + .user-panel { + + > .info, > .info > a { + color: #fff; + } + } + + //Sidebar & Treeview menu + // the menu + .sidebar-menu > li { + &.header { + color: lighten(@sidebar-dark-bg, 20%); + background: darken(@sidebar-dark-bg, 4%); + } + > a { + border-left: 3px solid transparent; + margin-right: 1px; + } + //Hover and active states + > a:hover, &.active > a { + color: @sidebar-dark-hover-color; + background: @sidebar-dark-hover-bg; + border-left-color: @red; + } + + > .treeview-menu { + margin: 0 1px; + background: @sidebar-dark-submenu-bg; + } + } + + // Sidebar color (Both .wrapper and .left-side are responsible for sidebar bg color) + .wrapper , + .main-sidebar, + .left-side { + background: @sidebar-dark-bg; + } + + .sidebar a { + color: @sidebar-dark-color; + &:hover { + text-decoration: none; + } + } + // skin blue treeview-menu + .treeview-menu { + > li { + > a {color: @sidebar-dark-submenu-color;} + &.active > a, > a:hover { + color: @sidebar-dark-submenu-hover-color; + } + } + } + + .sidebar-form { + .border-radius(3px); + border: 1px solid lighten(@sidebar-dark-bg, 10%); + margin: 10px 10px; + input[type="text"], .btn { + box-shadow: none; + background-color: lighten(@sidebar-dark-bg, 10%); + border: 1px solid transparent; + height: 35px; + .transition(all @transition-speed @transition-fn); + } + input[type="text"]{ + color: #666; + .border-radius(2px, 0, 2px, 0)!important; + &:focus, &:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; + } + &:focus + .input-group-btn .btn { + border-left-color: #fff; + } + } + .btn { + color: #999; + .border-radius(0, 2px, 0, 2px)!important; + } + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/skins/skin-yellow.less b/LNbits/static/build/less/skins/skin-yellow.less new file mode 100644 index 000000000..0576297bb --- /dev/null +++ b/LNbits/static/build/less/skins/skin-yellow.less @@ -0,0 +1,135 @@ +/* + * Skin: Yellow + * ------------ + */ + +@import "../../bootstrap-less/mixins.less"; +@import "../../bootstrap-less/variables.less"; +@import "../variables.less"; +@import "../mixins.less"; + +.skin-yellow { + //Navbar + .main-header { + .navbar { + .navbar-variant(@yellow; #fff); + .sidebar-toggle { + color: #fff; + &:hover { + background-color: darken(@yellow, 5%); + } + } + @media(max-width: @screen-header-collapse) { + .dropdown-menu { + li { + &.divider { + background-color: rgba(255,255,255,0.1); + } + a { + color: #fff; + &:hover { + background: darken(@yellow, 5%); + } + } + } + } + } + } + //Logo + .logo { + .logo-variant(darken(@yellow, 5%)); + } + + li.user-header { + background-color: @yellow; + } + } + + //Content Header + .content-header { + background: transparent; + } + + //User Panel (resides in the sidebar) + .user-panel { + + > .info, > .info > a { + color: #fff; + } + } + + //Sidebar & Treeview menu + // the menu + .sidebar-menu > li { + &.header { + color: lighten(@sidebar-dark-bg, 20%); + background: darken(@sidebar-dark-bg, 4%); + } + > a { + border-left: 3px solid transparent; + margin-right: 1px; + } + //Hover and active states + > a:hover, &.active > a { + color: @sidebar-dark-hover-color; + background: @sidebar-dark-hover-bg; + border-left-color: @yellow; + } + + > .treeview-menu { + margin: 0 1px; + background: @sidebar-dark-submenu-bg; + } + } + + // Sidebar color (Both .wrapper and .left-side are responsible for sidebar bg color) + .wrapper , + .main-sidebar, + .left-side { + background: @sidebar-dark-bg; + } + + .sidebar a { + color: @sidebar-dark-color; + &:hover { + text-decoration: none; + } + } + // skin blue treeview-menu + .treeview-menu { + > li { + > a {color: @sidebar-dark-submenu-color;} + &.active > a, > a:hover { + color: @sidebar-dark-submenu-hover-color; + } + } + } + + .sidebar-form { + .border-radius(3px); + border: 1px solid lighten(@sidebar-dark-bg, 10%); + margin: 10px 10px; + input[type="text"], .btn { + box-shadow: none; + background-color: lighten(@sidebar-dark-bg, 10%); + border: 1px solid transparent; + height: 35px; + .transition(all @transition-speed @transition-fn); + } + input[type="text"]{ + color: #666; + .border-radius(2px, 0, 2px, 0)!important; + &:focus, &:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; + } + &:focus + .input-group-btn .btn { + border-left-color: #fff; + } + } + .btn { + color: #999; + .border-radius(0, 2px, 0, 2px)!important; + } + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/small-box.less b/LNbits/static/build/less/small-box.less new file mode 100644 index 000000000..f65dbaa37 --- /dev/null +++ b/LNbits/static/build/less/small-box.less @@ -0,0 +1,89 @@ +/* + * Component: Small Box + * -------------------- + */ + +.small-box { + .border-radius(2px); + position: relative; + display: block; + margin-bottom: 20px; + box-shadow: @box-boxshadow; + // content wrapper + > .inner { + padding: 10px; + } + + > .small-box-footer { + position: relative; + text-align: center; + padding: 3px 0; + color: #fff; + color: rgba(255, 255, 255, 0.8); + display: block; + z-index: 10; + background: rgba(0,0,0,0.1); + text-decoration: none; + &:hover { + color: #fff; + background: rgba(0,0,0,0.15); + } + } + + h3 { + font-size: 38px; + font-weight: bold; + margin: 0 0 10px 0; + white-space: nowrap; + padding: 0; + + } + + p { + font-size: 15px; + > small { + display: block; + color: #f9f9f9; + font-size: 13px; + margin-top: 5px; + } + } + + h3, p { + z-index: 5px; + } + + // the icon + .icon { + .transition(all @transition-speed linear); + position: absolute; + top: -10px; + right: 10px; + z-index: 0; + font-size: 90px; + color: rgba(0, 0, 0, 0.15); + } + + // Small box hover state + &:hover { + text-decoration: none; + color: #f9f9f9; + // Animate icons on small box hover + .icon { + font-size: 95px; + } + } +} + +@media (max-width: @screen-xs-max) { + // No need for icons on very small devices + .small-box { + text-align: center; + .icon { + display: none; + } + p { + font-size: 12px; + } + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/table.less b/LNbits/static/build/less/table.less new file mode 100644 index 000000000..5b61ecd45 --- /dev/null +++ b/LNbits/static/build/less/table.less @@ -0,0 +1,71 @@ +/* + * Component: Table + * ---------------- + */ + +.table { + //Cells + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + border-top: 1px solid @box-border-color; + } + } + } + //thead cells + > thead > tr > th { + border-bottom: 2px solid @box-border-color; + } + //progress bars in tables + tr td .progress { + margin-top: 5px; + } +} + +//Bordered Table +.table-bordered { + border: 1px solid @box-border-color; + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + border: 1px solid @box-border-color; + } + } + } + > thead > tr { + > th, + > td { + border-bottom-width: 2px; + } + } +} + +.table.no-border { + &, + td, + th { + border: 0; + } +} + +/* .text-center in tables */ +table.text-center { + &, td, th { + text-align: center; + } +} + +.table.align { + th { + text-align: left; + } + td { + text-align: right; + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/timeline.less b/LNbits/static/build/less/timeline.less new file mode 100644 index 000000000..4871f234c --- /dev/null +++ b/LNbits/static/build/less/timeline.less @@ -0,0 +1,98 @@ +/* + * Component: Timeline + * ------------------- + */ + +.timeline{ + position: relative; + margin: 0 0 30px 0; + padding: 0; + list-style: none; + + // The line + &:before { + content: ''; + position: absolute; + top: 0px; + bottom: 0; + width: 4px; + background: #ddd; + left: 31px; + margin: 0; + .border-radius(2px); + } + + + > li { + position: relative; + margin-right: 10px; + margin-bottom: 15px; + .clearfix(); + + // The content + > .timeline-item { + .box-shadow(@box-boxshadow); + .border-radius(@box-border-radius); + margin-top: 0px; + background: #fff; + color: #444; + margin-left: 60px; + margin-right: 15px; + padding: 0; + position: relative; + + // The time and header + > .time { + color: #999; + float: right; + padding: 10px; + font-size: 12px; + } + > .timeline-header { + margin: 0; + color: #555; + border-bottom: 1px solid @box-border-color; + padding: 10px; + font-size: 16px; + line-height: 1.1; + > a { + font-weight: 600; + } + } + // Item body and footer + > .timeline-body, > .timeline-footer { + padding: 10px; + } + + } + + // Time label + &.time-label { + > span { + font-weight: 600; + padding: 5px; + display: inline-block; + background-color: #fff; + + .border-radius(4px); + } + } + + // The icons + > .fa, + > .glyphicon, + > .ion { + width: 30px; + height: 30px; + font-size: 15px; + line-height: 30px; + position: absolute; + color: #666; + background: @gray; + border-radius: 50%; + text-align: center; + left: 18px; + top: 0; + } + } +} \ No newline at end of file diff --git a/LNbits/static/build/less/users-list.less b/LNbits/static/build/less/users-list.less new file mode 100644 index 000000000..ce7fcfef3 --- /dev/null +++ b/LNbits/static/build/less/users-list.less @@ -0,0 +1,36 @@ +/* + * Component: Users List + * --------------------- + */ +.users-list { + &:extend(.list-unstyled); + > li { + width: 25%; + float: left; + padding: 10px; + text-align: center; + > img { + .border-radius(50%); + max-width: 100%; + height: auto; + } + } +} +.users-list-name, +.users-list-date { + display: block; +} +.users-list-name { + font-weight: 600; + color: #444; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + &:hover { + color: #999; + } +} +.users-list-date { + color: #999; + font-size: 12px; +} \ No newline at end of file diff --git a/LNbits/static/build/less/variables.less b/LNbits/static/build/less/variables.less new file mode 100644 index 000000000..c9a02707c --- /dev/null +++ b/LNbits/static/build/less/variables.less @@ -0,0 +1,102 @@ +//AdminLTE 2 Variables.less +//========================= + +//COLORS +//-------------------------------------------------------- + +@light-blue: #3c8dbc; //Primary +@red: #dd4b39; //Danger +@green: #00a65a; //Success +@aqua: #00c0ef; //Info +@yellow: #f39c12; //Warning +@blue: #0073b7; +@navy: #001F3F; +@teal: #39CCCC; +@olive: #3D9970; +@lime: #01FF70; +@orange: #FF851B; +@fuchsia: #F012BE; +@purple: #605ca8; +@maroon: #D81B60; +@black: #111; +@gray: #d2d6de; + +//LAYOUT +//-------------------------------------------------------- + +//Side bar and logo width +@sidebar-width: 230px; +//Bosex layout maximum width +@boxed-layout-max-width: 1024px; +//When the logo should go to the top of the screen +@screen-header-collapse: @screen-xs-max; + +//Link colors (Aka: tags) +@link-color: @light-blue; +@link-hover-color: lighten(@link-color, 15%); + +//Body background (Affects main content background only) +@body-bg: #ecf0f5;//darken(#f4f5f7, 4%); + +//SIDEBAR SKINS +//-------------------------------------------------------- + +//skin blue (light) sidebar vars +@sidebar-dark-bg: #222d32; +@sidebar-dark-hover-bg: darken(@sidebar-dark-bg, 2%); +@sidebar-dark-color: lighten(@sidebar-dark-bg, 60%); +@sidebar-dark-hover-color: #fff; +@sidebar-dark-border: #dbdbdb; +@sidebar-dark-submenu-bg: lighten(@sidebar-dark-bg, 5%); +@sidebar-dark-submenu-color: lighten(@sidebar-dark-submenu-bg, 40%); +@sidebar-dark-submenu-hover-color: #fff; + +//BOXES +//-------------------------------------------------------- +@box-border-color: #f4f4f4; +@box-border-radius: 3px; +@box-footer-bg: #fff; +@box-boxshadow: 0 1px 1px rgba(0, 0, 0, .1); +@box-padding: 10px; + +//Box variants +@box-default-border-top-color: #d2d6de; + +//BUTTONS +//-------------------------------------------------------- +@btn-boxshadow: none; + +//PROGRESS BARS +//-------------------------------------------------------- +@progress-bar-border-radius: 1px; +@progress-bar-sm-border-radius: 1px; +@progress-bar-xs-border-radius: 1px; + +//FORMS +//-------------------------------------------------------- +@input-radius: 0px; + +//BUTTONS +//-------------------------------------------------------- + +//Border radius for non flat buttons +@btn-border-radius: 3px; + +//DIRECT CHAT +//-------------------------------------------------------- +@direct-chat-height: 250px; +@direct-chat-default-msg-bg: @gray; +@direct-chat-default-font-color: #444; +@direct-chat-default-msg-border-color: @gray; + + +//CHAT WIDGET +//-------------------------------------------------------- +@attachment-border-radius: 3px; + +//TRANSITIONS SETTINGS +//-------------------------------------------------------- + +//Transition global options +@transition-speed: .3s; +@transition-fn: cubic-bezier(0.32,1.25,0.375,1.15); \ No newline at end of file diff --git a/LNbits/static/changelog b/LNbits/static/changelog new file mode 100644 index 000000000..c13354d1b --- /dev/null +++ b/LNbits/static/changelog @@ -0,0 +1,33 @@ +CHANGE LOG: + +v2.0 +- Major layout bug fixes +- Change in layout mark up +- Added transitions to the sidebar +- New skins and modified previous skins +- Change in color scheme to a more complementing scheme +- Added footer support +- Removed pace.js from the main app.js +- Added support for collapsed sidebar as an initial state (add .sidebar-collapse to the body tag) +- Added boxed layout (.layout-boxed) +- Enhanced consistency in padding and margining +- Updated Bootstrap to 3.3.2 +- Fixed navbar dropdown menu on small screens positioning issues. +- Updated Ion Icons to 2.0.0 +- Updated FontAwesome to 4.3.0 +- Added ChartJS 1.0.1 +- Removed iCheck dependency +- Created Dashboard 2.0 +- Created new Chat widget (DirectChat) +- Added transitions to DirectChat +- Added contacts pane to DirectChat +- Changed .right-side to .content-wrapper +- Changed .navbar-right to .navbar-custom-menu +- Removed unused files +- Updated lockscreen style (HTML markup changed!) +- Updated Login & Registration pages (HTML markup changed!) +- Updated buttons style. +- Enhanced border-radius consistency +- Added mailbox: inbox, read, and compose pages +- Bootstrap & jQuery are now hosted locally +- Created documentation. diff --git a/LNbits/static/composer.json b/LNbits/static/composer.json new file mode 100644 index 000000000..e178dd5d3 --- /dev/null +++ b/LNbits/static/composer.json @@ -0,0 +1,26 @@ +{ + "name": "almasaeed2010/adminlte", + "description": "AdminLTE - admin control panel and dashboard that's based on Bootstrap 3", + "homepage": "http://almsaeedstudio.com/", + "keywords": [ + "css", + "js", + "less", + "responsive", + "back-end", + "template", + "theme", + "web", + "admin" + ], + "authors": [ + { + "name": "Abdullah Almsaeed", + "email": "support@almsaeedstudio.com" + } + ], + "license": "MIT", + "support": { + "issues": "https://github.com/almasaeed2010/AdminLTE/issues" + } +} diff --git a/LNbits/static/package.json b/LNbits/static/package.json new file mode 100644 index 000000000..8d02d6598 --- /dev/null +++ b/LNbits/static/package.json @@ -0,0 +1,10 @@ +{ + "name": "AdminLTE", + "version": "2.0.0", + "devDependencies": { + "grunt": "~0.4.5", + "grunt-contrib-less": "~0.12.0", + "grunt-contrib-watch": "~0.6.1", + "grunt-contrib-uglify": "~0.7.0" + } +}