Commits

Christoffer Niska committed 020ec09

improved the demo

Comments (0)

Files changed (7)

assets/css/bootstrap-yii.css

 .clearfix:before, .clearfix:after {
   display:table;
   content:"";
+  line-height:0;
 }
 .clearfix:after { clear:both; }
 .hide-text {
   min-height:28px;
   -webkit-box-sizing:border-box;
   -moz-box-sizing:border-box;
-  -ms-box-sizing:border-box;
   box-sizing:border-box;
 }
 .grid-view { padding-top:20px; }
 .grid-view .pager { margin-top:5px; }
 .grid-view .empty { font-style:italic; }
 .grid-view-loading { background:url(../img/loading.gif) no-repeat; }
+.list-view { padding-top:20px; }
 .list-view .summary {
   margin-bottom:5px;
   text-align:right;

assets/less/bootstrap-yii.less

 */
 
 .list-view {
+    padding-top: 20px;
+
 	.summary {
 		margin-bottom: 5px;
 		text-align: right;

components/Bootstrap.php

 	 */
 	public function registerCss()
 	{
-		Yii::app()->clientScript->registerCssFile($this->getAssetsUrl().'/css/bootstrap.min.css');
+		Yii::app()->clientScript->registerCssFile($this->getAssetsUrl().'/css/bootstrap.css');
 	}
 
 	/**
 		/** @var CClientScript $cs */
 		$cs = Yii::app()->getClientScript();
 		$cs->registerMetaTag('width=device-width, initial-scale=1.0', 'viewport');
-		$cs->registerCssFile($this->getAssetsUrl().'/css/bootstrap-responsive.min.css');
+		$cs->registerCssFile($this->getAssetsUrl().'/css/bootstrap-responsive.css');
 	}
 
 	/**

demo/css/styles.css

 .clearfix:before, .clearfix:after {
   display:table;
   content:"";
+  line-height:0;
 }
 .clearfix:after { clear:both; }
 .hide-text {
   min-height:28px;
   -webkit-box-sizing:border-box;
   -moz-box-sizing:border-box;
-  -ms-box-sizing:border-box;
   box-sizing:border-box;
 }
 .php-hl-default { color:Black; }
 }
 .source .copycode_hover a { color:red; }
 body {
-  padding-top:60px;
+  padding-top:100px;
   padding-bottom:60px;
 }
 h1, h2, h3, h4, h5, h6 { margin-bottom:0.6em; }
   font-size:14px;
   margin-bottom:1.6em;
 }
+.hero-unit { margin-bottom:0; }
 .hero-unit h1 { margin-bottom:0.4em; }
-.hero-unit p {
-  margin-bottom:0;
-  text-align:justify;
-}
+.hero-unit p { text-align:justify; }
+.hero-unit p:last-child { margin-bottom:0; }
 .navbar .add-this {
   margin:6px 0 6px 10px;
   padding:6px 0;
 }
-.subnav {
-  font-size:12px;
-  padding:9px 0;
-  position:fixed;
-  right:20px;
-  top:60px;
-  width:160px;
-  z-index:1030;
-  -webkit-border-radius:4px;
-  -moz-border-radius:4px;
-  border-radius:4px;
-}
-.subnav .label {
-  font-size:0.8em;
-  line-height:16px;
-  vertical-align:top;
-}
+.navbar-subnav-fixed .nav { max-width:1170px !important; }
 footer .powered {
   color:#888888;
   margin-bottom:20px;
 footer .copy { color:#666666; }
 span.required { color:#ff0000; }
 .popover h3.popover-title { margin-bottom:0; }
-section { padding-top:40px; }
+section { padding-top:80px; }
 section a.top {
   display:block;
   text-align:right;

demo/less/styles.less

 // VARIABLES
 
 body {
-    padding-top: 60px;
+    padding-top: 100px;
 	padding-bottom: 60px;
 }
 
 }
 
 .hero-unit {
+    margin-bottom: 0;
+
     h1 {
         margin-bottom: 0.4em;
     }
 
 	p {
-		margin-bottom: 0;
 		text-align: justify;
+
+        &:last-child {
+            margin-bottom: 0;
+        }
 	}
 }
 
 	}
 }
 
-.subnav {
-	font-size: 12px;
-	padding: 9px 0;
-	position: fixed;
-	right: 20px;
-	top: 60px;
-	width: 160px;
-	z-index: 1030;
-	.border-radius(4px);
-
-	.label {
-	    font-size: 0.8em;
-	    line-height: 16px;
-		vertical-align: top;
-	}
+.navbar-subnav-fixed .nav {
+    max-width: 1170px !important;
 }
 
 footer {
 }
 
 section {
-	padding-top: 40px;
+	padding-top: 80px;
 
 	a.top {
 		display: block;

demo/protected/views/layouts/main.php

 	)); ?>
 		<p>
 			Bringing together the <?php echo CHtml::link('Yii PHP framework', 'http://www.yiiframework.com'); ?> and
-			<?php echo CHtml::link('Bootstrap', 'http://twitter.github.com/bootstrap/'); ?> Twitter's new web development toolkit.
-			Now with support for Bootstrap 2!
+			<?php echo CHtml::link('Twitter Bootstrap', 'http://twitter.github.com/bootstrap/'); ?>.
+        </p>
+        <p>
 			<?php echo CHtml::link('Yii-Bootstrap', 'http://www.yiiframework.com/extension/bootstrap/'); ?>
-			is an extension for Yii that provides a wide range of server-side widgets that allow you to easily use Bootstrap with Yii.
+			is an extension for Yii that provides a wide range of widgets that allow developers to easily use Bootstrap with Yii.
 			All widgets have been developed following Yii's conventions and work seamlessly together with Bootstrap and its jQuery plugins.
 		</p>
 	<?php $this->endWidget(); ?>

demo/protected/views/site/index.php

 ");
 ?>
 
-<section id="tbAlert">
+<section id="tbButton">
 
-	<h2>Alerts</h2>
+    <h2>Buttons <small>bootstrap.widgets.TbButton</small></h2>
 
-	<?php
-	Yii::app()->user->setFlash('success', '<strong>Well done!</strong> You successfully read this important alert message.');
-	Yii::app()->user->setFlash('info', '<strong>Heads up!</strong> This alert needs your attention, but it\'s not super important.');
-	Yii::app()->user->setFlash('warning', '<strong>Warning!</strong> Best check yo self, you\'re not looking too good.');
-	Yii::app()->user->setFlash('error', '<strong>Oh snap!</strong> Change a few things up and try submitting again.');
-	?>
+    <div class="row">
+        <div class="span3">
+            <h3>Large</h3>
+            <p>
+                <?php $this->widget('bootstrap.widgets.TbButton', array(
+                'label'=>'Primary', 'type'=>'primary', 'size'=>'large',
+            )); ?>
 
-	<?php $this->widget('bootstrap.widgets.TbAlert', array(
-		'events'=>array(
-			'close'=>"js:function() { console.log('Alert close.'); }",
-			'closed'=>"js:function() { console.log('Alert closed.'); }",
+                <?php $this->widget('bootstrap.widgets.TbButton', array(
+                'label'=>'Action', 'size'=>'large',
+            )); ?>
+            </p>
+        </div>
+
+        <div class="span3">
+            <h3>Normal</h3>
+            <p>
+                <?php $this->widget('bootstrap.widgets.TbButton', array(
+                'label'=>'Primary', 'type'=>'primary',
+            )); ?>
+
+                <?php $this->widget('bootstrap.widgets.TbButton', array(
+                'label'=>'Action',
+            )); ?>
+            </p>
+        </div>
+
+        <div class="span3">
+            <h3>Small</h3>
+            <p>
+                <?php $this->widget('bootstrap.widgets.TbButton', array(
+                'label'=>'Primary', 'type'=>'primary', 'size'=>'small',
+            )); ?>
+
+                <?php $this->widget('bootstrap.widgets.TbButton', array(
+                'label'=>'Action', 'size'=>'small',
+            )); ?>
+            </p>
+        </div>
+
+        <div class="span3">
+            <h3>Mini</h3>
+            <p>
+                <?php $this->widget('bootstrap.widgets.TbButton', array(
+                'label'=>'Primary', 'type'=>'primary', 'size'=>'mini',
+            )); ?>
+
+                <?php $this->widget('bootstrap.widgets.TbButton', array(
+                'label'=>'Action', 'size'=>'mini',
+            )); ?>
+            </p>
+        </div>
+    </div>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButton', array(
+	'label'=>'Primary',
+	'type'=>'primary', // '', 'primary', 'info', 'success', 'warning', 'danger' or 'inverse'
+	'size'=>'large', // '', 'large', 'small' or 'mini'
+)); ?>"); ?>
+
+    <h3>Dropdowns</h3>
+
+    <div class="btn-toolbar">
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'buttons'=>array(
+                array('label'=>'Action', 'items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separate link', 'url'=>'#'),
+                )),
+            ),
+        )); ?>
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'type'=>'primary',
+            'buttons'=>array(
+                array('label'=>'Action', 'items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separate link', 'url'=>'#'),
+                )),
+            ),
+        )); ?>
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'type'=>'danger',
+            'buttons'=>array(
+                array('label'=>'Danger', 'items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separate link', 'url'=>'#'),
+                )),
+            ),
+        )); ?>
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'type'=>'success',
+            'buttons'=>array(
+                array('label'=>'Success', 'items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separate link', 'url'=>'#'),
+                )),
+            ),
+        )); ?>
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'type'=>'info',
+            'buttons'=>array(
+                array('label'=>'Info', 'items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separate link', 'url'=>'#'),
+                )),
+            ),
+        )); ?>
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'type'=>'inverse',
+            'buttons'=>array(
+                array('label'=>'Inverse', 'items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separate link', 'url'=>'#'),
+                )),
+            ),
+        )); ?>
+    </div>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<div class=\"btn-toolbar\">
+	<?php \$this->widget('bootstrap.widgets.TbButtonGroup', array(
+		'type'=>'primary', // '', 'primary', 'info', 'success', 'warning', 'danger' or 'inverse'
+		'buttons'=>array(
+			array('label'=>'Action', 'items'=>array(
+				array('label'=>'Action', 'url'=>'#'),
+				array('label'=>'Another action', 'url'=>'#'),
+				array('label'=>'Something else', 'url'=>'#'),
+				'---',
+				array('label'=>'Separate link', 'url'=>'#'),
+			)),
 		),
 	)); ?>
+</div>"); ?>
 
-	<h4>Source code</h4>
+    <h3>Split dropdowns</h3>
 
-<?php echo $phpLighter->highlight("<?php
-Yii::app()->user->setFlash('success', '<strong>Well done!</strong> You successfully read this important alert message.');
-Yii::app()->user->setFlash('info', '<strong>Heads up!</strong> This alert needs your attention, but it\'s not super important.');
-Yii::app()->user->setFlash('warning', '<strong>Warning!</strong> Best check yo self, you\'re not looking too good.');
-Yii::app()->user->setFlash('error', '<strong>Oh snap!</strong> Change a few things up and try submitting again.');
-?>"); ?>
+    <div class="btn-toolbar">
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'buttons'=>array(
+                array('label'=>'Action', 'url'=>'#'),
+                array('items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separate link', 'url'=>'#'),
+                )),
+            ),
+        )); ?>
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'type'=>'primary',
+            'buttons'=>array(
+                array('label'=>'Action', 'url'=>'#'),
+                array('items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separate link', 'url'=>'#'),
+                )),
+            ),
+        )); ?>
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'type'=>'danger',
+            'buttons'=>array(
+                array('label'=>'Danger', 'url'=>'#'),
+                array('items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separate link', 'url'=>'#'),
+                )),
+            ),
+        )); ?>
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'type'=>'success',
+            'buttons'=>array(
+                array('label'=>'Success', 'url'=>'#'),
+                array('items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separate link', 'url'=>'#'),
+                )),
+            ),
+        )); ?>
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'type'=>'info',
+            'buttons'=>array(
+                array('label'=>'Info', 'url'=>'#'),
+                array('items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separate link', 'url'=>'#'),
+                )),
+            ),
+        )); ?>
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+        'type'=>'inverse',
+        'buttons'=>array(
+            array('label'=>'Inverse', 'url'=>'#'),
+            array('items'=>array(
+                array('label'=>'Action', 'url'=>'#'),
+                array('label'=>'Another action', 'url'=>'#'),
+                array('label'=>'Something else', 'url'=>'#'),
+                '---',
+                array('label'=>'Separate link', 'url'=>'#'),
+            )),
+        ),
+    )); ?>
+    </div>
 
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbAlert'); ?>"); ?>
+    <h4>Source code</h4>
 
-	<a class="top" href="#top">Back to top &uarr;</a>
+    <?php echo $phpLighter->highlight("<div class=\"btn-toolbar\">
+	<?php \$this->widget('bootstrap.widgets.TbButtonGroup', array(
+	    'type'=>'primary', // '', 'primary', 'info', 'success', 'warning', 'danger' or 'inverse'
+		'buttons'=>array(
+			array('label'=>'Action', 'url'=>'#'),
+			array('items'=>array(
+				array('label'=>'Action', 'url'=>'#'),
+				array('label'=>'Another action', 'url'=>'#'),
+				array('label'=>'Something else', 'url'=>'#'),
+				'---',
+				array('label'=>'Separate link', 'url'=>'#'),
+			)),
+		),
+	)); ?>
+</div>"); ?>
+
+    <h3>Stateful</h3>
+
+    <p>
+        <?php $this->widget('bootstrap.widgets.TbButton', array(
+        'buttonType'=>'button',
+        'type'=>'primary',
+        'label'=>'Click me',
+        'loadingText'=>'loading...',
+        'htmlOptions'=>array('id'=>'buttonStateful'),
+    )); ?>
+    </p>
+
+    <?php Yii::app()->clientScript->registerScript('buttonStateful', "
+		$('#buttonStateful').click(function() {
+			var btn = $(this);
+			btn.button('loading'); // call the loading function
+			setTimeout(function() {
+				btn.button('reset'); // call the reset function
+			}, 3000);
+		});
+	"); ?>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButton', array(
+	'buttonType'=>'button',
+	'type'=>'primary',
+	'label'=>'Click me',
+	'loadingText'=>'loading...',
+	'htmlOptions'=>array('id'=>'buttonStateful'),
+)); ?>"); ?>
+
+    <?php echo $jsLighter->highlight("$('#buttonStateful').click(function() {
+	var btn = $(this);
+	btn.button('loading'); // call the loading function
+	setTimeout(function() {
+		btn.button('reset'); // call the reset function
+	}, 3000);
+});"); ?>
+
+    <h3>Single state</h3>
+
+    <p>
+        <?php $this->widget('bootstrap.widgets.TbButton', array(
+        'buttonType'=>'button',
+        'type'=>'primary',
+        'label'=>'Toggle me',
+        'toggle'=>true,
+    )); ?>
+    </p>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButton', array(
+	'buttonType'=>'button',
+	'type'=>'primary',
+	'label'=>'Toggle me',
+	'toggle'=>true,
+)); ?>"); ?>
+
+    <div class="row">
+
+        <div class="span3">
+
+            <h3>Checkbox</h3>
+
+            <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'type' => 'primary',
+            'toggle' => 'checkbox',
+            'buttons' => array(
+                array('label'=>'Left'),
+                array('label'=>'Middle'),
+                array('label'=>'Right'),
+            ),
+        )); ?>
+            <br />
+
+        </div>
+
+        <div class="span3">
+
+            <h3>Radio</h3>
+
+            <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+            'type' => 'primary',
+            'toggle' => 'radio',
+            'buttons' => array(
+                array('label'=>'Left'),
+                array('label'=>'Middle'),
+                array('label'=>'Right'),
+            ),
+        )); ?>
+            <br />
+
+        </div>
+
+    </div>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButtonGroup', array(
+	'type' => 'primary',
+	'toggle' => 'radio', // 'checkbox' or 'radio'
+	'buttons' => array(
+		array('label'=>'Left'),
+		array('label'=>'Middle'),
+		array('label'=>'Right'),
+	),
+)); ?>"); ?>
+
+    <a class="top" href="#top">Back to top &uarr;</a>
+
+</section>
+
+<section id="tbButtonGroup">
+
+    <h2>Button groups <small>bootstrap.widgets.TbButtonGroup</small></h2>
+
+    <div class="btn-toolbar">
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+        'buttons'=>array(
+            array('label'=>'Left', 'url'=>'#'),
+            array('label'=>'Middle', 'url'=>'#'),
+            array('label'=>'Right', 'url'=>'#'),
+        ),
+    )); ?>
+    </div>
+
+    <div class="btn-toolbar">
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+        'buttons'=>array(
+            array('label'=>'1', 'url'=>'#'),
+            array('label'=>'2', 'url'=>'#'),
+            array('label'=>'3', 'url'=>'#'),
+            array('label'=>'4', 'url'=>'#'),
+        ),
+    )); ?>
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+        'buttons'=>array(
+            array('label'=>'5', 'url'=>'#'),
+            array('label'=>'6', 'url'=>'#'),
+            array('label'=>'7', 'url'=>'#'),
+        ),
+    )); ?>
+        <?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
+        'buttons'=>array(
+            array('label'=>'8', 'url'=>'#'),
+        ),
+    )); ?>
+    </div>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButtonGroup', array(
+	'buttons'=>array(
+		array('label'=>'1', 'url'=>'#'),
+		array('label'=>'2', 'url'=>'#'),
+		array('label'=>'3', 'url'=>'#'),
+		array('label'=>'4', 'url'=>'#'),
+	),
+)); ?>"); ?>
+
+    <a class="top" href="#top">Back to top &uarr;</a>
 
 </section>
 
 <section id="tbBreadcrumbs">
 
-	<h2>Breadcrumbs</h2>
+	<h2>Breadcrumbs <small>bootstrap.widgets.TbBreadcrumbs</small></h2>
 
 	<?php $this->widget('bootstrap.widgets.TbBreadcrumbs', array(
 		'links'=>array(),
 
 </section>
 
-<section id="tbNavbar">
-
-	<h2>Navbar</h2>
-
-	<?php $this->widget('bootstrap.widgets.TbNavbar', array(
-		'fixed'=>false,
-		'brand'=>'Project name',
-		'brandUrl'=>'#',
-		'collapse'=>true, // requires bootstrap-responsive.css
-		'items'=>array(
-			array(
-				'class'=>'bootstrap.widgets.TbMenu',
-				'items'=>array(
-					array('label'=>'Home', 'url'=>'#', 'active'=>true),
-					array('label'=>'Link', 'url'=>'#'),
-					array('label'=>'Link', 'url'=>'#'),
-					array('label'=>'Link', 'url'=>'#'),
-					array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
-						array('label'=>'Action', 'url'=>'#'),
-						array('label'=>'Another action', 'url'=>'#'),
-						array('label'=>'Something else here', 'url'=>'#'),
-						'---',
-						array('label'=>'NAV HEADER'),
-						array('label'=>'Separated link', 'url'=>'#'),
-						array('label'=>'One more separated link', 'url'=>'#'),
-					)),
-				),
-			),
-			'<form class="navbar-search pull-left" action=""><input type="text" class="search-query span2" placeholder="Search"></form>',
-			array(
-				'class'=>'bootstrap.widgets.TbMenu',
-				'htmlOptions'=>array('class'=>'pull-right'),
-				'items'=>array(
-					array('label'=>'Link', 'url'=>'#'),
-					'---',
-					array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
-						array('label'=>'Action', 'url'=>'#'),
-						array('label'=>'Another action', 'url'=>'#'),
-						array('label'=>'Something else here', 'url'=>'#'),
-						'---',
-						array('label'=>'Separated link', 'url'=>'#'),
-					)),
-				),
-			),
-		),
-	)); ?>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbNavbar', array(
-	'fixed'=>false,
-	'brand'=>'Project name',
-	'brandUrl'=>'#',
-	'collapse'=>true, // requires bootstrap-responsive.css
-	'items'=>array(
-		array(
-			'class'=>'bootstrap.widgets.TbMenu',
-			'items'=>array(
-				array('label'=>'Home', 'url'=>'#', 'active'=>true),
-				array('label'=>'Link', 'url'=>'#'),
-				array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
-					array('label'=>'Action', 'url'=>'#'),
-					array('label'=>'Another action', 'url'=>'#'),
-					array('label'=>'Something else here', 'url'=>'#'),
-					'---',
-					array('label'=>'NAV HEADER'),
-					array('label'=>'Separated link', 'url'=>'#'),
-					array('label'=>'One more separated link', 'url'=>'#'),
-				)),
-			),
-		),
-		'<form class=\"navbar-search pull-left\" action=\"\"><input type=\"text\" class=\"search-query span2\" placeholder=\"Search\"></form>',
-		array(
-			'class'=>'bootstrap.widgets.TbMenu',
-			'htmlOptions'=>array('class'=>'pull-right'),
-			'items'=>array(
-				array('label'=>'Link', 'url'=>'#'),
-				'---',
-				array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
-					array('label'=>'Action', 'url'=>'#'),
-					array('label'=>'Another action', 'url'=>'#'),
-					array('label'=>'Something else here', 'url'=>'#'),
-					'---',
-					array('label'=>'Separated link', 'url'=>'#'),
-				)),
-			),
-		),
-	),
-)); ?>"); ?>
-
-	<a class="top" href="#top">Back to top &uarr;</a>
-
-</section>
-
 <section id="tbMenu">
 
-	<h2>Menus</h2>
+	<h2>Menus <small>bootstrap.widgets.TbMenu</small></h2>
 
 	<h3>Basic tabs</h3>
 
 
 </section>
 
-<section id="tbTabbable">
+<section id="tbNavbar">
 
-	<h2>Tabbable</h2>
+    <h2>Navbar <small>bootstrap.widgets.TbNavbar</small></h2>
 
-	<?php $this->widget('bootstrap.widgets.TbTabbable', array(
-		'type'=>'tabs', // 'tabs' or 'pills'
-		'htmlOptions'=>array('class'=>'tabbable'),
-		'tabs'=>$tabs,
-		'events'=>array(
-			'show'=>"js:function() { console.log('Tabbable show.'); }",
-			'shown'=>"js:function() { console.log('Tabbable shown.'); }",
+    <?php $this->widget('bootstrap.widgets.TbNavbar', array(
+    'fixed'=>false,
+    'brand'=>'Project name',
+    'brandUrl'=>'#',
+    'collapse'=>true, // requires bootstrap-responsive.css
+    'items'=>array(
+        array(
+            'class'=>'bootstrap.widgets.TbMenu',
+            'items'=>array(
+                array('label'=>'Home', 'url'=>'#', 'active'=>true),
+                array('label'=>'Link', 'url'=>'#'),
+                array('label'=>'Link', 'url'=>'#'),
+                array('label'=>'Link', 'url'=>'#'),
+                array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else here', 'url'=>'#'),
+                    '---',
+                    array('label'=>'NAV HEADER'),
+                    array('label'=>'Separated link', 'url'=>'#'),
+                    array('label'=>'One more separated link', 'url'=>'#'),
+                )),
+            ),
+        ),
+        '<form class="navbar-search pull-left" action=""><input type="text" class="search-query span2" placeholder="Search"></form>',
+        array(
+            'class'=>'bootstrap.widgets.TbMenu',
+            'htmlOptions'=>array('class'=>'pull-right'),
+            'items'=>array(
+                array('label'=>'Link', 'url'=>'#'),
+                '---',
+                array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else here', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separated link', 'url'=>'#'),
+                )),
+            ),
+        ),
+    ),
+)); ?>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbNavbar', array(
+	'fixed'=>false,
+	'brand'=>'Project name',
+	'brandUrl'=>'#',
+	'collapse'=>true, // requires bootstrap-responsive.css
+	'items'=>array(
+		array(
+			'class'=>'bootstrap.widgets.TbMenu',
+			'items'=>array(
+				array('label'=>'Home', 'url'=>'#', 'active'=>true),
+				array('label'=>'Link', 'url'=>'#'),
+				array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
+					array('label'=>'Action', 'url'=>'#'),
+					array('label'=>'Another action', 'url'=>'#'),
+					array('label'=>'Something else here', 'url'=>'#'),
+					'---',
+					array('label'=>'NAV HEADER'),
+					array('label'=>'Separated link', 'url'=>'#'),
+					array('label'=>'One more separated link', 'url'=>'#'),
+				)),
+			),
 		),
-	)); ?>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbTabbable', array(
-	'type'=>'tabs', // 'tabs' or 'pills'
-	'tabs'=>array(
-		array('label'=>'Home', 'content'=>'Raw denim you probably haven\'t heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.', 'active'=>true),
-		array('label'=>'Profile', 'content'=>'Food truck fixie locavore, accusamus mcsweeney\'s marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.'),
-		array('label'=>'Dropdown', 'items'=>array(
-			array('label'=>'@fat', 'content'=>'Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney\'s organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven\'t heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.'),
-			array('label'=>'@mdo', 'content'=>'Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.'),
-		)),
+		'<form class=\"navbar-search pull-left\" action=\"\"><input type=\"text\" class=\"search-query span2\" placeholder=\"Search\"></form>',
+		array(
+			'class'=>'bootstrap.widgets.TbMenu',
+			'htmlOptions'=>array('class'=>'pull-right'),
+			'items'=>array(
+				array('label'=>'Link', 'url'=>'#'),
+				'---',
+				array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
+					array('label'=>'Action', 'url'=>'#'),
+					array('label'=>'Another action', 'url'=>'#'),
+					array('label'=>'Something else here', 'url'=>'#'),
+					'---',
+					array('label'=>'Separated link', 'url'=>'#'),
+				)),
+			),
+		),
 	),
 )); ?>"); ?>
 
-	<div class="alert alert-block alert-warning">
-		<strong>Note!</strong>
-		Because of a bug in the current version of Bootstrap tab-content fall below the tabs even when it shouldn't. This can be fixed by setting tab-content width to auto.
-	</div>
+    <h3>Sub navigation</h3>
 
-	<div class="row">
+    <?php $this->widget('bootstrap.widgets.TbNavbar', array(
+    'type'=>'subnav',
+    'fixed'=>false,
+    'brand'=>false,
+    'collapse'=>true, // requires bootstrap-responsive.css
+    'items'=>array(
+        array(
+            'class'=>'bootstrap.widgets.TbMenu',
+            'items'=>array(
+                array('label'=>'Home', 'url'=>'#', 'active'=>true),
+                array('label'=>'Link', 'url'=>'#'),
+                array('label'=>'Link', 'url'=>'#'),
+                array('label'=>'Link', 'url'=>'#'),
+                array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else here', 'url'=>'#'),
+                    '---',
+                    array('label'=>'NAV HEADER'),
+                    array('label'=>'Separated link', 'url'=>'#'),
+                    array('label'=>'One more separated link', 'url'=>'#'),
+                )),
+            ),
+        ),
+        array(
+            'class'=>'bootstrap.widgets.TbMenu',
+            'htmlOptions'=>array('class'=>'pull-right'),
+            'items'=>array(
+                array('label'=>'Link', 'url'=>'#'),
+                '---',
+                array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else here', 'url'=>'#'),
+                    '---',
+                    array('label'=>'Separated link', 'url'=>'#'),
+                )),
+            ),
+        ),
+    ),
+)); ?>
 
-		<div class="span6">
+    <h4>Source code</h4>
 
-			<h3>Tabs on the top</h3>
-
-			<?php $this->widget('bootstrap.widgets.TbTabbable', array(
-				'htmlOptions'=>array('class'=>'tabbable tabbable-placed'),
-				'tabs'=>$tabbable,
-			)); ?>
-
-			<h3>Tabs on the left</h3>
-
-			<?php $this->widget('bootstrap.widgets.TbTabbable', array(
-				'placement'=>'left',
-				'htmlOptions'=>array('class'=>'tabbable tabbable-placed'),
-				'tabs'=>$tabbable,
-			)); ?>
-
-		</div>
-
-		<div class="span6">
-
-			<h3>Tabs on the bottom</h3>
-
-			<?php $this->widget('bootstrap.widgets.TbTabbable', array(
-				'placement'=>'below',
-				'htmlOptions'=>array('class'=>'tabbable tabbable-placed'),
-				'tabs'=>$tabbable,
-			)); ?>
-
-			<h3>Tabs on the right</h3>
-
-			<?php $this->widget('bootstrap.widgets.TbTabbable', array(
-				'placement'=>'right',
-				'htmlOptions'=>array('class'=>'tabbable tabbable-placed'),
-				'tabs'=>$tabbable,
-			)); ?>
-
-		</div>
-
-	</div>
-
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbTabbable', array(
-	'type'=>'tabs',
-	'placement'=>'below', // 'above', 'right', 'below' or 'left'
-	'tabs'=>array(
-		array('label'=>'Section 1', 'content'=>'<p>I\'m in Section 1.</p>', 'active'=>true),
-		array('label'=>'Section 2', 'content'=>'<p>Howdy, I\'m in Section 2.</p>'),
-		array('label'=>'Section 3', 'content'=>'<p>What up girl, this is Section 3.</p>'),
-	),
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbNavbar', array(
+	'type'=>'subnav',
+    'fixed'=>false,
+    'brand'=>false,
+    'collapse'=>true, // requires bootstrap-responsive.css
+    'items'=>array(
+        array(
+            'class'=>'bootstrap.widgets.TbMenu',
+            'items'=>array(
+                array('label'=>'Home', 'url'=>'#', 'active'=>true),
+                array('label'=>'Link', 'url'=>'#'),
+                array('label'=>'Link', 'url'=>'#'),
+                array('label'=>'Link', 'url'=>'#'),
+                array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
+                    array('label'=>'Action', 'url'=>'#'),
+                    array('label'=>'Another action', 'url'=>'#'),
+                    array('label'=>'Something else here', 'url'=>'#'),
+                    '---',
+                    array('label'=>'NAV HEADER'),
+                    array('label'=>'Separated link', 'url'=>'#'),
+                    array('label'=>'One more separated link', 'url'=>'#'),
+                )),
+            ),
+        ),
+        array(
+			'class'=>'bootstrap.widgets.TbMenu',
+			'htmlOptions'=>array('class'=>'pull-right'),
+			'items'=>array(
+				array('label'=>'Link', 'url'=>'#'),
+				'---',
+				array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
+					array('label'=>'Action', 'url'=>'#'),
+					array('label'=>'Another action', 'url'=>'#'),
+					array('label'=>'Something else here', 'url'=>'#'),
+					'---',
+					array('label'=>'Separated link', 'url'=>'#'),
+				)),
+			),
+		),
+    ),
 )); ?>"); ?>
 
-	<a class="top" href="#top">Back to top &uarr;</a>
+    <a class="top" href="#top">Back to top &uarr;</a>
 
 </section>
 
 <section id="tbDetailView">
 
-	<h2>Detail views</h2>
+	<h2>Detail views <small>bootstrap.widgets.TbDetailView</small></h2>
 
 	<?php $this->widget('bootstrap.widgets.TbDetailView', array(
 		'data'=>array('id'=>1, 'firstName'=>'Mark', 'lastName'=>'Otto', 'language'=>'CSS'),
 
 <section id="tbGridView">
 
-	<h2>Grid views</h2>
+	<h2>Grid views <small>bootstrap.widgets.TbGridView</small></h2>
 
 	<h3>Default</h3>
 
 
 </section>
 
-<section id="tbThumbnails">
-
-	<h2>Thumbnails</h2>
-
-	<?php $this->widget('bootstrap.widgets.TbThumbnails', array(
-		'dataProvider'=>$listDataProvider,
-		'template'=>"{items}\n{pager}",
-		'itemView'=>'_thumb',
-	)); ?>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbThumbnails', array(
-	'dataProvider'=>\$listDataProvider,
-	'template'=>\"{items}\\n{pager}\",
-	'itemView'=>'_thumb',
-)); ?>"); ?>
-
-<?php echo $htmlLighter->highlight("<li class=\"span3\">
-	<a href=\"#\" class=\"thumbnail\" rel=\"tooltip\" data-title=\"Tooltip\">
-		<img src=\"http://placehold.it/280x180\" alt=\"\">
-	</a>
-</li>"); ?>
-
-	<a class="top" href="#top">Back to top &uarr;</a>
-
-</section>
-
-<section id="tbTooltip">
-
-	<h2>Tooltips</h2>
-
-	<p class="well">
-		Lorem ipsum dolor sit <a href="#" rel="tooltip" title="First tooltip">amet</a>,
-		consectetur adipiscing elit.
-		Fusce ut velit sem, id elementum elit. Quisque tincidunt magna in quam luctus a ultrices tellus luctus.
-		Pellentesque at tellus urna.
-		Ut congue, <a href="#" rel="tooltip" title="Another tooltip">nibh eu</a> interdum commodo,
-		ligula urna consequat tortor, at vehicula tellus est a orci.
-		Maecenas nec ligula sed ipsum posuere sollicitudin pretium ac sapien.
-		Sed odio dui, pretium eu pellentesque ac,
-		<a href="#" rel="tooltip" title="Yet another tooltip">tempor</a> sed sem.
-	</p>
-
-	<h4>Source code</h4>
-
-<?php echo $htmlLighter->highlight("<p class=\"well\">
-	Lorem ipsum dolor sit <a href=\"#\" rel=\"tooltip\" title=\"First tooltip\">amet</a>,
-	consectetur adipiscing elit.
-	Fusce ut velit sem, id elementum elit. Quisque tincidunt magna in quam luctus a ultrices tellus luctus.
-	Pellentesque at tellus urna.
-	Ut congue, <a href=\"#\" rel=\"tooltip\" title=\"Another tooltip\">nibh eu</a> interdum commodo,
-	ligula urna consequat tortor, at vehicula tellus est a orci.
-	Maecenas nec ligula sed ipsum posuere sollicitudin pretium ac sapien.
-	Sed odio dui, pretium eu pellentesque ac,
-	<a href=\"#\" rel=\"tooltip\" title=\"Yet another tooltip\">tempor</a> sed sem.
-</p>"); ?>
-
-	<a class="top" href="#top">Back to top &uarr;</a>
-
-</section>
-
-<section id="tbPopover">
-
-	<h2>Popovers</h2>
-
-	<div class="well">
-		<?php $this->widget('bootstrap.widgets.TbButton', array(
-			'label'=>'Hover me',
-			'type'=>'danger',
-			'htmlOptions'=>array('data-title'=>'Heading', 'data-content'=>'Content ...', 'rel'=>'popover'),
-		)); ?>
-	</div>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButton', array(
-	'label'=>'Hover me',
-	'type'=>'danger',
-	'htmlOptions'=>array('data-title'=>'Heading', 'data-content'=>'Content ...', 'rel'=>'popover'),
-)); ?>"); ?>
-
-	<a class="top" href="#top">Back to top &uarr;</a>
-
-</section>
-
-<section id="tbModal">
-
-	<h2>Modals</h2>
-
-	<?php $this->beginWidget('bootstrap.widgets.TbModal', array(
-		'id'=>'myModal',
-		'events'=>array(
-			'show'=>"js:function() { console.log('Modal show.'); }",
-			'shown'=>"js:function() { console.log('Modal shown.'); }",
-			'hide'=>"js:function() { console.log('Modal hide.'); }",
-			'hidden'=>"js:function() { console.log('Modal hidden.'); }",
-		),
-	)); ?>
-
-	<div class="modal-header">
-		<a class="close" data-dismiss="modal">&times;</a>
-		<h3>Modal header</h3>
-	</div>
-
-	<div class="modal-body">
-		<p>One fine body...</p>
-	</div>
-
-	<div class="modal-footer">
-		<?php $this->widget('bootstrap.widgets.TbButton', array('type'=>'primary', 'label'=>'Save changes', 'url'=>'#', 'htmlOptions'=>array('data-dismiss'=>'modal'))); ?>
-		<?php $this->widget('bootstrap.widgets.TbButton', array('label'=>'Close', 'url'=>'#', 'htmlOptions'=>array('data-dismiss'=>'modal'))); ?>
-	</div>
-
-	<?php $this->endWidget(); ?>
-
-	<div class="well">
-		<?php $this->widget('bootstrap.widgets.TbButton', array(
-			'label'=>'Click me',
-			'url'=>'#myModal',
-			'type'=>'primary',
-			'htmlOptions'=>array('data-toggle'=>'modal'),
-		)); ?>
-	</div>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<?php \$this->beginWidget('bootstrap.widgets.TbModal', array('id'=>'myModal')); ?>
-
-<div class=\"modal-header\">
-	<a class=\"close\" data-dismiss=\"modal\">&times;</a>
-	<h3>Modal header</h3>
-</div>
-
-<div class=\"modal-body\">
-	<p>One fine body...</p>
-</div>
-
-<div class=\"modal-footer\">
-	<?php \$this->widget('bootstrap.widgets.TbButton', array(
-		'type'=>'primary',
-		'label'=>'Save changes',
-		'url'=>'#',
-		'htmlOptions'=>array('data-dismiss'=>'modal'),
-	)); ?>
-	<?php \$this->widget('bootstrap.widgets.TbButton', array(
-		'label'=>'Close',
-		'url'=>'#',
-		'htmlOptions'=>array('data-dismiss'=>'modal'),
-	)); ?>
-</div>
-
-<?php \$this->endWidget(); ?>"); ?>
-
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButton', array(
-	'label'=>'Click me',
-	'url'=>'#myModal',
-	'type'=>'primary',
-	'htmlOptions'=>array('data-toggle'=>'modal'),
-)); ?>"); ?>
-
-	<a class="top" href="#top">Back to top &uarr;</a>
-
-</section>
-
 <section id="tbActiveForm">
 
-	<h2>Forms</h2>
+	<h2>Forms <small>bootstrap.widgets.TbActiveForm</small></h2>
 
 	<h3>Vertical</h3>
 
 				array('multiple'=>true)); ?>
 		<?php echo $form->fileFieldRow($model, 'fileField'); ?>
 		<?php echo $form->textAreaRow($model, 'textarea', array('class'=>'span8', 'rows'=>5)); ?>
-		<?php echo $form->uneditableRow($model, 'uneditable'); ?>
+		<?php echo $form->uneditableRow($model, 'uneditable', array('class'=>'input-large')); ?>
 		<?php echo $form->textFieldRow($model, 'disabled', array('disabled'=>true)); ?>
 		<?php echo $form->textFieldRow($model, 'prepend', array('prepend'=>'@')); ?>
 		<?php echo $form->textFieldRow($model, 'append', array('append'=>'.00')); ?>
 
 <?php \$this->endWidget(); ?>"); ?>
 
-	<a class="top" href="#top">Back to top &uarr;</a>
-
     <h3>Tabular</h3>
 
     <?php /** @var TbActiveForm $form */
 
 </fieldset>"); ?>
 
-</section>
-
-<section id="tbButton">
-
-	<h2>Buttons</h2>
-
-	<div class="row">
-		<div class="span3">
-			<h3>Large</h3>
-			<p>
-				<?php $this->widget('bootstrap.widgets.TbButton', array(
-					'label'=>'Primary', 'type'=>'primary', 'size'=>'large',
-				)); ?>
-
-				<?php $this->widget('bootstrap.widgets.TbButton', array(
-					'label'=>'Action', 'size'=>'large',
-				)); ?>
-			</p>
-		</div>
-
-		<div class="span3">
-			<h3>Normal</h3>
-			<p>
-				<?php $this->widget('bootstrap.widgets.TbButton', array(
-					'label'=>'Primary', 'type'=>'primary',
-				)); ?>
-
-				<?php $this->widget('bootstrap.widgets.TbButton', array(
-					'label'=>'Action',
-				)); ?>
-			</p>
-		</div>
-
-		<div class="span3">
-			<h3>Small</h3>
-			<p>
-				<?php $this->widget('bootstrap.widgets.TbButton', array(
-					'label'=>'Primary', 'type'=>'primary', 'size'=>'small',
-				)); ?>
-
-				<?php $this->widget('bootstrap.widgets.TbButton', array(
-					'label'=>'Action', 'size'=>'small',
-				)); ?>
-			</p>
-		</div>
-
-		<div class="span3">
-			<h3>Mini</h3>
-			<p>
-				<?php $this->widget('bootstrap.widgets.TbButton', array(
-					'label'=>'Primary', 'type'=>'primary', 'size'=>'mini',
-				)); ?>
-
-				<?php $this->widget('bootstrap.widgets.TbButton', array(
-					'label'=>'Action', 'size'=>'mini',
-				)); ?>
-			</p>
-		</div>
-	</div>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButton', array(
-	'label'=>'Primary',
-	'type'=>'primary', // '', 'primary', 'info', 'success', 'warning', 'danger' or 'inverse'
-	'size'=>'large', // '', 'large', 'small' or 'mini'
-)); ?>"); ?>
-
-	<h3>Button groups</h3>
-
-	<div class="btn-toolbar">
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'buttons'=>array(
-				array('label'=>'Left', 'url'=>'#'),
-				array('label'=>'Middle', 'url'=>'#'),
-				array('label'=>'Right', 'url'=>'#'),
-			),
-		)); ?>
-	</div>
-
-	<div class="btn-toolbar">
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'buttons'=>array(
-				array('label'=>'1', 'url'=>'#'),
-				array('label'=>'2', 'url'=>'#'),
-				array('label'=>'3', 'url'=>'#'),
-				array('label'=>'4', 'url'=>'#'),
-			),
-		)); ?>
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'buttons'=>array(
-				array('label'=>'5', 'url'=>'#'),
-				array('label'=>'6', 'url'=>'#'),
-				array('label'=>'7', 'url'=>'#'),
-			),
-		)); ?>
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'buttons'=>array(
-				array('label'=>'8', 'url'=>'#'),
-			),
-		)); ?>
-	</div>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButtonGroup', array(
-	'buttons'=>array(
-		array('label'=>'1', 'url'=>'#'),
-		array('label'=>'2', 'url'=>'#'),
-		array('label'=>'3', 'url'=>'#'),
-		array('label'=>'4', 'url'=>'#'),
-	),
-)); ?>"); ?>
-
-	<h3>Dropdowns</h3>
-
-	<div class="btn-toolbar">
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'buttons'=>array(
-				array('label'=>'Action', 'items'=>array(
-					array('label'=>'Action', 'url'=>'#'),
-					array('label'=>'Another action', 'url'=>'#'),
-					array('label'=>'Something else', 'url'=>'#'),
-					'---',
-					array('label'=>'Separate link', 'url'=>'#'),
-				)),
-			),
-		)); ?>
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'type'=>'primary',
-			'buttons'=>array(
-				array('label'=>'Action', 'items'=>array(
-					array('label'=>'Action', 'url'=>'#'),
-					array('label'=>'Another action', 'url'=>'#'),
-					array('label'=>'Something else', 'url'=>'#'),
-					'---',
-					array('label'=>'Separate link', 'url'=>'#'),
-				)),
-			),
-		)); ?>
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'type'=>'danger',
-			'buttons'=>array(
-				array('label'=>'Danger', 'items'=>array(
-					array('label'=>'Action', 'url'=>'#'),
-					array('label'=>'Another action', 'url'=>'#'),
-					array('label'=>'Something else', 'url'=>'#'),
-					'---',
-					array('label'=>'Separate link', 'url'=>'#'),
-				)),
-			),
-		)); ?>
-	</div>
-	<div class="btn-toolbar">
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'type'=>'success',
-			'buttons'=>array(
-				array('label'=>'Success', 'items'=>array(
-					array('label'=>'Action', 'url'=>'#'),
-					array('label'=>'Another action', 'url'=>'#'),
-					array('label'=>'Something else', 'url'=>'#'),
-					'---',
-					array('label'=>'Separate link', 'url'=>'#'),
-				)),
-			),
-		)); ?>
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'type'=>'info',
-			'buttons'=>array(
-				array('label'=>'Info', 'items'=>array(
-					array('label'=>'Action', 'url'=>'#'),
-					array('label'=>'Another action', 'url'=>'#'),
-					array('label'=>'Something else', 'url'=>'#'),
-					'---',
-					array('label'=>'Separate link', 'url'=>'#'),
-				)),
-			),
-		)); ?>
-	</div>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<div class=\"btn-toolbar\">
-	<?php \$this->widget('bootstrap.widgets.TbButtonGroup', array(
-		'type'=>'primary', // '', 'primary', 'info', 'success', 'warning', 'danger' or 'inverse'
-		'buttons'=>array(
-			array('label'=>'Action', 'items'=>array(
-				array('label'=>'Action', 'url'=>'#'),
-				array('label'=>'Another action', 'url'=>'#'),
-				array('label'=>'Something else', 'url'=>'#'),
-				'---',
-				array('label'=>'Separate link', 'url'=>'#'),
-			)),
-		),
-	)); ?>
-</div>"); ?>
-
-	<h3>Split dropdowns</h3>
-
-	<div class="btn-toolbar">
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'buttons'=>array(
-				array('label'=>'Action', 'url'=>'#'),
-				array('items'=>array(
-					array('label'=>'Action', 'url'=>'#'),
-					array('label'=>'Another action', 'url'=>'#'),
-					array('label'=>'Something else', 'url'=>'#'),
-					'---',
-					array('label'=>'Separate link', 'url'=>'#'),
-				)),
-			),
-		)); ?>
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'type'=>'primary',
-			'buttons'=>array(
-				array('label'=>'Action', 'url'=>'#'),
-				array('items'=>array(
-					array('label'=>'Action', 'url'=>'#'),
-					array('label'=>'Another action', 'url'=>'#'),
-					array('label'=>'Something else', 'url'=>'#'),
-					'---',
-					array('label'=>'Separate link', 'url'=>'#'),
-				)),
-			),
-		)); ?>
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'type'=>'danger',
-			'buttons'=>array(
-				array('label'=>'Danger', 'url'=>'#'),
-				array('items'=>array(
-					array('label'=>'Action', 'url'=>'#'),
-					array('label'=>'Another action', 'url'=>'#'),
-					array('label'=>'Something else', 'url'=>'#'),
-					'---',
-					array('label'=>'Separate link', 'url'=>'#'),
-				)),
-			),
-		)); ?>
-	</div>
-	<div class="btn-toolbar">
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'type'=>'success',
-			'buttons'=>array(
-				array('label'=>'Success', 'url'=>'#'),
-				array('items'=>array(
-					array('label'=>'Action', 'url'=>'#'),
-					array('label'=>'Another action', 'url'=>'#'),
-					array('label'=>'Something else', 'url'=>'#'),
-					'---',
-					array('label'=>'Separate link', 'url'=>'#'),
-				)),
-			),
-		)); ?>
-		<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-			'type'=>'info',
-			'buttons'=>array(
-				array('label'=>'Info', 'url'=>'#'),
-				array('items'=>array(
-					array('label'=>'Action', 'url'=>'#'),
-					array('label'=>'Another action', 'url'=>'#'),
-					array('label'=>'Something else', 'url'=>'#'),
-					'---',
-					array('label'=>'Separate link', 'url'=>'#'),
-				)),
-			),
-		)); ?>
-	</div>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<div class=\"btn-toolbar\">
-	<?php \$this->widget('bootstrap.widgets.TbButtonGroup', array(
-	    'type'=>'primary', // '', 'primary', 'info', 'success', 'warning', 'danger' or 'inverse'
-		'buttons'=>array(
-			array('label'=>'Action', 'url'=>'#'),
-			array('items'=>array(
-				array('label'=>'Action', 'url'=>'#'),
-				array('label'=>'Another action', 'url'=>'#'),
-				array('label'=>'Something else', 'url'=>'#'),
-				'---',
-				array('label'=>'Separate link', 'url'=>'#'),
-			)),
-		),
-	)); ?>
-</div>"); ?>
-
-	<h3>Stateful</h3>
-
-	<p>
-		<?php $this->widget('bootstrap.widgets.TbButton', array(
-			'buttonType'=>'button',
-			'type'=>'primary',
-			'label'=>'Click me',
-			'loadingText'=>'loading...',
-			'htmlOptions'=>array('id'=>'buttonStateful'),
-		)); ?>
-	</p>
-
-	<?php Yii::app()->clientScript->registerScript('buttonStateful', "
-		$('#buttonStateful').click(function() {
-			var btn = $(this);
-			btn.button('loading'); // call the loading function
-			setTimeout(function() {
-				btn.button('reset'); // call the reset function
-			}, 3000);
-		});
-	"); ?>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButton', array(
-	'buttonType'=>'button',
-	'type'=>'primary',
-	'label'=>'Click me',
-	'loadingText'=>'loading...',
-	'htmlOptions'=>array('id'=>'buttonStateful'),
-)); ?>"); ?>
-
-<?php echo $jsLighter->highlight("$('#buttonStateful').click(function() {
-	var btn = $(this);
-	btn.button('loading'); // call the loading function
-	setTimeout(function() {
-		btn.button('reset'); // call the reset function
-	}, 3000);
-});"); ?>
-
-	<h3>Single state</h3>
-
-	<p>
-		<?php $this->widget('bootstrap.widgets.TbButton', array(
-			'buttonType'=>'button',
-			'type'=>'primary',
-			'label'=>'Toggle me',
-			'toggle'=>true,
-		)); ?>
-	</p>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButton', array(
-	'buttonType'=>'button',
-	'type'=>'primary',
-	'label'=>'Toggle me',
-	'toggle'=>true,
-)); ?>"); ?>
-
-	<div class="row">
-
-		<div class="span3">
-
-			<h3>Checkbox</h3>
-
-			<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-				'type' => 'primary',
-				'toggle' => 'checkbox',
-				'buttons' => array(
-					array('label'=>'Left'),
-					array('label'=>'Middle'),
-					array('label'=>'Right'),
-				),
-			)); ?>
-			<br />
-
-		</div>
-
-		<div class="span3">
-
-			<h3>Radio</h3>
-
-			<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
-				'type' => 'primary',
-				'toggle' => 'radio',
-				'buttons' => array(
-					array('label'=>'Left'),
-					array('label'=>'Middle'),
-					array('label'=>'Right'),
-				),
-			)); ?>
-			<br />
-
-		</div>
-
-	</div>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButtonGroup', array(
-	'type' => 'primary',
-	'toggle' => 'radio', // 'checkbox' or 'radio'
-	'buttons' => array(
-		array('label'=>'Left'),
-		array('label'=>'Middle'),
-		array('label'=>'Right'),
-	),
-)); ?>"); ?>
-
-	<a class="top" href="#top">Back to top &uarr;</a>
+    <a class="top" href="#top">Back to top &uarr;</a>
 
 </section>
 
 <section id="tbHero">
 
-	<h2>Hero unit</h2>
+	<h2>Hero unit <small>bootstrap.widgets.TbHeroUnit</small></h2>
 
 	<?php $this->beginWidget('bootstrap.widgets.TbHeroUnit', array(
 		'heading'=>'Hello, world!',
 
 </section>
 
+<section id="tbThumbnails">
+
+    <h2>Thumbnails <small>bootstrap.widgets.TbThumbnails</small></h2>
+
+    <?php $this->widget('bootstrap.widgets.TbThumbnails', array(
+    'dataProvider'=>$listDataProvider,
+    'template'=>"{items}\n{pager}",
+    'itemView'=>'_thumb',
+)); ?>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbThumbnails', array(
+	'dataProvider'=>\$listDataProvider,
+	'template'=>\"{items}\\n{pager}\",
+	'itemView'=>'_thumb',
+)); ?>"); ?>
+
+    <?php echo $htmlLighter->highlight("<li class=\"span3\">
+	<a href=\"#\" class=\"thumbnail\" rel=\"tooltip\" data-title=\"Tooltip\">
+		<img src=\"http://placehold.it/280x180\" alt=\"\">
+	</a>
+</li>"); ?>
+
+    <a class="top" href="#top">Back to top &uarr;</a>
+
+</section>
+
+<section id="tbAlert">
+
+    <h2>Alerts <small>bootstrap.widgets.TbAlert</small></h2>
+
+    <?php
+    Yii::app()->user->setFlash('success', '<strong>Well done!</strong> You successfully read this important alert message.');
+    Yii::app()->user->setFlash('info', '<strong>Heads up!</strong> This alert needs your attention, but it\'s not super important.');
+    Yii::app()->user->setFlash('warning', '<strong>Warning!</strong> Best check yo self, you\'re not looking too good.');
+    Yii::app()->user->setFlash('error', '<strong>Oh snap!</strong> Change a few things up and try submitting again.');
+    ?>
+
+    <?php $this->widget('bootstrap.widgets.TbAlert', array(
+    'events'=>array(
+        'close'=>"js:function() { console.log('Alert close.'); }",
+        'closed'=>"js:function() { console.log('Alert closed.'); }",
+    ),
+)); ?>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("Yii::app()->user->setFlash('success', '<strong>Well done!</strong> You successfully read this important alert message.');
+Yii::app()->user->setFlash('info', '<strong>Heads up!</strong> This alert needs your attention, but it\'s not super important.');
+Yii::app()->user->setFlash('warning', '<strong>Warning!</strong> Best check yo self, you\'re not looking too good.');
+Yii::app()->user->setFlash('error', '<strong>Oh snap!</strong> Change a few things up and try submitting again.');"); ?>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbAlert'); ?>"); ?>
+
+    <a class="top" href="#top">Back to top &uarr;</a>
+
+</section>
+
+<section id="tbProgress">
+
+    <h2>Progress bars <small>bootstrap.widgets.TbProgress</small></h2>
+
+    <div class="row">
+
+        <div class="span4">
+
+            <h3>Basic</h3>
+
+            <?php $this->widget('bootstrap.widgets.TbProgress', array(
+            'percent'=>30,
+        )); ?>
+
+        </div>
+
+        <div class="span4">
+
+            <h3>Striped</h3>
+
+            <?php $this->widget('bootstrap.widgets.TbProgress', array(
+            'type'=>'info',
+            'percent'=>20,
+            'striped'=>true,
+        )); ?>
+
+        </div>
+
+        <div class="span4">
+
+            <h3>Animated</h3>
+
+            <?php $this->widget('bootstrap.widgets.TbProgress', array(
+            'type'=>'danger', // '', 'info', 'success' or 'danger'
+            'percent'=>40, // the progress
+            'striped'=>true,
+            'animated'=>true,
+        )); ?>
+
+        </div>
+
+    </div>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbProgress', array(
+	'type'=>'danger', // '', 'info', 'success' or 'danger'
+	'percent'=>40, // the progress
+	'striped'=>true,
+	'animated'=>true,
+)); ?>"); ?>
+
+    <a class="top" href="#top">Back to top &uarr;</a>
+
+</section>
+
+<section id="tbLabel">
+
+    <h2>Labels <small>bootstrap.widgets.TbLabel</small></h2>
+
+    <p>
+        <?php $this->widget('bootstrap.widgets.TbLabel', array('label'=>'Default')); ?>
+        <?php $this->widget('bootstrap.widgets.TbLabel', array('type'=>'success', 'label'=>'Success')); ?>
+        <?php $this->widget('bootstrap.widgets.TbLabel', array('type'=>'warning', 'label'=>'Warning')); ?>
+        <?php $this->widget('bootstrap.widgets.TbLabel', array('type'=>'important', 'label'=>'Important')); ?>
+        <?php $this->widget('bootstrap.widgets.TbLabel', array('type'=>'info', 'label'=>'Info')); ?>
+        <?php $this->widget('bootstrap.widgets.TbLabel', array('type'=>'inverse', 'label'=>'Inverse')); ?>
+    </p>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbLabel', array(
+	'type'=>'success', // '', 'success', 'warning', 'important', 'info' or 'inverse'
+	'label'=>'Success',
+)); ?>"); ?>
+
+    <a class="top" href="#top">Back to top &uarr;</a>
+
+</section>
+
+<section id="tbBadge">
+
+    <h2>Badges <small>bootstrap.widgets.TbBadge</small></h2>
+
+    <p>
+        <?php $this->widget('bootstrap.widgets.TbBadge', array('label'=>'1')); ?>
+        <?php $this->widget('bootstrap.widgets.TbBadge', array('type'=>'success', 'label'=>'2')); ?>
+        <?php $this->widget('bootstrap.widgets.TbBadge', array('type'=>'warning', 'label'=>'4')); ?>
+        <?php $this->widget('bootstrap.widgets.TbBadge', array('type'=>'important', 'label'=>'6')); ?>
+        <?php $this->widget('bootstrap.widgets.TbBadge', array('type'=>'info', 'label'=>'8')); ?>
+        <?php $this->widget('bootstrap.widgets.TbBadge', array('type'=>'inverse', 'label'=>'10')); ?>
+    </p>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbBadge', array(
+	'type'=>'success', // '', 'success', 'warning', 'important', 'info' or 'inverse'
+	'label'=>'2',
+)); ?>"); ?>
+
+    <a class="top" href="#top">Back to top &uarr;</a>
+
+</section>
+
 <section id="tbCarousel">
 
-	<h2>Carousel</h2>
+    <h2>Carousel <small>bootstrap.widgets.TbCarousel</small></h2>
 
     <div class="row">
 
         <div class="span8">
 
             <?php $this->widget('bootstrap.widgets.TbCarousel', array(
-                'items'=>array(
-                    array('image'=>'http://placehold.it/770x400&text=First+thumbnail', 'label'=>'First Thumbnail label', 'caption'=>'Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.'),
-                    array('image'=>'http://placehold.it/770x400&text=Second+thumbnail', 'label'=>'Second Thumbnail label', 'caption'=>'Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.'),
-                    array('image'=>'http://placehold.it/770x400&text=Third+thumbnail', 'label'=>'Third Thumbnail label', 'caption'=>'Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.'),
-                ),
-                'events'=>array(
-                    'slide'=>"js:function() { console.log('Carousel slide.'); }",
-                    'slid'=>"js:function() { console.log('Carousel slid.'); }",
-                ),
-            )); ?>
+            'items'=>array(
+                array('image'=>'http://placehold.it/770x400&text=First+thumbnail', 'label'=>'First Thumbnail label', 'caption'=>'Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.'),
+                array('image'=>'http://placehold.it/770x400&text=Second+thumbnail', 'label'=>'Second Thumbnail label', 'caption'=>'Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.'),
+                array('image'=>'http://placehold.it/770x400&text=Third+thumbnail', 'label'=>'Third Thumbnail label', 'caption'=>'Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.'),
+            ),
+            'events'=>array(
+                'slide'=>"js:function() { console.log('Carousel slide.'); }",
+                'slid'=>"js:function() { console.log('Carousel slid.'); }",
+            ),
+        )); ?>
 
         </div>
 
     </div>
 
-	<h4>Source code</h4>
+    <h4>Source code</h4>
 
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbCarousel', array(
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbCarousel', array(
 	'items'=>array(
 		array('image'=>'http://placehold.it/770x400&text=First+thumbnail', 'label'=>'First Thumbnail label', 'caption'=>'Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.'),
 		array('image'=>'http://placehold.it/770x400&text=Second+thumbnail', 'label'=>'Second Thumbnail label', 'caption'=>'Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.'),
 	),
 )); ?>"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+    <a class="top" href="#top">Back to top &uarr;</a>
 
 </section>
 
-<section id="tbProgress">
+<section id="tbModal">
 
-	<h2>Progress bars</h2>
+    <h2>Modals <small>bootstrap.widgets.TbModal</small></h2>
 
-	<div class="row">
+    <?php $this->beginWidget('bootstrap.widgets.TbModal', array(
+    'id'=>'myModal',
+    'events'=>array(
+        'show'=>"js:function() { console.log('Modal show.'); }",
+        'shown'=>"js:function() { console.log('Modal shown.'); }",
+        'hide'=>"js:function() { console.log('Modal hide.'); }",
+        'hidden'=>"js:function() { console.log('Modal hidden.'); }",
+    ),
+)); ?>
 
-		<div class="span4">
+    <div class="modal-header">
+        <a class="close" data-dismiss="modal">&times;</a>
+        <h3>Modal header</h3>
+    </div>
 
-			<h3>Basic</h3>
+    <div class="modal-body">
+        <p>One fine body...</p>
+    </div>
 
-			<?php $this->widget('bootstrap.widgets.TbProgress', array(
-				'percent'=>30,
-			)); ?>
+    <div class="modal-footer">
+        <?php $this->widget('bootstrap.widgets.TbButton', array('type'=>'primary', 'label'=>'Save changes', 'url'=>'#', 'htmlOptions'=>array('data-dismiss'=>'modal'))); ?>
+        <?php $this->widget('bootstrap.widgets.TbButton', array('label'=>'Close', 'url'=>'#', 'htmlOptions'=>array('data-dismiss'=>'modal'))); ?>
+    </div>
 
-		</div>
+    <?php $this->endWidget(); ?>
 
-		<div class="span4">
+    <div class="well">
+        <?php $this->widget('bootstrap.widgets.TbButton', array(
+        'label'=>'Click me',
+        'url'=>'#myModal',
+        'type'=>'primary',
+        'htmlOptions'=>array('data-toggle'=>'modal'),
+    )); ?>
+    </div>
 
-			<h3>Striped</h3>
+    <h4>Source code</h4>
 
-			<?php $this->widget('bootstrap.widgets.TbProgress', array(
-				'type'=>'info',
-				'percent'=>20,
-				'striped'=>true,
-			)); ?>
+    <?php echo $phpLighter->highlight("<?php \$this->beginWidget('bootstrap.widgets.TbModal', array('id'=>'myModal')); ?>
 
-		</div>
+<div class=\"modal-header\">
+	<a class=\"close\" data-dismiss=\"modal\">&times;</a>
+	<h3>Modal header</h3>
+</div>
 
-		<div class="span4">
+<div class=\"modal-body\">
+	<p>One fine body...</p>
+</div>
 
-			<h3>Animated</h3>
+<div class=\"modal-footer\">
+	<?php \$this->widget('bootstrap.widgets.TbButton', array(
+		'type'=>'primary',
+		'label'=>'Save changes',
+		'url'=>'#',
+		'htmlOptions'=>array('data-dismiss'=>'modal'),
+	)); ?>
+	<?php \$this->widget('bootstrap.widgets.TbButton', array(
+		'label'=>'Close',
+		'url'=>'#',
+		'htmlOptions'=>array('data-dismiss'=>'modal'),
+	)); ?>
+</div>
 
-			<?php $this->widget('bootstrap.widgets.TbProgress', array(
-				'type'=>'danger', // '', 'info', 'success' or 'danger'
-				'percent'=>40, // the progress
-				'striped'=>true,
-				'animated'=>true,
-			)); ?>
+<?php \$this->endWidget(); ?>"); ?>
 
-		</div>
-
-	</div>
-
-	<h4>Source code</h4>
-
-<?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbProgress', array(
-	'type'=>'danger', // '', 'info', 'success' or 'danger'
-	'percent'=>40, // the progress
-	'striped'=>true,
-	'animated'=>true,
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButton', array(
+	'label'=>'Click me',
+	'url'=>'#myModal',
+	'type'=>'primary',
+	'htmlOptions'=>array('data-toggle'=>'modal'),
 )); ?>"); ?>
 
-	<a class="top" href="#top">Back to top &uarr;</a>
+    <a class="top" href="#top">Back to top &uarr;</a>
+
+</section>
+
+<section id="tbPopover">
+
+    <h2>Popovers <small>bootstrap.widgets.TbPopover</small></h2>
+
+    <div class="well">
+        <?php $this->widget('bootstrap.widgets.TbButton', array(
+        'label'=>'Hover me',
+        'type'=>'danger',
+        'htmlOptions'=>array('data-title'=>'Heading', 'data-content'=>'Content ...', 'rel'=>'popover'),
+    )); ?>
+    </div>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbButton', array(
+	'label'=>'Hover me',
+	'type'=>'danger',
+	'htmlOptions'=>array('data-title'=>'Heading', 'data-content'=>'Content ...', 'rel'=>'popover'),
+)); ?>"); ?>
+
+    <a class="top" href="#top">Back to top &uarr;</a>
+
+</section>
+
+<section id="tbTabbable">
+
+    <h2>Tabbable <small>bootstrap.widgets.TbTabbable</small></h2>
+
+    <?php $this->widget('bootstrap.widgets.TbTabbable', array(
+    'type'=>'tabs', // 'tabs' or 'pills'
+    'htmlOptions'=>array('class'=>'tabbable'),
+    'tabs'=>$tabs,
+    'events'=>array(
+        'show'=>"js:function() { console.log('Tabbable show.'); }",
+        'shown'=>"js:function() { console.log('Tabbable shown.'); }",
+    ),
+)); ?>
+
+    <h4>Source code</h4>
+
+    <?php echo $phpLighter->highlight("<?php \$this->widget('bootstrap.widgets.TbTabbable', array(
+	'type'=>'tabs', // 'tabs' or 'pills'
+	'tabs'=>array(
+		array('label'=>'Home', 'content'=>'Raw denim you probably haven\'t heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.', 'active'=>true),
+		array('label'=>'Profile', 'content'=>'Food truck fixie locavore, accusamus mcsweeney\'s marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.'),
+		array('label'=>'Dropdown', 'items'=>array(
+			array('label'=>'@fat', 'content'=>'Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney\'s organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven\'t heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.'),
+			array('label'=>'@mdo', 'content'=>'Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.'),
+		)),
+	),
+)); ?>"); ?>
+
+    <div class="alert alert-block alert-warning">
+        <strong>Note!</strong>
+        Because of a bug in the current version of Bootstrap tab-content fall below the tabs even when it shouldn't. This can be fixed by setting tab-content width to auto.
+    </div>
+
+    <div class="row">
+
+        <div class="span6">