├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── bower.json ├── build └── postcss.config.js ├── dist └── css │ ├── bootstrap-grid.css │ ├── bootstrap-grid.css.map │ ├── bootstrap-grid.min.css │ ├── bootstrap-grid.min.css.map │ ├── bootstrap-reboot.css │ ├── bootstrap-reboot.css.map │ ├── bootstrap-reboot.min.css │ ├── bootstrap-reboot.min.css.map │ ├── bootstrap.css │ ├── bootstrap.css.map │ ├── bootstrap.min.css │ └── bootstrap.min.css.map ├── index.js ├── less ├── _alert.less ├── _badge.less ├── _breadcrumb.less ├── _button-group.less ├── _buttons.less ├── _card.less ├── _carousel.less ├── _close.less ├── _code.less ├── _custom-forms.less ├── _dropdown.less ├── _forms.less ├── _functions.less ├── _grid.less ├── _images.less ├── _input-group.less ├── _jumbotron.less ├── _list-group.less ├── _media.less ├── _mixins.less ├── _modal.less ├── _nav.less ├── _navbar.less ├── _pagination.less ├── _popover.less ├── _print.less ├── _progress.less ├── _reboot.less ├── _root.less ├── _spinners.less ├── _tables.less ├── _toasts.less ├── _tooltip.less ├── _transitions.less ├── _type.less ├── _utilities.less ├── _variables.less ├── bootstrap-grid.less ├── bootstrap-reboot.less ├── bootstrap.less ├── mixins │ ├── _alert.less │ ├── _background-variant.less │ ├── _badge.less │ ├── _border-radius.less │ ├── _box-shadow.less │ ├── _breakpoints.less │ ├── _buttons.less │ ├── _caret.less │ ├── _clearfix.less │ ├── _deprecate.less │ ├── _float.less │ ├── _forms.less │ ├── _gradients.less │ ├── _grid-framework.less │ ├── _grid.less │ ├── _hover.less │ ├── _image.less │ ├── _list-group.less │ ├── _lists.less │ ├── _nav-divider.less │ ├── _pagination.less │ ├── _reset-text.less │ ├── _resize.less │ ├── _screen-reader.less │ ├── _size.less │ ├── _table-row.less │ ├── _text-emphasis.less │ ├── _text-hide.less │ ├── _text-truncate.less │ ├── _transition.less │ └── _visibility.less ├── plugins │ ├── breakpoints.js │ ├── color-yiq.js │ ├── color.js │ ├── escape-svg.js │ ├── gray.js │ ├── index.js │ ├── logger.js │ ├── map-keys.js │ ├── theme-color-level.js │ ├── theme-color.js │ └── valid-calc.js ├── utilities │ ├── _align.less │ ├── _background.less │ ├── _borders.less │ ├── _clearfix.less │ ├── _display.less │ ├── _embed.less │ ├── _flex.less │ ├── _float.less │ ├── _interactions.less │ ├── _overflow.less │ ├── _position.less │ ├── _screenreaders.less │ ├── _shadows.less │ ├── _sizing.less │ ├── _spacing.less │ ├── _stretched-link.less │ ├── _text.less │ └── _visibility.less └── vendor │ └── _rfs.less ├── package-lock.json ├── package.json └── test ├── package.json ├── scripts ├── compare-less-css-to-sass-css.js ├── copy-bs-css.js ├── download-bs-source-files.js ├── format-bs-css.js └── utils │ ├── download-file.js │ ├── fetch-bs-repo-tag-data.js │ ├── fetch-bs-repo-tags.js │ ├── find-replace.js │ ├── oops.js │ ├── path-utils.js │ └── unzip-file.js └── test.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # EDITOR CONFIG 2 | 3 | root = true 4 | 5 | # All Files 6 | [*] 7 | charset = utf-8 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | # Most Files 13 | [*.{html,css,less,js,json}] 14 | indent_style = tab 15 | indent_size = 3 16 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | # .eslintignore 2 | 3 | dist/* 4 | node_modules/* 5 | test/bootstrap-source/* 6 | 7 | !.*.js 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore 2 | 3 | # Ignore system files 4 | .DS_Store 5 | 6 | # Ignore editor files 7 | .vscode 8 | .idea 9 | 10 | # Ignore node modules 11 | node_modules/* 12 | 13 | # Ignore directories containing files generated for testing. 14 | test/bootstrap-source/* 15 | test/less-compiled-css-reference/* 16 | test/sass-compiled-css-reference/* 17 | 18 | # Ignore the testing output file. 19 | test/scripts/result.diff 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Sean Juarez 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap-less-port", 3 | "description": "A Less port of Bootstrap v4", 4 | "main": "less/bootstrap.less", 5 | "authors": [ 6 | "Sean Juárez " 7 | ], 8 | "license": "MIT", 9 | "keywords": [ 10 | "bootstrap", 11 | "less", 12 | "css", 13 | "framework", 14 | "port" 15 | ], 16 | "homepage": "https://github.com/seanCodes/bootstrap-less-port", 17 | "ignore": [ 18 | "**/.*", 19 | "node_modules", 20 | "bower_components", 21 | "dist", 22 | "build", 23 | "test", 24 | "tests" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /build/postcss.config.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | 3 | 'use strict' 4 | 5 | module.exports = () => ({ 6 | map: { 7 | inline : false, 8 | annotation : true, 9 | sourcesContent : true, 10 | }, 11 | plugins: { autoprefixer: {} }, 12 | }) 13 | -------------------------------------------------------------------------------- /dist/css/bootstrap-reboot.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.6.0 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | * 8 | * Compiled using Bootstrap Less Port v2.5.0 (https://github.com/seanCodes/bootstrap-less-port) 9 | * A port of Bootstrap’s Sass source code to Less. 10 | * Copyright 2017–2021 Sean Juarez 11 | * Licensed under MIT (https://github.com/seanCodes/bootstrap-less-port/blob/master/LICENSE) 12 | */ 13 | *, 14 | *::before, 15 | *::after { 16 | box-sizing: border-box; 17 | } 18 | html { 19 | font-family: sans-serif; 20 | line-height: 1.15; 21 | -webkit-text-size-adjust: 100%; 22 | -webkit-tap-highlight-color: transparent; 23 | } 24 | article, 25 | aside, 26 | figcaption, 27 | figure, 28 | footer, 29 | header, 30 | hgroup, 31 | main, 32 | nav, 33 | section { 34 | display: block; 35 | } 36 | body { 37 | margin: 0; 38 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 39 | font-size: 1rem; 40 | font-weight: 400; 41 | line-height: 1.5; 42 | color: #212529; 43 | text-align: left; 44 | background-color: #fff; 45 | } 46 | [tabindex="-1"]:focus:not(:focus-visible) { 47 | outline: 0 !important; 48 | } 49 | hr { 50 | box-sizing: content-box; 51 | height: 0; 52 | overflow: visible; 53 | } 54 | h1, 55 | h2, 56 | h3, 57 | h4, 58 | h5, 59 | h6 { 60 | margin-top: 0; 61 | margin-bottom: 0.5rem; 62 | } 63 | p { 64 | margin-top: 0; 65 | margin-bottom: 1rem; 66 | } 67 | abbr[title], 68 | abbr[data-original-title] { 69 | text-decoration: underline; 70 | -webkit-text-decoration: underline dotted; 71 | text-decoration: underline dotted; 72 | cursor: help; 73 | border-bottom: 0; 74 | -webkit-text-decoration-skip-ink: none; 75 | text-decoration-skip-ink: none; 76 | } 77 | address { 78 | margin-bottom: 1rem; 79 | font-style: normal; 80 | line-height: inherit; 81 | } 82 | ol, 83 | ul, 84 | dl { 85 | margin-top: 0; 86 | margin-bottom: 1rem; 87 | } 88 | ol ol, 89 | ul ul, 90 | ol ul, 91 | ul ol { 92 | margin-bottom: 0; 93 | } 94 | dt { 95 | font-weight: 700; 96 | } 97 | dd { 98 | margin-bottom: 0.5rem; 99 | margin-left: 0; 100 | } 101 | blockquote { 102 | margin: 0 0 1rem; 103 | } 104 | b, 105 | strong { 106 | font-weight: bolder; 107 | } 108 | small { 109 | font-size: 80%; 110 | } 111 | sub, 112 | sup { 113 | position: relative; 114 | font-size: 75%; 115 | line-height: 0; 116 | vertical-align: baseline; 117 | } 118 | sub { 119 | bottom: -0.25em; 120 | } 121 | sup { 122 | top: -0.5em; 123 | } 124 | a { 125 | color: #007bff; 126 | text-decoration: none; 127 | background-color: transparent; 128 | } 129 | a:hover { 130 | color: #0056b3; 131 | text-decoration: underline; 132 | } 133 | a:not([href]):not([class]) { 134 | color: inherit; 135 | text-decoration: none; 136 | } 137 | a:not([href]):not([class]):hover { 138 | color: inherit; 139 | text-decoration: none; 140 | } 141 | pre, 142 | code, 143 | kbd, 144 | samp { 145 | font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 146 | font-size: 1em; 147 | } 148 | pre { 149 | margin-top: 0; 150 | margin-bottom: 1rem; 151 | overflow: auto; 152 | -ms-overflow-style: scrollbar; 153 | } 154 | figure { 155 | margin: 0 0 1rem; 156 | } 157 | img { 158 | vertical-align: middle; 159 | border-style: none; 160 | } 161 | svg { 162 | overflow: hidden; 163 | vertical-align: middle; 164 | } 165 | table { 166 | border-collapse: collapse; 167 | } 168 | caption { 169 | padding-top: 0.75rem; 170 | padding-bottom: 0.75rem; 171 | color: #6c757d; 172 | text-align: left; 173 | caption-side: bottom; 174 | } 175 | th { 176 | text-align: inherit; 177 | text-align: -webkit-match-parent; 178 | } 179 | label { 180 | display: inline-block; 181 | margin-bottom: 0.5rem; 182 | } 183 | button { 184 | border-radius: 0; 185 | } 186 | button:focus:not(:focus-visible) { 187 | outline: 0; 188 | } 189 | input, 190 | button, 191 | select, 192 | optgroup, 193 | textarea { 194 | margin: 0; 195 | font-family: inherit; 196 | font-size: inherit; 197 | line-height: inherit; 198 | } 199 | button, 200 | input { 201 | overflow: visible; 202 | } 203 | button, 204 | select { 205 | text-transform: none; 206 | } 207 | [role="button"] { 208 | cursor: pointer; 209 | } 210 | select { 211 | word-wrap: normal; 212 | } 213 | button, 214 | [type="button"], 215 | [type="reset"], 216 | [type="submit"] { 217 | -webkit-appearance: button; 218 | } 219 | button:not(:disabled), 220 | [type="button"]:not(:disabled), 221 | [type="reset"]:not(:disabled), 222 | [type="submit"]:not(:disabled) { 223 | cursor: pointer; 224 | } 225 | button::-moz-focus-inner, 226 | [type="button"]::-moz-focus-inner, 227 | [type="reset"]::-moz-focus-inner, 228 | [type="submit"]::-moz-focus-inner { 229 | padding: 0; 230 | border-style: none; 231 | } 232 | input[type="radio"], 233 | input[type="checkbox"] { 234 | box-sizing: border-box; 235 | padding: 0; 236 | } 237 | textarea { 238 | overflow: auto; 239 | resize: vertical; 240 | } 241 | fieldset { 242 | min-width: 0; 243 | padding: 0; 244 | margin: 0; 245 | border: 0; 246 | } 247 | legend { 248 | display: block; 249 | width: 100%; 250 | max-width: 100%; 251 | padding: 0; 252 | margin-bottom: 0.5rem; 253 | font-size: 1.5rem; 254 | line-height: inherit; 255 | color: inherit; 256 | white-space: normal; 257 | } 258 | progress { 259 | vertical-align: baseline; 260 | } 261 | [type="number"]::-webkit-inner-spin-button, 262 | [type="number"]::-webkit-outer-spin-button { 263 | height: auto; 264 | } 265 | [type="search"] { 266 | outline-offset: -2px; 267 | -webkit-appearance: none; 268 | } 269 | [type="search"]::-webkit-search-decoration { 270 | -webkit-appearance: none; 271 | } 272 | ::-webkit-file-upload-button { 273 | font: inherit; 274 | -webkit-appearance: button; 275 | } 276 | output { 277 | display: inline-block; 278 | } 279 | summary { 280 | display: list-item; 281 | cursor: pointer; 282 | } 283 | template { 284 | display: none; 285 | } 286 | [hidden] { 287 | display: none !important; 288 | } 289 | /*# sourceMappingURL=bootstrap-reboot.css.map */ -------------------------------------------------------------------------------- /dist/css/bootstrap-reboot.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.6.0 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | * 8 | * Compiled using Bootstrap Less Port v2.5.0 (https://github.com/seanCodes/bootstrap-less-port) 9 | * A port of Bootstrap’s Sass source code to Less. 10 | * Copyright 2017–2021 Sean Juarez 11 | * Licensed under MIT (https://github.com/seanCodes/bootstrap-less-port/blob/master/LICENSE) 12 | */ 13 | *,::after,::before{box-sizing:border-box} 14 | html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent} 15 | article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block} 16 | body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff} 17 | [tabindex="-1"]:focus:not(:focus-visible){outline:0!important} 18 | hr{box-sizing:content-box;height:0;overflow:visible} 19 | h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem} 20 | p{margin-top:0;margin-bottom:1rem} 21 | abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none} 22 | address{margin-bottom:1rem;font-style:normal;line-height:inherit} 23 | dl,ol,ul{margin-top:0;margin-bottom:1rem} 24 | ol ol,ol ul,ul ol,ul ul{margin-bottom:0} 25 | dt{font-weight:700} 26 | dd{margin-bottom:.5rem;margin-left:0} 27 | blockquote{margin:0 0 1rem} 28 | b,strong{font-weight:bolder} 29 | small{font-size:80%} 30 | sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline} 31 | sub{bottom:-.25em} 32 | sup{top:-.5em} 33 | a{color:#007bff;text-decoration:none;background-color:transparent} 34 | a:hover{color:#0056b3;text-decoration:underline} 35 | a:not([href]):not([class]){color:inherit;text-decoration:none} 36 | a:not([href]):not([class]):hover{color:inherit;text-decoration:none} 37 | code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em} 38 | pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar} 39 | figure{margin:0 0 1rem} 40 | img{vertical-align:middle;border-style:none} 41 | svg{overflow:hidden;vertical-align:middle} 42 | table{border-collapse:collapse} 43 | caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom} 44 | th{text-align:inherit;text-align:-webkit-match-parent} 45 | label{display:inline-block;margin-bottom:.5rem} 46 | button{border-radius:0} 47 | button:focus:not(:focus-visible){outline:0} 48 | button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit} 49 | button,input{overflow:visible} 50 | button,select{text-transform:none} 51 | [role=button]{cursor:pointer} 52 | select{word-wrap:normal} 53 | [type=button],[type=reset],[type=submit],button{-webkit-appearance:button} 54 | [type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer} 55 | [type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none} 56 | input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0} 57 | textarea{overflow:auto;resize:vertical} 58 | fieldset{min-width:0;padding:0;margin:0;border:0} 59 | legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal} 60 | progress{vertical-align:baseline} 61 | [type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} 62 | [type=search]{outline-offset:-2px;-webkit-appearance:none} 63 | [type=search]::-webkit-search-decoration{-webkit-appearance:none} 64 | ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button} 65 | output{display:inline-block} 66 | summary{display:list-item;cursor:pointer} 67 | template{display:none} 68 | [hidden]{display:none!important} 69 | /*# sourceMappingURL=bootstrap-reboot.min.css.map */ -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // Is this even necessary? 2 | -------------------------------------------------------------------------------- /less/_alert.less: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .alert { 6 | position: relative; 7 | padding: @alert-padding-y @alert-padding-x; 8 | margin-bottom: @alert-margin-bottom; 9 | border: @alert-border-width solid transparent; 10 | #border-radius(@alert-border-radius); 11 | } 12 | 13 | // Headings for larger alerts 14 | .alert-heading { 15 | // Specified to prevent conflicts of changing @headings-color 16 | color: inherit; 17 | } 18 | 19 | // Provide class for links that match alerts 20 | .alert-link { 21 | font-weight: @alert-link-font-weight; 22 | } 23 | 24 | 25 | // Dismissible alerts 26 | // 27 | // Expand the right padding and account for the close button's positioning. 28 | 29 | .alert-dismissible { 30 | padding-right: (@close-font-size + @alert-padding-x * 2); 31 | 32 | // Adjust close link position 33 | .close { 34 | position: absolute; 35 | top: 0; 36 | right: 0; 37 | z-index: 2; 38 | padding: @alert-padding-y @alert-padding-x; 39 | color: inherit; 40 | } 41 | } 42 | 43 | 44 | // Alternate styles 45 | // 46 | // Generate contextual modifier classes for colorizing the alert. 47 | 48 | //@each $color, $value in $theme-colors { 49 | // .alert-#{$color} { 50 | // @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level)); 51 | // } 52 | //} 53 | each(@theme-colors, #(@value, @color) { 54 | .alert-@{color} { 55 | #alert-variant(theme-color-level(@color, @alert-bg-level), theme-color-level(@color, @alert-border-level), theme-color-level(@color, @alert-color-level)); 56 | } 57 | }); 58 | -------------------------------------------------------------------------------- /less/_badge.less: -------------------------------------------------------------------------------- 1 | // Base class 2 | // 3 | // Requires one of the contextual, color modifier classes for `color` and 4 | // `background-color`. 5 | 6 | .badge { 7 | display: inline-block; 8 | padding: @badge-padding-y @badge-padding-x; 9 | #font-size(@badge-font-size); 10 | font-weight: @badge-font-weight; 11 | line-height: 1; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | #border-radius(@badge-border-radius); 16 | #transition(@badge-transition); 17 | 18 | // LESS PORT: Less has no `@at-root` equivalent, so omitting that here. 19 | a& { 20 | #hover-focus({ 21 | text-decoration: none; 22 | }); 23 | } 24 | 25 | // Empty badges collapse automatically 26 | &:empty { 27 | display: none; 28 | } 29 | } 30 | 31 | // Quick fix for badges in buttons 32 | .btn .badge { 33 | position: relative; 34 | top: -1px; 35 | } 36 | 37 | // Pill badges 38 | // 39 | // Make them extra rounded with a modifier to replace v3's badges. 40 | 41 | .badge-pill { 42 | padding-right: @badge-pill-padding-x; 43 | padding-left: @badge-pill-padding-x; 44 | #border-radius(@badge-pill-border-radius); 45 | } 46 | 47 | // Colors 48 | // 49 | // Contextual variations (linked badges get darker on :hover). 50 | 51 | //@each $color, $value in $theme-colors { 52 | // .badge-#{$color} { 53 | // @include badge-variant($value); 54 | // } 55 | //} 56 | each(@theme-colors, #(@value, @color) { 57 | .badge-@{color} { 58 | #badge-variant(@value); 59 | } 60 | }); 61 | -------------------------------------------------------------------------------- /less/_breadcrumb.less: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | display: flex; 3 | flex-wrap: wrap; 4 | padding: @breadcrumb-padding-y @breadcrumb-padding-x; 5 | margin-bottom: @breadcrumb-margin-bottom; 6 | #font-size(@breadcrumb-font-size); 7 | list-style: none; 8 | background-color: @breadcrumb-bg; 9 | #border-radius(@breadcrumb-border-radius); 10 | } 11 | 12 | .breadcrumb-item { 13 | // The separator between breadcrumbs (by default, a forward-slash: "/") 14 | + .breadcrumb-item { 15 | padding-left: @breadcrumb-item-padding; 16 | 17 | &::before { 18 | float: left; // Suppress inline spacings and underlining of the separator 19 | padding-right: @breadcrumb-item-padding; 20 | color: @breadcrumb-divider-color; 21 | content: escape-svg(@breadcrumb-divider); 22 | } 23 | } 24 | 25 | // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built 26 | // without `