diff --git a/framework/yii/bootstrap/NavBar.php b/framework/yii/bootstrap/NavBar.php
new file mode 100644
index 0000000..1ed5a9a
--- /dev/null
+++ b/framework/yii/bootstrap/NavBar.php
@@ -0,0 +1,169 @@
+ array(
+ * // a Nav widget
+ * array(
+ * // defaults to Nav anyway.
+ * 'class' => 'yii\bootstrap\Nav',
+ * // widget configuration
+ * 'options' => array(
+ * 'items' => array(
+ * array(
+ * 'label' => 'Home',
+ * 'url' => '/',
+ * 'options' => array('class' => 'active'),
+ * ),
+ * array(
+ * 'label' => 'Dropdown',
+ * // configure a dropdown menu
+ * 'dropdown' => array(
+ * array(
+ * 'label' => 'DropdownA',
+ * 'url' => '#',
+ * ),
+ * array(
+ * 'label' => 'DropdownB',
+ * 'url' => '#'
+ * ),
+ * )
+ * ),
+ * )
+ * ),
+ * ),
+ * // you can also use strings
+ * '
',
+ * ),
+ * ));
+ * ```
+ *
+ * @see http://twitter.github.io/bootstrap/components.html#navbar
+ * @author Antonio Ramirez
+ * @since 2.0
+ */
+class NavBar extends Widget
+{
+ public $brand;
+ /**
+ * @var array list of menu items in the navbar widget. Each array element represents a single
+ * menu item with the following structure:
+ *
+ * ```php
+ * array(
+ * // optional, the menu item class type of the widget to render. Defaults to "Nav" widget.
+ * 'class' => 'Menu item class type',
+ * // required, the configuration options of the widget.
+ * 'options'=> array(...),
+ * ),
+ * // optionally, you can pass a string
+ * '',
+ * ```
+ *
+ * Optionally, you can also use a plain string instead of an array element.
+ */
+ public $items = array();
+
+
+ /**
+ * Initializes the widget.
+ */
+ public function init()
+ {
+ parent::init();
+ $this->addCssClass($this->options, 'navbar');
+ }
+
+ /**
+ * Renders the widget.
+ */
+ public function run()
+ {
+ echo Html::beginTag('div', $this->options);
+ echo $this->renderItems();
+ echo Html::endTag('div');
+ }
+
+ /**
+ * @return string the rendering items.
+ */
+ protected function renderItems()
+ {
+ $items = array();
+
+ foreach ($this->items as $item) {
+ $items[] = $this->renderItem($item);
+ }
+ $contents =implode("\n", $items);
+ if (self::$responsive === true) {
+ $this->getView()->registerAssetBundle('yii/bootstrap/collapse');
+ $contents =
+ Html::tag('div',
+ $this->renderToggleButton() .
+ $this->brand . "\n" .
+ Html::tag('div', $contents, array('class' => 'nav-collapse collapse navbar-collapse')),
+ array('class' => 'container'));
+
+ } else {
+ $contents = $this->brand . "\n" . $contents;
+ }
+ return Html::tag('div', $contents, array('class' => 'navbar-inner'));
+ }
+
+ /**
+ * Renders a item. The item can be a string, a custom class or a Nav widget (defaults if no class specified.
+ * @param mixed $item the item to render. If array, it is assumed the configuration of a widget being `class`
+ * required and if not specified, then defaults to `yii\bootstrap\Nav`.
+ * @return string the rendering result.
+ * @throws InvalidConfigException
+ */
+ protected function renderItem($item)
+ {
+ if (is_string($item)) {
+ return $item;
+ }
+ $config = ArrayHelper::getValue($item, 'options', array());
+ $config['class'] = ArrayHelper::getValue($item, 'class', 'yii\bootstrap\Nav');
+ $widget = \Yii::createObject($config);
+ ob_start();
+ $widget->run();
+ return ob_get_clean();
+ }
+
+ /**
+ * Renders collapsible toggle button.
+ * @return string the rendering toggle button.
+ */
+ protected function renderToggleButton()
+ {
+ $items = array();
+ for ($i = 0; $i < 3; $i++) {
+ $items[] = Html::tag('span', '', array('class' => 'icon-bar'));
+ }
+ return Html::tag('a', implode("\n", $items), array(
+ 'class' => 'btn btn-navbar',
+ 'data-toggle' => 'collapse',
+ 'data-target' => 'div.navbar-collapse',
+ )) . "\n";
+ }
+}
\ No newline at end of file