Version 2.3.1-j6

Merge branch 'master' of git://github.com/twitter/bootstrap into 2.3.0-j5-wip

Conflicts:
	Makefile
	README.md
	component.json
	docs/assets/js/bootstrap-typeahead.js
	docs/assets/js/bootstrap.js
	docs/assets/js/bootstrap.min.js
	docs/index.html
	docs/templates/pages/index.mustache
	js/bootstrap-typeahead.js
	package.json
This commit is contained in:
Arnold Daniels
2013-03-11 01:54:03 +01:00
40 changed files with 136 additions and 73 deletions

View File

@@ -1,3 +1,13 @@
## 2.3.1 (February 28, 2013)
Patch release for @fat's n00bery
- fix missing event type in dropdown
- fix delegated data-attrs for popover/tooltip
- make carousel actually pause when you click cycle
- fix jshint ref in makefile
- fix trying to remove backdrop when no backdrop
## 2.3.0 (February 7, 2013)
Minor release to add carousel indicators, improve tooltips, improve dev setup, and fix hella bugs.

View File

@@ -31,7 +31,7 @@ build:
@echo "Compiling documentation... ${CHECK} Done"
@cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-inputmask.js js/bootstrap-rowlink.js js/bootstrap-fileupload.js js/bootstrap-affix.js > docs/assets/js/bootstrap.js
@./node_modules/.bin/uglifyjs -nc docs/assets/js/bootstrap.js > docs/assets/js/bootstrap.min.tmp.js
@echo "/**\n* Bootstrap.js v2.3.0-j4 by @fat & @mdo extended by @ArnoldDaniels\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > docs/assets/js/copyright.js
@echo "/**\n* Bootstrap.js v2.3.1-j6 by @fat & @mdo extended by @ArnoldDaniels\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > docs/assets/js/copyright.js
@cat docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js > docs/assets/js/bootstrap.min.js
@rm docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js
@echo "Compiling and minifying javascript... ${CHECK} Done"

View File

@@ -1,7 +1,7 @@
<a href="http://jasny.github.com/bootstrap">
<img src="http://jasny.github.com/bootstrap/assets/img/bootstrap-docs-readme.png" width="100px">
</a>
# [Jasny Bootstrap v2.3.0-j4](http://jasny.github.com/bootstrap) [![Build Status](https://travis-ci.org/jasny/bootstrap.png?branch=master)](https://travis-ci.org/jasny/bootstrap)
# [Jasny Bootstrap v2.3.1-j6](http://jasny.github.com/bootstrap) [![Build Status](https://travis-ci.org/jasny/bootstrap.png?branch=master)](https://travis-ci.org/jasny/bootstrap)
Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat).
@@ -48,25 +48,37 @@ Have a bug or a feature request? [Please open a new issue](https://github.com/ja
## Community
Keep track of development and community news.
We have included a makefile with convenience methods for working with the Bootstrap library.
* Follow [@ArnoldDaniels](http://twitter.com/ArnoldDaniels) and [@twbootstrap](http://twitter.com/twbootstrap) on Twitter.
* Read articles on [jasny.net](http://www,jasny.net).
* Read and subscribe to the [The Official Twitter Bootstrap Blog](http://blog.getbootstrap.com).
* Have a question that's not a feature request or bug report? [Ask on the mailing list.](http://groups.google.com/group/twitter-bootstrap)
* Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##twitter-bootstrap` channel.
+ **dependencies**
Our makefile depends on you having recess, connect, uglify.js, and jshint installed. To install, just run the following command in npm:
## Compiling CSS and JavaScript
Bootstrap includes a [makefile](Makefile) with convenient methods for working with the framework. Before getting started, be sure to install [the necessary local dependencies](package.json):
```
$ npm install recess connect uglify-js jshint -g
$ npm install
```
+ **build** - `make`
Runs the recess compiler to rebuild the `/less` files and compiles the docs pages. Requires recess and uglify-js. <a href="http://jasny.github.com/bootstrap/extend.html#compiling">Read more in our docs &raquo;</a>
When completed, you'll be able to run the various make commands provided:
+ **test** - `make test`
#### build - `make`
Runs the recess compiler to rebuild the `/less` files and compiles the docs. Requires recess and uglify-js.
#### test - `make test`
Runs jshint and qunit tests headlessly in [phantomjs](http://code.google.com/p/phantomjs/) (used for ci). Depends on having phantomjs installed.
+ **watch** - `make watch`
#### watch - `make watch`
This is a convenience method for watching just Less files and automatically building them whenever you save. Requires the Watchr gem.
Should you encounter problems with installing dependencies or running the makefile commands, be sure to first uninstall any previous versions (global and local) you may have installed, and then rerun `npm install`.
## Contributing

View File

@@ -1,6 +1,6 @@
{
"name": "bootstrap",
"version": "2.3.0-j4",
"version": "2.3.1-j6",
"main": ["./docs/assets/js/bootstrap.js", "./docs/assets/css/bootstrap.css"],
"dependencies": {
"jquery": "~1.8.0"

View File

@@ -1,5 +1,5 @@
/*!
* Bootstrap Responsive v2.3.0
* Bootstrap Responsive v2.3.1
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0

View File

@@ -1,5 +1,5 @@
/*!
* Bootstrap v2.3.0
* Bootstrap v2.3.1
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0

View File

@@ -1,5 +1,5 @@
/* ==========================================================
* bootstrap-affix.js v2.3.0
* bootstrap-affix.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#affix
* ==========================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* ==========================================================
* bootstrap-alert.js v2.3.0
* bootstrap-alert.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#alerts
* ==========================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* ============================================================
* bootstrap-button.js v2.3.0
* bootstrap-button.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#buttons
* ============================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* ==========================================================
* bootstrap-carousel.js v2.3.0
* bootstrap-carousel.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#carousel
* ==========================================================
* Copyright 2012 Twitter, Inc.
@@ -75,7 +75,7 @@
if (!e) this.paused = true
if (this.$element.find('.next, .prev').length && $.support.transition.end) {
this.$element.trigger($.support.transition.end)
this.cycle()
this.cycle(true)
}
clearInterval(this.interval)
this.interval = null

View File

@@ -1,5 +1,5 @@
/* =============================================================
* bootstrap-collapse.js v2.3.0
* bootstrap-collapse.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#collapse
* =============================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* ============================================================
* bootstrap-dropdown.js v2.3.0
* bootstrap-dropdown.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#dropdowns
* ============================================================
* Copyright 2012 Twitter, Inc.
@@ -158,7 +158,7 @@
$(document)
.on('click.dropdown.data-api', clearMenus)
.on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)

View File

@@ -78,7 +78,7 @@
this.$hidden.attr('name', '')
this.$input.attr('name', this.name)
if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match('\\.(gif|png|jpe?g)$')) && typeof FileReader !== "undefined") {
if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match(/\.(gif|png|jpe?g)$/i)) && typeof FileReader !== "undefined") {
var reader = new FileReader()
var preview = this.$preview
var element = this.$element

View File

@@ -1,5 +1,5 @@
/* =========================================================
* bootstrap-modal.js v2.3.0
* bootstrap-modal.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#modals
* =========================================================
* Copyright 2012 Twitter, Inc.
@@ -148,7 +148,7 @@
}
, removeBackdrop: function () {
this.$backdrop.remove()
this.$backdrop && this.$backdrop.remove()
this.$backdrop = null
}

View File

@@ -1,5 +1,5 @@
/* ===========================================================
* bootstrap-popover.js v2.3.0
* bootstrap-popover.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#popovers
* ===========================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* =============================================================
* bootstrap-scrollspy.js v2.3.0
* bootstrap-scrollspy.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#scrollspy
* =============================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* ========================================================
* bootstrap-tab.js v2.3.0
* bootstrap-tab.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#tabs
* ========================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* ===========================================================
* bootstrap-tooltip.js v2.3.0
* bootstrap-tooltip.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#tooltips
* Inspired by the original jQuery.tipsy by Jason Frame
* ===========================================================
@@ -80,7 +80,15 @@
}
, enter: function (e) {
var self = $(e.currentTarget)[this.type](this._options).data(this.type)
var defaults = $.fn[this.type].defaults
, options = {}
, self
this._options && $.each(this._options, function (key, value) {
if (defaults[key] != value) options[key] = value
}, this)
self = $(e.currentTarget)[this.type](options).data(this.type)
if (!self.options.delay || !self.options.delay.show) return self.show()

View File

@@ -1,5 +1,5 @@
/* ===================================================
* bootstrap-transition.js v2.3.0
* bootstrap-transition.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#transitions
* ===================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* =============================================================
* bootstrap-typeahead.js v2.3.0-j4
* bootstrap-typeahead.js v2.3.1-j6
* http://twitter.github.com/bootstrap/javascript.html#typeahead
* =============================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* ===================================================
* bootstrap-transition.js v2.3.0
* bootstrap-transition.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#transitions
* ===================================================
* Copyright 2012 Twitter, Inc.
@@ -58,7 +58,7 @@
})
}(window.jQuery);/* ==========================================================
* bootstrap-alert.js v2.3.0
* bootstrap-alert.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#alerts
* ==========================================================
* Copyright 2012 Twitter, Inc.
@@ -156,7 +156,7 @@
$(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
}(window.jQuery);/* ============================================================
* bootstrap-button.js v2.3.0
* bootstrap-button.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#buttons
* ============================================================
* Copyright 2012 Twitter, Inc.
@@ -260,7 +260,7 @@
})
}(window.jQuery);/* ==========================================================
* bootstrap-carousel.js v2.3.0
* bootstrap-carousel.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#carousel
* ==========================================================
* Copyright 2012 Twitter, Inc.
@@ -336,7 +336,7 @@
if (!e) this.paused = true
if (this.$element.find('.next, .prev').length && $.support.transition.end) {
this.$element.trigger($.support.transition.end)
this.cycle()
this.cycle(true)
}
clearInterval(this.interval)
this.interval = null
@@ -466,7 +466,7 @@
})
}(window.jQuery);/* =============================================================
* bootstrap-collapse.js v2.3.0
* bootstrap-collapse.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#collapse
* =============================================================
* Copyright 2012 Twitter, Inc.
@@ -632,7 +632,7 @@
})
}(window.jQuery);/* ============================================================
* bootstrap-dropdown.js v2.3.0
* bootstrap-dropdown.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#dropdowns
* ============================================================
* Copyright 2012 Twitter, Inc.
@@ -791,13 +791,13 @@
$(document)
.on('click.dropdown.data-api', clearMenus)
.on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
}(window.jQuery);
/* =========================================================
* bootstrap-modal.js v2.3.0
* bootstrap-modal.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#modals
* =========================================================
* Copyright 2012 Twitter, Inc.
@@ -946,7 +946,7 @@
}
, removeBackdrop: function () {
this.$backdrop.remove()
this.$backdrop && this.$backdrop.remove()
this.$backdrop = null
}
@@ -1044,7 +1044,7 @@
}(window.jQuery);
/* ===========================================================
* bootstrap-tooltip.js v2.3.0
* bootstrap-tooltip.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#tooltips
* Inspired by the original jQuery.tipsy by Jason Frame
* ===========================================================
@@ -1125,7 +1125,15 @@
}
, enter: function (e) {
var self = $(e.currentTarget)[this.type](this._options).data(this.type)
var defaults = $.fn[this.type].defaults
, options = {}
, self
this._options && $.each(this._options, function (key, value) {
if (defaults[key] != value) options[key] = value
}, this)
self = $(e.currentTarget)[this.type](options).data(this.type)
if (!self.options.delay || !self.options.delay.show) return self.show()
@@ -1397,7 +1405,7 @@
}(window.jQuery);
/* ===========================================================
* bootstrap-popover.js v2.3.0
* bootstrap-popover.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#popovers
* ===========================================================
* Copyright 2012 Twitter, Inc.
@@ -1511,7 +1519,7 @@
}(window.jQuery);
/* =============================================================
* bootstrap-scrollspy.js v2.3.0
* bootstrap-scrollspy.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#scrollspy
* =============================================================
* Copyright 2012 Twitter, Inc.
@@ -1672,7 +1680,7 @@
})
}(window.jQuery);/* ========================================================
* bootstrap-tab.js v2.3.0
* bootstrap-tab.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#tabs
* ========================================================
* Copyright 2012 Twitter, Inc.
@@ -1815,7 +1823,7 @@
})
}(window.jQuery);/* =============================================================
* bootstrap-typeahead.js v2.3.0-j4
* bootstrap-typeahead.js v2.3.1-j6
* http://twitter.github.com/bootstrap/javascript.html#typeahead
* =============================================================
* Copyright 2012 Twitter, Inc.
@@ -2844,7 +2852,7 @@
this.$hidden.attr('name', '')
this.$input.attr('name', this.name)
if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match('\\.(gif|png|jpe?g)$')) && typeof FileReader !== "undefined") {
if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match(/\.(gif|png|jpe?g)$/i)) && typeof FileReader !== "undefined") {
var reader = new FileReader()
var preview = this.$preview
var element = this.$element
@@ -2934,7 +2942,7 @@
}(window.jQuery);
/* ==========================================================
* bootstrap-affix.js v2.3.0
* bootstrap-affix.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#affix
* ==========================================================
* Copyright 2012 Twitter, Inc.

File diff suppressed because one or more lines are too long

View File

@@ -94,7 +94,7 @@
<a href="./extend.html" >Extend</a>
</li>
<li>
Version 2.3.0-j4
Version 2.3.1-j6
</li>
</ul>
</div>

View File

@@ -1,5 +1,5 @@
/* ==========================================================
* bootstrap-affix.js v2.3.0
* bootstrap-affix.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#affix
* ==========================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* ==========================================================
* bootstrap-alert.js v2.3.0
* bootstrap-alert.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#alerts
* ==========================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* ============================================================
* bootstrap-button.js v2.3.0
* bootstrap-button.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#buttons
* ============================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* ==========================================================
* bootstrap-carousel.js v2.3.0
* bootstrap-carousel.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#carousel
* ==========================================================
* Copyright 2012 Twitter, Inc.
@@ -75,7 +75,7 @@
if (!e) this.paused = true
if (this.$element.find('.next, .prev').length && $.support.transition.end) {
this.$element.trigger($.support.transition.end)
this.cycle()
this.cycle(true)
}
clearInterval(this.interval)
this.interval = null

View File

@@ -1,5 +1,5 @@
/* =============================================================
* bootstrap-collapse.js v2.3.0
* bootstrap-collapse.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#collapse
* =============================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* ============================================================
* bootstrap-dropdown.js v2.3.0
* bootstrap-dropdown.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#dropdowns
* ============================================================
* Copyright 2012 Twitter, Inc.
@@ -158,7 +158,7 @@
$(document)
.on('click.dropdown.data-api', clearMenus)
.on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)

View File

@@ -1,5 +1,5 @@
/* =========================================================
* bootstrap-modal.js v2.3.0
* bootstrap-modal.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#modals
* =========================================================
* Copyright 2012 Twitter, Inc.
@@ -148,7 +148,7 @@
}
, removeBackdrop: function () {
this.$backdrop.remove()
this.$backdrop && this.$backdrop.remove()
this.$backdrop = null
}

View File

@@ -1,5 +1,5 @@
/* ===========================================================
* bootstrap-popover.js v2.3.0
* bootstrap-popover.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#popovers
* ===========================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* =============================================================
* bootstrap-scrollspy.js v2.3.0
* bootstrap-scrollspy.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#scrollspy
* =============================================================
* Copyright 2012 Twitter, Inc.

2
js/bootstrap-tab.js vendored
View File

@@ -1,5 +1,5 @@
/* ========================================================
* bootstrap-tab.js v2.3.0
* bootstrap-tab.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#tabs
* ========================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* ===========================================================
* bootstrap-tooltip.js v2.3.0
* bootstrap-tooltip.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#tooltips
* Inspired by the original jQuery.tipsy by Jason Frame
* ===========================================================
@@ -80,7 +80,15 @@
}
, enter: function (e) {
var self = $(e.currentTarget)[this.type](this._options).data(this.type)
var defaults = $.fn[this.type].defaults
, options = {}
, self
this._options && $.each(this._options, function (key, value) {
if (defaults[key] != value) options[key] = value
}, this)
self = $(e.currentTarget)[this.type](options).data(this.type)
if (!self.options.delay || !self.options.delay.show) return self.show()

View File

@@ -1,5 +1,5 @@
/* ===================================================
* bootstrap-transition.js v2.3.0
* bootstrap-transition.js v2.3.1
* http://twitter.github.com/bootstrap/javascript.html#transitions
* ===================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -1,5 +1,5 @@
/* =============================================================
* bootstrap-typeahead.js v2.3.0-j4
* bootstrap-typeahead.js v2.3.1-j6
* http://twitter.github.com/bootstrap/javascript.html#typeahead
* =============================================================
* Copyright 2012 Twitter, Inc.

View File

@@ -117,4 +117,21 @@ $(function () {
})
.modal("toggle")
})
test("should allow modal close with 'backdrop:false'", function () {
stop()
$.support.transition = false
var div = $("<div>", { id: 'modal-test', "data-backdrop": false })
div
.bind("shown", function () {
ok($('#modal-test').is(":visible"), 'modal visible')
div.modal("hide")
})
.bind("hidden", function() {
ok(!$('#modal-test').is(":visible"), 'modal hidden')
div.remove()
start()
})
.modal("show")
})
})

2
less/bootstrap.less vendored
View File

@@ -1,5 +1,5 @@
/*!
* Bootstrap v2.3.0
* Bootstrap v2.3.1
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0

View File

@@ -1,5 +1,5 @@
/*!
* Bootstrap Responsive v2.3.0
* Bootstrap Responsive v2.3.1
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0

View File

@@ -1,7 +1,7 @@
{
"name": "bootstrap"
, "description": "Sleek, intuitive, and powerful front-end framework for faster and easier web development."
, "version": "2.3.0-j4"
, "version": "2.3.1-j6"
, "keywords": ["bootstrap", "css"]
, "homepage": "http://jasny.github.com/bootstrap/"
, "author": "Arnold Daniels <arnold@jasny.net>"