├── .gitattributes ├── .gitignore ├── CONTRIBUTORS.md ├── Dockerfile ├── LICENSE ├── README.md ├── browserconfig.xml ├── combineify.php ├── composer.json ├── css ├── bootstrap-iconpicker.min.css ├── bootstrap-theme.css ├── bootstrap-theme.css.map ├── bootstrap-theme.min.css ├── bootstrap-theme.min.css.map ├── bootstrap.css ├── bootstrap.css.map ├── bootstrap.min.css ├── bootstrap.min.css.map ├── cssreset.min.css ├── font-awesome.min.css ├── font-muximux.css ├── font-pt_sans.css ├── jquery-ui.min.css ├── landing.css ├── less │ ├── .csscomb.json │ ├── .csslintrc │ ├── alerts.less │ ├── badges.less │ ├── bootstrap.less │ ├── breadcrumbs.less │ ├── button-groups.less │ ├── buttons.less │ ├── carousel.less │ ├── close.less │ ├── code.less │ ├── component-animations.less │ ├── dropdowns.less │ ├── forms.less │ ├── glyphicons.less │ ├── grid.less │ ├── input-groups.less │ ├── jumbotron.less │ ├── labels.less │ ├── list-group.less │ ├── media.less │ ├── mixins.less │ ├── mixins │ │ ├── alerts.less │ │ ├── background-variant.less │ │ ├── border-radius.less │ │ ├── buttons.less │ │ ├── center-block.less │ │ ├── clearfix.less │ │ ├── forms.less │ │ ├── gradients.less │ │ ├── grid-framework.less │ │ ├── grid.less │ │ ├── hide-text.less │ │ ├── image.less │ │ ├── labels.less │ │ ├── list-group.less │ │ ├── nav-divider.less │ │ ├── nav-vertical-align.less │ │ ├── opacity.less │ │ ├── pagination.less │ │ ├── panels.less │ │ ├── progress-bar.less │ │ ├── reset-filter.less │ │ ├── reset-text.less │ │ ├── resize.less │ │ ├── responsive-visibility.less │ │ ├── size.less │ │ ├── tab-focus.less │ │ ├── table-row.less │ │ ├── text-emphasis.less │ │ ├── text-overflow.less │ │ └── vendor-prefixes.less │ ├── modals.less │ ├── navbar.less │ ├── navs.less │ ├── normalize.less │ ├── pager.less │ ├── pagination.less │ ├── panels.less │ ├── popovers.less │ ├── print.less │ ├── progress-bars.less │ ├── responsive-embed.less │ ├── responsive-utilities.less │ ├── scaffolding.less │ ├── tables.less │ ├── theme.less │ ├── thumbnails.less │ ├── tooltip.less │ ├── type.less │ ├── utilities.less │ ├── variables.less │ └── wells.less ├── loader.css ├── login.css ├── spectrum.min.css ├── style.css ├── theme │ ├── Classic.css │ └── Modern.css └── theme_default.css ├── favicon.ico ├── fonts ├── FontAwesome.otf ├── PT_Sans-400-cyrillic-ext.woff2 ├── PT_Sans-400-cyrillic.woff2 ├── PT_Sans-400-latin-ext.woff2 ├── PT_Sans-400-latin.woff ├── PT_Sans-400-latin.woff2 ├── PT_Sans-Web-Bold.ttf ├── PT_Sans-Web-BoldItalic.ttf ├── PT_Sans-Web-Italic.ttf ├── PT_Sans-Web-Regular.eot ├── PT_Sans-Web-Regular.ttf ├── fontawesome-webfont.eot ├── fontawesome-webfont.svg ├── fontawesome-webfont.ttf ├── fontawesome-webfont.woff ├── fontawesome-webfont.woff2 ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.svg ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff ├── glyphicons-halflings-regular.woff2 ├── muximuxfonts.eot ├── muximuxfonts.svg ├── muximuxfonts.ttf └── muximuxfonts.woff ├── images ├── favicon │ ├── android-chrome-192x192.png │ ├── android-chrome-256x256.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── manifest.json │ ├── mstile-150x150.png │ └── safari-pinned-tab.svg ├── landing-bg.jpg ├── muximux-white.svg ├── source │ └── muximux.psd ├── ui-bg_flat_30_cccccc_40x100.png ├── ui-bg_flat_50_5c5c5c_40x100.png ├── ui-bg_glass_40_ffc73d_1x400.png ├── ui-bg_highlight-hard_20_0972a5_1x100.png ├── ui-bg_highlight-soft_33_003147_1x100.png ├── ui-bg_highlight-soft_35_222222_1x100.png ├── ui-bg_highlight-soft_44_444444_1x100.png ├── ui-bg_highlight-soft_80_eeeeee_1x100.png ├── ui-bg_loop_25_000000_21x21.png ├── ui-icon-password.png ├── ui-icon-username.png ├── ui-icons_222222_256x240.png ├── ui-icons_4b8e0b_256x240.png ├── ui-icons_a83300_256x240.png ├── ui-icons_cccccc_256x240.png └── ui-icons_ffffff_256x240.png ├── index.php ├── js ├── bootstrap-iconpicker.min.js ├── bootstrap.min.js ├── functions.js ├── iconset-muximux.js ├── jquery-2.2.4.min.js ├── jquery-ui.min.js ├── jquery.form.min.js ├── jquery.ui.touch-punch.min.js ├── jquery.webticker.min.js ├── login.js ├── main.js ├── modernizr-custom-3.3.1.min.js ├── spectrum.min.js └── yrss.min.js ├── less ├── animated.less ├── bordered-pulled.less ├── core.less ├── fixed-width.less ├── font-awesome.less ├── icons.less ├── larger.less ├── list.less ├── mixins.less ├── path.less ├── rotated-flipped.less ├── stacked.less └── variables.less ├── login.php ├── manifest.json ├── muximux.php ├── robots.txt ├── scss ├── _animated.scss ├── _bordered-pulled.scss ├── _core.scss ├── _fixed-width.scss ├── _icons.scss ├── _larger.scss ├── _list.scss ├── _mixins.scss ├── _path.scss ├── _rotated-flipped.scss ├── _stacked.scss ├── _variables.scss └── font-awesome.scss ├── settings.ini.php-example ├── test ├── .gitattributes └── .gitignore └── vendor ├── autoload.php ├── bin ├── minifycss └── minifyjs ├── composer ├── ClassLoader.php ├── LICENSE ├── autoload_classmap.php ├── autoload_namespaces.php ├── autoload_psr4.php ├── autoload_real.php ├── autoload_static.php ├── include_paths.php └── installed.json ├── matthiasmullie ├── minify │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── bin │ │ ├── minifycss │ │ └── minifyjs │ ├── composer.json │ ├── data │ │ └── js │ │ │ ├── keywords_after.txt │ │ │ ├── keywords_before.txt │ │ │ ├── keywords_reserved.txt │ │ │ ├── operators.txt │ │ │ ├── operators_after.txt │ │ │ └── operators_before.txt │ └── src │ │ ├── CSS.php │ │ ├── Exception.php │ │ ├── Exceptions │ │ ├── BasicException.php │ │ ├── FileImportException.php │ │ └── IOException.php │ │ ├── JS.php │ │ └── Minify.php └── path-converter │ ├── LICENSE │ ├── composer.json │ └── src │ └── Converter.php └── pear-pear.php.net └── Config_Lite └── Config ├── Lite.php └── Lite ├── Exception.php └── Exception ├── InvalidArgument.php ├── Runtime.php └── UnexpectedValue.php /.gitattributes: -------------------------------------------------------------------------------- 1 | * -text 2 | *.txt ident 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Do not submit or pull configuration settings when interacting with GitHub. 2 | config.ini.php 3 | settings.ini.php 4 | backup.ini.php 5 | muximux.log 6 | stage/ 7 | .stage/ 8 | css/theme/ 9 | js/iconset-muximux.js 10 | !css/theme/Modern.css 11 | !css/theme/Classic.css 12 | test.php 13 | secret.txt 14 | tmp/ 15 | pydio/ 16 | phpmyadmin/ 17 | *.idea 18 | .vscode/ 19 | plexredirect/ 20 | recent/ 21 | keeweb/ 22 | api/ 23 | cache/ 24 | test/ -------------------------------------------------------------------------------- /CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | Muximux contributors (either directly or indirectly) 2 | ============================================ 3 | 4 | * **[mescon](https://github.com/mescon)** 5 | 6 | * **[SyNiK4L](https://github.com/SyNiK4L)** 7 | 8 | * **[Tenzinn3](https://github.com/Tenzinn3)** 9 | 10 | * **[kylerw](https://github.com/kylerw)** 11 | 12 | * **[onedr0p](https://github.com/onedr0p)** 13 | 14 | * **[OmgImAlexis](https://github.com/OmgImAlexis)** 15 | 16 | * **[StackOverflow](https://www.stackoverflow.com)** 17 | 18 | * **[Google](https://www.google.com)** -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.0-apache 2 | 3 | RUN apt-get update && apt-get install -y git && \ 4 | git clone https://github.com/mescon/Muximux /var/www/html && \ 5 | 6 | # cleanup 7 | apt-get clean && rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/* 8 | 9 | WORKDIR /var/www/html 10 | 11 | VOLUME /config 12 | 13 | RUN ln -sf /config/settings.ini.php /var/www/html/settings.ini.php 14 | 15 | EXPOSE 80 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #2b5797 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /combineify.php: -------------------------------------------------------------------------------- 1 | add($path); 109 | } 110 | 111 | $contents = $minifier->minify(); 112 | 113 | 114 | // Send Content-Type 115 | header ("Content-Type: text/" . $type); 116 | header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60 * 24 * 360))); // 30 days 117 | if (isset($encoding) && $encoding != 'none') 118 | { 119 | // Send compressed contents 120 | $contents = gzencode($contents, 9, $gzip ? FORCE_GZIP : FORCE_DEFLATE); 121 | header ("Content-Encoding: " . $encoding); 122 | header ('Content-Length: ' . strlen($contents)); 123 | echo $contents; 124 | } 125 | else 126 | { 127 | // Send regular contents 128 | header ('Content-Length: ' . strlen($contents)); 129 | echo $contents; 130 | } 131 | 132 | // Store cache 133 | if ($cache) { 134 | $cacheString = $cachedir."/*".$type.".gzip"; 135 | foreach (glob($cacheString) as $file) { 136 | unlink($file); 137 | } 138 | 139 | if ($fp = fopen($cachedir . '/' . $cachefile, 'wb')) { 140 | fwrite($fp, $contents); 141 | fclose($fp); 142 | } 143 | } 144 | } 145 | ?> -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "repositories": [ 3 | { 4 | "type": "pear", 5 | "url": "pear.php.net" 6 | } 7 | ], 8 | "require": { 9 | "pear-pear.php.net/config_lite": "*", 10 | "matthiasmullie/minify": "^1.3" 11 | 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /css/bootstrap-iconpicker.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-iconpicker v1.7.0 3 | * 4 | * Copyright 2013-2015 Victor Valencia Rico. 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world by @recktoner. 9 | */.iconpicker .caret{margin-left:10px!important}.iconpicker{min-width:60px}.iconpicker input.search-control{margin-bottom:6px;margin-top:6px}div.iconpicker.left .table-icons{margin-right:auto}div.iconpicker.center .table-icons{margin-left:auto;margin-right:auto}div.iconpicker.right .table-icons{margin-left:auto}.table-icons .btn{min-height:30px;min-width:35px;text-align:center;padding:0;margin:2px}.table-icons td{min-width:39px}.popover{max-width:inherit!important}.iconpicker-popover{z-index:1050!important}.iconpicker-popover .search-control{margin-bottom:6px;margin-top:6px} -------------------------------------------------------------------------------- /css/bootstrap-theme.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /css/cssreset.min.css: -------------------------------------------------------------------------------- 1 | a,hr{padding:0}a,button,input,select,textarea{margin:0}article,aside,details,figure,footer,header,hr,main,nav,section,summary{display:block}abbr,address,article,aside,audio,b,blockquote,body,body div,caption,cite,code,dd,del,details,dfn,dl,dt,em,fieldset,figure,footer,form,h1,h2,h3,h4,h5,h6,header,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,p,pre,q,samp,section,small,span,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font-weight:400;vertical-align:baseline;background:0 0}input[type=checkbox],th{vertical-align:bottom}html{box-sizing:border-box;overflow-y:scroll}*,:after,:before{box-sizing:inherit}embed,img,object{max-width:100%}ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}a{font-size:100%;vertical-align:baseline;background:0 0}del{text-decoration:line-through}abbr[title],dfn[title]{border-bottom:1px dotted #000;cursor:help}th{font-weight:700}td{font-weight:400;vertical-align:top}hr{height:1px;border:0;border-top:1px solid #ccc;margin:1em 0}input,select{vertical-align:middle}pre{white-space:pre;white-space:pre-wrap;white-space:pre-line;word-wrap:break-word}input[type=radio]{vertical-align:text-bottom}.ie7 input[type=checkbox]{vertical-align:baseline}.ie6 input{vertical-align:text-bottom}input,select,textarea{font:99% sans-serif}table{border-collapse:separate;border-spacing:0;font:100%}small{font-size:85%}strong{font-weight:700}td,td img{vertical-align:top}sub,sup{font-size:75%;line-height:0;position:relative}sup{top:-.5em}sub{bottom:-.25em}code,kbd,pre,samp{font-family:monospace,sans-serif}.clickable,button,input[type=button],input[type=file],input[type=submit],label{cursor:pointer}button,input[type=button]{width:auto;overflow:visible}.ie7 img{-ms-interpolation-mode:bicubic}.clearfix:after{content:" ";display:block;clear:both} -------------------------------------------------------------------------------- /css/font-pt_sans.css: -------------------------------------------------------------------------------- 1 | /* latin */ 2 | @font-face { 3 | font-family: 'PT Sans'; 4 | font-style: normal; 5 | font-weight: 400; 6 | src: url('fonts/PT_Sans-Web-Regular.eot'); /* IE9 Compat Modes */ 7 | src: local('PT Sans'), local('PTSans-Regular'), 8 | url('fonts/PT_Sans-Web-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 9 | url('fonts/PT_Sans-400-latin.woff2') format('woff2'), /* Modern browsers */ 10 | url('fonts/PT_Sans-400-latin.woff') format('woff'), /* Older browsers */ 11 | url('fonts/PT_Sans-Web-Regular.ttf') format('truetype'); /* Safari, Android, iOS */ 12 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; 13 | } 14 | -------------------------------------------------------------------------------- /css/landing.css: -------------------------------------------------------------------------------- 1 | @import url(../css/font-pt_sans.css); 2 | @import url(../css/bootstrap.min.css); 3 | @import url(../css/font-awesome.min.css); 4 | * { 5 | margin: 0; 6 | padding: 0; 7 | } 8 | 9 | html { 10 | background: url(../images/landing-bg.jpg) no-repeat center center fixed; 11 | -webkit-background-size: cover; 12 | -moz-background-size: cover; 13 | -o-background-size: cover; 14 | background-size: cover; 15 | } 16 | 17 | body { 18 | background: transparent; 19 | } 20 | 21 | body, input, button { 22 | font-family: 'PT Sans', sans-serif; 23 | } 24 | 25 | .login { 26 | padding: 15px; 27 | width: 400px; 28 | min-height: 400px; 29 | margin: 2% auto 0 auto; 30 | } 31 | .login .heading { 32 | text-align: center; 33 | margin-top: 1%; 34 | } 35 | .login .heading h2 { 36 | font-size: 3em; 37 | font-weight: 600; 38 | color: rgba(255, 255, 255, 0.7); 39 | display: inline-block; 40 | padding-bottom: 5px; 41 | text-shadow: 1px 1px 3px #23203b; 42 | } 43 | .login section .input-group { 44 | border-bottom: 1px solid rgba(255, 255, 255, 0.1); 45 | border-top: 1px solid rgba(255, 255, 255, 0.1); 46 | } 47 | .login section .input-group:last-of-type { 48 | border-top: none; 49 | } 50 | .login section .input-group span { 51 | background: transparent; 52 | min-width: 53px; 53 | border: none; 54 | } 55 | .login section .input-group span i { 56 | font-size: 1.5em; 57 | color: rgba(255, 255, 255, 0.2); 58 | } 59 | .login section input.form-control { 60 | display: block; 61 | width: auto; 62 | height: auto; 63 | border: none; 64 | outline: none; 65 | box-shadow: none; 66 | background: none; 67 | border-radius: 0px; 68 | padding: 10px; 69 | font-size: 1.6em; 70 | width: 100%; 71 | background: transparent; 72 | color: #c2b8b1; 73 | } 74 | .login section input.form-control:focus { 75 | border: none; 76 | } 77 | .login section button { 78 | margin-top: 20px; 79 | background: #27AE60; 80 | border: none; 81 | font-size: 1.6em; 82 | font-weight: 600; 83 | padding: 5px 0; 84 | width: 100%; 85 | border-radius: 3px; 86 | color: #b3eecc; 87 | border-bottom: 4px solid #1e8449; 88 | } 89 | .login section button:hover { 90 | background: #30b166; 91 | -webkit-animation: hop 1s; 92 | animation: hop 1s; 93 | } 94 | 95 | .float { 96 | display: inline-block; 97 | -webkit-transition-duration: 0.3s; 98 | transition-duration: 0.3s; 99 | -webkit-transition-property: transform; 100 | transition-property: transform; 101 | -webkit-transform: translateZ(0); 102 | transform: translateZ(0); 103 | box-shadow: 0 0 1px transparent; 104 | } 105 | 106 | .float:hover, .float:focus, .float:active { 107 | -webkit-transform: translateY(-3px); 108 | transform: translateY(-3px); 109 | } 110 | 111 | /* Large Devices, Wide Screens */ 112 | @media only screen and (max-width: 1200px) { 113 | .login { 114 | width: 600px; 115 | font-size: 2em; 116 | } 117 | } 118 | @media only screen and (max-width: 1100px) { 119 | .login { 120 | margin-top: 2%; 121 | width: 600px; 122 | font-size: 1.7em; 123 | } 124 | } 125 | /* Medium Devices, Desktops */ 126 | @media only screen and (max-width: 992px) { 127 | .login { 128 | margin-top: 1%; 129 | width: 550px; 130 | font-size: 1.7em; 131 | min-height: 0; 132 | } 133 | } 134 | /* Small Devices, Tablets */ 135 | @media only screen and (max-width: 768px) { 136 | .login { 137 | margin-top: 0; 138 | width: 500px; 139 | font-size: 1.3em; 140 | min-height: 0; 141 | } 142 | } 143 | /* Extra Small Devices, Phones */ 144 | @media only screen and (max-width: 480px) { 145 | .login { 146 | margin-top: 0; 147 | width: 400px; 148 | font-size: 1em; 149 | min-height: 0; 150 | } 151 | .login h2 { 152 | margin-top: 0; 153 | } 154 | } 155 | /* Custom, iPhone Retina */ 156 | @media only screen and (max-width: 320px) { 157 | .login { 158 | margin-top: 0; 159 | width: 200px; 160 | font-size: 0.7em; 161 | min-height: 0; 162 | } 163 | } 164 | -------------------------------------------------------------------------------- /css/less/.csslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "adjoining-classes": false, 3 | "box-sizing": false, 4 | "box-model": false, 5 | "compatible-vendor-prefixes": false, 6 | "floats": false, 7 | "font-sizes": false, 8 | "gradients": false, 9 | "important": false, 10 | "known-properties": false, 11 | "outline-none": false, 12 | "qualified-headings": false, 13 | "regex-selectors": false, 14 | "shorthand": false, 15 | "text-indent": false, 16 | "unique-headings": false, 17 | "universal-selector": false, 18 | "unqualified-attributes": false 19 | } 20 | -------------------------------------------------------------------------------- /css/less/alerts.less: -------------------------------------------------------------------------------- 1 | // 2 | // Alerts 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // ------------------------- 8 | 9 | .alert { 10 | padding: @alert-padding; 11 | margin-bottom: @line-height-computed; 12 | border: 1px solid transparent; 13 | border-radius: @alert-border-radius; 14 | 15 | // Headings for larger alerts 16 | h4 { 17 | margin-top: 0; 18 | // Specified for the h4 to prevent conflicts of changing @headings-color 19 | color: inherit; 20 | } 21 | 22 | // Provide class for links that match alerts 23 | .alert-link { 24 | font-weight: @alert-link-font-weight; 25 | } 26 | 27 | // Improve alignment and spacing of inner content 28 | > p, 29 | > ul { 30 | margin-bottom: 0; 31 | } 32 | 33 | > p + p { 34 | margin-top: 5px; 35 | } 36 | } 37 | 38 | // Dismissible alerts 39 | // 40 | // Expand the right padding and account for the close button's positioning. 41 | 42 | .alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. 43 | .alert-dismissible { 44 | padding-right: (@alert-padding + 20); 45 | 46 | // Adjust close link position 47 | .close { 48 | position: relative; 49 | top: -2px; 50 | right: -21px; 51 | color: inherit; 52 | } 53 | } 54 | 55 | // Alternate styles 56 | // 57 | // Generate contextual modifier classes for colorizing the alert. 58 | 59 | .alert-success { 60 | .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); 61 | } 62 | 63 | .alert-info { 64 | .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); 65 | } 66 | 67 | .alert-warning { 68 | .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); 69 | } 70 | 71 | .alert-danger { 72 | .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); 73 | } 74 | -------------------------------------------------------------------------------- /css/less/badges.less: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .badge { 8 | display: inline-block; 9 | min-width: 10px; 10 | padding: 3px 7px; 11 | font-size: @font-size-small; 12 | font-weight: @badge-font-weight; 13 | color: @badge-color; 14 | line-height: @badge-line-height; 15 | vertical-align: middle; 16 | white-space: nowrap; 17 | text-align: center; 18 | background-color: @badge-bg; 19 | border-radius: @badge-border-radius; 20 | 21 | // Empty badges collapse automatically (not available in IE8) 22 | &:empty { 23 | display: none; 24 | } 25 | 26 | // Quick fix for badges in buttons 27 | .btn & { 28 | position: relative; 29 | top: -1px; 30 | } 31 | 32 | .btn-xs &, 33 | .btn-group-xs > .btn & { 34 | top: 0; 35 | padding: 1px 5px; 36 | } 37 | 38 | // Hover state, but only for links 39 | a& { 40 | &:hover, 41 | &:focus { 42 | color: @badge-link-hover-color; 43 | text-decoration: none; 44 | cursor: pointer; 45 | } 46 | } 47 | 48 | // Account for badges in navs 49 | .list-group-item.active > &, 50 | .nav-pills > .active > a > & { 51 | color: @badge-active-color; 52 | background-color: @badge-active-bg; 53 | } 54 | 55 | .list-group-item > & { 56 | float: right; 57 | } 58 | 59 | .list-group-item > & + & { 60 | margin-right: 5px; 61 | } 62 | 63 | .nav-pills > li > a > & { 64 | margin-left: 3px; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /css/less/bootstrap.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.6 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | // Core variables and mixins 8 | @import "variables.less"; 9 | @import "mixins.less"; 10 | 11 | // Reset and dependencies 12 | @import "normalize.less"; 13 | @import "print.less"; 14 | @import "glyphicons.less"; 15 | 16 | // Core CSS 17 | @import "scaffolding.less"; 18 | @import "type.less"; 19 | @import "code.less"; 20 | @import "grid.less"; 21 | @import "tables.less"; 22 | @import "forms.less"; 23 | @import "buttons.less"; 24 | 25 | // Components 26 | @import "component-animations.less"; 27 | @import "dropdowns.less"; 28 | @import "button-groups.less"; 29 | @import "input-groups.less"; 30 | @import "navs.less"; 31 | @import "navbar.less"; 32 | @import "breadcrumbs.less"; 33 | @import "pagination.less"; 34 | @import "pager.less"; 35 | @import "labels.less"; 36 | @import "badges.less"; 37 | @import "jumbotron.less"; 38 | @import "thumbnails.less"; 39 | @import "alerts.less"; 40 | @import "progress-bars.less"; 41 | @import "media.less"; 42 | @import "list-group.less"; 43 | @import "panels.less"; 44 | @import "responsive-embed.less"; 45 | @import "wells.less"; 46 | @import "close.less"; 47 | 48 | // Components w/ JavaScript 49 | @import "modals.less"; 50 | @import "tooltip.less"; 51 | @import "popovers.less"; 52 | @import "carousel.less"; 53 | 54 | // Utility classes 55 | @import "utilities.less"; 56 | @import "responsive-utilities.less"; 57 | -------------------------------------------------------------------------------- /css/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /css/less/buttons.less: -------------------------------------------------------------------------------- 1 | // 2 | // Buttons 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // -------------------------------------------------- 8 | 9 | .btn { 10 | display: inline-block; 11 | margin-bottom: 0; // For input.btn 12 | font-weight: @btn-font-weight; 13 | text-align: center; 14 | vertical-align: middle; 15 | touch-action: manipulation; 16 | cursor: pointer; 17 | background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 18 | border: 1px solid transparent; 19 | white-space: nowrap; 20 | .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base); 21 | .user-select(none); 22 | 23 | &, 24 | &:active, 25 | &.active { 26 | &:focus, 27 | &.focus { 28 | .tab-focus(); 29 | } 30 | } 31 | 32 | &:hover, 33 | &:focus, 34 | &.focus { 35 | color: @btn-default-color; 36 | text-decoration: none; 37 | } 38 | 39 | &:active, 40 | &.active { 41 | outline: 0; 42 | background-image: none; 43 | .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); 44 | } 45 | 46 | &.disabled, 47 | &[disabled], 48 | fieldset[disabled] & { 49 | cursor: @cursor-disabled; 50 | .opacity(.65); 51 | .box-shadow(none); 52 | } 53 | 54 | a& { 55 | &.disabled, 56 | fieldset[disabled] & { 57 | pointer-events: none; // Future-proof disabling of clicks on `` elements 58 | } 59 | } 60 | } 61 | 62 | 63 | // Alternate buttons 64 | // -------------------------------------------------- 65 | 66 | .btn-default { 67 | .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border); 68 | } 69 | .btn-primary { 70 | .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border); 71 | } 72 | // Success appears as green 73 | .btn-success { 74 | .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border); 75 | } 76 | // Info appears as blue-green 77 | .btn-info { 78 | .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border); 79 | } 80 | // Warning appears as orange 81 | .btn-warning { 82 | .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border); 83 | } 84 | // Danger and error appear as red 85 | .btn-danger { 86 | .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border); 87 | } 88 | 89 | 90 | // Link buttons 91 | // ------------------------- 92 | 93 | // Make a button look and behave like a link 94 | .btn-link { 95 | color: @link-color; 96 | font-weight: normal; 97 | border-radius: 0; 98 | 99 | &, 100 | &:active, 101 | &.active, 102 | &[disabled], 103 | fieldset[disabled] & { 104 | background-color: transparent; 105 | .box-shadow(none); 106 | } 107 | &, 108 | &:hover, 109 | &:focus, 110 | &:active { 111 | border-color: transparent; 112 | } 113 | &:hover, 114 | &:focus { 115 | color: @link-hover-color; 116 | text-decoration: @link-hover-decoration; 117 | background-color: transparent; 118 | } 119 | &[disabled], 120 | fieldset[disabled] & { 121 | &:hover, 122 | &:focus { 123 | color: @btn-link-disabled-color; 124 | text-decoration: none; 125 | } 126 | } 127 | } 128 | 129 | 130 | // Button Sizes 131 | // -------------------------------------------------- 132 | 133 | .btn-lg { 134 | // line-height: ensure even-numbered height of button next to large input 135 | .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large); 136 | } 137 | .btn-sm { 138 | // line-height: ensure proper height of button next to small input 139 | .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small); 140 | } 141 | .btn-xs { 142 | .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small); 143 | } 144 | 145 | 146 | // Block button 147 | // -------------------------------------------------- 148 | 149 | .btn-block { 150 | display: block; 151 | width: 100%; 152 | } 153 | 154 | // Vertically space out multiple block buttons 155 | .btn-block + .btn-block { 156 | margin-top: 5px; 157 | } 158 | 159 | // Specificity overrides 160 | input[type="submit"], 161 | input[type="reset"], 162 | input[type="button"] { 163 | &.btn-block { 164 | width: 100%; 165 | } 166 | } 167 | -------------------------------------------------------------------------------- /css/less/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: (@font-size-base * 1.5); 9 | font-weight: @close-font-weight; 10 | line-height: 1; 11 | color: @close-color; 12 | text-shadow: @close-text-shadow; 13 | .opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: @close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | .opacity(.5); 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 27 | button& { 28 | padding: 0; 29 | cursor: pointer; 30 | background: transparent; 31 | border: 0; 32 | -webkit-appearance: none; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /css/less/code.less: -------------------------------------------------------------------------------- 1 | // 2 | // Code (inline and block) 3 | // -------------------------------------------------- 4 | 5 | 6 | // Inline and block code styles 7 | code, 8 | kbd, 9 | pre, 10 | samp { 11 | font-family: @font-family-monospace; 12 | } 13 | 14 | // Inline code 15 | code { 16 | padding: 2px 4px; 17 | font-size: 90%; 18 | color: @code-color; 19 | background-color: @code-bg; 20 | border-radius: @border-radius-base; 21 | } 22 | 23 | // User input typically entered via keyboard 24 | kbd { 25 | padding: 2px 4px; 26 | font-size: 90%; 27 | color: @kbd-color; 28 | background-color: @kbd-bg; 29 | border-radius: @border-radius-small; 30 | box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); 31 | 32 | kbd { 33 | padding: 0; 34 | font-size: 100%; 35 | font-weight: bold; 36 | box-shadow: none; 37 | } 38 | } 39 | 40 | // Blocks of code 41 | pre { 42 | display: block; 43 | padding: ((@line-height-computed - 1) / 2); 44 | margin: 0 0 (@line-height-computed / 2); 45 | font-size: (@font-size-base - 1); // 14px to 13px 46 | line-height: @line-height-base; 47 | word-break: break-all; 48 | word-wrap: break-word; 49 | color: @pre-color; 50 | background-color: @pre-bg; 51 | border: 1px solid @pre-border-color; 52 | border-radius: @border-radius-base; 53 | 54 | // Account for some code outputs that place code tags in pre tags 55 | code { 56 | padding: 0; 57 | font-size: inherit; 58 | color: inherit; 59 | white-space: pre-wrap; 60 | background-color: transparent; 61 | border-radius: 0; 62 | } 63 | } 64 | 65 | // Enable scrollable blocks of code 66 | .pre-scrollable { 67 | max-height: @pre-scrollable-max-height; 68 | overflow-y: scroll; 69 | } 70 | -------------------------------------------------------------------------------- /css/less/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | 21 | &.in { display: block; } 22 | tr&.in { display: table-row; } 23 | tbody&.in { display: table-row-group; } 24 | } 25 | 26 | .collapsing { 27 | position: relative; 28 | height: 0; 29 | overflow: hidden; 30 | .transition-property(~"height, visibility"); 31 | .transition-duration(.35s); 32 | .transition-timing-function(ease); 33 | } 34 | -------------------------------------------------------------------------------- /css/less/grid.less: -------------------------------------------------------------------------------- 1 | // 2 | // Grid system 3 | // -------------------------------------------------- 4 | 5 | 6 | // Container widths 7 | // 8 | // Set the container width, and override it for fixed navbars in media queries. 9 | 10 | .container { 11 | .container-fixed(); 12 | 13 | @media (min-width: @screen-sm-min) { 14 | width: @container-sm; 15 | } 16 | @media (min-width: @screen-md-min) { 17 | width: @container-md; 18 | } 19 | @media (min-width: @screen-lg-min) { 20 | width: @container-lg; 21 | } 22 | } 23 | 24 | 25 | // Fluid container 26 | // 27 | // Utilizes the mixin meant for fixed width containers, but without any defined 28 | // width for fluid, full width layouts. 29 | 30 | .container-fluid { 31 | .container-fixed(); 32 | } 33 | 34 | 35 | // Row 36 | // 37 | // Rows contain and clear the floats of your columns. 38 | 39 | .row { 40 | .make-row(); 41 | } 42 | 43 | 44 | // Columns 45 | // 46 | // Common styles for small and large grid columns 47 | 48 | .make-grid-columns(); 49 | 50 | 51 | // Extra small grid 52 | // 53 | // Columns, offsets, pushes, and pulls for extra small devices like 54 | // smartphones. 55 | 56 | .make-grid(xs); 57 | 58 | 59 | // Small grid 60 | // 61 | // Columns, offsets, pushes, and pulls for the small device range, from phones 62 | // to tablets. 63 | 64 | @media (min-width: @screen-sm-min) { 65 | .make-grid(sm); 66 | } 67 | 68 | 69 | // Medium grid 70 | // 71 | // Columns, offsets, pushes, and pulls for the desktop device range. 72 | 73 | @media (min-width: @screen-md-min) { 74 | .make-grid(md); 75 | } 76 | 77 | 78 | // Large grid 79 | // 80 | // Columns, offsets, pushes, and pulls for the large desktop device range. 81 | 82 | @media (min-width: @screen-lg-min) { 83 | .make-grid(lg); 84 | } 85 | -------------------------------------------------------------------------------- /css/less/input-groups.less: -------------------------------------------------------------------------------- 1 | // 2 | // Input groups 3 | // -------------------------------------------------- 4 | 5 | // Base styles 6 | // ------------------------- 7 | .input-group { 8 | position: relative; // For dropdowns 9 | display: table; 10 | border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table 11 | 12 | // Undo padding and float of grid classes 13 | &[class*="col-"] { 14 | float: none; 15 | padding-left: 0; 16 | padding-right: 0; 17 | } 18 | 19 | .form-control { 20 | // Ensure that the input is always above the *appended* addon button for 21 | // proper border colors. 22 | position: relative; 23 | z-index: 2; 24 | 25 | // IE9 fubars the placeholder attribute in text inputs and the arrows on 26 | // select elements in input groups. To fix it, we float the input. Details: 27 | // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855 28 | float: left; 29 | 30 | width: 100%; 31 | margin-bottom: 0; 32 | 33 | &:focus { 34 | z-index: 3; 35 | } 36 | } 37 | } 38 | 39 | // Sizing options 40 | // 41 | // Remix the default form control sizing classes into new ones for easier 42 | // manipulation. 43 | 44 | .input-group-lg > .form-control, 45 | .input-group-lg > .input-group-addon, 46 | .input-group-lg > .input-group-btn > .btn { 47 | .input-lg(); 48 | } 49 | .input-group-sm > .form-control, 50 | .input-group-sm > .input-group-addon, 51 | .input-group-sm > .input-group-btn > .btn { 52 | .input-sm(); 53 | } 54 | 55 | 56 | // Display as table-cell 57 | // ------------------------- 58 | .input-group-addon, 59 | .input-group-btn, 60 | .input-group .form-control { 61 | display: table-cell; 62 | 63 | &:not(:first-child):not(:last-child) { 64 | border-radius: 0; 65 | } 66 | } 67 | // Addon and addon wrapper for buttons 68 | .input-group-addon, 69 | .input-group-btn { 70 | width: 1%; 71 | white-space: nowrap; 72 | vertical-align: middle; // Match the inputs 73 | } 74 | 75 | // Text input groups 76 | // ------------------------- 77 | .input-group-addon { 78 | padding: @padding-base-vertical @padding-base-horizontal; 79 | font-size: @font-size-base; 80 | font-weight: normal; 81 | line-height: 1; 82 | color: @input-color; 83 | text-align: center; 84 | background-color: @input-group-addon-bg; 85 | border: 1px solid @input-group-addon-border-color; 86 | border-radius: @input-border-radius; 87 | 88 | // Sizing 89 | &.input-sm { 90 | padding: @padding-small-vertical @padding-small-horizontal; 91 | font-size: @font-size-small; 92 | border-radius: @input-border-radius-small; 93 | } 94 | &.input-lg { 95 | padding: @padding-large-vertical @padding-large-horizontal; 96 | font-size: @font-size-large; 97 | border-radius: @input-border-radius-large; 98 | } 99 | 100 | // Nuke default margins from checkboxes and radios to vertically center within. 101 | input[type="radio"], 102 | input[type="checkbox"] { 103 | margin-top: 0; 104 | } 105 | } 106 | 107 | // Reset rounded corners 108 | .input-group .form-control:first-child, 109 | .input-group-addon:first-child, 110 | .input-group-btn:first-child > .btn, 111 | .input-group-btn:first-child > .btn-group > .btn, 112 | .input-group-btn:first-child > .dropdown-toggle, 113 | .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), 114 | .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { 115 | .border-right-radius(0); 116 | } 117 | .input-group-addon:first-child { 118 | border-right: 0; 119 | } 120 | .input-group .form-control:last-child, 121 | .input-group-addon:last-child, 122 | .input-group-btn:last-child > .btn, 123 | .input-group-btn:last-child > .btn-group > .btn, 124 | .input-group-btn:last-child > .dropdown-toggle, 125 | .input-group-btn:first-child > .btn:not(:first-child), 126 | .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { 127 | .border-left-radius(0); 128 | } 129 | .input-group-addon:last-child { 130 | border-left: 0; 131 | } 132 | 133 | // Button input groups 134 | // ------------------------- 135 | .input-group-btn { 136 | position: relative; 137 | // Jankily prevent input button groups from wrapping with `white-space` and 138 | // `font-size` in combination with `inline-block` on buttons. 139 | font-size: 0; 140 | white-space: nowrap; 141 | 142 | // Negative margin for spacing, position for bringing hovered/focused/actived 143 | // element above the siblings. 144 | > .btn { 145 | position: relative; 146 | + .btn { 147 | margin-left: -1px; 148 | } 149 | // Bring the "active" button to the front 150 | &:hover, 151 | &:focus, 152 | &:active { 153 | z-index: 2; 154 | } 155 | } 156 | 157 | // Negative margin to only have a 1px border between the two 158 | &:first-child { 159 | > .btn, 160 | > .btn-group { 161 | margin-right: -1px; 162 | } 163 | } 164 | &:last-child { 165 | > .btn, 166 | > .btn-group { 167 | z-index: 2; 168 | margin-left: -1px; 169 | } 170 | } 171 | } 172 | -------------------------------------------------------------------------------- /css/less/jumbotron.less: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding-top: @jumbotron-padding; 8 | padding-bottom: @jumbotron-padding; 9 | margin-bottom: @jumbotron-padding; 10 | color: @jumbotron-color; 11 | background-color: @jumbotron-bg; 12 | 13 | h1, 14 | .h1 { 15 | color: @jumbotron-heading-color; 16 | } 17 | 18 | p { 19 | margin-bottom: (@jumbotron-padding / 2); 20 | font-size: @jumbotron-font-size; 21 | font-weight: 200; 22 | } 23 | 24 | > hr { 25 | border-top-color: darken(@jumbotron-bg, 10%); 26 | } 27 | 28 | .container &, 29 | .container-fluid & { 30 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container 31 | padding-left: (@grid-gutter-width / 2); 32 | padding-right: (@grid-gutter-width / 2); 33 | } 34 | 35 | .container { 36 | max-width: 100%; 37 | } 38 | 39 | @media screen and (min-width: @screen-sm-min) { 40 | padding-top: (@jumbotron-padding * 1.6); 41 | padding-bottom: (@jumbotron-padding * 1.6); 42 | 43 | .container &, 44 | .container-fluid & { 45 | padding-left: (@jumbotron-padding * 2); 46 | padding-right: (@jumbotron-padding * 2); 47 | } 48 | 49 | h1, 50 | .h1 { 51 | font-size: @jumbotron-heading-font-size; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /css/less/labels.less: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: @label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // Add hover effects, but only for links 18 | a& { 19 | &:hover, 20 | &:focus { 21 | color: @label-link-hover-color; 22 | text-decoration: none; 23 | cursor: pointer; 24 | } 25 | } 26 | 27 | // Empty labels collapse automatically (not available in IE8) 28 | &:empty { 29 | display: none; 30 | } 31 | 32 | // Quick fix for labels in buttons 33 | .btn & { 34 | position: relative; 35 | top: -1px; 36 | } 37 | } 38 | 39 | // Colors 40 | // Contextual variations (linked labels get darker on :hover) 41 | 42 | .label-default { 43 | .label-variant(@label-default-bg); 44 | } 45 | 46 | .label-primary { 47 | .label-variant(@label-primary-bg); 48 | } 49 | 50 | .label-success { 51 | .label-variant(@label-success-bg); 52 | } 53 | 54 | .label-info { 55 | .label-variant(@label-info-bg); 56 | } 57 | 58 | .label-warning { 59 | .label-variant(@label-warning-bg); 60 | } 61 | 62 | .label-danger { 63 | .label-variant(@label-danger-bg); 64 | } 65 | -------------------------------------------------------------------------------- /css/less/list-group.less: -------------------------------------------------------------------------------- 1 | // 2 | // List groups 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | // 8 | // Easily usable on