Compare commits

..

490 Commits

Author SHA1 Message Date
XhmikosR f17f882df2 Disable crawling on Netlify. (#29193) 2019-08-03 17:09:03 +03:00
XhmikosR 08cc5c3961 Update devDependencies and gems. 2019-07-15 10:31:06 +03:00
XhmikosR 8daa814fd8 Add an update-deps npm script. 2019-07-15 10:31:06 +03:00
XhmikosR aa690bbc3c CONTRIBUTING.md: remove obsolete stuff. 2019-07-15 10:31:06 +03:00
XhmikosR 91c0e03425 Update devDependencies and gems.
Kept stylelint to v9.6.0 because v9.10.1 throws an error.
2019-03-27 21:02:22 +02:00
XhmikosR 963abd791d Remove http from docs search. (#28557)
We use only `https` for a few months now.
2019-03-27 21:02:22 +02:00
XhmikosR 7cc9e794aa Update .gitignore. 2019-03-27 21:02:22 +02:00
XhmikosR e3c1cccd67 GA: Anonymize IPs. 2019-03-27 21:02:22 +02:00
XhmikosR fddd2ef16e Fix URLs.
Wrongfully changed in b9e59e9.
2019-03-27 21:02:22 +02:00
XhmikosR 7f08a90e08 Fix whitespace in title tag. 2019-03-27 21:02:22 +02:00
XhmikosR 922e29d0eb tooltip-viewport: fix path to favicon. 2019-03-27 21:02:22 +02:00
XhmikosR 55d00787f4 Add canonical tag.
For the examples, it's hardcoded, since in this branch we don't build them.
2019-03-27 21:02:22 +02:00
XhmikosR 50efb699f6 Add a netlify npm script. 2019-03-27 21:02:22 +02:00
XhmikosR e7974e4519 Fix a few stylelint issues. 2019-03-27 21:02:22 +02:00
XhmikosR b9e59e96af Replace master with v3-dev after the branch switch. (#28287) 2019-02-15 23:36:44 +02:00
XhmikosR bdb962d1e9 Remove the customize redirect. (#28270)
The current `baseurl` makes this wrong.
2019-02-15 10:34:14 +02:00
XhmikosR 68b0d231a1 Dist 2019-02-13 17:55:38 +02:00
Johann-S 2ccfa57467 handle # selector for dropdown 2019-02-13 17:55:38 +02:00
XhmikosR a43077d3c3 Bump version to 3.4.1. 2019-02-13 17:55:38 +02:00
XhmikosR d821de2712 Backport sanitize docs from v4. 2019-02-13 17:55:38 +02:00
XhmikosR 5cd9ef47f6 Add wdm gem for Windows. 2019-02-13 17:55:38 +02:00
XhmikosR d6b8501e4c ES5 fixes. 2019-02-13 17:55:38 +02:00
Johann-S 2c8abb9a43 Add sanitize for tooltips and popovers html content.
On browsers that `createHTMLDocument` isn't available just return the unsafe HTML.
2019-02-13 17:55:38 +02:00
XhmikosR d4129dff60 Bump year. 2019-02-13 17:55:38 +02:00
XhmikosR 0d64d6aee6 less/modals.less: Add missing semicolon. 2019-02-11 15:18:08 +02:00
XhmikosR 48c5d7b8e9 Use https. 2019-02-11 15:18:08 +02:00
XhmikosR b23e213446 Update devDependencies and gems. 2019-02-11 15:18:08 +02:00
XhmikosR 695c54183f Fix redirects.
* Actually include the jekyll-redirect-from plugin
* We handle the removed ones in docs latest version, apart from the 3.3 customizer redirect.
2019-02-11 15:18:08 +02:00
Sebastian Hädrich 9206e465ad Make meaning of tooltip's 'selector' option more clear in Bootstrap 3
Based on #4215
Backport changes made to docs v4 to v3 (#27573)
2019-01-06 18:02:27 +02:00
XhmikosR b285ea390c Add a few redirects. 2018-12-31 02:19:36 +02:00
XhmikosR 3e1b89436d Fix broken link in nav version dropdown. 2018-12-23 00:07:18 +02:00
Jesse Mandel 3e519c3726 Support nuget contentFiles, used for some project types (#27856) 2018-12-16 17:19:19 +02:00
XhmikosR 4c547f2175 Dist. 2018-12-14 01:45:51 +02:00
XhmikosR 0f1c6b005f Move the whole autoprefixer config to configBridge.json.
Reduces duplication.
2018-12-14 01:45:51 +02:00
XhmikosR 9332f3c7ac Add polyfills for older browsers.
requestAnimationFrame and btoa.
2018-12-14 01:45:51 +02:00
XhmikosR dd71b40aed docs: Concat the IE files with the rest. 2018-12-14 01:45:51 +02:00
XhmikosR 4a5c7f21d5 Update devDependencies, gems and lots of cleanup/build fixes.
* switch to grunt-postcss and autoprefixer directly; this is the recommended way.
* uglify: specify `ie8` for compatibility
* specify `cascade:false` for autoprefixer
* specify `ieCompat` for less
* drop grunt-contrib-compress since it doesn't work with Node.js 10.x
* remove grunt-contrib-htmlmin to match the v4 docs
* clean up Gruntfile.js
* clean up .travis.yml and backport changes from v4
* build ie10-viewport-bug-workaround.less since it's used in examples
* move shrinkwrap to root
* bs-commonjs-generator.js: Use `path.posix`
* remove .hound.yml
* remove references to no longer used PR bots
* backport and adapt the sri generation script from v4
2018-12-14 01:45:51 +02:00
XhmikosR 7a2cdfb650 Center skippy. 2018-12-10 11:08:34 +02:00
XhmikosR 3b825870fa Restore cursor: help for abbr. 2018-12-10 11:08:34 +02:00
XhmikosR bf69f1fcec Backport the abbr fix from the updated normalize.css. 2018-12-10 11:08:34 +02:00
XhmikosR dd23bb5c12 Backport search.js changes from v4-dev. 2018-12-10 11:08:34 +02:00
XhmikosR 9edba6123e search input: hide box-shadow. 2018-12-10 11:08:34 +02:00
XhmikosR 92de1e831b Update README.md 2018-11-18 10:00:03 +02:00
XhmikosR a185235ef3 Fix broken anchors in examples and one https redirect. 2018-11-18 10:00:03 +02:00
XhmikosR d5e5889c6c Remove a few duplicate selectors. 2018-11-18 10:00:03 +02:00
XhmikosR 627b359541 Add the unprefixed appearance property. 2018-11-18 10:00:03 +02:00
XhmikosR 7aaabebded Use https in more places. 2018-10-20 14:03:59 +03:00
XhmikosR bbc862b376 v4-tease link focus. 2018-10-20 14:03:59 +03:00
XhmikosR d24d47c27a Backport search from v4 and adapt it for v3.4.0. 2018-10-20 14:03:59 +03:00
Mark Otto ebe7459665 Simplify team display, update team members 2018-10-19 12:02:11 +03:00
XhmikosR 024be2a020 Update .stylelint config from v4. 2018-10-19 12:02:11 +03:00
XhmikosR 3d4b65aba3 Tweak customizer input a bit. 2018-10-18 12:09:17 +03:00
Johann-S b304c61318 remove drag/drop for customizer 2018-10-18 12:09:17 +03:00
XhmikosR d7ab2fbd5b customizer: remove gist creation.
GitHub removed anonymous gist creation a few months ago.

https://blog.github.com/2018-02-18-deprecation-notice-removing-anonymous-gist-creation/
2018-10-18 12:09:17 +03:00
Mark Otto 6de7ba427b Convert to pixels and adjust border-radius 2018-10-18 11:54:48 +03:00
XhmikosR 25d017a2ee Replace ZeroClipboard with clipboard.js (backported from v4). 2018-10-18 11:54:48 +03:00
XhmikosR c7033212b6 Starter template: use the CDN files with SRI hashes. 2018-10-18 11:27:47 +03:00
XhmikosR f77c7a3c92 Switch to lowercase doctype. 2018-10-18 11:27:47 +03:00
XhmikosR 26897b919b Specify rel="noopener" for external links. 2018-10-18 11:27:47 +03:00
XhmikosR c95fa8114d Change CDN URLs to the new ones. 2018-10-18 11:27:47 +03:00
XhmikosR e105d15642 Use https, fix broken links and unneeded redirects. 2018-10-18 11:27:47 +03:00
Andrew Luca cf6f867190 fix: add padding to navbar-fixed-* on modal open 2018-10-18 10:14:05 +02:00
Andrew Luca 0b78f465d3 test: ensure .navbar-fixed-* padding on modal open 2018-10-18 10:14:05 +02:00
XhmikosR 5003e6c1b9 customizer: use the same license header as the main files. 2018-10-08 20:12:34 +03:00
XhmikosR ee580c178d Move bash snippets $ to a :before so that it's not selectable. 2018-10-08 20:12:34 +03:00
XhmikosR 4ebaca2b58 Switch to jQuery's CDN and use SRI. 2018-10-08 20:12:34 +03:00
XhmikosR 44b3a3f1a2 Update anchor.js to v3.2.2. 2018-10-08 20:12:34 +03:00
XhmikosR 1912f7d7c4 Add image dimensions. 2018-10-08 20:12:34 +03:00
XhmikosR 82dd279656 Cache length variables. 2018-10-08 20:12:34 +03:00
XhmikosR 5cce25d515 Minor indentation fixes. 2018-10-08 20:12:34 +03:00
XhmikosR b8a6855a69 Revert "Update contributing.md with correct branch (v4-dev instead of master)" 2018-10-08 20:12:34 +03:00
XhmikosR 8c8c6d1667 Fix algolia.less media rule. 2018-10-08 20:12:34 +03:00
XhmikosR 0dbbbdc26b Remove jobs link. 2018-10-08 20:12:34 +03:00
XhmikosR 525e0388e4 Compress docs images. 2018-10-08 20:12:34 +03:00
XhmikosR abe37ff83b Remove unneeded suppression and clean up docs less files. 2018-10-08 20:12:34 +03:00
XhmikosR 37a2534c8e Go back to single colon pseudo elements.
This is for backwards compatibility with the browsers we support in v3.
2018-10-08 20:12:34 +03:00
XhmikosR bfc052ad5a Fix HTML validation errors and lint tests too. 2018-10-08 20:12:34 +03:00
XhmikosR 08529515e5 Bump year to 2018. 2018-10-08 20:12:34 +03:00
XhmikosR fb5a1c6b29 Switch to inline comments for stylelint inline directives.
Otherwise the comments are actually output to the CSS.
2018-10-08 20:12:34 +03:00
Johann-S 4ebe2b8753 Use BrowserStack for our unit tests. 2018-09-28 09:53:59 +03:00
XhmikosR cee8e8653d Merge remote-tracking branch 'remotes/origin/v3.4.0-dev' into master-xmr-merged 2018-09-18 21:10:47 +03:00
XhmikosR f9c666017e Merge remote-tracking branch 'remotes/origin/v3-dev' into master-xmr-merged 2018-09-18 21:09:28 +03:00
Landrok d7f75b5f83 Fix broken links to Less and Sass (#24933) 2018-09-18 18:07:56 +03:00
Johann-S 9c4c72e31e fix unit tests 2018-08-19 16:57:25 +02:00
Mark Otto 82890e9bcf dist 2018-08-18 21:08:29 -07:00
Mark Otto 27e58b9491 Restore non-system fonts for now 2018-08-18 20:45:38 -07:00
don-spyker 2a5ba23ce8 Fix/xss issues on data attributes (#27047)
* fix(collapse): xss CVE-2018-14040

Fixes #26625

* fix(tooltip): xss CVE-2018-14042

Fixes #26628

* fix(tooltip): XSS on data-viewport attribute

Fixes #27044

* fix(affix): XSS on target config

Fixes #27045
2018-08-13 18:09:18 +02:00
Johann-S 13bf8aeae3 fix(tab): remove xss 2018-05-07 11:22:05 +03:00
Johann-S 029b85ad9b chore(node): use node 6 as it required in our package.json 2018-05-07 11:10:57 +03:00
Mark Otto b3e0a8a3c4 dist 2018-04-08 18:38:25 -07:00
Mark Otto 30c6a8a380 remove script type attribute 2018-04-08 18:28:35 -07:00
Mark Otto ec71b9e4bb update dependencies 2018-04-08 18:09:47 -07:00
Mark Otto 77342b080e update css with latest stylelint 2018-04-08 18:08:03 -07:00
Mark Otto babd48fb81 update to stylelint order from v4 2018-04-08 18:07:05 -07:00
Mark Otto 07ee6c8ea1 Merge branch 'v3.4.0-dev' of https://github.com/twbs/bootstrap-3 into v3.4.0-dev 2018-04-08 17:31:07 -07:00
XhmikosR 446973308e Fix HTML validation error. 2018-04-07 10:53:36 +03:00
Mark Otto e1bdfc2b52 Merge remote-tracking branch 'origin/master' into v3.4.0-dev 2018-04-06 22:11:55 -07:00
Mark Otto ab3a997236 update port from 3001 to 9001 2018-04-06 22:09:37 -07:00
Mark Otto 511b063fbe add 3.3 to version dropdown 2018-04-06 22:09:01 -07:00
Mark Otto a720e23a51 remove autocomplete 2017-11-26 13:42:01 -08:00
Mark Otto fac48547a6 fix broken url 2017-11-26 13:41:51 -08:00
Mark Otto ccd7742397 stylelint the examples 2017-11-26 13:40:49 -08:00
Mark Otto 3c2f8bafac remove csscomb, it's duplicating work from stylelint 2017-11-26 13:40:33 -08:00
Mark Otto f464005382 update deps 2017-11-26 00:57:48 -08:00
Mark Otto 6b825f98e7 restore that 2017-11-26 00:57:27 -08:00
Mark Otto 0a7a1b7a99 move that to separate file 2017-11-26 00:42:55 -08:00
Mark Otto 96c808dd0f file cleanup 2017-11-26 00:39:59 -08:00
Mark Otto 3f02fe4012 fix qunit test running by upgrading to latest version 2017-11-26 00:39:48 -08:00
Mark Otto 58286c1ba5 3.3.7 link 2017-11-25 23:21:58 -08:00
Mark Otto 3073a4e9b6 Merge branch 'master' into v3.4.0-dev 2017-11-25 18:32:45 -08:00
Mark Otto 53f31b3edd Merge remote-tracking branch 'origin/master' into v3.4.0-dev 2017-11-25 18:28:00 -08:00
Mark Otto 1debfd2d83 Merge branch 'v3.4.0-dev' of https://github.com/twbs/bootstrap into v3.4.0-dev 2017-11-25 18:06:49 -08:00
Mark Otto 04d92a420a move from csslint to stylelint 2017-11-25 18:06:34 -08:00
Craig Main 2c2ac33564 Prevent empty carousel from throwing, and staying in a 'sliding' state.
Fixes #24132.
2017-10-04 10:51:34 +03:00
Patrick H. Lauke e52df5dce5 Update contributing.md with correct branch (v4-dev instead of master) 2017-09-24 13:46:16 +02:00
XhmikosR 37e65feeda Unset _JAVA_OPTIONS env variable.
It's causing build failures.

See travis-ci/travis-ci#8408
2017-09-17 08:51:56 +03:00
Johann-S 29f9237f73 Fix XSS in Alert, Carousel, Collapse, Dropdown and Modal 2017-09-14 10:07:51 +02:00
XhmikosR 8b727783d8 Update Gemfile.lock so that it works with platform ruby too. (#23275) (#23927) 2017-09-12 20:54:36 +03:00
Harish Gadiya b6fdf61e90 Fixed footer broken links (#23808) 2017-09-12 20:54:12 +03:00
XhmikosR 9ed834a5a8 Update Gemfile.lock so that it works with platform ruby too. (#23275) 2017-08-10 19:36:13 +03:00
Mark Otto 4731b239b1 grunt 2017-07-09 20:47:51 -07:00
Mark Otto 59cddda490 tweak sidebar search 2017-07-04 22:43:22 -07:00
Mark Otto 6513bab359 fix paths in footer 2017-07-04 17:16:35 -07:00
Mark Otto 21570370be fix docsearch styles 2017-07-04 17:16:29 -07:00
Mark Otto 0cda77f52f footer links 2017-07-04 14:53:25 -07:00
Mark Otto 0bb5addfc8 proper docs min 2017-07-04 14:53:16 -07:00
Mark Otto 43328fbdd2 update customizer vars 2017-07-04 14:17:00 -07:00
Mark Otto 237196720c remove unused function 2017-07-04 14:15:56 -07:00
Mark Otto 8edfb24a3c docsearch api 2017-07-04 14:15:04 -07:00
Mark Otto 819f42a7d0 more version change 2017-07-04 14:03:26 -07:00
Mark Otto 332a1905f2 bump version 2017-07-04 13:48:46 -07:00
Mark Otto bf63d052c0 stub out docsearch additions 2017-07-04 13:24:51 -07:00
Mark Otto 4bf6d7cb29 rewrite docs navbar less to use nesting, then tweak horizontal padding to prevent early navbar breakage in responsive viewports 2017-07-04 13:07:59 -07:00
Mark Otto 8936e8a981 fix ads breaking too soon 2017-07-04 13:07:32 -07:00
Mark Otto 059969bcd2 update links, new version to v3.4.0, add new baseurl for easy v3.4 building 2017-07-04 13:07:15 -07:00
Mark Otto 4c4390193f remove bs-example classes from large/small modals. fixes #22265. 2017-07-03 11:42:23 -07:00
Mark Otto 79f9aef216 fixes #22238 2017-07-03 11:34:50 -07:00
Mark Otto 7011e272c1 remove abbr border-bottom styling. fixes #16574. 2017-07-03 11:33:56 -07:00
Mark Otto 48f1482306 add .row-no-gutters class
fixes #15180, fixes #19107, fixes #9102, fixes #7368
2017-07-03 09:18:28 -07:00
Mark Otto 2fb0cd598d run copy task during watch 2017-07-03 08:58:01 -07:00
Mark Otto 1802075458 system fonts 2017-07-03 08:57:49 -07:00
Mark Otto 3436fa2de4 small homepage update to include themes 2017-07-03 08:57:42 -07:00
Mark Otto 1a8f098a8a rip out the browser detection 2017-07-03 00:03:48 -07:00
Mark Otto 11e6178496 get rid of that 2017-07-02 23:53:21 -07:00
Mark Otto f9b27e9ec7 v for version 2017-07-02 23:52:45 -07:00
Mark Otto 2dc18fd42e new port 2017-07-02 23:52:38 -07:00
Mark Otto f08cf1fce7 don't let nav stack too early 2017-07-02 23:52:20 -07:00
Mark Otto 1d8328067a dropdown nav for other docs versions 2017-07-02 15:40:25 -07:00
Mark Otto 6c24c687ee move skippy and v4 notice to partials 2017-07-02 15:38:07 -07:00
Mark Otto 1e91bc2119 more syntax changes 2017-07-02 15:28:51 -07:00
Mark Otto 5706cfe42a update comments and syntax 2017-07-02 15:23:29 -07:00
Mark Otto 6621d55471 remove old comment 2017-07-02 15:20:08 -07:00
Mark Otto 0385ab3c54 less syntax 2017-07-02 15:17:44 -07:00
Mark Otto c8bad01c20 less syntax 2017-07-02 15:16:37 -07:00
Mark Otto 9c227e6b74 update to less syntax 2017-07-02 15:16:00 -07:00
Mark Otto 7ef172df57 update to less syntax 2017-07-02 15:14:53 -07:00
Mark Otto 2f8018749d update comments, use variable for media query 2017-07-02 15:14:15 -07:00
Mark Otto 602940d634 remove comment 2017-07-02 15:13:49 -07:00
Mark Otto 448040ad5b formatting 2017-07-02 15:13:44 -07:00
Mark Otto 6cbd9b5ad5 remove commented out code 2017-07-02 15:12:55 -07:00
Mark Otto ce24064690 remove old docs ads code, clean things up 2017-07-02 15:12:38 -07:00
Mark Otto 4f4592c225 Reorganize v3 docs CSS to use Less 2017-07-02 15:09:46 -07:00
Patrick H. Lauke 9b7d1406b9 Merge pull request #20765 from patrickhlauke/master
Port d71c7c0958 to v3
2016-09-22 11:06:30 +01:00
Patrick H. Lauke 5f06a8ebd6 Port d71c7c0958 to v3 2016-09-22 11:03:03 +01:00
Chris Rebert 7e2741eb10 Port 6844745db5 to v3
Most Wanted features: Add Edge UserVoice <dialog> entry

https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6508895-dialog-element
Refs #20175

[ci skip]
2016-08-02 21:37:14 -07:00
Patrick H. Lauke c282ca589c Merge pull request #20409 from nfatah/patch-1
update index.html
2016-07-29 17:49:23 +01:00
Negus a3c9077945 update index.html
correct visible text corresponding to number of collumns
2016-07-29 19:17:06 +03:00
Patrick H. Lauke 340169eacd Merge pull request #20407 from hebbet/master
update teaser links
2016-07-29 12:44:13 +01:00
Pascal Herbert d2adfe5a28 update teaser links 2016-07-29 13:01:59 +02:00
Chris Rebert 0b9c4a4007 Regenerate Customizer JavaScript
[ci skip]
2016-07-25 08:51:55 -07:00
Chris Rebert ca3fabd5a1 _config.yml: Update SRI hashes for v3.3.7 2016-07-25 08:49:45 -07:00
Chris Rebert 9a4d1ae37f grunt
[ci skip]
2016-07-25 08:45:02 -07:00
Chris Rebert e8c5de3980 grunt dist 2016-07-25 08:43:43 -07:00
Chris Rebert c391850a2d Update remaining version numbers in source files
Refs a90341ced2
Errata for #20357

[ci skip]
2016-07-25 08:42:13 -07:00
Chris Rebert 82cba4eeab Fix grunt/change-version.js to update NuGet-related files too
[ci skip]
2016-07-25 08:40:41 -07:00
Chris Rebert a90341ced2 Fix grunt/change-version.js to update .less files too
[ci skip]
2016-07-25 08:36:11 -07:00
Chris Rebert 904f306c52 NuGet: Adjust version range to allow jQuery 3
Refs #16834

[skip sauce]
[skip validator]
2016-07-25 08:30:30 -07:00
Chris Rebert 0ef40c496e Update NuGet version numbers is preparation for v3.3.7 release 2016-07-25 08:28:12 -07:00
Chris Rebert df08d95495 Update version numbers in preparation for v3.3.7 release (#20357)
[skip sauce]
2016-07-25 08:24:11 -07:00
Chris Rebert a4cfdcca0a Merge pull request #20356 from twbs/revert-18700
Revert #18700 but discourage using <a>s for disabled pagination items
2016-07-25 08:22:47 -07:00
Chris Rebert 6dc3bba1cb Discourage usage of <a>s for disabled pagination items
Refs https://github.com/twbs/bootstrap/commit/a217db1923a552b53c7a0c005e69c598fbd1a98a#commitcomment-18275320
/fyi @patrickhlauke

[skip sauce]
2016-07-25 08:01:01 -07:00
Chris Rebert 4b0c3f2b8b Revert "Add pointer-events:none to disabled pager/pagination"
This reverts commit a217db1923.
This reverts PR #18700
See the discussion in the comments on that commit.

[skip sauce]
2016-07-25 08:00:27 -07:00
Chris Rebert 02e9fdaa54 Update iOS temporal input types support comment (#20343)
* <input type="datetime"> no longer exists, per https://github.com/whatwg/html/issues/336
* iOS 9.3.2 still doesn't support <input type="week">

[skip sauce]
[skip validator]
2016-07-21 21:36:33 -07:00
Chris Rebert 2f9852e7cd iOS 9.3 is still affected by https://webkit.org/b/153856
[skip sauce]
2016-07-21 21:34:30 -07:00
Chris Rebert 904511adbd Docs: Update Safari versions affected by #9774
Still affects v9.1.2, but current Safari Technology Preview is no longer affected.
Refs #20342

[skip sauce]
2016-07-21 21:09:30 -07:00
Chris Rebert edefe0e77a Update jQuery version check and jQuery dependency version range (#20338)
Closes #16834

[skip validator]
2016-07-21 08:14:21 -07:00
Chris Rebert c2404d30e9 Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3; fixes #20280 (#20313)
Refs https://github.com/jquery/jquery/issues/3137

[skip validator]
2016-07-20 17:21:56 -07:00
Chris Rebert d3cbb8eac2 Port #20315 to v3
Add position:sticky to Most Wanted features (#20315)

[skip sauce]
2016-07-17 14:18:09 -07:00
Pvanhesteren a329fda8f0 Clarify valid values of Carousel's pause option
Fixes #18205
Closes #19410

[skip sauce]
2016-07-17 00:11:52 -07:00
Nicolas Ettlin 6ae5378202 Docs CSS: Removed border from GitHub buttons (#19606)
[skip sauce]
2016-07-17 00:01:59 -07:00
Chris Rebert b8b099ddac Gruntfile.js: Use single quotes in htmlmin config to make JSCS happy (#20314)
[skip validator]
[skip sauce]
2016-07-16 21:22:39 -07:00
Chris Rebert 04036c349f Port #20311 to v3
Rename shrinkwrap-related npm script (#20311)

To avoid infinite recursion in newer npm versions, which added a lifecycle script for `npm shrinkwrap`.
Refs https://github.com/npm/npm/issues/13253
Refs https://github.com/npm/npm/pull/12814

[ci skip]
2016-07-16 14:17:23 -07:00
XhmikosR fb75e8615a Revert "Update anchor.js to v3.2.0."
This reverts commit d4805c2c3d.
2016-07-15 03:09:18 +03:00
XhmikosR 5e8ff07322 Run grunt.
[ci skip]
2016-07-14 11:11:03 +03:00
XhmikosR edbfd7e24d Update html-minifier's options.
[ci skip]
2016-07-14 11:04:26 +03:00
XhmikosR 3e3a266149 Bump devDependencies.
[sauce skip]
2016-07-14 10:57:41 +03:00
XhmikosR 4d2a9cd12f nuget: bump version and convert tabs to spaces.
[ci skip]
2016-07-14 10:55:43 +03:00
Chris Rebert 4574b4a918 Port #20299 to v3
Wall of Browser Bugs: Link to WebKit meta-bug

https://bugs.webkit.org/show_bug.cgi?id=159753

[skip sauce]
2016-07-13 22:22:42 -07:00
Patrick H. Lauke 4679c3ee30 Merge pull request #20294 from tomlutzenberger/v3-html-validation
Lint Docs HTML Files
2016-07-13 15:52:50 +01:00
Tom Lutzenberger 4c459bd6cf Lint Docs HTML Files 2016-07-13 16:42:48 +02:00
XhmikosR dc99250817 Merge pull request #20287 from twbs/master-docs-img
Losslessly compress docs images.
2016-07-12 22:19:16 +03:00
XhmikosR 8691d87c62 Losslessly compress docs images.
Used zopfli 1.0.1, with `zopflipng -m --lossy_transparent -y --iterations=1000`

Before: 23,7 KB (24.352 bytes)
After:  23,5 KB (24.079 bytes)
2016-07-12 17:59:42 +03:00
Chris Rebert e67e3e9b19 button.js: Set disabled property in addition to disabled attribute to preserve behavior under jQuery 3 (#20278)
This code ought to have used .prop instead of .attr in the first place,
but we can't get rid of the attr manipulation now due to backward compatibility constraints.

Refs https://github.com/jquery/jquery-migrate/blob/3.0.0/warnings.md#jqmigrate-jqueryfnremoveattr-no-longer-sets-boolean-properties
Refs #16834

[skip validator]
2016-07-12 04:04:40 -07:00
Dave Methvin 1956146787 alert: Avoid calling jQuery('#'), it's a syntax error in jQuery 3.0 (#20019) 2016-07-12 00:29:04 -07:00
Chris Rebert 769b2d2462 Port #20175 to v3
[skip sauce]
2016-07-11 20:07:45 -07:00
Chris Rebert 584d1fff9e Add Most Wanted Features entries for <dialog>
Ports 0b21f2ecb1 to v3

Refs https://bugzil.la/840640
Refs https://webkit.org/b/84635

[skip sauce]
2016-07-11 20:05:04 -07:00
Chris Rebert e335e64268 Move browser feature requests to new "Most wanted features" section
Ports 58aca28234 to v3
2016-07-11 20:03:59 -07:00
XhmikosR d4805c2c3d Update anchor.js to v3.2.0.
[ci skip]
2016-07-12 03:34:38 +03:00
XhmikosR 1317e45a54 Merge pull request #20258 from twbs/fix-19063-v3
Tell clean-css to inline source files into sourcemap
2016-07-12 03:18:16 +03:00
XhmikosR c9425d8bbc Update gems.
[ci skip]
2016-07-12 03:14:43 +03:00
Chris Rebert 079b48b891 Run grunt. 2016-07-12 03:14:03 +03:00
Chris Rebert ebdbed1b7d Tell clean-css to inline source files into sourcemap; v3 fix for #19063 2016-07-12 03:05:40 +03:00
XhmikosR 6b3e08420f Merge pull request #20267 from twbs/master-deps
Update devDependencies and gems.
2016-07-11 02:33:38 +03:00
XhmikosR c2f1bf7414 Run grunt.
[ci skip]
2016-07-10 19:08:48 +03:00
XhmikosR 8af91ab967 Update gems. 2016-07-10 19:07:28 +03:00
XhmikosR 13734b55a0 Update devDependencies. 2016-07-10 19:07:15 +03:00
Patrick H. Lauke c3c089b895 Remove forced default focus outline
As this causes non-standard dotted outline on checkboxes/radio buttons
in OS X Firefox

Fixes #19933
Closes #19935

[skip sauce]
2016-07-09 01:36:29 -07:00
Chris Rebert 415f144d8d Merge pull request #20259 from twbs/backport-unit-fixes
Backport JS unit test fixes from v4
2016-07-07 23:51:04 -07:00
Dave Methvin bc05ef16ec Port #20198 to v3
ScrollSpy unit test: Use single done() in a then() instead of multiple done()s

Fixes test flakiness on OS X Safari and Android when using jQuery 3.
Fixes #20182 more
Refs #20191
2016-07-07 23:32:50 -07:00
Dave Methvin 4a8b29fbf5 Port #20190 to v3
Scrollspy test: Allow for async .then() in jQuery 3; fixes #20182

Instead of doing a new assert.async(), just do a single one for the entire test
and let the .then() be async as well.
2016-07-07 23:32:18 -07:00
Chris Rebert daad359f01 Merge pull request #20199 from twbs/master-deps
Update dependencies
2016-06-28 13:16:32 -07:00
XhmikosR 9c464cfdcd Run grunt.
[ci skip]
2016-06-28 22:24:03 +03:00
XhmikosR f95dbeaf49 Update devDependencies and gems. 2016-06-28 22:23:15 +03:00
XhmikosR d8f278add4 Backport #20196 to v3.
Use shx so that the npm scripts work everywhere the same.
2016-06-28 22:09:21 +03:00
Chris Rebert 209288a199 Port #20183 to v3
Add Wall of Browser Bugs entry for #20161 (#20183)

Refs https://bugzilla.mozilla.org/show_bug.cgi?id=1282363
2016-06-27 01:13:01 -07:00
Chris Rebert 66a0cb3464 Port #20176 to v3
docs/_plugins/bugify.rb: Add support for MS Edge UserVoice ideas (#20176)

[skip sauce]
2016-06-25 21:35:11 -07:00
Chris Rebert 4e16300135 Port #20165 to v3
[skip sauce]
2016-06-23 23:17:36 -07:00
Chris Rebert ea3e63a6ef Port #20143 to v3
Add Wall of Browser Bugs entries for Selectors Level 4 :nth-child() (#20143)

Refs http://caniuse.com/#feat=css-nth-child-of
Refs https://drafts.csswg.org/selectors-4/#the-nth-child-pseudo
Refs https://crbug.com/304163
Refs https://bugzil.la/854148

[skip sauce]
2016-06-22 01:21:32 -07:00
Chris Rebert a3b567ca86 Port e0c768b667 to v3
https://webkit.org/b/158340 has been fixed

So remove its entry from the Wall.
Refs #20012, #20024
Refs http://trac.webkit.org/changeset/202324

[ci skip]
2016-06-21 23:24:44 -07:00
Julien Maulny 2a61c4a0c8 Copy fonts/ into dist/ recursively (#19817)
[skip sauce]
[skip validator]
2016-06-19 22:34:27 -07:00
Chris Rebert 7c86bc9664 Port #20089 to v3
Add Wall of Browser Bugs entries for #12832 (#20089)

Refs #12832
Refs http://getbootstrap.com/getting-started/#support-sticky-hover-mobile
Refs https://bugs.chromium.org/p/chromium/issues/detail?id=370155
Refs https://bugs.webkit.org/show_bug.cgi?id=158517

[skip sauce]
2016-06-07 23:50:38 -07:00
Chris Rebert 123fa3b602 Port #20090 to v3
https://crbug.com/460200 has been fixed! (#20090)

So remove its entry from the Wall of Browser Bugs
Refs #15832

[skip sauce]
[skip validator]
2016-06-07 21:16:28 -07:00
Chris Rebert fcdec36bdd ISSUE_TEMPLATE.md: Fix "questons" typo
[ci skip]
2016-06-05 15:00:37 -07:00
Chris Rebert ad6440ada7 Port 10ce36601d to v3
https://bugzil.la/1278000 was marked as dupe of https://bugzil.la/577785

Update Wall of Browser Bugs accordingly.
Refs #19670

[ci skip]
2016-06-04 00:28:15 -07:00
Chris Rebert 69e8933e02 Port #20037 to v3
Add Wall of Browser Bugs entry for #19670 for Edge (#20037)

See https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7787318/
Refs #19670

[skip sauce]
2016-06-03 23:39:58 -07:00
Chris Rebert 5dc882ef68 Port #19706 to v3
[ci skip]
2016-06-03 23:33:38 -07:00
Chris Rebert 41d31e86cd Port #19984 to v3
Add :dir() pseudo-class feature requests to Wall of Browser Bugs (#19984)

Refs https://developer.mozilla.org/en-US/docs/Web/CSS/:dir
[skip sauce]
2016-06-03 23:18:11 -07:00
Chris Rebert 64c1ba1245 Port #20036 to v3
Add Wall of Browser Bugs entry for #19670 for Firefox (#20036)

See https://bugzil.la/1278000
Refs #19670

[skip sauce]
2016-06-03 23:15:56 -07:00
Chris Rebert 6ccf95816e Port #20026 to v3
Add Wall of Browser Bugs entry for #19839 (#20026)

See https://bugzilla.mozilla.org/show_bug.cgi?id=1277782
Refs #19839

[skip sauce]
2016-06-03 01:23:44 -07:00
Chris Rebert c057edd9f5 Port #20025 to v3
Add Wall of Browser Bugs entry for #17695 (#20025)

See https://webkit.org/b/158342
Refs #17695.

[skip sauce]
2016-06-03 00:18:42 -07:00
Chris Rebert f876523e57 Port #20024 to v3
Add Wall of Browser Bugs entry for #20012 (#20024)

Refs https://webkit.org/b/158340
Closes #20012

[skip sauce]
2016-06-02 22:40:57 -07:00
Chris Rebert 4985ff9f8b Port #20021 to v3
Add Wall of Browser Bugs entry for #19810 (#20021)

Refs https://crbug.com/597642
Closes #19810

[skip sauce]
2016-06-02 21:22:56 -07:00
Chris Rebert 6a1b3a1319 Port #20020 to v3
Add Wall of Browser Bugs entry for #19927 (#20020)

Refs https://webkit.org/b/158276
Closes #19927

[skip sauce]
2016-06-02 21:22:32 -07:00
eiselzby 7864eb4c54 Remove unsupported vendor prefixes for @viewport (#19955)
Fixes #19871
2016-06-02 10:04:20 -07:00
Sébastien Santoro 0b4c1b24c1 Fix typo in panels.less comment: Collapsable → Collapsible (#20017)
[ci skip]
2016-06-01 15:01:37 -07:00
Greg Sheremeta f01f3e5f34 Clear tooltip's $element to prevent leaking memory. Fixes #17973
Closes #19659
2016-05-29 17:43:40 -07:00
Chris Rebert 846b578107 Merge pull request #19982 from twbs/master-devDeps
Update devDependencies
2016-05-29 14:47:08 -07:00
XhmikosR 224cef8794 Run grunt.
[ci skip]
2016-05-29 12:43:07 +03:00
XhmikosR 387642dbb3 Update all devDependencies.
Keep grunt at v0.4.5 due to some of the devDependencies not being updated for grunt 1.x.
2016-05-29 12:43:07 +03:00
XhmikosR 349cc8c3b4 Run grunt.
[ci skip]
2016-05-29 12:18:29 +03:00
Jonathan Persson fc26740876 Merge two jQuery is() calls in the button component by using the OR operator in the selector instead of two function calls with the OR operator between them.
Closes #16918.
2016-05-29 12:18:29 +03:00
Chris Rebert 21d9175fef Port #19765 to v3
Add Wall of Browser Bugs entries for https://webkit.org/b/156684 & https://webkit.org/b/156687

These bugs are factors in our decisions regarding which unit to use in our media queries.
Refs #17403
[skip sauce]
2016-05-28 13:38:39 -07:00
Chris Rebert c25cd2f2f8 Port #19946 to v3
https://crbug.com/475128 has been fixed

Remove its entry from the Wall of Browser Bugs.
Refs #16180

[skip sauce]
2016-05-28 13:36:09 -07:00
Chris Rebert f8b25e936e Port #19958 to v3
https://webkit.org/b/144696 has been fixed

Remove its entry from the Wall of Browser Bugs
Refs #16372

[skip sauce]
2016-05-28 13:33:10 -07:00
Chris Rebert 4fd80971c9 Port #19947 to v3
http://bugzil.la/924068 closed as duplicate of http://bugzil.la/545685

Update the Wall of Browser Bugs entry accordingly.

[skip sauce]
2016-05-28 13:32:11 -07:00
Chris Rebert 4a3a109aa4 Port #19948 to v3
https://crbug.com/427994 has been fixed

Remove its entry from the Wall of Browser Bugs.

[skip sauce]
2016-05-28 13:30:52 -07:00
XhmikosR cd071e0aff Merge pull request #19893 from twbs/master-jquery-1123
Update jQuery to v1.12.4.
2016-05-26 15:40:13 +03:00
XhmikosR cbcf8babc8 Bump gems. 2016-05-26 15:38:50 +03:00
XhmikosR 0c2734fce0 Fix error with the new jQuery. 2016-05-26 15:37:25 +03:00
XhmikosR 20103dac18 Update jQuery to v1.12.4. 2016-05-26 15:33:43 +03:00
Feram bot 795d2208b8 Fix 2 typos; closes #19741
* cover.css: "inheritence" [sic]
* collapse.html: "targetting" [sic]
2016-04-15 12:11:23 -07:00
Chris Rebert 2c240b9f27 Port #19737 to v3
https://webkit.org/b/128489 has been fixed!

Refs #12536
[ci skip]
2016-04-14 15:56:20 -07:00
Chris Rebert 63253aba88 Port #19727 to v3
Add http://bugzil.la/1264125 to Wall of Browser Bugs

Due to the lack of this feature in browsers,
we currently have to implement an annoying setTimeout-based workaround,
which adds an extra layer of complication and probably slightly impacts performance:
https://github.com/twbs/bootstrap/blob/e391fcb953cc959ddd88fb676b68f49eef85ef06/js/src/util.js#L63-L77

[ci skip]
2016-04-12 17:01:36 -07:00
Chris Rebert 7e09021fc3 Port edfd72678d to v3
docs/_plugins/bugify.rb: Remove IE; all relevant issues moved to Edge

Refs #19713
[skip sauce]
2016-04-10 23:23:45 -07:00
Chris Rebert ad0280c227 Port 6ec176eee2 to v3
Update remaining Edge issue URLs in Wall of Browser Bugs

* https://connect.microsoft.com/IE/feedback/details/2445370 => https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/6793560/
* https://connect.microsoft.com/IE/feedback/details/2256049 => https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7165383/

Refs #19713
[skip sauce]
2016-04-10 23:23:02 -07:00
Chris Rebert 38534924fe Port #19712 to v3
https://crbug.com/273306 has been fixed

Refs #12078
[skip sauce]
2016-04-10 23:19:47 -07:00
Patrick H. Lauke 0841f7a9f0 Merge pull request #19704 from patrickhlauke/v3-pagination-a11y-label
Add aria-label and callout about labelling pagination components
2016-04-10 20:25:45 +01:00
Patrick H. Lauke c46af16827 Add aria-label and callout about labelling pagination components 2016-04-10 14:54:05 +01:00
Chris Rebert 82cd05490f Port 62c07b67bf to v3
https://webkit.org/b/143527 has been fixed

Refs #16180, #16262
[skip sauce]
2016-04-08 17:45:03 -07:00
Chris Rebert 885ed7516a Update Wall of Browser Bugs entry for #14211
Refs https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/5381673/
Ports a563dc8f73 to v3
[skip sauce]
2016-04-05 17:10:02 -07:00
Chris Rebert 5a8e00677a Wall of Browser Bugs: Update some more URLs of MS Edge bugs
Ports 63e9346f50 to v3
[skip sauce]
2016-04-05 01:44:03 -07:00
Chris Rebert 6c12012b52 Reflect MS Edge's migration of their issue tracker
Refs https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/
Ports 16d7102176 to v3
[skip sauce]
2016-04-04 17:45:31 -07:00
Chris Rebert 6a070e95be CONTRIBUTING.md: Update MS Edge bug reporting instructions
[ci skip]
2016-04-04 14:46:18 -07:00
XhmikosR d962fdc5b1 Update htmlmin options.
[ci skip]
2016-04-02 10:27:18 +03:00
XhmikosR 67fa9c2f58 Update devDependencies.
[sauce skip]
2016-04-02 10:25:30 +03:00
Chris Rebert 7cbd9a181a Port #19628 to v3
Add Wall of Browser Bugs entry for #19626

Refs https://bugzilla.mozilla.org/show_bug.cgi?id=1259972
Closes #19626
[ci skip]
2016-03-26 21:50:20 -07:00
XhmikosR b4171d2739 Bump grunt-html.
[sauce skip]
2016-03-25 14:51:09 +02:00
Chris Rebert 66a3867450 Merge pull request #19605 from twbs/fix-18559-v3
Use vanilla npm shrinkwrap instead of uber/npm-shrinkwrap
2016-03-24 00:30:02 -07:00
Chris Rebert 6eec5776be update shrinkwrap 2016-03-24 00:12:54 -07:00
Chris Rebert 0af30aa65e Use vanilla npm shrinkwrap instead of uber/npm-shrinkwrap; fixes #18559
Ports #19604 to v3.

Special thanks to @kikinteractive, @azer, and @npm.
2016-03-24 00:12:10 -07:00
Chris Rebert 1a906a8a19 Merge pull request #19570 from twbs/master-jquery-122
Update jQuery to v1.12.2.
2016-03-23 20:14:25 -07:00
XhmikosR 0394b7c60e Update dependencies. 2016-03-19 18:35:35 +02:00
XhmikosR ebc2d2badc Update jQuery to v1.12.2. 2016-03-19 15:18:33 +02:00
Chris Rebert 10606a73bc Port #19551 to v3
Add Wall of Browser Bugs entry for #17338

https://crbug.com/595210

Closes #17338
[skip sauce]
2016-03-15 20:58:53 -07:00
Chris Rebert 55f6efbbae Port #19482 to v3
[ci skip]
2016-03-14 23:02:13 -07:00
Pvanhesteren d9a64a0281 Docs: unwantedly -> undesirably, as the validity of "unwantedly" is uncertain
Closes #19406
2016-03-14 02:32:02 -07:00
Chris Rebert 60168ad099 Port #19537 to v3
[skip sauce]
2016-03-14 02:13:38 -07:00
Chris Rebert 0b39722c7c Port #19470 to v3
CONTRIBUTING.md: Prohibit "+1" comments in favor of reactions

Refs https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments
Refs https://github.com/dear-github/dear-github/issues/141#issuecomment-195106918
[ci skip]
2016-03-14 02:09:40 -07:00
XhmikosR 614559b41a Update anchor.js to v3.1.0.
[ci skip]
2016-03-11 11:09:21 +02:00
XhmikosR 2744e4042f Merge pull request #19378 from twbs/v3-deps
Update devDependencies
2016-03-11 10:58:57 +02:00
Chris Rebert 0119e334a1 Port #19088 to v3
Add Wall of Browser Bugs entry for https://webkit.org/b/153856

Refs https://github.com/twbs/bootstrap/issues/14839#issuecomment-60940738
[ci skip]
2016-03-10 22:36:26 -08:00
Chris Rebert 7a8da2de14 Merge pull request #19469 from wolfy1339/patch-2
Make Hound CI fail on violations
[ci skip]
2016-03-10 22:09:25 -08:00
wolfy1339 6d7669a72d Make hound fail on violations 2016-03-10 21:07:53 -05:00
Chris Rebert f4a09c76f1 Port #19452 to v3
Wall of Browser Bugs: Stop mentioning IE11

Sounds like IE11 isn't getting non-critical fixes anymore, so there's no point in mentioning it (just like there's no point in mentioning IE10).
Help us, Edge-Wan Kenobi! You're our only hope.
[ci skip]
2016-03-10 13:06:00 -08:00
XhmikosR cf566a8041 Run grunt.
[ci skip]
2016-03-10 13:44:17 +02:00
Chris Rebert 626b97e8e9 Travis: Remove env vars for S3 cache credentials
Reverts part of 42697a4ecb
2016-03-10 13:44:17 +02:00
Chris Rebert dd347b59df Travis: Remove env vars for giving Savage access to S3 cache
Since we're not using the S3 cache anymore
Reverts a1c170ed37
2016-03-10 13:44:17 +02:00
XhmikosR f77c96402b Customizer: update uglify-js to v2.6.2.
[ci skip]
2016-03-10 13:44:17 +02:00
XhmikosR 14fa65ea29 Update QUnit to v1.22.0. 2016-03-10 13:44:17 +02:00
XhmikosR 5564142d93 Use jekyll-sitemap instead of our custom solution. 2016-03-10 13:44:16 +02:00
XhmikosR 4265f868ac Remove custom caching and use Bundle for gems. 2016-03-10 13:44:16 +02:00
XhmikosR dcc2b8ac00 Fix HTML validation errors.
[skip sauce]
2016-03-10 13:44:16 +02:00
XhmikosR 9b412a7435 Fix JSHint errors.
[skip sauce]
2016-03-10 13:44:16 +02:00
XhmikosR 60b17950f1 Update devDependencies.
Keep grunt-contrib-qunit to v0.7.0 since the updated version (1.0.1 as the time of writing) results in Travis failures. Locally, both work fine, though.
2016-03-10 13:44:16 +02:00
Chris Rebert 0f1d09b86c Port ada8f21343 to v3
Update Wall of Browser Bugs entry for #15990

http://bugzil.la/1139853 was resolved as a duplicate of http://bugzil.la/924068
Refs #15990
[ci skip]
2016-03-09 16:03:55 -08:00
Patrick H. Lauke 0637c71295 Merge pull request #19435 from patrickhlauke/master
Add native title tooltip IE11/Edge bug to wall of browser bugs
2016-03-07 15:30:48 +00:00
Patrick H. Lauke 981a38f458 Add native title tooltip IE11/Edge bug to wall of browser bugs 2016-03-07 15:28:30 +00:00
Chris Rebert 0a6f80a479 Port #19424 to v3
Docs: Link directly to printing-related browser bugs

* https://bugs.chromium.org/p/chromium/issues/detail?id=273306
* https://bugs.webkit.org/show_bug.cgi?id=138192
[skip sauce]
2016-03-06 21:34:45 -08:00
Chris Rebert 164b89f7af Port #19423 to v3
Docs: Add link to Chrome bug regarding `body { overflow: hidden; }`

https://bugs.chromium.org/p/chromium/issues/detail?id=175502
[skip sauce]
2016-03-06 21:03:46 -08:00
Chris Rebert 0603d7afa0 Port #19395 to v3
Remove Wall of Browser Bugs entry for #19390

Refs https://bugzilla.mozilla.org/show_bug.cgi?id=1217012
Refs #19393
[ci skip]
2016-03-03 22:21:11 -08:00
Chris Rebert 4ed6ea07bb Port #19393 to v3
Add Wall of Browser Bugs entry for #19390

https://bugzilla.mozilla.org/show_bug.cgi?id=1253468
Closes #19390
[ci skip]
2016-03-03 17:34:57 -08:00
Chris Rebert ca69e26b7d CONTRIBUTING.md: Missing serial comma
[ci skip]
2016-03-03 17:00:40 -08:00
Chris Rebert a819a4d2f2 Merge pull request #19389 from cfleschhut/patch-1
Make v4's switch from Less to Sass more explicit in contribution guidelines
[ci skip]
2016-03-03 16:59:30 -08:00
Christian Fleschhut ee4dbf7efd Make switch from Less to Sass more explicit in contribution guidelines 2016-03-03 20:25:58 +01:00
XhmikosR d7f7cee39e Run grunt.
[ci skip]
2016-02-28 04:03:48 +02:00
XhmikosR a27dfca9db Bump version in customizer.js.
[ci skip]
2016-02-28 04:02:37 +02:00
Patrick H. Lauke 85c3cf1b7c Merge pull request #19273 from patrickhlauke/v3-browser-compat-backport1
Port v4 browser support table format to v3
2016-02-28 00:05:59 +00:00
Patrick H. Lauke 2d20bb7e71 Port v4 browser support tables to v3 2016-02-27 23:46:12 +00:00
Chris Rebert bf99fcec1a Port #19321 to v3
Wall of Browser Bugs: Update Chromium bug tracker URLs

RIP code.google.com
[skip sauce]
2016-02-25 17:07:25 -08:00
Chris Rebert f2ba581a25 Merge pull request #19295 from twbs/v3-ios-9.2
Use iOS 9.2 in Sauce tests
2016-02-23 15:16:02 -08:00
Chris Rebert 5d549befdd Use iOS 9.2 in Sauce tests
[skip validator]
2016-02-23 13:21:34 -08:00
Chris Rebert 974cf1fbd2 Merge pull request #18904 from alberto/jquery-1.12.0
Update jQuery to 1.12.1
2016-02-23 13:19:14 -08:00
alberto 741b4eca20 Update jQuery to 1.12.1 2016-02-23 18:50:43 +01:00
Christian Oliff 562d2239c0 Docs: Remove <meta name="keywords"> from <head>
Remove meta keywords - AFAIK no search engines use them for search ranking at all. There's no need for them to be included.

Closes #18872
[skip sauce]
2016-02-18 18:07:12 -08:00
Chris Rebert 00dd18d991 Merge pull request #19263 from twbs/bump-shiv
Bump html5shiv to v3.7.3
2016-02-18 01:14:09 -08:00
Chris Rebert 851e3f1b04 Bump html5shiv to v3.7.3
Fixes #19262
Thanks to @coliff for pointing out that we were using an outdated version.
2016-02-18 00:59:27 -08:00
Chris Rebert 1037e33347 Port #19219 to v3
CONTRIBUTING: Document restriction regarding jQuery event alias methods

Refs #19192
[ci skip]
2016-02-16 14:25:26 -08:00
Chris Rebert 66c81fe4a1 Port #19220 to v3
js/tests/index.html: Replace jQuery event alias methods with functions that throw explanatory errors, instead of with undefined

Refs https://github.com/twbs/bootstrap/pull/19219#issuecomment-184653699

[skip validator]
2016-02-16 14:24:39 -08:00
Patrick H. Lauke a42875afe7 Merge pull request #19233 from patrickhlauke/test-visual-buttons-patch2
Visual/manual test for checkbox/radio button kbd behavior
2016-02-16 22:15:46 +00:00
Patrick H. Lauke eabdad7208 Visual/manual test for checkbox/radio button kbd behavior 2016-02-16 22:13:55 +00:00
Fabrice Daugan ad1e98d094 button.js: Fix keyboard navigation
This PR fixes the keyboard navigation again while still keeping #16223 fixed.

Closes #19192
2016-02-16 04:38:05 -08:00
Chris Rebert ad5e6565cc Port a24112e850 to v3
Remove http://bugzil.la/1060131 from Wall of Browser Bugs

http://bugzil.la/1060131 has been fixed by http://bugzil.la/823483 which should land in Firefox 46.
Refs #14320
[ci skip]
2016-02-10 20:01:00 -08:00
Chris Rebert e7dc95a39a Port 183b57b504 to v3
Remove http://bugzil.la/975632 from Wall of Browser Bugs

http://bugzil.la/975632 has been fixed by http://bugzil.la/823483 which should land in Firefox 46.
Refs #10690
[ci skip]
2016-02-10 19:50:53 -08:00
Patrick H. Lauke 061981f8a3 Merge pull request #19146 from sajadtorkamani/patch-1
Correct spelling
2016-02-10 11:04:09 +00:00
Sajad Torkamani 8881ea290c Correct spelling 2016-02-10 11:01:05 +00:00
Chris Rebert 8d57ee1644 Port df07536dd1 to v3
Revert "https://webkit.org/b/138201 no longer repros"
[skip sauce]
2016-02-08 20:15:40 -08:00
Chris Rebert 64f36a316b Port f618aa7c01 to v3
https://webkit.org/b/138201 no longer repros

Wasn't able to reproduce in iOS 9.2.
So remove its entry from the Wall of Browser Bugs.
Refs #14708
[skip sauce]
2016-02-07 17:04:50 -08:00
Chris Rebert fe47bb202c Update other Bootstrap 4 blog post link; erratum from #18913
[skip sauce]
2016-02-07 15:20:38 -08:00
Chris Rebert 38a70e4a27 Merge pull request #19091 from jshen212/patch-1
docs/assets/js/src/application.js: Fix capitalization in comment
2016-02-05 10:56:18 -08:00
Jeff Shen 6d54142099 Line 59 - Fix case type
Fixed case type to match other comments
2016-02-05 10:27:32 -08:00
Chris Rebert b52ef829c1 Port #19078 to v3
[skip sauce]
2016-02-03 22:58:46 -08:00
Chris Rebert f248bb25ea Port 566290f32e to v3
Add Wall of Browser Bugs entry for https://webkit.org/b/153852

Refs http://getbootstrap.com/getting-started/#overflow-and-scrolling
Refs #14839
[skip sauce]
2016-02-03 22:50:19 -08:00
Patrick H. Lauke 91c8929b28 Merge pull request #19050 from pra85/patch-1
Typo fix
2016-01-29 09:45:28 +00:00
Chris Rebert e492782f08 Merge pull request #19051 from twbs/modal-dialog-role-doc
Docs: Add missing `role="document"`s to `.modal-dialog`s
2016-01-28 22:35:26 -08:00
Chris Rebert a2c4771d7c Docs: Add missing role="document"s to .modal-dialogs
Refs https://github.com/twbs/bootlint/pull/349#issuecomment-176554436

[skip sauce]
2016-01-28 22:30:51 -08:00
Prayag Verma 824b6d35f5 Typo fix 2016-01-29 11:00:25 +05:30
Chris Rebert eb8cb2158a Port 701b467994 to v3
Remove Wall of Browser Bugs entry for #16915

https://connect.microsoft.com/IE/feedback/details/2274240/edge-edge-renders-an-svg-img-with-max-width-100-too-small
is fixed as of Edge 25.10586.0.0 (or possibly earlier).
Confirmed in https://github.com/twbs/bootstrap/issues/16915#issuecomment-175210482
Reverts #19010

[skip sauce]
2016-01-26 12:38:46 -08:00
Chris Rebert 6ff1573f84 Port e381b83233 to v3
Add Wall of Browser Bugs entry for #16915

https://connect.microsoft.com/IE/feedback/details/2274240/edge-edge-renders-an-svg-img-with-max-width-100-too-small
[skip sauce]
2016-01-23 02:55:07 -08:00
Chris Rebert 7e0cac1b47 Port 332c39b690 to v3
Add Wall of Browser Bugs entry for #18228

See https://connect.microsoft.com/IE/feedback/details/2263132/edge-ie11-subpixel-problem-with-transparent-borders
Refs #18228
[skip sauce]
2016-01-20 02:10:54 -08:00
Chris Rebert be6f70a70e Port f15da060ce to v3
Also filed a Radar for #17497

See http://openradar.appspot.com/24235301
Refs #17497
[skip sauce]
2016-01-19 00:24:46 -08:00
Chris Rebert a9812a0281 Port #18936 to v3
Add Wall of Browser Bugs entry for #17497

https://bugs.webkit.org/show_bug.cgi?id=153224
Closes #17497

[skip sauce]
2016-01-18 23:28:43 -08:00
Chris Rebert 64b618df84 Port #18930 to v3
Add Wall of Browser Bugs entry for #18543

https://connect.microsoft.com/IE/feedback/details/2256049/edge-ie11-viewport-rule-has-side-effect-of-making-scrollbars-auto-hide
[ci skip]
2016-01-18 03:45:00 -08:00
Chris Rebert 98b9ff6b7a variables.less: Fix typo in comment for @caret-width-base
Closes https://github.com/twbs/bootstrap-sass/pull/1005
[ci skip]
2016-01-17 20:33:25 -08:00
Chris Rebert 880a3c1a86 Merge pull request #18908 from cssmonkey/patch-1
Modal.enforceFocus: Use correct variable name (event => e)
2016-01-15 17:45:50 -08:00
Chris Rebert 12cf78f64a Merge pull request #18913 from calvinf/patch-1
Docs: Update v4 banner's blog post link
2016-01-15 17:40:03 -08:00
Calvin Freitas aaaf6aa44c update banner
update banner to link to Bootstrap 4 alpha 2 blog post
2016-01-15 13:14:08 -08:00
Sean Jones 9f2f51073c enforceFocus event.target - event is undefined
event.target should be e.target within enforceFocus method.
2016-01-15 12:13:40 +00:00
Chris Rebert 742d3ebcb5 Port 8ed66af63c to v3
Add Wall of Browser Bugs entry for #18859

See https://bugs.webkit.org/show_bug.cgi?id=153056
Closes #18859
[skip sauce]
2016-01-12 22:10:51 -08:00
Chris Rebert d533bf0cbc Port 48e62fdf34 to v3
https://webkit.org/b/150715 has been fixed

Fixed by way of https://webkit.org/b/152803
Thanks Google Translate (I guess) and WebKit Team!
[ci skip]
2016-01-07 18:17:49 -08:00
Chris Rebert 9be8428dcb Port 6ab9e10efa to v3
https://webkit.org/b/147284 has been fixed
Refs #16814
[ci skip]
2016-01-07 14:11:14 -08:00
Chris Rebert 08031d6a76 Merge pull request #18747 from twbs/fix-18711
Docs: disable printing of hrefs
2016-01-02 21:40:57 -08:00
Chris Rebert 1639ef7390 Docs: disable printing of hrefs; fixes #18711
[ci skip]
2016-01-01 18:12:20 -08:00
Chris Rebert 244a0bde1e Port e655c2d to v3
Add Wall of Browser Bugs entry for #18738

* https://bugs.webkit.org/show_bug.cgi?id=152637
* http://openradar.appspot.com/24030853

Closes #18738

[ci skip]
2016-01-01 13:31:23 -08:00
Chris Rebert 06aa2a5bf2 grunt dist docs
[ci skip]
2016-01-01 12:26:53 -08:00
Chris Rebert cf3f8e0d58 Update copyright years to 2016
[ci skip]
2016-01-01 12:22:03 -08:00
Dominic 3dd92b29a3 README: Update copyright to 2016
Happy New Year!
It's 2016!

Closes #18744
2016-01-01 12:13:34 -08:00
AQNOUCH Mohammed 9c469cd0e8 LICENSE: Update copyright to 2016
Closes #18739
2016-01-01 12:12:09 -08:00
Patrick H. Lauke 3a77b01d79 Merge pull request #18700 from patrickhlauke/disabled-pointer-events-v3
Add pointer-events:none to disabled pager/pagination
2015-12-29 16:25:02 +00:00
Patrick H. Lauke a217db1923 Add pointer-events:none to disabled pager/pagination
In line with usage of `pointer-events:none` for disabled buttons
2015-12-27 10:16:07 +00:00
Chris Rebert b0ec851f80 Merge pull request #18639 from twbs/v3-fix-18365
Modal: Ignore spurious focus event that Firefox fires at document when switching back to its tab
2015-12-24 08:15:35 -07:00
XhmikosR b412dc5b14 Run grunt.
[ci skip]
2015-12-24 12:38:22 +02:00
XhmikosR 112b1c7a95 Update dependencies. 2015-12-24 12:37:39 +02:00
Chris Rebert 27fb89037f Merge pull request #18657 from twbs/fix-18145-v3
Update shrinkwrap
2015-12-23 21:38:55 -07:00
Chris Rebert f6755b4687 Update shrinkwrap; fixes #18145 2015-12-23 21:31:40 -07:00
Chris Rebert aeb25ba521 Modal: Ignore spurious focus event that Firefox fires at document when switching back to its tab
Fixes #18365
Ports #18638 to v3
Refs https://bugzilla.mozilla.org/show_bug.cgi?id=1228802
2015-12-22 23:21:51 -07:00
Chris Rebert 50ce63b5e5 Add visual test for #18365
See also https://bugzilla.mozilla.org/show_bug.cgi?id=1228802
2015-12-22 23:18:06 -07:00
Chris Rebert 40996725ce js/tests/unit/modal.js: Fix typo
[ci skip]
2015-12-22 17:11:18 -07:00
Chris Rebert 71a0bfee8e Merge pull request #18593 from twbs/change-version-script
Port #18402 to v3: s/grunt-sed/npm script/g
2015-12-16 21:55:54 -08:00
Chris Rebert 879ebe7ed4 Update shrinkwrap 2015-12-16 21:22:27 -08:00
Chris Rebert ba926a10f3 Port #18402 to v3: s/grunt-sed/npm script/g
Fixes #18338
[skip sauce]
[skip validator]
2015-12-16 21:22:27 -08:00
Chris Rebert ad716b9ea9 Merge pull request #18530 from twbs/npm-install-bootstrap-at-3
Docs: Include major version in `npm install bootstrap` commands
2015-12-10 15:05:45 -08:00
Chris Rebert a823afc5e2 Docs: Include major version in npm install bootstrap commands; refs #18520
[ci skip]
2015-12-10 14:58:47 -08:00
Chris Rebert 8f7535647d Port #18514 to v3
Add Wall of Browser Bugs entry for #18504

https://connect.microsoft.com/IE/feedback/details/2110930/edge-ie11-gradient-background-image-on-tr-is-only-applied-to-first-td

[skip sauce]
2015-12-09 16:04:03 -08:00
Chris Rebert 181f76f115 Port #18453 to v3
Add Wall of Browser Bugs entry related to #16028

https://bugs.webkit.org/show_bug.cgi?id=151933

[skip sauce]
2015-12-07 01:18:45 -08:00
Mark Otto e056a66a3b Merge pull request #18446 from twbs/fix-18332
Check-in the v4 notice and themes link in the docs
2015-12-06 23:54:36 -08:00
Chris Rebert 45b318b32f Merge pull request #18445 from twbs/docs-github
Grunt: Factor out new docs-github task
2015-12-06 11:29:47 -08:00
Chris Rebert 25e8e4fa60 Port #18448 to v3
Add Wall of Browser Bugs entry for #15990

https://bugzilla.mozilla.org/show_bug.cgi?id=1139853
[skip sauce]
2015-12-06 03:08:54 -08:00
Chris Rebert 78ea82520f Port #18447 to v3
Mention Mozilla Firefox meta-bug on Wall of Browser Bugs
https://bugzilla.mozilla.org/show_bug.cgi?id=1230801

[skip sauce]
2015-12-06 02:51:22 -08:00
Chris Rebert 46a294f683 Checkin .v4-tease styles
[skip sauce]
2015-12-06 01:50:35 -08:00
Chris Rebert 0f67b5e3d3 Checkin "Themes" link in navbar 2015-12-06 01:47:59 -08:00
Chris Rebert 2535f18157 _config.yml: Add site.themes variable 2015-12-06 01:47:28 -08:00
Chris Rebert 14b6a215c3 Checkin v4 notice links; CSS still needed 2015-12-06 01:44:31 -08:00
Chris Rebert 3786a71d04 Grunt: Factor out new docs-github task
[skip sauce]
[skip validator]
2015-12-06 01:35:14 -08:00
Chris Rebert 0ea85728d1 button-groups.less: Grammar OCD comment
[ci skip]
2015-12-01 00:07:49 -08:00
Chris Rebert e4730c989e Merge pull request #18384 from henryw4k/patch-1
Clarify comment in button-groups.less
2015-12-01 00:06:21 -08:00
Henry Wong 75ef0dd549 Clarifying the comment
Made comment more clear.
2015-11-29 23:57:47 -08:00
Chris Rebert de0b881c47 Port fd43ce255f to v3
Add Wall of Browser Bugs entry for #18365

See http://bugzil.la/1228802

[skip sauce]
[skip validator]
2015-11-28 20:54:53 -08:00
Chris Rebert fcf8e5215c Merge pull request #18369 from mikexstudios/update-cdn-hash
Updated SRI hashes in docs for CDN links
2015-11-28 16:21:58 -08:00
Michael Huynh 2fb3daafc0 Closes #18353. Updated SRI hashes in docs.
Used https://www.srihash.org/.
2015-11-28 17:25:08 -05:00
Chris Rebert 0506044b94 Merge pull request #18354 from tagliala/fix-whitespaces
Remove whitespace at EOL in input-groups.less
2015-11-26 15:33:33 -08:00
Geremia Taglialatela eb8940b786 Remove whitespaces 2015-11-26 11:47:19 +01:00
Chris Rebert c57a9b78de Revert incorrect version number change in Stateful Button docs
Erratum from 910400e897
See https://github.com/twbs/bootstrap/commit/910400e8979f43d7d329edcaa29add03acb3d48b#commitcomment-14598760
/fyi @mdo

[skip sauce]
2015-11-26 00:59:21 -08:00
Chris Rebert f636ff187e Merge pull request #18337 from twbs/v3-no-feats-for-you
Explain in docs that v3 is closed off to new features
2015-11-25 04:12:18 -08:00
Chris Rebert c56789598a Explain in docs that v3 is closed off to new features
Refs #18112
[skip sauce]
2015-11-24 23:34:09 -08:00
Mark Otto 81df608a40 prep release 2015-11-24 11:37:05 -08:00
Mark Otto 87121181c8 grunt after version bump 2015-11-24 11:08:53 -08:00
Mark Otto 910400e897 bump version 2015-11-24 11:07:36 -08:00
Mark Otto c13de0e69a grunt 2015-11-24 11:05:26 -08:00
Martin Beeby 3001831e19 Updating "Reporting upstream browser bugs" for IE
Adding Microsoft Edge and the rendering engine EdgeHTML.

Closes #18303
[skip sauce]
[skip validator]
2015-11-24 05:46:51 -08:00
Chris Rebert 94b4076dd2 Docs: Add missing tabindex="-1" & role="dialog" to some .modals
Refs https://github.com/twbs/bootlint/pull/314
[skip sauce]
2015-11-15 22:08:42 -08:00
Mark Otto ce58026933 Merge pull request #18253 from twbs/mdo-patch-1
Ensure proper z-indexing in input-groups
2015-11-14 20:27:31 -08:00
Mark Otto bed3872b49 Ensure proper z-indexing in input-groups 2015-11-14 20:26:19 -08:00
Mark Otto 03885dc881 Merge pull request #18252 from twbs/mdo-patch-1
Fix IE9 clickthru of carousel controls
2015-11-14 20:11:16 -08:00
Mark Otto 0820da3f52 Fix IE9 clickthru of carousel controls 2015-11-14 20:10:53 -08:00
Mark Otto c0f6e1c70e Merge pull request #18251 from twbs/mdo-patch-1
Document offset-0 col classes
2015-11-14 19:47:55 -08:00
Mark Otto 087d16d21a that @cvrebert lifestyle 2015-11-14 19:47:49 -08:00
Mark Otto 14d73b9c13 fixes #17003 2015-11-14 19:39:28 -08:00
Chris Rebert 8248b9e210 Merge pull request #18246 from vsn4ik/use-mixin-border-radius
Use border-radius mixin in button-groups.less
2015-11-13 17:36:44 -08:00
vsn4ik 33315652ae [v3] Use border-radius mixin in button-groups.less 2015-11-14 01:16:38 +03:00
Mark Otto f14ee8fd44 Merge pull request #17922 from jackzzjack/master
Add Chinese (Traditional) language translation.
2015-11-12 23:40:37 -08:00
Mark Otto 1565c1196e Follow up to #16975 2015-11-12 21:31:27 -08:00
Mark Otto 332ed554ec Merge pull request #16975 from kkirsche/patch-3
Use @carousel-control-font-size for in min-width sm
2015-11-12 21:28:24 -08:00
XhmikosR 18ddb7648d Run grunt.
[ci skip]
2015-11-12 09:13:58 +02:00
XhmikosR 47283e703b Update devDependencies.
Downgrade grunt-contrib-uglify to fix the comments issue.

[sauce skip]
2015-11-12 09:13:46 +02:00
Chris Rebert c04aa41ee2 Merge pull request #18214 from kkirsche/patch-2
Update verbiage to proper tense for feature deprecations
2015-11-11 16:18:43 -08:00
Kevin Kirsche fc87d82ae9 Update verb tenses to proper tense for feature deprecations
X-Ref: https://github.com/twbs/bootstrap/commit/fce30b57e2fbe750cdebf1794d3917f3176d06ce
2015-11-11 18:54:10 -05:00
Mark Otto b2a4cf0517 Merge pull request #16965 from zacechola/document_icon_helpers
Call out `.icon-next`, `.icon-prev` alternative classes for Carousel
2015-11-08 18:15:29 -08:00
Mark Otto ef8bc28890 Merge pull request #16684 from kkirsche/patch-2
Fix border-radius not being set on 2 corners of vertical btn group
2015-11-08 18:13:48 -08:00
Chris Rebert 857d9d688f Port 33103c0b52 to v3
http://wkbug.com/146244 has been fixed in WebKit Nightly

See http://trac.webkit.org/changeset/191954
Refs #15968

[ci skip]
2015-11-03 15:14:45 -08:00
Chris Rebert 80cd128843 Port 6f14f02fc5 to v3
http://crbug.com/523282 has been fixed in Chrome Canary

Refs #17913
[ci skip]
2015-11-01 21:16:06 -08:00
Chris Rebert a367408608 Merge pull request #18080 from twbs/csp-progress
Add docs regarding .progress, inline style attrs, and CSP
2015-10-30 01:45:15 -07:00
Chris Rebert 04d1b1fb49 Merge pull request #18111 from twbs/wkbug-150715
Add http://wkbug.com/150715 to Wall of Browser Bugs
2015-10-30 01:31:18 -07:00
Chris Rebert ea7c23b6ce Add http://wkbug.com/150715 to Wall of Browser Bugs
[skip sauce]
[skip validator]
2015-10-30 01:27:51 -07:00
Chris Rebert 6e1e77b539 Add docs regarding .progress, inline style attrs, and CSP; closes #17785
[skip sauce]
2015-10-29 22:51:19 -07:00
XhmikosR f5bb168a79 Run `grunt.
[skip sauce]
2015-10-29 18:02:53 +02:00
XhmikosR 50bea4625a Update devDependencies.
[skip sauce]
2015-10-29 18:02:52 +02:00
XhmikosR 5c8f7a03da Update Rouge to v1.10.1.
[skip sauce]
2015-10-29 18:02:51 +02:00
XhmikosR 2cccdc8e3d Update to Jekyll v.3.0.0.
[skip sauce]
2015-10-29 18:02:40 +02:00
Chris Rebert 2261427a2f Port #18091 to v3
Remove http://wkbug.com/149935 from Wall of Browser Bugs

It's been fixed in WebKit Nightly!
See https://trac.webkit.org/changeset/191623 and http://wkbug.com/149366
Refs #17438, #14237

[ci skip]
2015-10-28 13:04:53 -07:00
Mark Otto 3d127c0568 Merge pull request #17879 from bhamodi/master
Update Example Footers.
2015-10-26 20:53:31 -07:00
Chris Rebert 0d2cc3ed43 Port 152c491898 to v3
https://webkit.org/b/150271 has been fixed!

See http://trac.webkit.org/changeset/191610
Refs #17913
[ci skip]
2015-10-26 16:44:46 -07:00
Chris Rebert 0e3948febe Port 2332a3f536 to v3
http://crbug.com/544290 was marked duplicate of http://crbug.com/523282

Refs #17913
[ci skip]
2015-10-25 16:38:58 -07:00
Chris Barry 9aeec56745 Adding subresource hashes to CDN links.
In Firefox 43 and Chrome 45 there will be support for Subresource
Iintegrity (SRI). More information here:
https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity

Closes #17729 by merging a tweaked version of it.
2015-10-23 22:22:57 -07:00
Chris Rebert 18ad53fc56 Fix Hound's JS config
Per https://github.com/twbs/bootstrap/pull/17997#discussion_r42564175 ; thanks @vsn4ik !
Refs #17769
/fyi @croaky

[ci skip]
2015-10-20 15:57:11 -07:00
Chris Rebert 7552295617 Port #17955 to v3
Add #17913 to Wall of Browser Bugs
Refs https://code.google.com/p/chromium/issues/detail?id=544290
Refs https://bugs.webkit.org/show_bug.cgi?id=150271
Closes #17913
[ci skip]
2015-10-17 00:41:23 -07:00
Chris Rebert 1db87efc2a Merge pull request #17944 from supergibbs/NuGet_badge
Update MyGet badge
2015-10-15 17:21:02 -07:00
Supergibbs 14c04c82d3 Changed MyGet badge to more useful and better looking NuGet one by
shields.io
2015-10-15 16:48:51 -07:00
jackzzjack 15eeb87286 Add Chinese (Traditional) language website. 2015-10-14 10:41:06 +08:00
Chris Rebert 5b46f3d9d9 Merge pull request #16710 from supergibbs/NuGet_16692
Added NuGet support
2015-10-13 15:11:19 -07:00
Philip Masek 03dbebb216 Clarify that .panel-heading overrides font-size of <hN> tags
Closes #17533
Closes #17735
2015-10-13 10:57:32 -07:00
Chris Rebert a0b8cb74c5 Port #17906 to v3
Add Wall of Browser Bugs entry for #14975
See https://bugs.webkit.org/show_bug.cgi?id=150079
Closes #14975
[ci skip]
2015-10-12 19:12:54 -07:00
Chris Rebert 167c6fa93a Port #17902 to v3
http://wkbug.com/138167 has been fixed!
See http://trac.webkit.org/changeset/190893
Refs #9774, #14907
[ci skip]
2015-10-12 16:23:37 -07:00
Chris Rebert bb5542651d Merge pull request #17880 from bhamodi/newline-fixes
Added missing new lines at EOF.
2015-10-10 18:19:54 -07:00
Chris Rebert d97bf25855 Add Wall of Browser Bugs entry for Safari related to #17438 / #14237
https://bugs.webkit.org/show_bug.cgi?id=149935
[skip sauce]
2015-10-10 17:03:36 -07:00
Baraa Hamodi 07c8e3862c Added missing new lines at EOF. 2015-10-10 19:31:57 -04:00
Baraa Hamodi 388b3363d2 Update Example Footers. 2015-10-10 12:53:16 -04:00
Chris Rebert 799ccf38b9 Add missing space in .backface-visibility definition; fixes #17873
[ci skip]
2015-10-10 00:30:46 -07:00
Chris Rebert c697e17370 Port #17820 to v3
Add Wall of Browser Bugs entry for #17438 / #14237
Refs https://code.google.com/p/chromium/issues/detail?id=534750
Closes #17438
Closes #14237

[skip sauce]
2015-10-08 13:50:45 -07:00
Chris Rebert f5043002d8 Be pedantically correct; refs #17809
[skip sauce]
2015-10-07 21:32:57 -07:00
Chris Rebert 1d39f938bb Tooltips on <table>s should use container: body ; fixes #17809 2015-10-07 21:24:20 -07:00
Dan Croak d53525cc3e Add JavaScript configuration for Hound
This change uses Bootstrap's existing `js/.jshintrc` file
to configure Hound's hosted JSHint instance.

It leaves existing JavaScript linting as-is
because Hound does not support ESLint or JSCS yet.

On each pull request to Bootstrap,
Hound will comment on any JavaScript style violations in-line,
like this:

![screenshot](https://images.thoughtbot.com/hound/javascript-example.png)

If you update the pull request to adopt a suggestion,
the comment will be hidden.

It leaves the existing linting done by Grunt + Travis.

Hound is free for open source projects
and is open source itself:

https://github.com/thoughtbot/hound
2015-10-03 22:45:37 -07:00
Chris Rebert a482ddb858 Merge pull request #17753 from twbs/moz-1048279
Remove http://bugzil.la/1048279 entry from Wall of Browser Bugs
2015-10-01 10:40:16 -07:00
Chris Rebert ac9fa84385 Remove http://bugzil.la/1048279 entry from Wall of Browser Bugs
https://bugzilla.mozilla.org/show_bug.cgi?id=1048279 has been closed as WONTFIX.
Refs #14124.
[skip sauce]
2015-10-01 10:36:24 -07:00
Chris Rebert 8f627f6546 Merge pull request #17742 from twbs/ie10-viewport-bug-workaround-css
Add CSS portion of IE10 viewport bug workaround to docs & examples
2015-09-30 12:51:33 -07:00
Chris Rebert 700966253a Add CSS portion of IE10 viewport bug workaround to examples
Fixes #17337
2015-09-30 12:41:27 -07:00
Chris Rebert 05b1c625be Add CSS portion of IE10 viewport bug workaround to docs
Refs #17337
2015-09-30 12:41:18 -07:00
Chris Rebert 79cdd66bbb Merge pull request #17726 from tomkel/docs-fade-fix
Docs - clarify purpose of CSS class .in to .fade
[skip sauce]
2015-09-28 14:36:44 -07:00
Tommy Kelly e12547d1de Docs - clarify purpose of CSS class .in to .fade 2015-09-28 16:23:54 -04:00
Baraa Hamodi 85bc0338d1 Documentation clean up and consistency; closes #17625
[skip sauce]
2015-09-28 12:37:35 -07:00
Chris Rebert e38f066d8c Merge pull request #17712 from twbs/chrome-meta
Mention Chrome meta-bug on Wall of Browser Bugs
2015-09-27 01:25:57 -07:00
Chris Rebert a52c68092c Mention Chrome meta-bug on Wall of Browser Bugs
https://code.google.com/p/chromium/issues/detail?id=536263

[skip sauce]
2015-09-27 01:18:51 -07:00
Chris Rebert 99d243a6b1 Merge pull request #17693 from rclai/patch-1
Update support for Meteor 1.2
2015-09-24 15:36:04 -07:00
Richard Lai 7f45ac255a Update support for Meteor 1.2 2015-09-24 09:06:17 -04:00
Mark Otto 911312d61e Merge pull request #17485 from psychobunny/patch-1
Separated link not actually separated
2015-09-05 21:33:21 -07:00
psychobunny a035ae2882 Separated link not actually separated 2015-09-05 14:31:17 -04:00
Mark Otto 3293350780 Merge pull request #17332 from twbs/themes-contact
Mention themes contact info in CONTRIBUTING.md
2015-09-01 20:27:19 -07:00
Mark Otto aba3e40132 Update CONTRIBUTING.md 2015-09-01 20:27:13 -07:00
Supergibbs 9d2bb0faa7 Updated NuGet jQuery dependency (>= 1.9.1 but < 3) to
match https://github.com/twbs/bootstrap/pull/16896
2015-09-01 17:08:25 -07:00
Chris Rebert 4753bfb9aa Mention themes contact info in CONTRIBUTING.md
[skip sauce]
[skip validator]
2015-08-26 02:21:34 -07:00
Supergibbs 86997512ce Changed to only include only *.less files (to match NPM/Bower) 2015-08-20 09:30:30 -07:00
Chris Rebert 108173369d Merge pull request #17012 from kkirsche/patch-5
Have Travis CI use Ruby 2.0.0
2015-08-19 19:30:48 -07:00
Kevin Kirsche 697593b9d1 Have travis use Ruby 2.0.0
Fix #17011

Update .travis.yml
2015-08-18 14:51:00 -04:00
Chris Rebert 767cbef6d4 Merge pull request #16994 from twbs/ios-text-input-bug
Add Wall of Browser Bugs entry for #16988
2015-08-15 19:55:19 -07:00
Chris Rebert 2c4e2fdd6d Add Wall of Browser Bugs entry for #16988
Refs http://wkbug.com/148061
Refs http://openradar.me/22299624
Closes #16988
[skip sauce]
2015-08-15 19:48:45 -07:00
Chris Rebert c591227602 Travis: Update Savage webhook URL after server move 2015-08-12 20:09:41 -07:00
Kevin Kirsche 4f09bbc4ec Use @carousel-control-font-size for in min-width sm
Fix #16973

As 30px was hard coded for the following attribute values: `width`, `height`, and `font-size`, I have used the same pixel formula for each of these three as the `@carousel-control-width` is a percent value not a pixel value in variables.less
2015-08-12 08:09:18 -04:00
Zac Echola a1eafb1e46 Adds callout for .icon-next, .icon-prev 2015-08-10 14:32:47 -05:00
Supergibbs 2e59d177aa Cleaner version parsing
Changed LESS to Less and author to Twitter, Inc.
2015-06-26 09:17:24 -07:00
Supergibbs 95013f7d6d NuGet Support - Added .nuspec files and MyGet.ps1 build script plus
status on README
2015-06-25 16:38:40 -07:00
Kevin Kirsche 5387ed62b6 Fix border-radius not being set on left of vertical btn group
While this is correct that it was not being set, I did not notice any visible difference in Chrome on OS X when it is not set.

Fixes #16683
2015-06-22 08:35:47 -04:00
1193 changed files with 93720 additions and 163412 deletions
-12
View File
@@ -1,12 +0,0 @@
module.exports = {
presets: [
[
'@babel/preset-env',
{
loose: true,
bugfixes: true,
modules: false
}
]
]
};
-12
View File
@@ -1,12 +0,0 @@
# https://github.com/browserslist/browserslist#readme
>= 0.5%
last 2 major versions
not dead
Chrome >= 60
Firefox >= 60
Firefox ESR
iOS >= 12
Safari >= 12
not Explorer <= 11
not kaios <= 2.5 # fix floating label issues in Firefox (see https://github.com/postcss/autoprefixer/issues/1533)
-66
View File
@@ -1,66 +0,0 @@
{
"files": [
{
"path": "./dist/css/bootstrap-grid.css",
"maxSize": "10.0 kB"
},
{
"path": "./dist/css/bootstrap-grid.min.css",
"maxSize": "9.0 kB"
},
{
"path": "./dist/css/bootstrap-reboot.css",
"maxSize": "5.5 kB"
},
{
"path": "./dist/css/bootstrap-reboot.min.css",
"maxSize": "4.5 kB"
},
{
"path": "./dist/css/bootstrap-utilities.css",
"maxSize": "15.25 kB"
},
{
"path": "./dist/css/bootstrap-utilities.min.css",
"maxSize": "13.5 kB"
},
{
"path": "./dist/css/bootstrap.css",
"maxSize": "37.5 kB"
},
{
"path": "./dist/css/bootstrap.min.css",
"maxSize": "33.75 kB"
},
{
"path": "./dist/js/bootstrap.bundle.js",
"maxSize": "43.0 kB"
},
{
"path": "./dist/js/bootstrap.bundle.min.js",
"maxSize": "23.5 kB"
},
{
"path": "./dist/js/bootstrap.esm.js",
"maxSize": "28.0 kB"
},
{
"path": "./dist/js/bootstrap.esm.min.js",
"maxSize": "18.25 kB"
},
{
"path": "./dist/js/bootstrap.js",
"maxSize": "28.75 kB"
},
{
"path": "./dist/js/bootstrap.min.js",
"maxSize": "16.25 kB"
}
],
"ci": {
"trackBranches": [
"main",
"v4-dev"
]
}
}
-134
View File
@@ -1,134 +0,0 @@
{
"version": "0.2",
"words": [
"affordance",
"allowfullscreen",
"Analyser",
"autohide",
"autohiding",
"autoplay",
"autoplays",
"autoplaying",
"blazingly",
"Blockquotes",
"Bootstrappers",
"borderless",
"Brotli",
"browserslist",
"browserslistrc",
"btncheck",
"btnradio",
"callout",
"callouts",
"camelCase",
"checkgroup",
"clearfix",
"Codesniffer",
"combinator",
"Contentful",
"Cpath",
"Crossfade",
"crossfading",
"cssgrid",
"csstricks",
"Csvg",
"Datalists",
"Deque",
"discoverability",
"docsearch",
"docsref",
"dropend",
"dropleft",
"dropright",
"dropstart",
"dropup",
"dgst",
"errorf",
"favicon",
"favicons",
"fieldsets",
"flexbox",
"frontmatter",
"fullscreen",
"getbootstrap",
"Grayscale",
"Hoverable",
"hreflang",
"hstack",
"importmap",
"jsdelivr",
"Jumpstart",
"keyframes",
"libera",
"libman",
"Libsass",
"lightboxes",
"Lowercased",
"markdownify",
"mediaqueries",
"minifiers",
"misfunction",
"mkdir",
"monospace",
"mouseleave",
"navbars",
"navs",
"Neue",
"noindex",
"Noto",
"offcanvas",
"offcanvases",
"Packagist",
"popperjs",
"prebuild",
"prefersreducedmotion",
"prepended",
"printf",
"rects",
"relref",
"rgba",
"roboto",
"RTLCSS",
"ruleset",
"sassrc",
"screenreaders",
"scrollbars",
"scrollspy",
"Segoe",
"semibold",
"socio",
"srcset",
"stackblitz",
"stickied",
"Stylelint",
"subnav",
"tabbable",
"textareas",
"toggleable",
"topbar",
"touchend",
"twbs",
"unitless",
"unstylable",
"unstyled",
"Uppercased",
"urlize",
"urlquery",
"vbtn",
"viewports",
"Vite",
"vstack",
"walkthroughs",
"WCAG",
"zindex"
],
"language": "en-US",
"ignorePaths": [
".cspell.json",
"dist/",
"*.min.*",
"**/*rtl*",
"**/tests/**"
],
"useGitignore": true
}
+6
View File
@@ -9,3 +9,9 @@ indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.py]
indent_size = 4
-9
View File
@@ -1,9 +0,0 @@
**/*.min.js
**/dist/
**/vendor/
/_site/
/site/public/
/js/coverage/
/site/static/sw.js
/site/static/docs/**/assets/sw.js
/site/layouts/partials/
-241
View File
@@ -1,241 +0,0 @@
{
"root": true,
"extends": [
"plugin:import/errors",
"plugin:import/warnings",
"plugin:unicorn/recommended",
"xo",
"xo/browser"
],
"rules": {
"arrow-body-style": "off",
"capitalized-comments": "off",
"comma-dangle": [
"error",
"never"
],
"import/extensions": [
"error",
"ignorePackages",
{
"js": "always"
}
],
"import/first": "error",
"import/newline-after-import": "error",
"import/no-absolute-path": "error",
"import/no-amd": "error",
"import/no-cycle": [
"error",
{
"ignoreExternal": true
}
],
"import/no-duplicates": "error",
"import/no-extraneous-dependencies": "error",
"import/no-mutable-exports": "error",
"import/no-named-as-default": "error",
"import/no-named-as-default-member": "error",
"import/no-named-default": "error",
"import/no-self-import": "error",
"import/no-unassigned-import": [
"error"
],
"import/no-useless-path-segments": "error",
"import/order": "error",
"indent": [
"error",
2,
{
"MemberExpression": "off",
"SwitchCase": 1
}
],
"logical-assignment-operators": "off",
"max-params": [
"warn",
5
],
"multiline-ternary": [
"error",
"always-multiline"
],
"new-cap": [
"error",
{
"properties": false
}
],
"no-console": "error",
"no-negated-condition": "off",
"object-curly-spacing": [
"error",
"always"
],
"operator-linebreak": [
"error",
"after"
],
"prefer-object-has-own": "off",
"prefer-template": "error",
"semi": [
"error",
"never"
],
"strict": "error",
"unicorn/explicit-length-check": "off",
"unicorn/filename-case": "off",
"unicorn/no-anonymous-default-export": "off",
"unicorn/no-array-callback-reference": "off",
"unicorn/no-array-method-this-argument": "off",
"unicorn/no-null": "off",
"unicorn/no-typeof-undefined": "off",
"unicorn/no-unused-properties": "error",
"unicorn/numeric-separators-style": "off",
"unicorn/prefer-array-flat": "off",
"unicorn/prefer-at": "off",
"unicorn/prefer-dom-node-dataset": "off",
"unicorn/prefer-global-this": "off",
"unicorn/prefer-module": "off",
"unicorn/prefer-query-selector": "off",
"unicorn/prefer-spread": "off",
"unicorn/prefer-string-raw": "off",
"unicorn/prefer-string-replace-all": "off",
"unicorn/prefer-structured-clone": "off",
"unicorn/prevent-abbreviations": "off"
},
"overrides": [
{
"files": [
"build/**"
],
"env": {
"browser": false,
"node": true
},
"parserOptions": {
"sourceType": "module"
},
"rules": {
"no-console": "off",
"unicorn/prefer-top-level-await": "off"
}
},
{
"files": [
"js/**"
],
"parserOptions": {
"sourceType": "module"
}
},
{
"files": [
"js/tests/*.js",
"js/tests/integration/rollup*.js"
],
"env": {
"node": true
},
"parserOptions": {
"sourceType": "script"
}
},
{
"files": [
"js/tests/unit/**"
],
"env": {
"jasmine": true
},
"rules": {
"no-console": "off",
"unicorn/consistent-function-scoping": "off",
"unicorn/no-useless-undefined": "off",
"unicorn/prefer-add-event-listener": "off"
}
},
{
"files": [
"js/tests/visual/**"
],
"plugins": [
"html"
],
"settings": {
"html/html-extensions": [
".html"
]
},
"rules": {
"no-console": "off",
"no-new": "off",
"unicorn/no-array-for-each": "off"
}
},
{
"files": [
"scss/tests/**"
],
"env": {
"node": true
},
"parserOptions": {
"sourceType": "script"
}
},
{
"files": [
"site/**"
],
"env": {
"browser": true,
"node": false
},
"parserOptions": {
"sourceType": "script",
"ecmaVersion": 2019
},
"rules": {
"no-new": "off",
"unicorn/no-array-for-each": "off"
}
},
{
"files": [
"site/src/assets/application.js",
"site/src/assets/partials/*.js",
"site/src/assets/search.js",
"site/src/assets/snippets.js",
"site/src/assets/stackblitz.js",
"site/src/plugins/*.js"
],
"parserOptions": {
"sourceType": "module",
"ecmaVersion": 2020
}
},
{
"files": [
"**/*.md"
],
"plugins": [
"markdown"
],
"processor": "markdown/markdown"
},
{
"files": [
"**/*.md/*.js",
"**/*.md/*.mjs"
],
"extends": "plugin:markdown/recommended-legacy",
"parserOptions": {
"sourceType": "module"
},
"rules": {
"unicorn/prefer-node-protocol": "off"
}
}
]
}
+10 -3
View File
@@ -1,8 +1,15 @@
# Enforce Unix newlines
* text=auto eol=lf
*.css text eol=lf
*.html text eol=lf
*.js text eol=lf
*.json text eol=lf
*.less text eol=lf
*.md text eol=lf
*.svg text eol=lf
*.yml text eol=lf
# Don't diff or textually merge source maps
*.map binary
*.map binary
bootstrap-theme.css linguist-vendored=false
bootstrap.css linguist-vendored=false
bootstrap.js linguist-vendored=false
-3
View File
@@ -1,3 +0,0 @@
*.js @twbs/js-review
*.css @twbs/css-review
*.scss @twbs/css-review
-255
View File
@@ -1,255 +0,0 @@
# Contributing to Bootstrap
Looking to contribute something to Bootstrap? **Heres how you can help.**
Please take a moment to review this document in order to make the contribution
process easy and effective for everyone involved.
Following these guidelines helps to communicate that you respect the time of
the developers managing and developing this open source project. In return,
they should reciprocate that respect in addressing your issue or assessing
patches and features.
## Using the issue tracker
The [issue tracker](https://github.com/twbs/bootstrap/issues) is
the preferred channel for [bug reports](#bug-reports), [features requests](#feature-requests)
and [submitting pull requests](#pull-requests), but please respect the following
restrictions:
- Please **do not** use the issue tracker for personal support requests. Stack Overflow ([`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5) tag), [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions) or [IRC](/README.md#community) are better places to get help.
- Please **do not** derail or troll issues. Keep the discussion on topic and
respect the opinions of others.
- Please **do not** post comments consisting solely of "+1" or ":thumbsup:".
Use [GitHub's "reactions" feature](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/)
instead. We reserve the right to delete comments which violate this rule.
## Issues assignment
The core team will be looking at the open issues, analyze them, and provide guidance on how to proceed. **Issues wont be assigned to anyone outside the core team.** However, contributors are welcome to participate in the discussion and provide their input on how to best solve the issue, and even submit a PR if they want to. Please wait that the issue is ready to be worked on before submitting a PR, we dont want to waste your time.
Please keep in mind that the core team is small, has limited resources and that we are not always able to respond immediately. We will try to provide feedback as soon as possible, but please be patient. If you dont get a response immediately, it doesnt mean that we are ignoring you or that we dont care about your issue or PR. We will get back to you as soon as we can.
## Issues and labels
Our bug tracker utilizes several labels to help organize and identify issues. Heres what they represent and how we use them:
- `browser bug` - Issues that are reported to us, but actually are the result of a browser-specific bug. These are diagnosed with reduced test cases and result in an issue opened on that browser's own bug tracker.
- `confirmed` - Issues that have been confirmed with a reduced test case and identify a bug in Bootstrap.
- `css` - Issues stemming from our compiled CSS or source Sass files.
- `docs` - Issues for improving or updating our documentation.
- `examples` - Issues involving the example templates included in our docs.
- `feature` - Issues asking for a new feature to be added, or an existing one to be extended or modified. New features require a minor version bump (e.g., `v3.0.0` to `v3.1.0`).
- `build` - Issues with our build system, which is used to run all our tests, concatenate and compile source files, and more.
- `help wanted` - Issues we need or would love help from the community to resolve.
- `js` - Issues stemming from our compiled or source JavaScript files.
- `meta` - Issues with the project itself or our GitHub repository.
For a complete look at our labels, see the [project labels page](https://github.com/twbs/bootstrap/labels).
## Bug reports
A bug is a _demonstrable problem_ that is caused by the code in the repository.
Good bug reports are extremely helpful, so thanks!
Guidelines for bug reports:
0. **[Validate your HTML](https://html5.validator.nu/)** to ensure your
problem isnt caused by a simple error in your own code.
1. **Use the GitHub issue search** &mdash; check if the issue has already been
reported.
2. **Check if the issue has been fixed** &mdash; try to reproduce it using the
latest `main` (or `v4-dev` branch if the issue is about v4) in the repository.
3. **Isolate the problem** &mdash; ideally create a [reduced test
case](https://css-tricks.com/reduced-test-cases/) and a live example.
These [v4 CodePen](https://codepen.io/team/bootstrap/pen/yLabNQL) and [v5 CodePen](https://codepen.io/team/bootstrap/pen/qBamdLj) are helpful templates.
A good bug report shouldnt leave others needing to chase you up for more
information. Please try to be as detailed as possible in your report. What is
your environment? What steps will reproduce the issue? What browser(s) and OS
experience the problem? Do other browsers show the bug differently? What
would you expect to be the outcome? All these details will help people to fix
any potential bugs.
Example:
> Short and descriptive example bug report title
>
> A summary of the issue and the browser/OS environment in which it occurs. If
> suitable, include the steps required to reproduce the bug.
>
> 1. This is the first step
> 2. This is the second step
> 3. Further steps, etc.
>
> `<url>` - a link to the reduced test case
>
> Any other information you want to share that is relevant to the issue being
> reported. This might include the lines of code that you have identified as
> causing the bug, and potential solutions (and your opinions on their
> merits).
### Reporting upstream browser bugs
Sometimes bugs reported to us are actually caused by bugs in the browser(s) themselves, not bugs in Bootstrap per se.
| Vendor(s) | Browser(s) | Rendering engine | Bug reporting website(s) | Notes |
| ------------- | ---------------------------- | ---------------- | ------------------------------------------------------ | -------------------------------------------------------- |
| Mozilla | Firefox | Gecko | <https://bugzilla.mozilla.org/enter_bug.cgi> | "Core" is normally the right product option to choose. |
| Apple | Safari | WebKit | <https://bugs.webkit.org/enter_bug.cgi?product=WebKit> | In Apples bug reporter, choose "Safari" as the product. |
| Google, Opera | Chrome, Chromium, Opera v15+ | Blink | <https://bugs.chromium.org/p/chromium/issues/list> | Click the "New issue" button. |
| Microsoft | Edge | Blink | <https://developer.microsoft.com/en-us/microsoft-edge/> | Go to "Help > Send Feedback" from the browser |
## Feature requests
Feature requests are welcome. But take a moment to find out whether your idea
fits with the scope and aims of the project. Its up to _you_ to make a strong
case to convince the projects developers of the merits of this feature. Please
provide as much detail and context as possible.
## Pull requests
Good pull requests—patches, improvements, new features—are a fantastic
help. They should remain focused in scope and avoid containing unrelated
commits.
**Please ask first** before embarking on any **significant** pull request (e.g.
implementing features, refactoring code, porting to a different language),
otherwise you risk spending a lot of time working on something that the
projects developers might not want to merge into the project. For trivial
things, or things that dont require a lot of your time, you can go ahead and
make a PR.
Please adhere to the [coding guidelines](#code-guidelines) used throughout the
project (indentation, accurate comments, etc.) and any other requirements
(such as test coverage).
**Do not edit `bootstrap.css` or `bootstrap.js`, and do not commit
any dist files (`dist/` or `js/dist`).** Those files are automatically generated by our build tools. You should
edit the source files in [`/bootstrap/scss/`](https://github.com/twbs/bootstrap/tree/main/scss)
and/or [`/bootstrap/js/src/`](https://github.com/twbs/bootstrap/tree/main/js/src) instead.
Similarly, when contributing to Bootstraps documentation, you should edit the
documentation source files in
[the `/bootstrap/site/content/docs/` directory of the `main` branch](https://github.com/twbs/bootstrap/tree/main/site/content/docs).
**Do not edit the `gh-pages` branch.** That branch is generated from the
documentation source files and is managed separately by the Bootstrap Core Team.
Adhering to the following process is the best way to get your work
included in the project:
1. [Fork](https://help.github.com/articles/fork-a-repo/) the project, clone your fork,
and configure the remotes:
```bash
# Clone your fork of the repo into the current directory
git clone https://github.com/<your-username>/bootstrap.git
# Navigate to the newly cloned directory
cd bootstrap
# Assign the original repo to a remote called "upstream"
git remote add upstream https://github.com/twbs/bootstrap.git
```
2. If you cloned a while ago, get the latest changes from upstream:
```bash
git checkout main
git pull upstream main
```
3. Install or update project dependencies with npm:
```bash
npm install
```
4. Create a new topic branch (off the main project development branch) to
contain your feature, change, or fix:
```bash
git checkout -b <topic-branch-name>
```
5. Commit your changes in logical chunks. Please adhere to these [git commit
message guidelines](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
or your code is unlikely be merged into the main project. Use Gits
[interactive rebase](https://help.github.com/articles/about-git-rebase/)
feature to tidy up your commits before making them public.
6. Ensure your changes compile the dist CSS and JS files in the `dist/` directory. Verify
the build succeeds locally without errors.
```bash
npm run dist
```
7. Locally merge (or rebase) the upstream development branch into your topic branch:
```bash
git pull [--rebase] upstream main
```
8. Commit your changes, but **do not push compiled CSS and JS files in `dist` and `js/dist`**.
Push your topic branch up to your fork:
```bash
git push origin <topic-branch-name>
```
9. [Open a pull request](https://help.github.com/articles/about-pull-requests/)
with a clear title and description against the `main` branch.
**IMPORTANT**: By submitting a patch, you agree to allow the project owners to
license your work under the terms of the [MIT License](../LICENSE) (if it
includes code changes) and under the terms of the
[Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/)
(if it includes documentation changes).
## Code guidelines
### HTML
[Adhere to the Code Guide.](https://codeguide.co/#html)
- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags).
- Use CDNs and HTTPS for third-party JS when possible. We dont use protocol-relative URLs in this case because they break when viewing the page locally via `file://`.
- Use [WAI-ARIA](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) attributes in documentation examples to promote accessibility.
### CSS
[Adhere to the Code Guide.](https://codeguide.co/#css)
- When feasible, default color palettes should comply with [WCAG color contrast guidelines](https://www.w3.org/TR/WCAG/#distinguishable).
- Except in rare cases, dont remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](https://www.a11yproject.com/posts/2013-01-25-never-remove-css-outlines/) for more details.
### JS
- No semicolons (in client-side JS)
- 2 spaces (no tabs)
- strict mode
- "Attractive"
### Checking coding style
Run `npm run test` before committing to ensure your changes follow our coding standards.
## License
By contributing your code, you agree to license your contribution under the [MIT License](../LICENSE).
By contributing to the documentation, you agree to license your contribution under the [Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/).
Prior to v3.1.0, Bootstraps code was released under the Apache License v2.0.
-62
View File
@@ -1,62 +0,0 @@
name: Report a bug
description: Tell us about a bug or issue you may have identified in Bootstrap.
title: "Provide a general summary of the issue"
labels: [bug]
assignees: "-"
body:
- type: checkboxes
attributes:
label: Prerequisites
description: Take a couple minutes to help our maintainers work faster.
options:
- label: I have [searched](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue) for duplicate or closed issues
required: true
- label: I have [validated](https://html5.validator.nu/) any HTML to avoid common problems
required: true
- label: I have read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
required: true
- type: textarea
id: what-happened
attributes:
label: Describe the issue
description: Provide a summary of the issue and what you expected to happen, including specific steps to reproduce.
validations:
required: true
- type: textarea
id: reduced-test-case
attributes:
label: Reduced test cases
description: Include links [reduced test case](https://css-tricks.com/reduced-test-cases/) links or suggested fixes using CodePen ([v4 template](https://codepen.io/team/bootstrap/pen/yLabNQL) or [v5 template](https://codepen.io/team/bootstrap/pen/qBamdLj)).
validations:
required: true
- type: dropdown
id: os
attributes:
label: What operating system(s) are you seeing the problem on?
multiple: true
options:
- Windows
- macOS
- Android
- iOS
- Linux
validations:
required: true
- type: dropdown
id: browser
attributes:
label: What browser(s) are you seeing the problem on?
multiple: true
options:
- Chrome
- Safari
- Firefox
- Microsoft Edge
- Opera
- type: input
id: version
attributes:
label: What version of Bootstrap are you using?
placeholder: "e.g., v5.1.0 or v4.5.2"
validations:
required: true
-4
View File
@@ -1,4 +0,0 @@
contact_links:
- name: Ask the community
url: https://github.com/twbs/bootstrap/discussions/new
about: Ask and discuss questions with other Bootstrap community members.
@@ -1,29 +0,0 @@
name: Feature request
description: Suggest new or updated features to include in Bootstrap.
title: "Suggest a new feature"
labels: [feature]
assignees: []
body:
- type: checkboxes
attributes:
label: Prerequisites
description: Take a couple minutes to help our maintainers work faster.
options:
- label: I have [searched](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue) for duplicate or closed feature requests
required: true
- label: I have read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
required: true
- type: textarea
id: proposal
attributes:
label: Proposal
description: Provide detailed information for what we should add, including relevant links to prior art, screenshots, or live demos whenever possible.
validations:
required: true
- type: textarea
id: motivation
attributes:
label: Motivation and context
description: Tell us why this change is needed or helpful, and what problems it may help solve.
validations:
required: true
-38
View File
@@ -1,38 +0,0 @@
### Description
<!-- Describe your changes in detail -->
### Motivation & Context
<!-- Why is this change required? What problem does it solve? -->
### Type of changes
<!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply. -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Refactoring (non-breaking change)
- [ ] Breaking change (fix or feature that would change existing functionality)
### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!-- If youre unsure about any of these, dont hesitate to ask. Were here to help! -->
- [ ] I have read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
- [ ] My code follows the code style of the project _(using `npm run lint`)_
- [ ] My change introduces changes to the documentation
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] All new and existing tests passed
#### Live previews
<!-- Please add direct links where your modifications can be seen in the documentation -->
- <https://deploy-preview-{your_pr_number}--twbs-bootstrap.netlify.app/>
### Related issues
<!-- Please link any related issues here. -->
-11
View File
@@ -1,11 +0,0 @@
### Bug reports
See the [contributing guidelines](CONTRIBUTING.md) for sharing bug reports.
### How-to
For general troubleshooting or help getting started:
- Ask and explore [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions).
- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel.
- Ask and explore Stack Overflow with the [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5) tag.
-3
View File
@@ -1,3 +0,0 @@
name: "CodeQL config"
paths-ignore:
- dist
-30
View File
@@ -1,30 +0,0 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: weekly
day: tuesday
time: "12:00"
timezone: Europe/Athens
groups:
github-actions:
patterns:
- "*"
- package-ecosystem: npm
directory: "/"
labels:
- dependencies
- v5
schedule:
interval: weekly
day: tuesday
time: "12:00"
timezone: Europe/Athens
versioning-strategy: increase
rebase-strategy: disabled
groups:
production-dependencies:
dependency-type: "production"
development-dependencies:
dependency-type: "development"
-60
View File
@@ -1,60 +0,0 @@
name-template: 'v$NEXT_MAJOR_VERSION'
tag-template: 'v$NEXT_MAJOR_VERSION'
prerelease: true
exclude-labels:
- 'skip-changelog'
categories:
- title: '❗ Breaking Changes'
labels:
- 'breaking-change'
- title: '🚀 Highlights'
labels:
- 'release-highlight'
- title: '🚀 Features'
labels:
- 'new-feature'
- 'feature'
- 'enhancement'
- title: '🐛 Bug fixes'
labels:
- 'fix'
- 'bugfix'
- 'bug'
- title: '⚡ Performance improvements'
labels:
- 'performance'
- title: '🎨 CSS'
labels:
- 'css'
- title: '☕️ JavaScript'
labels:
- 'js'
- title: '📖 Docs'
labels:
- 'docs'
- title: '🛠 Examples'
labels:
- 'examples'
- title: '🌎 Accessibility'
labels:
- 'accessibility'
- title: '🔧 Utility API'
labels:
- 'utility API'
- 'utilities'
- title: '🏭 Tests'
labels:
- 'tests'
- title: '🧰 Misc'
labels:
- 'build'
- 'meta'
- 'chore'
- 'CI'
- title: '📦 Dependencies'
labels:
- 'dependencies'
change-template: '- #$NUMBER: $TITLE'
template: |
## Changes
$CHANGES
-46
View File
@@ -1,46 +0,0 @@
name: BrowserStack
on:
push:
branches:
- "**"
- "!dependabot/**"
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 22
permissions:
contents: read
jobs:
browserstack:
runs-on: ubuntu-latest
if: github.repository == 'twbs/bootstrap'
timeout-minutes: 30
steps:
- name: Clone repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: "${{ env.NODE }}"
cache: npm
- name: Install npm dependencies
run: npm ci
- name: Run dist
run: npm run dist
- name: Run BrowserStack tests
run: npm run js-test-cloud
env:
BROWSER_STACK_ACCESS_KEY: "${{ secrets.BROWSER_STACK_ACCESS_KEY }}"
BROWSER_STACK_USERNAME: "${{ secrets.BROWSER_STACK_USERNAME }}"
GITHUB_SHA: "${{ github.sha }}"
-43
View File
@@ -1,43 +0,0 @@
name: Bundlewatch
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 22
permissions:
contents: read
jobs:
bundlewatch:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: "${{ env.NODE }}"
cache: npm
- name: Install npm dependencies
run: npm ci
- name: Run dist
run: npm run dist
- name: Run bundlewatch
run: npm run bundlewatch
env:
BUNDLEWATCH_GITHUB_TOKEN: "${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}"
CI_BRANCH_BASE: main
@@ -1,32 +0,0 @@
name: Compress Images
on:
pull_request:
paths:
- '**.jpg'
- '**.jpeg'
- '**.png'
- '**.webp'
permissions:
contents: read
jobs:
build:
# Only run on Pull Requests within the same repository, and not from forks.
if: github.event.pull_request.head.repo.full_name == github.repository
name: calibreapp/image-actions
runs-on: ubuntu-latest
permissions:
# allow calibreapp/image-actions to update PRs
pull-requests: write
steps:
- name: Clone repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Compress Images
uses: calibreapp/image-actions@f32575787d333b0579f0b7d506ff03be63a669d1 # v1.4.1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-44
View File
@@ -1,44 +0,0 @@
name: "CodeQL"
on:
push:
branches:
- main
- v4-dev
- "!dependabot/**"
pull_request:
branches:
- main
- v4-dev
- "!dependabot/**"
schedule:
- cron: "0 2 * * 4"
workflow_dispatch:
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Initialize CodeQL
uses: github/codeql-action/init@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
with:
config-file: ./.github/codeql/codeql-config.yml
languages: "javascript"
queries: +security-and-quality
- name: Autobuild
uses: github/codeql-action/autobuild@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
with:
category: "/language:javascript"
-36
View File
@@ -1,36 +0,0 @@
name: cspell
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
permissions:
contents: read
jobs:
cspell:
permissions:
# allow streetsidesoftware/cspell-action to fetch files for commits and PRs
contents: read
pull-requests: read
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Run cspell
uses: streetsidesoftware/cspell-action@3294df585d3d639e30f3bc019cb11940b9866e95 # v8.0.0
with:
config: ".cspell.json"
files: "**/*.{md,mdx}"
inline: error
incremental_files_only: false
-40
View File
@@ -1,40 +0,0 @@
name: CSS
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 22
permissions:
contents: read
jobs:
css:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: "${{ env.NODE }}"
cache: npm
- name: Install npm dependencies
run: npm ci
- name: Build CSS
run: npm run css
- name: Run CSS tests
run: npm run css-test
-48
View File
@@ -1,48 +0,0 @@
name: Docs
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 22
permissions:
contents: read
jobs:
docs:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: "${{ env.NODE }}"
cache: npm
- name: Install npm dependencies
run: npm ci
- name: Build docs
run: npm run docs-build
- name: Validate HTML
run: npm run docs-html-validate
- name: Run linkinator
uses: JustinBeckwith/linkinator-action@af984b9f30f63e796ae2ea5be5e07cb587f1bbd9 # v2.3
with:
paths: _site
recurse: true
verbosity: error
skip: "^http://localhost"
-26
View File
@@ -1,26 +0,0 @@
name: Close Issue Awaiting Reply
on:
schedule:
- cron: "0 0 * * *"
permissions:
contents: read
jobs:
issue-close-require:
permissions:
# allow actions-cool/issues-helper to update issues and PRs
issues: write
pull-requests: write
runs-on: ubuntu-latest
if: github.repository == 'twbs/bootstrap'
steps:
- name: awaiting reply
uses: actions-cool/issues-helper@9861779a695cf1898bd984c727f685f351cfc372 # v3.7.2
with:
actions: "close-issues"
labels: "awaiting-reply"
inactive-day: 14
body: |
As the issue was labeled with `awaiting-reply`, but there has been no response in 14 days, this issue will be closed. If you have any questions, you can comment/reply.
-26
View File
@@ -1,26 +0,0 @@
name: Issue Labeled
on:
issues:
types: [labeled]
permissions:
contents: read
jobs:
issue-labeled:
permissions:
# allow actions-cool/issues-helper to update issues and PRs
issues: write
pull-requests: write
if: github.repository == 'twbs/bootstrap'
runs-on: ubuntu-latest
steps:
- name: awaiting reply
if: github.event.label.name == 'needs-example'
uses: actions-cool/issues-helper@9861779a695cf1898bd984c727f685f351cfc372 # v3.7.2
with:
actions: "create-comment"
token: ${{ secrets.GITHUB_TOKEN }}
body: |
Hello @${{ github.event.issue.user.login }}. Bug reports must include a **live demo** of the issue. Per our [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md), please create a reduced test case on [CodePen](https://codepen.io/) or [StackBlitz](https://stackblitz.com/) and report back with your link, Bootstrap version, and specific browser and Operating System details.
-52
View File
@@ -1,52 +0,0 @@
name: JS Tests
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 22
permissions:
contents: read
jobs:
run:
permissions:
# allow coverallsapp/github-action to create new checks issues and fetch code
checks: write
contents: read
name: JS Tests
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: ${{ env.NODE }}
cache: npm
- name: Install npm dependencies
run: npm ci
- name: Run dist
run: npm run js
- name: Run JS tests
run: npm run js-test
- name: Run Coveralls
uses: coverallsapp/github-action@648a8eb78e6d50909eff900e4ec85cab4524a45b # v2.3.6
if: ${{ !github.event.repository.fork }}
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
path-to-lcov: "./js/coverage/lcov.info"
-37
View File
@@ -1,37 +0,0 @@
name: Lint
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
env:
FORCE_COLOR: 2
NODE: 22
permissions:
contents: read
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: "${{ env.NODE }}"
cache: npm
- name: Install npm dependencies
run: npm ci
- name: Lint
run: npm run lint
-34
View File
@@ -1,34 +0,0 @@
name: Publish NuGet Packages
on:
release:
types: [published]
permissions:
contents: read
jobs:
package-nuget:
runs-on: windows-latest
if: ${{ github.repository == 'twbs/bootstrap' && startsWith(github.event.release.tag_name, 'v') }}
env:
GITHUB_REF_NAME: ${{ github.ref_name }}
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Set up NuGet
uses: nuget/setup-nuget@323ab0502cd38fdc493335025a96c8fdb0edc71f # v2.0.1
with:
nuget-api-key: ${{ secrets.NuGetAPIKey }}
nuget-version: '5.x'
- name: Pack NuGet packages
shell: pwsh
run: |
$bsversion = $env:GITHUB_REF_NAME.Substring(1)
nuget pack "nuget\bootstrap.nuspec" -Verbosity detailed -NonInteractive -BasePath . -Version $bsversion
nuget pack "nuget\bootstrap.sass.nuspec" -Verbosity detailed -NonInteractive -BasePath . -Version $bsversion
nuget push "bootstrap.$bsversion.nupkg" -Verbosity detailed -NonInteractive -Source "https://api.nuget.org/v3/index.json"
nuget push "bootstrap.sass.$bsversion.nupkg" -Verbosity detailed -NonInteractive -Source "https://api.nuget.org/v3/index.json"
-23
View File
@@ -1,23 +0,0 @@
name: Release notes
on:
push:
branches:
- main
workflow_dispatch:
permissions:
contents: read
jobs:
update_release_draft:
permissions:
# allow release-drafter/release-drafter to create GitHub releases and add labels to PRs
contents: write
pull-requests: write
runs-on: ubuntu-latest
if: github.repository == 'twbs/bootstrap'
steps:
- uses: release-drafter/release-drafter@b1476f6e6eb133afa41ed8589daba6dc69b4d3f5 # v6.1.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-78
View File
@@ -1,78 +0,0 @@
# This workflow uses actions that are not certified by GitHub. They are provided
# by a third-party and are governed by separate terms of service, privacy
# policy, and support documentation.
name: Scorecard supply-chain security
on:
# For Branch-Protection check. Only the default branch is supported. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
branch_protection_rule:
# To guarantee Maintained check is occasionally updated. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
schedule:
- cron: '27 12 * * 2'
push:
branches: [ "main" ]
# Declare default permissions as read only.
permissions: read-all
jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
# `publish_results: true` only works when run from the default branch. conditional can be removed if disabled.
if: github.event.repository.default_branch == github.ref_name || github.event_name == 'pull_request'
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
# Needed to publish results and get a badge (see publish_results below).
id-token: write
# Uncomment the permissions below if installing in a private repository.
# contents: read
# actions: read
steps:
- name: "Checkout code"
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
with:
results_file: results.sarif
results_format: sarif
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
# - you want to enable the Branch-Protection check on a *public* repository, or
# - you are installing Scorecard on a *private* repository
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional.
# repo_token: ${{ secrets.SCORECARD_TOKEN }}
# Public repositories:
# - Publish results to OpenSSF REST API for easy access by consumers
# - Allows the repository to include the Scorecard badge.
# - See https://github.com/ossf/scorecard-action#publishing-results.
# For private repositories:
# - `publish_results` will always be set to `false`, regardless
# of the value entered here.
publish_results: true
# (Optional) Uncomment file_mode if you have a .gitattributes with files marked export-ignore
# file_mode: git
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: SARIF file
path: results.sarif
retention-days: 5
# Upload the results to GitHub's code scanning dashboard (optional).
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
with:
sarif_file: results.sarif
+13 -14
View File
@@ -1,5 +1,18 @@
# Ignore docs files
/.bundle/
/_gh_pages/
/_site/
/site/docs/**/dist/
/site/static/**/dist/
/bower_components/
/js/coverage/
/node_modules/
/resources/
/vendor/
/.ruby-version
# Jekyll metadata
/docs/.jekyll-metadata
# Numerous always-ignore extensions
*.diff
@@ -18,7 +31,6 @@
.cache
.DS_Store
.idea
.nvmrc
.project
.settings
.tmproj
@@ -27,20 +39,7 @@
*.sublime-workspace
nbproject
Thumbs.db
# Local Netlify folder
.netlify
# Komodo
.komodotools
*.komodoproject
# Folders to ignore
/dist-sass/
/js/coverage/
/node_modules/
# Site
/site/dist
/site/node_modules
/site/.astro
/site/public
-18
View File
@@ -1,18 +0,0 @@
{
"default": true,
"MD004": { "style": "dash" },
"MD011": false,
"MD013": false,
"MD024": false,
"MD025": false,
"MD026": false,
"MD031": false,
"MD033": false,
"MD034": false,
"MD037": false,
"MD038": false,
"MD041": false,
"MD046": false,
"line-length": false,
"no-inline-html": false
}
-12
View File
@@ -1,12 +0,0 @@
# Prettier is only used for the website
site/.astro
site/dist
site/public
site/src/assets
site/src/scss
site/src/pages/**/*.md
site/src/pages/**/*.mdx
site/src/content/**/*.mdx
site/src/layouts/RedirectLayout.astro
site/static
-6
View File
@@ -1,6 +0,0 @@
**/*.min.css
**/dist/
**/vendor/
/_site/
/site/public/
/js/coverage/
-59
View File
@@ -1,59 +0,0 @@
{
"extends": [
"stylelint-config-twbs-bootstrap"
],
"reportInvalidScopeDisables": true,
"reportNeedlessDisables": true,
"overrides": [
{
"files": "**/*.scss",
"rules": {
"declaration-property-value-disallowed-list": {
"border": "none",
"outline": "none"
},
"function-disallowed-list": [
"lighten",
"darken"
],
"property-disallowed-list": [
"border-radius",
"border-top-left-radius",
"border-top-right-radius",
"border-bottom-right-radius",
"border-bottom-left-radius",
"transition"
],
"scss/dollar-variable-default": [
true,
{
"ignore": "local"
}
],
"scss/selector-no-union-class-name": true
}
},
{
"files": "scss/**/*.{test,spec}.scss",
"rules": {
"scss/dollar-variable-default": null,
"declaration-no-important": null
}
},
{
"files": "site/**/*.scss",
"rules": {
"scss/dollar-variable-default": null
}
},
{
"files": "site/**/examples/**/*.css",
"rules": {
"comment-empty-line-before": null,
"property-no-vendor-prefix": null,
"selector-no-qualifying-type": null,
"value-no-vendor-prefix": null
}
}
]
}
+23
View File
@@ -0,0 +1,23 @@
language: node_js
git:
depth: 3
node_js:
- "6"
env:
matrix:
- TWBS_TEST=core
- TWBS_TEST=validate-html
- TWBS_TEST=browserstack
before_install:
- "export TRAVIS_COMMIT_MSG=\"$(git log --format=%B --no-merges -n 1)\""
- echo "$TRAVIS_COMMIT_MSG" | grep '\[skip validator\]'; export TWBS_DO_VALIDATOR=$?; true
- echo "$TRAVIS_COMMIT_MSG" | grep '\[skip browserstack\]'; export TWBS_DO_BROWSERSTACK=$?; true
install:
- bundle install --deployment --jobs=3 --retry=3 --clean
- npm install
cache:
directories:
- node_modules
- vendor/bundle
notifications:
email: false
-10
View File
@@ -1,10 +0,0 @@
{
"recommendations": [
"astro-build.astro-vscode",
"dbaeumer.vscode-eslint",
"EditorConfig.EditorConfig",
"hossaini.bootstrap-intellisense",
"streetsidesoftware.code-spell-checker",
"stylelint.vscode-stylelint"
]
}
-10
View File
@@ -1,10 +0,0 @@
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit",
"source.fixAll.stylelint": "always"
},
"editor.renderWhitespace": "all",
"scss.validate": false,
"stylelint.enable": true,
"stylelint.validate": ["scss"]
}
+5
View File
@@ -0,0 +1,5 @@
Bootstrap uses [GitHub's Releases feature](https://blog.github.com/2013-07-02-release-your-software/) for its changelogs.
See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap.
Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release.
View File
-132
View File
@@ -1,132 +0,0 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
- The use of sexualized language or imagery, and sexual attention or advances of
any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others private information, such as a physical or email address,
without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
mdo@getbootstrap.com.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations
+257
View File
@@ -0,0 +1,257 @@
# Contributing to Bootstrap
Looking to contribute something to Bootstrap? **Here's how you can help.**
Please take a moment to review this document in order to make the contribution
process easy and effective for everyone involved.
Following these guidelines helps to communicate that you respect the time of
the developers managing and developing this open source project. In return,
they should reciprocate that respect in addressing your issue or assessing
patches and features.
## Using the issue tracker
The [issue tracker](https://github.com/twbs/bootstrap/issues) is
the preferred channel for [bug reports](#bug-reports), [features requests](#feature-requests)
and [submitting pull requests](#pull-requests), but please respect the following
restrictions:
* Please **do not** use the issue tracker for personal support requests. Stack
Overflow ([`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3) tag),
[Slack](https://bootstrap-slack.herokuapp.com/) or [IRC](README.md#community) are better places to get help.
* Please **do not** derail or troll issues. Keep the discussion on topic and
respect the opinions of others.
* Please **do not** post comments consisting solely of "+1" or ":thumbsup:".
Use [GitHub's "reactions" feature](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/)
instead. We reserve the right to delete comments which violate this rule.
* Please **do not** open issues or pull requests regarding the code in
[`Normalize`](https://github.com/necolas/normalize.css) (open them in
their respective repositories).
* Please **do not** open issues regarding the official themes offered on <https://themes.getbootstrap.com/>.
Instead, please email any questions or feedback regarding those themes to `themes AT getbootstrap DOT com`.
## Issues and labels
Our bug tracker utilizes several labels to help organize and identify issues. Here's what they represent and how we use them:
- `browser bug` - Issues that are reported to us, but actually are the result of a browser-specific bug. These are diagnosed with reduced test cases and result in an issue opened on that browser's own bug tracker.
- `confirmed` - Issues that have been confirmed with a reduced test case and identify a bug in Bootstrap.
- `css` - Issues stemming from our compiled CSS or source Less/Sass files.
- `customizer` - Issues with our web-based Customizer.
- `docs` - Issues for improving or updating our documentation.
- `examples` - Issues involving the example templates included in our docs.
- `feature` - Issues asking for a new feature to be added, or an existing one to be extended or modified. New features require a minor version bump (e.g., `v3.0.0` to `v3.1.0`).
- `grunt` - Issues with our included JavaScript-based Gruntfile, which is used to run all our tests, concatenate and compile source files, and more.
- `help wanted` - Issues we need or would love help from the community to resolve.
- `js` - Issues stemming from our compiled or source JavaScript files.
- `meta` - Issues with the project itself or our GitHub repository.
For a complete look at our labels, see the [project labels page](https://github.com/twbs/bootstrap/labels).
## Bug reports
A bug is a _demonstrable problem_ that is caused by the code in the repository.
Good bug reports are extremely helpful, so thanks!
Guidelines for bug reports:
0. **Validate and lint your code** &mdash; [validate your HTML](https://html5.validator.nu/)
and [lint your HTML](https://github.com/twbs/bootlint) to ensure your
problem isn't caused by a simple error in your own code.
1. **Use the GitHub issue search** &mdash; check if the issue has already been
reported.
2. **Check if the issue has been fixed** &mdash; try to reproduce it using the
latest `v3-dev` or development branch in the repository.
3. **Isolate the problem** &mdash; ideally create a [reduced test
case](https://css-tricks.com/reduced-test-cases/) and a live example.
[This JS Bin](http://jsbin.com/lefey/1/edit?html,output) is a helpful template.
A good bug report shouldn't leave others needing to chase you up for more
information. Please try to be as detailed as possible in your report. What is
your environment? What steps will reproduce the issue? What browser(s) and OS
experience the problem? Do other browsers show the bug differently? What
would you expect to be the outcome? All these details will help people to fix
any potential bugs.
Example:
> Short and descriptive example bug report title
>
> A summary of the issue and the browser/OS environment in which it occurs. If
> suitable, include the steps required to reproduce the bug.
>
> 1. This is the first step
> 2. This is the second step
> 3. Further steps, etc.
>
> `<url>` - a link to the reduced test case
>
> Any other information you want to share that is relevant to the issue being
> reported. This might include the lines of code that you have identified as
> causing the bug, and potential solutions (and your opinions on their
> merits).
### Reporting upstream browser bugs
Sometimes bugs reported to us are actually caused by bugs in the browser(s) themselves, not bugs in Bootstrap per se.
When feasible, we aim to report such upstream bugs to the relevant browser vendor(s), and then list them on our [Wall of Browser Bugs](https://getbootstrap.com/docs/3.4/browser-bugs/) and [document them in MDN](https://developer.mozilla.org/en-US/docs/Web).
| Vendor(s) | Browser(s) | Rendering engine | Bug reporting website(s) | Notes |
| ------------- | ---------------------------- | ---------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| Mozilla | Firefox | Gecko | https://bugzilla.mozilla.org/enter_bug.cgi | "Core" is normally the right product option to choose. |
| Apple | Safari | WebKit | https://bugs.webkit.org/enter_bug.cgi?product=WebKit <br> https://bugreport.apple.com | In Apple's bug reporter, choose "Safari" as the product. |
| Google, Opera | Chrome, Chromium, Opera v15+ | Blink | https://code.google.com/p/chromium/issues/list | Click the "New issue" button. |
| Microsoft | Edge | EdgeHTML | https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/ | |
## Feature requests
Feature requests are welcome, but please note that they **must target
[Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev),** because
Bootstrap v3 is now in maintenance mode and is closed off to new features.
This is so that we can focus our efforts on Bootstrap v4, the future of the
framework.
Before opening a feature request, please take a moment to find out whether your idea
fits with the scope and aims of the project. It's up to *you* to make a strong
case to convince the project's developers of the merits of this feature. Please
provide as much detail and context as possible.
## Pull requests
Good pull requests—patches, improvements, new features—are a fantastic
help. They should remain focused in scope and avoid containing unrelated
commits.
**Please ask first** before embarking on any significant pull request (e.g.
implementing features, refactoring code, porting to a different language),
otherwise you risk spending a lot of time working on something that the
project's developers might not want to merge into the project.
In particular, **pull requests that add new features to Bootstrap v3 will be
rejected.** Bootstrap v3 is now in maintenance mode and is therefore closed
off to new features, so that we can focus our efforts on Bootstrap v4, the
future of the framework. Pull requests that add new features should target
[Bootstrap v4 (the `v4-dev` git branch)](https://github.com/twbs/bootstrap/tree/v4-dev)
instead, where they will be welcomed and duly considered.
Please adhere to the [coding guidelines](#code-guidelines) used throughout the
project (indentation, accurate comments, etc.) and any other requirements
(such as test coverage).
**Do not edit `bootstrap.css`, `bootstrap-theme.css`, or `bootstrap.js`
directly!** Those files are automatically generated. You should edit the
source files in [`/bootstrap/less/`](https://github.com/twbs/bootstrap/tree/v3-dev/less),
[`/bootstrap/scss/`](https://github.com/twbs/bootstrap/tree/v4-dev/scss) (for Bootstrap v4),
and/or [`/bootstrap/js/`](https://github.com/twbs/bootstrap/tree/v3-dev/js) instead.
Similarly, when contributing to Bootstrap's documentation, you should edit the
documentation source files in
[the `/bootstrap/docs/` directory of the `v3-dev` branch](https://github.com/twbs/bootstrap/tree/v3-dev/docs).
**Do not edit the `gh-pages` branch.** That branch is generated from the
documentation source files and is managed separately by the Bootstrap Core Team.
Adhering to the following process is the best way to get your work
included in the project:
1. [Fork](https://help.github.com/fork-a-repo/) the project, clone your fork,
and configure the remotes:
```bash
# Clone your fork of the repo into the current directory
git clone https://github.com/<your-username>/bootstrap.git
# Navigate to the newly cloned directory
cd bootstrap
# Assign the original repo to a remote called "upstream"
git remote add upstream https://github.com/twbs/bootstrap.git
```
2. If you cloned a while ago, get the latest changes from upstream:
```bash
git checkout v3-dev
git pull upstream v3-dev
```
3. Create a new topic branch (off the main project development branch) to
contain your feature, change, or fix:
```bash
git checkout -b <topic-branch-name>
```
4. Commit your changes in logical chunks. Please adhere to these [git commit
message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
or your code is unlikely to be merged into the main project. Use Git's
[interactive rebase](https://help.github.com/articles/about-git-rebase/)
feature to tidy up your commits before making them public.
5. Locally merge (or rebase) the upstream development branch into your topic branch:
```bash
git pull [--rebase] upstream v3-dev
```
6. Push your topic branch up to your fork:
```bash
git push origin <topic-branch-name>
```
7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/)
with a clear title and description against the `v3-dev` branch.
**IMPORTANT**: By submitting a patch, you agree to allow the project owners to
license your work under the terms of the [MIT License](LICENSE) (if it
includes code changes) and under the terms of the
[Creative Commons Attribution 3.0 Unported License](docs/LICENSE)
(if it includes documentation changes).
## Code guidelines
### HTML
[Adhere to the Code Guide.](http://codeguide.co/#html)
- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags).
- Use CDNs and HTTPS for third-party JS when possible. We don't use protocol-relative URLs in this case because they break when viewing the page locally via `file://`.
- Use [WAI-ARIA](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) attributes in documentation examples to promote accessibility.
### CSS
[Adhere to the Code Guide.](http://codeguide.co/#css)
- When feasible, default color palettes should comply with [WCAG color contrast guidelines](https://www.w3.org/TR/WCAG20/#visual-audio-contrast).
- Except in rare cases, don't remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](https://a11yproject.com/posts/never-remove-css-outlines/) for more details.
### JS
- No semicolons (in client-side JS)
- 2 spaces (no tabs)
- strict mode
- "Attractive"
- Don't use [jQuery event alias convenience methods](https://github.com/jquery/jquery/blob/master/src/event/alias.js) (such as `$().focus()`). Instead, use [`$().trigger(eventType, ...)`](https://api.jquery.com/trigger/) or [`$().on(eventType, ...)`](https://api.jquery.com/on/), depending on whether you're firing an event or listening for an event. (For example, `$().trigger('focus')` or `$().on('focus', function (event) { /* handle focus event */ })`) We do this to be compatible with custom builds of jQuery where the event aliases module has been excluded.
### Checking coding style
Run `grunt test` before committing to ensure your changes follow our coding standards.
## License
By contributing your code, you agree to license your contribution under the [MIT License](LICENSE).
By contributing to the documentation, you agree to license your contribution under the [Creative Commons Attribution 3.0 Unported License](docs/LICENSE).
Prior to v3.1.0, Bootstrap's code was released under the Apache License v2.0.
+7
View File
@@ -0,0 +1,7 @@
source 'https://rubygems.org'
group :development, :test do
gem 'jekyll', '~> 3.8.6'
gem 'jekyll-sitemap', '~> 1.3.1'
gem 'wdm', '~> 0.1.1', :install_if => Gem.win_platform?
end
+71
View File
@@ -0,0 +1,71 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.6.0)
public_suffix (>= 2.0.2, < 4.0)
colorator (1.1.0)
concurrent-ruby (1.1.5)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.2.7)
eventmachine (1.2.7-x64-mingw32)
ffi (1.11.1)
ffi (1.11.1-x64-mingw32)
forwardable-extended (2.6.0)
http_parser.rb (0.6.0)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jekyll (3.8.6)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 0.7)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
kramdown (~> 1.14)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
jekyll-sass-converter (1.5.2)
sass (~> 3.4)
jekyll-sitemap (1.3.1)
jekyll (>= 3.7, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (1.17.0)
liquid (4.0.3)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2)
mercenary (0.3.6)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (3.1.1)
rb-fsevent (0.10.3)
rb-inotify (0.10.0)
ffi (~> 1.0)
rouge (3.6.0)
ruby_dep (1.5.0)
safe_yaml (1.0.5)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
wdm (0.1.1)
PLATFORMS
ruby
x64-mingw32
DEPENDENCIES
jekyll (~> 3.8.6)
jekyll-sitemap (~> 1.3.1)
wdm (~> 0.1.1)
BUNDLED WITH
1.17.3
+435
View File
@@ -0,0 +1,435 @@
/*!
* Bootstrap's Gruntfile
* https://getbootstrap.com/
* Copyright 2013-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE)
*/
module.exports = function (grunt) {
'use strict';
// Force use of Unix newlines
grunt.util.linefeed = '\n';
RegExp.quote = function (string) {
return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
};
var fs = require('fs');
var path = require('path');
var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js');
var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js');
var getLessVarsData = function () {
var filePath = path.join(__dirname, 'less/variables.less');
var fileContent = fs.readFileSync(filePath, { encoding: 'utf8' });
var parser = new BsLessdocParser(fileContent);
return { sections: parser.parseFile() };
};
var generateRawFiles = require('./grunt/bs-raw-files-generator.js');
var generateCommonJSModule = require('./grunt/bs-commonjs-generator.js');
var configBridge = grunt.file.readJSON('./grunt/configBridge.json', { encoding: 'utf8' });
Object.keys(configBridge.paths).forEach(function (key) {
configBridge.paths[key].forEach(function (val, i, arr) {
arr[i] = path.join('./docs/assets', val);
});
});
// Project configuration.
grunt.initConfig({
// Metadata.
pkg: grunt.file.readJSON('package.json'),
banner: '/*!\n' +
' * Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)\n' +
' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
' * Licensed under the <%= pkg.license %> license\n' +
' */\n',
jqueryCheck: configBridge.config.jqueryCheck.join('\n'),
jqueryVersionCheck: configBridge.config.jqueryVersionCheck.join('\n'),
// Task configuration.
clean: {
dist: 'dist',
docs: 'docs/dist'
},
jshint: {
options: {
jshintrc: 'js/.jshintrc'
},
grunt: {
options: {
jshintrc: 'grunt/.jshintrc'
},
src: ['Gruntfile.js', 'package.js', 'grunt/*.js']
},
core: {
src: 'js/*.js'
},
test: {
options: {
jshintrc: 'js/tests/unit/.jshintrc'
},
src: 'js/tests/unit/*.js'
},
assets: {
src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js']
}
},
jscs: {
options: {
config: 'js/.jscsrc'
},
grunt: {
src: '<%= jshint.grunt.src %>'
},
core: {
src: '<%= jshint.core.src %>'
},
test: {
src: '<%= jshint.test.src %>'
},
assets: {
options: {
requireCamelCaseOrUpperCaseIdentifiers: null
},
src: '<%= jshint.assets.src %>'
}
},
concat: {
options: {
banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>',
stripBanners: false
},
core: {
src: [
'js/transition.js',
'js/alert.js',
'js/button.js',
'js/carousel.js',
'js/collapse.js',
'js/dropdown.js',
'js/modal.js',
'js/tooltip.js',
'js/popover.js',
'js/scrollspy.js',
'js/tab.js',
'js/affix.js'
],
dest: 'dist/js/<%= pkg.name %>.js'
}
},
uglify: {
options: {
compress: true,
mangle: true,
ie8: true,
output: {
comments: /^!|@preserve|@license|@cc_on/i
}
},
core: {
src: '<%= concat.core.dest %>',
dest: 'dist/js/<%= pkg.name %>.min.js'
},
customize: {
src: configBridge.paths.customizerJs,
dest: 'docs/assets/js/customize.min.js'
},
docs: {
src: configBridge.paths.docsJs,
dest: 'docs/assets/js/docs.min.js'
}
},
less: {
options: {
ieCompat: true,
strictMath: true,
sourceMap: true,
outputSourceFiles: true
},
core: {
options: {
sourceMapURL: '<%= pkg.name %>.css.map',
sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map'
},
src: 'less/bootstrap.less',
dest: 'dist/css/<%= pkg.name %>.css'
},
theme: {
options: {
sourceMapURL: '<%= pkg.name %>-theme.css.map',
sourceMapFilename: 'dist/css/<%= pkg.name %>-theme.css.map'
},
src: 'less/theme.less',
dest: 'dist/css/<%= pkg.name %>-theme.css'
},
docs: {
options: {
sourceMapURL: 'docs.css.map',
sourceMapFilename: 'docs/assets/css/docs.css.map'
},
src: 'docs/assets/less/docs.less',
dest: 'docs/assets/css/docs.css'
},
docsIe: {
options: {
sourceMap: false
},
src: 'docs/assets/less/ie10-viewport-bug-workaround.less',
dest: 'docs/assets/css/ie10-viewport-bug-workaround.css'
}
},
postcss: {
options: {
map: {
inline: false,
sourcesContent: true
},
processors: [
require('autoprefixer')(configBridge.config.autoprefixer)
]
},
core: {
src: 'dist/css/<%= pkg.name %>.css'
},
theme: {
src: 'dist/css/<%= pkg.name %>-theme.css'
},
docs: {
src: 'docs/assets/css/docs.css'
},
examples: {
options: {
map: false
},
expand: true,
cwd: 'docs/examples/',
src: ['**/*.css'],
dest: 'docs/examples/'
}
},
stylelint: {
options: {
configFile: 'grunt/.stylelintrc',
reportNeedlessDisables: false
},
dist: [
'less/**/*.less'
],
docs: [
'docs/assets/less/**/*.less'
],
examples: [
'docs/examples/**/*.css'
]
},
cssmin: {
options: {
compatibility: 'ie8',
sourceMap: true,
sourceMapInlineSources: true,
level: {
1: {
specialComments: 'all'
}
}
},
core: {
src: 'dist/css/<%= pkg.name %>.css',
dest: 'dist/css/<%= pkg.name %>.min.css'
},
theme: {
src: 'dist/css/<%= pkg.name %>-theme.css',
dest: 'dist/css/<%= pkg.name %>-theme.min.css'
},
docs: {
src: 'docs/assets/css/docs.css',
dest: 'docs/assets/css/docs.min.css'
}
},
copy: {
fonts: {
expand: true,
src: 'fonts/**',
dest: 'dist/'
},
docs: {
expand: true,
cwd: 'dist/',
src: [
'**/*'
],
dest: 'docs/dist/'
}
},
connect: {
server: {
options: {
port: 3000,
base: '.'
}
}
},
jekyll: {
options: {
bundleExec: true,
config: '_config.yml',
incremental: false
},
docs: {},
netlify: {
options: {
raw: 'github: true\nbaseurl: ""\nnetlify: true'
}
},
github: {
options: {
raw: 'github: true'
}
}
},
pug: {
options: {
pretty: true,
data: getLessVarsData
},
customizerVars: {
src: 'docs/_pug/customizer-variables.pug',
dest: 'docs/_includes/customizer-variables.html'
},
customizerNav: {
src: 'docs/_pug/customizer-nav.pug',
dest: 'docs/_includes/nav/customize.html'
}
},
htmllint: {
options: {
ignore: [
'Element "img" is missing required attribute "src".'
],
noLangDetect: true
},
src: ['_gh_pages/**/*.html', 'js/tests/**/*.html']
},
watch: {
src: {
files: '<%= jshint.core.src %>',
tasks: ['jshint:core', 'exec:karma', 'concat']
},
test: {
files: '<%= jshint.test.src %>',
tasks: ['jshint:test', 'exec:karma']
},
less: {
files: 'less/**/*.less',
tasks: ['less', 'copy']
},
docs: {
files: 'docs/assets/less/**/*.less',
tasks: ['less']
}
},
exec: {
browserstack: {
command: 'cross-env BROWSER=true karma start grunt/karma.conf.js'
},
karma: {
command: 'karma start grunt/karma.conf.js'
}
}
});
// These plugins provide necessary tasks.
require('load-grunt-tasks')(grunt, { scope: 'devDependencies' });
require('time-grunt')(grunt);
// Docs HTML validation task
grunt.registerTask('validate-html', ['jekyll:docs', 'htmllint']);
var runSubset = function (subset) {
return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset;
};
var isUndefOrNonZero = function (val) {
return typeof val === 'undefined' || val !== '0';
};
// Test task.
var testSubtasks = [];
// Skip core tests if running a different subset of the test suite
if (runSubset('core')) {
testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'stylelint:dist', 'test-js', 'docs']);
}
// Skip HTML validation if running a different subset of the test suite
if (runSubset('validate-html') &&
// Skip HTML5 validator on Travis when [skip validator] is in the commit message
isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) {
testSubtasks.push('validate-html');
}
// Only run BrowserStack tests if there's a BrowserStack access key
if (typeof process.env.BROWSER_STACK_USERNAME !== 'undefined' &&
// Skip BrowserStack if running a different subset of the test suite
runSubset('browserstack') &&
// Skip BrowserStack on Travis when [skip browserstack] is in the commit message
isUndefOrNonZero(process.env.TWBS_DO_BROWSERSTACK)) {
testSubtasks.push('exec:browserstack');
}
grunt.registerTask('test', testSubtasks);
grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'exec:karma']);
// JS distribution task.
grunt.registerTask('dist-js', ['concat', 'uglify:core', 'commonjs']);
// CSS distribution task.
grunt.registerTask('dist-css', ['less:core', 'less:theme', 'postcss:core', 'postcss:theme', 'cssmin:core', 'cssmin:theme']);
// Full distribution task.
grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']);
// Default task.
grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']);
grunt.registerTask('build-glyphicons-data', function () {
generateGlyphiconsData.call(this, grunt);
});
// task for building customizer
grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']);
grunt.registerTask('build-customizer-html', 'pug');
grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () {
var banner = grunt.template.process('<%= banner %>');
generateRawFiles(grunt, banner);
});
grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () {
var srcFiles = grunt.config.get('concat.core.src');
var destFilepath = 'dist/js/npm.js';
generateCommonJSModule(grunt, srcFiles, destFilepath);
});
// Docs task.
grunt.registerTask('docs-css', ['less:docs', 'less:docsIe', 'postcss:docs', 'postcss:examples', 'cssmin:docs']);
grunt.registerTask('lint-docs-css', ['stylelint:docs', 'stylelint:examples']);
grunt.registerTask('docs-js', ['uglify:docs', 'uglify:customize']);
grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']);
grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']);
grunt.registerTask('prep-release', ['dist', 'docs', 'jekyll:github']);
};
+22
View File
@@ -0,0 +1,22 @@
Before opening an issue:
- [Search for duplicate or closed issues](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue)
- [Validate](https://validator.w3.org/nu/) and [lint](https://github.com/twbs/bootlint#in-the-browser) any HTML to avoid common problems
- Prepare a [reduced test case](https://css-tricks.com/reduced-test-cases/) for any bugs
- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/v3-dev/CONTRIBUTING.md)
When asking general "how to" questions:
- Please do not open an issue here
- Instead, ask for help on [StackOverflow, IRC, or Slack](https://github.com/twbs/bootstrap/blob/v3-dev/README.md#community)
When reporting a bug, include:
- Operating system and version (Windows, Mac OS X, Android, iOS, Win10 Mobile)
- Browser and version (Chrome, Firefox, Safari, IE, MS Edge, Opera 15+, Android Browser)
- Reduced test cases and potential fixes using [JS Bin](https://jsbin.com/)
When suggesting a feature, include:
- As much detail as possible for what we should add and why it's important to Bootstrap
- Relevant links to prior art, screenshots, or live demos whenever possible
+1 -1
View File
@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2011-2025 The Bootstrap Authors
Copyright (c) 2011-2019 Twitter, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+84 -165
View File
@@ -1,230 +1,149 @@
<p align="center">
<a href="https://getbootstrap.com/">
<img src="https://getbootstrap.com/docs/5.3/assets/brand/bootstrap-logo-shadow.png" alt="Bootstrap logo" width="200" height="165">
</a>
</p>
# [Bootstrap](https://getbootstrap.com/)
<h3 align="center">Bootstrap</h3>
[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com/)
![Bower version](https://img.shields.io/bower/v/bootstrap.svg)
[![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap)
[![Build Status](https://img.shields.io/travis/twbs/bootstrap/v3-dev.svg)](https://travis-ci.org/twbs/bootstrap)
[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies)
[![NuGet](https://img.shields.io/nuget/v/bootstrap.svg)](https://www.nuget.org/packages/Bootstrap)
<p align="center">
Sleek, intuitive, and powerful front-end framework for faster and easier web development.
<br>
<a href="https://getbootstrap.com/docs/5.3/"><strong>Explore Bootstrap docs »</strong></a>
<br>
<br>
<a href="https://github.com/twbs/bootstrap/issues/new?assignees=-&labels=bug&template=bug_report.yml">Report bug</a>
·
<a href="https://github.com/twbs/bootstrap/issues/new?assignees=&labels=feature&template=feature_request.yml">Request feature</a>
·
<a href="https://blog.getbootstrap.com/">Blog</a>
</p>
Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community.
## Bootstrap 5
Our default branch is for development of our Bootstrap 5 release. Head to the [`v4-dev` branch](https://github.com/twbs/bootstrap/tree/v4-dev) to view the readme, documentation, and source code for Bootstrap 4.
To get started, check out <https://getbootstrap.com/>!
## Table of contents
- [Quick start](#quick-start)
- [Status](#status)
- [Whats included](#whats-included)
- [Bugs and feature requests](#bugs-and-feature-requests)
- [Documentation](#documentation)
- [Contributing](#contributing)
- [Community](#community)
- [Versioning](#versioning)
- [Creators](#creators)
- [Thanks](#thanks)
- [Copyright and license](#copyright-and-license)
* [Quick start](#quick-start)
* [Bugs and feature requests](#bugs-and-feature-requests)
* [Documentation](#documentation)
* [Contributing](#contributing)
* [Community](#community)
* [Versioning](#versioning)
* [Creators](#creators)
* [Thanks](#thanks)
* [Copyright and license](#copyright-and-license)
## Quick start
Several quick start options are available:
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.3.8.zip)
- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`
- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@v5.3.8`
- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@v5.3.8`
- Install with [Bun](https://bun.sh/): `bun add bootstrap@v5.3.8`
- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.3.8`
- Install with [NuGet](https://www.nuget.org/): CSS: `Install-Package bootstrap` Sass: `Install-Package bootstrap.sass`
* [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.4.1.zip).
* Clone the repo: `git clone https://github.com/twbs/bootstrap.git`.
* Install with [Bower](https://bower.io/): `bower install bootstrap`.
* Install with [npm](https://www.npmjs.com/): `npm install bootstrap@3`.
* Install with [Meteor](https://www.meteor.com/): `meteor add twbs:bootstrap`.
* Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap`.
Read the [Getting started page](https://getbootstrap.com/docs/5.3/getting-started/introduction/) for information on the framework contents, templates, examples, and more.
Read the [Getting started page](https://getbootstrap.com/docs/3.4/getting-started/) for information on the framework contents, templates and examples, and more.
### What's included
## Status
Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this:
[![Build Status](https://img.shields.io/github/actions/workflow/status/twbs/bootstrap/js.yml?branch=main&label=JS%20Tests&logo=github)](https://github.com/twbs/bootstrap/actions/workflows/js.yml?query=workflow%3AJS+branch%3Amain)
[![npm version](https://img.shields.io/npm/v/bootstrap?logo=npm&logoColor=fff)](https://www.npmjs.com/package/bootstrap)
[![Gem version](https://img.shields.io/gem/v/bootstrap?logo=rubygems&logoColor=fff)](https://rubygems.org/gems/bootstrap)
[![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue?logo=meteor&logoColor=fff)](https://atmospherejs.com/twbs/bootstrap)
[![Packagist Prerelease](https://img.shields.io/packagist/vpre/twbs/bootstrap?logo=packagist&logoColor=fff)](https://packagist.org/packages/twbs/bootstrap)
[![NuGet](https://img.shields.io/nuget/vpre/bootstrap?logo=nuget&logoColor=fff)](https://www.nuget.org/packages/bootstrap/absoluteLatest)
[![Coverage Status](https://img.shields.io/coveralls/github/twbs/bootstrap/main?logo=coveralls&logoColor=fff)](https://coveralls.io/github/twbs/bootstrap?branch=main)
[![CSS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=gzip&label=CSS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css)
[![CSS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=brotli&label=CSS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css)
[![JS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=gzip&label=JS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js)
[![JS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=brotli&label=JS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js)
![Open Source Security Foundation Scorecard](https://img.shields.io/ossf-scorecard/github.com/twbs/bootstrap)
[![Backers on Open Collective](https://img.shields.io/opencollective/backers/bootstrap?logo=opencollective&logoColor=fff)](#backers)
[![Sponsors on Open Collective](https://img.shields.io/opencollective/sponsors/bootstrap?logo=opencollective&logoColor=fff)](#sponsors)
```
bootstrap/
├── css/
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
│ ├── bootstrap.min.css.map
│ ├── bootstrap-theme.css
│ ├── bootstrap-theme.css.map
│ ├── bootstrap-theme.min.css
│ └── bootstrap-theme.min.css.map
├── js/
│ ├── bootstrap.js
│ └── bootstrap.min.js
└── fonts/
├── glyphicons-halflings-regular.eot
├── glyphicons-halflings-regular.svg
├── glyphicons-halflings-regular.ttf
├── glyphicons-halflings-regular.woff
└── glyphicons-halflings-regular.woff2
```
## Whats included
Within the download youll find the following directories and files, logically grouping common assets and providing both compiled and minified variations.
<details>
<summary>Download contents</summary>
```text
bootstrap/
├── 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-utilities.css
│ ├── bootstrap-utilities.css.map
│ ├── bootstrap-utilities.min.css
│ ├── bootstrap-utilities.min.css.map
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
│ └── bootstrap.min.css.map
└── js/
├── bootstrap.bundle.js
├── bootstrap.bundle.js.map
├── bootstrap.bundle.min.js
├── bootstrap.bundle.min.js.map
├── bootstrap.esm.js
├── bootstrap.esm.js.map
├── bootstrap.esm.min.js
├── bootstrap.esm.min.js.map
├── bootstrap.js
├── bootstrap.js.map
├── bootstrap.min.js
└── bootstrap.min.js.map
```
</details>
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [Source maps](https://web.dev/articles/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/docs/v2/). All CSS files work for both LTR and RTL layouts thanks to logical properties—simply set `dir="rtl"` on your HTML element.
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.
## Bugs and feature requests
Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new/choose).
Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/v3-dev/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new).
Note that **feature requests must target [Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev),** because Bootstrap v3 is now in maintenance mode and is closed off to new features. This is so that we can focus our efforts on Bootstrap v4.
## Documentation
Bootstraps documentation, included in this repo in the root directory, is built with [Astro](https://astro.build/) and publicly hosted on GitHub Pages at <https://getbootstrap.com/>. The docs may also be run locally.
Documentation search is powered by [Algolia's DocSearch](https://docsearch.algolia.com/).
Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](https://jekyllrb.com/) and publicly hosted on GitHub Pages at <https://getbootstrap.com/>. The docs may also be run locally.
### Running documentation locally
1. Run `npm install` to install the Node.js dependencies, including Astro (the site builder).
2. Run `npm run test` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets.
3. From the root `/bootstrap` directory, run `npm run docs-serve` in the command line.
4. Open <http://localhost:9001> in your browser, and voilà.
1. If necessary, [install Jekyll](https://jekyllrb.com/docs/installation/) and other Ruby dependencies with `bundle install`.
**Note for Windows users:** Read [this guide](https://jekyllrb.com/docs/installation/windows/) to get Jekyll up and running without problems.
2. From the root `/bootstrap` directory, run `bundle exec jekyll serve` in the command line.
4. Open `http://localhost:9001` in your browser, and voilà.
Learn more about using Astro by reading its [documentation](https://docs.astro.build/en/getting-started/).
Learn more about using Jekyll by reading its [documentation](https://jekyllrb.com/docs/).
### Documentation for previous releases
You can find all our previous releases docs on <https://getbootstrap.com/docs/versions/>.
Documentation for v2.3.2 has been made available for the time being at <https://getbootstrap.com/2.3.2/> while folks transition to Bootstrap 3.
[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
## Contributing
Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/v3-dev/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/main/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/v3-dev/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/main/.editorconfig) for easy use in common text editors. Read more and download plugins at <https://editorconfig.org/>.
**Bootstrap v3 is now closed off to new features.** It has gone into maintenance mode so that we can focus our efforts on [Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev), the future of the framework. Pull requests which add new features (rather than fix bugs) should target [Bootstrap v4 (the `v4-dev` git branch)](https://github.com/twbs/bootstrap/tree/v4-dev) instead.
Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/v3-dev/.editorconfig) for easy use in common text editors. Read more and download plugins at <https://editorconfig.org/>.
## Community
Get updates on Bootstraps development and chat with the project maintainers and community members.
Get updates on Bootstrap's development and chat with the project maintainers and community members.
- Follow [@getbootstrap on X](https://x.com/getbootstrap).
- Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/).
- Ask questions and explore [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions).
- Discuss, ask questions, and more on [the community Discord](https://discord.gg/bZUvakRU3M) or [Bootstrap subreddit](https://www.reddit.com/r/bootstrap/).
- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel.
- Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)).
- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
* Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
* Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/).
* Join [the official Slack room](https://bootstrap-slack.herokuapp.com/).
* Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
* Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3)).
* Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/search?q=keywords:bootstrap) or similar delivery mechanisms for maximum discoverability.
## Versioning
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](https://semver.org/). Sometimes we screw up, but we adhere to those rules whenever possible.
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](https://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release.
## Thanks
<img src="https://live.browserstack.com/images/opensource/browserstack-logo.svg" alt="BrowserStack Logo" width="490" height="106">
Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers!
## Creators
**Mark Otto**
- <https://x.com/mdo>
- <https://github.com/mdo>
* <https://twitter.com/mdo>
* <https://github.com/mdo>
**Jacob Thornton**
- <https://x.com/fat>
- <https://github.com/fat>
## Thanks
<a href="https://www.browserstack.com/">
<img src="https://live.browserstack.com/images/opensource/browserstack-logo.svg" alt="BrowserStack" width="192" height="42">
</a>
Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers!
<a href="https://www.netlify.com/">
<img src="https://www.netlify.com/v3/img/components/full-logo-light.svg" alt="Netlify" width="147" height="40">
</a>
Thanks to [Netlify](https://www.netlify.com/) for providing us with Deploy Previews!
## Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/bootstrap#sponsor)]
[![OC sponsor 0](https://opencollective.com/bootstrap/sponsor/0/avatar.svg)](https://opencollective.com/bootstrap/sponsor/0/website)
[![OC sponsor 1](https://opencollective.com/bootstrap/sponsor/1/avatar.svg)](https://opencollective.com/bootstrap/sponsor/1/website)
[![OC sponsor 2](https://opencollective.com/bootstrap/sponsor/2/avatar.svg)](https://opencollective.com/bootstrap/sponsor/2/website)
[![OC sponsor 3](https://opencollective.com/bootstrap/sponsor/3/avatar.svg)](https://opencollective.com/bootstrap/sponsor/3/website)
[![OC sponsor 4](https://opencollective.com/bootstrap/sponsor/4/avatar.svg)](https://opencollective.com/bootstrap/sponsor/4/website)
[![OC sponsor 5](https://opencollective.com/bootstrap/sponsor/5/avatar.svg)](https://opencollective.com/bootstrap/sponsor/5/website)
[![OC sponsor 6](https://opencollective.com/bootstrap/sponsor/6/avatar.svg)](https://opencollective.com/bootstrap/sponsor/6/website)
[![OC sponsor 7](https://opencollective.com/bootstrap/sponsor/7/avatar.svg)](https://opencollective.com/bootstrap/sponsor/7/website)
[![OC sponsor 8](https://opencollective.com/bootstrap/sponsor/8/avatar.svg)](https://opencollective.com/bootstrap/sponsor/8/website)
[![OC sponsor 9](https://opencollective.com/bootstrap/sponsor/9/avatar.svg)](https://opencollective.com/bootstrap/sponsor/9/website)
## Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/bootstrap#backer)]
[![Backers](https://opencollective.com/bootstrap/backers.svg?width=890)](https://opencollective.com/bootstrap#backers)
* <https://twitter.com/fat>
* <https://github.com/fat>
## Copyright and license
Code and documentation copyright 2011-2025 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors). Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/).
Code and documentation copyright 2011-2019 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/v3-dev/docs/LICENSE).
-7
View File
@@ -1,7 +0,0 @@
# Reporting Security Issues
The Bootstrap team and community take security issues in Bootstrap seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.
To report a security issue, email [security@getbootstrap.com](mailto:security@getbootstrap.com) and include the word "SECURITY" in the subject line.
We'll endeavor to respond quickly, and will keep you updated throughout the process.
+46
View File
@@ -0,0 +1,46 @@
# Dependencies
markdown: kramdown
highlighter: rouge
# Permalinks
permalink: pretty
# Server
source: docs
destination: _gh_pages
host: 0.0.0.0
port: 9001
url: https://getbootstrap.com
baseurl: /docs/3.4
encoding: UTF-8
exclude:
- assets/less/
plugins:
- jekyll-sitemap
# Custom vars
title: Bootstrap
description: "The world's most popular mobile-first and responsive front-end framework."
current_version: 3.4.1
docs_version: 3.4
repo: https://github.com/twbs/bootstrap
sass_repo: https://github.com/twbs/bootstrap-sass
download:
source: https://github.com/twbs/bootstrap/archive/v3.4.1.zip
dist: https://github.com/twbs/bootstrap/releases/download/v3.4.1/bootstrap-3.4.1-dist.zip
sass: https://github.com/twbs/bootstrap-sass/archive/v3.4.1.tar.gz
blog: https://blog.getbootstrap.com
expo: https://expo.getbootstrap.com
themes: https://themes.getbootstrap.com
cdn:
# See https://www.srihash.org for info on how to generate the hashes
css: https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css
css_hash: "sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu"
css_theme: https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap-theme.min.css
css_theme_hash: "sha384-6pzBo3FDv/PJ8r2KRkGHifhEocL+1X2rVCTTkUfGk7/0pbek5mMa1upzvWbrUbOZ"
js: https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js
js_hash: "sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd"
+34
View File
@@ -0,0 +1,34 @@
{
"name": "bootstrap",
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
"keywords": [
"css",
"js",
"less",
"mobile-first",
"responsive",
"front-end",
"framework",
"web"
],
"homepage": "https://getbootstrap.com/",
"license": "MIT",
"moduleType": "globals",
"main": [
"less/bootstrap.less",
"dist/js/bootstrap.js"
],
"ignore": [
"/.*",
"_config.yml",
"CNAME",
"composer.json",
"CONTRIBUTING.md",
"docs",
"js/tests",
"test-infra"
],
"dependencies": {
"jquery": "1.9.1 - 3"
}
}
-20
View File
@@ -1,20 +0,0 @@
import fs from 'node:fs/promises'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const pkgJson = path.join(__dirname, '../package.json')
const pkg = JSON.parse(await fs.readFile(pkgJson, 'utf8'))
const year = new Date().getFullYear()
function getBanner(pluginFilename) {
return `/*!
* Bootstrap${pluginFilename ? ` ${pluginFilename}` : ''} v${pkg.version} (${pkg.homepage})
* Copyright 2011-${year} ${pkg.author}
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/`
}
export default getBanner
-108
View File
@@ -1,108 +0,0 @@
#!/usr/bin/env node
/*!
* Script to build our plugins to use them separately.
* Copyright 2020-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { babel } from '@rollup/plugin-babel'
import { globby } from 'globby'
import { rollup } from 'rollup'
import banner from './banner.mjs'
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const sourcePath = path.resolve(__dirname, '../js/src/').replace(/\\/g, '/')
const jsFiles = await globby(`${sourcePath}/**/*.js`)
// Array which holds the resolved plugins
const resolvedPlugins = []
// Trims the "js" extension and uppercases => first letter, hyphens, backslashes & slashes
const filenameToEntity = filename => filename.replace('.js', '')
.replace(/(?:^|-|\/|\\)[a-z]/g, str => str.slice(-1).toUpperCase())
for (const file of jsFiles) {
resolvedPlugins.push({
src: file,
dist: file.replace('src', 'dist'),
fileName: path.basename(file),
className: filenameToEntity(path.basename(file))
// safeClassName: filenameToEntity(path.relative(sourcePath, file))
})
}
const build = async plugin => {
/**
* @type {import('rollup').GlobalsOption}
*/
const globals = {}
const bundle = await rollup({
input: plugin.src,
plugins: [
babel({
// Only transpile our source code
exclude: 'node_modules/**',
// Include the helpers in each file, at most one copy of each
babelHelpers: 'bundled'
})
],
external(source) {
// Pattern to identify local files
const pattern = /^(\.{1,2})\//
// It's not a local file, e.g a Node.js package
if (!pattern.test(source)) {
globals[source] = source
return true
}
const usedPlugin = resolvedPlugins.find(plugin => {
return plugin.src.includes(source.replace(pattern, ''))
})
if (!usedPlugin) {
throw new Error(`Source ${source} is not mapped!`)
}
// We can change `Index` with `UtilIndex` etc if we use
// `safeClassName` instead of `className` everywhere
globals[path.normalize(usedPlugin.src)] = usedPlugin.className
return true
}
})
await bundle.write({
banner: banner(plugin.fileName),
format: 'umd',
name: plugin.className,
sourcemap: true,
globals,
generatedCode: 'es2015',
file: plugin.dist
})
console.log(`Built ${plugin.className}`)
}
(async () => {
try {
const basename = path.basename(__filename)
const timeLabel = `[${basename}] finished`
console.log('Building individual plugins...')
console.time(timeLabel)
await Promise.all(Object.values(resolvedPlugins).map(plugin => build(plugin)))
console.timeEnd(timeLabel)
} catch (error) {
console.error(error)
process.exit(1)
}
})()
-113
View File
@@ -1,113 +0,0 @@
#!/usr/bin/env node
/*!
* Script to update version number references in the project.
* Copyright 2017-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
import { execFile } from 'node:child_process'
import fs from 'node:fs/promises'
import process from 'node:process'
const VERBOSE = process.argv.includes('--verbose')
const DRY_RUN = process.argv.includes('--dry') || process.argv.includes('--dry-run')
// These are the files we only care about replacing the version
const FILES = [
'README.md',
'config.yml',
'js/src/base-component.js',
'package.js',
'scss/mixins/_banner.scss',
'site/data/docs-versions.yml'
]
// Blame TC39... https://github.com/benjamingr/RegExp.escape/issues/37
function regExpQuote(string) {
return string.replace(/[$()*+-.?[\\\]^{|}]/g, '\\$&')
}
function regExpQuoteReplacement(string) {
return string.replace(/\$/g, '$$')
}
async function replaceRecursively(file, oldVersion, newVersion) {
const originalString = await fs.readFile(file, 'utf8')
const newString = originalString
.replace(
new RegExp(regExpQuote(oldVersion), 'g'),
regExpQuoteReplacement(newVersion)
)
// Also replace the version used by the rubygem,
// which is using periods (`.`) instead of hyphens (`-`)
.replace(
new RegExp(regExpQuote(oldVersion.replace(/-/g, '.')), 'g'),
regExpQuoteReplacement(newVersion.replace(/-/g, '.'))
)
// No need to move any further if the strings are identical
if (originalString === newString) {
return
}
if (VERBOSE) {
console.log(`Found ${oldVersion} in ${file}`)
}
if (DRY_RUN) {
return
}
await fs.writeFile(file, newString, 'utf8')
}
function bumpNpmVersion(newVersion) {
if (DRY_RUN) {
return
}
execFile('npm', ['version', newVersion, '--no-git-tag'], { shell: true }, error => {
if (error) {
console.error(error)
process.exit(1)
}
})
}
function showUsage(args) {
console.error('USAGE: change-version old_version new_version [--verbose] [--dry[-run]]')
console.error('Got arguments:', args)
process.exit(1)
}
async function main(args) {
let [oldVersion, newVersion] = args
if (!oldVersion || !newVersion) {
showUsage(args)
}
// Strip any leading `v` from arguments because
// otherwise we will end up with duplicate `v`s
[oldVersion, newVersion] = [oldVersion, newVersion].map(arg => {
return arg.startsWith('v') ? arg.slice(1) : arg
})
if (oldVersion === newVersion) {
showUsage(args)
}
bumpNpmVersion(newVersion)
try {
await Promise.all(
FILES.map(file => replaceRecursively(file, oldVersion, newVersion))
)
} catch (error) {
console.error(error)
process.exit(1)
}
}
main(process.argv.slice(2))
-157
View File
@@ -1,157 +0,0 @@
#!/bin/bash
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Default branch suffix
BRANCH_SUFFIX="release"
# Check if a custom version parameter was provided
if [ $# -eq 1 ]; then
BRANCH_SUFFIX="$1"
fi
# Branch name to create
NEW_BRANCH="gh-pages-${BRANCH_SUFFIX}"
# Get the current docs version from config
DOCS_VERSION=$(node -p "require('js-yaml').load(require('fs').readFileSync('config.yml', 'utf8')).docs_version")
# Function to print colored messages
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
exit 1
}
print_info() {
echo -e "${BLUE} $1${NC}"
}
print_warning() {
echo -e "${YELLOW}$1${NC}"
}
# Function to execute command with error handling
execute() {
print_info "Running: $1"
eval $1
if [ $? -ne 0 ]; then
print_error "Failed to execute: $1"
else
print_success "Successfully executed: $1"
fi
}
# Check if /tmp/_site directory exists from a previous run
if [ -d "/tmp/_site" ]; then
print_warning "Found existing /tmp/_site directory. Removing it…"
rm -rf /tmp/_site
fi
# Main process
print_info "Starting documentation deployment process…"
# Step 1: Build documentation
print_info "Building documentation with npm run docs…"
npm run docs
if [ $? -ne 0 ]; then
print_error "Documentation build failed!"
fi
print_success "Documentation built successfully"
# Step 2: Move _site to /tmp/
print_info "Moving _site to temporary location…"
execute "mv _site /tmp/"
# Step 3: Switch to gh-pages branch
print_info "Checking out gh-pages branch…"
git checkout gh-pages
if [ $? -ne 0 ]; then
print_error "Failed to checkout gh-pages branch. Make sure it exists."
fi
print_success "Switched to gh-pages branch"
git reset --hard origin/gh-pages
if [ $? -ne 0 ]; then
print_error "Failed to reset to origin/gh-pages. Check your git configuration."
fi
print_success "Reset to origin/gh-pages"
git pull origin gh-pages
if [ $? -ne 0 ]; then
print_error "Failed to pull from origin/gh-pages. Check your network connection and git configuration."
fi
print_success "Pulled latest changes from origin/gh-pages"
# Step 4: Create a new branch for the update
print_info "Checking if branch ${NEW_BRANCH} exists and deleting it if it does…"
if git show-ref --verify --quiet refs/heads/${NEW_BRANCH}; then
execute "git branch -D ${NEW_BRANCH}"
else
print_info "Branch ${NEW_BRANCH} does not exist, proceeding with creation…"
fi
print_info "Creating new branch ${NEW_BRANCH}"
execute "git checkout -b ${NEW_BRANCH}"
# Step 5: Move all root-level files from Astro build
find /tmp/_site -maxdepth 1 -type f -exec mv {} . \;
# Step 6: Move all top-level directories except 'docs' (which needs special handling)
find /tmp/_site -maxdepth 1 -type d ! -name "_site" ! -name "docs" -exec sh -c 'dir=$(basename "$1"); rm -rf "$dir"; mv "$1" .' _ {} \;
# Step 7: Handle docs directory specially
if [ -d "/tmp/_site/docs" ]; then
# Replace only the current version's docs
if [ -d "docs/$DOCS_VERSION" ]; then
rm -rf "docs/$DOCS_VERSION"
fi
mv "/tmp/_site/docs/$DOCS_VERSION" "docs/"
# Handle docs root files
find /tmp/_site/docs -maxdepth 1 -type f -exec mv {} docs/ \;
# Handle special docs directories (getting-started, versions)
for special_dir in getting-started versions; do
if [ -d "/tmp/_site/docs/$special_dir" ]; then
rm -rf "docs/$special_dir"
mv "/tmp/_site/docs/$special_dir" "docs/"
fi
done
fi
# Clean up remaining files in /tmp/_site if any
if [ -d "/tmp/_site" ]; then
remaining_files=$(find /tmp/_site -type f | wc -l)
remaining_dirs=$(find /tmp/_site -type d | wc -l)
if [ $remaining_files -gt 0 ] || [ $remaining_dirs -gt 1 ]; then
print_warning "There are still some files or directories in /tmp/_site that weren't moved."
print_warning "You may want to inspect /tmp/_site to see if anything important was missed."
else
print_info "Cleaning up temporary directory…"
rm -rf /tmp/_site
print_success "Temporary directory cleaned up"
fi
fi
# Step 10: Remove empty site directory if it exists
if [ -d "site" ]; then
print_info "Removing empty site directory…"
execute "rm -rf site"
fi
print_success "Docs prep complete!"
print_info "Review changes before committing and pushing."
print_info "Next steps:"
print_info " 1. Run a local server to review changes"
print_info " 2. Check browser and web inspector for any errors"
print_info " 3. git add ."
print_info " 4. git commit -m \"Update documentation\""
print_info " 5. git push origin ${NEW_BRANCH}"
-60
View File
@@ -1,60 +0,0 @@
#!/usr/bin/env node
/*!
* Script to generate SRI hashes for use in our docs.
* Remember to use the same vendor files as the CDN ones,
* otherwise the hashes won't match!
*
* Copyright 2017-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
import crypto from 'node:crypto'
import fs from 'node:fs'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import sh from 'shelljs'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
sh.config.fatal = true
const configFile = path.join(__dirname, '../config.yml')
// Array of objects which holds the files to generate SRI hashes for.
// `file` is the path from the root folder
// `configPropertyName` is the config.yml variable's name of the file
const files = [
{
file: 'dist/css/bootstrap.min.css',
configPropertyName: 'css_hash'
},
{
file: 'dist/js/bootstrap.min.js',
configPropertyName: 'js_hash'
},
{
file: 'dist/js/bootstrap.bundle.min.js',
configPropertyName: 'js_bundle_hash'
},
{
file: 'node_modules/@popperjs/core/dist/umd/popper.min.js',
configPropertyName: 'popper_hash'
}
]
for (const { file, configPropertyName } of files) {
fs.readFile(file, 'utf8', (error, data) => {
if (error) {
throw error
}
const algorithm = 'sha384'
const hash = crypto.createHash(algorithm).update(data, 'utf8').digest('base64')
const integrity = `${algorithm}-${hash}`
console.log(`${configPropertyName}: ${integrity}`)
sh.sed('-i', new RegExp(`^(\\s+${configPropertyName}:\\s+["'])\\S*(["'])`), `$1${integrity}$2`, configFile)
})
}
-87
View File
@@ -1,87 +0,0 @@
#!/usr/bin/env node
/**
* Generate utilities metadata JSON from Sass
* This script compiles a special Sass file that outputs utility information as CSS comments,
* then extracts and saves it as JSON for documentation use.
*/
import { readFileSync, writeFileSync, unlinkSync } from 'node:fs'
import { execSync } from 'node:child_process'
import { fileURLToPath } from 'node:url'
import path from 'node:path'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const rootDir = path.join(__dirname, '..')
// Compile the metadata generator SCSS file
console.log('Compiling utilities metadata...')
try {
execSync(
'sass --style expanded --no-source-map build/generate-utilities-metadata.scss:dist/css/utilities-metadata.tmp.css',
{ cwd: rootDir, stdio: 'inherit' }
)
} catch {
console.error('Failed to compile metadata SCSS')
process.exit(1)
}
// Read the compiled CSS
const cssPath = path.join(rootDir, 'dist/css/utilities-metadata.tmp.css')
const cssContent = readFileSync(cssPath, 'utf8')
// Extract JSON from the CSS comment
const startMarker = 'BOOTSTRAP-UTILITIES-METADATA-START'
const endMarker = 'BOOTSTRAP-UTILITIES-METADATA-END'
const startIndex = cssContent.indexOf(startMarker)
const endIndex = cssContent.indexOf(endMarker)
if (startIndex === -1 || endIndex === -1) {
console.error('Could not find metadata markers in compiled CSS')
process.exit(1)
}
// Extract JSON content between markers
const jsonContent = cssContent
.slice(startIndex + startMarker.length, endIndex)
.trim()
// Validate JSON
try {
const parsed = JSON.parse(jsonContent)
console.log(`✓ Extracted metadata for ${Object.keys(parsed.utilities).length} utilities`)
// Write to JSON file
const outputPath = path.join(rootDir, 'dist/css/bootstrap-utilities.metadata.json')
writeFileSync(outputPath, JSON.stringify(parsed, null, 2))
console.log(`✓ Wrote metadata to ${outputPath}`)
// Clean up temporary CSS files
try {
unlinkSync(cssPath)
} catch {
// File may not exist
}
// Also clean up any other temporary variants that may have been created
const tempFiles = [
'dist/css/utilities-metadata.tmp.min.css',
'dist/css/utilities-metadata.tmp.min.css.map'
]
for (const file of tempFiles) {
try {
unlinkSync(path.join(rootDir, file))
} catch {
// File may not exist, ignore
}
}
console.log('✓ Cleaned up temporary files')
} catch (error) {
console.error('Failed to parse extracted JSON:', error.message)
console.error('Extracted content:', jsonContent.slice(0, 500))
process.exit(1)
}
-112
View File
@@ -1,112 +0,0 @@
// Generate utilities metadata JSON for documentation
// This file is compiled to extract utility information without generating CSS
@use "sass:map";
@use "sass:list";
@use "sass:string";
@use "sass:meta";
@use "../scss/config" as *;
@use "../scss/colors" as *;
@use "../scss/variables" as *;
@use "../scss/functions" as *;
@use "../scss/theme" as *;
@use "../scss/utilities" as *;
// Access the utilities map
$utilities-map: $utilities !default;
// Start JSON output
$json: '{"utilities":{' !default;
$utility-count: 0 !default;
$total-utilities: list.length(map.keys($utilities-map)) !default;
@each $key, $utility in $utilities-map {
$utility-count: $utility-count + 1;
// Skip if utility is null or false (disabled)
@if $utility {
// Extract class prefix
$class: if(map.has-key($utility, "class"), map.get($utility, "class"), $key);
// Extract property
$property: if(map.has-key($utility, "property"), map.get($utility, "property"), null);
// Extract values
$values: if(map.has-key($utility, "values"), map.get($utility, "values"), null);
// Generate class list
$classes: "";
@if $values {
@if meta.type-of($values) == "map" {
$value-keys: map.keys($values);
$first: true;
@each $value-key in $value-keys {
@if not $first {
$classes: $classes + ", ";
}
$class-name: if($value-key == "null" or $value-key == null, $class, "#{$class}-#{$value-key}");
$classes: $classes + '"' + $class-name + '"';
$first: false;
}
} @else if meta.type-of($values) == "list" {
$first: true;
@each $value in $values {
@if not $first {
$classes: $classes + ", ";
}
$class-name: "#{$class}-#{$value}";
$classes: $classes + '"' + $class-name + '"';
$first: false;
}
}
}
// Build JSON entry
$json: $json + '"' + $key + '":{"class":"' + $class + '"';
@if $property {
@if meta.type-of($property) == "string" {
$json: $json + ',"property":"' + $property + '"';
} @else if meta.type-of($property) == "list" {
$property-str: "";
$first: true;
@each $prop in $property {
@if not $first {
$property-str: $property-str + " ";
}
$property-str: $property-str + $prop;
$first: false;
}
$json: $json + ',"property":"' + $property-str + '"';
}
// Skip map properties as they're complex and don't translate to JSON well
}
@if $classes != "" {
$json: $json + ',"classes":[' + $classes + "]";
} @else {
$json: $json + ',"classes":[]';
}
$json: $json + "}";
@if $utility-count < $total-utilities {
$json: $json + ",";
}
}
}
// stylelint-disable-next-line scss/dollar-variable-default
$json: $json + "}}";
// Output as CSS comment so it appears in compiled file
/*! BOOTSTRAP-UTILITIES-METADATA-START
#{$json}
BOOTSTRAP-UTILITIES-METADATA-END */
// Prevent any actual CSS output
.bootstrap-utilities-metadata-generator {
content: "This file should not generate CSS, only metadata comments";
}
-104
View File
@@ -1,104 +0,0 @@
#!/usr/bin/env node
/*!
* Script to run html-validate for HTML validation.
*
* This replaces the Java-based vnu-jar validator with a faster, Node.js-only solution.
* Benefits:
* - No Java dependency required
* - Faster execution (no JVM startup time)
* - Easy to configure with rule-based system
* - Better integration with Node.js build tools
*
* Copyright 2017-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
import { HtmlValidate } from 'html-validate'
import { globby } from 'globby'
const htmlValidate = new HtmlValidate({
rules: {
// Allow autocomplete on buttons (Bootstrap specific)
'attribute-allowed-values': 'off',
// Allow aria-disabled on links (Bootstrap specific)
'aria-label-misuse': 'off',
// Allow modern CSS syntax
'valid-id': 'off',
// Allow void elements with trailing slashes (Astro)
'void-style': 'off',
// Allow custom attributes
'no-unknown-elements': 'off',
'attribute-boolean-style': 'off',
'no-inline-style': 'off',
// KEEP duplicate ID checking enabled (this is important for HTML validity)
'no-dup-id': 'error'
},
elements: [
'html5',
{
// Allow custom attributes for Astro/framework compatibility
'*': {
attributes: {
'is:raw': { boolean: true },
switch: { boolean: true },
autocomplete: { enum: ['on', 'off', 'new-password', 'current-password'] }
}
}
}
]
})
async function validateHTML() {
try {
console.log('Running html-validate validation...')
// Find all HTML files
const files = await globby([
'_site/**/*.html',
'js/tests/**/*.html'
], {
ignore: ['**/node_modules/**']
})
console.log(`Validating ${files.length} HTML files...`)
let hasErrors = false
// Validate all files in parallel to avoid await-in-loop
const validationPromises = files.map(file =>
htmlValidate.validateFile(file).then(report => ({ file, report }))
)
const validationResults = await Promise.all(validationPromises)
// Process results and check for errors
for (const { file, report } of validationResults) {
if (!report.valid) {
hasErrors = true
console.error(`\nErrors in ${file}:`)
// Extract error messages with reduced nesting
const errorMessages = report.results.flatMap(result =>
result.messages.filter(message => message.severity === 2)
)
for (const message of errorMessages) {
console.error(` Line ${message.line}:${message.column} - ${message.message} (${message.ruleId})`)
}
}
}
if (hasErrors) {
console.error('\nHTML validation failed!')
process.exit(1)
} else {
console.log('✓ All HTML files are valid!')
}
} catch (error) {
console.error('HTML validation error:', error)
process.exit(1)
}
}
validateHTML()
-16
View File
@@ -1,16 +0,0 @@
const mapConfig = {
inline: false,
annotation: true,
sourcesContent: true
}
export default context => {
return {
map: context.file.dirname.includes('examples') ? false : mapConfig,
plugins: {
autoprefixer: {
cascade: false
}
}
}
}
-59
View File
@@ -1,59 +0,0 @@
import path from 'node:path'
import process from 'node:process'
import { fileURLToPath } from 'node:url'
import { babel } from '@rollup/plugin-babel'
import { nodeResolve } from '@rollup/plugin-node-resolve'
import replace from '@rollup/plugin-replace'
import banner from './banner.mjs'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const BUNDLE = process.env.BUNDLE === 'true'
const ESM = process.env.ESM === 'true'
let destinationFile = `bootstrap${ESM ? '.esm' : ''}`
const external = ['@popperjs/core']
const plugins = [
babel({
// Only transpile our source code
exclude: 'node_modules/**',
// Include the helpers in the bundle, at most one copy of each
babelHelpers: 'bundled'
})
]
const globals = {
'@popperjs/core': 'Popper'
}
if (BUNDLE) {
destinationFile += '.bundle'
// Remove last entry in external array to bundle Popper
external.pop()
delete globals['@popperjs/core']
plugins.push(
replace({
'process.env.NODE_ENV': '"production"',
preventAssignment: true
}),
nodeResolve()
)
}
const rollupConfig = {
input: path.resolve(__dirname, `../js/index.${ESM ? 'esm' : 'umd'}.js`),
output: {
banner: banner(),
file: path.resolve(__dirname, `../dist/js/${destinationFile}.js`),
format: ESM ? 'esm' : 'umd',
globals,
generatedCode: 'es2015'
},
external,
plugins
}
if (!ESM) {
rollupConfig.output.name = 'bootstrap'
}
export default rollupConfig
-120
View File
@@ -1,120 +0,0 @@
#!/usr/bin/env node
/*!
* Script to create the built examples zip archive;
* requires the `zip` command to be present!
* Copyright 2020-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
import fs from 'node:fs/promises'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import sh from 'shelljs'
import { format } from 'prettier'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const pkgJson = path.join(__dirname, '../package.json')
const pkg = JSON.parse(await fs.readFile(pkgJson, 'utf8'))
const versionShort = pkg.config.version_short
const distFolder = `bootstrap-${pkg.version}-examples`
const rootDocsDir = '_site'
const docsDir = `${rootDocsDir}/docs/${versionShort}/`
// these are the files we need in the examples
const cssFiles = [
'bootstrap.min.css',
'bootstrap.min.css.map',
'bootstrap.rtl.min.css',
'bootstrap.rtl.min.css.map'
]
const jsFiles = [
'bootstrap.bundle.min.js',
'bootstrap.bundle.min.js.map'
]
const imgFiles = [
'bootstrap-logo.svg',
'bootstrap-logo-white.svg'
]
const staticJsFiles = [
'color-modes.js'
]
sh.config.fatal = true
if (!sh.test('-d', rootDocsDir)) {
throw new Error(`The "${rootDocsDir}" folder does not exist, did you forget building the docs?`)
}
// switch to the root dir
sh.cd(path.join(__dirname, '..'))
// remove any previously created folder/zip with the same name
sh.rm('-rf', [distFolder, `${distFolder}.zip`])
// create any folders so that `cp` works
sh.mkdir('-p', [
distFolder,
`${distFolder}/assets/brand/`,
`${distFolder}/assets/dist/css/`,
`${distFolder}/assets/dist/js/`,
`${distFolder}/assets/js/`
])
sh.cp('-Rf', `${docsDir}/examples/*`, distFolder)
for (const file of cssFiles) {
sh.cp('-f', `${docsDir}/dist/css/${file}`, `${distFolder}/assets/dist/css/`)
}
for (const file of jsFiles) {
sh.cp('-f', `${docsDir}/dist/js/${file}`, `${distFolder}/assets/dist/js/`)
}
for (const file of imgFiles) {
sh.cp('-f', `${docsDir}/assets/brand/${file}`, `${distFolder}/assets/brand/`)
}
for (const file of staticJsFiles) {
sh.cp('-f', `${docsDir}/assets/js/${file}`, `${distFolder}/assets/js/`)
}
sh.rm(`${distFolder}/index.html`)
// get all examples' HTML files
const htmlFiles = sh.find(`${distFolder}/**/*.html`)
const formatPromises = htmlFiles.map(async file => {
const fileContents = sh.cat(file)
.toString()
.replace(new RegExp(`"/docs/${versionShort}/`, 'g'), '"../')
.replace(/"..\/dist\//g, '"../assets/dist/')
.replace(/(<link href="\.\.\/[^"]*"[^>]*) integrity="[^"]*"/g, '$1')
.replace(/<link[^>]*href="\.\.\/assets\/img\/favicons\/[^"]*"[^>]*>/g, '')
.replace(/(<script src="\.\.\/[^"]*"[^>]*) integrity="[^"]*"/g, '$1')
let formattedHTML
try {
formattedHTML = await format(fileContents, {
parser: 'html',
filepath: file
})
} catch (error) {
console.error(`\nError formatting ${file}:`)
console.error(`Message: ${error.message}`)
console.error('\nSkipping formatting for this file...\n')
formattedHTML = fileContents
}
new sh.ShellString(formattedHTML).to(file)
})
await Promise.all(formatPromises)
// create the zip file
sh.exec(`zip -qr9 "${distFolder}.zip" "${distFolder}"`)
// remove the folder we created
sh.rm('-rf', distFolder)
+6 -1
View File
@@ -4,7 +4,7 @@
"keywords": [
"css",
"js",
"sass",
"less",
"mobile-first",
"responsive",
"front-end",
@@ -26,6 +26,11 @@
"issues": "https://github.com/twbs/bootstrap/issues"
},
"license": "MIT",
"extra": {
"branch-alias": {
"dev-master": "3.4.x-dev"
}
},
"replace": {
"twitter/bootstrap": "self.version"
}
-53
View File
@@ -1,53 +0,0 @@
title: "Bootstrap"
baseURL: "https://getbootstrap.com"
docsDir: "site"
subtitle: "The most popular HTML, CSS, and JS library in the world."
description: "Powerful, extensible, and feature-packed frontend toolkit. Build and customize with Sass, utilize prebuilt grid system and components, and bring projects to life with powerful JavaScript plugins."
authors: "Mark Otto, Jacob Thornton, and Bootstrap contributors"
current_version: "5.3.8"
current_ruby_version: "5.3.8"
docs_version: "5.3"
rfs_version: "v10.0.0"
github_org: "https://github.com/twbs"
repo: "https://github.com/twbs/bootstrap"
x: "getbootstrap"
opencollective: "https://opencollective.com/bootstrap"
blog: "https://blog.getbootstrap.com/"
icons: "https://icons.getbootstrap.com/"
swag: "https://cottonbureau.com/people/bootstrap"
analytics:
fathom_site: "ITUSEYJG"
algolia:
app_id: "AK7KMZKZHQ"
api_key: "3151f502c7b9e9dafd5e6372b691a24e"
index_name: "bootstrap"
download:
source: "https://github.com/twbs/bootstrap/archive/v5.3.8.zip"
dist: "https://github.com/twbs/bootstrap/releases/download/v5.3.8/bootstrap-5.3.8-dist.zip"
dist_examples: "https://github.com/twbs/bootstrap/releases/download/v5.3.8/bootstrap-5.3.8-examples.zip"
cdn:
# See https://www.srihash.org for info on how to generate the hashes
css: "https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css"
css_hash: "sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB"
js: "https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.min.js"
js_hash: "sha384-G/EV+4j2dNv+tEPo3++6LCgdCROaejBqfUeNjuKAiuXbjrxilcCdDz6ZAVfHWe1Y"
js_bundle: "https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"
js_bundle_hash: "sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI"
popper: "https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"
popper_hash: "sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r"
popper_esm: "https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/esm/popper.min.js"
anchors:
min: 2
max: 5
toc:
min: 2
max: 6
-4085
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-4084
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-601
View File
@@ -1,601 +0,0 @@
/*!
* Bootstrap Reboot v5.3.8 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root,
[data-bs-theme=light] {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-primary-text-emphasis: #052c65;
--bs-secondary-text-emphasis: #2b2f32;
--bs-success-text-emphasis: #0a3622;
--bs-info-text-emphasis: #055160;
--bs-warning-text-emphasis: #664d03;
--bs-danger-text-emphasis: #58151c;
--bs-light-text-emphasis: #495057;
--bs-dark-text-emphasis: #495057;
--bs-primary-bg-subtle: #cfe2ff;
--bs-secondary-bg-subtle: #e2e3e5;
--bs-success-bg-subtle: #d1e7dd;
--bs-info-bg-subtle: #cff4fc;
--bs-warning-bg-subtle: #fff3cd;
--bs-danger-bg-subtle: #f8d7da;
--bs-light-bg-subtle: #fcfcfd;
--bs-dark-bg-subtle: #ced4da;
--bs-primary-border-subtle: #9ec5fe;
--bs-secondary-border-subtle: #c4c8cb;
--bs-success-border-subtle: #a3cfbb;
--bs-info-border-subtle: #9eeaf9;
--bs-warning-border-subtle: #ffe69c;
--bs-danger-border-subtle: #f1aeb5;
--bs-light-border-subtle: #e9ecef;
--bs-dark-border-subtle: #adb5bd;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg: #fff;
--bs-body-bg-rgb: 255, 255, 255;
--bs-emphasis-color: #000;
--bs-emphasis-color-rgb: 0, 0, 0;
--bs-secondary-color: rgba(33, 37, 41, 0.75);
--bs-secondary-color-rgb: 33, 37, 41;
--bs-secondary-bg: #e9ecef;
--bs-secondary-bg-rgb: 233, 236, 239;
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
--bs-tertiary-color-rgb: 33, 37, 41;
--bs-tertiary-bg: #f8f9fa;
--bs-tertiary-bg-rgb: 248, 249, 250;
--bs-heading-color: inherit;
--bs-link-color: #0d6efd;
--bs-link-color-rgb: 13, 110, 253;
--bs-link-decoration: underline;
--bs-link-hover-color: #0a58ca;
--bs-link-hover-color-rgb: 10, 88, 202;
--bs-code-color: #d63384;
--bs-highlight-color: #212529;
--bs-highlight-bg: #fff3cd;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-xxl: 2rem;
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
--bs-border-radius-pill: 50rem;
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
--bs-focus-ring-width: 0.25rem;
--bs-focus-ring-opacity: 0.25;
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
--bs-form-valid-color: #198754;
--bs-form-valid-border-color: #198754;
--bs-form-invalid-color: #dc3545;
--bs-form-invalid-border-color: #dc3545;
}
[data-bs-theme=dark] {
color-scheme: dark;
--bs-body-color: #dee2e6;
--bs-body-color-rgb: 222, 226, 230;
--bs-body-bg: #212529;
--bs-body-bg-rgb: 33, 37, 41;
--bs-emphasis-color: #fff;
--bs-emphasis-color-rgb: 255, 255, 255;
--bs-secondary-color: rgba(222, 226, 230, 0.75);
--bs-secondary-color-rgb: 222, 226, 230;
--bs-secondary-bg: #343a40;
--bs-secondary-bg-rgb: 52, 58, 64;
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
--bs-tertiary-color-rgb: 222, 226, 230;
--bs-tertiary-bg: #2b3035;
--bs-tertiary-bg-rgb: 43, 48, 53;
--bs-primary-text-emphasis: #6ea8fe;
--bs-secondary-text-emphasis: #a7acb1;
--bs-success-text-emphasis: #75b798;
--bs-info-text-emphasis: #6edff6;
--bs-warning-text-emphasis: #ffda6a;
--bs-danger-text-emphasis: #ea868f;
--bs-light-text-emphasis: #f8f9fa;
--bs-dark-text-emphasis: #dee2e6;
--bs-primary-bg-subtle: #031633;
--bs-secondary-bg-subtle: #161719;
--bs-success-bg-subtle: #051b11;
--bs-info-bg-subtle: #032830;
--bs-warning-bg-subtle: #332701;
--bs-danger-bg-subtle: #2c0b0e;
--bs-light-bg-subtle: #343a40;
--bs-dark-bg-subtle: #1a1d20;
--bs-primary-border-subtle: #084298;
--bs-secondary-border-subtle: #41464b;
--bs-success-border-subtle: #0f5132;
--bs-info-border-subtle: #087990;
--bs-warning-border-subtle: #997404;
--bs-danger-border-subtle: #842029;
--bs-light-border-subtle: #495057;
--bs-dark-border-subtle: #343a40;
--bs-heading-color: inherit;
--bs-link-color: #6ea8fe;
--bs-link-hover-color: #8bb9fe;
--bs-link-color-rgb: 110, 168, 254;
--bs-link-hover-color-rgb: 139, 185, 254;
--bs-code-color: #e685b5;
--bs-highlight-color: #dee2e6;
--bs-highlight-bg: #664d03;
--bs-border-color: #495057;
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
--bs-form-valid-color: #75b798;
--bs-form-valid-border-color: #75b798;
--bs-form-invalid-color: #ea868f;
--bs-form-invalid-border-color: #ea868f;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
border: 0;
border-top: var(--bs-border-width) solid;
opacity: 0.25;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-left: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.1875em;
color: var(--bs-highlight-color);
background-color: var(--bs-highlight-bg);
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
text-decoration: underline;
}
a:hover {
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: var(--bs-secondary-color);
text-align: left;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: left;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
line-height: inherit;
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: left;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
[type=search]::-webkit-search-cancel-button {
cursor: pointer;
filter: grayscale(1);
}
/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-598
View File
@@ -1,598 +0,0 @@
/*!
* Bootstrap Reboot v5.3.8 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root,
[data-bs-theme=light] {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-primary-text-emphasis: #052c65;
--bs-secondary-text-emphasis: #2b2f32;
--bs-success-text-emphasis: #0a3622;
--bs-info-text-emphasis: #055160;
--bs-warning-text-emphasis: #664d03;
--bs-danger-text-emphasis: #58151c;
--bs-light-text-emphasis: #495057;
--bs-dark-text-emphasis: #495057;
--bs-primary-bg-subtle: #cfe2ff;
--bs-secondary-bg-subtle: #e2e3e5;
--bs-success-bg-subtle: #d1e7dd;
--bs-info-bg-subtle: #cff4fc;
--bs-warning-bg-subtle: #fff3cd;
--bs-danger-bg-subtle: #f8d7da;
--bs-light-bg-subtle: #fcfcfd;
--bs-dark-bg-subtle: #ced4da;
--bs-primary-border-subtle: #9ec5fe;
--bs-secondary-border-subtle: #c4c8cb;
--bs-success-border-subtle: #a3cfbb;
--bs-info-border-subtle: #9eeaf9;
--bs-warning-border-subtle: #ffe69c;
--bs-danger-border-subtle: #f1aeb5;
--bs-light-border-subtle: #e9ecef;
--bs-dark-border-subtle: #adb5bd;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg: #fff;
--bs-body-bg-rgb: 255, 255, 255;
--bs-emphasis-color: #000;
--bs-emphasis-color-rgb: 0, 0, 0;
--bs-secondary-color: rgba(33, 37, 41, 0.75);
--bs-secondary-color-rgb: 33, 37, 41;
--bs-secondary-bg: #e9ecef;
--bs-secondary-bg-rgb: 233, 236, 239;
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
--bs-tertiary-color-rgb: 33, 37, 41;
--bs-tertiary-bg: #f8f9fa;
--bs-tertiary-bg-rgb: 248, 249, 250;
--bs-heading-color: inherit;
--bs-link-color: #0d6efd;
--bs-link-color-rgb: 13, 110, 253;
--bs-link-decoration: underline;
--bs-link-hover-color: #0a58ca;
--bs-link-hover-color-rgb: 10, 88, 202;
--bs-code-color: #d63384;
--bs-highlight-color: #212529;
--bs-highlight-bg: #fff3cd;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-xxl: 2rem;
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
--bs-border-radius-pill: 50rem;
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
--bs-focus-ring-width: 0.25rem;
--bs-focus-ring-opacity: 0.25;
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
--bs-form-valid-color: #198754;
--bs-form-valid-border-color: #198754;
--bs-form-invalid-color: #dc3545;
--bs-form-invalid-border-color: #dc3545;
}
[data-bs-theme=dark] {
color-scheme: dark;
--bs-body-color: #dee2e6;
--bs-body-color-rgb: 222, 226, 230;
--bs-body-bg: #212529;
--bs-body-bg-rgb: 33, 37, 41;
--bs-emphasis-color: #fff;
--bs-emphasis-color-rgb: 255, 255, 255;
--bs-secondary-color: rgba(222, 226, 230, 0.75);
--bs-secondary-color-rgb: 222, 226, 230;
--bs-secondary-bg: #343a40;
--bs-secondary-bg-rgb: 52, 58, 64;
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
--bs-tertiary-color-rgb: 222, 226, 230;
--bs-tertiary-bg: #2b3035;
--bs-tertiary-bg-rgb: 43, 48, 53;
--bs-primary-text-emphasis: #6ea8fe;
--bs-secondary-text-emphasis: #a7acb1;
--bs-success-text-emphasis: #75b798;
--bs-info-text-emphasis: #6edff6;
--bs-warning-text-emphasis: #ffda6a;
--bs-danger-text-emphasis: #ea868f;
--bs-light-text-emphasis: #f8f9fa;
--bs-dark-text-emphasis: #dee2e6;
--bs-primary-bg-subtle: #031633;
--bs-secondary-bg-subtle: #161719;
--bs-success-bg-subtle: #051b11;
--bs-info-bg-subtle: #032830;
--bs-warning-bg-subtle: #332701;
--bs-danger-bg-subtle: #2c0b0e;
--bs-light-bg-subtle: #343a40;
--bs-dark-bg-subtle: #1a1d20;
--bs-primary-border-subtle: #084298;
--bs-secondary-border-subtle: #41464b;
--bs-success-border-subtle: #0f5132;
--bs-info-border-subtle: #087990;
--bs-warning-border-subtle: #997404;
--bs-danger-border-subtle: #842029;
--bs-light-border-subtle: #495057;
--bs-dark-border-subtle: #343a40;
--bs-heading-color: inherit;
--bs-link-color: #6ea8fe;
--bs-link-hover-color: #8bb9fe;
--bs-link-color-rgb: 110, 168, 254;
--bs-link-hover-color-rgb: 139, 185, 254;
--bs-code-color: #e685b5;
--bs-highlight-color: #dee2e6;
--bs-highlight-bg: #664d03;
--bs-border-color: #495057;
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
--bs-form-valid-color: #75b798;
--bs-form-valid-border-color: #75b798;
--bs-form-invalid-color: #ea868f;
--bs-form-invalid-border-color: #ea868f;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
border: 0;
border-top: var(--bs-border-width) solid;
opacity: 0.25;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-right: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-right: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.1875em;
color: var(--bs-highlight-color);
background-color: var(--bs-highlight-bg);
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
text-decoration: underline;
}
a:hover {
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: var(--bs-secondary-color);
text-align: right;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: right;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
line-height: inherit;
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: right;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
[type=search]::-webkit-search-cancel-button {
cursor: pointer;
filter: grayscale(1);
}
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+587
View File
@@ -0,0 +1,587 @@
/*!
* Bootstrap v3.4.1 (https://getbootstrap.com/)
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
.btn-default,
.btn-primary,
.btn-success,
.btn-info,
.btn-warning,
.btn-danger {
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
}
.btn-default:active,
.btn-primary:active,
.btn-success:active,
.btn-info:active,
.btn-warning:active,
.btn-danger:active,
.btn-default.active,
.btn-primary.active,
.btn-success.active,
.btn-info.active,
.btn-warning.active,
.btn-danger.active {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-default.disabled,
.btn-primary.disabled,
.btn-success.disabled,
.btn-info.disabled,
.btn-warning.disabled,
.btn-danger.disabled,
.btn-default[disabled],
.btn-primary[disabled],
.btn-success[disabled],
.btn-info[disabled],
.btn-warning[disabled],
.btn-danger[disabled],
fieldset[disabled] .btn-default,
fieldset[disabled] .btn-primary,
fieldset[disabled] .btn-success,
fieldset[disabled] .btn-info,
fieldset[disabled] .btn-warning,
fieldset[disabled] .btn-danger {
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-default .badge,
.btn-primary .badge,
.btn-success .badge,
.btn-info .badge,
.btn-warning .badge,
.btn-danger .badge {
text-shadow: none;
}
.btn:active,
.btn.active {
background-image: none;
}
.btn-default {
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #dbdbdb;
text-shadow: 0 1px 0 #fff;
border-color: #ccc;
}
.btn-default:hover,
.btn-default:focus {
background-color: #e0e0e0;
background-position: 0 -15px;
}
.btn-default:active,
.btn-default.active {
background-color: #e0e0e0;
border-color: #dbdbdb;
}
.btn-default.disabled,
.btn-default[disabled],
fieldset[disabled] .btn-default,
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus,
.btn-default.disabled:active,
.btn-default[disabled]:active,
fieldset[disabled] .btn-default:active,
.btn-default.disabled.active,
.btn-default[disabled].active,
fieldset[disabled] .btn-default.active {
background-color: #e0e0e0;
background-image: none;
}
.btn-primary {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #245580;
}
.btn-primary:hover,
.btn-primary:focus {
background-color: #265a88;
background-position: 0 -15px;
}
.btn-primary:active,
.btn-primary.active {
background-color: #265a88;
border-color: #245580;
}
.btn-primary.disabled,
.btn-primary[disabled],
fieldset[disabled] .btn-primary,
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus,
.btn-primary.disabled:active,
.btn-primary[disabled]:active,
fieldset[disabled] .btn-primary:active,
.btn-primary.disabled.active,
.btn-primary[disabled].active,
fieldset[disabled] .btn-primary.active {
background-color: #265a88;
background-image: none;
}
.btn-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #3e8f3e;
}
.btn-success:hover,
.btn-success:focus {
background-color: #419641;
background-position: 0 -15px;
}
.btn-success:active,
.btn-success.active {
background-color: #419641;
border-color: #3e8f3e;
}
.btn-success.disabled,
.btn-success[disabled],
fieldset[disabled] .btn-success,
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus,
.btn-success.disabled:active,
.btn-success[disabled]:active,
fieldset[disabled] .btn-success:active,
.btn-success.disabled.active,
.btn-success[disabled].active,
fieldset[disabled] .btn-success.active {
background-color: #419641;
background-image: none;
}
.btn-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #28a4c9;
}
.btn-info:hover,
.btn-info:focus {
background-color: #2aabd2;
background-position: 0 -15px;
}
.btn-info:active,
.btn-info.active {
background-color: #2aabd2;
border-color: #28a4c9;
}
.btn-info.disabled,
.btn-info[disabled],
fieldset[disabled] .btn-info,
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus,
.btn-info.disabled:active,
.btn-info[disabled]:active,
fieldset[disabled] .btn-info:active,
.btn-info.disabled.active,
.btn-info[disabled].active,
fieldset[disabled] .btn-info.active {
background-color: #2aabd2;
background-image: none;
}
.btn-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #e38d13;
}
.btn-warning:hover,
.btn-warning:focus {
background-color: #eb9316;
background-position: 0 -15px;
}
.btn-warning:active,
.btn-warning.active {
background-color: #eb9316;
border-color: #e38d13;
}
.btn-warning.disabled,
.btn-warning[disabled],
fieldset[disabled] .btn-warning,
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus,
.btn-warning.disabled:active,
.btn-warning[disabled]:active,
fieldset[disabled] .btn-warning:active,
.btn-warning.disabled.active,
.btn-warning[disabled].active,
fieldset[disabled] .btn-warning.active {
background-color: #eb9316;
background-image: none;
}
.btn-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #b92c28;
}
.btn-danger:hover,
.btn-danger:focus {
background-color: #c12e2a;
background-position: 0 -15px;
}
.btn-danger:active,
.btn-danger.active {
background-color: #c12e2a;
border-color: #b92c28;
}
.btn-danger.disabled,
.btn-danger[disabled],
fieldset[disabled] .btn-danger,
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus,
.btn-danger.disabled:active,
.btn-danger[disabled]:active,
fieldset[disabled] .btn-danger:active,
.btn-danger.disabled.active,
.btn-danger[disabled].active,
fieldset[disabled] .btn-danger.active {
background-color: #c12e2a;
background-image: none;
}
.thumbnail,
.img-thumbnail {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
background-color: #e8e8e8;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
background-color: #2e6da4;
}
.navbar-default {
background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f8f8f8));
background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
}
.navbar-brand,
.navbar-nav > li > a {
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
}
.navbar-inverse {
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
border-radius: 4px;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
}
.navbar-inverse .navbar-brand,
.navbar-inverse .navbar-nav > li > a {
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.navbar-static-top,
.navbar-fixed-top,
.navbar-fixed-bottom {
border-radius: 0;
}
@media (max-width: 767px) {
.navbar .navbar-nav .open .dropdown-menu > .active > a,
.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #fff;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
}
.alert {
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
}
.alert-success {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
background-repeat: repeat-x;
border-color: #b2dba1;
}
.alert-info {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
background-repeat: repeat-x;
border-color: #9acfea;
}
.alert-warning {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
background-repeat: repeat-x;
border-color: #f5e79e;
}
.alert-danger {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
background-repeat: repeat-x;
border-color: #dca7a7;
}
.progress {
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.list-group {
border-radius: 4px;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
text-shadow: 0 -1px 0 #286090;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
background-repeat: repeat-x;
border-color: #2b669a;
}
.list-group-item.active .badge,
.list-group-item.active:hover .badge,
.list-group-item.active:focus .badge {
text-shadow: none;
}
.panel {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}
.panel-default > .panel-heading {
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.panel-primary > .panel-heading {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.panel-success > .panel-heading {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
background-repeat: repeat-x;
}
.panel-info > .panel-heading {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
background-repeat: repeat-x;
}
.panel-warning > .panel-heading {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
background-repeat: repeat-x;
}
.panel-danger > .panel-heading {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
background-repeat: repeat-x;
}
.well {
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
border-color: #dcdcdc;
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
}
/*# sourceMappingURL=bootstrap-theme.css.map */
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-5406
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+6295 -11509
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
File diff suppressed because one or more lines are too long
+5 -5
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
-12021
View File
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More