http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/components/page-signin/template.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-signin/template.pug 
b/modules/web-console/frontend/app/components/page-signin/template.pug
new file mode 100644
index 0000000..ae9a0ca
--- /dev/null
+++ b/modules/web-console/frontend/app/components/page-signin/template.pug
@@ -0,0 +1,161 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+web-console-header
+    web-console-header-left
+        ignite-header-title
+
+section
+    .container
+        .row
+            .col-lg-6.col-md-6.col-sm-6.col-xs-12
+                .row
+                    .col-xs-12.col-md-11
+                        -var form = 'form'
+                        form(name='form' novalidate)
+                            .settings-row
+                                h3 Don't Have An Account?
+                            .settings-row
+                                +form-field__email({
+                                    label: 'Email:',
+                                    model: 'ui_signup.email',
+                                    name: '"signupEmail"',
+                                    placeholder: 'Input email',
+                                    required: true
+                                })(
+                                    ignite-on-enter-focus-move='passwordInput'
+                                )
+                            .settings-row
+                                +form-field__password({
+                                    label: 'Password:',
+                                    model: 'ui_signup.password',
+                                    name: '"password"',
+                                    placeholder: 'Input password',
+                                    required: true
+                                })(
+                                    ignite-on-enter-focus-move='confirmInput'
+                                )
+                            .settings-row
+                                +form-field__password({
+                                    label: 'Confirm:',
+                                    model: 'ui_exclude.confirm',
+                                    name: '"confirm"',
+                                    placeholder: 'Confirm password',
+                                    required: true
+                                })(
+                                    ignite-on-enter-focus-move='firstNameInput'
+                                    ignite-match='ui_signup.password'
+                                )
+                            .settings-row
+                                +form-field__text({
+                                    label: 'First name:',
+                                    model: 'ui_signup.firstName',
+                                    name: '"firstName"',
+                                    placeholder: 'Input first name',
+                                    required: true
+                                })(
+                                    ignite-on-enter-focus-move='lastNameInput'
+                                )
+                            .settings-row
+                                +form-field__text({
+                                    label: 'Last name:',
+                                    model: 'ui_signup.lastName',
+                                    name: '"lastName"',
+                                    placeholder: 'Input last name',
+                                    required: true
+                                })(
+                                    ignite-on-enter-focus-move='companyInput'
+                                )
+                            .settings-row
+                                +form-field__text({
+                                    label: 'Company:',
+                                    model: 'ui_signup.company',
+                                    name: '"company"',
+                                    placeholder: 'Input company name',
+                                    required: true
+                                })(
+                                    ignite-on-enter-focus-move='countryInput'
+                                )
+                            .settings-row
+                                +form-field__dropdown({
+                                    label: 'Country:',
+                                    model: 'ui_signup.country',
+                                    name: '"country"',
+                                    required: true,
+                                    placeholder: 'Choose your country',
+                                    options: '$ctrl.countries'
+                                })(
+                                    ignite-on-enter-focus-move='signup_submit'
+                                )
+                            .login-footer
+                                
button#signup_submit.btn-ignite.btn-ignite--primary(ng-click='$ctrl.auth("signup",
 ui_signup)' ng-disabled='form.$invalid') Sign Up
+
+            .col-lg-6.col-md-6.col-sm-6.col-xs-12(ng-init='$ctrl.action = 
"signin"')
+                .row
+                    .col-xs-12.col-md-11
+                        -var form = 'form_signin'
+                        form.row(ng-show='$ctrl.action == "signin"' 
name='form_signin' novalidate)
+                            .settings-row
+                                h3 Sign In
+                            .settings-row
+                                +form-field__email({
+                                    label: 'Email:',
+                                    model: 'ui.email',
+                                    name: '"signinEmail"',
+                                    placeholder: 'Input email',
+                                    required: true
+                                })(
+                                    ignite-auto-focus
+                                    
ignite-on-enter-focus-move='singinPasswordInput'
+                                )
+                            .settings-row
+                                +form-field__password({
+                                    label: 'Password:',
+                                    model: 'ui.password',
+                                    name: '"signinPassword"',
+                                    placeholder: 'Input password',
+                                    required: true
+                                })(
+                                    ignite-on-enter='form_signin.$valid && 
$ctrl.auth($ctrl.action, ui)'
+                                )
+                            .login-footer
+                                
a.labelField#forgot_show(ng-click='$ctrl.action = "password/forgot"' 
ignite-on-click-focus='forgot_email') Forgot password?
+                                
button#signin_submit.btn-ignite.btn-ignite--primary(ng-click='$ctrl.auth("signin",
 ui)' ng-disabled='form_signin.$invalid') Sign In
+
+                        - var form = 'form_forgot'
+                        form.row(ng-show='$ctrl.action == "password/forgot"' 
name='form_forgot' novalidate)
+                            .settings-row
+                                h3 Forgot password?
+                            .settings-row
+                                p.col-xs-12.col-md-11 That's ok! Simply enter 
your email below and a reset password link will be sent to you via email. You 
can then follow that link and select a new password.
+                            .settings-row
+                                +form-field__email({
+                                    label: 'Email:',
+                                    model: 'ui.email',
+                                    name: '"forgotEmail"',
+                                    placeholder: 'Input email',
+                                    required: true
+                                })(
+                                    ignite-auto-focus
+                                    ignite-on-enter='form_forgot.$valid && 
$ctrl.forgotPassword(ui)'
+                                )
+                            .login-footer
+                                
a.labelField#forgot_signin(ng-click='$ctrl.action = "signin"' 
ignite-on-click-focus='signin_email') Sign In
+                                
button#forgot_submit.btn-ignite.btn-ignite--primary(ng-click='$ctrl.forgotPassword(ui)'
 ng-disabled='form_forgot.$invalid') Send it to me
+
+web-console-footer

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/components/web-console-header/style.scss
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/web-console-header/style.scss 
b/modules/web-console/frontend/app/components/web-console-header/style.scss
index db49c3e..71766c9 100644
--- a/modules/web-console/frontend/app/components/web-console-header/style.scss
+++ b/modules/web-console/frontend/app/components/web-console-header/style.scss
@@ -22,6 +22,7 @@ web-console-header {
     $bottom-border-width: 4px;
 
     display: block;
+    min-height: 85px;
     font-family: Roboto;
     font-size: 16px;
     border-bottom: $bottom-border-width solid red;

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/components/web-console-header/template.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/web-console-header/template.pug 
b/modules/web-console/frontend/app/components/web-console-header/template.pug
index a5adbb1..a05e5f8 100644
--- 
a/modules/web-console/frontend/app/components/web-console-header/template.pug
+++ 
b/modules/web-console/frontend/app/components/web-console-header/template.pug
@@ -26,7 +26,7 @@
 .wch-content.container
     connected-clusters(ng-if='$ctrl.$rootScope.user && 
!$ctrl.$rootScope.IgniteDemoMode && $ctrl.isConnectedClustersVisible && 
!$root.user.becomeUsed')
 
-    a(ui-sref='signin')
+    a(ui-sref='landing')
         img.wch-logo(ng-src='{{::$ctrl.branding.headerLogo}}')
 
     .wch-slot.wch-slot-left(ng-transclude='slotLeft')

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/controllers/auth.controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/controllers/auth.controller.js 
b/modules/web-console/frontend/app/controllers/auth.controller.js
deleted file mode 100644
index caa74dc..0000000
--- a/modules/web-console/frontend/app/controllers/auth.controller.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Sign in controller.
-export default [
-    '$scope', '$uiRouterGlobals', 'IgniteFocus', 'IgniteCountries', 'Auth',
-    ($scope, $uiRouterGlobals, Focus, Countries, Auth) => {
-        $scope.auth = Auth.auth;
-        $scope.forgotPassword = Auth.forgotPassword;
-        $scope.action = 'signin';
-        $scope.countries = Countries.getAll();
-
-        Focus.move('user_email');
-    }
-];

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/data/countries.json
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/data/countries.json 
b/modules/web-console/frontend/app/data/countries.json
index 18dbe64..b340f02 100644
--- a/modules/web-console/frontend/app/data/countries.json
+++ b/modules/web-console/frontend/app/data/countries.json
@@ -1,98 +1,122 @@
 [
   {
-    "name": "United States",
+    "label": "United States",
+    "value": "United States",
     "code": "USA"
   },
   {
-    "name": "Canada",
+    "label": "Canada",
+    "value": "Canada",
     "code": "CAN"
   },
   {
-    "name": "United Kingdom",
+    "label": "United Kingdom",
+    "value": "United Kingdom",
     "code": "GBR"
   },
   {
-    "name": "Germany",
+    "label": "Germany",
+    "value": "Germany",
     "code": "DEU"
   },
   {
-    "name": "France",
+    "label": "France",
+    "value": "France",
     "code": "FRA"
   },
   {
-    "name": "Belgium",
+    "label": "Belgium",
+    "value": "Belgium",
     "code": "BEL"
   },
   {
-    "name": "Switzerland",
+    "label": "Switzerland",
+    "value": "Switzerland",
     "code": "CHE"
   },
   {
-    "name": "Netherlands",
+    "label": "Netherlands",
+    "value": "Netherlands",
     "code": "NLD"
   },
   {
-    "name": "Israel",
+    "label": "Israel",
+    "value": "Israel",
     "code": "ISR"
   },
   {
-    "name": "Sweden",
+    "label": "Sweden",
+    "value": "Sweden",
     "code": "SWE"
   },
   {
-    "name": "Russia",
+    "label": "Russia",
+    "value": "Russia",
     "code": "RUS"
   },
   {
-    "name": "Other Europe",
+    "label": "Other Europe",
+    "value": "Other Europe",
     "code": "Other Europe"
   },
   {
-    "name": "China",
+    "label": "China",
+    "value": "China",
     "code": "CHN"
   },
   {
-    "name": "India",
+    "label": "India",
+    "value": "India",
     "code": "IND"
   },
   {
-    "name": "Japan",
+    "label": "Japan",
+    "value": "Japan",
     "code": "JPN"
   },
   {
-    "name": "Other Asia",
+    "label": "Other Asia",
+    "value": "Other Asia",
     "code": "Other Asia"
   },
   {
-    "name": "Australia",
+    "label": "Australia",
+    "value": "Australia",
     "code": "AUS"
   },
   {
-    "name": "Brazil",
+    "label": "Brazil",
+    "value": "Brazil",
     "code": "BRA"
   },
   {
-    "name": "Argentina",
+    "label": "Argentina",
+    "value": "Argentina",
     "code": "ARG"
   },
   {
-    "name": "Other South America",
+    "label": "Other South America",
+    "value": "Other South America",
     "code": "Other South America"
   },
   {
-    "name": "South Africa",
+    "label": "South Africa",
+    "value": "South Africa",
     "code": "ZAF"
   },
   {
-    "name": "Nigeria",
+    "label": "Nigeria",
+    "value": "Nigeria",
     "code": "NGA"
   },
   {
-    "name": "Other Africa",
+    "label": "Other Africa",
+    "value": "Other Africa",
     "code": "Other Africa"
   },
   {
-    "name": "Rest of the World",
+    "label": "Rest of the World",
+    "value": "Rest of the World",
     "code": "Rest of the World"
   }
 ]

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/helpers/jade/mixins.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/helpers/jade/mixins.pug 
b/modules/web-console/frontend/app/helpers/jade/mixins.pug
index 7eb4d89..1d3b161 100644
--- a/modules/web-console/frontend/app/helpers/jade/mixins.pug
+++ b/modules/web-console/frontend/app/helpers/jade/mixins.pug
@@ -22,6 +22,7 @@ include ../../primitives/dropdown/index
 include ../../primitives/tooltip/index
 include ../../primitives/radio/index
 include ../../primitives/switcher/index
+include ../../primitives/form-field/index
 
 //- Mixin for advanced options toggle.
 mixin advanced-options-toggle(click, cond, showMessage, hideMessage)

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/modules/states/configuration.state.js
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration.state.js 
b/modules/web-console/frontend/app/modules/states/configuration.state.js
index 8d05a45..0ce936c 100644
--- a/modules/web-console/frontend/app/modules/states/configuration.state.js
+++ b/modules/web-console/frontend/app/modules/states/configuration.state.js
@@ -71,6 +71,7 @@ angular.module('ignite-console.states.configuration', 
['ui.router'])
 
                     return PageConfigure.onStateEnterRedirect(trans.to());
                 },
+                failState: 'signin',
                 tfMetaTags: {
                     title: 'Configuration'
                 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/modules/states/password.state.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/password.state.js 
b/modules/web-console/frontend/app/modules/states/password.state.js
deleted file mode 100644
index 60d82b4..0000000
--- a/modules/web-console/frontend/app/modules/states/password.state.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import angular from 'angular';
-
-import templateUrl from 'views/reset.tpl.pug';
-
-angular
-.module('ignite-console.states.password', [
-    'ui.router'
-])
-.config(['$stateProvider', function($stateProvider) {
-    // set up the states
-    $stateProvider
-    .state('password', {
-        url: '/password',
-        abstract: true,
-        template: '<ui-view></ui-view>'
-    })
-    .state('password.reset', {
-        url: '/reset?{token}',
-        templateUrl,
-        unsaved: true,
-        tfMetaTags: {
-            title: 'Reset password'
-        }
-    })
-    .state('password.send', {
-        url: '/send',
-        templateUrl,
-        unsaved: true,
-        tfMetaTags: {
-            title: 'Password Send'
-        }
-    });
-}]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/modules/states/signin.state.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/signin.state.js 
b/modules/web-console/frontend/app/modules/states/signin.state.js
deleted file mode 100644
index 8afcaa3..0000000
--- a/modules/web-console/frontend/app/modules/states/signin.state.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import angular from 'angular';
-import templateUrl from 'views/signin.tpl.pug';
-import controller from 'app/controllers/auth.controller';
-
-angular
-.module('ignite-console.states.login', [
-    'ui.router',
-    // services
-    'ignite-console.user'
-])
-.config(['$stateProvider', function($stateProvider) {
-    // set up the states
-    $stateProvider
-    .state('signin', {
-        url: '/',
-        templateUrl,
-        redirectTo: (trans) => {
-            return trans.injector().get('User').read()
-                .then(() => {
-                    try {
-                        const {name, params} = 
JSON.parse(localStorage.getItem('lastStateChangeSuccess'));
-
-                        const restored = 
trans.router.stateService.target(name, params);
-
-                        return restored.valid() ? restored : 
'base.configuration.tabs';
-                    } catch (ignored) {
-                        return 'base.configuration.tabs';
-                    }
-                })
-                .catch(() => true);
-        },
-        controller,
-        controllerAs: '$ctrl',
-        unsaved: true
-    });
-}]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/modules/user/Auth.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/user/Auth.service.js 
b/modules/web-console/frontend/app/modules/user/Auth.service.js
index 10fad5e..88c844a 100644
--- a/modules/web-console/frontend/app/modules/user/Auth.service.js
+++ b/modules/web-console/frontend/app/modules/user/Auth.service.js
@@ -21,7 +21,7 @@ export default ['Auth', ['$http', '$rootScope', '$state', 
'$window', 'IgniteErro
             forgotPassword(userInfo) {
                 $http.post('/api/v1/password/forgot', userInfo)
                     .then(() => $state.go('password.send'))
-                    .catch(({data}) => ErrorPopover.show('forgot_email', 
Messages.errorMessage(null, data)));
+                    .catch(({data}) => ErrorPopover.show('forgotEmailInput', 
Messages.errorMessage(null, data)));
             },
             auth(action, userInfo) {
                 $http.post('/api/v1/' + action, userInfo)
@@ -33,12 +33,12 @@ export default ['Auth', ['$http', '$rootScope', '$state', 
'$window', 'IgniteErro
                             .then((user) => {
                                 $root.$broadcast('user', user);
 
-                                $state.go('base.configuration.tabs');
+                                $state.go('default-state');
 
                                 $root.gettingStarted.tryShow();
                             });
                     })
-                    .catch((res) => ErrorPopover.show(action + '_email', 
Messages.errorMessage(null, res)));
+                    .catch((res) => ErrorPopover.show(action + 'EmailInput', 
Messages.errorMessage(null, res)));
             },
             logout() {
                 $http.post('/api/v1/logout')

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/checkbox.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/primitives/form-field/checkbox.pug 
b/modules/web-console/frontend/app/primitives/form-field/checkbox.pug
new file mode 100644
index 0000000..09596d4
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/form-field/checkbox.pug
@@ -0,0 +1,30 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+mixin form-field__checkbox({ label, model, name, disabled, required, tip })
+    .form-field.form-field__checkbox
+        +form-field__label({ label, name, required })
+            +form-field__tooltip({ title: tip, options: tipOpts })
+
+        .form-field__control
+            - attributes.type='checkbox'
+            +form-field__input({ name, model, disabled, required, placeholder 
})(attributes=attributes)
+
+        .form-field__errors(
+            ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched 
|| ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? 
${form}[${name}].$error : {}`
+        )
+            if block
+                block

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/dropdown.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/primitives/form-field/dropdown.pug 
b/modules/web-console/frontend/app/primitives/form-field/dropdown.pug
new file mode 100644
index 0000000..cb05829
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/form-field/dropdown.pug
@@ -0,0 +1,51 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+mixin form-field__dropdown({ label, model, name, disabled, required, multiple, 
placeholder, placeholderEmpty, options, tip })
+    mixin __form-field__input()
+        button.select-toggle(
+            id=`{{ ${name} }}Input`
+            name=`{{ ${name} }}`
+
+            data-placeholder=placeholderEmpty ? `{{ ${options}.length > 0 ? 
'${placeholder}' : '${placeholderEmpty}' }}` : placeholder
+            
+            ng-model=model
+            ng-disabled=disabled && `${disabled}`
+            ng-required=required && `${required}`
+
+            bs-select
+            bs-options=`item.value as item.label for item in ${options}`
+
+            data-multiple=multiple ? '1' : false
+
+            tabindex='0'
+        )&attributes(attributes.attributes)
+
+    .form-field(id=`{{ ${name} }}Field`)
+        +form-field__label({ label, name, required })
+            +form-field__tooltip({ title: tip, options: tipOpts })
+
+        .form-field__control
+            +__form-field__input(attributes=attributes)
+
+        .form-field__errors(
+            ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched 
|| ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? 
${form}[${name}].$error : {}`
+        )
+            if block
+                block
+
+            if required
+                +form-field__error({ name, error: 'required', message: 
`${errLbl} could not be empty!` })

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/email.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/form-field/email.pug 
b/modules/web-console/frontend/app/primitives/form-field/email.pug
new file mode 100644
index 0000000..5fccdb2
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/form-field/email.pug
@@ -0,0 +1,37 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+mixin form-field__email({ label, model, name, disabled, required, placeholder, 
tip })
+    -var errLbl = label.substring(0, label.length - 1)
+
+    .form-field
+        +form-field__label({ label, name, required, disabled })
+            +form-field__tooltip({ title: tip, options: tipOpts })
+
+        .form-field__control
+            - attributes.type='email'
+            +form-field__input({ name, model, disabled, required, placeholder 
})(attributes=attributes)
+
+        .form-field__errors(
+            ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched 
|| ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? 
${form}[${name}].$error : {}`
+        )
+            if block
+                block
+
+            if required
+                +form-field__error({ name, error: 'required', message: 
`${errLbl} could not be empty!` })
+
+            +form-field__error({ name, error: 'email', message: `${errLbl} has 
invalid format!` })

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/error.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/form-field/error.pug 
b/modules/web-console/frontend/app/primitives/form-field/error.pug
new file mode 100644
index 0000000..34b03c2
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/form-field/error.pug
@@ -0,0 +1,29 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+mixin form-field__error({ error, message })
+    .form-field__error(ng-message=error)
+        div(
+            bs-tooltip=''
+            data-title=message
+            data-placement='top'
+            data-template=`
+                <div class="tooltip tooltip--error in" ng-show="title">
+                    <div class="tooltip-arrow"></div>
+                    <div class="tooltip-inner" ng-bind-html="title"></div>
+                </div>`
+        )
+        svg(ignite-icon='exclamation')

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/index.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/form-field/index.pug 
b/modules/web-console/frontend/app/primitives/form-field/index.pug
new file mode 100644
index 0000000..9b67d6c
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/form-field/index.pug
@@ -0,0 +1,27 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include ./error
+include ./label
+include ./tooltip
+include ./input
+include ./text
+include ./number
+include ./email
+include ./password
+include ./phone
+include ./dropdown
+include ./checkbox

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/index.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/form-field/index.scss 
b/modules/web-console/frontend/app/primitives/form-field/index.scss
index 01dd941..e6c0a58 100644
--- a/modules/web-console/frontend/app/primitives/form-field/index.scss
+++ b/modules/web-console/frontend/app/primitives/form-field/index.scss
@@ -1,4 +1,3 @@
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -89,3 +88,151 @@
        }
     }
 }
+
+.form-field {
+    position: relative;
+    width: 100%;
+    font-family: Roboto;
+
+    &__label {
+        display: flex;
+        margin: 0 0 4px;
+
+        color: #424242;
+        font-size: 14px;
+        line-height: 1.25;
+
+        .icon-help {
+            line-height: 14px;
+        }
+
+        &.required:after {
+            content: '';
+        }
+
+        i {
+            font-style: normal;
+            color: $gray-light;
+        }
+    }
+
+    &__control {
+        overflow: visible;
+        display: flex;
+        width: 100%;
+
+        & > input::placeholder,
+        & > button.select-toggle.placeholder {
+            color: rgba(66, 66, 66, 0.5);
+            text-align: left;
+        }
+
+        & > input,
+        & > button:not(.btn-ignite) {
+            outline: none;
+            overflow: visible;
+
+            box-sizing: border-box;
+            width: 100%;
+            max-width: initial;
+            height: 36px;
+            padding: 9px 10px;
+            margin-right: 0;
+
+            border: solid 1px #c5c5c5;
+            border-radius: 4px;
+            background-color: #ffffff;
+            box-shadow: none;
+
+            color: $text-color;
+            text-align: left;
+            line-height: 16px;
+
+            &.ng-invalid:not(.ng-pristine),
+            &.ng-invalid.ng-touched {
+                border-color: #c5c5c5;
+                box-shadow: none;
+            }
+
+            &.ng-invalid:focus,
+            &:focus {
+                border-color: $ignite-brand-success;
+                box-shadow: none;
+            }
+        }
+    }
+
+    &__errors {
+        position: absolute;
+        right: 0;
+        bottom: 0;
+
+        [ng-message] {
+            // TODO: remove after replace all fields to new
+            overflow: visible !important;
+            animation: none !important;
+        }
+    }
+
+    &__error {
+        z-index: 2;
+        position: relative;
+        width: 0;
+        height: 36px;
+        float: right;
+
+        color: $brand-primary;
+        line-height: $input-height;
+        pointer-events: initial;
+        text-align: center;
+
+        &:before {
+            position: absolute;
+            right: 0;
+            width: 38px;
+        }
+
+        div {
+            z-index: 1;
+            position: absolute;
+            top: 0;
+            right: 0;
+            width: 36px;
+            height: 36px;
+        }
+
+        svg {
+            position: absolute;
+            top: 10px;
+            right: 0;
+            width: 38px;
+        }
+    }
+
+    [disabled] {
+        opacity: .5;
+    }
+}
+
+.form-field__checkbox {
+    display: flex;
+
+    .form-field {
+        &__label {
+            order: 1;
+            margin: 0;
+        }
+
+        &__control {
+            width: auto;
+            margin-right: 10px;
+            padding: 3px 0;
+
+            input {
+                width: auto;
+                height: auto;
+                margin: 0;
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/input.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/form-field/input.pug 
b/modules/web-console/frontend/app/primitives/form-field/input.pug
new file mode 100644
index 0000000..0fee77b
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/form-field/input.pug
@@ -0,0 +1,28 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+mixin form-field__input({ name, model, disabled, required, placeholder })
+    input(
+        id=`{{ ${name} }}Input`
+        name=`{{ ${name} }}`
+        placeholder=placeholder
+
+        ng-model=model
+
+        ng-required=required && `${required}`
+        ng-disabled=disabled && `${disabled}`
+        ng-focus='tableReset()'
+    )&attributes(attributes ? attributes.attributes ? attributes.attributes : 
attributes : {})

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/label.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/form-field/label.pug 
b/modules/web-console/frontend/app/primitives/form-field/label.pug
new file mode 100644
index 0000000..d725f9d
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/form-field/label.pug
@@ -0,0 +1,30 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+mixin form-field__label({ label, name, required, optional, disabled })
+    -var colon = label[label.length-1] === ':' ? ':' : '';
+    - label = label[label.length-1] === ':' ? label.substring(0, label.length 
- 1) : label
+    - optional = optional ? ' <i>(optional)</i>' : '';
+
+    label.form-field__label(
+        id=name && `{{ ${name} }}Label`
+        for=name && `{{ ${name} }}Input`
+        class=`{{ ${required} ? 'required' : '' }}`
+        ng-disabled=disabled && `${disabled}`
+    )
+        span !{label}!{optional}!{colon}
+        if block
+            block

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/number.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/form-field/number.pug 
b/modules/web-console/frontend/app/primitives/form-field/number.pug
new file mode 100644
index 0000000..e5f1454
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/form-field/number.pug
@@ -0,0 +1,46 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+mixin form-field__number({ label, model, name, disabled, required, 
placeholder, tip, min, max, step })
+    -var errLbl = label.substring(0, label.length - 1)
+
+    .form-field
+        +form-field__label({ label, name, required })
+            +form-field__tooltip({ title: tip, options: tipOpts })
+
+        .form-field__control
+            - attributes.type = 'number'
+            - attributes.min = min ? min : '0'
+            - attributes.max = max ? max : '{{ Number.MAX_VALUE }}'
+            - attributes.step = step ? step : '1'
+            +form-field__input({ name, model, disabled, required, placeholder 
})(attributes=attributes)
+
+        .form-field__errors(
+            ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched 
|| ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? 
${form}[${name}].$error : {}`
+        )
+            if block
+                block
+
+            if required
+                +form-field__error({ error: 'required', message: `${errLbl} 
could not be empty!` })
+
+            if min
+                +form-field__error({ error: 'min', message: `${errLbl} is less 
than allowable minimum: ${ min || 0 }`})
+
+            if max
+                +form-field__error({ error: 'max', message: `${errLbl} is more 
than allowable maximum: ${ max }`})
+
+            +form-field__error({ error: 'number', message: 'Only numbers 
allowed' })

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/password.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/primitives/form-field/password.pug 
b/modules/web-console/frontend/app/primitives/form-field/password.pug
new file mode 100644
index 0000000..ba38cce
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/form-field/password.pug
@@ -0,0 +1,37 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+mixin form-field__password({ label, model, name, disabled, required, 
placeholder, tip })
+    -var errLbl = label.substring(0, label.length - 1)
+
+    .form-field
+        +form-field__label({ label, name, required })
+            +form-field__tooltip({ title: tip, options: tipOpts })
+
+        .form-field__control
+            - attributes.type='password'
+            +form-field__input({ name, model, disabled, required, placeholder 
})(attributes=attributes)
+
+        .form-field__errors(
+            ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched 
|| ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? 
${form}[${name}].$error : {}`
+        )
+            if block
+                block
+
+            if required
+                +form-field__error({ name, error: 'required', message: 
`${errLbl} could not be empty!` })
+                
+            +form-field__error({ name, error: 'mismatch', message: `Password 
does not match the confirm password!` })

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/phone.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/form-field/phone.pug 
b/modules/web-console/frontend/app/primitives/form-field/phone.pug
new file mode 100644
index 0000000..b65c5d2
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/form-field/phone.pug
@@ -0,0 +1,35 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+mixin form-field__phone({ label, model, name, disabled, required, optional, 
placeholder, tip })
+    -var errLbl = label.substring(0, label.length - 1)
+
+    .form-field
+        +form-field__label({ label, name, required, optional })
+            +form-field__tooltip({ title: tip, options: tipOpts })
+
+        .form-field__control
+            - attributes.type='tel'
+            +form-field__input({ name, model, disabled, required, placeholder 
})(attributes=attributes)
+
+        .form-field__errors(
+            ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched 
|| ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? 
${form}[${name}].$error : {}`
+        )
+            if block
+                block
+
+            if required
+                +form-field__error({ name, error: 'required', message: 
`${errLbl} could not be empty!` })

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/text.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/form-field/text.pug 
b/modules/web-console/frontend/app/primitives/form-field/text.pug
new file mode 100644
index 0000000..8f63f19
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/form-field/text.pug
@@ -0,0 +1,35 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+mixin form-field__text({ label, model, name, disabled, required, placeholder, 
tip })
+    -var errLbl = label.substring(0, label.length - 1)
+
+    .form-field(id=`{{ ${name} }}Field`)
+        +form-field__label({ label, name, required, disabled })
+            +form-field__tooltip({ title: tip, options: tipOpts })
+
+        .form-field__control
+            - attributes.type='text'
+            +form-field__input({ name, model, disabled, required, placeholder 
})(attributes=attributes)
+
+        .form-field__errors(
+            ng-messages=`(${form}[${name}].$dirty || ${form}[${name}].$touched 
|| ${form}[${name}].$submitted) && ${form}[${name}].$invalid ? 
${form}[${name}].$error : {}`
+        )
+            if block
+                block
+
+            if required
+                +form-field__error({ name, error: 'required', message: 
`${errLbl} could not be empty!` })

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/form-field/tooltip.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/form-field/tooltip.pug 
b/modules/web-console/frontend/app/primitives/form-field/tooltip.pug
new file mode 100644
index 0000000..08ffd83
--- /dev/null
+++ b/modules/web-console/frontend/app/primitives/form-field/tooltip.pug
@@ -0,0 +1,18 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+mixin form-field__tooltip({ title, options })
+    +tooltip(title, options)

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/panel/index.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/panel/index.scss 
b/modules/web-console/frontend/app/primitives/panel/index.scss
index 56cecfe..e16210c 100644
--- a/modules/web-console/frontend/app/primitives/panel/index.scss
+++ b/modules/web-console/frontend/app/primitives/panel/index.scss
@@ -17,35 +17,91 @@
 
 @import '../../../public/stylesheets/variables';
 
-.panel--ignite {
-    border: none;
-    border-radius: 0 0 4px 4px;
+.panel {
+    &--ignite {
+        border: none;
+        border-radius: 0 0 4px 4px;
 
-    font-family: Roboto;
+        font-family: Roboto;
 
-    background-color: white;
-    box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);
+        background-color: white;
+        box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);
 
-    & > .panel-heading {
-        height: auto;
-        padding: 22px 20px;
+        & > header {
+            height: auto;
+            padding: 22px 20px;
 
-        background-color: initial;
-        border-bottom: 1px solid $ignite-brand-primary;
+            background-color: initial;
+            font-size: 16px;
+            line-height: 36px;
 
-        &:hover {
-            text-decoration: none;
+            &:hover {
+                text-decoration: none;
+            }
         }
 
-        & > .panel-title {
-            font-size: 16px;
-            line-height: 36px;
+        & > hr {
+            margin: 0;
+            border-top: 1px solid #ddd;
+        }
+
+        & > section {
+            padding: 0 20px;
+        }
+
+        & > .panel-heading {
+            height: auto;
+            padding: 22px 20px;
 
-            & > .panel-selected {
-                font-size: 14px;
-                font-style: italic;
+            background-color: initial;
+            border-bottom: 1px solid $ignite-brand-primary;
+
+            &:hover {
+                text-decoration: none;
+            }
+
+            & > .panel-title {
+                font-size: 16px;
                 line-height: 36px;
-                cursor: default;
+
+                & > .panel-selected {
+                    font-size: 14px;
+                    font-style: italic;
+                    line-height: 36px;
+                    cursor: default;
+                }
+            }
+        }
+    }
+
+    &--collapse {
+        & > header {
+            cursor: pointer;
+        }
+
+        [ignite-icon='expand'],
+        [ignite-icon='collapse'] {
+            width: 13px;
+            height: 13px;
+
+            margin-right: 9px;
+        }
+
+        [ignite-icon='expand'] {
+            display: none;
+        }
+
+        [ignite-icon='collapse'] {
+            display: inline-block;
+        }
+
+        &.in {
+            [ignite-icon='expand'] {
+                display: inline-block;
+            }
+
+            [ignite-icon='collapse'] {
+                display: none;
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/tooltip/index.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/tooltip/index.scss 
b/modules/web-console/frontend/app/primitives/tooltip/index.scss
index 174d624..a6cd79f 100644
--- a/modules/web-console/frontend/app/primitives/tooltip/index.scss
+++ b/modules/web-console/frontend/app/primitives/tooltip/index.scss
@@ -22,4 +22,21 @@
         padding: 12px;
         background-color: #FFF;
     }
+}
+
+.tooltip--error {
+    &.top {
+        margin-top: 8px;
+        margin-left: -1px;
+    }
+
+    &.top .tooltip-arrow {
+        border-top-color: #f34718;
+    }
+
+    .tooltip-inner {
+        background: #f34718;
+        border-color: #f34718;
+        color: white;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/primitives/ui-grid/index.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/primitives/ui-grid/index.scss 
b/modules/web-console/frontend/app/primitives/ui-grid/index.scss
index a83cb57..331b075 100644
--- a/modules/web-console/frontend/app/primitives/ui-grid/index.scss
+++ b/modules/web-console/frontend/app/primitives/ui-grid/index.scss
@@ -105,8 +105,8 @@
                     }
 
                     .ui-grid-header-cell-filter {
-                        background-image: 
-                            linear-gradient(to right, $ignite-brand-success, 
transparent), 
+                        background-image:
+                            linear-gradient(to right, $ignite-brand-success, 
transparent),
                             linear-gradient(to right, $ignite-brand-success 
70%, transparent 0%);
                         background-position: left bottom;
                         background-repeat: repeat-x;
@@ -114,7 +114,7 @@
 
                         &:hover {
                             background-image: none;
-                            // linear-gradient(to right, 
change-color($ignite-brand-success, $lightness: 26%), transparent), 
+                            // linear-gradient(to right, 
change-color($ignite-brand-success, $lightness: 26%), transparent),
                             // linear-gradient(to right, 
change-color($ignite-brand-success, $lightness: 26%) 70%, transparent 0%);
                         }
 
@@ -126,14 +126,14 @@
                             height: 20px;
                             margin-top: -20px;
 
-                            font-size: 0; 
+                            font-size: 0;
                         }
 
                         &.active {
                             color: $ignite-brand-primary;
 
-                            background-image: 
-                                linear-gradient(to right, 
$ignite-brand-primary, transparent), 
+                            background-image:
+                                linear-gradient(to right, 
$ignite-brand-primary, transparent),
                                 linear-gradient(to right, 
$ignite-brand-primary 70%, transparent 0%);
                         }
                     }
@@ -182,7 +182,7 @@
             width: auto;
 
             .ui-grid-render-container-left {
-                .ui-grid-viewport, 
+                .ui-grid-viewport,
                 .ui-grid-header-viewport {
                     width: auto;
 
@@ -216,10 +216,10 @@
                     top: 0;
                     right: 9px;
                     z-index: 1000;
-                    
+
                     width: 5px;
                     height: 100%;
-                    
+
                     opacity: .2;
                     box-shadow: 2px 0 3px #000;
                     border-right: 1px solid #000;
@@ -299,7 +299,7 @@
               position: absolute;
               top: 4px;
               left: 4px;
-              
+
               width: 4px;
               height: 8px;
 
@@ -353,7 +353,7 @@
                     position: absolute;
                     top: 5px;
                     left: 2px;
-                    
+
                     width: 7px;
                     margin: 0;
 
@@ -367,7 +367,7 @@
                     position: absolute;
                     top: 2px;
                     left: 5px;
-                    
+
                     height: 7px;
                     margin: 0;
 
@@ -435,7 +435,7 @@
 
                     width: 4px;
                     height: 46px;
-                    
+
                     background: #0067b9;
                     box-shadow: 0 -1px 0 0 rgba(0, 0, 0, .3), 0 -1px 0 0 
rgba(0, 103, 185, 1);
                 }
@@ -481,7 +481,7 @@
     .ui-grid-icon-cancel {
         &:before {
             content: '';
-    
+
             display: block;
             width: 12px;
             height: 12px;
@@ -525,9 +525,9 @@
     position: relative;
 
     padding: 16px 51px;
-    
+
     border-radius: 0 0 4px 4px;
-    
+
     font-style: italic;
     line-height: 16px;
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/services/DefaultState.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/services/DefaultState.js 
b/modules/web-console/frontend/app/services/DefaultState.js
new file mode 100644
index 0000000..db7b3e3
--- /dev/null
+++ b/modules/web-console/frontend/app/services/DefaultState.js
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function DefaultState($stateProvider) {
+    const stateName = 'default-state';
+
+    $stateProvider.state(stateName, {});
+
+    return {
+        setRedirectTo(fn) {
+            const state = $stateProvider.stateRegistry.get(stateName);
+            state.redirectTo = fn(state.redirectTo);
+        },
+        $get() {
+            return this;
+        }
+    };
+}
+
+DefaultState.$inject = ['$stateProvider'];
+
+export default DefaultState;

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/services/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/services/index.js 
b/modules/web-console/frontend/app/services/index.js
index 49e7632..55f8d3d 100644
--- a/modules/web-console/frontend/app/services/index.js
+++ b/modules/web-console/frontend/app/services/index.js
@@ -17,7 +17,9 @@
 
 import angular from 'angular';
 import IgniteVersion from './Version.service';
+import {default as DefaultState} from './DefaultState';
 
 export default angular
     .module('ignite-console.services', [])
+    .provider('DefaultState', DefaultState)
     .service('IgniteVersion', IgniteVersion);

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/app/vendor.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/vendor.js 
b/modules/web-console/frontend/app/vendor.js
index ea0f63c..eac47d4 100644
--- a/modules/web-console/frontend/app/vendor.js
+++ b/modules/web-console/frontend/app/vendor.js
@@ -25,6 +25,7 @@ import 'angular-strap/dist/angular-strap.tpl';
 import 'angular-socket-io';
 import 'angular-retina';
 
+import 'angular-messages';
 import '@uirouter/angularjs';
 import '@uirouter/angularjs/lib/legacy/stateEvents';
 
@@ -36,8 +37,6 @@ import 'angular-drag-and-drop-lists';
 import 'angular-nvd3';
 import 'angular-tree-control';
 import 'angular-gridster';
-import 'bootstrap-sass/assets/javascripts/bootstrap/transition';
-import 'bootstrap-sass/assets/javascripts/bootstrap/carousel';
 import 'brace';
 import 'brace/mode/xml';
 import 'brace/mode/sql';
@@ -52,6 +51,7 @@ import 'file-saver';
 import 'jszip';
 import 'nvd3';
 import 'lodash';
+import 'angular-ui-carousel';
 
 import 'angular-gridster/dist/angular-gridster.min.css';
 import 'angular-tree-control/css/tree-control-attribute.css';
@@ -59,3 +59,4 @@ import 'angular-tree-control/css/tree-control.css';
 import 'angular-ui-grid/ui-grid.css';
 import 'angular-motion/dist/angular-motion.css';
 import 'nvd3/build/nv.d3.css';
+import 'angular-ui-carousel/dist/ui-carousel.css';

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/package.json
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/package.json 
b/modules/web-console/frontend/package.json
index c30f80c..100e644 100644
--- a/modules/web-console/frontend/package.json
+++ b/modules/web-console/frontend/package.json
@@ -42,6 +42,7 @@
     "angular-cookies": "1.6.6",
     "angular-drag-and-drop-lists": "1.4.0",
     "angular-gridster": "0.13.14",
+    "angular-messages": "1.6.9",
     "angular-motion": "0.4.4",
     "angular-nvd3": "1.0.9",
     "angular-retina": "0.4.0",
@@ -51,6 +52,7 @@
     "angular-strap": "2.3.12",
     "angular-translate": "2.16.0",
     "angular-tree-control": "0.2.28",
+    "angular-ui-carousel": "0.1.10",
     "angular-ui-grid": "4.0.11",
     "babel-core": "6.25.0",
     "babel-eslint": "7.2.3",
@@ -89,7 +91,6 @@
     "progress-bar-webpack-plugin": "1.10.0",
     "pug-html-loader": "1.1.0",
     "pug-loader": "2.3.0",
-    "raleway-webfont": "3.0.1",
     "resolve-url-loader": "2.1.0",
     "roboto-font": "0.1.0",
     "rxjs": "5.4.2",

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/icons/collapse.svg
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/icons/collapse.svg 
b/modules/web-console/frontend/public/images/icons/collapse.svg
new file mode 100644
index 0000000..86861a5
--- /dev/null
+++ b/modules/web-console/frontend/public/images/icons/collapse.svg
@@ -0,0 +1,3 @@
+<svg version="1.1" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg";>
+ <path d="m2 0c-1.108 0-2 0.892-2 2v9c0 1.108 0.892 2 2 2h9c1.108 0 2-0.892 
2-2v-9c0-1.108-0.892-2-2-2h-9zm1 6h7v1h-7v-1z" fill="#757575"/>
+</svg>

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/icons/exclamation.svg
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/icons/exclamation.svg 
b/modules/web-console/frontend/public/images/icons/exclamation.svg
new file mode 100644
index 0000000..95e4613
--- /dev/null
+++ b/modules/web-console/frontend/public/images/icons/exclamation.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg"; width="14" height="14" viewBox="0 0 14 
14">
+    <path fill="#F34718" fill-rule="evenodd" d="M6.3 
9.1h1.4v1.4H6.3V9.1zm0-5.6h1.4v4.2H6.3V3.5zM6.993 0A6.997 6.997 0 0 0 0 7c0 
3.864 3.129 7 6.993 7A7.004 7.004 0 0 0 14 7c0-3.864-3.136-7-7.007-7zM7 
12.6A5.598 5.598 0 0 1 1.4 7c0-3.094 2.506-5.6 5.6-5.6s5.6 2.506 5.6 5.6-2.506 
5.6-5.6 5.6z"/>
+</svg>

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/icons/expand.svg
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/icons/expand.svg 
b/modules/web-console/frontend/public/images/icons/expand.svg
new file mode 100644
index 0000000..569c9c0
--- /dev/null
+++ b/modules/web-console/frontend/public/images/icons/expand.svg
@@ -0,0 +1,3 @@
+<svg version="1.1" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg";>
+ <path d="m2 0c-1.108 0-2 0.892-2 2v9c0 1.108 0.892 2 2 2h9c1.108 0 2-0.892 
2-2v-9c0-1.108-0.892-2-2-2zm4 3h1v3h3v1h-3v3h-1v-3h-3v-1h3z" fill="#757575" />
+</svg>

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/icons/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/icons/index.js 
b/modules/web-console/frontend/public/images/icons/index.js
index 816ef1f..1168942 100644
--- a/modules/web-console/frontend/public/images/icons/index.js
+++ b/modules/web-console/frontend/public/images/icons/index.js
@@ -31,3 +31,7 @@ export checkmark from './checkmark.svg';
 export alert from './alert.svg';
 export attention from './attention.svg';
 export connectedClusters from './connectedClusters.svg';
+export exclamation from './exclamation.svg';
+export collapse from './collapse.svg';
+export expand from './expand.svg';
+

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/main-screenshot.png
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/public/images/main-screenshot.png 
b/modules/web-console/frontend/public/images/main-screenshot.png
new file mode 100644
index 0000000..5e1b9e9
Binary files /dev/null and 
b/modules/web-console/frontend/public/images/main-screenshot.png differ

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/page-landing-carousel-1.png
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/public/images/page-landing-carousel-1.png 
b/modules/web-console/frontend/public/images/page-landing-carousel-1.png
new file mode 100644
index 0000000..1ac243c
Binary files /dev/null and 
b/modules/web-console/frontend/public/images/page-landing-carousel-1.png differ

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/page-landing-carousel-2.png
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/public/images/page-landing-carousel-2.png 
b/modules/web-console/frontend/public/images/page-landing-carousel-2.png
new file mode 100644
index 0000000..bb48ad6
Binary files /dev/null and 
b/modules/web-console/frontend/public/images/page-landing-carousel-2.png differ

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/images/page-landing-carousel-3.png
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/public/images/page-landing-carousel-3.png 
b/modules/web-console/frontend/public/images/page-landing-carousel-3.png
new file mode 100644
index 0000000..91946c9
Binary files /dev/null and 
b/modules/web-console/frontend/public/images/page-landing-carousel-3.png differ

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/public/stylesheets/_bootstrap-custom.scss
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/public/stylesheets/_bootstrap-custom.scss 
b/modules/web-console/frontend/public/stylesheets/_bootstrap-custom.scss
index 3b52821..3dc338f 100644
--- a/modules/web-console/frontend/public/stylesheets/_bootstrap-custom.scss
+++ b/modules/web-console/frontend/public/stylesheets/_bootstrap-custom.scss
@@ -58,7 +58,6 @@
 @import 
"../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/modals";
 @import 
"../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/tooltip";
 @import 
"../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/popovers";
-@import 
"../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/carousel";
 
 // Utility classes
 @import 
"../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap/utilities";

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/views/reset.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/reset.tpl.pug 
b/modules/web-console/frontend/views/reset.tpl.pug
deleted file mode 100644
index 6bc5b7b..0000000
--- a/modules/web-console/frontend/views/reset.tpl.pug
+++ /dev/null
@@ -1,44 +0,0 @@
-//-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
-web-console-header
-    web-console-header-left
-        ignite-header-title
-
-.container.body-container
-    .main-content(ng-controller='resetPassword')
-        .row
-            .text-center(ng-if='!token')
-                p Further instructions for password reset have been sent to 
your e-mail address.
-            .text-center(ng-if='error')
-                p {{::error}}
-            div(ng-if='token && !error')
-                form.form-horizontal(name='resetForm' 
ng-init='reset_info.token = token')
-                    .settings-row
-                        label.col-sm-1 E-mail:
-                        label {{::email}}
-                    .settings-row
-                        label.col-sm-1.required Password:
-                        .col-sm-3
-                            
input#user_password.form-control(ignite-on-enter-focus-move='user_confirm' 
type='password' ng-model='reset_info.password' placeholder='New password' 
required)
-                    .settings-row
-                        label.col-sm-1.required Confirm:
-                        .col-sm-3
-                            input#user_confirm.form-control(type='password' 
ng-model='reset_info.confirm' ignite-match='reset_info.password' 
placeholder='Confirm new password' required ignite-on-enter='resetForm.$valid 
&& resetPassword(user_info)')
-                    .settings-row
-                        
button.btn.btn-primary(ng-disabled='resetForm.$invalid' 
ng-click='resetPassword(reset_info)') Reset Password
-
-web-console-footer

http://git-wip-us.apache.org/repos/asf/ignite/blob/19256745/modules/web-console/frontend/views/signin.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/signin.tpl.pug 
b/modules/web-console/frontend/views/signin.tpl.pug
deleted file mode 100644
index 29da8b1..0000000
--- a/modules/web-console/frontend/views/signin.tpl.pug
+++ /dev/null
@@ -1,165 +0,0 @@
-//-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
-mixin lblRequired(txt)
-    label.col-xs-3.col-md-3.required #{txt}
-
-web-console-header
-    web-console-header-left
-        ignite-header-title
-
-.container.body-container
-    .main-content
-        .row.home
-            .signin-greedy
-                .col-xs-12.col-md-6
-                    form(name='form' novalidate)
-                        .row(style='padding: 0 0 10px 0; margin: 0')
-                            .settings-row(ng-if='action == "signup"')
-                                h3.login-header Sign Up
-                            .settings-row(ng-if='action == "signin"')
-                                h3.login-header Sign In
-                            .settings-row(ng-if='action == "password/forgot"')
-                                h3.login-header Forgot password?
-                            .settings-row
-                                p.col-xs-12.col-md-11(ng-show='action == 
"password/forgot"')
-                                    | That's ok! Simply enter your email below 
and a reset password link will be sent to you via email. You can then follow 
that link and select a new password.
-                            .settings-row(ng-show='action == "signin"')
-                                +lblRequired('Email:')
-                                .col-xs-9.col-md-8
-                                    
input#signin_email.form-control(ignite-on-enter-focus-move='user_password' 
type='email' ng-model='ui.email' placeholder='Input email' required)
-                            .settings-row(ng-show='action == "signup"')
-                                +lblRequired('Email:')
-                                .col-xs-9.col-md-8
-                                    
input#signup_email.form-control(ignite-on-enter-focus-move='user_password' 
type='email' ng-model='ui.email' placeholder='Input email' required)
-                            .settings-row(ng-show='action != 
"password/forgot"')
-                                +lblRequired('Password:')
-                                .col-xs-9.col-md-8
-                                    
input#user_password.form-control(ignite-on-enter-focus-move='user_confirm' 
type='password' ng-model='ui.password' placeholder='Password' 
ng-required='action != "password/forgot"' ignite-on-enter='action == "signin" 
&& form.$valid && auth(action, ui)')
-                            .settings-row(ng-if='action == "signup"')
-                                +lblRequired('Confirm:')
-                                .col-xs-9.col-md-8
-                                    
input#user_confirm.form-control(ignite-on-enter-focus-move='first_name' 
type='password' ng-model='ui_exclude.confirm' ignite-match='ui.password' 
placeholder='Confirm password' ng-required='action == "signup"')
-                            .settings-row(ng-show='action == "signup"')
-                                +lblRequired('First Name:')
-                                .col-xs-9.col-md-8
-                                    
input#first_name.form-control(ignite-on-enter-focus-move='last_name' 
type='text' ng-model='ui.firstName' placeholder='Input first name' 
ng-required='action=="signup"')
-                            .settings-row(ng-show='action == "signup"')
-                                +lblRequired('Last Name:')
-                                .col-xs-9.col-md-8
-                                    
input#last_name.form-control(ignite-on-enter-focus-move='company' type='text' 
ng-model='ui.lastName' placeholder='Input last name' 
ng-required='action=="signup"')
-                            .settings-row(ng-show='action == 
"password/forgot"')
-                                +lblRequired('Email:')
-                                .col-xs-9.col-md-8
-                                    
input#forgot_email.form-control(ignite-on-enter='form.$valid && 
forgotPassword(ui)' type='email' ng-model='ui.email' placeholder='Input email' 
required)
-                            .settings-row(ng-show='action == "signup"')
-                                +lblRequired('Company:')
-                                .col-xs-9.col-md-8
-                                    
input#company.form-control(ignite-on-enter-focus-move='country' type='text' 
ng-model='ui.company' placeholder='Input company name' 
ng-required='action=="signup"')
-                            .settings-row(ng-show='action == "signup"')
-                                +lblRequired('Country:')
-                                .col-xs-9.col-md-8
-                                    
button#country.select-toggle.form-control(ignite-on-enter-focus-move='signup' 
bs-select bs-options='item.name as item.name for item in countries' type='text' 
ng-model='ui.country' placeholder='Choose your country' 
ng-required='action=="signup"')
-                            .settings-row(ignite-terms)
-                                .col-md-offset-3(ng-if='action == "signup" && 
terms.termsState')
-                                    label
-                                        input(type='checkbox' 
ng-model='ui_exclude.agree', ng-required='true')
-                                        | I agree to the 
#[a(ui-sref='{{::terms.termsState}}' target='_blank') terms and conditions]
-                        .col-xs-12.col-md-11
-                            .login-footer(ng-show='action == "signup"')
-                                
a#password-forgot-signup.labelField(ng-click='action = "password/forgot"' 
ignite-on-click-focus='signin_email') Forgot password?
-                                a.labelLogin(ng-click='action = "signin"' 
ignite-on-click-focus='signin_email') Sign In
-                                
button#signup.btn.btn-primary(ng-click='auth(action, ui)' 
ng-disabled='form.$invalid') Sign Up
-                        .col-xs-12.col-md-11
-                            .login-footer(ng-show='action == 
"password/forgot"')
-                                a.labelField(ng-click='action = "signin"' 
ignite-on-click-focus='signin_email') Sign In
-                                
button#forgot.btn.btn-primary(ng-click='forgotPassword(ui)' 
ng-disabled='form.$invalid') Send it to me
-                        .col-xs-12.col-md-11
-                            .login-footer(ng-show='action == "signin"')
-                                
a#password-forgot-signin.labelField(ng-click='action = "password/forgot"' 
ignite-on-click-focus='signin_email') Forgot password?
-                                a.labelLogin(ng-click='action = "signup"' 
ignite-on-click-focus='first_name') Sign Up
-                                
button#login.btn.btn-primary(ng-click='auth(action, ui)' 
ng-disabled='form.$invalid') Sign In
-
-                    .col-xs-12.col-md-11.home-panel
-                        ignite-features
-                .col-xs-12.col-md-6
-                    #carousel.carousel.slide
-                        //- Indicators
-                        ol.carousel-indicators
-                            li.active(data-target='#carousel', 
data-slide-to='0')
-                            li(data-target='#carousel', data-slide-to='1')
-                            li(data-target='#carousel', data-slide-to='2')
-                            li(data-target='#carousel', data-slide-to='3')
-                            li(data-target='#carousel', data-slide-to='4')
-                            li(data-target='#carousel', data-slide-to='5')
-                            li(data-target='#carousel', data-slide-to='6')
-                            li(data-target='#carousel', data-slide-to='7')
-                        //- Wrapper for slides
-                        .carousel-inner(role='listbox')
-                            .item.active
-                                img(src='/images/cluster.png', alt='Clusters 
screen')
-                                .carousel-caption
-                                    h3 Clusters screen
-                                    p Configure clusters, link clusters to 
caches
-                            .item
-                                img(src='/images/cache.png', alt='Caches 
screen')
-                                .carousel-caption
-                                    h3 Caches screen
-                                    p Configure caches, link domain models to 
caches, link caches to clusters
-                            .item
-                                img(src='/images/domains.png', alt='Domain 
model screen')
-                                .carousel-caption
-                                    h3 Domain model screen
-                                    p Manually enter domain model or import 
from database
-                            .item
-                                img(src='/images/summary.png', alt='Summary 
screen')
-                                .carousel-caption
-                                    h3 Summary screen
-                                    p Preview XML config, JAVA code,Docker 
file and download project
-                            .item
-                                img(src='/images/query-table.png', alt='Query')
-                                .carousel-caption
-                                    h3 Query
-                                    p Explain SQL, execute, scan queries
-                            .item
-                                img(src='/images/query-metadata.png', 
alt='Cache metadata')
-                                .carousel-caption
-                                    h3 Cache metadata
-                                    p View cache type metadata
-                            .item
-                                img(src='/images/query-chart.png', alt='Query 
chart')
-                                .carousel-caption
-                                    h3 Query chart
-                                    p View data in tabular form and as charts
-                            .item
-                                img(src='/images/multicluster.png', 
alt='Multicluster support')
-                                .carousel-caption
-                                    h3 Multicluster support
-                                    p Execute queries on different clusters
-                        //- Controls
-                        a.left.carousel-control(href='#carousel', 
ng-click='$event.preventDefault()', role='button', data-slide='prev')
-                            span.fa.fa-chevron-left(aria-hidden='true')
-                            span.sr-only Previous
-                        a.right.carousel-control(href='#carousel', 
ng-click='$event.preventDefault()', role='button', data-slide='next')
-                            span.fa.fa-chevron-right(aria-hidden='true')
-                            span.sr-only Next
-
-web-console-footer
-
-script.
-    $('.carousel').carousel()
-
-

Reply via email to