From 841f1eedfc8b2c49f0395d5f0ea2bfa269c19df2 Mon Sep 17 00:00:00 2001 From: Thomas Pointhuber Date: Mon, 29 Sep 2014 10:00:24 +0200 Subject: [PATCH] oscar template: generate bootstrap.min.css from source --- Makefile | 1 + searx/static/oscar/css/bootstrap.min.css | Bin 109518 -> 110981 bytes .../static/oscar/less/bootstrap/.csscomb.json | 297 ++++++ searx/static/oscar/less/bootstrap/.csslintrc | 19 + searx/static/oscar/less/bootstrap/alerts.less | 68 ++ searx/static/oscar/less/bootstrap/badges.less | 55 ++ .../oscar/less/bootstrap/bootstrap.less | 50 ++ .../oscar/less/bootstrap/breadcrumbs.less | 26 + .../oscar/less/bootstrap/button-groups.less | 240 +++++ .../static/oscar/less/bootstrap/buttons.less | 157 ++++ .../static/oscar/less/bootstrap/carousel.less | 243 +++++ searx/static/oscar/less/bootstrap/close.less | 33 + searx/static/oscar/less/bootstrap/code.less | 68 ++ .../less/bootstrap/component-animations.less | 31 + .../oscar/less/bootstrap/dropdowns.less | 215 +++++ searx/static/oscar/less/bootstrap/forms.less | 540 +++++++++++ .../oscar/less/bootstrap/glyphicons.less | 233 +++++ searx/static/oscar/less/bootstrap/grid.less | 84 ++ .../oscar/less/bootstrap/input-groups.less | 166 ++++ .../oscar/less/bootstrap/jumbotron.less | 48 + searx/static/oscar/less/bootstrap/labels.less | 64 ++ .../oscar/less/bootstrap/list-group.less | 131 +++ searx/static/oscar/less/bootstrap/media.less | 56 ++ searx/static/oscar/less/bootstrap/mixins.less | 39 + .../oscar/less/bootstrap/mixins/alerts.less | 14 + .../bootstrap/mixins/background-variant.less | 8 + .../less/bootstrap/mixins/border-radius.less | 18 + .../oscar/less/bootstrap/mixins/buttons.less | 50 ++ .../less/bootstrap/mixins/center-block.less | 7 + .../oscar/less/bootstrap/mixins/clearfix.less | 22 + .../oscar/less/bootstrap/mixins/forms.less | 81 ++ .../less/bootstrap/mixins/gradients.less | 59 ++ .../less/bootstrap/mixins/grid-framework.less | 91 ++ .../oscar/less/bootstrap/mixins/grid.less | 122 +++ .../less/bootstrap/mixins/hide-text.less | 21 + .../oscar/less/bootstrap/mixins/image.less | 34 + .../oscar/less/bootstrap/mixins/labels.less | 12 + .../less/bootstrap/mixins/list-group.less | 29 + .../less/bootstrap/mixins/nav-divider.less | 10 + .../bootstrap/mixins/nav-vertical-align.less | 9 + .../oscar/less/bootstrap/mixins/opacity.less | 8 + .../less/bootstrap/mixins/pagination.less | 23 + .../oscar/less/bootstrap/mixins/panels.less | 24 + .../less/bootstrap/mixins/progress-bar.less | 10 + .../less/bootstrap/mixins/reset-filter.less | 8 + .../oscar/less/bootstrap/mixins/resize.less | 6 + .../mixins/responsive-visibility.less | 15 + .../oscar/less/bootstrap/mixins/size.less | 10 + .../less/bootstrap/mixins/tab-focus.less | 9 + .../less/bootstrap/mixins/table-row.less | 28 + .../less/bootstrap/mixins/text-emphasis.less | 8 + .../less/bootstrap/mixins/text-overflow.less | 8 + .../bootstrap/mixins/vendor-prefixes.less | 224 +++++ searx/static/oscar/less/bootstrap/modals.less | 150 ++++ searx/static/oscar/less/bootstrap/navbar.less | 655 ++++++++++++++ searx/static/oscar/less/bootstrap/navs.less | 242 +++++ .../oscar/less/bootstrap/normalize.less | 425 +++++++++ searx/static/oscar/less/bootstrap/pager.less | 55 ++ .../oscar/less/bootstrap/pagination.less | 88 ++ searx/static/oscar/less/bootstrap/panels.less | 243 +++++ .../static/oscar/less/bootstrap/popovers.less | 133 +++ searx/static/oscar/less/bootstrap/print.less | 101 +++ .../oscar/less/bootstrap/progress-bars.less | 105 +++ .../less/bootstrap/responsive-embed.less | 34 + .../less/bootstrap/responsive-utilities.less | 194 ++++ .../oscar/less/bootstrap/scaffolding.less | 150 ++++ searx/static/oscar/less/bootstrap/tables.less | 233 +++++ searx/static/oscar/less/bootstrap/theme.less | 258 ++++++ .../oscar/less/bootstrap/thumbnails.less | 36 + .../static/oscar/less/bootstrap/tooltip.less | 95 ++ searx/static/oscar/less/bootstrap/type.less | 313 +++++++ .../oscar/less/bootstrap/utilities.less | 57 ++ .../oscar/less/bootstrap/variables.less | 846 ++++++++++++++++++ searx/static/oscar/less/bootstrap/wells.less | 29 + 74 files changed, 8274 insertions(+) create mode 100644 searx/static/oscar/less/bootstrap/.csscomb.json create mode 100644 searx/static/oscar/less/bootstrap/.csslintrc create mode 100644 searx/static/oscar/less/bootstrap/alerts.less create mode 100644 searx/static/oscar/less/bootstrap/badges.less create mode 100644 searx/static/oscar/less/bootstrap/bootstrap.less create mode 100644 searx/static/oscar/less/bootstrap/breadcrumbs.less create mode 100644 searx/static/oscar/less/bootstrap/button-groups.less create mode 100644 searx/static/oscar/less/bootstrap/buttons.less create mode 100644 searx/static/oscar/less/bootstrap/carousel.less create mode 100644 searx/static/oscar/less/bootstrap/close.less create mode 100644 searx/static/oscar/less/bootstrap/code.less create mode 100644 searx/static/oscar/less/bootstrap/component-animations.less create mode 100644 searx/static/oscar/less/bootstrap/dropdowns.less create mode 100644 searx/static/oscar/less/bootstrap/forms.less create mode 100644 searx/static/oscar/less/bootstrap/glyphicons.less create mode 100644 searx/static/oscar/less/bootstrap/grid.less create mode 100644 searx/static/oscar/less/bootstrap/input-groups.less create mode 100644 searx/static/oscar/less/bootstrap/jumbotron.less create mode 100644 searx/static/oscar/less/bootstrap/labels.less create mode 100644 searx/static/oscar/less/bootstrap/list-group.less create mode 100644 searx/static/oscar/less/bootstrap/media.less create mode 100644 searx/static/oscar/less/bootstrap/mixins.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/alerts.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/background-variant.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/border-radius.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/buttons.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/center-block.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/clearfix.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/forms.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/gradients.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/grid-framework.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/grid.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/hide-text.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/image.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/labels.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/list-group.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/nav-divider.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/nav-vertical-align.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/opacity.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/pagination.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/panels.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/progress-bar.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/reset-filter.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/resize.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/responsive-visibility.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/size.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/tab-focus.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/table-row.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/text-emphasis.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/text-overflow.less create mode 100644 searx/static/oscar/less/bootstrap/mixins/vendor-prefixes.less create mode 100644 searx/static/oscar/less/bootstrap/modals.less create mode 100644 searx/static/oscar/less/bootstrap/navbar.less create mode 100644 searx/static/oscar/less/bootstrap/navs.less create mode 100644 searx/static/oscar/less/bootstrap/normalize.less create mode 100644 searx/static/oscar/less/bootstrap/pager.less create mode 100644 searx/static/oscar/less/bootstrap/pagination.less create mode 100644 searx/static/oscar/less/bootstrap/panels.less create mode 100644 searx/static/oscar/less/bootstrap/popovers.less create mode 100644 searx/static/oscar/less/bootstrap/print.less create mode 100644 searx/static/oscar/less/bootstrap/progress-bars.less create mode 100644 searx/static/oscar/less/bootstrap/responsive-embed.less create mode 100644 searx/static/oscar/less/bootstrap/responsive-utilities.less create mode 100644 searx/static/oscar/less/bootstrap/scaffolding.less create mode 100644 searx/static/oscar/less/bootstrap/tables.less create mode 100644 searx/static/oscar/less/bootstrap/theme.less create mode 100644 searx/static/oscar/less/bootstrap/thumbnails.less create mode 100644 searx/static/oscar/less/bootstrap/tooltip.less create mode 100644 searx/static/oscar/less/bootstrap/type.less create mode 100644 searx/static/oscar/less/bootstrap/utilities.less create mode 100644 searx/static/oscar/less/bootstrap/variables.less create mode 100644 searx/static/oscar/less/bootstrap/wells.less diff --git a/Makefile b/Makefile index f56060868..0e934018b 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,7 @@ minimal: bin/buildout minimal.cfg setup.py styles: @lessc -x searx/static/default/less/style.less > searx/static/default/css/style.css + @lessc -x searx/static/oscar/less/bootstrap/bootstrap.less > searx/static/oscar/css/bootstrap.min.css locales: @pybabel compile -d searx/translations diff --git a/searx/static/oscar/css/bootstrap.min.css b/searx/static/oscar/css/bootstrap.min.css index a9f35ceedfac7fc0559b121bed105eaf80f10bf2..5cd19edb09bf41a15fc64dff7cd7730f116829bb 100644 GIT binary patch delta 23131 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 S)btQDcja;CLoBxo?*9ShMYl%) delta 20991 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 a;7=zm(&xHKWi(|E3H4@Jdw}G4Vg3i2)wh`d diff --git a/searx/static/oscar/less/bootstrap/.csscomb.json b/searx/static/oscar/less/bootstrap/.csscomb.json new file mode 100644 index 000000000..8456e41df --- /dev/null +++ b/searx/static/oscar/less/bootstrap/.csscomb.json @@ -0,0 +1,297 @@ +{ + "always-semicolon": true, + "block-indent": 2, + "colon-space": [0, 1], + "color-case": "lower", + "color-shorthand": true, + "combinator-space": true, + "element-case": "lower", + "eof-newline": true, + "leading-zero": false, + "remove-empty-rulesets": true, + "rule-indent": 2, + "stick-brace": " ", + "strip-spaces": true, + "unitless-zero": true, + "vendor-prefix-align": true, + "sort-order": [ + [ + "position", + "top", + "right", + "bottom", + "left", + "z-index", + "display", + "float", + "width", + "min-width", + "max-width", + "height", + "min-height", + "max-height", + "-webkit-box-sizing", + "-moz-box-sizing", + "box-sizing", + "-webkit-appearance", + "padding", + "padding-top", + "padding-right", + "padding-bottom", + "padding-left", + "margin", + "margin-top", + "margin-right", + "margin-bottom", + "margin-left", + "overflow", + "overflow-x", + "overflow-y", + "-webkit-overflow-scrolling", + "-ms-overflow-x", + "-ms-overflow-y", + "-ms-overflow-style", + "clip", + "clear", + "font", + "font-family", + "font-size", + "font-style", + "font-weight", + "font-variant", + "font-size-adjust", + "font-stretch", + "font-effect", + "font-emphasize", + "font-emphasize-position", + "font-emphasize-style", + "font-smooth", + "-webkit-hyphens", + "-moz-hyphens", + "hyphens", + "line-height", + "color", + "text-align", + "-webkit-text-align-last", + "-moz-text-align-last", + "-ms-text-align-last", + "text-align-last", + "text-emphasis", + "text-emphasis-color", + "text-emphasis-style", + "text-emphasis-position", + "text-decoration", + "text-indent", + "text-justify", + "text-outline", + "-ms-text-overflow", + "text-overflow", + "text-overflow-ellipsis", + "text-overflow-mode", + "text-shadow", + "text-transform", + "text-wrap", + "-webkit-text-size-adjust", + "-ms-text-size-adjust", + "letter-spacing", + "-ms-word-break", + "word-break", + "word-spacing", + "-ms-word-wrap", + "word-wrap", + "-moz-tab-size", + "-o-tab-size", + "tab-size", + "white-space", + "vertical-align", + "list-style", + "list-style-position", + "list-style-type", + "list-style-image", + "pointer-events", + "cursor", + "visibility", + "zoom", + "flex-direction", + "flex-order", + "flex-pack", + "flex-align", + "table-layout", + "empty-cells", + "caption-side", + "border-spacing", + "border-collapse", + "content", + "quotes", + "counter-reset", + "counter-increment", + "resize", + "-webkit-user-select", + "-moz-user-select", + "-ms-user-select", + "-o-user-select", + "user-select", + "nav-index", + "nav-up", + "nav-right", + "nav-down", + "nav-left", + "background", + "background-color", + "background-image", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", + "filter:progid:DXImageTransform.Microsoft.gradient", + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", + "filter", + "background-repeat", + "background-attachment", + "background-position", + "background-position-x", + "background-position-y", + "-webkit-background-clip", + "-moz-background-clip", + "background-clip", + "background-origin", + "-webkit-background-size", + "-moz-background-size", + "-o-background-size", + "background-size", + "border", + "border-color", + "border-style", + "border-width", + "border-top", + "border-top-color", + "border-top-style", + "border-top-width", + "border-right", + "border-right-color", + "border-right-style", + "border-right-width", + "border-bottom", + "border-bottom-color", + "border-bottom-style", + "border-bottom-width", + "border-left", + "border-left-color", + "border-left-style", + "border-left-width", + "border-radius", + "border-top-left-radius", + "border-top-right-radius", + "border-bottom-right-radius", + "border-bottom-left-radius", + "-webkit-border-image", + "-moz-border-image", + "-o-border-image", + "border-image", + "-webkit-border-image-source", + "-moz-border-image-source", + "-o-border-image-source", + "border-image-source", + "-webkit-border-image-slice", + "-moz-border-image-slice", + "-o-border-image-slice", + "border-image-slice", + "-webkit-border-image-width", + "-moz-border-image-width", + "-o-border-image-width", + "border-image-width", + "-webkit-border-image-outset", + "-moz-border-image-outset", + "-o-border-image-outset", + "border-image-outset", + "-webkit-border-image-repeat", + "-moz-border-image-repeat", + "-o-border-image-repeat", + "border-image-repeat", + "outline", + "outline-width", + "outline-style", + "outline-color", + "outline-offset", + "-webkit-box-shadow", + "-moz-box-shadow", + "box-shadow", + "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", + "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", + "opacity", + "-ms-interpolation-mode", + "-webkit-transition", + "-moz-transition", + "-ms-transition", + "-o-transition", + "transition", + "-webkit-transition-delay", + "-moz-transition-delay", + "-ms-transition-delay", + "-o-transition-delay", + "transition-delay", + "-webkit-transition-timing-function", + "-moz-transition-timing-function", + "-ms-transition-timing-function", + "-o-transition-timing-function", + "transition-timing-function", + "-webkit-transition-duration", + "-moz-transition-duration", + "-ms-transition-duration", + "-o-transition-duration", + "transition-duration", + "-webkit-transition-property", + "-moz-transition-property", + "-ms-transition-property", + "-o-transition-property", + "transition-property", + "-webkit-transform", + "-moz-transform", + "-ms-transform", + "-o-transform", + "transform", + "-webkit-transform-origin", + "-moz-transform-origin", + "-ms-transform-origin", + "-o-transform-origin", + "transform-origin", + "-webkit-animation", + "-moz-animation", + "-ms-animation", + "-o-animation", + "animation", + "-webkit-animation-name", + "-moz-animation-name", + "-ms-animation-name", + "-o-animation-name", + "animation-name", + "-webkit-animation-duration", + "-moz-animation-duration", + "-ms-animation-duration", + "-o-animation-duration", + "animation-duration", + "-webkit-animation-play-state", + "-moz-animation-play-state", + "-ms-animation-play-state", + "-o-animation-play-state", + "animation-play-state", + "-webkit-animation-timing-function", + "-moz-animation-timing-function", + "-ms-animation-timing-function", + "-o-animation-timing-function", + "animation-timing-function", + "-webkit-animation-delay", + "-moz-animation-delay", + "-ms-animation-delay", + "-o-animation-delay", + "animation-delay", + "-webkit-animation-iteration-count", + "-moz-animation-iteration-count", + "-ms-animation-iteration-count", + "-o-animation-iteration-count", + "animation-iteration-count", + "-webkit-animation-direction", + "-moz-animation-direction", + "-ms-animation-direction", + "-o-animation-direction", + "animation-direction" + ] + ] +} diff --git a/searx/static/oscar/less/bootstrap/.csslintrc b/searx/static/oscar/less/bootstrap/.csslintrc new file mode 100644 index 000000000..005b86236 --- /dev/null +++ b/searx/static/oscar/less/bootstrap/.csslintrc @@ -0,0 +1,19 @@ +{ + "adjoining-classes": false, + "box-sizing": false, + "box-model": false, + "compatible-vendor-prefixes": false, + "floats": false, + "font-sizes": false, + "gradients": false, + "important": false, + "known-properties": false, + "outline-none": false, + "qualified-headings": false, + "regex-selectors": false, + "shorthand": false, + "text-indent": false, + "unique-headings": false, + "universal-selector": false, + "unqualified-attributes": false +} diff --git a/searx/static/oscar/less/bootstrap/alerts.less b/searx/static/oscar/less/bootstrap/alerts.less new file mode 100644 index 000000000..df070b8ab --- /dev/null +++ b/searx/static/oscar/less/bootstrap/alerts.less @@ -0,0 +1,68 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: @alert-padding; + margin-bottom: @line-height-computed; + border: 1px solid transparent; + border-radius: @alert-border-radius; + + // Headings for larger alerts + h4 { + margin-top: 0; + // Specified for the h4 to prevent conflicts of changing @headings-color + color: inherit; + } + // Provide class for links that match alerts + .alert-link { + font-weight: @alert-link-font-weight; + } + + // Improve alignment and spacing of inner content + > p, + > ul { + margin-bottom: 0; + } + > p + p { + margin-top: 5px; + } +} + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. +.alert-dismissible { + padding-right: (@alert-padding + 20); + + // Adjust close link position + .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } +} + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +.alert-success { + .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); +} +.alert-info { + .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); +} +.alert-warning { + .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); +} +.alert-danger { + .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); +} diff --git a/searx/static/oscar/less/bootstrap/badges.less b/searx/static/oscar/less/bootstrap/badges.less new file mode 100644 index 000000000..20624f30d --- /dev/null +++ b/searx/static/oscar/less/bootstrap/badges.less @@ -0,0 +1,55 @@ +// +// Badges +// -------------------------------------------------- + + +// Base class +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: @font-size-small; + font-weight: @badge-font-weight; + color: @badge-color; + line-height: @badge-line-height; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: @badge-bg; + border-radius: @badge-border-radius; + + // Empty badges collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for badges in buttons + .btn & { + position: relative; + top: -1px; + } + .btn-xs & { + top: 0; + padding: 1px 5px; + } + + // Hover state, but only for links + a& { + &:hover, + &:focus { + color: @badge-link-hover-color; + text-decoration: none; + cursor: pointer; + } + } + + // Account for badges in navs + a.list-group-item.active > &, + .nav-pills > .active > a > & { + color: @badge-active-color; + background-color: @badge-active-bg; + } + .nav-pills > li > a > & { + margin-left: 3px; + } +} diff --git a/searx/static/oscar/less/bootstrap/bootstrap.less b/searx/static/oscar/less/bootstrap/bootstrap.less new file mode 100644 index 000000000..61b77474f --- /dev/null +++ b/searx/static/oscar/less/bootstrap/bootstrap.less @@ -0,0 +1,50 @@ +// Core variables and mixins +@import "variables.less"; +@import "mixins.less"; + +// Reset and dependencies +@import "normalize.less"; +@import "print.less"; +@import "glyphicons.less"; + +// Core CSS +@import "scaffolding.less"; +@import "type.less"; +@import "code.less"; +@import "grid.less"; +@import "tables.less"; +@import "forms.less"; +@import "buttons.less"; + +// Components +@import "component-animations.less"; +@import "dropdowns.less"; +@import "button-groups.less"; +@import "input-groups.less"; +@import "navs.less"; +@import "navbar.less"; +@import "breadcrumbs.less"; +@import "pagination.less"; +@import "pager.less"; +@import "labels.less"; +@import "badges.less"; +@import "jumbotron.less"; +@import "thumbnails.less"; +@import "alerts.less"; +@import "progress-bars.less"; +@import "media.less"; +@import "list-group.less"; +@import "panels.less"; +@import "responsive-embed.less"; +@import "wells.less"; +@import "close.less"; + +// Components w/ JavaScript +@import "modals.less"; +@import "tooltip.less"; +@import "popovers.less"; +@import "carousel.less"; + +// Utility classes +@import "utilities.less"; +@import "responsive-utilities.less"; diff --git a/searx/static/oscar/less/bootstrap/breadcrumbs.less b/searx/static/oscar/less/bootstrap/breadcrumbs.less new file mode 100644 index 000000000..cb01d503f --- /dev/null +++ b/searx/static/oscar/less/bootstrap/breadcrumbs.less @@ -0,0 +1,26 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; + margin-bottom: @line-height-computed; + list-style: none; + background-color: @breadcrumb-bg; + border-radius: @border-radius-base; + + > li { + display: inline-block; + + + li:before { + content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space + padding: 0 5px; + color: @breadcrumb-color; + } + } + + > .active { + color: @breadcrumb-active-color; + } +} diff --git a/searx/static/oscar/less/bootstrap/button-groups.less b/searx/static/oscar/less/bootstrap/button-groups.less new file mode 100644 index 000000000..7021ecd17 --- /dev/null +++ b/searx/static/oscar/less/bootstrap/button-groups.less @@ -0,0 +1,240 @@ +// +// Button groups +// -------------------------------------------------- + +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; // match .btn alignment given font-size hack above + > .btn { + position: relative; + float: left; + // Bring the "active" button to the front + &:hover, + &:focus, + &:active, + &.active { + z-index: 2; + } + &:focus { + // Remove focus outline when dropdown JS adds it after closing the menu + outline: 0; + } + } +} + +// Prevent double borders when buttons are next to each other +.btn-group { + .btn + .btn, + .btn + .btn-group, + .btn-group + .btn, + .btn-group + .btn-group { + margin-left: -1px; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + margin-left: -5px; // Offset the first child's margin + &:extend(.clearfix all); + + .btn-group, + .input-group { + float: left; + } + > .btn, + > .btn-group, + > .input-group { + margin-left: 5px; + } +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + &:not(:last-child):not(.dropdown-toggle) { + .border-right-radius(0); + } +} +// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + .border-left-radius(0); +} + +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child { + > .btn:last-child, + > .dropdown-toggle { + .border-right-radius(0); + } +} +.btn-group > .btn-group:last-child > .btn:first-child { + .border-left-radius(0); +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-xs > .btn { &:extend(.btn-xs); } +.btn-group-sm > .btn { &:extend(.btn-sm); } +.btn-group-lg > .btn { &:extend(.btn-lg); } + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} + +// The clickable button for toggling the menu +// Remove the gradient and set the same inset shadow as the :active state +.btn-group.open .dropdown-toggle { + .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + + // Show no shadow for `.btn-link` since it has no other button styles. + &.btn-link { + .box-shadow(none); + } +} + + +// Reposition the caret +.btn .caret { + margin-left: 0; +} +// Carets in other button sizes +.btn-lg .caret { + border-width: @caret-width-large @caret-width-large 0; + border-bottom-width: 0; +} +// Upside down carets for .dropup +.dropup .btn-lg .caret { + border-width: 0 @caret-width-large @caret-width-large; +} + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + > .btn, + > .btn-group, + > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + + // Clear floats so dropdown menus can be properly placed + > .btn-group { + &:extend(.clearfix all); + > .btn { + float: none; + } + } + + > .btn + .btn, + > .btn + .btn-group, + > .btn-group + .btn, + > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } +} + +.btn-group-vertical > .btn { + &:not(:first-child):not(:last-child) { + border-radius: 0; + } + &:first-child:not(:last-child) { + border-top-right-radius: @border-radius-base; + .border-bottom-radius(0); + } + &:last-child:not(:first-child) { + border-bottom-left-radius: @border-radius-base; + .border-top-radius(0); + } +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + .border-bottom-radius(0); + } +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + .border-top-radius(0); +} + + + +// Justified button groups +// ---------------------- + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + > .btn, + > .btn-group { + float: none; + display: table-cell; + width: 1%; + } + > .btn-group .btn { + width: 100%; + } + + > .btn-group .dropdown-menu { + left: auto; + } +} + + +// Checkbox and radio options +// +// In order to support the browser's form validation feedback, powered by the +// `required` attribute, we have to "hide" the inputs via `opacity`. We cannot +// use `display: none;` or `visibility: hidden;` as that also hides the popover. +// This way, we ensure a DOM element is visible to position the popover from. +// +// See https://github.com/twbs/bootstrap/pull/12794 for more. + +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + position: absolute; + z-index: -1; + .opacity(0); +} diff --git a/searx/static/oscar/less/bootstrap/buttons.less b/searx/static/oscar/less/bootstrap/buttons.less new file mode 100644 index 000000000..492bdc65a --- /dev/null +++ b/searx/static/oscar/less/bootstrap/buttons.less @@ -0,0 +1,157 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +.btn { + display: inline-block; + margin-bottom: 0; // For input.btn + font-weight: @btn-font-weight; + text-align: center; + vertical-align: middle; + cursor: pointer; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + white-space: nowrap; + .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base); + .user-select(none); + + &, + &:active, + &.active { + &:focus { + .tab-focus(); + } + } + + &:hover, + &:focus { + color: @btn-default-color; + text-decoration: none; + } + + &:active, + &.active { + outline: 0; + background-image: none; + .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + cursor: not-allowed; + pointer-events: none; // Future-proof disabling of clicks + .opacity(.65); + .box-shadow(none); + } +} + + +// Alternate buttons +// -------------------------------------------------- + +.btn-default { + .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border); +} +.btn-primary { + .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border); +} +// Success appears as green +.btn-success { + .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border); +} +// Info appears as blue-green +.btn-info { + .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border); +} +// Warning appears as orange +.btn-warning { + .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border); +} +// Danger and error appear as red +.btn-danger { + .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border); +} + + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link { + color: @link-color; + font-weight: normal; + cursor: pointer; + border-radius: 0; + + &, + &:active, + &[disabled], + fieldset[disabled] & { + background-color: transparent; + .box-shadow(none); + } + &, + &:hover, + &:focus, + &:active { + border-color: transparent; + } + &:hover, + &:focus { + color: @link-hover-color; + text-decoration: underline; + background-color: transparent; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: @btn-link-disabled-color; + text-decoration: none; + } + } +} + + +// Button Sizes +// -------------------------------------------------- + +.btn-lg { + // line-height: ensure even-numbered height of button next to large input + .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large); +} +.btn-sm { + // line-height: ensure proper height of button next to small input + .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); +} +.btn-xs { + .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small); +} + + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} diff --git a/searx/static/oscar/less/bootstrap/carousel.less b/searx/static/oscar/less/bootstrap/carousel.less new file mode 100644 index 000000000..1644ddf7f --- /dev/null +++ b/searx/static/oscar/less/bootstrap/carousel.less @@ -0,0 +1,243 @@ +// +// Carousel +// -------------------------------------------------- + + +// Wrapper for the slide container and indicators +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; + + > .item { + display: none; + position: relative; + .transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + &:extend(.img-responsive); + line-height: 1; + } + } + + > .active, + > .next, + > .prev { + display: block; + } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: @carousel-control-width; + .opacity(@carousel-control-opacity); + font-size: @carousel-control-font-size; + color: @carousel-control-color; + text-align: center; + text-shadow: @carousel-text-shadow; + // We can't have this transition here because WebKit cancels the carousel + // animation if you trip this while in the middle of another animation. + + // Set gradients for backgrounds + &.left { + #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001)); + } + &.right { + left: auto; + right: 0; + #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5)); + } + + // Hover/focus state + &:hover, + &:focus { + outline: 0; + color: @carousel-control-color; + text-decoration: none; + .opacity(.9); + } + + // Toggles + .icon-prev, + .icon-next, + .glyphicon-chevron-left, + .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + } + .icon-prev, + .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; + } + .icon-next, + .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; + } + .icon-prev, + .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + font-family: serif; + } + + + .icon-prev { + &:before { + content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) + } + } + .icon-next { + &:before { + content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) + } + } +} + +// Optional indicator pips +// +// Add an unordered list with the following class and add a list item for each +// slide your carousel holds. + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; + + li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid @carousel-indicator-border-color; + border-radius: 10px; + cursor: pointer; + + // IE8-9 hack for event handling + // + // Internet Explorer 8-9 does not support clicks on elements without a set + // `background-color`. We cannot use `filter` since that's not viewed as a + // background color by the browser. Thus, a hack is needed. + // + // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we + // set alpha transparency for the best results possible. + background-color: #000 \9; // IE8 + background-color: rgba(0,0,0,0); // IE9 + } + .active { + margin: 0; + width: 12px; + height: 12px; + background-color: @carousel-indicator-active-bg; + } +} + +// Optional captions +// ----------------------------- +// Hidden by default for smaller viewports +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: @carousel-caption-color; + text-align: center; + text-shadow: @carousel-text-shadow; + & .btn { + text-shadow: none; // No shadow for button elements in carousel-caption + } +} + + +// Scale up controls for tablets and up +@media screen and (min-width: @screen-sm-min) { + + // Scale up the controls a smidge + .carousel-control { + .glyphicon-chevron-left, + .glyphicon-chevron-right, + .icon-prev, + .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .glyphicon-chevron-left, + .icon-prev { + margin-left: -15px; + } + .glyphicon-chevron-right, + .icon-next { + margin-right: -15px; + } + } + + // Show and left align the captions + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + + // Move up the indicators + .carousel-indicators { + bottom: 20px; + } +} diff --git a/searx/static/oscar/less/bootstrap/close.less b/searx/static/oscar/less/bootstrap/close.less new file mode 100644 index 000000000..9b4e74f2b --- /dev/null +++ b/searx/static/oscar/less/bootstrap/close.less @@ -0,0 +1,33 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: (@font-size-base * 1.5); + font-weight: @close-font-weight; + line-height: 1; + color: @close-color; + text-shadow: @close-text-shadow; + .opacity(.2); + + &:hover, + &:focus { + color: @close-color; + text-decoration: none; + cursor: pointer; + .opacity(.5); + } + + // Additional properties for button version + // iOS requires the button element instead of an anchor tag. + // If you want the anchor version, it requires `href="#"`. + button& { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; + } +} diff --git a/searx/static/oscar/less/bootstrap/code.less b/searx/static/oscar/less/bootstrap/code.less new file mode 100644 index 000000000..baa13df61 --- /dev/null +++ b/searx/static/oscar/less/bootstrap/code.less @@ -0,0 +1,68 @@ +// +// Code (inline and block) +// -------------------------------------------------- + + +// Inline and block code styles +code, +kbd, +pre, +samp { + font-family: @font-family-monospace; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: @code-color; + background-color: @code-bg; + border-radius: @border-radius-base; +} + +// User input typically entered via keyboard +kbd { + padding: 2px 4px; + font-size: 90%; + color: @kbd-color; + background-color: @kbd-bg; + border-radius: @border-radius-small; + box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); + + kbd { + padding: 0; + font-size: 100%; + box-shadow: none; + } +} + +// Blocks of code +pre { + display: block; + padding: ((@line-height-computed - 1) / 2); + margin: 0 0 (@line-height-computed / 2); + font-size: (@font-size-base - 1); // 14px to 13px + line-height: @line-height-base; + word-break: break-all; + word-wrap: break-word; + color: @pre-color; + background-color: @pre-bg; + border: 1px solid @pre-border-color; + border-radius: @border-radius-base; + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: @pre-scrollable-max-height; + overflow-y: scroll; +} diff --git a/searx/static/oscar/less/bootstrap/component-animations.less b/searx/static/oscar/less/bootstrap/component-animations.less new file mode 100644 index 000000000..9400a0d32 --- /dev/null +++ b/searx/static/oscar/less/bootstrap/component-animations.less @@ -0,0 +1,31 @@ +// +// Component animations +// -------------------------------------------------- + +// Heads up! +// +// We don't use the `.opacity()` mixin here since it causes a bug with text +// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. + +.fade { + opacity: 0; + .transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + display: none; + + &.in { display: block; } + tr&.in { display: table-row; } + tbody&.in { display: table-row-group; } +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + .transition(height .35s ease); +} diff --git a/searx/static/oscar/less/bootstrap/dropdowns.less b/searx/static/oscar/less/bootstrap/dropdowns.less new file mode 100644 index 000000000..3eb7fc05c --- /dev/null +++ b/searx/static/oscar/less/bootstrap/dropdowns.less @@ -0,0 +1,215 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: @caret-width-base solid; + border-right: @caret-width-base solid transparent; + border-left: @caret-width-base solid transparent; +} + +// The dropdown wrapper (div) +.dropdown { + position: relative; +} + +// Prevent the focus on the dropdown toggle when closing dropdowns +.dropdown-toggle:focus { + outline: 0; +} + +// The dropdown menu (ul) +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: @zindex-dropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + font-size: @font-size-base; + text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) + background-color: @dropdown-bg; + border: 1px solid @dropdown-fallback-border; // IE8 fallback + border: 1px solid @dropdown-border; + border-radius: @border-radius-base; + .box-shadow(0 6px 12px rgba(0,0,0,.175)); + background-clip: padding-box; + + // Aligns the dropdown menu to right + // + // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + .nav-divider(@dropdown-divider-bg); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: @line-height-base; + color: @dropdown-link-color; + white-space: nowrap; // prevent links from randomly breaking onto new lines + } +} + +// Hover/Focus state +.dropdown-menu > li > a { + &:hover, + &:focus { + text-decoration: none; + color: @dropdown-link-hover-color; + background-color: @dropdown-link-hover-bg; + } +} + +// Active state +.dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: @dropdown-link-active-color; + text-decoration: none; + outline: 0; + background-color: @dropdown-link-active-bg; + } +} + +// Disabled state +// +// Gray out text and ensure the hover/focus state remains gray + +.dropdown-menu > .disabled > a { + &, + &:hover, + &:focus { + color: @dropdown-link-disabled-color; + } +} +// Nuke hover/focus effects +.dropdown-menu > .disabled > a { + &:hover, + &:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + .reset-filter(); + cursor: not-allowed; + } +} + +// Open state for the dropdown +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + +// Menu positioning +// +// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown +// menu with the parent. +.dropdown-menu-right { + left: auto; // Reset the default from `.dropdown-menu` + right: 0; +} +// With v3, we enabled auto-flipping if you have a dropdown within a right +// aligned nav component. To enable the undoing of that, we provide an override +// to restore the default dropdown menu alignment. +// +// This is only for left-aligning a dropdown menu within a `.navbar-right` or +// `.pull-right` nav component. +.dropdown-menu-left { + left: 0; + right: auto; +} + +// Dropdown section headers +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: @font-size-small; + line-height: @line-height-base; + color: @dropdown-header-color; + white-space: nowrap; // as with > li > a +} + +// Backdrop to catch body clicks on mobile, etc. +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: (@zindex-dropdown - 10); +} + +// Right aligned dropdowns +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? + +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + border-top: 0; + border-bottom: @caret-width-base solid; + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; + } +} + + +// Component alignment +// +// Reiterate per navbar.less and the modified component alignment there. + +@media (min-width: @grid-float-breakpoint) { + .navbar-right { + .dropdown-menu { + .dropdown-menu-right(); + } + // Necessary for overrides of the default right aligned menu. + // Will remove come v4 in all likelihood. + .dropdown-menu-left { + .dropdown-menu-left(); + } + } +} + diff --git a/searx/static/oscar/less/bootstrap/forms.less b/searx/static/oscar/less/bootstrap/forms.less new file mode 100644 index 000000000..2c5e9bfa9 --- /dev/null +++ b/searx/static/oscar/less/bootstrap/forms.less @@ -0,0 +1,540 @@ +// +// Forms +// -------------------------------------------------- + + +// Normalize non-controls +// +// Restyle and baseline non-control form elements. + +fieldset { + padding: 0; + margin: 0; + border: 0; + // Chrome and Firefox set a `min-width: min-content;` on fieldsets, + // so we reset that to ensure it behaves more like a standard block element. + // See https://github.com/twbs/bootstrap/issues/12359. + min-width: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: @line-height-computed; + font-size: (@font-size-base * 1.5); + line-height: inherit; + color: @legend-color; + border: 0; + border-bottom: 1px solid @legend-border-color; +} + +label { + display: inline-block; + max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) + margin-bottom: 5px; + font-weight: bold; +} + + +// Normalize form controls +// +// While most of our form styles require extra classes, some basic normalization +// is required to ensure optimum display with or without those classes to better +// address browser inconsistencies. + +// Override content-box in Normalize (* isn't specific enough) +input[type="search"] { + .box-sizing(border-box); +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; // IE8-9 + line-height: normal; +} + +// Set the height of file controls to match text inputs +input[type="file"] { + display: block; +} + +// Make range inputs behave like textual form controls +input[type="range"] { + display: block; + width: 100%; +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Focus for file, radio, and checkbox +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + .tab-focus(); +} + +// Adjust output element +output { + display: block; + padding-top: (@padding-base-vertical + 1); + font-size: @font-size-base; + line-height: @line-height-base; + color: @input-color; +} + + +// Common form controls +// +// Shared size and type resets for form controls. Apply `.form-control` to any +// of the following form controls: +// +// select +// textarea +// input[type="text"] +// input[type="password"] +// input[type="datetime"] +// input[type="datetime-local"] +// input[type="date"] +// input[type="month"] +// input[type="time"] +// input[type="week"] +// input[type="number"] +// input[type="email"] +// input[type="url"] +// input[type="search"] +// input[type="tel"] +// input[type="color"] + +.form-control { + display: block; + width: 100%; + height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: @padding-base-vertical @padding-base-horizontal; + font-size: @font-size-base; + line-height: @line-height-base; + color: @input-color; + background-color: @input-bg; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid @input-border; + border-radius: @input-border-radius; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); + .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s"); + + // Customize the `:focus` state to imitate native WebKit styles. + .form-control-focus(); + + // Placeholder + .placeholder(); + + // Disabled and read-only inputs + // + // HTML5 says that controls under a fieldset > legend:first-child won't be + // disabled if the fieldset is disabled. Due to implementation difficulty, we + // don't honor that edge case; we style them as disabled anyway. + &[disabled], + &[readonly], + fieldset[disabled] & { + cursor: not-allowed; + background-color: @input-bg-disabled; + opacity: 1; // iOS fix for unreadable disabled content + } + + // Reset height for `textarea`s + textarea& { + height: auto; + } +} + + +// Search inputs in iOS +// +// This overrides the extra rounded corners on search inputs in iOS so that our +// `.form-control` class can properly style them. Note that this cannot simply +// be added to `.form-control` as it's not specific enough. For details, see +// https://github.com/twbs/bootstrap/issues/11586. + +input[type="search"] { + -webkit-appearance: none; +} + + +// Special styles for iOS temporal inputs +// +// In Mobile Safari, setting `display: block` on temporal inputs causes the +// text within the input to become vertically misaligned. +// As a workaround, we set a pixel line-height that matches the +// given height of the input. Since this fucks up everything else, we have to +// appropriately reset it for Internet Explorer and the size variations. + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + line-height: @input-height-base; + // IE8+ misaligns the text within date inputs, so we reset + line-height: @line-height-base ~"\0"; + + &.input-sm { + line-height: @input-height-small; + } + &.input-lg { + line-height: @input-height-large; + } +} + + +// Form groups +// +// Designed to help with the organization and spacing of vertical forms. For +// horizontal forms, use the predefined grid classes. + +.form-group { + margin-bottom: 15px; +} + + +// Checkboxes and radios +// +// Indent the labels to position radios/checkboxes as hanging controls. + +.radio, +.checkbox { + position: relative; + display: block; + min-height: @line-height-computed; // clear the floating input if there is no label text + margin-top: 10px; + margin-bottom: 10px; + + label { + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; +} + +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing +} + +// Radios and checkboxes on same line +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; // space out consecutive inline controls +} + +// Apply same disabled cursor tweak as for inputs +// Some special care is needed because