Full Code of akveo/blur-admin for AI

master 7f2596f4abeb cached
354 files
627.7 KB
191.4k tokens
147 symbols
1 requests
Download .txt
Showing preview only (713K chars total). Download the full file or copy to clipboard to get everything.
Repository: akveo/blur-admin
Branch: master
Commit: 7f2596f4abeb
Files: 354
Total size: 627.7 KB

Directory structure:
gitextract_8_fkymag/

├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── LICENSE.txt
├── README.md
├── bower.json
├── docs/
│   ├── config.json
│   ├── contents/
│   │   ├── articles/
│   │   │   ├── 001-getting-started/
│   │   │   │   └── index.md
│   │   │   ├── 002-installation-guidelines/
│   │   │   │   └── index.md
│   │   │   ├── 011-changing-color-scheme/
│   │   │   │   └── index.md
│   │   │   ├── 012-project-structure/
│   │   │   │   └── index.md
│   │   │   ├── 013-create-new-page/
│   │   │   │   └── index.md
│   │   │   ├── 014-switch-to-blur-theme/
│   │   │   │   └── index.md
│   │   │   ├── 051-sidebar/
│   │   │   │   └── index.md
│   │   │   └── 091-downloads/
│   │   │       └── index.md
│   │   ├── css/
│   │   │   └── main.css
│   │   └── index.json
│   ├── package.json
│   ├── plugins/
│   │   └── paginator.coffee
│   └── templates/
│       ├── article.jade
│       ├── index.jade
│       └── layout.jade
├── gulp/
│   ├── build.js
│   ├── conf.js
│   ├── devRelease.js
│   ├── docs.js
│   ├── images.js
│   ├── inject.js
│   ├── marketplace.js
│   ├── scripts.js
│   ├── server.js
│   ├── styles.js
│   └── watch.js
├── gulpfile.js
├── package.json
├── preview.html
└── src/
    ├── 404.html
    ├── app/
    │   ├── app.js
    │   ├── pages/
    │   │   ├── charts/
    │   │   │   ├── amCharts/
    │   │   │   │   ├── amCharts.module.js
    │   │   │   │   ├── areaChart/
    │   │   │   │   │   ├── AreaChartCtrl.js
    │   │   │   │   │   └── areaChart.html
    │   │   │   │   ├── barChart/
    │   │   │   │   │   ├── BarChartCtrl.js
    │   │   │   │   │   └── barChart.html
    │   │   │   │   ├── charts.html
    │   │   │   │   ├── combinedChart/
    │   │   │   │   │   ├── combinedChart.html
    │   │   │   │   │   └── combinedChartCtrl.js
    │   │   │   │   ├── funnelChart/
    │   │   │   │   │   ├── FunnelChartCtrl.js
    │   │   │   │   │   └── funnelChart.html
    │   │   │   │   ├── ganttChart/
    │   │   │   │   │   ├── ganttChart.html
    │   │   │   │   │   └── ganttChartCtrl.js
    │   │   │   │   ├── lineChart/
    │   │   │   │   │   ├── LineChartCtrl.js
    │   │   │   │   │   └── lineChart.html
    │   │   │   │   └── pieChart/
    │   │   │   │       ├── PieChartCtrl.js
    │   │   │   │       └── pieChart.html
    │   │   │   ├── chartJs/
    │   │   │   │   ├── chartJs.html
    │   │   │   │   ├── chartJs.module.js
    │   │   │   │   ├── chartJs1DCtrl.js
    │   │   │   │   ├── chartJs2DCtrl.js
    │   │   │   │   └── chartJsWaveCtrl.js
    │   │   │   ├── chartist/
    │   │   │   │   ├── chartist.html
    │   │   │   │   ├── chartist.module.js
    │   │   │   │   └── chartistCtrl.js
    │   │   │   ├── charts.module.js
    │   │   │   └── morris/
    │   │   │       ├── morris.html
    │   │   │       ├── morris.module.js
    │   │   │       └── morrisCtrl.js
    │   │   ├── components/
    │   │   │   ├── components.module.js
    │   │   │   ├── mail/
    │   │   │   │   ├── MailTabCtrl.js
    │   │   │   │   ├── composeBox/
    │   │   │   │   │   ├── compose.html
    │   │   │   │   │   ├── composeBoxCtrl.js
    │   │   │   │   │   └── composeModal.js
    │   │   │   │   ├── detail/
    │   │   │   │   │   ├── MailDetailCtrl.js
    │   │   │   │   │   └── mailDetail.html
    │   │   │   │   ├── list/
    │   │   │   │   │   ├── MailListCtrl.js
    │   │   │   │   │   └── mailList.html
    │   │   │   │   ├── mail.html
    │   │   │   │   ├── mail.module.js
    │   │   │   │   └── mailMessages.js
    │   │   │   ├── timeline/
    │   │   │   │   ├── TimelineCtrl.js
    │   │   │   │   ├── timeline.html
    │   │   │   │   └── timeline.module.js
    │   │   │   └── tree/
    │   │   │       ├── tree.html
    │   │   │       ├── tree.module.js
    │   │   │       └── treeCtrl.js
    │   │   ├── dashboard/
    │   │   │   ├── blurFeed/
    │   │   │   │   ├── BlurFeedCtrl.js
    │   │   │   │   ├── blurFeed.directive.js
    │   │   │   │   └── blurFeed.html
    │   │   │   ├── calendar/
    │   │   │   │   └── dashboardCalendar.js
    │   │   │   ├── dashboard.html
    │   │   │   ├── dashboard.module.js
    │   │   │   ├── dashboardCalendar/
    │   │   │   │   ├── DashboardCalendarCtrl.js
    │   │   │   │   ├── dashboardCalendar.directive.js
    │   │   │   │   └── dashboardCalendar.html
    │   │   │   ├── dashboardLineChart/
    │   │   │   │   ├── DashboardLineChartCtrl.js
    │   │   │   │   ├── dashboardLineChart.directive.js
    │   │   │   │   └── dashboardLineChart.html
    │   │   │   ├── dashboardMap/
    │   │   │   │   ├── DashboardMapCtrl.js
    │   │   │   │   ├── dashboardMap.directive.js
    │   │   │   │   └── dashboardMap.html
    │   │   │   ├── dashboardPieChart/
    │   │   │   │   ├── DashboardPieChartCtrl.js
    │   │   │   │   ├── dashboardPieChart.directive.js
    │   │   │   │   └── dashboardPieChart.html
    │   │   │   ├── dashboardTodo/
    │   │   │   │   ├── DashboardTodoCtrl.js
    │   │   │   │   ├── dashboardTodo.directive.js
    │   │   │   │   └── dashboardTodo.html
    │   │   │   ├── pieCharts/
    │   │   │   │   └── dashboardPieChart.js
    │   │   │   ├── popularApp/
    │   │   │   │   ├── popularApp.directive.js
    │   │   │   │   └── popularApp.html
    │   │   │   ├── trafficChart/
    │   │   │   │   ├── TrafficChartCtrl.js
    │   │   │   │   ├── trafficChart.directive.js
    │   │   │   │   └── trafficChart.html
    │   │   │   └── weather/
    │   │   │       ├── WeatherCtrl.js
    │   │   │       ├── weather.directive.js
    │   │   │       └── weather.html
    │   │   ├── form/
    │   │   │   ├── form.module.js
    │   │   │   ├── inputs/
    │   │   │   │   ├── inputs.html
    │   │   │   │   └── widgets/
    │   │   │   │       ├── checkboxesRadios.html
    │   │   │   │       ├── datePickers/
    │   │   │   │       │   ├── datePickers.html
    │   │   │   │       │   ├── datepickerCtrl.js
    │   │   │   │       │   └── datepickerpopupCtrl.js
    │   │   │   │       ├── inputGroups.html
    │   │   │   │       ├── oldSelect/
    │   │   │   │       │   ├── OldSelectpickerPanelCtrl.js
    │   │   │   │       │   ├── select.html
    │   │   │   │       │   └── selectpicker.directive.js
    │   │   │   │       ├── oldSwitches/
    │   │   │   │       │   ├── OldSwitchPanelCtrl.js
    │   │   │   │       │   ├── switch.directive.js
    │   │   │   │       │   └── switch.html
    │   │   │   │       ├── select/
    │   │   │   │       │   ├── GroupSelectpickerOptions.js
    │   │   │   │       │   ├── SelectpickerPanelCtrl.js
    │   │   │   │       │   └── select.html
    │   │   │   │       ├── standardFields.html
    │   │   │   │       ├── switches/
    │   │   │   │       │   ├── SwitchDemoPanelCtrl.js
    │   │   │   │       │   └── switch.html
    │   │   │   │       ├── tagsInput/
    │   │   │   │       │   ├── tagsInput.directive.js
    │   │   │   │       │   └── tagsInput.html
    │   │   │   │       └── validationStates.html
    │   │   │   ├── layouts/
    │   │   │   │   ├── layouts.html
    │   │   │   │   └── widgets/
    │   │   │   │       ├── basicForm.html
    │   │   │   │       ├── blockForm.html
    │   │   │   │       ├── formWithoutLabels.html
    │   │   │   │       ├── horizontalForm.html
    │   │   │   │       └── inlineForm.html
    │   │   │   └── wizard/
    │   │   │       ├── wizard.html
    │   │   │       └── wizrdCtrl.js
    │   │   ├── maps/
    │   │   │   ├── google-maps/
    │   │   │   │   ├── GmapPageCtrl.js
    │   │   │   │   └── google-maps.html
    │   │   │   ├── leaflet/
    │   │   │   │   ├── LeafletPageCtrl.js
    │   │   │   │   └── leaflet.html
    │   │   │   ├── map-bubbles/
    │   │   │   │   ├── MapBubblePageCtrl.js
    │   │   │   │   └── map-bubbles.html
    │   │   │   ├── map-lines/
    │   │   │   │   ├── MapLinesPageCtrl.js
    │   │   │   │   └── map-lines.html
    │   │   │   ├── maps.html
    │   │   │   └── maps.module.js
    │   │   ├── pages.module.js
    │   │   ├── profile/
    │   │   │   ├── ProfileModalCtrl.js
    │   │   │   ├── ProfilePageCtrl.js
    │   │   │   ├── profile.html
    │   │   │   ├── profile.module.js
    │   │   │   └── profileModal.html
    │   │   ├── tables/
    │   │   │   ├── TablesPageCtrl.js
    │   │   │   ├── basic/
    │   │   │   │   └── tables.html
    │   │   │   ├── smart/
    │   │   │   │   └── tables.html
    │   │   │   ├── tables.module.js
    │   │   │   └── widgets/
    │   │   │       ├── basicTable.html
    │   │   │       ├── borderedTable.html
    │   │   │       ├── condensedTable.html
    │   │   │       ├── contextualTable.html
    │   │   │       ├── editableRowTable.html
    │   │   │       ├── editableTable.html
    │   │   │       ├── hoverRows.html
    │   │   │       ├── responsiveTable.html
    │   │   │       ├── smartTable.html
    │   │   │       └── stripedRows.html
    │   │   └── ui/
    │   │       ├── alerts/
    │   │       │   ├── alerts.html
    │   │       │   └── alerts.module.js
    │   │       ├── buttons/
    │   │       │   ├── ButtonPageCtrl.js
    │   │       │   ├── buttons.html
    │   │       │   ├── buttons.module.js
    │   │       │   └── widgets/
    │   │       │       ├── buttonGroups.html
    │   │       │       ├── buttons.html
    │   │       │       ├── dropdowns.html
    │   │       │       ├── iconButtons.html
    │   │       │       ├── largeButtons.html
    │   │       │       └── progressButtons.html
    │   │       ├── grid/
    │   │       │   ├── baseGrid.html
    │   │       │   ├── grid.html
    │   │       │   └── grid.module.js
    │   │       ├── icons/
    │   │       │   ├── IconsPageCtrl.js
    │   │       │   ├── icons.html
    │   │       │   ├── icons.module.js
    │   │       │   └── widgets/
    │   │       │       ├── fontAwesomeIcons.html
    │   │       │       ├── ionicons.html
    │   │       │       ├── kameleon.html
    │   │       │       ├── kameleonRounded.html
    │   │       │       └── socicon.html
    │   │       ├── modals/
    │   │       │   ├── ModalsPageCtrl.js
    │   │       │   ├── modalTemplates/
    │   │       │   │   ├── basicModal.html
    │   │       │   │   ├── dangerModal.html
    │   │       │   │   ├── infoModal.html
    │   │       │   │   ├── largeModal.html
    │   │       │   │   ├── smallModal.html
    │   │       │   │   ├── successModal.html
    │   │       │   │   └── warningModal.html
    │   │       │   ├── modals.html
    │   │       │   ├── modals.module.js
    │   │       │   ├── notifications/
    │   │       │   │   ├── NotificationsCtrl.js
    │   │       │   │   └── notifications.html
    │   │       │   └── progressModal/
    │   │       │       ├── ProgressModalCtrl.js
    │   │       │       └── progressModal.html
    │   │       ├── notifications/
    │   │       │   ├── NotificationsPageCtrl.js
    │   │       │   ├── notifications.html
    │   │       │   └── notifications.module.js
    │   │       ├── panels/
    │   │       │   ├── panels.html
    │   │       │   └── panels.module.js
    │   │       ├── progressBars/
    │   │       │   ├── progressBars.html
    │   │       │   ├── progressBars.module.js
    │   │       │   └── widgets/
    │   │       │       ├── animated.html
    │   │       │       ├── basic.html
    │   │       │       ├── label.html
    │   │       │       ├── stacked.html
    │   │       │       └── striped.html
    │   │       ├── slider/
    │   │       │   ├── slider.html
    │   │       │   └── slider.module.js
    │   │       ├── tabs/
    │   │       │   ├── contextualAccordion.html
    │   │       │   ├── mainTabs.html
    │   │       │   ├── sampleAccordion.html
    │   │       │   ├── sideTabs.html
    │   │       │   ├── tabs.html
    │   │       │   └── tabs.module.js
    │   │       ├── typography/
    │   │       │   ├── typography.html
    │   │       │   └── typography.module.js
    │   │       └── ui.module.js
    │   └── theme/
    │       ├── components/
    │       │   ├── baPanel/
    │       │   │   ├── baPanel.directive.js
    │       │   │   ├── baPanel.service.js
    │       │   │   ├── baPanelBlur.directive.js
    │       │   │   ├── baPanelBlurHelper.service.js
    │       │   │   └── baPanelSelf.directive.js
    │       │   ├── baSidebar/
    │       │   │   ├── BaSidebarCtrl.js
    │       │   │   ├── ba-sidebar.html
    │       │   │   ├── baSidebar.directive.js
    │       │   │   ├── baSidebar.service.js
    │       │   │   └── baSidebarHelpers.directive.js
    │       │   ├── baWizard/
    │       │   │   ├── baWizard.directive.js
    │       │   │   ├── baWizard.html
    │       │   │   ├── baWizardCtrl.js
    │       │   │   ├── baWizardStep.directive.js
    │       │   │   └── baWizardStep.html
    │       │   ├── backTop/
    │       │   │   ├── backTop.directive.js
    │       │   │   └── backTop.html
    │       │   ├── components.module.js
    │       │   ├── contentTop/
    │       │   │   ├── contentTop.directive.js
    │       │   │   └── contentTop.html
    │       │   ├── msgCenter/
    │       │   │   ├── MsgCenterCtrl.js
    │       │   │   ├── msgCenter.directive.js
    │       │   │   └── msgCenter.html
    │       │   ├── pageTop/
    │       │   │   ├── pageTop.directive.js
    │       │   │   └── pageTop.html
    │       │   ├── progressBarRound/
    │       │   │   ├── progressBarRound.directive.js
    │       │   │   └── progressBarRound.html
    │       │   ├── toastrLibConfig.js
    │       │   └── widgets/
    │       │       ├── widgets.directive.js
    │       │       └── widgets.html
    │       ├── directives/
    │       │   ├── animatedChange.js
    │       │   ├── autoExpand.js
    │       │   ├── autoFocus.js
    │       │   ├── includeWithScope.js
    │       │   ├── ionSlider.js
    │       │   ├── ngFileSelect.js
    │       │   ├── scrollPosition.js
    │       │   ├── trackWidth.js
    │       │   └── zoomIn.js
    │       ├── filters/
    │       │   ├── image/
    │       │   │   ├── appImage.js
    │       │   │   ├── kameleonImg.js
    │       │   │   └── profilePicture.js
    │       │   └── text/
    │       │       └── removeHtml.js
    │       ├── inputs/
    │       │   ├── baSwitcher/
    │       │   │   ├── baSwitcher.html
    │       │   │   └── baSwitcher.js
    │       │   └── inputs.module.js
    │       ├── services/
    │       │   ├── baProgressModal.js
    │       │   ├── baUtil.js
    │       │   ├── fileReader.js
    │       │   ├── preloader.js
    │       │   └── stopableInterval.js
    │       ├── theme.config.js
    │       ├── theme.configProvider.js
    │       ├── theme.constants.js
    │       ├── theme.module.js
    │       ├── theme.run.js
    │       └── theme.service.js
    ├── auth.html
    ├── index.html
    ├── reg.html
    └── sass/
        ├── 404.scss
        ├── README.md
        ├── app/
        │   ├── _alerts.scss
        │   ├── _buttonsPage.scss
        │   ├── _chartsPage.scss
        │   ├── _dashboard.scss
        │   ├── _email.scss
        │   ├── _form.scss
        │   ├── _grid.scss
        │   ├── _iconsPage.scss
        │   ├── _modalNotifications.scss
        │   ├── _modals.scss
        │   ├── _notifications.scss
        │   ├── _profile.scss
        │   ├── _slider.scss
        │   ├── _table.scss
        │   ├── _tabsPage.scss
        │   ├── _tplSkinPanel.scss
        │   ├── _tree.scss
        │   ├── _typography.scss
        │   └── maps/
        │       ├── _google-maps.scss
        │       ├── _leaflet.scss
        │       ├── _map-bubbles.scss
        │       └── _map-lines.scss
        ├── auth.scss
        ├── common.scss
        ├── main.scss
        └── theme/
            ├── _blur-admin-theme.scss
            ├── _buttons.scss
            ├── _datePicker.scss
            ├── _icons.scss
            ├── _layout.scss
            ├── _preloader.scss
            ├── _socicon.scss
            ├── _table.scss
            ├── _tree.scss
            ├── bootstrap-overrides/
            │   ├── _panel.scss
            │   └── _tabs.scss
            ├── components/
            │   ├── _accordion.scss
            │   ├── _baWizard.scss
            │   ├── _backTop.scss
            │   ├── _contentTop.scss
            │   ├── _msgCenter.scss
            │   ├── _pageTop.scss
            │   ├── _progressRound.scss
            │   ├── _sidebar.scss
            │   └── _widgets.scss
            ├── conf/
            │   ├── _mixins.scss
            │   ├── _variables.scss
            │   └── colorScheme/
            │       ├── _blur.scss
            │       └── _mint.scss
            └── dashboard/
                ├── _amChart.scss
                ├── _amChartMap.scss
                ├── _blurFeed.scss
                ├── _calendar.scss
                ├── _pieCharts.scss
                ├── _popularApp.scss
                ├── _timeline.scss
                ├── _todo.scss
                ├── _trafficChart.scss
                └── _weather.scss

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion

*.iml

## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:

# User-specific stuff:
# .idea/workspace.xml
# .idea/tasks.xml
# .idea/dictionaries

# Sensitive or high-churn files:
# .idea/dataSources.ids
# .idea/dataSources.xml
# .idea/sqlDataSources.xml
# .idea/dynamic.xml
# .idea/uiDesigner.xml

# Gradle:
# .idea/gradle.xml
# .idea/libraries

# Mongo Explorer plugin:
# .idea/mongoSettings.xml

## File-based project format:
*.ipr
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties

node_modules
gulp.1
build
.tmp

/src/release
/release
/bower_components


================================================
FILE: .travis.yml
================================================
sudo: false

language: node_js

node_js:
  - "8"

addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - g++-4.8

install:
  - npm config set spin false
  - npm install -g gulp

  - npm install

script:
  - gulp build


================================================
FILE: CHANGELOG.md
================================================
v1.3.1 - 15 Dec 2016
--------------------
- Fix gulp build
- Update dependencies
- Fix datepicker position

v1.3.0 - 10 Dec 2016
--------------------
- Update bower dependencies
- Add progress dialog component
- Add datepicker component
- Scroll up pages upon navigation
- CSS-only switchers
- Use ui-select instead of bootstrap-select

v1.2.0 - 16 May 2016
--------------------
- Refactoring to improve customization, fixes #22, #26
- Add documentation
- Sidebar refactoring, fixes #14, #15, #27
- Bootstrap select refactoring #18

v1.1.1 - 11 Apr 2016
--------------------
- Improved scrolling performance, fixes #2
- Set 0.9.5 version for the Chartist library by default, fixes #5


================================================
FILE: LICENSE.txt
================================================
The MIT License (MIT)
Copyright (c) 2016 Akvemus GSC

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Status API Training Shop Blog About
© 2016 GitHub, Inc. Terms Privacy Security Contact Help


================================================
FILE: README.md
================================================
[![Build Status](https://travis-ci.org/akveo/blur-admin.svg?branch=master)](https://travis-ci.org/akveo/blur-admin)

# BlurAdmin Angular admin panel front-end framework

Customizable admin panel framework made with :heart: by [Akveo team](http://akveo.com/). Follow us on [Twitter](https://twitter.com/akveo_inc) to get latest news about this template first!

### Demo
**[Mint version demo](http://akveo.com/blur-admin-mint/)**             |  **[Blur version demo](http://akveo.com/blur-admin/)**
:-------------------------:|:-------------------------:
![Mint version demo](http://i.imgur.com/A3TMviJ.png)  |  ![Blur version demo](http://i.imgur.com/EAoiK2O.jpg)

## Angular 2 version
Here you can find Angular2 based version: [ng2-admin](https://github.com/akveo/ng2-admin).

### Documentation
Installation, customization and other useful articles: https://akveo.github.io/blur-admin/

*If you have problems installing and just want to download JS and css files, you can find download links here*: http://akveo.github.io/blur-admin/articles/091-downloads/

## How can I support developers?
- Star our GitHub repo
- Create pull requests, submit bugs, suggest new features or documentation updates
- Follow us on [Twitter](https://twitter.com/akveo_inc)
- Like our page on [Facebook](https://www.facebook.com/akveo/)

## Can I hire you guys?
Yes! We are available for hire. Visit [our homepage](http://akveo.com/) or simply leave us a note to contact@akveo.com. We will be happy to work with you!

## Features
* Responsive layout
* High resolution
* Bootstrap CSS Framework
* Sass
* Gulp build
* AngularJS
* Jquery
* Charts (amChart, Chartist, Chart.js, Morris)
* Maps (Google, Leaflet, amMap)
* etc

License
-------------
<a href=/LICENSE.txt target="_blank">MIT</a> license.

### From akveo

Enjoy!
We're always happy to hear your feedback.


================================================
FILE: bower.json
================================================
{
  "name": "blur-admin",
  "version": "1.3.1",
  "homepage": "https://github.com/1itvinka/blur-admin",
  "authors": [
    "akveo"
  ],
  "description": "Blur Admin HTML template",
  "license": "MIT",
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ],
  "dependencies": {
    "jquery": "~3.1.1",
    "jquery-ui": "~1.12.1",
    "jquery.easing": "~1.3.1",
    "jquery.easy-pie-chart": "~2.1.6",
    "chart.js": "~2.4.0",
    "Ionicons": "ionicons#~2.0.1",
    "amcharts": "~3.15.2",
    "amcharts-stock": "*",
    "ammap": "~3.14.5",
    "angular": "~1.5.8",
    "angular-route": "~1.5.8",
    "angular-slimscroll": "~1.1.5",
    "angular-smart-table": "~2.1.3",
    "angular-toastr": "~2.1.1",
    "angular-touch": "~1.5.8",
    "angular-ui-sortable": "~0.15.0",
    "animate.css": "~3.5.2",
    "bootstrap": "~3.3.5",
    "bootstrap-select": "~1.12.1",
    "bootstrap-switch": "~3.3.2",
    "bootstrap-tagsinput": "~0.7.1",
    "font-awesome": "fontawesome#~4.4.0",
    "fullcalendar": "~3.0.1",
    "highlight": "~8.8.0",
    "leaflet": "~0.7.5",
    "moment": "~2.17.0",
    "slimScroll": "jquery-slimscroll#~1.3.6",
    "angular-progress-button-styles": "~0.1.0",
    "angular-ui-router": "~0.3.2",
    "angular-chart.js": "~1.0.3",
    "angular-chartist.js": "~3.3.12",
    "chartist": "0.9.5",
    "angular-morris-chart": "~1.1.0",
    "ionrangeslider": "2.1.4",
    "angular-bootstrap": "~1.3.3",
    "angular-animate": "~1.5.8",
    "textAngular": "~1.4.6",
    "angular-xeditable": "~0.5.0",
    "ng-js-tree": "~0.0.7",
    "angular-ui-select": "^0.19.6"
  },
  "resolutions": {
    "angular": "~1.5.9",
    "jquery": "~3.1.1"
  },
  "overrides": {
    "amcharts": {
      "main": [
        "./dist/amcharts/amcharts.js",
        "./dist/amcharts/plugins/responsive/responsive.min.js",
        "./dist/amcharts/serial.js",
        "./dist/amcharts/funnel.js",
        "./dist/amcharts/pie.js",
        "./dist/amcharts/gantt.js"
      ]
    },
    "amcharts-stock": {
      "main": "./dist/amcharts/amstock.js"
    },
    "ammap": {
      "main": [
        "./dist/ammap/ammap.js",
        "./dist/ammap/maps/js/worldLow.js"
      ]
    },
    "bootstrap": {
      "main": [
        "dist/css/bootstrap.css",
        "js/dropdown.js",
        "./dist/fonts/**.*"
      ]
    },
    "slimScroll": {
      "main": "./jquery.slimscroll.js"
    },
    "font-awesome": {
      "main": [
        "css/font-awesome.css",
        "fonts/FontAwesome.otf",
        "fonts/fontawesome-webfont.eot",
        "fonts/fontawesome-webfont.svg",
        "fonts/fontawesome-webfont.ttf",
        "fonts/fontawesome-webfont.woff",
        "fonts/fontawesome-webfont.woff2"
      ]
    }
  }
}


================================================
FILE: docs/config.json
================================================
{
  "baseUrl": "/blur-admin/",
  "locals": {
    "url": "http://localhost:8080",
    "name": "The Wintersmith's blog",
    "owner": "Someone",
    "description": "Ramblings of an immor(t)al demigod"
  },
  "plugins": [
    "./plugins/paginator.coffee"
  ],
  "require": {
    "moment": "moment",
    "_": "underscore",
    "typogr": "typogr"
  },
  "jade": {
    "pretty": true
  },
  "markdown": {
    "smartLists": true,
    "smartypants": true
  },
  "paginator": {
    "perPage": 3,
    "groupSort": {
      "Quick Start": 1000,
      "Customization": 900,
      "Components": 800,
      "Other": 100
    }
  }
}


================================================
FILE: docs/contents/articles/001-getting-started/index.md
================================================
---
title: Getting Started
author: vl
sort: 999
group: Quick Start
template: article.jade
---

## What is BlurAdmin?

Blur admin is Angular front-end Admin Dashboard template. That means all data you can see on graphs, charts tables is hardcoded in Javascript. You can use any backend you want with it without limitations.

## How can it help me?

We believe that that at the moment a lot of business applications have some kind of admin interface inside of them. Sometimes it's not that obvious, but a lot of web applications have dashboard with panels, charts analytics.

BlurAdmin aims to bootstrap development of your product and provide ecosystem for building a prototype or even production-ready application.

Despite frameworks like Bootstrap provide a number of components, usually it's not enough of them to build real-world app. This template comes with lots of popular UI components with unified color scheme.

As well you can use BlurAdmin for learning purposes.

## List of features

* Responsive layout
* High resolution
* Bootstrap CSS Framework
* Sass
* Gulp build
* AngularJS
* Jquery
* Jquery ui
* Charts (amChart, Chartist, Chart.js, Morris)
* Maps (Google, Leaflet, amMap)
* etc

## I want to start developing with BlurAdmin

Welcome abroad!

You can start with [Installation Guidelines](/blur-admin/articles/002-installation-guidelines/). We describe there how can you download and run template on you local machine.

Good luck and have fun!

================================================
FILE: docs/contents/articles/002-installation-guidelines/index.md
================================================
---
title: Installation Guidelines
author: vl
sort: 500
group: Quick Start
template: article.jade
---

## Prerequisites

Despite BlurAdmin can be run without any development experience, it would be much easier if you already know something about it. In general following instruction do allow to run local copy by complete newbie, but it doesn't answer questions that can arise in the process of installation.

## Install tools

If you don't havee any of these tools installed already, you will need to:
* Download and install [git](https://git-scm.com/)
* Download and install nodejs [https://nodejs.org](https://nodejs.org)

**Note**: It seems like there are some problems with some libraries used in this template and old node versions. That's why we suggest you to have one of the latest.

## Clone repository and install dependencies

You will need to clone source code of BlurAdmin GitHub repository. To do this open console and execute following lines:
```bash
git clone https://github.com/akveo/blur-admin.git
```
After repository is cloned, go inside of repository directory and install dependencies there:
```bash
cd blur-admin
npm install
```
This will setup a working copy of BlurAdmin on your local machine

## Running local copy

To run local copy in development mode, execute:
```bash
gulp serve
```
This script should automatically open template in your default browser.

To run local copy in production mode, execute:
```bash
gulp serve:dist
```
For addition information about build, please check out [this angular generator](https://github.com/Swiip/generator-gulp-angular)


================================================
FILE: docs/contents/articles/011-changing-color-scheme/index.md
================================================
---
title: Changing Color Scheme
author: vl
sort: 900
group: Customization
template: article.jade
---

We tried to make the process of changing color scheme in BlurAdmin as easy as possible. 

By default BlurAdmin has two color profiles: mint and blur.
This article will help you to create your own color profile.
Let's say you want to make BlurAdmin dark.

First we advice you to take some colorscheme file as a basis. 
For light themes we suggest you to take `src/sass/theme/conf/colorScheme/_mint.scss` one and for dark take `src/sass/theme/conf/colorScheme/_blur.scss` one.
As we want dark theme, we're taking `blur`.

1) Copy `src/sass/theme/conf/colorScheme/_blur.scss` to `src/sass/theme/conf/colorScheme/_dark.scss`.

2) Include your colorscheme file in `src/sass/theme/common.scs`.

To do this, replace 
```scss
@import 'theme/conf/colorScheme/mint';
```

to

```scss
@import 'theme/conf/colorScheme/dark';
```

Now you can start changing your colors.
For example, after playing a bit with different colors, we changed 5 first main variables in `_dark.scss` file:
```sass
$default: rgba(#000000, 0.2); //Panel background color
$body-bg: #F0F3F4; // Body background color
$default-text: #ffffff; // Default text color
$help-text: #eeeeee; // Default subtext color
$label-text: #ffffff; // Text for labels in forms (Basically it should be equal to default-text in most cases)
```

After this is done, you need to setup javascript to use **same colors** while building charts and other javascript components.
To do this, add following code to some configuration block, for example to `src/app/theme/theme.config.js`:
```javascript
  baConfigProvider.changeColors({
    default: '#4e4e55',
    defaultText: '#e2e2e2',
  });
``` 

That's basically it! Right now your admin application should look like this:

![](new-color-scheme.jpg)

For further reference, please look in
- Colorscheme scss file (`src/sass/theme/conf/colorScheme/_mint.scss` or `src/sass/theme/conf/colorScheme/_blur.scss`)
- `src/app/theme/theme.configProvider.js` to understand which javascript colors can be changed
- If you want to know how to change theme to blur, read [following article](/blur-admin/articles/014-switch-to-blur-theme/)

================================================
FILE: docs/contents/articles/012-project-structure/index.md
================================================
---
title: Project Structure
author: vl
sort: 800
group: Customization
template: article.jade
---

Project structure was originally based on [this angular generator](https://github.com/Swiip/generator-gulp-angular). We made some changes we thought would be better for our particular problem.

The directory structure of this template is as follows:
```
├── bower.json               <- front-end library dependencies
├── gulpfile.js              <- main task runner file
├── package.json             <- mostly task runner dependencies
├── docs/                    <- wintersmith documentation generator
├── gulp/                    <- build tasks
├── src/                     <- main front-end assets
│   ├── 404.html
│   ├── auth.html
│   ├── index.html          <- main app dashboard page
│   ├── reg.html
│   ├── app/                <- angular application files
│   │   ├── app.js         <- angular application entry point. Used for managing dependencies
│   │   ├── pages/         <- UI router pages. Pages created for demonstration purposes. Put your application js and html files here
│   │   ├── theme/         <- theme components. Contains various common widgets, panels which used across application
│   ├── assets/             <- static files (images, fonts etc.)
│   ├── sass/               <- sass styles
│   │   ├── app/           <- application styles. Used mostly for demonstration purposes. Put your app styles here.
│   │   ├── theme/         <- theme styles. Used to customize bootstrap and other common components used in tempate.
```

In our template we tried to separate theme layer and presentation layer. We believe most of other templates have them combined. That's why when you start developing using them, it gets very hard for you to remove things you don't need. Though we understand that our structure is not ideal, but we're aiming to make it as good as possible.


================================================
FILE: docs/contents/articles/013-create-new-page/index.md
================================================
---
title: Create New Page
author: vl
sort: 300
group: Customization
template: article.jade
---

Blur admin uses [Angular UI router](https://github.com/angular-ui/ui-router) for navigation. 
That means to create new page you need to basically configure `ui-router` state.

We strongly recommend to follow pages structure in your application. 
If it doesn't fit your needs please create a GitHub issue and tell us why. We would be glad to discuss. 

Also we recommend to put pages to separate modules. 
This will allow you to easily switch off some pages in the future if needed.

## Page creation example

0) Let's assume we want to create a blank page with title 'My New Page'

1) Let's Create a new directory to contain our new page inside of `src/app/pages`. Let's call this directory `myNewPage`.

2) Then let's create blank angular module to contain our page called 'myNewPage.module.js' inside of `src/app/pages/myNewPage`:

```javascript
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.myNewPage', [])
      .config(routeConfig);

  /** @ngInject */
  function routeConfig() {
   
  }

})();
```

3) Then let's create empty html file called `my-new-page.html` inside of `src/app/pages/myNewPage`.

4) Lastly let's create ui router state for this page. To do this we need to modify module.js file we created on step 2:
```javascript
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.myNewPage', [])
      .config(routeConfig);

  /** @ngInject */
  function routeConfig($stateProvider) {
    $stateProvider
        .state('myNewPage', {
          url: '/myNewPage',
          templateUrl: 'app/pages/myNewPage/my-new-page.html',
          title: 'My New Page',
          sidebarMeta: {
            order: 800,
          },
        });
  }

})();
```

That's it! Your can now open your new page either from sidebar or through hash URL.



================================================
FILE: docs/contents/articles/014-switch-to-blur-theme/index.md
================================================
---
title: Enabling blur theme
author: kd
sort: 850
group: Customization
template: article.jade
---

If you want to switch theme to the blur, you need to follow 3 simple steps:

1) Blur theme needs some javascript to calculate initial background offsets for panels.
That's why first thing you need to do is enable that code.
This should be done in Angular **configuration block**. 
For example you can add following lines to `src/app/theme/theme.config.js`:
```javascript
  baConfigProvider.changeTheme({blur: true});
```

2) As well you need to change some colors. 
For example *Mint*'s default gray text color doesn't look good on blurred panels.
For our blur theme we use following configuration:
```javascript
  baConfigProvider.changeColors({
    default: 'rgba(#000000, 0.2)',
    defaultText: '#ffffff',
    dashboard: {
      white: '#ffffff',
    },
  });
```
3) CSS should also be recompiled. 
Before running build command, we suggest you to switch to *blur* color profile.
To do this replace theme in file `src/sass/theme/common.scss`:

 
```scss
@import 'theme/conf/colorScheme/mint';
```
 
to
 
```scss
@import 'theme/conf/colorScheme/blur';
```

3.1) If you would like to use some different background, replace following images:

- `src/app/assets/img/blur-bg.jpg` (main background image)
- `src/app/assets/img/blur-bg-blurred.jpg` (blurred background image used on panels)

We suggest using 10px Gaussian blur to blur original image.

_________________________________________ 
That's it! You have successfully blurred your theme! Run `gulp serve` and check it out.

================================================
FILE: docs/contents/articles/051-sidebar/index.md
================================================
---
title: Sidebar
author: vl
sort: 900
group: Components
template: article.jade
---

Sidebar is used to provide convenient way of navigation in the application. 
Application support only one sidebar per angular application. 
That means sidebar is basically a singletone object.
Currently sidebar supports level 1 and 2 sub menus.
 
Sidebar can be created using `baSidebar` directive:
```html
<ba-sidebar></ba-sidebar>
```

For now it support only javascript configuration. Though it can be configured manually or via `ui-router` states.
This methods can be used either together or one at a time.


## Manual configuration

For manual configuration you need to use `baSidebarServiceProvider` provider in angular [configuration block](https://docs.angularjs.org/guide/module#configuration-blocks).
The provider has `addStaticItem` method, which receives menuItem object as an argument, which can have following properties:

<table>
<thead>
<tr>
<td>property</td>
<td>type</td>
<td>meaning</td>
</tr>
</thead>
<tbody>

<tr>
<td>title</td>
<td>String</td>
<td>Name of the menu item</td>
</tr>

<tr>
<td>icon</td>
<td>String</td>
<td>Icon (it's a class name) to be displayed near title</td>
</tr>

<tr>
<td>stateRef</td>
<td>String</td>
<td>`ui-router` state associated with this menu item</td>
</tr>

<tr>
<td>fixedHref</td>
<td>String</td>
<td>Url associated with this menu item</td>
</tr>

<tr>
<td>blank</td>
<td>String</td>
<td>Specifies if following Url should be opened in new browser tab</td>
</tr>

<tr>
<td>subMenu</td>
<td>Array of menu items</td>
<td>List of menu items to be displayed as next level submenu</td>
</tr>

</tbody>
</table>

Sample manual configuration:
```javascript
    baSidebarServiceProvider.addStaticItem({
      title: 'Menu Level 1',
      icon: 'ion-ios-more'
    });
```

## Route configuration

By default sidebar iterates through all **ui-router** states you defined in your application and searches for `sidebarMeta` object in them.
For each state, which has this property, sidebar element is created. 

States are being grouped hierarchically. 
That means if there's a parent abstract state for some state and they both have `sidebarMeta` property, it will be displayed as a sub item of that abstract state's menu item.  

Name of the item is taken from `state`'s `title` property. Sample state configuration, which will add an item to sidebar:
```javascript
$stateProvider
        .state('dashboard', {
          url: '/dashboard',
          templateUrl: 'app/pages/dashboard/dashboard.html',
          title: 'Dashboard',
          sidebarMeta: {
            icon: 'ion-android-home',
            order: 0,
          },
        });
```

`sidebarMeta` object can have following properties:

<table>
<thead>
<tr>
<td>property</td>
<td>type</td>
<td>meaning</td>
</tr>
</thead>
<tbody>

<tr>
<td>icon</td>
<td>String</td>
<td>Icon (it's a class name) to be displayed near title</td>
</tr>

<tr>
<td>order</td>
<td>Number</td>
<td>Element's order in current hierarchy</td>
</tr>

</tbody>
</table>

================================================
FILE: docs/contents/articles/091-downloads/index.md
================================================
---
title: Downloads
author: vl
sort: 900
group: Other
template: article.jade
---

If you have problems installing node.js and/or other tools to build and run BlurAdmin on your machine and you just want to download html/js/css files, you can find links for download on this page.

Development (non-compressed) files can be found in `{ARCHIVE_ROOT}/blur-admin-{VERSION}/dev-release` directory. Compressed files are in `{ARCHIVE_ROOT}/blur-admin-{VERSION}/release` directory.
Then you can just open `index.html` to view your local version.

**Please note**: *As chrome doesn't support AJAX requests, when you open HTML file via **file** protocol, you might need to disable web security to have your template running.*

Sample command on OS X:

```bash
open -a Google\ Chrome --args --disable-web-security --user-data-dir=~/ChromeDevSession/
```

Sample command on Linux:

```bash
google-chrome --user-data-dir="~/chrome-dev-session" --disable-web-security
```

Sample command on Windows:

```bash
start chrome --user-data-dir="C:/Chrome dev session" --disable-web-security
```

## Links for downloads

[BlurAdmin 1.3.1](/blur-admin/downloads/blur-admin-1.3.1.zip)
[BlurAdmin 1.2.0](/blur-admin/downloads/blur-admin-1.2.0.zip)



================================================
FILE: docs/contents/css/main.css
================================================
html {
    font-family: 'Source Sans Pro', sans-serif;
    color: #484848;
    line-height: 1.28
}

p {
    margin: 0 0 10px
}

.subHeader {
    font-size: 21px;
    font-weight: 200;
    line-height: 30px;
    margin-bottom: 10px
}

em {
    font-style: italic
}

h1, h2, h3, h4, h5, h6 {
    margin: 10px 0;
    font-family: inherit;
    font-weight: bold;
    line-height: 20px;
    color: inherit;
    text-rendering: optimizelegibility
}

h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
    font-weight: normal;
    color: #7b7b7b
}

h1, h2, h3 {
    line-height: 40px
}

h1 {
    font-size: 39px
}

h2 {
    font-size: 31px
}

h3 {
    font-size: 23px
}

h4 {
    font-size: 16px
}

h5 {
    font-size: 14px
}

h6 {
    font-size: 11px
}

h1 small {
    font-size: 24px
}

h2 small {
    font-size: 18px
}

h3 small {
    font-size: 16px
}

h4 small {
    font-size: 14px
}

ul, ol {
    margin: 0 0 10px 25px;
    padding: 0
}

ul ul, ul ol, ol ol, ol ul {
    margin-bottom: 0
}

li {
    line-height: 20px
}

a {
    color: #c05b4d;
    text-decoration: none
}

a:hover, a:focus {
    color: #a5473a;
    text-decoration: underline
}

a:focus {
    outline: thin dotted #333;
    outline: 5px auto -webkit-focus-ring-color;
    outline-offset: -2px
}

.center {
    text-align: center
}

html * {
    color-profile: sRGB;
    rendering-intent: auto
}

* {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    border: none;
    margin: 0;
    padding: 0
}

html {
    background: #f9f9f9
}

.left {
    float: left
}

.right {
    float: right
}

.container {
    padding-top: 50px;
    min-width: 960px
}

.wrap {
    width: 960px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 20px;
    padding-right: 20px
}

.skinnyWrap {
    width: 690px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 20px;
    padding-right: 20px
}

hr {
    height: 0;
    border-top: 1px solid #ccc;
    border-bottom: 1px solid #eee
}

ul, li {
    margin-left: 20px
}

li + li {
    margin-top: 10px
}

h1 .anchor, h2 .anchor, h3 .anchor, h4 .anchor, h5 .anchor, h6 .anchor {
    margin-top: -50px;
    position: absolute
}

h1:hover .hash-link, h2:hover .hash-link, h3:hover .hash-link, h4:hover .hash-link, h5:hover .hash-link, h6:hover .hash-link {
    display: inline
}

.hash-link {
    color: #aaa;
    display: none
}

.nav-main {
    background: #222;
    color: #fafafa;
    position: fixed;
    top: 0;
    height: 50px;
    box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
    width: 100%;
    z-index: 100
}

.nav-main:after {
    content: "";
    display: table;
    clear: both
}

.nav-main a {
    color: #e9e9e9;
    text-decoration: none
}

.nav-main .nav-site-internal {
    margin: 0 0 0 20px
}

.nav-main .nav-site-external {
    float: right;
    margin: 0
}

.nav-main .nav-site li {
    margin: 0
}

.nav-main .nav-site li > a {
    box-sizing: content-box;
    padding: 0 10px;
    line-height: 50px;
    display: inline-block;
    height: 50px;
    color: #ddd
}

.nav-main .nav-site li > a:hover {
    color: #fff
}

.nav-main .nav-site li > a.active {
    color: #fafafa;
    border-bottom: 3px solid #cc7a6f;
    background: #333
}

.nav-main .nav-home {
    color: #ffffff;
    font-size: 24px;
    line-height: 50px;
    height: 50px;
    display: inline-block
}

.nav-main .nav-home .blur-label {
    color: #209e91;
}

.nav-main .nav-logo {
    vertical-align: middle;
    display: inline-block
}

.nav-main ul {
    display: inline-block;
    vertical-align: top
}

.nav-main li {
    display: inline
}

.hero {
    padding-bottom: 75px;
}

.hero .hero-content {
    color: #e9e9e9;
    font-weight: 300;
    background: #313131;
    padding-top: 50px;
}

.hero .text {
    font-size: 64px;
    text-align: center
}

.hero .minitext {
    font-size: 16px;
    text-align: center;
    text-transform: uppercase
}

.hero strong {
    color: #209e91;
    font-weight: 400
}

.white-text {
    color: rgb(249, 249, 249);
}

.hero .admin-screenshots {
    margin-top: 40px;
    display: flex;
    flex-direction: row;
}

.hero .admin-screenshot {
    width: 50%;
    padding: 0 15px;
    text-align: center;
    height: 250px;
}

.admin-screenshot img {
    width: 100%;
}

.demo-link {
    display: block;
    position: relative;
    line-height: 0;
}

.demo-link:before {
    content: '';
    position: absolute;
    width: 100%;
    bottom: 0;
    left: 0;
    height: 52px;
    background-image: linear-gradient(to bottom, transparent, rgb(249,259,249));
}

.demo-link .demo-link-label {
    display: flex;
    align-items: center;
    justify-content: center;
    content: 'Demo';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0,0,0,0.5);
    color: rgb(249, 249, 249);
    font-size: 32px;
    opacity: 0;
    transition: opacity 0.3s ease-out;
}

.demo-link:hover .demo-link-label {
    opacity: 1;
}

.buttons-unit {
    margin-top: 60px;
    text-align: center
}

.buttons-unit a {
    color: #61dafb
}

.buttons-unit .button {
    font-size: 24px;
    background: #cc7a6f;
    color: #fafafa
}

.buttons-unit .button:active {
    background: #c5695c
}

.buttons-unit.downloads {
    margin: 30px 0
}

.index-block {
    padding:40px 0;
}

.index-block h1 {
    text-align: center;
}

.index-block.black {
    background: #f2f2f2;
}

.why-items {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    margin-top: 15px;
    padding-top: 15px;
}

.why-item {
    flex: 33%;
    text-align: center;
    padding: 0 15px;
}

.why-item img {
    width: 110px;
}

.nav-docs {
    color: #2d2d2d;
    font-size: 14px;
    float: left;
    width: 210px
}

.nav-docs ul {
    list-style: none;
    margin: 0
}

.nav-docs ul ul {
    margin: 6px 0 0 20px
}

.nav-docs li {
    line-height: 16px;
    margin: 0 0 6px
}

.nav-docs h3 {
    text-transform: uppercase;
    font-size: 14px
}

.nav-docs a {
    color: #666;
    display: block
}

.nav-docs a:hover {
    text-decoration: none;
    color: #cc7a6f
}

.nav-docs a.active {
    color: #cc7a6f
}

.nav-docs a.external:after {
    content: "";
    display: inline-block;
    width: 10px;
    height: 10px;
    padding-left: 5px;
    background-image: url("../img/external.png");
    background-position: 100% 0;
    background-repeat: no-repeat;
    font-size: 10px;
    line-height: 1em;
    opacity: 0.5
}

@media only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 1.3 / 1), only screen and (min-resolution: 125dpi), only screen and (min-resolution: 1.3dppx) {
    .nav-docs a.external:after {
        background-image: url("../img/external_2x.png");
        background-size: 10px 10px
    }
}

.nav-docs .nav-docs-section {
    border-bottom: 1px solid #ccc;
    border-top: 1px solid #eee;
    padding: 12px 0
}

.nav-docs .nav-docs-section:first-child {
    padding-top: 0;
    border-top: 0
}

.nav-docs .nav-docs-section:last-child {
    padding-bottom: 0;
    border-bottom: 0
}

.nav-blog li {
    margin-bottom: 5px
}

.nav-docs-right {
    display: block;
    float: right;
    line-height: 50px;
}

.nav-docs-right a {
    color: #c05b4d;
    text-decoration: none;
}

.nav-docs-right a:hover {
    text-decoration: underline;
}

.home-section {
    margin: 50px 0
}

.home-divider {
    border-top-color: #bbb;
    margin: 0 auto;
    width: 400px
}

.skinny-row:after {
    content: "";
    display: table;
    clear: both
}

.skinny-col {
    float: left;
    margin-left: 40px;
    width: 305px
}

.skinny-col:first-child {
    margin-left: 0
}

.marketing-row {
    margin: 50px 0
}

.marketing-row:after {
    content: "";
    display: table;
    clear: both
}

.marketing-col {
    float: left;
    margin-left: 40px;
    width: 280px
}

.marketing-col h3 {
    color: #2d2d2d;
    font-size: 24px;
    font-weight: normal;
    text-transform: uppercase
}

.marketing-col p {
    font-size: 16px
}

.marketing-col:first-child {
    margin-left: 0
}

#examples h3, .home-presentation h3 {
    color: #2d2d2d;
    font-size: 24px;
    font-weight: normal;
    margin-bottom: 5px
}

#examples p {
    margin: 0 0 25px 0;
    max-width: 600px
}

#examples .example {
    margin-top: 60px
}

#examples #todoExample {
    font-size: 14px
}

#examples #todoExample ul {
    list-style-type: square;
    margin: 0 0 10px 0
}

#examples #todoExample input {
    border: 1px solid #ccc;
    font: 14px proxima-nova, "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
    padding: 3px;
    width: 150px
}

#examples #todoExample button {
    font: 14px proxima-nova, "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
    margin-left: 5px;
    padding: 4px 10px
}

#examples #markdownExample textarea {
    border: 1px solid #ccc;
    font: 14px proxima-nova, "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
    margin-bottom: 10px;
    padding: 5px
}

.home-bottom-section {
    margin-bottom: 100px
}

.docs-nextprev:after {
    content: "";
    display: table;
    clear: both
}

.jsxCompiler {
    margin: 0 auto;
    padding-top: 20px;
    width: 1220px
}

.jsxCompiler label.compiler-option {
    display: block;
    margin-top: 5px
}

.jsxCompiler #jsxCompiler {
    margin-top: 20px
}

.jsxCompiler .playgroundPreview {
    padding: 0;
    width: 600px;
    word-wrap: break-word
}

.jsxCompiler .playgroundPreview pre {
    font-family: 'source-code-pro', Menlo, Consolas, 'Courier New', monospace;
    font-size: 13px;
    line-height: 1.5
}

.jsxCompiler .playgroundError {
    padding: 15px 20px
}

.docs-prev {
    float: left
}

.docs-next {
    float: right
}

footer {
    font-size: 13px;
    font-weight: 600;
    margin-top: 36px;
    margin-bottom: 18px;
    overflow: auto
}

section.black content {
    padding-bottom: 18px
}

.blogContent {
    padding-top: 20px
}

.blogContent:after {
    content: "";
    display: table;
    clear: both
}

.blogContent blockquote {
    padding: 5px 15px;
    margin: 20px 0;
    background-color: #f8f5ec;
    border-left: 5px solid #f7ebc6
}

.blogContent h2 > code {
    font-size: inherit;
    line-height: inherit;
    color: #555;
    background-color: rgba(0, 0, 0, 0.04)
}

.documentationContent {
    padding-top: 20px
}

.documentationContent:after {
    content: "";
    display: table;
    clear: both
}

.documentationContent .subHeader {
    font-size: 24px
}

.documentationContent h2 {
    margin-top: 30px
}

.documentationContent blockquote {
    padding: 15px 30px 15px 15px;
    margin: 20px 0;
    background-color: rgba(204, 122, 111, 0.1);
    border-left: 5px solid rgba(191, 87, 73, 0.2)
}

.documentationContent blockquote h4 {
    margin-top: 0
}

.documentationContent blockquote p {
    margin-bottom: 0
}

.documentationContent blockquote p:first-child {
    font-weight: bold;
    font-size: 17.5px;
    line-height: 20px;
    margin-top: 0;
    text-rendering: optimizelegibility
}

.docs-prevnext {
    padding-top: 40px;
    padding-bottom: 40px
}

.button {
    background: -webkit-linear-gradient(#9a9a9a, #646464);
    background: linear-gradient(#9a9a9a, #646464);
    border-radius: 4px;
    padding: 8px 16px;
    font-size: 18px;
    font-weight: 400;
    margin: 0 12px;
    display: inline-block;
    color: #fafafa;
    text-decoration: none;
    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
    text-decoration: none
}

.button:hover {
    text-decoration: none
}

.button:active {
    box-shadow: none
}

.hero .button {
    box-shadow: 1px 3px 3px rgba(0, 0, 0, 0.3)
}

.button.blue {
    background: -webkit-linear-gradient(#77a3d2, #4783c2);
    background: linear-gradient(#77a3d2, #4783c2)
}

.row {
    padding-bottom: 4px
}

.row .span4 {
    width: 33.33%;
    display: table-cell
}

.row .span8 {
    width: 66.66%;
    display: table-cell
}

.row .span6 {
    width: 50%;
    display: table-cell
}

p {
    margin: 10px 0
}

.highlight {
    padding: 10px;
    margin-bottom: 20px
}

figure {
    text-align: center
}

.inner-content {
    float: right;
    width: 650px
}

.nosidebar .inner-content {
    float: none;
    margin: 0 auto
}

.inner-content img {
    max-width: 100%;
}

.inner-content table {
    border-collapse: collapse;
    width: 100%;
}
.inner-content th, .inner-content td {
    padding: 0.25rem;
    text-align: left;
    border: 1px solid #ccc;
}
.inner-content tbody tr:nth-child(odd) {
    background: #eee;
}

h1:after {
    content: "";
    display: table;
    clear: both
}

.edit-page-link {
    float: right;
    font-size: 16px;
    font-weight: normal;
    line-height: 20px;
    margin-top: 17px
}

.post-list-item + .post-list-item {
    margin-top: 60px
}

/* code styling */

code {
    font-family: 'Anonymous Pro', sans-serif;
    font-size: 0.85em;
    color: #000;
}

pre code {
    display: block;
    line-height: 1.1;
    color: #333333;
    background: #f8f5ec;
    padding: 30px 14px 14px;
    position: relative;
    overflow-x: auto;
}

pre code:before {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    padding: 3px 7px;
    font-size: 12px;
    font-weight: bold;
    color: #c2c0bc;
    background-color: #f1ede4;
    content: "Code";
}

p code {
    padding: 0.1em 0.3em 0.2em;
    border-radius: 0.3em;
    position: relative;
    background: #fffff3;

    white-space: nowrap;
}

/* syntax hl stuff */

code.lang-markdown {
    color: #424242;
}

code.lang-markdown .header,
code.lang-markdown .strong {
    font-weight: bold;
}

code.lang-markdown .emphasis {
    font-style: italic;
}

code.lang-markdown .horizontal_rule,
code.lang-markdown .link_label,
code.lang-markdown .code,
code.lang-markdown .header,
code.lang-markdown .link_url {
    color: #555;
}

code.lang-markdown .blockquote,
code.lang-markdown .bullet {
    color: #bbb;
}

/* Tomorrow Theme */
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
.tomorrow-comment, pre .comment, pre .title {
    color: #8e908c;
}

.tomorrow-red, pre .variable, pre .attribute, pre .tag, pre .regexp, pre .ruby .constant, pre .xml .tag .title, pre .xml .pi, pre .xml .doctype, pre .html .doctype, pre .css .id, pre .css .class, pre .css .pseudo {
    color: #c82829;
}

.tomorrow-orange, pre .number, pre .preprocessor, pre .built_in, pre .literal, pre .params, pre .constant {
    color: #f5871f;
}

.tomorrow-yellow, pre .class, pre .ruby .class .title, pre .css .rules .attribute {
    color: #eab700;
}

.tomorrow-green, pre .string, pre .value, pre .inheritance, pre .header, pre .ruby .symbol, pre .xml .cdata {
    color: #718c00;
}

.tomorrow-aqua, pre .css .hexcolor {
    color: #3e999f;
}

.tomorrow-blue, pre .function, pre .python .decorator, pre .python .title, pre .ruby .function .title, pre .ruby .title .keyword, pre .perl .sub, pre .javascript .title, pre .coffeescript .title {
    color: #4271ae;
}

.tomorrow-purple, pre .keyword, pre .javascript .function {
    color: #8959a8;
}

/* media queries */


@media screen and (max-width: 960px) {
    .nav-main {
        position: static
    }

    .container {
        padding-top: 0
    }
}

================================================
FILE: docs/contents/index.json
================================================
{
  "template": "index.jade",
  "activeHome": true
}


================================================
FILE: docs/package.json
================================================
{
  "dependencies": {
    "moment": "2.3.x",
    "underscore": "1.4.x",
    "typogr": "0.5.x"
  },
  "private": "true"
}


================================================
FILE: docs/plugins/paginator.coffee
================================================

module.exports = (env, callback) ->
  ### Paginator plugin. Defaults can be overridden in config.json
      e.g. "paginator": {"perPage": 10} ###

  defaults =
    template: 'index.jade' # template that renders pages
    articles: 'articles' # directory containing contents to paginate
    first: 'index.html' # filename/url for first page
    filename: 'page/%d/index.html' # filename for rest of pages
    perPage: 2 # number of articles per page
    groupSort: {}

  # assign defaults any option not set in the config file
  options = env.config.paginator or {}
  for key, value of defaults
    options[key] ?= defaults[key]

  getArticles = (contents) ->
    # helper that returns a list of articles found in *contents*
    # note that each article is assumed to have its own directory in the articles directory
    articles = contents[options.articles]._.directories.map (item) -> item.index
    # skip articles that does not have a template associated
    articles = articles.filter (item) -> item.template isnt 'none'
    # sort article by date
    articles.sort (a, b) -> b.metadata.sort - a.metadata.sort
    groupedArticlesObj = articles.reduce (acc, curr) ->
      groupName = curr.metadata.group
      if not acc[groupName]
        acc[groupName] =
          groupName: groupName
          items: []
      acc[groupName].items.push curr
      return acc
    , {}
    groupedArticles = (val for key, val of groupedArticlesObj)
    groupedArticles.sort (a, b) -> (options.groupSort[b.groupName] || 0) - (options.groupSort[a.groupName] || 0)
    return groupedArticles

  # add the article helper to the environment so we can use it later
  env.helpers.getGroupedArticles = getArticles

  # tell the plugin manager we are done
  callback()


================================================
FILE: docs/templates/article.jade
================================================

extends layout

block title
  | BlurAdmin documentation - #{page.title]

block content
  section.content.wrap.documentationContent
    div.nav-docs
      each group in groupedArticles
        div.nav-docs.section
          h3=group.groupName
          ul
            each article in group.items
              li
                a(href=article.url)(class= locals.page === article ? 'active': '')= article.title
    div.inner-content
      h1=locals.page.title
      div.subHeader
      != typogr(page.html).typogrify()



================================================
FILE: docs/templates/index.jade
================================================

extends layout

block title
  | BlurAdmin angular admin dashboard template

block content
  div.hero
    div.hero-content
      div.wrap
        div.text
          strong Blur#[span.white-text Admin]
        div.minitext Angular admin panel front-end framework
        div.buttons-unit
          a.button(href=installationArticleUrl) Installation guidelines
          a.button(href=firstArticleUrl) Documentation
        div.admin-screenshots
          div.admin-screenshot
            h3 Mint version
            a.demo-link(href='http://akveo.com/blur-admin-mint/',target='_blank')
              img(src=contents.images['blur-preview-mint.jpg'].url)
              span.demo-link-label Demo
          div.admin-screenshot
            h3 Blur version (experimental)
            a.demo-link(href='http://akveo.com/blur-admin/',target='_blank')
              img(src=contents.images['blur-preview.jpg'].url)
              span.demo-link-label Demo
  div.index-block
    div.wrap
      h1 Why BlurAdmin?
      div.why-items
        div.why-item
          img(src=contents.images['why-structure.svg'].url)
          h4 Awesome structure
          p Feature-based structure has proven itself as a good choice for large angular applications.
        div.why-item
          img(src=contents.images['why-design.svg'].url)
          h4 Neat design
          p We have put a lot of efforts and carefully selected each color and character for this template!
        div.why-item
          img(src=contents.images['why-practices.svg'].url)
          h4 Ease of customization
          p Check out #[a(href='/blur-admin/articles/011-changing-color-scheme') our article], where we describe how you can create different look in just 2 minutes!
  div.index-block.black
    div.wrap
      h1 Is it free?
      p Blur admin is completely free and MIT licensed. That means you can do whatever you want with it.
      p
        | Initially we planned to sell it on template markets.
        |&nbsp;But they #[a(href='http://akveo.com/blog/why-i-hate-template-markets/',target='_blank') rejected us several times].
        |&nbsp;That's why we decided to make it open-source. And honestly, we have completely no regrets about it!
        |&nbsp;And we suggest you to not waste your money and use our template instead of paid ones!
        |&nbsp;Trust us, it's better than large number of them.
  div.index-block
    div.wrap
      h1 How can I support you guys?
      p Here's what you can do:
      ul
        li Star #[a(href='https://github.com/akveo/blur-admin',target='_blank') our GitHub repo]
        li Create pull requests, submit bugs, suggest new features
        li Follow #[a(href='https://twitter.com/akveo_inc',target='_blank') us on Twitter]
        li Like #[a(href='https://www.facebook.com/akveo/',target='_blank') our page on Facebook]
  div.index-block.black
    div.wrap
      h1 Can I hire you?
      p Yes! We are available for hire. Visit #[a(href='http://akveo.com',target='_blank') our homepage]
        |&nbsp;or simply leave us a note to #[a(href='mailto:contact@akveo.com') contact@akveo.com].
        |&nbsp;We will be happy to work with you!



================================================
FILE: docs/templates/layout.jade
================================================
doctype html
block vars
  - var bodyclass = null;
  - var groupedArticles = env.helpers.getGroupedArticles(contents);
  - var firstArticleUrl = groupedArticles[0].items[0].url
  - var installationArticleUrl = groupedArticles[0].items[1].url
html(lang='en')
  head
    block head
      meta(charset='utf-8')
      meta(http-equiv='X-UA-Compatible', content='IE=edge,chrome=1')
      meta(name='viewport', content='width=device-width')
      meta(name='keywords', content='admin,dashboard,template,angular,bootstrap,blur,panel,html,css,javascript')
      title
        block title
          = locals.name
      link(rel='alternate', href=locals.url+'/feed.xml', type='application/rss+xml', title=locals.description)
      link(rel='stylesheet', href='https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900|Anonymous+Pro:400,700,400italic,700italic&subset=latin,greek,greek-ext,vietnamese,cyrillic-ext,latin-ext,cyrillic')
      link(rel='stylesheet', href=contents.css['main.css'].url)
      link(rel='shortcut icon', href=contents.images['favicon.png'].url)
      | <!-- Google Tag Manager -->
      | <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
      | new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
      | j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
      | 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
      | })(window,document,'script','dataLayer','GTM-K8MXX5F');</script>
      | <!-- End Google Tag Manager -->
  body(class=bodyclass)
    | <!-- Google Tag Manager (noscript) -->
    | <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-K8MXX5F"
    | height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    | <!-- End Google Tag Manager (noscript) -->
    div.container
      div.nav-main
        div.wrap
          a.nav-home(href=contents['index'].url)
            img.nav-logo(src=contents.images['blur-admin-logo.png'].url, width=36,height=36)
            |&nbsp;#[span.blur-label Blur]Admin
          ul.nav-site.nav-site-internal
            li
              a(class= locals.page.metadata.activeHome ? 'active': '')(href=contents['index'].url) Home
            li
              a(class= !locals.page.metadata.activeHome ? 'active': '')(href=firstArticleUrl) Docs
          span.nav-docs-right
            | Need some help? Let us know! #[a(href='mailto:contact@akveo.com') contact@akveo.com]
      block content
        h2 Welcome to blur admin!
      footer.wrap
        div.left Powered by Angular, Bootstrap, Gulp and more...
        div.right
          | © 2015–2016 Akveo LLC<br />
          | Documentation licensed under #[a(href='https://creativecommons.org/licenses/by/4.0/') CC BY 4.0].
    a(href='https://github.com/akveo/blur-admin')
      img(style='position: fixed; top: 0; right: 0; border: 0; z-index: 1000;',src='https://camo.githubusercontent.com/365986a132ccd6a44c23a9169022c0b5c890c387/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67',alt='Fork me on GitHub',data-canonical-src='https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png')


================================================
FILE: gulp/build.js
================================================
'use strict';

var path = require('path');
var gulp = require('gulp');
var conf = require('./conf');

var $ = require('gulp-load-plugins')({
  pattern: ['gulp-*', 'main-bower-files', 'uglify-save-license', 'del']
});

gulp.task('partials', function () {
  return gulp.src([
    path.join(conf.paths.src, '/app/**/*.html'),
    path.join(conf.paths.tmp, '/serve/app/**/*.html')
  ])
    .pipe($.minifyHtml({
      empty: true,
      spare: true,
      quotes: true
    }))
    .pipe($.angularTemplatecache('templateCacheHtml.js', {
      module: 'BlurAdmin',
      root: 'app'
    }))
    .pipe(gulp.dest(conf.paths.tmp + '/partials/'));
});

gulp.task('html', ['inject', 'partials'], function () {
  var partialsInjectFile = gulp.src(path.join(conf.paths.tmp, '/partials/templateCacheHtml.js'), { read: false });
  var partialsInjectOptions = {
    starttag: '<!-- inject:partials -->',
    ignorePath: path.join(conf.paths.tmp, '/partials'),
    addRootSlash: false
  };

  var htmlFilter = $.filter('*.html', { restore: true, dot:true});
  var jsFilter = $.filter('**/*.js', { restore: true, dot:true});
  var cssFilter = $.filter('**/*.css', { restore: true, dot:true});
  var assets;

  return gulp.src(path.join(conf.paths.tmp, '/serve/*.html'))
    .pipe($.inject(partialsInjectFile, partialsInjectOptions))
    .pipe(assets = $.useref.assets())
    .pipe($.rev())
    .pipe(jsFilter)
    .pipe($.sourcemaps.init())
    .pipe($.ngAnnotate())
    .pipe($.uglify({ preserveComments: $.uglifySaveLicense })).on('error', conf.errorHandler('Uglify'))
    .pipe($.sourcemaps.write('maps'))
    .pipe(jsFilter.restore)
    .pipe(cssFilter)
    .pipe($.sourcemaps.init())
    .pipe($.replace('../../bower_components/bootstrap-sass/assets/fonts/bootstrap/', '../fonts/'))
    .pipe($.minifyCss({ processImport: false }))
    .pipe($.sourcemaps.write('maps'))
    .pipe(cssFilter.restore)
    .pipe(assets.restore())
    .pipe($.useref())
    .pipe($.revReplace())
    .pipe(htmlFilter)
    .pipe($.minifyHtml({
      empty: true,
      spare: true,
      quotes: true,
      conditionals: true
    }))
    .pipe(htmlFilter.restore)
    .pipe(gulp.dest(path.join(conf.paths.dist, '/')))
    .pipe($.size({ title: path.join(conf.paths.dist, '/'), showFiles: true }));
  });

// Only applies for fonts from bower dependencies
// Custom fonts are handled by the "other" task
gulp.task('fonts', function () {
  return gulp.src($.mainBowerFiles('**/*.{eot,svg,ttf,woff,woff2}'))
    .pipe($.flatten())
    .pipe(gulp.dest(path.join(conf.paths.dist, '/fonts/')));
});

gulp.task('other', ['copyVendorImages'], function () {
  var fileFilter = $.filter(function (file) {
    return file.stat.isFile();
  });

  return gulp.src([
    path.join(conf.paths.src, '/**/*'),
    path.join('!' + conf.paths.src, '/**/*.{html,css,js,scss,md}'),
    path.join(conf.paths.tmp, '/serve/**/assets/img/theme/vendor/**/*')
  ])
    .pipe(fileFilter)
    .pipe(gulp.dest(path.join(conf.paths.dist, '/')));
});

gulp.task('clean', function () {
  return $.del([path.join(conf.paths.dist, '/'), path.join(conf.paths.tmp, '/')]);
});

gulp.task('build', ['html', 'fonts', 'other']);


================================================
FILE: gulp/conf.js
================================================
/**
 *  This file contains the variables used in other gulp files
 *  which defines tasks
 *  By design, we only put there very generic config values
 *  which are used in several places to keep good readability
 *  of the tasks
 */

var gutil = require('gulp-util');

/**
 *  The main paths of your project handle these with care
 */
exports.paths = {
  src: 'src',
  dist: 'release',
  devDist: 'dev-release',
  tmp: '.tmp',
  e2e: 'e2e'
};

/**
 *  Wiredep is the lib which inject bower dependencies in your project
 *  Mainly used to inject script tags in the index.html but also used
 *  to inject css preprocessor deps and js files in karma
 */
exports.wiredep = {
  exclude: [/\/bootstrap\.js$/, /\/bootstrap-sass\/.*\.js/, /\/require\.js/],
  directory: 'bower_components'
};

/**
 *  Common implementation for an error handler of a Gulp plugin
 */
exports.errorHandler = function(title) {
  'use strict';

  return function(err) {
    gutil.log(gutil.colors.red('[' + title + ']'), err.toString());
    this.emit('end');
  };
};


================================================
FILE: gulp/devRelease.js
================================================
'use strict';

var path = require('path');
var gulp = require('gulp');
var conf = require('./conf');

var $ = require('gulp-load-plugins')({
  pattern: ['gulp-*', 'main-bower-files']
});

var _ = require('lodash');

gulp.task('dev-fonts', function () {
  return gulp.src($.mainBowerFiles())
      .pipe($.filter('**/*.{eot,svg,ttf,woff,woff2}'))
      .pipe($.flatten())
      .pipe(gulp.dest(path.join(conf.paths.devDist, 'fonts')));
});

gulp.task('dev-copy-lib', function () {
  var assets = require('wiredep')(_.extend({}, conf.wiredep));
  var srcList = [];
  srcList.push.apply(srcList, assets.js);
  srcList.push.apply(srcList, assets.css);
  return gulp
      .src(srcList/*, { base: '.' }*/)
/*      .pipe($.rename(function (p) {
        p.dirname = p.dirname.replace(/\\/g, '/').replace('bower_components/', '');
        if (p.dirname.indexOf('/') !== -1) {
          p.dirname = p.dirname.substr(0, p.dirname.indexOf('/'));
        }
      }))*/
      .pipe(gulp.dest(path.join(conf.paths.devDist, 'lib')));
});

gulp.task('dev-css-replace', ['dev-copy-assets'], function() {
  return gulp.src(path.join(conf.paths.devDist, '*.html'))
      .pipe($.replace(/<link rel="stylesheet" href="\.\.\/bower_components\/.*\/(.*)"\s*?\/>/g, '<link rel="stylesheet" href="lib/$1" >'))
      .pipe(gulp.dest(conf.paths.devDist));
});

gulp.task('dev-js-replace', ['dev-copy-assets'], function() {
  return gulp.src(path.join(conf.paths.devDist, '.html'))
      .pipe($.replace(/<script src="\.\.\/bower_components\/.*\/(.*)"\s*?>/g, '<script src="lib/$1">'))
      .pipe(gulp.dest(conf.paths.devDist));
});

gulp.task('dev-copy-assets', ['inject', 'dev-copy-lib', 'dev-fonts'], function () {
  return gulp
      .src([
        conf.paths.src + '/**/*',
        path.join(conf.paths.tmp, '/serve/**/*')
      ])
      .pipe(gulp.dest(conf.paths.devDist));
});

gulp.task('dev-release', ['dev-css-replace', 'dev-js-replace']);


================================================
FILE: gulp/docs.js
================================================
'use strict';

var gulp = require('gulp');

var $ = require('gulp-load-plugins')();

gulp.task('wintersmith-generate', $.shell.task([
  'wintersmith build'
], { cwd: 'docs' }));

gulp.task('deploy-docs', ['wintersmith-generate'], function() {
  return gulp.src('./docs/build/**/*')
      .pipe($.ghPages());
});

================================================
FILE: gulp/images.js
================================================
'use strict';

var path = require('path');
var gulp = require('gulp');
var conf = require('./conf');

gulp.task('copyVendorImages', function () {
  return gulp
    .src([
      path.join(conf.wiredep.directory, '**/ammap/dist/ammap/images/**/*'),
      path.join(conf.wiredep.directory, '**/amcharts/dist/amcharts/images/**/*'),
      path.join(conf.wiredep.directory, '**/ionrangeslider/img/**/*'),
      path.join(conf.wiredep.directory, '**/jstree/dist/themes/**/*'),
      path.join(conf.wiredep.directory, '**/leaflet/dist/images/**/*')
    ])
    .pipe(gulp.dest(path.join(conf.paths.tmp, 'serve', '/assets/img/theme/vendor')));
});



================================================
FILE: gulp/inject.js
================================================
'use strict';

var path = require('path');
var gulp = require('gulp');
var conf = require('./conf');

var $ = require('gulp-load-plugins')();

var wiredep = require('wiredep').stream;
var _ = require('lodash');

var browserSync = require('browser-sync');

gulp.task('inject-reload', ['inject'], function () {
  browserSync.reload();
});

gulp.task('inject', ['scripts', 'styles', 'injectAuth', 'inject404', 'copyVendorImages'], function () {
  var injectStyles = gulp.src([
    path.join(conf.paths.tmp, '/serve/app/main.css'),
    path.join('!' + conf.paths.tmp, '/serve/app/vendor.css')
  ], {read: false});

  var injectScripts = gulp.src([
    path.join(conf.paths.src, '/assets/js/**/*.js'),
    path.join(conf.paths.src, '/app/**/*.module.js'),
    path.join(conf.paths.src, '/app/**/*.js'),
    path.join('!' + conf.paths.src, '/app/**/*.spec.js'),
    path.join('!' + conf.paths.src, '/app/**/*.mock.js'),
  ])
    /*.pipe($.angularFilesort())*/.on('error', conf.errorHandler('AngularFilesort'));

  var injectOptions = {
    ignorePath: [conf.paths.src, path.join(conf.paths.tmp, '/serve')],
    addRootSlash: false
  };

  return gulp.src(path.join(conf.paths.src, '/index.html'))
    .pipe($.inject(injectStyles, injectOptions))
    .pipe($.inject(injectScripts, injectOptions))
    .pipe(wiredep(_.extend({}, conf.wiredep)))
    .pipe(gulp.dest(path.join(conf.paths.tmp, '/serve')));
});

gulp.task('injectAuth', ['stylesAuth'], function () {
  return injectAlone({
    css: [path.join('!' + conf.paths.tmp, '/serve/app/vendor.css'), path.join(conf.paths.tmp, '/serve/app/auth.css')],
    paths: [path.join(conf.paths.src, '/auth.html'), path.join(conf.paths.src, '/reg.html')]
  })
});

gulp.task('inject404', ['styles404'], function () {
  return injectAlone({
    css: [path.join('!' + conf.paths.tmp, '/serve/app/vendor.css'), path.join(conf.paths.tmp, '/serve/app/404.css')],
    paths: path.join(conf.paths.src, '/404.html')
  })
});

var injectAlone = function (options) {
  var injectStyles = gulp.src(
    options.css
    , {read: false});

  var injectOptions = {
    ignorePath: [conf.paths.src, path.join(conf.paths.tmp, '/serve')],
    addRootSlash: false
  };

  return gulp.src(options.paths)
    .pipe($.inject(injectStyles, injectOptions))
    .pipe(wiredep(_.extend({}, conf.wiredep)))
    .pipe(gulp.dest(path.join(conf.paths.tmp, '/serve')));
};

================================================
FILE: gulp/marketplace.js
================================================
'use strict';

var path = require('path');
var gulp = require('gulp');
var zip = require('gulp-zip');
var prompt = require('gulp-prompt');
var rename = require('gulp-rename');

gulp.task('marketplace-release', ['build', 'dev-release'], function () {
  return gulp.src('')
    .pipe(prompt.prompt({
      type: 'input',
      name: 'version',
      message: 'Please enter release version (x.x.x)'
    }, function (res) {
      var nameAndVersion = 'blur-admin-' + res.version;
      return gulp
        .src(['src/**', 'release/**', 'dev-release/**', 'gulp/**', 'bower.json', 'gulpfile.js', 'package.json', 'README.md', '.gitignore'], {base: "."})
        .pipe(rename(function (path) {
          path.dirname = nameAndVersion + '/' + path.dirname;
        }))
        .pipe(zip(nameAndVersion + '.zip'))
        .pipe(gulp.dest('.'));
    }));

});

================================================
FILE: gulp/scripts.js
================================================
'use strict';

var path = require('path');
var gulp = require('gulp');
var conf = require('./conf');

var browserSync = require('browser-sync');

var $ = require('gulp-load-plugins')();


gulp.task('scripts-reload', function() {
  return buildScripts()
    .pipe(browserSync.stream());
});

gulp.task('scripts', function() {
  return buildScripts();
});

function buildScripts() {
  return gulp.src(path.join(conf.paths.src, '/app/**/*.js'))
    .pipe($.eslint())
    .pipe($.eslint.format())
    .pipe($.size())
};


================================================
FILE: gulp/server.js
================================================
'use strict';

var path = require('path');
var gulp = require('gulp');
var conf = require('./conf');

var browserSync = require('browser-sync');
var browserSyncSpa = require('browser-sync-spa');

var util = require('util');

var proxyMiddleware = require('http-proxy-middleware');

function browserSyncInit(baseDir, browser) {
  browser = browser === undefined ? 'default' : browser;

  var routes = null;
  if(baseDir === conf.paths.src || (util.isArray(baseDir) && baseDir.indexOf(conf.paths.src) !== -1)) {
    routes = {
      '/bower_components': 'bower_components'
    };
  }

  var server = {
    baseDir: baseDir,
    routes: routes
  };

  /*
   * You can add a proxy to your backend by uncommenting the line below.
   * You just have to configure a context which will we redirected and the target url.
   * Example: $http.get('/users') requests will be automatically proxified.
   *
   * For more details and option, https://github.com/chimurai/http-proxy-middleware/blob/v0.9.0/README.md
   */
  // server.middleware = proxyMiddleware('/users', {target: 'http://jsonplaceholder.typicode.com', changeOrigin: true});

  browserSync.instance = browserSync.init({
    startPath: '/',
    server: server,
    browser: browser,
    ghostMode: false
  });
}

browserSync.use(browserSyncSpa({
  selector: '[ng-app]'// Only needed for angular apps
}));

gulp.task('serve', ['watch'], function () {
  browserSyncInit([path.join(conf.paths.tmp, '/serve'), conf.paths.src]);
});

gulp.task('serve:dist', ['build'], function () {
  browserSyncInit(conf.paths.dist);
});

gulp.task('serve:e2e', ['inject'], function () {
  browserSyncInit([conf.paths.tmp + '/serve', conf.paths.src], []);
});

gulp.task('serve:e2e-dist', ['build'], function () {
  browserSyncInit(conf.paths.dist, []);
});


================================================
FILE: gulp/styles.js
================================================
'use strict';

var path = require('path');
var gulp = require('gulp');
var conf = require('./conf');

var browserSync = require('browser-sync');

var $ = require('gulp-load-plugins')();

var wiredep = require('wiredep').stream;
var _ = require('lodash');

gulp.task('styles-reload', ['styles'], function () {
  return buildStyles()
    .pipe(browserSync.stream());
});

gulp.task('styles', function () {
  return buildStyles();
});

gulp.task('stylesAuth', function () {
  return buildSingleScss(path.join(conf.paths.src, '/sass/auth.scss'));
});
gulp.task('styles404', function () {
  return buildSingleScss(path.join(conf.paths.src, '/sass/404.scss'));
});

var buildStyles = function () {
  var sassOptions = {
    style: 'expanded'
  };

  var injectFiles = gulp.src([
    path.join(conf.paths.src, '/sass/**/_*.scss'),
    '!' + path.join(conf.paths.src, '/sass/theme/conf/**/*.scss'),
    '!' + path.join(conf.paths.src, '/sass/404.scss'),
    '!' + path.join(conf.paths.src, '/sass/auth.scss')
  ], {read: false});

  var injectOptions = {
    transform: function (filePath) {
      filePath = filePath.replace(conf.paths.src + '/sass/', '');
      return '@import "' + filePath + '";';
    },
    starttag: '// injector',
    endtag: '// endinjector',
    addRootSlash: false
  };

  return gulp.src([
    path.join(conf.paths.src, '/sass/main.scss')
  ])
    .pipe($.inject(injectFiles, injectOptions))
    .pipe(wiredep(_.extend({}, conf.wiredep)))
    .pipe($.sourcemaps.init())
    .pipe($.sass(sassOptions)).on('error', conf.errorHandler('Sass'))
    .pipe($.autoprefixer()).on('error', conf.errorHandler('Autoprefixer'))
    .pipe($.sourcemaps.write())
    .pipe(gulp.dest(path.join(conf.paths.tmp, '/serve/app/')));
};

var buildSingleScss = function (paths) {
  var sassOptions = {
    style: 'expanded'
  };

  return gulp.src([paths])
    .pipe($.sass(sassOptions)).on('error', conf.errorHandler('Sass'))
    .pipe($.autoprefixer()).on('error', conf.errorHandler('Autoprefixer'))
    .pipe(gulp.dest(path.join(conf.paths.tmp, '/serve/app/')));
};


================================================
FILE: gulp/watch.js
================================================
'use strict';

var path = require('path');
var gulp = require('gulp');
var conf = require('./conf');

var browserSync = require('browser-sync');

function isOnlyChange(event) {
  return event.type === 'changed';
}

gulp.task('watch', ['inject'], function () {

  gulp.watch([path.join(conf.paths.src, '/*.html'), 'bower.json'], ['inject-reload']);

  gulp.watch([
    path.join(conf.paths.src, '/sass/**/*.css'),
    path.join(conf.paths.src, '/sass/**/*.scss')
  ], function(event) {
    if(isOnlyChange(event)) {
      gulp.start('styles-reload');
    } else {
      gulp.start('inject-reload');
    }
  });

  gulp.watch(path.join(conf.paths.src, '/app/**/*.js'), function(event) {
    if(isOnlyChange(event)) {
      gulp.start('scripts-reload');
    } else {
      gulp.start('inject-reload');
    }
  });

  gulp.watch(path.join(conf.paths.src, '/app/**/*.html'), function(event) {
    browserSync.reload(event.path);
  });
});


================================================
FILE: gulpfile.js
================================================
'use strict';

var gulp = require('gulp');
var wrench = require('wrench');

/**
 *  This will load all js or coffee files in the gulp directory
 *  in order to load all gulp tasks
 */
wrench.readdirSyncRecursive('./gulp').filter(function(file) {
  return (/\.(js|coffee)$/i).test(file);
}).map(function(file) {
  require('./gulp/' + file);
});


/**
 *  Default task clean temporaries directories and launch the
 *  main optimization build task
 */
gulp.task('default', ['clean'], function () {
  gulp.start('build');
});


================================================
FILE: package.json
================================================
{
  "name": "blur_admin",
  "version": "1.3.1",
  "devDependencies": {
    "bower": "~1.8.4",
    "browser-sync": "~2.18.2",
    "browser-sync-spa": "~1.0.3",
    "chalk": "~1.1.1",
    "del": "~2.2.2",
    "eslint-plugin-angular": "~0.12.0",
    "estraverse": "~4.2.0",
    "gulp": "~3.9.0",
    "gulp-angular-filesort": "~1.1.1",
    "gulp-angular-templatecache": "~2.0.0",
    "gulp-autoprefixer": "~3.1.1",
    "gulp-eslint": "~1.0.0",
    "gulp-filter": "~4.0.0",
    "gulp-flatten": "~0.3.1",
    "gulp-gh-pages": "^0.5.4",
    "gulp-inject": "~4.1.0",
    "gulp-load-plugins": "~1.4.0",
    "gulp-minify-css": "~1.2.1",
    "gulp-minify-html": "~1.0.4",
    "gulp-ng-annotate": "~2.0.0",
    "gulp-prompt": "^0.2.0",
    "gulp-protractor": "~3.0.0",
    "gulp-rename": "^1.2.2",
    "gulp-replace": "~0.5.4",
    "gulp-rev": "~7.1.2",
    "gulp-rev-replace": "~0.4.2",
    "gulp-sass": "^4.0.1",
    "gulp-shell": "^0.5.2",
    "gulp-size": "~2.1.0",
    "gulp-sourcemaps": "~1.6.0",
    "gulp-uglify": "~2.0.0",
    "gulp-useref": "~1.3.0",
    "gulp-util": "~3.0.6",
    "gulp-zip": "^3.0.2",
    "http-proxy-middleware": "~0.17.2",
    "lodash": "~4.17.2",
    "main-bower-files": "~2.13.1",
    "uglify-save-license": "~0.4.1",
    "wiredep": "~4.0.0",
    "wrench": "~1.5.8"
  },
  "scripts": {
    "postinstall": "bower install"
  }
}


================================================
FILE: preview.html
================================================
<p>
  <a href="http://akveo.com/blur-admin/" rel="nofollow">
    <img src="http://akveo.com/admin-images/blur-admin/promo_blur.jpg">
  </a>
</p>

<p>
  <h2>Description</h2>
  Latest and the most trending web design approaches were brought together in Blur admin to deliver you the best experience ever. Each color, character and image was carefully selected to make you love what you see.<br />
  <br />
  Extremely beautiful. Elegant. Charming. Enjoy it.<br />
  <br />
  Love,<br />
  Akveo team
</p>

<p>
  <h2>Features</h2>
<ul>
  <li>Responsive layout</li>
  <li>High resolution</li>
  <li>Bootstrap CSS Framework</li>
  <li>Sass</li>
  <li>Gulp build</li>
  <li>AngularJS</li>
  <li>Jquery</li>
  <li>Jquery ui</li>
  <li>WHAT YOU GUYS CONSIDER SHOULD BE HERE? PAGES AND STUFF OR ONLY FEATURES MENTIONED ABOVE?</li>

</ul>
</p>




================================================
FILE: src/404.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Blur Admin</title>

  <link href='https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900&subset=latin,greek,greek-ext,vietnamese,cyrillic-ext,latin-ext,cyrillic' rel='stylesheet' type='text/css'>

  <link rel="icon" type="image/png" sizes="16x16" href="assets/img/favicon-16x16.png">
  <link rel="icon" type="image/png" sizes="32x32" href="assets/img/favicon-32x32.png">
  <link rel="icon" type="image/png" sizes="96x96" href="assets/img/favicon-96x96.png">

  <!-- build:css({.tmp/serve,src}) styles/404.css -->
  <!-- inject:css -->
  <!-- css files will be automatically insert here -->
  <!-- endinject -->
  <!-- endbuild -->
</head>
<body>
<div class="page-not-found-modal">
  <h1>404 Error</h1>

  <p>Sorry, that page doesn't exist. <a href="/">Go to Home Page.</a></p>
</div>
</body>
</html>

================================================
FILE: src/app/app.js
================================================
'use strict';

angular.module('BlurAdmin', [
  'ngAnimate',
  'ui.bootstrap',
  'ui.sortable',
  'ui.router',
  'ngTouch',
  'toastr',
  'smart-table',
  "xeditable",
  'ui.slimscroll',
  'ngJsTree',
  'angular-progress-button-styles',

  'BlurAdmin.theme',
  'BlurAdmin.pages'
]);

================================================
FILE: src/app/pages/charts/amCharts/amCharts.module.js
================================================
/**
 * @author v.lugovsky
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.amCharts', [])
      .config(routeConfig).config(amChartConfig);

  /** @ngInject */
  function routeConfig($stateProvider) {
    $stateProvider
        .state('charts.amCharts', {
          url: '/amCharts',
          templateUrl: 'app/pages/charts/amCharts/charts.html',
          title: 'amCharts',
          sidebarMeta: {
            order: 0,
          },
        });
  }

  function amChartConfig(baConfigProvider) {
    var layoutColors = baConfigProvider.colors;
    AmCharts.themes.blur = {

      themeName: "blur",

      AmChart: {
        color: layoutColors.defaultText,
        backgroundColor: "#FFFFFF"
      },

      AmCoordinateChart: {
        colors: [layoutColors.primary, layoutColors.danger, layoutColors.warning, layoutColors.success, layoutColors.info, layoutColors.primaryDark, layoutColors.warningLight, layoutColors.successDark, layoutColors.successLight, layoutColors.primaryLight, layoutColors.warningDark]
      },

      AmStockChart: {
        colors: [layoutColors.primary, layoutColors.danger, layoutColors.warning, layoutColors.success, layoutColors.info, layoutColors.primaryDark, layoutColors.warningLight, layoutColors.successDark, layoutColors.successLight, layoutColors.primaryLight, layoutColors.warningDark]
      },

      AmSlicedChart: {
        colors: [layoutColors.primary, layoutColors.danger, layoutColors.warning, layoutColors.success, layoutColors.info, layoutColors.primaryDark, layoutColors.warningLight, layoutColors.successDark, layoutColors.successLight, layoutColors.primaryLight, layoutColors.warningDark],
        labelTickColor: "#FFFFFF",
        labelTickAlpha: 0.3
      },

      AmRectangularChart: {
        zoomOutButtonColor: '#FFFFFF',
        zoomOutButtonRollOverAlpha: 0.15,
        zoomOutButtonImage: "lens.png"
      },

      AxisBase: {
        axisColor: "#FFFFFF",
        axisAlpha: 0.3,
        gridAlpha: 0.1,
        gridColor: "#FFFFFF"
      },

      ChartScrollbar: {
        backgroundColor: "#FFFFFF",
        backgroundAlpha: 0.12,
        graphFillAlpha: 0.5,
        graphLineAlpha: 0,
        selectedBackgroundColor: "#FFFFFF",
        selectedBackgroundAlpha: 0.4,
        gridAlpha: 0.15
      },

      ChartCursor: {
        cursorColor: layoutColors.primary,
        color: "#FFFFFF",
        cursorAlpha: 0.5
      },

      AmLegend: {
        color: "#FFFFFF"
      },

      AmGraph: {
        lineAlpha: 0.9
      },
      GaugeArrow: {
        color: "#FFFFFF",
        alpha: 0.8,
        nailAlpha: 0,
        innerRadius: "40%",
        nailRadius: 15,
        startWidth: 15,
        borderAlpha: 0.8,
        nailBorderAlpha: 0
      },

      GaugeAxis: {
        tickColor: "#FFFFFF",
        tickAlpha: 1,
        tickLength: 15,
        minorTickLength: 8,
        axisThickness: 3,
        axisColor: '#FFFFFF',
        axisAlpha: 1,
        bandAlpha: 0.8
      },

      TrendLine: {
        lineColor: layoutColors.danger,
        lineAlpha: 0.8
      },

      // ammap
      AreasSettings: {
        alpha: 0.8,
        color: layoutColors.info,
        colorSolid: layoutColors.primaryDark,
        unlistedAreasAlpha: 0.4,
        unlistedAreasColor: "#FFFFFF",
        outlineColor: "#FFFFFF",
        outlineAlpha: 0.5,
        outlineThickness: 0.5,
        rollOverColor: layoutColors.primary,
        rollOverOutlineColor: "#FFFFFF",
        selectedOutlineColor: "#FFFFFF",
        selectedColor: "#f15135",
        unlistedAreasOutlineColor: "#FFFFFF",
        unlistedAreasOutlineAlpha: 0.5
      },

      LinesSettings: {
        color: "#FFFFFF",
        alpha: 0.8
      },

      ImagesSettings: {
        alpha: 0.8,
        labelColor: "#FFFFFF",
        color: "#FFFFFF",
        labelRollOverColor: layoutColors.primaryDark
      },

      ZoomControl: {
        buttonFillAlpha: 0.8,
        buttonIconColor: layoutColors.defaultText,
        buttonRollOverColor: layoutColors.danger,
        buttonFillColor: layoutColors.primaryDark,
        buttonBorderColor: layoutColors.primaryDark,
        buttonBorderAlpha: 0,
        buttonCornerRadius: 0,
        gridColor: "#FFFFFF",
        gridBackgroundColor: "#FFFFFF",
        buttonIconAlpha: 0.6,
        gridAlpha: 0.6,
        buttonSize: 20
      },

      SmallMap: {
        mapColor: "#000000",
        rectangleColor: layoutColors.danger,
        backgroundColor: "#FFFFFF",
        backgroundAlpha: 0.7,
        borderThickness: 1,
        borderAlpha: 0.8
      },

      // the defaults below are set using CSS syntax, you can use any existing css property
      // if you don't use Stock chart, you can delete lines below
      PeriodSelector: {
        color: "#FFFFFF"
      },

      PeriodButton: {
        color: "#FFFFFF",
        background: "transparent",
        opacity: 0.7,
        border: "1px solid rgba(0, 0, 0, .3)",
        MozBorderRadius: "5px",
        borderRadius: "5px",
        margin: "1px",
        outline: "none",
        boxSizing: "border-box"
      },

      PeriodButtonSelected: {
        color: "#FFFFFF",
        backgroundColor: "#b9cdf5",
        border: "1px solid rgba(0, 0, 0, .3)",
        MozBorderRadius: "5px",
        borderRadius: "5px",
        margin: "1px",
        outline: "none",
        opacity: 1,
        boxSizing: "border-box"
      },

      PeriodInputField: {
        color: "#FFFFFF",
        background: "transparent",
        border: "1px solid rgba(0, 0, 0, .3)",
        outline: "none"
      },

      DataSetSelector: {
        color: "#FFFFFF",
        selectedBackgroundColor: "#b9cdf5",
        rollOverBackgroundColor: "#a8b0e4"
      },

      DataSetCompareList: {
        color: "#FFFFFF",
        lineHeight: "100%",
        boxSizing: "initial",
        webkitBoxSizing: "initial",
        border: "1px solid rgba(0, 0, 0, .3)"
      },

      DataSetSelect: {
        border: "1px solid rgba(0, 0, 0, .3)",
        outline: "none"
      }

    };
  }

})();


================================================
FILE: src/app/pages/charts/amCharts/areaChart/AreaChartCtrl.js
================================================
/**
 * @author v.lugovsky
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.amCharts')
      .controller('AreaChartCtrl', AreaChartCtrl);

  /** @ngInject */
  function AreaChartCtrl($scope, baConfig, $element, layoutPaths) {
    var layoutColors = baConfig.colors;
    var id = $element[0].getAttribute('id');
    var areaChart = AmCharts.makeChart(id, {
      type: 'serial',
      theme: 'blur',
      color: layoutColors.defaultText,
      dataProvider: [
        {
          lineColor: layoutColors.info,
          date: '2012-01-01',
          duration: 408
        },
        {
          date: '2012-01-02',
          duration: 482
        },
        {
          date: '2012-01-03',
          duration: 562
        },
        {
          date: '2012-01-04',
          duration: 379
        },
        {
          lineColor: layoutColors.warning,
          date: '2012-01-05',
          duration: 501
        },
        {
          date: '2012-01-06',
          duration: 443
        },
        {
          date: '2012-01-07',
          duration: 405
        },
        {
          date: '2012-01-08',
          duration: 309,
          lineColor: layoutColors.danger
        },
        {
          date: '2012-01-09',
          duration: 287
        },
        {
          date: '2012-01-10',
          duration: 485
        },
        {
          date: '2012-01-11',
          duration: 890
        },
        {
          date: '2012-01-12',
          duration: 810
        }
      ],
      balloon: {
        cornerRadius: 6,
        horizontalPadding: 15,
        verticalPadding: 10
      },
      valueAxes: [
        {
          duration: 'mm',
          durationUnits: {
            hh: 'h ',
            mm: 'min'
          },
          gridAlpha: 0.5,
          gridColor: layoutColors.border,
        }
      ],
      graphs: [
        {
          bullet: 'square',
          bulletBorderAlpha: 1,
          bulletBorderThickness: 1,
          fillAlphas: 0.5,
          fillColorsField: 'lineColor',
          legendValueText: '[[value]]',
          lineColorField: 'lineColor',
          title: 'duration',
          valueField: 'duration'
        }
      ],

      chartCursor: {
        categoryBalloonDateFormat: 'YYYY MMM DD',
        cursorAlpha: 0,
        fullWidth: true
      },
      dataDateFormat: 'YYYY-MM-DD',
      categoryField: 'date',
      categoryAxis: {
        dateFormats: [
          {
            period: 'DD',
            format: 'DD'
          },
          {
            period: 'WW',
            format: 'MMM DD'
          },
          {
            period: 'MM',
            format: 'MMM'
          },
          {
            period: 'YYYY',
            format: 'YYYY'
          }
        ],
        parseDates: true,
        autoGridCount: false,
        gridCount: 50,
        gridAlpha: 0.5,
        gridColor: layoutColors.border,
      },
      export: {
        enabled: true
      },
      pathToImages: layoutPaths.images.amChart
    });

    areaChart.addListener('dataUpdated', zoomAreaChart);

    function zoomAreaChart() {
      areaChart.zoomToDates(new Date(2012, 0, 3), new Date(2012, 0, 11));
    }
  }

})();


================================================
FILE: src/app/pages/charts/amCharts/areaChart/areaChart.html
================================================
<div id="areaChart" class="admin-chart" ng-controller="AreaChartCtrl"></div>

================================================
FILE: src/app/pages/charts/amCharts/barChart/BarChartCtrl.js
================================================
/**
 * @author v.lugovsky
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.amCharts')
      .controller('BarChartCtrl', BarChartCtrl);

  /** @ngInject */
  function BarChartCtrl($scope, baConfig, $element, layoutPaths) {
    var layoutColors = baConfig.colors;
    var id = $element[0].getAttribute('id');
    var barChart = AmCharts.makeChart(id, {
      type: 'serial',
      theme: 'blur',
      color: layoutColors.defaultText,
      dataProvider: [
        {
          country: 'USA',
          visits: 3025,
          color: layoutColors.primary
        },
        {
          country: 'China',
          visits: 1882,
          color: layoutColors.danger

        },
        {
          country: 'Japan',
          visits: 1809,
          color: layoutColors.info
        },
        {
          country: 'Germany',
          visits: 1322,
          color: layoutColors.success
        },
        {
          country: 'UK',
          visits: 1122,
          color: layoutColors.warning
        },
        {
          country: 'France',
          visits: 1114,
          color: layoutColors.primaryLight
        }
      ],
      valueAxes: [
        {
          axisAlpha: 0,
          position: 'left',
          title: 'Visitors from country',
          gridAlpha: 0.5,
          gridColor: layoutColors.border,
        }
      ],
      startDuration: 1,
      graphs: [
        {
          balloonText: '<b>[[category]]: [[value]]</b>',
          fillColorsField: 'color',
          fillAlphas: 0.7,
          lineAlpha: 0.2,
          type: 'column',
          valueField: 'visits'
        }
      ],
      chartCursor: {
        categoryBalloonEnabled: false,
        cursorAlpha: 0,
        zoomable: false
      },
      categoryField: 'country',
      categoryAxis: {
        gridPosition: 'start',
        labelRotation: 45,
        gridAlpha: 0.5,
        gridColor: layoutColors.border,
      },
      export: {
        enabled: true
      },
      creditsPosition: 'top-right',
      pathToImages: layoutPaths.images.amChart
    });
  }
})();


================================================
FILE: src/app/pages/charts/amCharts/barChart/barChart.html
================================================
<div id="barChart" class="admin-chart" ng-controller="BarChartCtrl"></div>

================================================
FILE: src/app/pages/charts/amCharts/charts.html
================================================
<div class="widgets">

  <div class="row">
    <div class="col-lg-4 col-md-6"
         ba-panel
         ba-panel-title="Bar Chart"
         ba-panel-class="with-scroll">
      <div ng-include="'app/pages/charts/amCharts/barChart/barChart.html'"></div>
    </div>
    <div class="col-lg-4 col-md-6"
         ba-panel
         ba-panel-title="Area Chart"
         ba-panel-class="with-scroll">
      <div ng-include="'app/pages/charts/amCharts/areaChart/areaChart.html'"></div>
    </div>
    <div class="col-lg-4 col-md-12"
         ba-panel
         ba-panel-title="Line Chart"
         ba-panel-class="with-scroll">
      <div ng-include="'app/pages/charts/amCharts/lineChart/lineChart.html'"></div>
    </div>
  </div>

  <div class="row">
    <div class="col-md-6"
         ba-panel
         ba-panel-title="Pie Chart"
         ba-panel-class="with-scroll">
      <div ng-include="'app/pages/charts/amCharts/pieChart/pieChart.html'"></div>
    </div>
    <div class="col-md-6"
         ba-panel
         ba-panel-title="Funnel Chart"
         ba-panel-class="with-scroll">
      <div ng-include="'app/pages/charts/amCharts/funnelChart/funnelChart.html'"></div>
    </div>
  </div>

  <div class="row">
    <div class="col-md-12"
         ba-panel
         ba-panel-title="Combined bullet/column and line graphs with multiple value axes"
         ba-panel-class="with-scroll">
      <div ng-include="'app/pages/charts/amCharts/combinedChart/combinedChart.html'"></div>
    </div>
    <!--<div class="col-md-6">-->
    <!--<div ba-panel ba-panel-title="Gantt chart" ba-panel-class="with-scroll">-->
    <!--<div ng-include="'app/pages/charts/amCharts/ganttChart/ganttChart.html'"></div>-->
    <!--</div>-->
    <!--</div>-->
  </div>

</div>

================================================
FILE: src/app/pages/charts/amCharts/combinedChart/combinedChart.html
================================================
<div id="zoomAxisChart" class="admin-chart" ng-controller="combinedChartCtrl"></div>


================================================
FILE: src/app/pages/charts/amCharts/combinedChart/combinedChartCtrl.js
================================================
/**
 * @author a.demeshko
 * created on 22.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.amCharts')
    .controller('combinedChartCtrl', combinedChartCtrl);

  /** @ngInject */
  function combinedChartCtrl($element, baConfig, layoutPaths) {
    var layoutColors = baConfig.colors;
    var id = $element[0].getAttribute('id');
    var chart = AmCharts.makeChart(id, {
      "type": "serial",
      "theme": "none",
      "color": layoutColors.defaultText,
      "dataDateFormat": "YYYY-MM-DD",
      "precision": 2,
      "valueAxes": [{
        color: layoutColors.defaultText,
        axisColor: layoutColors.defaultText,
        gridColor: layoutColors.defaultText,
        "id": "v1",
        "title": "Sales",
        "position": "left",
        "autoGridCount": false,
        "labelFunction": function(value) {
          return "$" + Math.round(value) + "M";
        }
      }, {
        color: layoutColors.defaultText,
        axisColor: layoutColors.defaultText,
        gridColor: layoutColors.defaultText,
        "id": "v2",
        "title": "Market Days",
        "gridAlpha": 0,
        "position": "right",
        "autoGridCount": false
      }],
      "graphs": [{
        "id": "g3",
        color: layoutColors.defaultText,
        "valueAxis": "v1",
        "lineColor": layoutColors.primaryLight,
        "fillColors": layoutColors.primaryLight,
        "fillAlphas": 0.8,
        "lineAlpha": 0.8,
        "type": "column",
        "title": "Actual Sales",
        "valueField": "sales2",
        "clustered": false,
        "columnWidth": 0.5,
        "lineColorField" : layoutColors.defaultText,
        "legendValueText": "$[[value]]M",
        "balloonText": "[[title]]<br/><b style='font-size: 130%'>$[[value]]M</b>"
      }, {
        "id": "g4",
        "valueAxis": "v1",
        color: layoutColors.defaultText,
        "lineColor": layoutColors.primary,
        "fillColors": layoutColors.primary,
        "fillAlphas": 0.9,
        "lineAlpha": 0.9,
        "type": "column",
        "title": "Target Sales",
        "valueField": "sales1",
        "clustered": false,
        "columnWidth": 0.3,
        "legendValueText": "$[[value]]M",
        "balloonText": "[[title]]<br/><b style='font-size: 130%'>$[[value]]M</b>"
      }, {
        "id": "g1",
        "valueAxis": "v2",
        "bullet": "round",
        "bulletBorderAlpha": 1,
        "bulletColor": layoutColors.defaultText,
        color: layoutColors.defaultText,
        "bulletSize": 5,
        "hideBulletsCount": 50,
        "lineThickness": 2,
        "lineColor": layoutColors.danger,
        "type": "smoothedLine",
        "title": "Market Days",
        "useLineColorForBulletBorder": true,
        "valueField": "market1",
        "balloonText": "[[title]]<br/><b style='font-size: 130%'>[[value]]</b>"
      }, {
        "id": "g2",
        "valueAxis": "v2",
        color: layoutColors.defaultText,
        "bullet": "round",
        "bulletBorderAlpha": 1,
        "bulletColor": layoutColors.defaultText,
        "bulletSize": 5,
        "hideBulletsCount": 50,
        "lineThickness": 2,
        "lineColor": layoutColors.warning,
        "type": "smoothedLine",
        "dashLength": 5,
        "title": "Market Days ALL",
        "useLineColorForBulletBorder": true,
        "valueField": "market2",
        "balloonText": "[[title]]<br/><b style='font-size: 130%'>[[value]]</b>"
      }],
      "chartScrollbar": {
        "graph": "g1",
        "oppositeAxis": false,
        "offset": 30,
        gridAlpha: 0,
        color: layoutColors.defaultText,
        scrollbarHeight: 50,
        backgroundAlpha: 0,
        selectedBackgroundAlpha: 0.05,
        selectedBackgroundColor: layoutColors.defaultText,
        graphFillAlpha: 0,
        autoGridCount: true,
        selectedGraphFillAlpha: 0,
        graphLineAlpha: 0.2,
        selectedGraphLineColor: layoutColors.defaultText,
        selectedGraphLineAlpha: 1
      },
      "chartCursor": {
        "pan": true,
        "cursorColor" : layoutColors.danger,
        "valueLineEnabled": true,
        "valueLineBalloonEnabled": true,
        "cursorAlpha": 0,
        "valueLineAlpha": 0.2
      },
      "categoryField": "date",
      "categoryAxis": {
        "axisColor": layoutColors.defaultText,
        "color": layoutColors.defaultText,
        "gridColor": layoutColors.defaultText,
        "parseDates": true,
        "dashLength": 1,
        "minorGridEnabled": true
      },
      "legend": {
        "useGraphSettings": true,
        "position": "top",
        "color": layoutColors.defaultText
      },
      "balloon": {
        "borderThickness": 1,
        "shadowAlpha": 0
      },
      "export": {
        "enabled": true
      },
      "dataProvider": [{
        "date": "2013-01-16",
        "market1": 71,
        "market2": 75,
        "sales1": 5,
        "sales2": 8
      }, {
        "date": "2013-01-17",
        "market1": 74,
        "market2": 78,
        "sales1": 4,
        "sales2": 6
      }, {
        "date": "2013-01-18",
        "market1": 78,
        "market2": 88,
        "sales1": 5,
        "sales2": 2
      }, {
        "date": "2013-01-19",
        "market1": 85,
        "market2": 89,
        "sales1": 8,
        "sales2": 9
      }, {
        "date": "2013-01-20",
        "market1": 82,
        "market2": 89,
        "sales1": 9,
        "sales2": 6
      }, {
        "date": "2013-01-21",
        "market1": 83,
        "market2": 85,
        "sales1": 3,
        "sales2": 5
      }, {
        "date": "2013-01-22",
        "market1": 88,
        "market2": 92,
        "sales1": 5,
        "sales2": 7
      }, {
        "date": "2013-01-23",
        "market1": 85,
        "market2": 90,
        "sales1": 7,
        "sales2": 6
      }, {
        "date": "2013-01-24",
        "market1": 85,
        "market2": 91,
        "sales1": 9,
        "sales2": 5
      }, {
        "date": "2013-01-25",
        "market1": 80,
        "market2": 84,
        "sales1": 5,
        "sales2": 8
      }, {
        "date": "2013-01-26",
        "market1": 87,
        "market2": 92,
        "sales1": 4,
        "sales2": 8
      }, {
        "date": "2013-01-27",
        "market1": 84,
        "market2": 87,
        "sales1": 3,
        "sales2": 4
      }, {
        "date": "2013-01-28",
        "market1": 83,
        "market2": 88,
        "sales1": 5,
        "sales2": 7
      }, {
        "date": "2013-01-29",
        "market1": 84,
        "market2": 87,
        "sales1": 5,
        "sales2": 8
      }, {
        "date": "2013-01-30",
        "market1": 81,
        "market2": 85,
        "sales1": 4,
        "sales2": 7
      }],
      pathToImages: layoutPaths.images.amChart
    });
  }

})();


================================================
FILE: src/app/pages/charts/amCharts/funnelChart/FunnelChartCtrl.js
================================================
/**
 * @author v.lugovsky
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.amCharts')
      .controller('FunnelChartCtrl', FunnelChartCtrl);

  /** @ngInject */
  function FunnelChartCtrl($scope, $element, layoutPaths, baConfig) {
    var layoutColors = baConfig.colors;
    var id = $element[0].getAttribute('id');
    var funnelChart = AmCharts.makeChart(id, {
      type: 'funnel',
      theme: 'blur',
      color: layoutColors.defaultText,
      labelTickColor: layoutColors.borderDark,
      dataProvider: [
        {
          title: 'Website visits',
          value: 300
        },
        {
          title: 'Downloads',
          value: 123
        },
        {
          title: 'Requested prices',
          value: 98
        },
        {
          title: 'Contaced',
          value: 72
        },
        {
          title: 'Purchased',
          value: 35
        },
        {
          title: 'Asked for support',
          value: 25
        },
        {
          title: 'Purchased more',
          value: 18
        }
      ],
      titleField: 'title',
      marginRight: 160,
      marginLeft: 15,
      labelPosition: 'right',
      funnelAlpha: 0.9,
      valueField: 'value',
      startX: 0,
      alpha: 0.8,
      neckWidth: '0%',
      startAlpha: 0,
      outlineThickness: 1,
      neckHeight: '0%',
      balloonText: '[[title]]:<b>[[value]]</b>',
      export: {
        enabled: true
      },
      creditsPosition: 'bottom-left',
      pathToImages: layoutPaths
    });
  }
})();


================================================
FILE: src/app/pages/charts/amCharts/funnelChart/funnelChart.html
================================================
<div id="funnelChart" class="admin-chart" ng-controller="FunnelChartCtrl"></div>

================================================
FILE: src/app/pages/charts/amCharts/ganttChart/ganttChart.html
================================================
<div id="gnattChart" class="admin-chart" ng-controller="ganttChartCtrl"></div>

================================================
FILE: src/app/pages/charts/amCharts/ganttChart/ganttChartCtrl.js
================================================
/**
 * @author a.demeshko
 * created on 22.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.amCharts')
    .controller('ganttChartCtrl', ganttChartCtrl);

  /** @ngInject */
  function ganttChartCtrl($element) {
    var id = $element[0].getAttribute('id');
    var chart = AmCharts.makeChart( id, {
      "type": "gantt",
      "theme": "light",
      "marginRight": 70,
      "period": "hh",
      "dataDateFormat":"YYYY-MM-DD",
      "balloonDateFormat": "JJ:NN",
      "columnWidth": 0.5,
      "valueAxis": {
        "type": "date",
        "minimum": 7,
        "maximum": 31
      },
      "brightnessStep": 10,
      "graph": {
        "fillAlphas": 1,
        "balloonText": "<b>[[task]]</b>: [[open]] [[value]]"
      },
      "rotate": true,
      "categoryField": "category",
      "segmentsField": "segments",
      "colorField": "color",
      "startDate": "2015-01-01",
      "startField": "start",
      "endField": "end",
      "durationField": "duration",
      "dataProvider": [
        {
        "category": "John",
        "segments": [ {
          "start": 7,
          "duration": 2,
          "color": "#46615e",
          "task": "Task #1"
        }, {
          "duration": 2,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "duration": 2,
          "color": "#8dc49f",
          "task": "Task #3"
        } ]
      }, {
        "category": "Smith",
        "segments": [ {
          "start": 10,
          "duration": 2,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "duration": 1,
          "color": "#8dc49f",
          "task": "Task #3"
        }, {
          "duration": 4,
          "color": "#46615e",
          "task": "Task #1"
        } ]
      }, {
        "category": "Ben",
        "segments": [ {
          "start": 12,
          "duration": 2,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "start": 16,
          "duration": 2,
          "color": "#FFE4C4",
          "task": "Task #4"
        } ]
      }, {
        "category": "Mike",
        "segments": [ {
          "start": 9,
          "duration": 6,
          "color": "#46615e",
          "task": "Task #1"
        }, {
          "duration": 4,
          "color": "#727d6f",
          "task": "Task #2"
        } ]
      }, {
        "category": "Lenny",
        "segments": [ {
          "start": 8,
          "duration": 1,
          "color": "#8dc49f",
          "task": "Task #3"
        }, {
          "duration": 4,
          "color": "#46615e",
          "task": "Task #1"
        } ]
      }, {
        "category": "Scott",
        "segments": [ {
          "start": 15,
          "duration": 3,
          "color": "#727d6f",
          "task": "Task #2"
        } ]
      }, {
        "category": "Julia",
        "segments": [ {
          "start": 9,
          "duration": 2,
          "color": "#46615e",
          "task": "Task #1"
        }, {
          "duration": 1,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "duration": 8,
          "color": "#8dc49f",
          "task": "Task #3"
        } ]
      }, {
        "category": "Bob",
        "segments": [ {
          "start": 9,
          "duration": 8,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "duration": 7,
          "color": "#8dc49f",
          "task": "Task #3"
        } ]
      }, {
        "category": "Kendra",
        "segments": [ {
          "start": 11,
          "duration": 8,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "start": 16,
          "duration": 2,
          "color": "#FFE4C4",
          "task": "Task #4"
        } ]
      }, {
        "category": "Tom",
        "segments": [ {
          "start": 9,
          "duration": 4,
          "color": "#46615e",
          "task": "Task #1"
        }, {
          "duration": 3,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "duration": 5,
          "color": "#8dc49f",
          "task": "Task #3"
        } ]
      }, {
        "category": "Kyle",
        "segments": [ {
          "start": 6,
          "duration": 3,
          "color": "#727d6f",
          "task": "Task #2"
        } ]
      }, {
        "category": "Anita",
        "segments": [ {
          "start": 12,
          "duration": 2,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "start": 16,
          "duration": 2,
          "color": "#FFE4C4",
          "task": "Task #4"
        } ]
      }, {
        "category": "Jack",
        "segments": [ {
          "start": 8,
          "duration": 10,
          "color": "#46615e",
          "task": "Task #1"
        }, {
          "duration": 2,
          "color": "#727d6f",
          "task": "Task #2"
        } ]
      }, {
        "category": "Kim",
        "segments": [ {
          "start": 12,
          "duration": 2,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "duration": 3,
          "color": "#8dc49f",
          "task": "Task #3"
        } ]
      }, {
        "category": "Aaron",
        "segments": [ {
          "start": 18,
          "duration": 2,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "duration": 2,
          "color": "#FFE4C4",
          "task": "Task #4"
        } ]
      }, {
        "category": "Alan",
        "segments": [ {
          "start": 17,
          "duration": 2,
          "color": "#46615e",
          "task": "Task #1"
        }, {
          "duration": 2,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "duration": 2,
          "color": "#8dc49f",
          "task": "Task #3"
        } ]
      }, {
        "category": "Ruth",
        "segments": [ {
          "start": 13,
          "duration": 2,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "duration": 1,
          "color": "#8dc49f",
          "task": "Task #3"
        }, {
          "duration": 4,
          "color": "#46615e",
          "task": "Task #1"
        } ]
      }, {
        "category": "Simon",
        "segments": [ {
          "start": 10,
          "duration": 3,
          "color": "#727d6f",
          "task": "Task #2"
        }, {
          "start": 17,
          "duration": 4,
          "color": "#FFE4C4",
          "task": "Task #4"
        } ]
      } ],
      "valueScrollbar": {
        "autoGridCount":true
      },
      "chartCursor": {
        "cursorColor":"#55bb76",
        "valueBalloonsEnabled": false,
        "cursorAlpha": 0,
        "valueLineAlpha":0.5,
        "valueLineBalloonEnabled": true,
        "valueLineEnabled": true,
        "zoomable":false,
        "valueZoomable":true
      },
      "export": {
        "enabled": true
      }
    });
  }

})();


================================================
FILE: src/app/pages/charts/amCharts/lineChart/LineChartCtrl.js
================================================
/**
 * @author v.lugovsky
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.amCharts')
      .controller('LineChartCtrl', LineChartCtrl);

  /** @ngInject */
  function LineChartCtrl($scope, baConfig, $element, layoutPaths) {
    var layoutColors = baConfig.colors;
    var id = $element[0].getAttribute('id');
    var lineChart = AmCharts.makeChart(id, {
      type: 'serial',
      theme: 'blur',
      color: layoutColors.defaultText,
      marginTop: 0,
      marginRight: 15,
      dataProvider: [
        {
          year: '1990',
          value: -0.17
        },
        {
          year: '1991',
          value: -0.254
        },
        {
          year: '1992',
          value: 0.019
        },
        {
          year: '1993',
          value: -0.063
        },
        {
          year: '1994',
          value: 0.005
        },
        {
          year: '1995',
          value: 0.077
        },
        {
          year: '1996',
          value: 0.12
        },
        {
          year: '1997',
          value: 0.011
        },
        {
          year: '1998',
          value: 0.177
        },
        {
          year: '1999',
          value: -0.021
        },
        {
          year: '2000',
          value: -0.037
        },
        {
          year: '2001',
          value: 0.03
        },
        {
          year: '2002',
          value: 0.179
        },
        {
          year: '2003',
          value: 0.2
        },
        {
          year: '2004',
          value: 0.180
        },
        {
          year: '2005',
          value: 0.21
        }
      ],
      valueAxes: [
        {
          axisAlpha: 0,
          position: 'left',
          gridAlpha: 0.5,
          gridColor: layoutColors.border,
        }
      ],
      graphs: [
        {
          id: 'g1',
          balloonText: '[[value]]',
          bullet: 'round',
          bulletSize: 8,
          lineColor: layoutColors.danger,
          lineThickness: 1,
          negativeLineColor: layoutColors.warning,
          type: 'smoothedLine',
          valueField: 'value'
        }
      ],
      chartScrollbar: {
        graph: 'g1',
        gridAlpha: 0,
        color: layoutColors.defaultText,
        scrollbarHeight: 55,
        backgroundAlpha: 0,
        selectedBackgroundAlpha: 0.05,
        selectedBackgroundColor: layoutColors.defaultText,
        graphFillAlpha: 0,
        autoGridCount: true,
        selectedGraphFillAlpha: 0,
        graphLineAlpha: 0.2,
        selectedGraphLineColor: layoutColors.defaultText,
        selectedGraphLineAlpha: 1
      },
      chartCursor: {
        categoryBalloonDateFormat: 'YYYY',
        cursorAlpha: 0,
        valueLineEnabled: true,
        valueLineBalloonEnabled: true,
        valueLineAlpha: 0.5,
        fullWidth: true
      },
      dataDateFormat: 'YYYY',
      categoryField: 'year',
      categoryAxis: {
        minPeriod: 'YYYY',
        parseDates: true,
        minorGridAlpha: 0.1,
        minorGridEnabled: true,
        gridAlpha: 0.5,
        gridColor: layoutColors.border,
      },
      export: {
        enabled: true
      },
      creditsPosition: 'bottom-right',
      pathToImages: layoutPaths.images.amChart
    });

    lineChart.addListener('rendered', zoomChart);
    if (lineChart.zoomChart) {
      lineChart.zoomChart();
    }

    function zoomChart() {
      lineChart.zoomToIndexes(Math.round(lineChart.dataProvider.length * 0.4), Math.round(lineChart.dataProvider.length * 0.55));
    }
  }

})();


================================================
FILE: src/app/pages/charts/amCharts/lineChart/lineChart.html
================================================
<div id="lineChart" class="admin-chart" ng-controller="LineChartCtrl"></div>

================================================
FILE: src/app/pages/charts/amCharts/pieChart/PieChartCtrl.js
================================================
/**
 * @author v.lugovsky
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.amCharts')
      .controller('PieChartCtrl', PieChartCtrl);

  /** @ngInject */
  function PieChartCtrl($element, layoutPaths, baConfig) {
    var layoutColors = baConfig.colors;
    var id = $element[0].getAttribute('id');
    var pieChart = AmCharts.makeChart(id, {
      type: 'pie',
      startDuration: 0,
      theme: 'blur',
      addClassNames: true,
      color: layoutColors.defaultText,
      labelTickColor: layoutColors.borderDark,
      legend: {
        position: 'right',
        marginRight: 100,
        autoMargins: false,
      },
      innerRadius: '40%',
      defs: {
        filter: [
          {
            id: 'shadow',
            width: '200%',
            height: '200%',
            feOffset: {
              result: 'offOut',
              in: 'SourceAlpha',
              dx: 0,
              dy: 0
            },
            feGaussianBlur: {
              result: 'blurOut',
              in: 'offOut',
              stdDeviation: 5
            },
            feBlend: {
              in: 'SourceGraphic',
              in2: 'blurOut',
              mode: 'normal'
            }
          }
        ]
      },
      dataProvider: [
        {
          country: 'Lithuania',
          litres: 501.9
        },
        {
          country: 'Czech Republic',
          litres: 301.9
        },
        {
          country: 'Ireland',
          litres: 201.1
        },
        {
          country: 'Germany',
          litres: 165.8
        },
        {
          country: 'Australia',
          litres: 139.9
        },
        {
          country: 'Austria',
          litres: 128.3
        },
        {
          country: 'UK',
          litres: 99
        },
        {
          country: 'Belgium',
          litres: 60
        }
      ],
      valueField: 'litres',
      titleField: 'country',
      export: {
        enabled: true
      },
      creditsPosition: 'bottom-left',

      autoMargins: false,
      marginTop: 10,
      alpha: 0.8,
      marginBottom: 0,
      marginLeft: 0,
      marginRight: 0,
      pullOutRadius: 0,
      pathToImages: layoutPaths.images.amChart,
      responsive: {
        enabled: true,
        rules: [
          // at 900px wide, we hide legend
          {
            maxWidth: 900,
            overrides: {
              legend: {
                enabled: false
              }
            }
          },

          // at 200 px we hide value axis labels altogether
          {
            maxWidth: 200,
            overrides: {
              valueAxes: {
                labelsEnabled: false
              },
              marginTop: 30,
              marginBottom: 30,
              marginLeft: 30,
              marginRight: 30
            }
          }
        ]
      }
    });

    pieChart.addListener('init', handleInit);

    pieChart.addListener('rollOverSlice', function (e) {
      handleRollOver(e);
    });

    function handleInit() {
      pieChart.legend.addListener('rollOverItem', handleRollOver);
    }

    function handleRollOver(e) {
      var wedge = e.dataItem.wedge.node;
      wedge.parentNode.appendChild(wedge);
    }
  }

})();


================================================
FILE: src/app/pages/charts/amCharts/pieChart/pieChart.html
================================================
<div id="pieChart" class="admin-chart" ng-controller="PieChartCtrl"></div>


================================================
FILE: src/app/pages/charts/chartJs/chartJs.html
================================================
<div class="row">
    <div class="col-md-4" ng-controller="chartJs1DCtrl">
        <div ba-panel ba-panel-title="Pie" ba-panel-class="with-scroll ">
            <div class="chartjs-canvas-holder-first-row">
                <canvas id="pie" class="chart chart-pie"
                       chart-options="options" chart-data="data" chart-labels="labels"
                        chart-click="changeData">
                </canvas>
            </div>
        </div>
    </div>
    <div class="col-md-4" ng-controller="chartJs1DCtrl">
        <div ba-panel ba-panel-title="Doughnut" ba-panel-class="with-scroll ">
            <div class="chartjs-canvas-holder-first-row">
                <canvas id="doughnut" chart-options="options" class="chart chart-doughnut"
                        chart-data="data" chart-labels="labels" chart-click="changeData">
                </canvas>
            </div>
        </div>
    </div>
    <div class="col-md-4" ng-controller="chartJs1DCtrl">
        <div ba-panel ba-panel-title="Polar" ba-panel-class="with-scroll ">
            <div class="chartjs-canvas-holder-first-row">
                <canvas id="polar-area" class="chart chart-polar-area"
                        chart-data="data" chart-options="options" chart-labels="labels"
                        chart-click="changeData">
                </canvas>
            </div>
        </div>
    </div>
</div>

<div class="row ">
    <div class="col-md-6" ng-controller="chartJsWaveCtrl">
        <div ba-panel ba-panel-title="Animated Radar" ba-panel-class="col-eq-height">
            <div class="chartjs-canvas-holder-second-row">
                <canvas id="waveLine" class="chart chart-radar" chart-data="[data]" chart-labels="labels"></canvas>
            </div>

        </div>
    </div>
    <div class="col-md-6" ng-controller="chartJsWaveCtrl">
        <div ba-panel ba-panel-title="Animated Bars" ba-panel-class="col-eq-height">
            <div class="chartjs-canvas-holder-second-row">
                <canvas id="waveBars" class="chart chart-bar" chart-data="[data]" chart-labels="labels"></canvas>
            </div>
        </div>
    </div>
</div>


<div class="row ">
    <div class="col-lg-4 col-md-6" ng-controller="chartJs2DCtrl">
        <div ba-panel ba-panel-title="Radar" ba-panel-class="with-scroll ">
            <div class="chartjs-canvas-holder-third-row">
                <canvas id="radar" class="chart chart-radar" chart-series="series" chart-data="data"
                        chart-labels="labels" chart-click="changeData">
                </canvas>
            </div>
        </div>
    </div>
    <div class="col-lg-4 col-md-6" ng-controller="chartJs2DCtrl">
        <div ba-panel ba-panel-title="Line" ba-panel-class="with-scroll ">
            <div class="chartjs-canvas-holder-third-row">
                <canvas id="line" class="chart chart-line" chart-data="data" chart-labels="labels"
                        chart-series="series" chart-click="changeData"></canvas>
            </div>
        </div>
    </div>
    <div class="col-lg-4 col-md-12" ng-controller="chartJs2DCtrl">
        <div ba-panel ba-panel-title="Bars" ba-panel-class="with-scroll ">
            <div class="chartjs-canvas-holder-third-row">
                <canvas id="bar" class="chart chart-bar"
                        chart-data="data" chart-labels="labels" chart-series="series" chart-click="changeData" chart-update="updateC">
                </canvas>
            </div>
        </div>
    </div>
</div>




================================================
FILE: src/app/pages/charts/chartJs/chartJs.module.js
================================================
/**
 * @author a.demeshko
 * created on 12/16/15
 */
(function () {
    'use strict';

    angular.module('BlurAdmin.pages.charts.chartJs', [])
        .config(routeConfig).config(chartJsConfig);

    /** @ngInject */
    function routeConfig($stateProvider) {
        $stateProvider
            .state('charts.chartJs', {
                url: '/chartJs',
                templateUrl: 'app/pages/charts/chartJs/chartJs.html',
                title: 'Chart.js',
                sidebarMeta: {
                    order: 200
                }
            });
    }

    function chartJsConfig(ChartJsProvider, baConfigProvider) {
        var layoutColors = baConfigProvider.colors;
        // Configure all charts
        ChartJsProvider.setOptions({
            chartColors: [
                layoutColors.primary, layoutColors.danger, layoutColors.warning, layoutColors.success, layoutColors.info, layoutColors.default, layoutColors.primaryDark, layoutColors.successDark, layoutColors.warningLight, layoutColors.successLight, layoutColors.primaryLight],
            responsive: true,
            maintainAspectRatio: false,
            animation: {
                duration: 2500
            },
            scale: {
                gridLines: {
                    color: layoutColors.border
                },
                scaleLabel: {
                    fontColor: layoutColors.defaultText
                },
                ticks: {
                    fontColor: layoutColors.defaultText,
                    showLabelBackdrop: false
                }
            }
        });
        // Configure all line charts
        ChartJsProvider.setOptions('Line', {
            datasetFill: false
        });
        // Configure all radar charts
        ChartJsProvider.setOptions('radar', {
            scale: {
                pointLabels: {
                    fontColor: layoutColors.defaultText
                },
                ticks: {
                    maxTicksLimit: 5,
                    display: false
                }
            }
        });
        // Configure all bar charts
        ChartJsProvider.setOptions('bar', {
            tooltips: {
                enabled: false
            }
        });
    }

})();

================================================
FILE: src/app/pages/charts/chartJs/chartJs1DCtrl.js
================================================
/**
 * @author a.demeshko
 * created on 12/16/15
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.chartJs')
    .controller('chartJs1DCtrl', chartJs1DCtrl);

  /** @ngInject */
  function chartJs1DCtrl($scope, baConfig) {
    var layoutColors = baConfig.colors;

    $scope.labels =["Sleeping", "Designing", "Coding", "Cycling"];
    $scope.data = [20, 40, 5, 35];
    $scope.options = {
      elements: {
        arc: {
          borderWidth: 0
        }
      },
      legend: {
        display: true,
        position: 'bottom',
        labels: {
          fontColor: layoutColors.defaultText
        }
      }
    };

    $scope.changeData = function () {
      $scope.data = shuffle($scope.data);
    };

    function shuffle(o){
      for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x){}
      return o;
    }
  }

})();

================================================
FILE: src/app/pages/charts/chartJs/chartJs2DCtrl.js
================================================
/**
 * @author a.demeshko
 * created on 12/16/15
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.chartJs')
    .controller('chartJs2DCtrl', chartJs2DCtrl);

  /** @ngInject */
  function chartJs2DCtrl($scope) {
    $scope.labels =["May", "Jun", "Jul", "Aug", "Sep"];
    $scope.data = [
      [65, 59, 90, 81, 56],
      [28, 48, 40, 19, 88]
    ];
    $scope.series = ['Product A', 'Product B'];


    $scope.changeData = function () {
      $scope.data[0] = shuffle($scope.data[0]);
      $scope.data[1] = shuffle($scope.data[1]);
    };

    function shuffle(o){
      for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x){}
      return o;
    }
  }

})();

================================================
FILE: src/app/pages/charts/chartJs/chartJsWaveCtrl.js
================================================
/**
 * @author a.demeshko
 * created on 12/16/15
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.chartJs')
    .controller('chartJsWaveCtrl', chartJsWaveCtrl);

  /** @ngInject */
  function chartJsWaveCtrl($scope, $interval, stopableInterval) {
    $scope.labels =["Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
    $scope.data = [1, 9, 3, 4, 5, 6, 7, 8, 2].map(function(e){
      return Math.sin(e) * 25 +25;
    });

    stopableInterval.start($interval, function(){
      var tempArray = [];
      var lastElement = $scope.data[$scope.data.length-1];
      for(var i = $scope.data.length-1; i > 0; i--){
       tempArray[i] = $scope.data[i-1];
      }
      tempArray[0] = lastElement;
      $scope.data = tempArray;
    }, 400)
  }

})();

================================================
FILE: src/app/pages/charts/chartist/chartist.html
================================================
<section ng-controller="chartistCtrl" class="chartist">
  <div class="row">
    <div class="col-md-6 ">
      <div ba-panel ba-panel-title="Lines" ba-panel-class="with-scroll ">
        <h5>Simple line chart</h5>
        <div id="line-chart" class="ct-chart"></div>
        <h5>Line chart with area</h5>
        <div id="area-chart" class="ct-chart"></div>
        <h5>Bi-polar line chart with area only</h5>
        <div id="bi-chart" class="ct-chart"></div>
      </div>
    </div>

    <div class="col-md-6 ">
      <div ba-panel ba-panel-title="Bars" ba-panel-class="with-scroll ">
        <h5>Simple bar chart</h5>
        <div id="simple-bar" class="ct-chart"></div>
        <h5>Multi-line labels bar chart</h5>
        <div id="multi-bar" class="ct-chart"></div>
        <h5>Stacked bar chart</h5>
        <div id="stacked-bar" class="ct-chart stacked-bar"></div>
      </div>
    </div>
  </div>

  <div class="row">
    <div class="col-md-12">
      <div ba-panel ba-panel-title="Pies & Donuts" ba-panel-class="with-scroll ">
        <div class="row">
          <div class="col-md-12 col-lg-4"><h5>Simple Pie</h5>
            <div id="simple-pie" class="ct-chart"></div>
          </div>
          <div class="col-md-12 col-lg-4"><h5>Pie with labels</h5>
            <div id="label-pie" class="ct-chart"></div>
          </div>
          <div class="col-md-12 col-lg-4"><h5>Donut</h5>
            <div id="donut" class="ct-chart"></div>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>

================================================
FILE: src/app/pages/charts/chartist/chartist.module.js
================================================
/**
 * @author a.demeshko
 * created on 12/17/15
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.chartist', [])
    .config(routeConfig);

  /** @ngInject */
  function routeConfig($stateProvider) {
    $stateProvider
        .state('charts.chartist', {
          url: '/chartist',
          templateUrl: 'app/pages/charts/chartist/chartist.html',
          title: 'Chartist',
          sidebarMeta: {
            order: 100,
          },
        });
  }

})();

================================================
FILE: src/app/pages/charts/chartist/chartistCtrl.js
================================================
/**
 * @author a.demeshko
 * created on 12/16/15
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.chartist')
    .controller('chartistCtrl', chartistCtrl);

  /** @ngInject */
  function chartistCtrl($scope, $timeout, baConfig) {

    $scope.simpleLineOptions = {
      color: baConfig.colors.defaultText,
      fullWidth: true,
      height: "300px",
      chartPadding: {
        right: 40
      }
    };

    $scope.simpleLineData = {
      labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],
      series: [
        [20, 20, 12, 45, 50],
        [10, 45, 30, 14, 12],
        [34, 12, 12, 40, 50],
        [10, 43, 25, 22, 16],
        [3, 6, 30, 33, 43]
      ]
    };

    $scope.areaLineData = {
      labels: [1, 2, 3, 4, 5, 6, 7, 8],
      series: [
        [5, 9, 7, 8, 5, 3, 5, 4]
      ]
    };

    $scope.areaLineOptions = {
      fullWidth: true,
      height: "300px",
      low: 0,
      showArea: true
    };

    $scope.biLineData = {
      labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
      series: [
        [1, 2, 3, 1, -2, 0, 1],
        [-2, -1, -2, -1, -2.5, -1, -2],
        [0, 0, 0, 1, 2, 2.5, 2],
        [2.5, 2, 1, 0.5, 1, 0.5, -1]
      ]
    };

    $scope.biLineOptions = {
      height: "300px",
      high: 3,
      low: -3,
      showArea: true,
      showLine: false,
      showPoint: false,
      fullWidth: true,
      axisX: {
        showGrid: false
      }
    };

    $scope.simpleBarData = {
      labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
      series: [
        [15, 24, 43, 27, 5, 10, 23, 44, 68, 50, 26, 8],
        [13, 22, 49, 22, 4, 6, 24, 46, 57, 48, 22, 4]
      ]
    };

    $scope.simpleBarOptions = {
      fullWidth: true,
      height: "300px"
    };

    $scope.multiBarData = {
      labels: ['Quarter 1', 'Quarter 2', 'Quarter 3', 'Quarter 4'],
      series: [
        [5, 4, 3, 7],
        [3, 2, 9, 5],
        [1, 5, 8, 4],
        [2, 3, 4, 6],
        [4, 1, 2, 1]
      ]
    };

    $scope.multiBarOptions = {
      fullWidth: true,
      height: "300px",
      stackBars: true,
      axisX: {
        labelInterpolationFnc: function (value) {
          return value.split(/\s+/).map(function (word) {
            return word[0];
          }).join('');
        }
      },
      axisY: {
        offset: 20
      }
    };

    $scope.multiBarResponsive = [
      ['screen and (min-width: 400px)', {
        reverseData: true,
        horizontalBars: true,
        axisX: {
          labelInterpolationFnc: Chartist.noop
        },
        axisY: {
          offset: 60
        }
      }],
      ['screen and (min-width: 700px)', {
        stackBars: false,
        reverseData: false,
        horizontalBars: false,
        seriesBarDistance: 15
      }]
    ];

    $scope.stackedBarData = {
      labels: ['Quarter 1', 'Quarter 2', 'Quarter 3', 'Quarter 4'],
      series: [
        [800000, 1200000, 1400000, 1300000],
        [200000, 400000, 500000, 300000],
        [100000, 200000, 400000, 600000]
      ]
    };

    $scope.stackedBarOptions = {
      fullWidth: true,
      height: "300px",
      stackBars: true,
      axisY: {
        labelInterpolationFnc: function (value) {
          return (value / 1000) + 'k';
        }
      }
    };

    $scope.simplePieData = {
      series: [5, 3, 4]
    };

    $scope.simplePieOptions = {
      fullWidth: true,
      height: "300px",
      weight: "300px",
      labelInterpolationFnc: function (value) {
        return Math.round(value / 12 * 100) + '%';
      }
    };

    $scope.labelsPieData = {
      labels: ['Bananas', 'Apples', 'Grapes'],
      series: [20, 15, 40]
    };

    $scope.labelsPieOptions = {
      fullWidth: true,
      height: "300px",
      weight: "300px",
      labelDirection: 'explode',
      labelInterpolationFnc: function (value) {
        return value[0];
      }
    };

    $scope.simpleDonutData = {
      labels: ['Bananas', 'Apples', 'Grapes'],
      series: [20, 15, 40]
    };

    $scope.simpleDonutOptions = {
      fullWidth: true,
      donut: true,
      height: "300px",
      weight: "300px",
      labelDirection: 'explode',
      labelInterpolationFnc: function (value) {
        return value[0];
      }
    };

    $scope.donutResponsive = getResponsive(5, 40);

    $scope.pieResponsive = getResponsive(20, 80);

    function getResponsive(padding, offset){
      return [
        ['screen and (min-width: 1550px)', {
          chartPadding: padding,
          labelOffset: offset,
          labelDirection: 'explode',
          labelInterpolationFnc: function (value) {
            return value;
          }
        }],
        ['screen and (max-width: 1200px)', {
          chartPadding: padding,
          labelOffset: offset,
          labelDirection: 'explode',
          labelInterpolationFnc: function (value) {
            return value;
          }
        }],
        ['screen and (max-width: 600px)', {
          chartPadding: 0,
          labelOffset: 0,
          labelInterpolationFnc: function (value) {
            return value[0];
          }
        }]
      ];
    }

    $timeout(function(){
      new Chartist.Line('#line-chart', $scope.simpleLineData, $scope.simpleLineOptions);
      new Chartist.Line('#area-chart', $scope.areaLineData, $scope.areaLineOptions);
      new Chartist.Line('#bi-chart', $scope.biLineData, $scope.biLineOptions);

      new Chartist.Bar('#simple-bar', $scope.simpleBarData, $scope.simpleBarOptions);
      new Chartist.Bar('#multi-bar', $scope.multiBarData, $scope.multiBarOptions, $scope.multiBarResponsive);
      new Chartist.Bar('#stacked-bar', $scope.stackedBarData, $scope.stackedBarOptions);

      new Chartist.Pie('#simple-pie', $scope.simplePieData, $scope.simplePieOptions, $scope.pieResponsive);
      new Chartist.Pie('#label-pie', $scope.labelsPieData, $scope.labelsPieOptions);
      new Chartist.Pie('#donut', $scope.simpleDonutData, $scope.simpleDonutOptions, $scope.donutResponsive);
    });
  }
})();

================================================
FILE: src/app/pages/charts/charts.module.js
================================================
/**
 * @author v.lugovsky
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts', [
      'BlurAdmin.pages.charts.amCharts',
      'BlurAdmin.pages.charts.chartJs',
      'BlurAdmin.pages.charts.chartist',
      'BlurAdmin.pages.charts.morris'
  ])
      .config(routeConfig);

  /** @ngInject */
  function routeConfig($stateProvider) {
    $stateProvider
        .state('charts', {
          url: '/charts',
          abstract: true,
          template: '<div ui-view  autoscroll="true" autoscroll-body-top></div>',
          title: 'Charts',
          sidebarMeta: {
            icon: 'ion-stats-bars',
            order: 150,
          },
        });
  }

})();


================================================
FILE: src/app/pages/charts/morris/morris.html
================================================
<section ng-controller="morrisCtrl">
  <div class="row">
    <div class="col-md-12">
      <div ba-panel ba-panel-title="Line Chart" ba-panel-class="with-scroll">
        <div
            line-chart
            line-data='lineData'
            line-xkey='y'
            line-ykeys='["a", "b"]'
            line-labels='["Serie A", "Serie B"]'
            line-colors='colors'>
        </div>
      </div>
    </div>
  </div>
  <div class="row">
    <div class="col-md-4">
      <div ba-panel ba-panel-title="Donut" ba-panel-class="with-scroll">
        <div
            donut-chart
            donut-data='donutData'
            donut-colors='colors'

            donut-formatter='"currency"'>
        </div>
      </div>
    </div>
    <div class="col-md-8">
      <div ba-panel ba-panel-title="Bar Chart" ba-panel-class="with-scroll ">
        <div
            bar-chart
            bar-data='barData'
            bar-x='y'
            bar-y='["a", "b"]'
            bar-labels='["Series A", "Series B"]'
            bar-colors='colors'>
        </div>
      </div>
    </div>
  </div>
  <div class="row">
    <div class="col-md-12">
      <div ba-panel ba-panel-title="Area Chart" ba-panel-class="with-scroll">
        <div
            area-chart
            area-data='areaData'
            area-xkey='y'
            area-ykeys='["a", "b"]' %
            area-labels='["Serie A", "Serie B"]'
            line-colors='colors'>
        </div>
      </div>
    </div>
  </div>
</section>

================================================
FILE: src/app/pages/charts/morris/morris.module.js
================================================
/**
 * @author a.demeshko
 * created on 12/18/15
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.morris', [])
    .config(routeConfig).config(function(baConfigProvider){
      var layoutColors = baConfigProvider.colors;
      Morris.Donut.prototype.defaults.backgroundColor = 'transparent';
      Morris.Donut.prototype.defaults.labelColor = layoutColors.defaultText;
      Morris.Grid.prototype.gridDefaults.gridLineColor = layoutColors.borderDark;
      Morris.Grid.prototype.gridDefaults.gridTextColor = layoutColors.defaultText;
    });

  /** @ngInject */
  function routeConfig($stateProvider) {
    $stateProvider
        .state('charts.morris', {
          url: '/morris',
          templateUrl: 'app/pages/charts/morris/morris.html',
          title: 'Morris',
          sidebarMeta: {
            order: 300,
          }
        });
  }

})();

================================================
FILE: src/app/pages/charts/morris/morrisCtrl.js
================================================
/**
 * @author a.demeshko
 * created on 12/16/15
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.charts.morris')
    .controller('morrisCtrl', morrisCtrl);

  /** @ngInject */
  function morrisCtrl($scope, $window, baConfig) {
    var layoutColors = baConfig.colors;
    $scope.colors = [layoutColors.primary, layoutColors.warning, layoutColors.danger, layoutColors.info, layoutColors.success, layoutColors.primaryDark];
    $scope.lineData = [
      {y: "2006", a: 100, b: 90},
      {y: "2007", a: 75, b: 65},
      {y: "2008", a: 50, b: 40},
      {y: "2009", a: 75, b: 65},
      {y: "2010", a: 50, b: 40},
      {y: "2011", a: 75, b: 65},
      {y: "2012", a: 100, b: 90}
    ];
    $scope.areaData = [
      {y: "2006", a: 100, b: 90},
      {y: "2007", a: 75, b: 65},
      {y: "2008", a: 50, b: 40},
      {y: "2009", a: 75, b: 65},
      {y: "2010", a: 50, b: 40},
      {y: "2011", a: 75, b: 65},
      {y: "2012", a: 100, b: 90}
    ];
    $scope.barData = [
      {y: "2006", a: 100, b: 90},
      {y: "2007", a: 75, b: 65},
      {y: "2008", a: 50, b: 40},
      {y: "2009", a: 75, b: 65},
      {y: "2010", a: 50, b: 40},
      {y: "2011", a: 75, b: 65},
      {y: "2012", a: 100, b: 90}
    ];
    $scope.donutData = [
      {label: "Download Sales", value: 12},
      {label: "In-Store Sales", value: 30},
      {label: "Mail-Order Sales", value: 20}
    ];

    angular.element($window).bind('resize', function () {
      //$window.Morris.Grid.prototype.redraw();
    });
  }

})();

================================================
FILE: src/app/pages/components/components.module.js
================================================
/**
 * @author k.danovsky
 * created on 15.01.2016
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.components', [
    'BlurAdmin.pages.components.mail',
    'BlurAdmin.pages.components.timeline',
    'BlurAdmin.pages.components.tree',
  ])
      .config(routeConfig);

  /** @ngInject */
  function routeConfig($stateProvider) {
    $stateProvider
        .state('components', {
          url: '/components',
          template : '<ui-view  autoscroll="true" autoscroll-body-top></ui-view>',
          abstract: true,
          title: 'Components',
          sidebarMeta: {
            icon: 'ion-gear-a',
            order: 100,
          },
        });
  }

})();


================================================
FILE: src/app/pages/components/mail/MailTabCtrl.js
================================================
/**
 * @author v.lugovsky
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.components.mail')
      .controller('MailTabCtrl', MailTabCtrl);

  /** @ngInject */
  function MailTabCtrl(composeModal, mailMessages) {

    var vm = this;
    vm.navigationCollapsed = true;
    vm.showCompose = function(subject, to , text){
      composeModal.open({
        subject : subject,
        to: to,
        text: text
      })
    };

    vm.tabs = mailMessages.getTabs();
  }

})();


================================================
FILE: src/app/pages/components/mail/composeBox/compose.html
================================================
<div class="compose-header">
  <span>
    New message
  </span>
  <span class="header-controls">
    <i class="ion-minus-round"></i>
    <i class="ion-arrow-resize"></i>
    <i ng-click="$dismiss()" class="ion-close-round"></i>
  </span>
</div>
<div>
  <input type="text" class="form-control compose-input default-color"  placeholder="To" ng-model="boxCtrl.to">
  <input type="text" class="form-control compose-input default-color"  placeholder="Subject" ng-model="boxCtrl.subject">
  <div class="compose-container">
    <text-angular-toolbar ta-toolbar-class="toolbarMain" name="toolbarMain" ta-toolbar="[['h1','h2','h3','bold','italics', 'underline', 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull']]"></text-angular-toolbar>
    <text-angular name="htmlcontent" ta-target-toolbars='toolbarMain,toolbarFooter' ng-model="boxCtrl.text"></text-angular>
  </div>
</div>
<div class="compose-footer clearfix">
  <button type="button" ng-click="$dismiss()" class="btn btn-send">Send</button>
  <text-angular-toolbar ta-toolbar-class="toolbarFooter" name="toolbarFooter" ta-toolbar="[['insertLink', 'insertImage', 'html', 'quote','insertVideo']]"></text-angular-toolbar>
  <div class="footer-controls">
    <i class="footer-control-first compose-footer-icon ion-arrow-down-b"></i>
    <i ng-click="$dismiss()" class="compose-footer-icon ion-android-delete"></i>
  </div>
</div>

================================================
FILE: src/app/pages/components/mail/composeBox/composeBoxCtrl.js
================================================
/**
 * @author a.demeshko
 * created on 24/12/15
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.components.mail')
    .controller('composeBoxCtrl', composeBoxCtrl);

  /** @ngInject */
  function composeBoxCtrl(subject, to, text) {
    var vm = this;
    vm.subject = subject;
    vm.to = to;
    vm.text = text;
  }
})();

================================================
FILE: src/app/pages/components/mail/composeBox/composeModal.js
================================================
/**
 * @author a.demeshko
 * created on 12/24/15
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.components.mail')
    .service('composeModal', composeModal);

  /** @ngInject */
  function composeModal($uibModal) {
      this.open = function(options){
        return $uibModal.open({
          animation: false,
          templateUrl: 'app/pages/components/mail/composeBox/compose.html',
          controller: 'composeBoxCtrl',
          controllerAs: 'boxCtrl',
          size: 'compose',
          resolve: {
            subject: function () {
              return options.subject;
            },
            to: function () {
              return options.to;
            },
            text: function () {
              return options.text;
            }
          }
        });
      }

  }

})();

================================================
FILE: src/app/pages/components/mail/detail/MailDetailCtrl.js
================================================
/**
 * @author a.demeshko
 * created on 28.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.components.mail')
    .controller('MailDetailCtrl', MailDetailCtrl);

  /** @ngInject */
  function MailDetailCtrl($stateParams, mailMessages) {
    var vm = this;
    vm.mail = mailMessages.getMessageById($stateParams.id);
    vm.label = $stateParams.label;
  }

})();


================================================
FILE: src/app/pages/components/mail/detail/mailDetail.html
================================================
<div class="message-container" ng-class="{'expanded': tabCtrl.navigationCollapsed}">
  <div class="message">
    <div class="row">
      <div class="toggle-navigation-container detail-page">
        <a href class="collapse-navigation-link ion-navicon"
           ng-click="tabCtrl.navigationCollapsed=!tabCtrl.navigationCollapsed"></a>
      </div>
      <button ui-sref="components.mail.label({label : detailCtrl.label})"  type="button" class="back-button btn btn-default btn-with-icon"><i
          class="ion-chevron-left"></i>Back
      </button>
    </div>
    <div class="person-info row">
      <div class="col-lg-4 col-md-12  no-padding">
        <img ng-src="{{detailCtrl.mail.name.split(' ')[0] | profilePicture}}" class="human-picture">

        <div class="name">
          <h2 class="name-h">{{detailCtrl.mail.name.split(' ')[0]}}</h2>

          <h2 class="name-h second-name">{{detailCtrl.mail.name.split(' ')[1]}}</h2>

          <div>
            <span class="mail-tag tag label {{detailCtrl.mail.tag}}">{{detailCtrl.mail.tag}}</span>
          </div>
        </div>
      </div>
      <div class="col-lg-4 col-md-6 col-xs-12 no-padding">
        <div class="contact-info phone-email">
          <div>
            <i class="ion-iphone"></i>
            <span class="phone">777-777-7777</span>
          </div>
          <div>
            <i class="ion-email"></i>
            <span class="email">{{detailCtrl.mail.email}}</span>
          </div>
        </div>
      </div>

      <div class="col-lg-4 col-md-6 col-xs-12 no-padding">
        <div class="contact-info position-address">
          <div>
            <span class="position">{{detailCtrl.mail.position}}</span>
          </div>
          <div>
            <span class="address">12 Nezavisimosti st. Vilnius, Lithuania</span>
          </div>
        </div>
      </div>
    </div>
    <div class="row">
    </div>
    <div class="line"></div>
    <div class="message-details">
      <span class="subject">{{detailCtrl.mail.subject}} </span>
      <span class="date">• {{detailCtrl.mail.date | date : 'h:mm a MMMM d '}}</span>
    </div>
    <div class="line"></div>
    <div ng-bind-html="detailCtrl.mail.body" class="message-body">

    </div>
    <div class="line"></div>
    <div class="attachment" ng-show="detailCtrl.mail.attachment">
      <span class="file-links">1 Attachment - <a href>View</a> | <a href>Download</a></span>
      <div>
        <i class="file-icon ion-document"></i>
        <span class="file-name">{{detailCtrl.mail.attachment}}</span>
      </div>
    </div>
    <div class="line" ng-show="detailCtrl.mail.attachment"></div>
    <div class="answer-container">
      <button type="button" class="btn btn-with-icon" ng-click="tabCtrl.showCompose(detailCtrl.mail.subject,detailCtrl.mail.email,'')"><i class="ion-reply"></i>Reply</button>
      <button type="button" class="btn btn-with-icon" ng-click="tabCtrl.showCompose(detailCtrl.mail.subject,'',detailCtrl.mail.body)"><i class="ion-forward"></i>Forward</button>
      <button type="button" class="btn btn-with-icon"><i class="ion-printer"></i>Print</button>
      <button type="button" class="btn btn-with-icon"><i class="ion-android-remove-circle"></i>Spam</button>
      <button type="button" class="btn btn-with-icon"><i class="ion-android-delete"></i>Delete</button>
    </div>

  </div>
  <div ng-show="!detailCtrl.mail">
    <h5 ng-class="text-center">Nothing to show</h5>
  </div>
</div>

================================================
FILE: src/app/pages/components/mail/list/MailListCtrl.js
================================================
/**
 * @author a.demeshko
 * created on 28.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.components.mail')
    .controller('MailListCtrl', MailListCtrl);

  /** @ngInject */
  function MailListCtrl($stateParams,  mailMessages) {
    var vm = this;
    vm.messages = mailMessages.getMessagesByLabel($stateParams.label);
    vm.label = $stateParams.label;
  }

})();


================================================
FILE: src/app/pages/components/mail/list/mailList.html
================================================
<div class="side-message-navigation" ng-class="{'expanded': tabCtrl.navigationCollapsed}">
  <div class="mail-messages-control side-message-navigation-item">
    <div class="toggle-navigation-container">
      <a href class="collapse-navigation-link ion-navicon"
         ng-click="tabCtrl.navigationCollapsed=!tabCtrl.navigationCollapsed"></a>
    </div>
    <label class="checkbox-inline custom-checkbox nowrap">
      <input type="checkbox" id="inlineCheckbox01" value="option1">
      <span class="select-all-label">Select All</span>
    </label>
    <button type="button" class="btn  btn-icon refresh-button"><i class="ion-refresh"></i></button>
    <div class="btn-group" uib-dropdown>
      <button type="button" class="btn more-button" uib-dropdown-toggle>
        More <span class="caret"></span>
      </button>
      <ul uib-dropdown-menu>
        <li><a href>Action</a></li>
        <li><a href>Another action</a></li>
        <li><a href>Something else here</a></li>
        <li role="separator" class="divider"></li>
        <li><a href>Separated link</a></li>
      </ul>
    </div>
  </div>
  <div class="messages">
    <table>
      <tr ng-repeat="m in listCtrl.messages track by m.id | orderBy:'-date'"
          class="side-message-navigation-item little-human shineHover {{m.tag}}">
        <td class="check-td">
          <div class="mail-checkbox">
            <label class="checkbox-inline custom-checkbox nowrap">
              <input type="checkbox">
              <span></span>
            </label>
          </div>
        </td>
        <td  class="photo-td" ui-sref="components.mail.detail({id: m.id, label: listCtrl.label})"><img ng-src="{{m.name.split(' ')[0] | profilePicture}}" class="little-human-picture"></td>
        <td  ui-sref="components.mail.detail({id: m.id, label: listCtrl.label})">
          <div class="name-container">
            <div><span class="name">{{m.name}}</span></div>
            <div><span class="tag label label-primary {{m.tag}}">{{m.tag}}</span></div>
          </div>
        </td>
        <td  ui-sref="components.mail.detail({id: m.id, label: listCtrl.label})">
          <div class="additional-info">
            <span class="subject"> {{m.subject}}</span>
          </div>
        </td>
        <td  ui-sref="components.mail.detail({id: m.id, label: listCtrl.label})">
          <div class="mail-body-part">{{m.body | plainText}}</div>
        </td>
        <td class="date">
          <span>{{m.date | date : 'MMM d HH:mm'}}</span>
        </td>
      </tr>
    </table>
  </div>
</div>

================================================
FILE: src/app/pages/components/mail/mail.html
================================================
<div class="row mail-client-container transparent">
  <div class="col-md-12">
    <div ba-panel ba-panel-class="xmedium-panel mail-panel">
      <div class="letter-layout">
        <div class="mail-navigation-container" ng-class="{'expanded' : !tabCtrl.navigationCollapsed}">
          <div class="text-center">
            <button type="button" class="btn btn-default compose-button" ng-click="tabCtrl.showCompose('','','')">
              Compose
            </button>
          </div>
          <div ng-repeat="t in tabCtrl.tabs" ui-sref-active="active" class="mail-navigation"
               ui-sref="components.mail.label({label: t.label})" ng-click="selectTab(t.label)">
            {{t.name}}<span class="new-mails" ng-show="t.newMails">{{t.newMails}}</span>
          </div>
          <div class="labels">
            <div class="labels-title">

            </div>
            <div class="labels-container">
              <div class="label-item">
                <span class="tag label work">Work</span>
              </div>
              <div class="label-item">
                <span class="tag label family">Family</span>
              </div>
              <div class="label-item">
                <span class="tag label friend">Friend</span>
              </div>
              <div class="label-item">
                <span class="tag label study">Study</span>
              </div>
            </div>
          </div>
          <div class="add-label-container">
            <i class="ion-plus-round"></i><span class="label-input-stub">Add new label</span>
          </div>
        </div>
        <ui-view></ui-view>
      </div>
    </div>
  </div>
</div>

================================================
FILE: src/app/pages/components/mail/mail.module.js
================================================
/**
 * @author v.lugovsky
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.components.mail', [])
    .config(routeConfig);

  /** @ngInject */
  function routeConfig($stateProvider,$urlRouterProvider) {
    $stateProvider
        .state('components.mail', {
          url: '/mail',
          abstract: true,
          templateUrl: 'app/pages/components/mail/mail.html',
          controller: "MailTabCtrl",
          controllerAs: "tabCtrl",
          title: 'Mail',
          sidebarMeta: {
            order: 0,
          },
        }).state('components.mail.label', {
          url: '/:label',
          templateUrl: 'app/pages/components/mail/list/mailList.html',
          title: 'Mail',
          controller: "MailListCtrl",
          controllerAs: "listCtrl"
        }).state('components.mail.detail', {
          url: '/:label/:id',
          templateUrl: 'app/pages/components/mail/detail/mailDetail.html',
          title: 'Mail',
          controller: "MailDetailCtrl",
          controllerAs: "detailCtrl"
        });
    $urlRouterProvider.when('/components/mail','/components/mail/inbox');
  }

})();


================================================
FILE: src/app/pages/components/mail/mailMessages.js
================================================
/**
 * @author a.demeshko
 * created on 12/29/15
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.components.mail')
    .service('mailMessages', mailMessages);

  /** @ngInject */
  function mailMessages($sce) {
    var messages = [
      {
        "id": "4563faass",
        "name": "Nasta Linnie",
        "subject": "Great text",
        "date": "2015-08-28T07:57:09",
        "body": $sce.trustAsHtml("<p>Hey John, </p><p>Check out this cool text.</p>"),
        "pic": "img/Nasta.png",
        "email": "petraramsey@mail.com",
        "attachment": "poem.txt",
        "position": "Great Employee",
        "tag": "friend",
        "labels": ['inbox']
      },
      {
        "id": "4563fdfvd",
        "name": "Nasta Linnie",
        "subject": "Lores ipsum",
        "date": "2015-11-19T03:30:45",
        "important": false,
        "body": $sce.trustAsHtml("<p>Hey John, </p><br><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ex mauris, ultrices vel lectus quis, scelerisque hendrerit ipsum. Suspendisse ullamcorper turpis neque, eget dapibus magna placerat ac. Suspendisse rhoncus ligula ac mi tempus varius ut sed lacus. Sed et commodo nulla, et placerat leo. Nam rhoncus vulputate sem non pharetra. Praesent fringilla massa in laoreet convallis. Aliquam lobortis dui a congue facilisis. Aenean dapibus semper semper. Quisque aliquam, nibh dapibus interdum condimentum, ex velit tempor tortor, at vestibulum magna leo quis leo. Morbi pulvinar varius erat ac rutrum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In hac habitasse platea dictumst.</p>" +
          "<br><p>Cras rhoncus quam ipsum, vel dignissim nisl egestas sed. Aliquam erat volutpat. Integer eu nisl elit. Donec malesuada diam vitae tellus luctus tincidunt. Donec tempus blandit neque, rutrum egestas ipsum sagittis tempor. Curabitur volutpat ligula enim, nec vehicula purus molestie at. Sed a facilisis enim, nec molestie magna. Donec in augue non est viverra dapibus vel tempus risus. Nam porttitor purus sit amet hendrerit ullamcorper. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>"),
        "pic": "img/Nasta.png",
        "email": "petraramsey@mail.com",
        "position": "Great Employee",
        "tag": "study",
        "labels": ['inbox']
      },
      {
        "id": "4563zxcss",
        "name": "Nasta Linnie",
        "subject": "Lores ipsum",
        "date": "2015-10-19T03:30:45",
        "important": false,
        "body": $sce.trustAsHtml("<p>Hey Nasta, </p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>"),
        "pic": "img/Nasta.png",
        "email": "petraramsey@mail.com",
        "position": "Great Employee",
        "tag": "work",
        "labels": ['sent', 'important']
      },
      {
        "id": "8955sddf",
        "name": "Nick Cat",
        "subject": "New Design",
        "date": "2015-05-05T12:59:45",
        "body": $sce.trustAsHtml("<p>Hey John, Consectetur adipiscing elit</p><br>" +
          "<p>Cras rhoncus quam ipsum, vel dignissim nisl egestas sed. Aliquam erat volutpat. Integer eu nisl elit. Donec malesuada diam vitae tellus luctus tincidunt. Donec tempus blandit neque, rutrum egestas ipsum sagittis tempor. Curabitur volutpat ligula enim, nec vehicula purus molestie at. Sed a facilisis enim, nec molestie magna. Donec in augue non est viverra dapibus vel tempus risus. Nam porttitor purus sit amet hendrerit ullamcorper. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>"),
        "pic": "img/Nick.png",
        "email": "barlowshort@mail.com",
        "position": "Graphical designer",
        "attachment": "design.psd",
        "tag": "work",
        "labels": ['inbox']
      },
      {
        "id": "8955sdfcc",
        "name": "Nick Cat",
        "subject": "Gift card",
        "date": "2015-07-18T10:19:01",
        "body": $sce.trustAsHtml("<p>Hey John, </p><br><p>Consectetur adipiscing elit, Lorem ipsum dolor sit amet</p>"),
        "pic": "img/Nick.png",
        "email": "barlowshort@mail.com",
        "position": "Graphical designer",
        "tag": "study",
        "labels": ['inbox']
      },
      {
        "id": "8955asewf",
        "name": "Nick Cat",
        "subject": "Some news",
        "date": "2015-09-23T03:04:10",
        "body": $sce.trustAsHtml("<p>Hey John, </p><br><p>Integer eu nisl elit. Donec malesuada diam vitae tellus luctus tincidunt. Donec tempus blandit neque, rutrum egestas ipsum sagittis tempor. Curabitur volutpat ligula enim, nec vehicula purus molestie at. Sed a facilisis enim, nec molestie magna. Donec in augue non est viverra dapibus vel tempus risus. Nam porttitor purus sit amet hendrerit ullamcorper. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>"),
        "pic": "img/Nick.png",
        "email": "barlowshort@mail.com",
        "position": "Graphical designer",
        "tag": "work",
        "labels": ['inbox', 'important']
      },
      {
        "id": "2334uudsa",
        "name": "Kostya Danovsky",
        "subject": "Street Art",
        "date": "2015-11-22T10:05:09",
        "body": $sce.trustAsHtml("<p>Hey John, </p><p>Aliquam eu facilisis eros, quis varius est.</p>" +
          "<p>Consectetur adipiscing elit. Aliquam sodales sem in nibh pellentesque, ac dignissim mi dapibus.</p>" +
          "<p>Lorem ipsum dolor sit amet! Nullam imperdiet justo a ipsum laoreet euismod.</p>" +
          "<br><p>Cras tincidunt fermentum lectus, quis scelerisque lorem volutpat sed." +
          "Sed quis orci sed nisl sagittis viverra id at mauris. Nam venenatis mi nibh. Sed fringilla mattis vehic</p>"),
        "pic": "img/Kostya.png",
        "email": "schwart@mail.com",
        "position": "Technical Chef",
        "attachment": "file.doc",
        "tag": "family",
        "labels": ['inbox', 'important']
      },
      {
        "id": "2334aefvv",
        "name": "Kostya Danovsky",
        "subject": "New product",
        "date": "2015-06-22T06:26:10",
        "body": $sce.trustAsHtml("<p>Hello John, </p><p>Lorem ipsum dolor sit amet!</p>" +
          "<p>Consectetur adipiscing elit. Aliquam sodales sem in nibh pellentesque, ac dignissim mi dapibus.</p>" +
          "<p>Aliquam eu facilisis eros, quis varius est. Nullam imperdiet justo a ipsum laoreet euismod.</p>" +
          "<br><p>Nulla facilisi. Nulla congue, arcu eget blandit lacinia, leo ante ullamcorper lectus, vel pulvinar justo ipsum vitae justo." +
          "Cras tincidunt fermentum lectus, quis scelerisque lorem volutpat sed. Sed quis orci sed nisl sagittis viverra id at mauris. Nam venenatis mi nibh. Sed fringilla mattis vehic</p>"),
        "pic": "img/Kostya.png",
        "email": "schwart@mail.com",
        "position": "Technical Chef",
        "tag": "family",
        "labels": ['inbox', 'important']
      },
      {
        "id": "2334cvdss",
        "name": "Kostya Danovsky",
        "subject": "Old product",
        "date": "2015-06-22T06:26:10",
        "body": $sce.trustAsHtml("<p>Hello John, </p>" +
          "<p>Consectetur adipiscing elit. Aliquam sodales sem in nibh pellentesque, ac dignissim mi dapibus.</p>" +
          "<br>"+
          "<p>Cras tincidunt fermentum lectus, quis scelerisque lorem volutpat sed. Sed quis orci sed nisl sagittis viverra id at mauris. Nam venenatis mi nibh. Sed fringilla mattis vehic</p>"),
        "pic": "img/Kostya.png",
        "email": "schwart@mail.com",
        "position": "Technical Chef",
        "tag": "study",
        "labels": ['trash']
      },
      {
        "id": "8223xzxfn",
        "name": "Andrey Hrabouski",
        "subject": "Skype moji",
        "date": "2015-07-16T06:47:53",
        "body": $sce.trustAsHtml("<p>Hello John, </p><p>Aliquam sodales sem in nibh pellentesque</p>" +
          "<p>Lorem ipsum dolor I find moji in skype sit amet!.</p>"),
        "pic": "img/Andrey.png",
        "email": "lakeishaphillips@mail.com",
        "position": "Mobile Developer",
        "tag": 'family',
        "labels": ['trash']
      },
      {
        "id": "8223sdffn",
        "name": "Andrey Hrabouski",
        "subject": "My App",
        "date": "2015-06-20T07:05:02",
        "body": $sce.trustAsHtml("<p>Hey Vlad. </p><p>Lorem ipsum dolor sit amet!</p>" +
          "<p>Consectetur My Falasson App elit. Aliquam sodales sem in nibh pellentesque, ac dignissim mi dapibus.</p>"),
        "pic": "img/Andrey.png",
        "email": "lakeishaphillips@mail.com",
        "position": "Mobile Developer",
        "tag": 'family',
        "labels": ['spam']
      },
      {
        "id": "9391xdsff",
        "name": "Vlad Lugovsky",
        "subject": "Cool",
        "date": "2015-03-31T11:52:58",
        "body": $sce.trustAsHtml("<p>Hey Vlad. </p><p>Aliquam sodales sem in nibh pellentesque</p>" +
          "<p>Cras tincidunt fermentum lectus, quis scelerisque lorem volutpat sed.</p>"),
        "pic": "img/Vlad.png",
        "email": "carlsongoodman@mail.com",
        "position": "Fullstack man",
        "tag": "study",
        "labels": ['draft']
      },
      {
        "id": "8223xsdaa",
        "name": "Andrey Hrabouski",
        "subject": "Car rent",
        "date": "2015-02-25T10:58:58",
        "body": $sce.trustAsHtml("<p>Hey Andrey. </p>" +
          "<p>Cras tincidunt fermentum lectus, quis scelerisque lorem volutpat sed. Sed quis orci sed nisl sagittis viverra id at mauris. Nam venenatis mi nibh. Sed fringilla mattis vehic</p>"),
        "pic": "img/Andrey.png",
        "email": "lakeishaphillips@mail.com",
        "position": "Mobile Developer",
        "tag": "family",
        "labels": ['draft']
      },
      {
        "id": "9391xdsff",
        "name": "Vlad Lugovsky",
        "subject": "What next",
        "date": "2015-03-31T11:52:58",
        "body": $sce.trustAsHtml("<p>Hey Vlad. </p><p>Lorem ipsum dolor sit amet!</p>" +
          "<p>Esse esse labore tempor ullamco ullamco. Id veniam laborum c.</p>"),
        "pic": "img/Vlad.png",
        "email": "carlsongoodman@mail.com",
        "position": "Fullstack man",
        "tag": "study",
        "labels": ['sent']
      }
    ].sort(function (a, b) {
        if (a.date > b.date) return 1;
        if (a.date < b.date) return -1;
      }).reverse();
    var tabs = [{
      label: 'inbox',
      name: 'Inbox',
      newMails: 7
    }, {
      label: 'sent',
      name: 'Sent Mail'
    }, {
      label: 'important',
      name: 'Important'
    }, {
      label: 'draft',
      name: 'Draft',
      newMails: 2
    }, {
      label: 'spam',
      name: 'Spam'
    }, {
      label: 'trash',
      name: 'Trash'
    }];

    return{
      getTabs : function(){
        return tabs
      },
      getMessagesByLabel : function(label){
        return messages.filter(function(m){
          return m.labels.indexOf(label) != -1;
        });
      },
      getMessageById : function(id){
        return messages.filter(function(m){
          return m.id == id;
        })[0];
      }
    }

  }

})();

================================================
FILE: src/app/pages/components/timeline/TimelineCtrl.js
================================================
/**
 * @author v.lugovksy
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.components.timeline')
      .controller('TimelineCtrl', TimelineCtrl);

  /** @ngInject */
  function TimelineCtrl() {
    var timelineBlocks = $('.cd-timeline-block'),
        offset = 0.8;

    //hide timeline blocks which are outside the viewport
    hideBlocks(timelineBlocks, offset);

    //on scolling, show/animate timeline blocks when enter the viewport
    $(window).on('scroll', function () {
      if (!window.requestAnimationFrame) {
        setTimeout(function () {
          showBlocks(timelineBlocks, offset);
        }, 100);
      } else {
        window.requestAnimationFrame(function () {
          showBlocks(timelineBlocks, offset);
        });
      }
    });

    function hideBlocks(blocks, offset) {
      blocks.each(function () {
        ( $(this).offset().top > $(window).scrollTop() + $(window).height() * offset ) && $(this).find('.cd-timeline-img, .cd-timeline-content').addClass('is-hidden');
      });
    }

    function showBlocks(blocks, offset) {
      blocks.each(function () {
        ( $(this).offset().top <= $(window).scrollTop() + $(window).height() * offset && $(this).find('.cd-timeline-img').hasClass('is-hidden') ) && $(this).find('.cd-timeline-img, .cd-timeline-content').removeClass('is-hidden').addClass('bounce-in');
      });
    }
  }
})();

================================================
FILE: src/app/pages/components/timeline/timeline.html
================================================
<!-- todo: remove whole block -->
<div ba-panel>
  <section id="cd-timeline" class="cd-container cssanimations" ng-controller="TimelineCtrl">
    <div class="cd-timeline-block">
      <div class="cd-timeline-img">
        <div class="kameleon-icon with-round-bg warning"><img ng-src="{{::( 'Euro-Coin' | kameleonImg )}}"></div>
      </div>

      <div class="cd-timeline-content warning">
        <h5>Title of section 1</h5>

        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto, optio, dolorum provident rerum aut hic quasi
          placeat iure tempora laudantium ipsa ad debitis unde? Iste voluptatibus minus veritatis qui ut.</p>
        <span class="cd-date">Jan 14</span>
      </div>
    </div>

    <div class="cd-timeline-block">
      <div class="cd-timeline-img">
        <div class="kameleon-icon with-round-bg danger"><img ng-src="{{::( 'Laptop-Signal' | kameleonImg )}}"></div>
      </div>

      <div class="cd-timeline-content danger">
        <h5>Title of section 2</h5>

        <p>Donec dapibus at leo eget volutpat. Praesent dolor tellus, ultricies venenatis molestie eu, luctus eget nibh.
          Curabitur ullamcorper eleifend nisl.</p>
        <span class="cd-date">Jan 18</span>
      </div>
    </div>

    <div class="cd-timeline-block">
      <div class="cd-timeline-img">
        <div class="kameleon-icon with-round-bg primary"><img ng-src="{{::( 'Checklist' | kameleonImg )}}"></div>
      </div>

      <div class="cd-timeline-content primary">
        <h5>Title of section 3</h5>

        <p>Phasellus auctor tellus eget lacinia condimentum. Cum sociis natoque penatibus et magnis dis parturient
          montes.</p>
        <span class="cd-date">Feb 18</span>
      </div>
    </div>

    <div class="cd-timeline-block">
      <div class="cd-timeline-img">
        <div class="kameleon-icon with-round-bg warning"><img ng-src="{{::( 'Boss-3' | kameleonImg )}}"></div>
      </div>

      <div class="cd-timeline-content warning">
        <h5>Title of section 4</h5>

        <p>Morbi fringilla in massa ac posuere. Fusce non sagittis massa, id accumsan odio. Nullam eget tempor est.
          Etiam eu felis eu purus aliquam tristique id quis nisl. Nam eros nibh, consequat sed pulvinar eu, ultrices
          ornare ligula. Aenean interdum sed nunc sed hendrerit.</p>
        <span class="cd-date">Feb 20</span>
      </div>
    </div>
    <div class="cd-timeline-block">
      <div class="cd-timeline-img">
        <div class="kameleon-icon with-round-bg danger"><img ng-src="{{::( 'Online-Shopping' | kameleonImg )}}"></div>
      </div>

      <div class="cd-timeline-content danger">
        <h5>Title of section 5</h5>

        <p> Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur eget mattis
          metus. Nullam egestas eros metus, quis fringilla urna accumsan sed. Aliquam ultrices at arcu vitae
          tincidunt.</p>
        <span class="cd-date">Feb 21</span>
      </div>
    </div>
    <div class="cd-timeline-block">
      <div class="cd-timeline-img">
        <div class="kameleon-icon with-round-bg primary"><img ng-src="{{::( 'Money-Increase' | kameleonImg )}}"></div>
      </div>

      <div class="cd-timeline-content primary">
        <h5>Title of section 6</h5>

        <p>Praesent bibendum ante mattis augue consectetur, ut commodo turpis consequat. Donec ligula eros, porta in
          iaculis vel, semper ac sem. Integer at mauris lorem.</p>
        <span class="cd-date">Feb 23</span>
      </div>
    </div>
    <div class="cd-timeline-block">
      <div class="cd-timeline-img">
        <div class="kameleon-icon with-round-bg warning"><img ng-src="{{::( 'Vector' | kameleonImg )}}"></div>
      </div>

      <div class="cd-timeline-content warning">
        <h5>Title of section 7</h5>

        <p>Vivamus ut laoreet erat, vitae eleifend eros. Sed varius id tellus non lobortis. Sed dolor ante, cursus non
          scelerisque sed, euismod id eros.</p>
        <span class="cd-date">Feb 24</span>
      </div>
    </div>
  </section>
</div>

================================================
FILE: src/app/pages/components/timeline/timeline.module.js
================================================
/**
 * @author a.demeshko
 * created on 1/12/16
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.components.timeline', [])
    .config(routeConfig);

  /** @ngInject */
  function routeConfig($stateProvider) {
    $stateProvider
      .state('components.timeline', {
        url: '/timeline',
        templateUrl: 'app/pages/components/timeline/timeline.html',
          title: 'Timeline',
          sidebarMeta: {
            icon: 'ion-ios-pulse',
            order: 100,
          },
      });
  }
})();

================================================
FILE: src/app/pages/components/tree/tree.html
================================================
<div class="row" ng-controller="treeCtrl">
  <div class="col-md-6">
    <div ba-panel ba-panel-title="Basic Action" ba-panel-class="with-scroll tree-panel">
      <div class="row">
        <div class="col-sm-4">
          <div class="control-side text-center">
            <div>
              <button class="btn btn-primary" ng-click="addNewNode()">Add</button>
            </div>
            <div>
              <button class="btn btn-primary" ng-click="collapse()">Collapse All</button>
            </div>
            <div>
              <button class="btn btn-primary" ng-click="expand()">Expand All</button>
            </div>
            <div>
              <button class="btn btn-primary" ng-click="refresh()">Refresh</button>
            </div>
          </div>
        </div>
        <div class="col-sm-8">
          <div js-tree="basicConfig" ng-model="treeData" should-apply="applyModelChanges()" tree="basicTree" tree-events="ready:readyCB"></div>
        </div>
      </div>
    </div>
  </div>
  <div class="col-md-6">
    <div ba-panel ba-panel-title="Drag & Drop" ba-panel-class="with-scroll tree-panel">
      <div js-tree="dragConfig" ng-model="dragData"></div>
    </div>
  </div>
</div>
</div>


================================================
FILE: src/app/pages/components/tree/tree.module.js
================================================
/**
 * @author a.demeshko
 * created on 12.21.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.components.tree', [])
    .config(routeConfig)
    .config(function(){
      $.jstree.defaults.core.themes.url = true;
      $.jstree.defaults.core.themes.dir = "assets/img/theme/vendor/jstree/dist/themes";
    });

  /** @ngInject */
  function routeConfig($stateProvider) {
    $stateProvider
        .state('components.tree', {
          url: '/tree',
          templateUrl: 'app/pages/components/tree/tree.html',
          title: 'Tree View',
          sidebarMeta: {
            order: 200,
          },
        });
  }

})();


================================================
FILE: src/app/pages/components/tree/treeCtrl.js
================================================
/**
 * @author a.demeshko
 * created on 12/21/15
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.components.tree')
    .controller('treeCtrl', treeCtrl);

  /** @ngInject */
  function treeCtrl($scope, $timeout) {

    $scope.ignoreChanges = false;
    var newId = 0;
    $scope.ignoreChanges = false;
    $scope.newNode = {};

    $scope.basicConfig = {
      core: {
        multiple: false,
        check_callback: true,
        worker: true
      },
      'types': {
        'folder': {
          'icon': 'ion-ios-folder'
        },
        'default': {
          'icon': 'ion-document-text'
        }
      },
      'plugins': ['types'],
      'version': 1
    };

    $scope.dragConfig = {
      'core': {
        'check_callback': true,
        'themes': {
          'responsive': false
        }
      },
      'types': {
        'folder': {
          'icon': 'ion-ios-folder'
        },
        'default': {
          'icon': 'ion-document-text'
        }
      },
      "plugins": ["dnd", 'types']
    };

    $scope.addNewNode = function () {
      $scope.ignoreChanges = true;
      var selected = this.basicTree.jstree(true).get_selected()[0];
      if (selected)
        $scope.treeData.push({
          id: (newId++).toString(),
          parent: selected,
          text: "New node " + newId,
          state: {opened: true}
        });
      $scope.basicConfig.version++;
    };


    $scope.refresh = function () {
      $scope.ignoreChanges = true;
      newId = 0;
      $scope.treeData = getDefaultData();
      $scope.basicConfig.version++;
    };

    $scope.expand = function () {
      $scope.ignoreChanges = true;
      $scope.treeData.forEach(function (n) {
        n.state.opened = true;
      });
      $scope.basicConfig.version++;
    };

    $scope.collapse = function () {
      $scope.ignoreChanges = true;
      $scope.treeData.forEach(function (n) {
        n.state.opened = false;
      });
      $scope.basicConfig.version++;
    };

    $scope.readyCB = function() {
      $timeout(function() {
        $scope.ignoreChanges = false;
      });
    };


    $scope.applyModelChanges = function() {
      return !$scope.ignoreChanges;
    };

    $scope.treeData = getDefaultData();
    $scope.dragData = [
      {
        "id": "nd1",
        "parent": "#",
        "type": "folder",
        "text": "Node 1",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd2",
        "parent": "#",
        "type": "folder",
        "text": "Node 2",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd3",
        "parent": "#",
        "type": "folder",
        "text": "Node 3",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd4",
        "parent": "#",
        "type": "folder",
        "text": "Node 4",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd5",
        "parent": "nd1",
        "text": "Node 1.1",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd6",
        "parent": "nd1",
        "text": "Node 1.2",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd7",
        "parent": "nd1",
        "text": "Node 1.3",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd8",
        "parent": "nd2",
        "text": "Node 2.1",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd9",
        "parent": "nd2",
        "text": "Node 2.2",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd10",
        "parent": "nd2",
        "text": "Node 2.3",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd11",
        "parent": "nd3",
        "text": "Node 3.1",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd12",
        "parent": "nd3",
        "text": "Node 3.2",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd13",
        "parent": "nd3",
        "text": "Node 3.3",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd14",
        "parent": "nd4",
        "text": "Node 4.1",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd15",
        "parent": "nd4",
        "text": "Node 4.2",
        "state": {
          "opened": true
        }
      },
      {
        "id": "nd16",
        "parent": "nd4",
        "text": "Node 4.3",
        "state": {
          "opened": true
        }
      }
    ];

    function getDefaultData() {
      return [
        {
          "id": "n1",
          "parent": "#",
          "type": "folder",
          "text": "Node 1",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n2",
          "parent": "#",
          "type": "folder",
          "text": "Node 2",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n3",
          "parent": "#",
          "type": "folder",
          "text": "Node 3",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n5",
          "parent": "n1",
          "text": "Node 1.1",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n6",
          "parent": "n1",
          "text": "Node 1.2",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n7",
          "parent": "n1",
          "text": "Node 1.3",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n8",
          "parent": "n1",
          "text": "Node 1.4",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n9",
          "parent": "n2",
          "text": "Node 2.1",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n10",
          "parent": "n2",
          "text": "Node 2.2 (Custom icon)",
          "icon": "ion-help-buoy",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n12",
          "parent": "n3",
          "text": "Node 3.1",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n13",
          "parent": "n3",
          "type": "folder",
          "text": "Node 3.2",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n14",
          "parent": "n13",
          "text": "Node 3.2.1",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n15",
          "parent": "n13",
          "text": "Node 3.2.2",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n16",
          "parent": "n3",
          "text": "Node 3.3",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n17",
          "parent": "n3",
          "text": "Node 3.4",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n18",
          "parent": "n3",
          "text": "Node 3.5",
          "state": {
            "opened": true
          }
        },
        {
          "id": "n19",
          "parent": "n3",
          "text": "Node 3.6",
          "state": {
            "opened": true
          }
        }
      ]
    }


  }
})();

================================================
FILE: src/app/pages/dashboard/blurFeed/BlurFeedCtrl.js
================================================
/**
 * @author v.lugovksy
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.dashboard')
      .controller('BlurFeedCtrl', BlurFeedCtrl);

  /** @ngInject */
  function BlurFeedCtrl($scope) {
    $scope.feed = [
      {
        type: 'text-message',
        author: 'Kostya',
        surname: 'Danovsky',
        header: 'Posted new message',
        text: 'Guys, check this out: \nA police officer found a perfect hiding place for watching for speeding motorists. One day, the officer was amazed when everyone was under the speed limit, so he investigated and found the problem. A 10 years old boy was standing on the side of the road with a huge hand painted sign which said "Radar Trap Ahead." A little more investigative work led the officer to the boy\'s accomplice: another boy about 100 yards beyond the radar trap with a sign reading "TIPS" and a bucket at his feet full of change.',
        time: 'Today 11:55 pm',
        ago: '25 minutes ago',
        expanded: false,
      }, {
        type: 'video-message',
        author: 'Andrey',
        surname: 'Hrabouski',
        header: 'Added new video',
        text: '"Vader and Me"',
        preview: 'app/feed/vader-and-me-preview.png',
        link: 'https://www.youtube.com/watch?v=IfcpzBbbamk',
        time: 'Today 9:30 pm',
        ago: '3 hrs ago',
        expanded: false,
      }, {
        type: 'image-message',
        author: 'Vlad',
        surname: 'Lugovsky',
        header: 'Added new image',
        text: '"My little kitten"',
        preview: 'app/feed/my-little-kitten.png',
        link: 'http://api.ning.com/files/DtcI2O2Ry7A7VhVxeiWfGU9WkHcMy4WSTWZ79oxJq*h0iXvVGndfD7CIYy-Ax-UAFCBCdqXI4GCBw3FOLKTTjQc*2cmpdOXJ/1082127884.jpeg',
        time: 'Today 2:20 pm',
        ago: '10 hrs ago',
        expanded: false,
      }, {
        type: 'text-message',
        author: 'Nasta',
        surname: 'Linnie',
        header: 'Posted new message',
        text: 'Haha lol',
        time: '11.11.2015',
        ago: '2 days ago',
        expanded: false,
      }, {
        type: 'geo-message',
        author: 'Nick',
        surname: 'Cat',
        header: 'Posted location',
        text: '"New York, USA"',
        preview: 'app/feed/new-york-location.png',
        link: 'https://www.google.by/maps/place/New+York,+NY,+USA/@40.7201111,-73.9893872,14z',
        time: '11.11.2015',
        ago: '2 days ago',
        expanded: false,
      }, {
        type: 'text-message',
        author: 'Vlad',
        surname: 'Lugovsky',
        header: 'Posted new message',
        text: "First snake: I hope I'm not poisonous. Second snake: Why? First snake: Because I bit my lip!",
        time: '12.11.2015',
        ago: '3 days ago',
        expanded: false,
      }, {
        type: 'text-message',
        author: 'Andrey',
        surname: 'Hrabouski',
        header: 'Posted new message',
        text: 'How do you smuggle an elephant across the border? Put a slice of bread on each side, and call him "lunch".',
        time: '14.11.2015',
        ago: '5 days ago',
        expanded: false,
      }, {
        type: 'text-message',
        author: 'Nasta',
        surname: 'Linnie',
        header: 'Posted new message',
        text: 'When your hammer is C++, everything begins to look like a thumb.',
        time: '14.11.2015',
        ago: '5 days ago',
        expanded: false,
      }, {
        type: 'text-message',
        author: 'Alexander',
        surname: 'Demeshko',
        header: 'Posted new message',
        text: '“I mean, they say you die twice. One time when you stop breathing and a second time, a bit later on, when somebody says your name for the last time." ©',
        time: '15.11.2015',
        ago: '6 days ago',
        expanded: false,
      }, {
        type: 'image-message',
        author: 'Nick',
        surname: 'Cat',
        header: 'Posted photo',
        text: '"Protein Heroes"',
        preview: 'app/feed/genom.png',
        link: 'https://dribbble.com/shots/2504810-Protein-Heroes',
        time: '16.11.2015',
        ago: '7 days ago',
        expanded: false,
      },
      {
        type: 'text-message',
        author: 'Kostya',
        surname: 'Danovsky',
        header: 'Posted new message',
        text: 'Why did the CoffeeScript developer keep getting lost? Because he couldn\'t find his source without a map',
        time: '18.11.2015',
        ago: '9 days ago',
        expanded: false,
      }
    ];

    $scope.expandMessage = function(message){
      message.expanded = !message.expanded;
    }
  }
})();

================================================
FILE: src/app/pages/dashboard/blurFeed/blurFeed.directive.js
================================================
/**
 * @author v.lugovksy
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.dashboard')
      .directive('blurFeed', blurFeed);

  /** @ngInject */
  function blurFeed() {
    return {
      restrict: 'E',
      controller: 'BlurFeedCtrl',
      templateUrl: 'app/pages/dashboard/blurFeed/blurFeed.html'
    };
  }
})();

================================================
FILE: src/app/pages/dashboard/blurFeed/blurFeed.html
================================================

<div class="feed-messages-container" track-width="smallContainerWidth" min-width="360">
  <div class="feed-message" ng-repeat="message in feed" ng-click="expandMessage(message)">
    <div class="message-icon" ng-if="message.type == 'text-message'">
      <img class="photo-icon" ng-src="{{::( message.author | profilePicture )}}">
    </div>
    <div class="message-icon" ng-if="message.type != 'text-message'">
      <img class="photo-icon" ng-src="{{::( message.author | profilePicture )}}">
      <span class="sub-photo-icon" ng-class="::message.type"></span>
    </div>
    <div class="text-block text-message">
      <div class="message-header">
        <span class="author">{{ ::message.author }} {{ ::message.surname}}</span>
      </div>
      <div class="message-content line-clamp" ng-class="{'line-clamp-2' : !message.expanded}">
        <span ng-if="message.preview">{{message.header}} </span>{{::message.text}}
      </div>
      <div class="preview" ng-show="message.expanded" ng-if="message.preview">
        <a href="{{::message.link}}" target="_blank">
          <img ng-src="{{ ::( message.preview | appImage )}}">
        </a>
      </div>
      <div ng-show="message.expanded" class="message-time">
        <div class="post-time">
          {{::message.time}}
        </div>
        <div class="ago-time">
          {{::message.ago}}
        </div>
      </div>
    </div>
  </div>
</div>


================================================
FILE: src/app/pages/dashboard/calendar/dashboardCalendar.js
================================================
/**
 * @author v.lugovksy
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.dashboard')
      .service('dashboardCalendar', dashboardCalendar);

  /** @ngInject */
  function dashboardCalendar() {

  }
})();

================================================
FILE: src/app/pages/dashboard/dashboard.html
================================================
<dashboard-pie-chart></dashboard-pie-chart>

<div class="row">
  <div class="col-lg-6 col-md-12 col-sm-12"
       ba-panel
       ba-panel-title="Acquisition Channels"
       ba-panel-class="medium-panel traffic-panel">
    <traffic-chart></traffic-chart>
  </div>
  <div class="col-lg-6 col-md-12 col-sm-12"
       ba-panel
       ba-panel-title="Users by Country"
       ba-panel-class="medium-panel">
    <dashboard-map></dashboard-map>
  </div>
</div>

<div class="row">
  <div class="col-xlg-9 col-lg-6 col-md-6 col-sm-12 col-xs-12">
    <div class="row">
      <div class="col-xlg-8 col-lg-12 col-md-12 col-sm-7 col-xs-12"
           ba-panel
           ba-panel-title="Revenue"
           ba-panel-class="medium-panel">
        <dashboard-line-chart></dashboard-line-chart>
      </div>
      <div class="col-xlg-4 col-lg-12 col-md-12 col-sm-5 col-xs-12"
           ba-panel
           ba-panel-class="popular-app medium-panel">
        <popular-app></popular-app>
      </div>
    </div>
  </div>
  <div class="col-xlg-3 col-lg-6 col-md-6 col-sm-12 col-xs-12"
       ba-panel
       ba-panel-title="Feed"
       ba-panel-class="large-panel with-scroll feed-panel">
    <blur-feed></blur-feed>
  </div>
</div>

<div class="row shift-up">
  <div class="col-xlg-3 col-lg-6 col-md-6 col-xs-12"
       ba-panel
       ba-panel-title="To Do List"
       ba-panel-class="xmedium-panel feed-comply-panel with-scroll todo-panel">
    <dashboard-todo></dashboard-todo>
  </div>
  <div class="col-xlg-6 col-lg-6 col-md-6 col-xs-12"
       ba-panel
       ba-panel-title="Calendar"
       ba-panel-class="xmedium-panel feed-comply-panel with-scroll calendar-panel">
    <dashboard-calendar></dashboard-calendar>
  </div>
</div>

<!--<div class="row">
  <div class="col-lg-4 col-sm-6 col-xs-12">
    <div ba-panel ba-panel-title="Weather" ba-panel-class="medium-panel with-scroll">
      <blur-weather forecast="5"></blur-weather>
    </div>
  </div>
</div>-->


================================================
FILE: src/app/pages/dashboard/dashboard.module.js
================================================
/**
 * @author v.lugovsky
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.dashboard', [])
      .config(routeConfig);

  /** @ngInject */
  function routeConfig($stateProvider) {
    $stateProvider
        .state('dashboard', {
          url: '/dashboard',
          templateUrl: 'app/pages/dashboard/dashboard.html',
          title: 'Dashboard',
          sidebarMeta: {
            icon: 'ion-android-home',
            order: 0,
          },
        });
  }

})();


================================================
FILE: src/app/pages/dashboard/dashboardCalendar/DashboardCalendarCtrl.js
================================================
/**
 * @author v.lugovksy
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.dashboard')
      .controller('DashboardCalendarCtrl', DashboardCalendarCtrl);

  /** @ngInject */
  function DashboardCalendarCtrl(baConfig) {
    var dashboardColors = baConfig.colors.dashboard;
    var $element = $('#calendar').fullCalendar({
      //height: 335,
      header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay'
      },
      defaultDate: '2016-03-08',
      selectable: true,
      selectHelper: true,
      select: function (start, end) {
        var title = prompt('Event Title:');
        var eventData;
        if (title) {
          eventData = {
            title: title,
            start: start,
            end: end
          };
          $element.fullCalendar('renderEvent', eventData, true); // stick? = true
        }
        $element.fullCalendar('unselect');
      },
      editable: true,
      eventLimit: true, // allow "more" link when too many events
      events: [
        {
          title: 'All Day Event',
          start: '2016-03-01',
          color: dashboardColors.silverTree
        },
        {
          title: 'Long Event',
          start: '2016-03-07',
          end: '2016-03-10',
          color: dashboardColors.blueStone
        },
        {
          title: 'Dinner',
          start: '2016-03-14T20:00:00',
          color: dashboardColors.surfieGreen
        },
        {
          title: 'Birthday Party',
          start: '2016-04-01T07:00:00',
          color: dashboardColors.gossipDark
        }
      ]
    });
  }
})();

================================================
FILE: src/app/pages/dashboard/dashboardCalendar/dashboardCalendar.directive.js
================================================
/**
 * @author v.lugovksy
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.dashboard')
      .directive('dashboardCalendar', dashboardCalendar);

  /** @ngInject */
  function dashboardCalendar() {
    return {
      restrict: 'E',
      controller: 'DashboardCalendarCtrl',
      templateUrl: 'app/pages/dashboard/dashboardCalendar/dashboardCalendar.html'
    };
  }
})();

================================================
FILE: src/app/pages/dashboard/dashboardCalendar/dashboardCalendar.html
================================================
<div id='calendar' class="blurCalendar"></div>

================================================
FILE: src/app/pages/dashboard/dashboardLineChart/DashboardLineChartCtrl.js
================================================
/**
 * @author v.lugovksy
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.dashboard')
      .controller('DashboardLineChartCtrl', DashboardLineChartCtrl);

  /** @ngInject */
  function DashboardLineChartCtrl(baConfig, layoutPaths, baUtil) {
    var layoutColors = baConfig.colors;
    var graphColor = baConfig.theme.blur ? '#000000' : layoutColors.primary;
    var chartData = [
      { date: new Date(2012, 11), value: 0, value0: 0 },
      { date: new Date(2013, 0), value: 15000, value0: 19000},
      { date: new Date(2013, 1), value: 30000, value0: 20000},

      { date: new Date(2013, 2), value: 25000, value0: 22000},
      { date: new Date(2013, 3), value: 21000, value0: 25000},
      { date: new Date(2013, 4), value: 24000, value0: 29000},
      { date: new Date(2013, 5), value: 31000, value0: 26000},
      { date: new Date(2013, 6), value: 40000, value0: 25000},
      { date: new Date(2013, 7), value: 37000, value0: 20000},
      { date: new Date(2013, 8), value: 18000, value0: 22000},
      { date: new Date(2013, 9), value: 5000, value0: 26000},
      { date: new Date(2013, 10), value: 40000, value0: 30000},
      { date: new Date(2013, 11), value: 20000, value0: 25000},
      { date: new Date(2014, 0), value: 5000, value0: 13000},

      { date: new Date(2014, 1), value: 3000, value0: 13000},
      { date: new Date(2014, 2), value: 1800, value0: 13000},
      { date: new Date(2014, 3), value: 10400, value0: 13000},
      { date: new Date(2014, 4), value: 25500, value0: 13000},
      { date: new Date(2014, 5), value: 2100, value0: 13000},
      { date: new Date(2014, 6), value: 6500, value0: 13000},
      { date: new Date(2014, 7), value: 1100, value0: 13000},
      { date: new Date(2014, 8), value: 17200, value0: 13000},
      { date: new Date(2014, 9), value: 26900, value0: 13000},
      { date: new Date(2014, 10), value: 14100, value0: 13000},
      { date: new Date(2014, 11), value: 35300, value0: 13000},
      { date: new Date(2015, 0), value: 54800, value0: 13000},
      { date: new Date(2015, 1), value: 49800, value0: 13000}
    ];

    var chart = AmCharts.makeChart('amchart', {
      type: 'serial',
      theme: 'blur',
      marginTop: 15,
      marginRight: 15,
      dataProvider: chartData,
      categoryField: 'date',
      categoryAxis: {
        parseDates: true,
        gridAlpha: 0,
        color: layoutColors.defaultText,
        axisColor: layoutColors.defaultText
      },
      valueAxes: [
        {
          minVerticalGap: 50,
          gridAlpha: 0,
          color: layoutColors.defaultText,
          axisColor: layoutColors.defaultText
        }
      ],
      graphs: [
        {
          id: 'g0',
          bullet: 'none',
          useLineColorForBulletBorder: true,
          lineColor: baUtil.hexToRGB(graphColor, 0.3),
          lineThickness: 1,
          negativeLineColor: layoutColors.danger,
          type: 'smoothedLine',
          valueField: 'value0',
          fillAlphas: 1,
          fillColorsField: 'lineColor'
        },
        {
          id: 'g1',
          bullet: 'none',
          useLineColorForBulletBorder: true,
          lineColor: baUtil.hexToRGB(graphColor, 0.5),
          lineThickness: 1,
          negativeLineColor: layoutColors.danger,
          type: 'smoothedLine',
          valueField: 'value',
          fillAlphas: 1,
          fillColorsField: 'lineColor'
        }
      ],
      chartCursor: {
        categoryBalloonDateFormat: 'MM YYYY',
        categoryBalloonColor: '#4285F4',
        categoryBalloonAlpha: 0.7,
        cursorAlpha: 0,
        valueLineEnabled: true,
        valueLineBalloonEnabled: true,
        valueLineAlpha: 0.5
      },
      dataDateFormat: 'MM YYYY',
      export: {
        enabled: true
      },
      creditsPosition: 'bottom-right',
      zoomOutButton: {
        backgroundColor: '#fff',
        backgroundAlpha: 0
      },
      zoomOutText: '',
      pathToImages: layoutPaths.images.amChart
    });

    function zoomChart() {
      chart.zoomToDates(new Date(2013, 3), new Date(2014, 0));
    }

    chart.addListener('rendered', zoomChart);
    zoomChart();
    if (chart.zoomChart) {
      chart.zoomChart();
    }
  }
})();

================================================
FILE: src/app/pages/dashboard/dashboardLineChart/dashboardLineChart.directive.js
================================================
/**
 * @author v.lugovksy
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.dashboard')
      .directive('dashboardLineChart', dashboardLineChart);

  /** @ngInject */
  function dashboardLineChart() {
    return {
      restrict: 'E',
      controller: 'DashboardLineChartCtrl',
      templateUrl: 'app/pages/dashboard/dashboardLineChart/dashboardLineChart.html'
    };
  }
})();

================================================
FILE: src/app/pages/dashboard/dashboardLineChart/dashboardLineChart.html
================================================
<div id="amchart"></div>

================================================
FILE: src/app/pages/dashboard/dashboardMap/DashboardMapCtrl.js
================================================
/**
 * @author v.lugovksy
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.dashboard')
      .controller('DashboardMapCtrl', DashboardMapCtrl);

  /** @ngInject */
  function DashboardMapCtrl(baConfig, layoutPaths) {
    var layoutColors = baConfig.colors;
    var map = AmCharts.makeChart('amChartMap', {
      type: 'map',
      theme: 'blur',
      zoomControl: { zoomControlEnabled: false, panControlEnabled: false },

      dataProvider: {
        map: 'worldLow',
        zoomLevel: 3.5,
        zoomLongitude: 10,
        zoomLatitude: 52,
        areas: [
          { title: 'Austria', id: 'AT', color: layoutColors.primary, customData: '1 244', groupId: '1'},
          { title: 'Ireland', id: 'IE', color: layoutColors.primary, customData: '1 342', groupId: '1'},
          { title: 'Denmark', id: 'DK', color: layoutColors.primary, customData: '1 973', groupId: '1'},
          { title: 'Finland', id: 'FI', color: layoutColors.primary, customData: '1 573', groupId: '1'},
          { title: 'Sweden', id: 'SE', color: layoutColors.primary, customData: '1 084', groupId: '1'},
          { title: 'Great Britain', id: 'GB', color: layoutColors.primary, customData: '1 452', groupId: '1'},
          { title: 'Italy', id: 'IT', color: layoutColors.primary, customData: '1 321', groupId: '1'},
          { title: 'France', id: 'FR', color: layoutColors.primary, customData: '1 112', groupId: '1'},
          { title: 'Spain', id: 'ES', color: layoutColors.primary, customData: '1 865', groupId: '1'},
          { title: 'Greece', id: 'GR', color: layoutColors.primary, customData: '1 453', groupId: '1'},
          { title: 'Germany', id: 'DE', color: layoutColors.primary, customData: '1 957', groupId: '1'},
          { title: 'Belgium', id: 'BE', color: layoutColors.primary, customData: '1 011', groupId: '1'},
          { title: 'Luxembourg', id: 'LU', color: layoutColors.primary, customData: '1 011', groupId: '1'},
          { title: 'Netherlands', id: 'NL', color: layoutColors.primary, customData: '1 213', groupId: '1'},
          { title: 'Portugal', id: 'PT', color: layoutColors.primary, customData: '1 291', groupId: '1'},
          { title: 'Lithuania', id: 'LT', color: layoutColors.successLight, customData: '567', groupId: '2'},
          { title: 'Latvia', id: 'LV', color: layoutColors.successLight, customData: '589', groupId: '2'},
          { title: 'Czech Republic ', id: 'CZ', color: layoutColors.successLight, customData: '785', groupId: '2'},
          { title: 'Slovakia', id: 'SK', color: layoutColors.successLight, customData: '965', groupId: '2'},
          { title: 'Estonia', id: 'EE', color: layoutColors.successLight, customData: '685', groupId: '2'},
          { title: 'Hungary', id: 'HU', color: layoutColors.successLight, customData: '854', groupId: '2'},
          { title: 'Cyprus', id: 'CY', color: layoutColors.successLight, customData: '754', groupId: '2'},
          { title: 'Malta', id: 'MT', color: layoutColors.successLight, customData: '867', groupId: '2'},
          { title: 'Poland', id: 'PL', color: layoutColors.successLight, customData: '759', groupId: '2'},
          { title: 'Romania', id: 'RO', color: layoutColors.success, customData: '302', groupId: '3'},
          { title: 'Bulgaria', id: 'BG', color: layoutColors.success, customData: '102', groupId: '3'},
          { title: 'Slovenia', id: 'SI', color: layoutColors.danger, customData: '23', groupId: '4'},
          { title: 'Croatia', id: 'HR', color: layoutColors.danger, customData: '96', groupId: '4'}
        ]
      },

      areasSettings: {
        rollOverOutlineColor: layoutColors.border,
        rollOverColor: layoutColors.primaryDark,
        alpha: 0.8,
        unlistedAreasAlpha: 0.2,
        unlistedAreasColor: layoutColors.defaultText,
        balloonText: '[[title]]: [[customData]] users'
      },


      legend: {
        width: '100%',
        marginRight: 27,
        marginLeft: 27,
        equalWidths: false,
        backgroundAlpha: 0.3,
        backgroundColor: layoutColors.border,
        borderColor: layoutColors.border,
        borderAlpha: 1,
        top: 362,
        left: 0,
        horizontalGap: 10,
        data: [
          {
            title: 'over 1 000 users',
            color: layoutColors.primary
          },
          {
            title: '500 - 1 000 users',
            color: layoutColors.successLight
          },
          {
            title: '100 - 500 users',
            color: layoutColors.success
          },
          {
            title: '0 - 100 users',
            color: layoutColors.danger
          }
        ]
      },
      export: {
        enabled: true
      },
      creditsPosition: 'bottom-right',
      pathToImages: layoutPaths.images.amChart
    });
  }
})();

================================================
FILE: src/app/pages/dashboard/dashboardMap/dashboardMap.directive.js
================================================
/**
 * @author v.lugovksy
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.dashboard')
      .directive('dashboardMap', dashboardMap);

  /** @ngInject */
  function dashboardMap() {
    return {
      restrict: 'E',
      controller: 'DashboardMapCtrl',
      templateUrl: 'app/pages/dashboard/dashboardMap/dashboardMap.html'
    };
  }
})();

================================================
FILE: src/app/pages/dashboard/dashboardMap/dashboardMap.html
================================================
<div id="amChartMap"></div>

================================================
FILE: src/app/pages/dashboard/dashboardPieChart/DashboardPieChartCtrl.js
================================================
/**
 * @author v.lugovksy
 * created on 16.12.2015
 */
(function () {
  'use strict';

  angular.module('BlurAdmin.pages.dashboard')
      .controller('DashboardPieChartCtrl', DashboardPieChartCtrl);

  /** @ngInject */
  function DashboardPieChartCtrl($scope, $timeout, baConfig, baUtil) {
    var pieColor = baUtil.hexToRGB(baConfig.colors.defaultText, 0.2);
    $scope.charts = [{
      color: pie
Download .txt
gitextract_8_fkymag/

├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── LICENSE.txt
├── README.md
├── bower.json
├── docs/
│   ├── config.json
│   ├── contents/
│   │   ├── articles/
│   │   │   ├── 001-getting-started/
│   │   │   │   └── index.md
│   │   │   ├── 002-installation-guidelines/
│   │   │   │   └── index.md
│   │   │   ├── 011-changing-color-scheme/
│   │   │   │   └── index.md
│   │   │   ├── 012-project-structure/
│   │   │   │   └── index.md
│   │   │   ├── 013-create-new-page/
│   │   │   │   └── index.md
│   │   │   ├── 014-switch-to-blur-theme/
│   │   │   │   └── index.md
│   │   │   ├── 051-sidebar/
│   │   │   │   └── index.md
│   │   │   └── 091-downloads/
│   │   │       └── index.md
│   │   ├── css/
│   │   │   └── main.css
│   │   └── index.json
│   ├── package.json
│   ├── plugins/
│   │   └── paginator.coffee
│   └── templates/
│       ├── article.jade
│       ├── index.jade
│       └── layout.jade
├── gulp/
│   ├── build.js
│   ├── conf.js
│   ├── devRelease.js
│   ├── docs.js
│   ├── images.js
│   ├── inject.js
│   ├── marketplace.js
│   ├── scripts.js
│   ├── server.js
│   ├── styles.js
│   └── watch.js
├── gulpfile.js
├── package.json
├── preview.html
└── src/
    ├── 404.html
    ├── app/
    │   ├── app.js
    │   ├── pages/
    │   │   ├── charts/
    │   │   │   ├── amCharts/
    │   │   │   │   ├── amCharts.module.js
    │   │   │   │   ├── areaChart/
    │   │   │   │   │   ├── AreaChartCtrl.js
    │   │   │   │   │   └── areaChart.html
    │   │   │   │   ├── barChart/
    │   │   │   │   │   ├── BarChartCtrl.js
    │   │   │   │   │   └── barChart.html
    │   │   │   │   ├── charts.html
    │   │   │   │   ├── combinedChart/
    │   │   │   │   │   ├── combinedChart.html
    │   │   │   │   │   └── combinedChartCtrl.js
    │   │   │   │   ├── funnelChart/
    │   │   │   │   │   ├── FunnelChartCtrl.js
    │   │   │   │   │   └── funnelChart.html
    │   │   │   │   ├── ganttChart/
    │   │   │   │   │   ├── ganttChart.html
    │   │   │   │   │   └── ganttChartCtrl.js
    │   │   │   │   ├── lineChart/
    │   │   │   │   │   ├── LineChartCtrl.js
    │   │   │   │   │   └── lineChart.html
    │   │   │   │   └── pieChart/
    │   │   │   │       ├── PieChartCtrl.js
    │   │   │   │       └── pieChart.html
    │   │   │   ├── chartJs/
    │   │   │   │   ├── chartJs.html
    │   │   │   │   ├── chartJs.module.js
    │   │   │   │   ├── chartJs1DCtrl.js
    │   │   │   │   ├── chartJs2DCtrl.js
    │   │   │   │   └── chartJsWaveCtrl.js
    │   │   │   ├── chartist/
    │   │   │   │   ├── chartist.html
    │   │   │   │   ├── chartist.module.js
    │   │   │   │   └── chartistCtrl.js
    │   │   │   ├── charts.module.js
    │   │   │   └── morris/
    │   │   │       ├── morris.html
    │   │   │       ├── morris.module.js
    │   │   │       └── morrisCtrl.js
    │   │   ├── components/
    │   │   │   ├── components.module.js
    │   │   │   ├── mail/
    │   │   │   │   ├── MailTabCtrl.js
    │   │   │   │   ├── composeBox/
    │   │   │   │   │   ├── compose.html
    │   │   │   │   │   ├── composeBoxCtrl.js
    │   │   │   │   │   └── composeModal.js
    │   │   │   │   ├── detail/
    │   │   │   │   │   ├── MailDetailCtrl.js
    │   │   │   │   │   └── mailDetail.html
    │   │   │   │   ├── list/
    │   │   │   │   │   ├── MailListCtrl.js
    │   │   │   │   │   └── mailList.html
    │   │   │   │   ├── mail.html
    │   │   │   │   ├── mail.module.js
    │   │   │   │   └── mailMessages.js
    │   │   │   ├── timeline/
    │   │   │   │   ├── TimelineCtrl.js
    │   │   │   │   ├── timeline.html
    │   │   │   │   └── timeline.module.js
    │   │   │   └── tree/
    │   │   │       ├── tree.html
    │   │   │       ├── tree.module.js
    │   │   │       └── treeCtrl.js
    │   │   ├── dashboard/
    │   │   │   ├── blurFeed/
    │   │   │   │   ├── BlurFeedCtrl.js
    │   │   │   │   ├── blurFeed.directive.js
    │   │   │   │   └── blurFeed.html
    │   │   │   ├── calendar/
    │   │   │   │   └── dashboardCalendar.js
    │   │   │   ├── dashboard.html
    │   │   │   ├── dashboard.module.js
    │   │   │   ├── dashboardCalendar/
    │   │   │   │   ├── DashboardCalendarCtrl.js
    │   │   │   │   ├── dashboardCalendar.directive.js
    │   │   │   │   └── dashboardCalendar.html
    │   │   │   ├── dashboardLineChart/
    │   │   │   │   ├── DashboardLineChartCtrl.js
    │   │   │   │   ├── dashboardLineChart.directive.js
    │   │   │   │   └── dashboardLineChart.html
    │   │   │   ├── dashboardMap/
    │   │   │   │   ├── DashboardMapCtrl.js
    │   │   │   │   ├── dashboardMap.directive.js
    │   │   │   │   └── dashboardMap.html
    │   │   │   ├── dashboardPieChart/
    │   │   │   │   ├── DashboardPieChartCtrl.js
    │   │   │   │   ├── dashboardPieChart.directive.js
    │   │   │   │   └── dashboardPieChart.html
    │   │   │   ├── dashboardTodo/
    │   │   │   │   ├── DashboardTodoCtrl.js
    │   │   │   │   ├── dashboardTodo.directive.js
    │   │   │   │   └── dashboardTodo.html
    │   │   │   ├── pieCharts/
    │   │   │   │   └── dashboardPieChart.js
    │   │   │   ├── popularApp/
    │   │   │   │   ├── popularApp.directive.js
    │   │   │   │   └── popularApp.html
    │   │   │   ├── trafficChart/
    │   │   │   │   ├── TrafficChartCtrl.js
    │   │   │   │   ├── trafficChart.directive.js
    │   │   │   │   └── trafficChart.html
    │   │   │   └── weather/
    │   │   │       ├── WeatherCtrl.js
    │   │   │       ├── weather.directive.js
    │   │   │       └── weather.html
    │   │   ├── form/
    │   │   │   ├── form.module.js
    │   │   │   ├── inputs/
    │   │   │   │   ├── inputs.html
    │   │   │   │   └── widgets/
    │   │   │   │       ├── checkboxesRadios.html
    │   │   │   │       ├── datePickers/
    │   │   │   │       │   ├── datePickers.html
    │   │   │   │       │   ├── datepickerCtrl.js
    │   │   │   │       │   └── datepickerpopupCtrl.js
    │   │   │   │       ├── inputGroups.html
    │   │   │   │       ├── oldSelect/
    │   │   │   │       │   ├── OldSelectpickerPanelCtrl.js
    │   │   │   │       │   ├── select.html
    │   │   │   │       │   └── selectpicker.directive.js
    │   │   │   │       ├── oldSwitches/
    │   │   │   │       │   ├── OldSwitchPanelCtrl.js
    │   │   │   │       │   ├── switch.directive.js
    │   │   │   │       │   └── switch.html
    │   │   │   │       ├── select/
    │   │   │   │       │   ├── GroupSelectpickerOptions.js
    │   │   │   │       │   ├── SelectpickerPanelCtrl.js
    │   │   │   │       │   └── select.html
    │   │   │   │       ├── standardFields.html
    │   │   │   │       ├── switches/
    │   │   │   │       │   ├── SwitchDemoPanelCtrl.js
    │   │   │   │       │   └── switch.html
    │   │   │   │       ├── tagsInput/
    │   │   │   │       │   ├── tagsInput.directive.js
    │   │   │   │       │   └── tagsInput.html
    │   │   │   │       └── validationStates.html
    │   │   │   ├── layouts/
    │   │   │   │   ├── layouts.html
    │   │   │   │   └── widgets/
    │   │   │   │       ├── basicForm.html
    │   │   │   │       ├── blockForm.html
    │   │   │   │       ├── formWithoutLabels.html
    │   │   │   │       ├── horizontalForm.html
    │   │   │   │       └── inlineForm.html
    │   │   │   └── wizard/
    │   │   │       ├── wizard.html
    │   │   │       └── wizrdCtrl.js
    │   │   ├── maps/
    │   │   │   ├── google-maps/
    │   │   │   │   ├── GmapPageCtrl.js
    │   │   │   │   └── google-maps.html
    │   │   │   ├── leaflet/
    │   │   │   │   ├── LeafletPageCtrl.js
    │   │   │   │   └── leaflet.html
    │   │   │   ├── map-bubbles/
    │   │   │   │   ├── MapBubblePageCtrl.js
    │   │   │   │   └── map-bubbles.html
    │   │   │   ├── map-lines/
    │   │   │   │   ├── MapLinesPageCtrl.js
    │   │   │   │   └── map-lines.html
    │   │   │   ├── maps.html
    │   │   │   └── maps.module.js
    │   │   ├── pages.module.js
    │   │   ├── profile/
    │   │   │   ├── ProfileModalCtrl.js
    │   │   │   ├── ProfilePageCtrl.js
    │   │   │   ├── profile.html
    │   │   │   ├── profile.module.js
    │   │   │   └── profileModal.html
    │   │   ├── tables/
    │   │   │   ├── TablesPageCtrl.js
    │   │   │   ├── basic/
    │   │   │   │   └── tables.html
    │   │   │   ├── smart/
    │   │   │   │   └── tables.html
    │   │   │   ├── tables.module.js
    │   │   │   └── widgets/
    │   │   │       ├── basicTable.html
    │   │   │       ├── borderedTable.html
    │   │   │       ├── condensedTable.html
    │   │   │       ├── contextualTable.html
    │   │   │       ├── editableRowTable.html
    │   │   │       ├── editableTable.html
    │   │   │       ├── hoverRows.html
    │   │   │       ├── responsiveTable.html
    │   │   │       ├── smartTable.html
    │   │   │       └── stripedRows.html
    │   │   └── ui/
    │   │       ├── alerts/
    │   │       │   ├── alerts.html
    │   │       │   └── alerts.module.js
    │   │       ├── buttons/
    │   │       │   ├── ButtonPageCtrl.js
    │   │       │   ├── buttons.html
    │   │       │   ├── buttons.module.js
    │   │       │   └── widgets/
    │   │       │       ├── buttonGroups.html
    │   │       │       ├── buttons.html
    │   │       │       ├── dropdowns.html
    │   │       │       ├── iconButtons.html
    │   │       │       ├── largeButtons.html
    │   │       │       └── progressButtons.html
    │   │       ├── grid/
    │   │       │   ├── baseGrid.html
    │   │       │   ├── grid.html
    │   │       │   └── grid.module.js
    │   │       ├── icons/
    │   │       │   ├── IconsPageCtrl.js
    │   │       │   ├── icons.html
    │   │       │   ├── icons.module.js
    │   │       │   └── widgets/
    │   │       │       ├── fontAwesomeIcons.html
    │   │       │       ├── ionicons.html
    │   │       │       ├── kameleon.html
    │   │       │       ├── kameleonRounded.html
    │   │       │       └── socicon.html
    │   │       ├── modals/
    │   │       │   ├── ModalsPageCtrl.js
    │   │       │   ├── modalTemplates/
    │   │       │   │   ├── basicModal.html
    │   │       │   │   ├── dangerModal.html
    │   │       │   │   ├── infoModal.html
    │   │       │   │   ├── largeModal.html
    │   │       │   │   ├── smallModal.html
    │   │       │   │   ├── successModal.html
    │   │       │   │   └── warningModal.html
    │   │       │   ├── modals.html
    │   │       │   ├── modals.module.js
    │   │       │   ├── notifications/
    │   │       │   │   ├── NotificationsCtrl.js
    │   │       │   │   └── notifications.html
    │   │       │   └── progressModal/
    │   │       │       ├── ProgressModalCtrl.js
    │   │       │       └── progressModal.html
    │   │       ├── notifications/
    │   │       │   ├── NotificationsPageCtrl.js
    │   │       │   ├── notifications.html
    │   │       │   └── notifications.module.js
    │   │       ├── panels/
    │   │       │   ├── panels.html
    │   │       │   └── panels.module.js
    │   │       ├── progressBars/
    │   │       │   ├── progressBars.html
    │   │       │   ├── progressBars.module.js
    │   │       │   └── widgets/
    │   │       │       ├── animated.html
    │   │       │       ├── basic.html
    │   │       │       ├── label.html
    │   │       │       ├── stacked.html
    │   │       │       └── striped.html
    │   │       ├── slider/
    │   │       │   ├── slider.html
    │   │       │   └── slider.module.js
    │   │       ├── tabs/
    │   │       │   ├── contextualAccordion.html
    │   │       │   ├── mainTabs.html
    │   │       │   ├── sampleAccordion.html
    │   │       │   ├── sideTabs.html
    │   │       │   ├── tabs.html
    │   │       │   └── tabs.module.js
    │   │       ├── typography/
    │   │       │   ├── typography.html
    │   │       │   └── typography.module.js
    │   │       └── ui.module.js
    │   └── theme/
    │       ├── components/
    │       │   ├── baPanel/
    │       │   │   ├── baPanel.directive.js
    │       │   │   ├── baPanel.service.js
    │       │   │   ├── baPanelBlur.directive.js
    │       │   │   ├── baPanelBlurHelper.service.js
    │       │   │   └── baPanelSelf.directive.js
    │       │   ├── baSidebar/
    │       │   │   ├── BaSidebarCtrl.js
    │       │   │   ├── ba-sidebar.html
    │       │   │   ├── baSidebar.directive.js
    │       │   │   ├── baSidebar.service.js
    │       │   │   └── baSidebarHelpers.directive.js
    │       │   ├── baWizard/
    │       │   │   ├── baWizard.directive.js
    │       │   │   ├── baWizard.html
    │       │   │   ├── baWizardCtrl.js
    │       │   │   ├── baWizardStep.directive.js
    │       │   │   └── baWizardStep.html
    │       │   ├── backTop/
    │       │   │   ├── backTop.directive.js
    │       │   │   └── backTop.html
    │       │   ├── components.module.js
    │       │   ├── contentTop/
    │       │   │   ├── contentTop.directive.js
    │       │   │   └── contentTop.html
    │       │   ├── msgCenter/
    │       │   │   ├── MsgCenterCtrl.js
    │       │   │   ├── msgCenter.directive.js
    │       │   │   └── msgCenter.html
    │       │   ├── pageTop/
    │       │   │   ├── pageTop.directive.js
    │       │   │   └── pageTop.html
    │       │   ├── progressBarRound/
    │       │   │   ├── progressBarRound.directive.js
    │       │   │   └── progressBarRound.html
    │       │   ├── toastrLibConfig.js
    │       │   └── widgets/
    │       │       ├── widgets.directive.js
    │       │       └── widgets.html
    │       ├── directives/
    │       │   ├── animatedChange.js
    │       │   ├── autoExpand.js
    │       │   ├── autoFocus.js
    │       │   ├── includeWithScope.js
    │       │   ├── ionSlider.js
    │       │   ├── ngFileSelect.js
    │       │   ├── scrollPosition.js
    │       │   ├── trackWidth.js
    │       │   └── zoomIn.js
    │       ├── filters/
    │       │   ├── image/
    │       │   │   ├── appImage.js
    │       │   │   ├── kameleonImg.js
    │       │   │   └── profilePicture.js
    │       │   └── text/
    │       │       └── removeHtml.js
    │       ├── inputs/
    │       │   ├── baSwitcher/
    │       │   │   ├── baSwitcher.html
    │       │   │   └── baSwitcher.js
    │       │   └── inputs.module.js
    │       ├── services/
    │       │   ├── baProgressModal.js
    │       │   ├── baUtil.js
    │       │   ├── fileReader.js
    │       │   ├── preloader.js
    │       │   └── stopableInterval.js
    │       ├── theme.config.js
    │       ├── theme.configProvider.js
    │       ├── theme.constants.js
    │       ├── theme.module.js
    │       ├── theme.run.js
    │       └── theme.service.js
    ├── auth.html
    ├── index.html
    ├── reg.html
    └── sass/
        ├── 404.scss
        ├── README.md
        ├── app/
        │   ├── _alerts.scss
        │   ├── _buttonsPage.scss
        │   ├── _chartsPage.scss
        │   ├── _dashboard.scss
        │   ├── _email.scss
        │   ├── _form.scss
        │   ├── _grid.scss
        │   ├── _iconsPage.scss
        │   ├── _modalNotifications.scss
        │   ├── _modals.scss
        │   ├── _notifications.scss
        │   ├── _profile.scss
        │   ├── _slider.scss
        │   ├── _table.scss
        │   ├── _tabsPage.scss
        │   ├── _tplSkinPanel.scss
        │   ├── _tree.scss
        │   ├── _typography.scss
        │   └── maps/
        │       ├── _google-maps.scss
        │       ├── _leaflet.scss
        │       ├── _map-bubbles.scss
        │       └── _map-lines.scss
        ├── auth.scss
        ├── common.scss
        ├── main.scss
        └── theme/
            ├── _blur-admin-theme.scss
            ├── _buttons.scss
            ├── _datePicker.scss
            ├── _icons.scss
            ├── _layout.scss
            ├── _preloader.scss
            ├── _socicon.scss
            ├── _table.scss
            ├── _tree.scss
            ├── bootstrap-overrides/
            │   ├── _panel.scss
            │   └── _tabs.scss
            ├── components/
            │   ├── _accordion.scss
            │   ├── _baWizard.scss
            │   ├── _backTop.scss
            │   ├── _contentTop.scss
            │   ├── _msgCenter.scss
            │   ├── _pageTop.scss
            │   ├── _progressRound.scss
            │   ├── _sidebar.scss
            │   └── _widgets.scss
            ├── conf/
            │   ├── _mixins.scss
            │   ├── _variables.scss
            │   └── colorScheme/
            │       ├── _blur.scss
            │       └── _mint.scss
            └── dashboard/
                ├── _amChart.scss
                ├── _amChartMap.scss
                ├── _blurFeed.scss
                ├── _calendar.scss
                ├── _pieCharts.scss
                ├── _popularApp.scss
                ├── _timeline.scss
                ├── _todo.scss
                ├── _trafficChart.scss
                └── _weather.scss
Download .txt
SYMBOL INDEX (147 symbols across 137 files)

FILE: gulp/scripts.js
  function buildScripts (line 21) | function buildScripts() {

FILE: gulp/server.js
  function browserSyncInit (line 14) | function browserSyncInit(baseDir, browser) {

FILE: gulp/watch.js
  function isOnlyChange (line 9) | function isOnlyChange(event) {

FILE: src/app/pages/charts/amCharts/amCharts.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {
  function amChartConfig (line 24) | function amChartConfig(baConfigProvider) {

FILE: src/app/pages/charts/amCharts/areaChart/AreaChartCtrl.js
  function AreaChartCtrl (line 12) | function AreaChartCtrl($scope, baConfig, $element, layoutPaths) {

FILE: src/app/pages/charts/amCharts/barChart/BarChartCtrl.js
  function BarChartCtrl (line 12) | function BarChartCtrl($scope, baConfig, $element, layoutPaths) {

FILE: src/app/pages/charts/amCharts/combinedChart/combinedChartCtrl.js
  function combinedChartCtrl (line 12) | function combinedChartCtrl($element, baConfig, layoutPaths) {

FILE: src/app/pages/charts/amCharts/funnelChart/FunnelChartCtrl.js
  function FunnelChartCtrl (line 12) | function FunnelChartCtrl($scope, $element, layoutPaths, baConfig) {

FILE: src/app/pages/charts/amCharts/ganttChart/ganttChartCtrl.js
  function ganttChartCtrl (line 12) | function ganttChartCtrl($element) {

FILE: src/app/pages/charts/amCharts/lineChart/LineChartCtrl.js
  function LineChartCtrl (line 12) | function LineChartCtrl($scope, baConfig, $element, layoutPaths) {

FILE: src/app/pages/charts/amCharts/pieChart/PieChartCtrl.js
  function PieChartCtrl (line 12) | function PieChartCtrl($element, layoutPaths, baConfig) {

FILE: src/app/pages/charts/chartJs/chartJs.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {
  function chartJsConfig (line 24) | function chartJsConfig(ChartJsProvider, baConfigProvider) {

FILE: src/app/pages/charts/chartJs/chartJs1DCtrl.js
  function chartJs1DCtrl (line 12) | function chartJs1DCtrl($scope, baConfig) {

FILE: src/app/pages/charts/chartJs/chartJs2DCtrl.js
  function chartJs2DCtrl (line 12) | function chartJs2DCtrl($scope) {

FILE: src/app/pages/charts/chartJs/chartJsWaveCtrl.js
  function chartJsWaveCtrl (line 12) | function chartJsWaveCtrl($scope, $interval, stopableInterval) {

FILE: src/app/pages/charts/chartist/chartist.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/charts/chartist/chartistCtrl.js
  function chartistCtrl (line 12) | function chartistCtrl($scope, $timeout, baConfig) {

FILE: src/app/pages/charts/charts.module.js
  function routeConfig (line 17) | function routeConfig($stateProvider) {

FILE: src/app/pages/charts/morris/morris.module.js
  function routeConfig (line 18) | function routeConfig($stateProvider) {

FILE: src/app/pages/charts/morris/morrisCtrl.js
  function morrisCtrl (line 12) | function morrisCtrl($scope, $window, baConfig) {

FILE: src/app/pages/components/components.module.js
  function routeConfig (line 16) | function routeConfig($stateProvider) {

FILE: src/app/pages/components/mail/MailTabCtrl.js
  function MailTabCtrl (line 12) | function MailTabCtrl(composeModal, mailMessages) {

FILE: src/app/pages/components/mail/composeBox/composeBoxCtrl.js
  function composeBoxCtrl (line 12) | function composeBoxCtrl(subject, to, text) {

FILE: src/app/pages/components/mail/composeBox/composeModal.js
  function composeModal (line 12) | function composeModal($uibModal) {

FILE: src/app/pages/components/mail/detail/MailDetailCtrl.js
  function MailDetailCtrl (line 12) | function MailDetailCtrl($stateParams, mailMessages) {

FILE: src/app/pages/components/mail/list/MailListCtrl.js
  function MailListCtrl (line 12) | function MailListCtrl($stateParams,  mailMessages) {

FILE: src/app/pages/components/mail/mail.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider,$urlRouterProvider) {

FILE: src/app/pages/components/mail/mailMessages.js
  function mailMessages (line 12) | function mailMessages($sce) {

FILE: src/app/pages/components/timeline/TimelineCtrl.js
  function TimelineCtrl (line 12) | function TimelineCtrl() {

FILE: src/app/pages/components/timeline/timeline.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/components/tree/tree.module.js
  function routeConfig (line 16) | function routeConfig($stateProvider) {

FILE: src/app/pages/components/tree/treeCtrl.js
  function treeCtrl (line 12) | function treeCtrl($scope, $timeout) {

FILE: src/app/pages/dashboard/blurFeed/BlurFeedCtrl.js
  function BlurFeedCtrl (line 12) | function BlurFeedCtrl($scope) {

FILE: src/app/pages/dashboard/blurFeed/blurFeed.directive.js
  function blurFeed (line 12) | function blurFeed() {

FILE: src/app/pages/dashboard/calendar/dashboardCalendar.js
  function dashboardCalendar (line 12) | function dashboardCalendar() {

FILE: src/app/pages/dashboard/dashboard.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/dashboard/dashboardCalendar/DashboardCalendarCtrl.js
  function DashboardCalendarCtrl (line 12) | function DashboardCalendarCtrl(baConfig) {

FILE: src/app/pages/dashboard/dashboardCalendar/dashboardCalendar.directive.js
  function dashboardCalendar (line 12) | function dashboardCalendar() {

FILE: src/app/pages/dashboard/dashboardLineChart/DashboardLineChartCtrl.js
  function DashboardLineChartCtrl (line 12) | function DashboardLineChartCtrl(baConfig, layoutPaths, baUtil) {

FILE: src/app/pages/dashboard/dashboardLineChart/dashboardLineChart.directive.js
  function dashboardLineChart (line 12) | function dashboardLineChart() {

FILE: src/app/pages/dashboard/dashboardMap/DashboardMapCtrl.js
  function DashboardMapCtrl (line 12) | function DashboardMapCtrl(baConfig, layoutPaths) {

FILE: src/app/pages/dashboard/dashboardMap/dashboardMap.directive.js
  function dashboardMap (line 12) | function dashboardMap() {

FILE: src/app/pages/dashboard/dashboardPieChart/DashboardPieChartCtrl.js
  function DashboardPieChartCtrl (line 12) | function DashboardPieChartCtrl($scope, $timeout, baConfig, baUtil) {

FILE: src/app/pages/dashboard/dashboardPieChart/dashboardPieChart.directive.js
  function dashboardPieChart (line 12) | function dashboardPieChart() {

FILE: src/app/pages/dashboard/dashboardTodo/DashboardTodoCtrl.js
  function DashboardTodoCtrl (line 12) | function DashboardTodoCtrl($scope, baConfig) {

FILE: src/app/pages/dashboard/dashboardTodo/dashboardTodo.directive.js
  function dashboardTodo (line 12) | function dashboardTodo() {

FILE: src/app/pages/dashboard/pieCharts/dashboardPieChart.js
  function dashboardPieChart (line 12) | function dashboardPieChart() {

FILE: src/app/pages/dashboard/popularApp/popularApp.directive.js
  function popularApp (line 12) | function popularApp() {

FILE: src/app/pages/dashboard/trafficChart/TrafficChartCtrl.js
  function TrafficChartCtrl (line 12) | function TrafficChartCtrl($scope, baConfig, colorHelper) {

FILE: src/app/pages/dashboard/trafficChart/trafficChart.directive.js
  function trafficChart (line 12) | function trafficChart() {

FILE: src/app/pages/dashboard/weather/WeatherCtrl.js
  function WeatherCtrl (line 12) | function WeatherCtrl($scope, $http, $timeout, $element) {

FILE: src/app/pages/dashboard/weather/weather.directive.js
  function weather (line 12) | function weather() {

FILE: src/app/pages/form/form.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/form/inputs/widgets/datePickers/datepickerCtrl.js
  function datepickerCtrl (line 12) | function datepickerCtrl($scope) {

FILE: src/app/pages/form/inputs/widgets/datePickers/datepickerpopupCtrl.js
  function datepickerpopupCtrl (line 12) | function datepickerpopupCtrl($scope) {

FILE: src/app/pages/form/inputs/widgets/oldSelect/OldSelectpickerPanelCtrl.js
  function OldSelectpickerPanelCtrl (line 13) | function OldSelectpickerPanelCtrl() {

FILE: src/app/pages/form/inputs/widgets/oldSelect/selectpicker.directive.js
  function selectpicker (line 13) | function selectpicker() {

FILE: src/app/pages/form/inputs/widgets/oldSwitches/OldSwitchPanelCtrl.js
  function OldSwitchPanelCtrl (line 12) | function OldSwitchPanelCtrl() {

FILE: src/app/pages/form/inputs/widgets/oldSwitches/switch.directive.js
  function switchDirective (line 13) | function switchDirective($timeout) {

FILE: src/app/pages/form/inputs/widgets/select/GroupSelectpickerOptions.js
  function GroupSelectpickerOptions (line 13) | function GroupSelectpickerOptions() {

FILE: src/app/pages/form/inputs/widgets/select/SelectpickerPanelCtrl.js
  function SelectpickerPanelCtrl (line 12) | function SelectpickerPanelCtrl() {

FILE: src/app/pages/form/inputs/widgets/switches/SwitchDemoPanelCtrl.js
  function SwitchDemoPanelCtrl (line 12) | function SwitchDemoPanelCtrl() {

FILE: src/app/pages/form/inputs/widgets/tagsInput/tagsInput.directive.js
  function tagInput (line 12) | function tagInput() {

FILE: src/app/pages/form/wizard/wizrdCtrl.js
  function WizardCtrl (line 8) | function WizardCtrl($scope) {

FILE: src/app/pages/maps/google-maps/GmapPageCtrl.js
  function GmapPageCtrl (line 12) | function GmapPageCtrl($timeout) {

FILE: src/app/pages/maps/leaflet/LeafletPageCtrl.js
  function LeafletPageCtrl (line 12) | function LeafletPageCtrl($timeout) {

FILE: src/app/pages/maps/map-bubbles/MapBubblePageCtrl.js
  function MapBubblePageCtrl (line 12) | function MapBubblePageCtrl(baConfig, $timeout, layoutPaths) {

FILE: src/app/pages/maps/map-lines/MapLinesPageCtrl.js
  function MapLinesPageCtrl (line 12) | function MapLinesPageCtrl(baConfig, $timeout, layoutPaths) {

FILE: src/app/pages/maps/maps.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/pages.module.js
  function routeConfig (line 23) | function routeConfig($urlRouterProvider, baSidebarServiceProvider) {

FILE: src/app/pages/profile/ProfileModalCtrl.js
  function ProfileModalCtrl (line 12) | function ProfileModalCtrl($scope, $uibModalInstance) {

FILE: src/app/pages/profile/ProfilePageCtrl.js
  function ProfilePageCtrl (line 12) | function ProfilePageCtrl($scope, fileReader, $filter, $uibModal) {

FILE: src/app/pages/profile/profile.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/tables/TablesPageCtrl.js
  function TablesPageCtrl (line 12) | function TablesPageCtrl($scope, $filter, editableOptions, editableThemes) {

FILE: src/app/pages/tables/tables.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider, $urlRouterProvider) {

FILE: src/app/pages/ui/alerts/alerts.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/ui/buttons/ButtonPageCtrl.js
  function ButtonPageCtrl (line 12) | function ButtonPageCtrl($scope, $timeout) {

FILE: src/app/pages/ui/buttons/buttons.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/ui/grid/grid.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/ui/icons/IconsPageCtrl.js
  function IconsPageCtrl (line 12) | function IconsPageCtrl($scope) {

FILE: src/app/pages/ui/icons/icons.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/ui/modals/ModalsPageCtrl.js
  function ModalsPageCtrl (line 12) | function ModalsPageCtrl($scope, $uibModal, baProgressModal) {

FILE: src/app/pages/ui/modals/modals.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/ui/modals/notifications/NotificationsCtrl.js
  function NotificationsCtrl (line 12) | function NotificationsCtrl($scope, toastr) {

FILE: src/app/pages/ui/modals/progressModal/ProgressModalCtrl.js
  function ProgressModalCtrl (line 11) | function ProgressModalCtrl($timeout, baProgressModal) {

FILE: src/app/pages/ui/notifications/NotificationsPageCtrl.js
  function NotificationsPageCtrl (line 12) | function NotificationsPageCtrl($scope, toastr, toastrConfig) {

FILE: src/app/pages/ui/notifications/notifications.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/ui/panels/panels.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/ui/progressBars/progressBars.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/ui/slider/slider.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/ui/tabs/tabs.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/ui/typography/typography.module.js
  function routeConfig (line 12) | function routeConfig($stateProvider) {

FILE: src/app/pages/ui/ui.module.js
  function routeConfig (line 24) | function routeConfig($stateProvider) {

FILE: src/app/theme/components/baPanel/baPanel.directive.js
  function baPanel (line 15) | function baPanel(baPanel, baConfig) {

FILE: src/app/theme/components/baPanel/baPanel.service.js
  function baPanel (line 12) | function baPanel() {

FILE: src/app/theme/components/baPanel/baPanelBlur.directive.js
  function baPanelBlur (line 12) | function baPanelBlur(baPanelBlurHelper, $window, $rootScope) {

FILE: src/app/theme/components/baPanel/baPanelBlurHelper.service.js
  function baPanelBlurHelper (line 12) | function baPanelBlurHelper($q) {

FILE: src/app/theme/components/baPanel/baPanelSelf.directive.js
  function baPanelSelf (line 15) | function baPanelSelf(baPanel) {

FILE: src/app/theme/components/baSidebar/BaSidebarCtrl.js
  function BaSidebarCtrl (line 12) | function BaSidebarCtrl($scope, baSidebarService) {

FILE: src/app/theme/components/baSidebar/baSidebar.directive.js
  function baSidebar (line 12) | function baSidebar($timeout, baSidebarService, baUtil, layoutSizes) {

FILE: src/app/theme/components/baSidebar/baSidebar.service.js
  function baSidebarServiceProvider (line 8) | function baSidebarServiceProvider() {

FILE: src/app/theme/components/baSidebar/baSidebarHelpers.directive.js
  function baSidebarToggleMenu (line 17) | function baSidebarToggleMenu(baSidebarService) {
  function baSidebarCollapseMenu (line 32) | function baSidebarCollapseMenu(baSidebarService) {
  function baSidebarTogglingItem (line 49) | function baSidebarTogglingItem() {
  function BaSidebarTogglingItemCtrl (line 57) | function BaSidebarTogglingItemCtrl($scope, $element, $attrs, $state, baS...
  function baUiSrefTogglingSubmenu (line 109) | function baUiSrefTogglingSubmenu($state) {
  function baUiSrefToggler (line 121) | function baUiSrefToggler(baSidebarService) {

FILE: src/app/theme/components/baWizard/baWizard.directive.js
  function baWizard (line 8) | function baWizard() {

FILE: src/app/theme/components/baWizard/baWizardCtrl.js
  function baWizardCtrl (line 8) | function baWizardCtrl($scope) {

FILE: src/app/theme/components/baWizard/baWizardStep.directive.js
  function baWizardStep (line 8) | function baWizardStep() {

FILE: src/app/theme/components/backTop/backTop.directive.js
  function backTop (line 12) | function backTop() {

FILE: src/app/theme/components/contentTop/contentTop.directive.js
  function contentTop (line 12) | function contentTop($location, $state) {

FILE: src/app/theme/components/msgCenter/MsgCenterCtrl.js
  function MsgCenterCtrl (line 12) | function MsgCenterCtrl($scope, $sce) {

FILE: src/app/theme/components/msgCenter/msgCenter.directive.js
  function msgCenter (line 12) | function msgCenter() {

FILE: src/app/theme/components/pageTop/pageTop.directive.js
  function pageTop (line 12) | function pageTop() {

FILE: src/app/theme/components/progressBarRound/progressBarRound.directive.js
  function progressBarRound (line 12) | function progressBarRound(baProgressModal) {

FILE: src/app/theme/components/toastrLibConfig.js
  function toastrLibConfig (line 12) | function toastrLibConfig(toastrConfig) {

FILE: src/app/theme/components/widgets/widgets.directive.js
  function widgets (line 12) | function widgets() {

FILE: src/app/theme/directives/animatedChange.js
  function animatedChange (line 11) | function animatedChange($timeout) {

FILE: src/app/theme/directives/autoExpand.js
  function autoExpand (line 11) | function autoExpand() {

FILE: src/app/theme/directives/autoFocus.js
  function autoFocus (line 8) | function autoFocus($timeout, $parse) {

FILE: src/app/theme/directives/includeWithScope.js
  function includeWithScope (line 12) | function includeWithScope() {

FILE: src/app/theme/directives/ionSlider.js
  function ionSlider (line 12) | function ionSlider($timeout) {

FILE: src/app/theme/directives/ngFileSelect.js
  function ngFileSelect (line 8) | function ngFileSelect() {

FILE: src/app/theme/directives/scrollPosition.js
  function scrollPosition (line 8) | function scrollPosition() {

FILE: src/app/theme/directives/trackWidth.js
  function trackWidth (line 8) | function trackWidth() {

FILE: src/app/theme/directives/zoomIn.js
  function zoomIn (line 11) | function zoomIn($timeout, $rootScope) {

FILE: src/app/theme/filters/image/appImage.js
  function appImage (line 12) | function appImage(layoutPaths) {

FILE: src/app/theme/filters/image/kameleonImg.js
  function kameleonImg (line 12) | function kameleonImg(layoutPaths) {

FILE: src/app/theme/filters/image/profilePicture.js
  function profilePicture (line 12) | function profilePicture(layoutPaths) {

FILE: src/app/theme/filters/text/removeHtml.js
  function plainText (line 12) | function plainText() {

FILE: src/app/theme/inputs/baSwitcher/baSwitcher.js
  function baSwitcher (line 12) | function baSwitcher() {

FILE: src/app/theme/services/baProgressModal.js
  function baProgressModal (line 12) | function baProgressModal($uibModal) {

FILE: src/app/theme/services/baUtil.js
  function baUtil (line 12) | function baUtil() {

FILE: src/app/theme/services/fileReader.js
  function fileReader (line 12) | function fileReader($q) {

FILE: src/app/theme/services/preloader.js
  function preloader (line 12) | function preloader($q) {

FILE: src/app/theme/services/stopableInterval.js
  function stopableInterval (line 12) | function stopableInterval($window) {

FILE: src/app/theme/theme.config.js
  function config (line 12) | function config(baConfigProvider, colorHelper, $provide) {
  function uiViewScrollDecorator (line 26) | function uiViewScrollDecorator($delegate, $anchorScroll, baUtil) {

FILE: src/app/theme/theme.configProvider.js
  function configProvider (line 37) | function configProvider(colorHelper) {

FILE: src/app/theme/theme.constants.js
  function shade (line 32) | function shade(color, weight) {
  function tint (line 36) | function tint(color, weight) {
  function mix (line 41) | function mix(color1, color2, weight) {

FILE: src/app/theme/theme.run.js
  function themeRun (line 12) | function themeRun($timeout, $rootScope, layoutPaths, preloader, $q, baSi...

FILE: src/app/theme/theme.service.js
  function themeLayoutSettings (line 12) | function themeLayoutSettings(baConfig) {
Condensed preview — 354 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (704K chars).
[
  {
    "path": ".gitignore",
    "chars": 917,
    "preview": "# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion\n\n*.iml\n\n## Directory-based project format"
  },
  {
    "path": ".travis.yml",
    "chars": 245,
    "preview": "sudo: false\n\nlanguage: node_js\n\nnode_js:\n  - \"8\"\n\naddons:\n  apt:\n    sources:\n      - ubuntu-toolchain-r-test\n    packag"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 684,
    "preview": "v1.3.1 - 15 Dec 2016\n--------------------\n- Fix gulp build\n- Update dependencies\n- Fix datepicker position\n\nv1.3.0 - 10 "
  },
  {
    "path": "LICENSE.txt",
    "chars": 1169,
    "preview": "The MIT License (MIT)\nCopyright (c) 2016 Akvemus GSC\n\nPermission is hereby granted, free of charge, to any person obtain"
  },
  {
    "path": "README.md",
    "chars": 1842,
    "preview": "[![Build Status](https://travis-ci.org/akveo/blur-admin.svg?branch=master)](https://travis-ci.org/akveo/blur-admin)\n\n# B"
  },
  {
    "path": "bower.json",
    "chars": 2732,
    "preview": "{\n  \"name\": \"blur-admin\",\n  \"version\": \"1.3.1\",\n  \"homepage\": \"https://github.com/1itvinka/blur-admin\",\n  \"authors\": [\n "
  },
  {
    "path": "docs/config.json",
    "chars": 617,
    "preview": "{\n  \"baseUrl\": \"/blur-admin/\",\n  \"locals\": {\n    \"url\": \"http://localhost:8080\",\n    \"name\": \"The Wintersmith's blog\",\n "
  },
  {
    "path": "docs/contents/articles/001-getting-started/index.md",
    "chars": 1462,
    "preview": "---\ntitle: Getting Started\nauthor: vl\nsort: 999\ngroup: Quick Start\ntemplate: article.jade\n---\n\n## What is BlurAdmin?\n\nBl"
  },
  {
    "path": "docs/contents/articles/002-installation-guidelines/index.md",
    "chars": 1591,
    "preview": "---\ntitle: Installation Guidelines\nauthor: vl\nsort: 500\ngroup: Quick Start\ntemplate: article.jade\n---\n\n## Prerequisites\n"
  },
  {
    "path": "docs/contents/articles/011-changing-color-scheme/index.md",
    "chars": 2215,
    "preview": "---\ntitle: Changing Color Scheme\nauthor: vl\nsort: 900\ngroup: Customization\ntemplate: article.jade\n---\n\nWe tried to make "
  },
  {
    "path": "docs/contents/articles/012-project-structure/index.md",
    "chars": 1894,
    "preview": "---\ntitle: Project Structure\nauthor: vl\nsort: 800\ngroup: Customization\ntemplate: article.jade\n---\n\nProject structure was"
  },
  {
    "path": "docs/contents/articles/013-create-new-page/index.md",
    "chars": 1876,
    "preview": "---\ntitle: Create New Page\nauthor: vl\nsort: 300\ngroup: Customization\ntemplate: article.jade\n---\n\nBlur admin uses [Angula"
  },
  {
    "path": "docs/contents/articles/014-switch-to-blur-theme/index.md",
    "chars": 1580,
    "preview": "---\ntitle: Enabling blur theme\nauthor: kd\nsort: 850\ngroup: Customization\ntemplate: article.jade\n---\n\nIf you want to swit"
  },
  {
    "path": "docs/contents/articles/051-sidebar/index.md",
    "chars": 3031,
    "preview": "---\ntitle: Sidebar\nauthor: vl\nsort: 900\ngroup: Components\ntemplate: article.jade\n---\n\nSidebar is used to provide conveni"
  },
  {
    "path": "docs/contents/articles/091-downloads/index.md",
    "chars": 1225,
    "preview": "---\ntitle: Downloads\nauthor: vl\nsort: 900\ngroup: Other\ntemplate: article.jade\n---\n\nIf you have problems installing node."
  },
  {
    "path": "docs/contents/css/main.css",
    "chars": 15369,
    "preview": "html {\n    font-family: 'Source Sans Pro', sans-serif;\n    color: #484848;\n    line-height: 1.28\n}\n\np {\n    margin: 0 0 "
  },
  {
    "path": "docs/contents/index.json",
    "chars": 53,
    "preview": "{\n  \"template\": \"index.jade\",\n  \"activeHome\": true\n}\n"
  },
  {
    "path": "docs/package.json",
    "chars": 121,
    "preview": "{\n  \"dependencies\": {\n    \"moment\": \"2.3.x\",\n    \"underscore\": \"1.4.x\",\n    \"typogr\": \"0.5.x\"\n  },\n  \"private\": \"true\"\n}"
  },
  {
    "path": "docs/plugins/paginator.coffee",
    "chars": 1750,
    "preview": "\nmodule.exports = (env, callback) ->\n  ### Paginator plugin. Defaults can be overridden in config.json\n      e.g. \"pagin"
  },
  {
    "path": "docs/templates/article.jade",
    "chars": 520,
    "preview": "\nextends layout\n\nblock title\n  | BlurAdmin documentation - #{page.title]\n\nblock content\n  section.content.wrap.documenta"
  },
  {
    "path": "docs/templates/index.jade",
    "chars": 3156,
    "preview": "\nextends layout\n\nblock title\n  | BlurAdmin angular admin dashboard template\n\nblock content\n  div.hero\n    div.hero-conte"
  },
  {
    "path": "docs/templates/layout.jade",
    "chars": 3310,
    "preview": "doctype html\nblock vars\n  - var bodyclass = null;\n  - var groupedArticles = env.helpers.getGroupedArticles(contents);\n  "
  },
  {
    "path": "gulp/build.js",
    "chars": 3154,
    "preview": "'use strict';\n\nvar path = require('path');\nvar gulp = require('gulp');\nvar conf = require('./conf');\n\nvar $ = require('g"
  },
  {
    "path": "gulp/conf.js",
    "chars": 1038,
    "preview": "/**\n *  This file contains the variables used in other gulp files\n *  which defines tasks\n *  By design, we only put the"
  },
  {
    "path": "gulp/devRelease.js",
    "chars": 1924,
    "preview": "'use strict';\n\nvar path = require('path');\nvar gulp = require('gulp');\nvar conf = require('./conf');\n\nvar $ = require('g"
  },
  {
    "path": "gulp/docs.js",
    "chars": 311,
    "preview": "'use strict';\n\nvar gulp = require('gulp');\n\nvar $ = require('gulp-load-plugins')();\n\ngulp.task('wintersmith-generate', $"
  },
  {
    "path": "gulp/images.js",
    "chars": 640,
    "preview": "'use strict';\n\nvar path = require('path');\nvar gulp = require('gulp');\nvar conf = require('./conf');\n\ngulp.task('copyVen"
  },
  {
    "path": "gulp/inject.js",
    "chars": 2377,
    "preview": "'use strict';\n\nvar path = require('path');\nvar gulp = require('gulp');\nvar conf = require('./conf');\n\nvar $ = require('g"
  },
  {
    "path": "gulp/marketplace.js",
    "chars": 848,
    "preview": "'use strict';\n\nvar path = require('path');\nvar gulp = require('gulp');\nvar zip = require('gulp-zip');\nvar prompt = requi"
  },
  {
    "path": "gulp/scripts.js",
    "chars": 516,
    "preview": "'use strict';\n\nvar path = require('path');\nvar gulp = require('gulp');\nvar conf = require('./conf');\n\nvar browserSync = "
  },
  {
    "path": "gulp/server.js",
    "chars": 1788,
    "preview": "'use strict';\n\nvar path = require('path');\nvar gulp = require('gulp');\nvar conf = require('./conf');\n\nvar browserSync = "
  },
  {
    "path": "gulp/styles.js",
    "chars": 2065,
    "preview": "'use strict';\n\nvar path = require('path');\nvar gulp = require('gulp');\nvar conf = require('./conf');\n\nvar browserSync = "
  },
  {
    "path": "gulp/watch.js",
    "chars": 934,
    "preview": "'use strict';\n\nvar path = require('path');\nvar gulp = require('gulp');\nvar conf = require('./conf');\n\nvar browserSync = "
  },
  {
    "path": "gulpfile.js",
    "chars": 522,
    "preview": "'use strict';\n\nvar gulp = require('gulp');\nvar wrench = require('wrench');\n\n/**\n *  This will load all js or coffee file"
  },
  {
    "path": "package.json",
    "chars": 1348,
    "preview": "{\n  \"name\": \"blur_admin\",\n  \"version\": \"1.3.1\",\n  \"devDependencies\": {\n    \"bower\": \"~1.8.4\",\n    \"browser-sync\": \"~2.18"
  },
  {
    "path": "preview.html",
    "chars": 836,
    "preview": "<p>\n  <a href=\"http://akveo.com/blur-admin/\" rel=\"nofollow\">\n    <img src=\"http://akveo.com/admin-images/blur-admin/prom"
  },
  {
    "path": "src/404.html",
    "chars": 1076,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">"
  },
  {
    "path": "src/app/app.js",
    "chars": 281,
    "preview": "'use strict';\n\nangular.module('BlurAdmin', [\n  'ngAnimate',\n  'ui.bootstrap',\n  'ui.sortable',\n  'ui.router',\n  'ngTouch"
  },
  {
    "path": "src/app/pages/charts/amCharts/amCharts.module.js",
    "chars": 6072,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/charts/amCharts/areaChart/AreaChartCtrl.js",
    "chars": 3227,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/charts/amCharts/areaChart/areaChart.html",
    "chars": 76,
    "preview": "<div id=\"areaChart\" class=\"admin-chart\" ng-controller=\"AreaChartCtrl\"></div>"
  },
  {
    "path": "src/app/pages/charts/amCharts/barChart/BarChartCtrl.js",
    "chars": 2114,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/charts/amCharts/barChart/barChart.html",
    "chars": 74,
    "preview": "<div id=\"barChart\" class=\"admin-chart\" ng-controller=\"BarChartCtrl\"></div>"
  },
  {
    "path": "src/app/pages/charts/amCharts/charts.html",
    "chars": 1744,
    "preview": "<div class=\"widgets\">\n\n  <div class=\"row\">\n    <div class=\"col-lg-4 col-md-6\"\n         ba-panel\n         ba-panel-title="
  },
  {
    "path": "src/app/pages/charts/amCharts/combinedChart/combinedChart.html",
    "chars": 85,
    "preview": "<div id=\"zoomAxisChart\" class=\"admin-chart\" ng-controller=\"combinedChartCtrl\"></div>\n"
  },
  {
    "path": "src/app/pages/charts/amCharts/combinedChart/combinedChartCtrl.js",
    "chars": 6776,
    "preview": "/**\n * @author a.demeshko\n * created on 22.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/charts/amCharts/funnelChart/FunnelChartCtrl.js",
    "chars": 1566,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/charts/amCharts/funnelChart/funnelChart.html",
    "chars": 80,
    "preview": "<div id=\"funnelChart\" class=\"admin-chart\" ng-controller=\"FunnelChartCtrl\"></div>"
  },
  {
    "path": "src/app/pages/charts/amCharts/ganttChart/ganttChart.html",
    "chars": 78,
    "preview": "<div id=\"gnattChart\" class=\"admin-chart\" ng-controller=\"ganttChartCtrl\"></div>"
  },
  {
    "path": "src/app/pages/charts/amCharts/ganttChart/ganttChartCtrl.js",
    "chars": 6926,
    "preview": "/**\n * @author a.demeshko\n * created on 22.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/charts/amCharts/lineChart/LineChartCtrl.js",
    "chars": 3560,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/charts/amCharts/lineChart/lineChart.html",
    "chars": 76,
    "preview": "<div id=\"lineChart\" class=\"admin-chart\" ng-controller=\"LineChartCtrl\"></div>"
  },
  {
    "path": "src/app/pages/charts/amCharts/pieChart/PieChartCtrl.js",
    "chars": 3268,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/charts/amCharts/pieChart/pieChart.html",
    "chars": 75,
    "preview": "<div id=\"pieChart\" class=\"admin-chart\" ng-controller=\"PieChartCtrl\"></div>\n"
  },
  {
    "path": "src/app/pages/charts/chartJs/chartJs.html",
    "chars": 3512,
    "preview": "<div class=\"row\">\n    <div class=\"col-md-4\" ng-controller=\"chartJs1DCtrl\">\n        <div ba-panel ba-panel-title=\"Pie\" ba"
  },
  {
    "path": "src/app/pages/charts/chartJs/chartJs.module.js",
    "chars": 2238,
    "preview": "/**\n * @author a.demeshko\n * created on 12/16/15\n */\n(function () {\n    'use strict';\n\n    angular.module('BlurAdmin.pag"
  },
  {
    "path": "src/app/pages/charts/chartJs/chartJs1DCtrl.js",
    "chars": 904,
    "preview": "/**\n * @author a.demeshko\n * created on 12/16/15\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.c"
  },
  {
    "path": "src/app/pages/charts/chartJs/chartJs2DCtrl.js",
    "chars": 736,
    "preview": "/**\n * @author a.demeshko\n * created on 12/16/15\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.c"
  },
  {
    "path": "src/app/pages/charts/chartJs/chartJsWaveCtrl.js",
    "chars": 789,
    "preview": "/**\n * @author a.demeshko\n * created on 12/16/15\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.c"
  },
  {
    "path": "src/app/pages/charts/chartist/chartist.html",
    "chars": 1521,
    "preview": "<section ng-controller=\"chartistCtrl\" class=\"chartist\">\n  <div class=\"row\">\n    <div class=\"col-md-6 \">\n      <div ba-pa"
  },
  {
    "path": "src/app/pages/charts/chartist/chartist.module.js",
    "chars": 490,
    "preview": "/**\n * @author a.demeshko\n * created on 12/17/15\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.c"
  },
  {
    "path": "src/app/pages/charts/chartist/chartistCtrl.js",
    "chars": 6037,
    "preview": "/**\n * @author a.demeshko\n * created on 12/16/15\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.c"
  },
  {
    "path": "src/app/pages/charts/charts.module.js",
    "chars": 714,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/charts/morris/morris.html",
    "chars": 1488,
    "preview": "<section ng-controller=\"morrisCtrl\">\n  <div class=\"row\">\n    <div class=\"col-md-12\">\n      <div ba-panel ba-panel-title="
  },
  {
    "path": "src/app/pages/charts/morris/morris.module.js",
    "chars": 882,
    "preview": "/**\n * @author a.demeshko\n * created on 12/18/15\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.c"
  },
  {
    "path": "src/app/pages/charts/morris/morrisCtrl.js",
    "chars": 1521,
    "preview": "/**\n * @author a.demeshko\n * created on 12/16/15\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.c"
  },
  {
    "path": "src/app/pages/components/components.module.js",
    "chars": 688,
    "preview": "/**\n * @author k.danovsky\n * created on 15.01.2016\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/components/mail/MailTabCtrl.js",
    "chars": 519,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/components/mail/composeBox/compose.html",
    "chars": 1385,
    "preview": "<div class=\"compose-header\">\n  <span>\n    New message\n  </span>\n  <span class=\"header-controls\">\n    <i class=\"ion-minus"
  },
  {
    "path": "src/app/pages/components/mail/composeBox/composeBoxCtrl.js",
    "chars": 345,
    "preview": "/**\n * @author a.demeshko\n * created on 24/12/15\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.c"
  },
  {
    "path": "src/app/pages/components/mail/composeBox/composeModal.js",
    "chars": 824,
    "preview": "/**\n * @author a.demeshko\n * created on 12/24/15\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.c"
  },
  {
    "path": "src/app/pages/components/mail/detail/MailDetailCtrl.js",
    "chars": 391,
    "preview": "/**\n * @author a.demeshko\n * created on 28.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/components/mail/detail/mailDetail.html",
    "chars": 3451,
    "preview": "<div class=\"message-container\" ng-class=\"{'expanded': tabCtrl.navigationCollapsed}\">\n  <div class=\"message\">\n    <div cl"
  },
  {
    "path": "src/app/pages/components/mail/list/MailListCtrl.js",
    "chars": 397,
    "preview": "/**\n * @author a.demeshko\n * created on 28.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/components/mail/list/mailList.html",
    "chars": 2554,
    "preview": "<div class=\"side-message-navigation\" ng-class=\"{'expanded': tabCtrl.navigationCollapsed}\">\n  <div class=\"mail-messages-c"
  },
  {
    "path": "src/app/pages/components/mail/mail.html",
    "chars": 1667,
    "preview": "<div class=\"row mail-client-container transparent\">\n  <div class=\"col-md-12\">\n    <div ba-panel ba-panel-class=\"xmedium-"
  },
  {
    "path": "src/app/pages/components/mail/mail.module.js",
    "chars": 1161,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/components/mail/mailMessages.js",
    "chars": 11119,
    "preview": "/**\n * @author a.demeshko\n * created on 12/29/15\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.c"
  },
  {
    "path": "src/app/pages/components/timeline/TimelineCtrl.js",
    "chars": 1415,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/components/timeline/timeline.html",
    "chars": 4087,
    "preview": "<!-- todo: remove whole block -->\n<div ba-panel>\n  <section id=\"cd-timeline\" class=\"cd-container cssanimations\" ng-contr"
  },
  {
    "path": "src/app/pages/components/timeline/timeline.module.js",
    "chars": 527,
    "preview": "/**\n * @author a.demeshko\n * created on 1/12/16\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.co"
  },
  {
    "path": "src/app/pages/components/tree/tree.html",
    "chars": 1213,
    "preview": "<div class=\"row\" ng-controller=\"treeCtrl\">\n  <div class=\"col-md-6\">\n    <div ba-panel ba-panel-title=\"Basic Action\" ba-p"
  },
  {
    "path": "src/app/pages/components/tree/tree.module.js",
    "chars": 653,
    "preview": "/**\n * @author a.demeshko\n * created on 12.21.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/components/tree/treeCtrl.js",
    "chars": 7628,
    "preview": "/**\n * @author a.demeshko\n * created on 12/21/15\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.c"
  },
  {
    "path": "src/app/pages/dashboard/blurFeed/BlurFeedCtrl.js",
    "chars": 4606,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/blurFeed/blurFeed.directive.js",
    "chars": 365,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/blurFeed/blurFeed.html",
    "chars": 1410,
    "preview": "\n<div class=\"feed-messages-container\" track-width=\"smallContainerWidth\" min-width=\"360\">\n  <div class=\"feed-message\" ng-"
  },
  {
    "path": "src/app/pages/dashboard/calendar/dashboardCalendar.js",
    "chars": 252,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/dashboard.html",
    "chars": 1956,
    "preview": "<dashboard-pie-chart></dashboard-pie-chart>\n\n<div class=\"row\">\n  <div class=\"col-lg-6 col-md-12 col-sm-12\"\n       ba-pan"
  },
  {
    "path": "src/app/pages/dashboard/dashboard.module.js",
    "chars": 516,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/dashboardCalendar/DashboardCalendarCtrl.js",
    "chars": 1664,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/dashboardCalendar/dashboardCalendar.directive.js",
    "chars": 419,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/dashboardCalendar/dashboardCalendar.html",
    "chars": 46,
    "preview": "<div id='calendar' class=\"blurCalendar\"></div>"
  },
  {
    "path": "src/app/pages/dashboard/dashboardLineChart/DashboardLineChartCtrl.js",
    "chars": 4240,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/dashboardLineChart/dashboardLineChart.directive.js",
    "chars": 425,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/dashboardLineChart/dashboardLineChart.html",
    "chars": 24,
    "preview": "<div id=\"amchart\"></div>"
  },
  {
    "path": "src/app/pages/dashboard/dashboardMap/DashboardMapCtrl.js",
    "chars": 4816,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/dashboardMap/dashboardMap.directive.js",
    "chars": 389,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/dashboardMap/dashboardMap.html",
    "chars": 27,
    "preview": "<div id=\"amChartMap\"></div>"
  },
  {
    "path": "src/app/pages/dashboard/dashboardPieChart/DashboardPieChartCtrl.js",
    "chars": 1821,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/dashboardPieChart/dashboardPieChart.directive.js",
    "chars": 419,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/dashboardPieChart/dashboardPieChart.html",
    "chars": 519,
    "preview": "<div class=\"row pie-charts\">\n  <div class=\"pie-chart-item-container\" ng-repeat=\"chart in charts\">\n    <div ba-panel>\n   "
  },
  {
    "path": "src/app/pages/dashboard/dashboardTodo/DashboardTodoCtrl.js",
    "chars": 1599,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/dashboardTodo/dashboardTodo.directive.js",
    "chars": 396,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/dashboardTodo/dashboardTodo.html",
    "chars": 1063,
    "preview": "<div class=\"task-todo-container\" ng-class=\"{'transparent': transparent}\">\n  <input type=\"text\" value=\"\" class=\"form-cont"
  },
  {
    "path": "src/app/pages/dashboard/pieCharts/dashboardPieChart.js",
    "chars": 252,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/popularApp/popularApp.directive.js",
    "chars": 341,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/popularApp/popularApp.html",
    "chars": 724,
    "preview": "<div class=\"popular-app-img-container\">\n  <div class=\"popular-app-img\">\n    <img ng-src=\"{{::( 'app/my-app-logo.png' | a"
  },
  {
    "path": "src/app/pages/dashboard/trafficChart/TrafficChartCtrl.js",
    "chars": 1900,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/trafficChart/trafficChart.directive.js",
    "chars": 389,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/trafficChart/trafficChart.html",
    "chars": 1167,
    "preview": "<div class=\"channels-block\" ng-class=\"{'transparent': transparent}\">\n  <div class=\"chart-bg\"></div>\n  <div class=\"traffi"
  },
  {
    "path": "src/app/pages/dashboard/weather/WeatherCtrl.js",
    "chars": 4413,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/weather/weather.directive.js",
    "chars": 360,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/dashboard/weather/weather.html",
    "chars": 1618,
    "preview": "<div class=\"weather-wrapper\">\n  <div class=\"weather-main-info\">\n    <h5 class=\"city-date font-x1dot5\">\n      <div>\n     "
  },
  {
    "path": "src/app/pages/form/form.module.js",
    "chars": 1319,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/form/inputs/inputs.html",
    "chars": 2219,
    "preview": "<div class=\"widgets\">\n\n  <div class=\"row\">\n    <div class=\"col-md-6\">\n      <div\n          ba-panel\n          ba-panel-t"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/checkboxesRadios.html",
    "chars": 1883,
    "preview": "<div class=\"checkbox-demo-row\">\n  <div class=\"input-demo checkbox-demo row\">\n    <div class=\"col-md-4\">\n      <label cla"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/datePickers/datePickers.html",
    "chars": 1266,
    "preview": "<div class=\"datepicker row\">\n    <div class=\"col-xlg-6 col-md-12 col-sm-6\" ng-controller=\"datepickerCtrl\">\n        <h4>I"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/datePickers/datepickerCtrl.js",
    "chars": 356,
    "preview": "/**\n * Created by n.poltoratsky\n * on 23.06.2016.\n */\n(function(){\n    'use strict';\n\n    angular.module('BlurAdmin.page"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/datePickers/datepickerpopupCtrl.js",
    "chars": 595,
    "preview": "/**\n * Created by n.poltoratsky\n * on 23.06.2016.\n */\n(function(){\n    'use strict';\n\n    angular.module('BlurAdmin.page"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/inputGroups.html",
    "chars": 1053,
    "preview": "<div class=\"input-group\">\n  <span class=\"input-group-addon input-group-addon-primary addon-left\" id=\"basic-addon1\">@</sp"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/oldSelect/OldSelectpickerPanelCtrl.js",
    "chars": 1069,
    "preview": "/**\n * @author v.lugovsky\n * created on 22.04.2016\n * @deprecated\n */\n(function () {\n  'use strict';\n\n  angular.module('"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/oldSelect/select.html",
    "chars": 5837,
    "preview": "<div ng-controller=\"OldSelectpickerPanelCtrl as selectpickerVm\">\n    <div class=\"form-group\">\n        <select class=\"for"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/oldSelect/selectpicker.directive.js",
    "chars": 1001,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n * @deprecated\n */\n(function () {\n  'use strict';\n\n  angular.module('"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/oldSwitches/OldSwitchPanelCtrl.js",
    "chars": 407,
    "preview": "/**\n * @author v.lugovsky\n * created on 07.06.2016\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/oldSwitches/switch.directive.js",
    "chars": 864,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n *\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pa"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/oldSwitches/switch.html",
    "chars": 502,
    "preview": "<div ng-controller=\"OldSwitchPanelCtrl as switchPanelVm\" class=\"switches clearfix\">\n  <switch color=\"primary\" ng-model=\""
  },
  {
    "path": "src/app/pages/form/inputs/widgets/select/GroupSelectpickerOptions.js",
    "chars": 963,
    "preview": "/**\n * @author p.maslava\n * created on 28.11.2016\n */\n\n(function() {\n  'use strict';\n\n  angular.module('BlurAdmin.pages."
  },
  {
    "path": "src/app/pages/form/inputs/widgets/select/SelectpickerPanelCtrl.js",
    "chars": 2647,
    "preview": "/**\n * @author p.maslava\n * created on 28.11.2016\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages."
  },
  {
    "path": "src/app/pages/form/inputs/widgets/select/select.html",
    "chars": 4807,
    "preview": "<div class=\"ng-cloak\" ng-controller=\"SelectpickerPanelCtrl as selectpickerVm\">\n  <div class=\"form-group\">\n    <ui-select"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/standardFields.html",
    "chars": 1426,
    "preview": "<form>\n  <div class=\"form-group\">\n    <label for=\"input01\">Text</label>\n    <input type=\"text\" class=\"form-control\" id=\""
  },
  {
    "path": "src/app/pages/form/inputs/widgets/switches/SwitchDemoPanelCtrl.js",
    "chars": 384,
    "preview": "/**\n * @author v.lugovsky\n * created on 10.12.2016\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/switches/switch.html",
    "chars": 488,
    "preview": "<div ng-controller=\"SwitchDemoPanelCtrl as vm\">\n  <ba-switcher switcher-style=\"primary\" switcher-value=\"vm.switches.s1\">"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/tagsInput/tagsInput.directive.js",
    "chars": 406,
    "preview": "/**\n * @author v.lugovksy\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/tagsInput/tagsInput.html",
    "chars": 528,
    "preview": "<div class=\"form-group\">\n  <div class=\"form-group\">\n    <input type=\"text\" tag-input=\"primary\" value=\"Amsterdam,Washingt"
  },
  {
    "path": "src/app/pages/form/inputs/widgets/validationStates.html",
    "chars": 2842,
    "preview": "<div class=\"form-group has-success\">\n  <label class=\"control-label\" for=\"inputSuccess1\">Input with success</label>\n  <in"
  },
  {
    "path": "src/app/pages/form/layouts/layouts.html",
    "chars": 1214,
    "preview": "<div class=\"widgets\">\n\n  <div class=\"row\">\n    <div class=\"col-md-12\"\n         ba-panel\n         ba-panel-title=\"Inline "
  },
  {
    "path": "src/app/pages/form/layouts/widgets/basicForm.html",
    "chars": 597,
    "preview": "<form>\n  <div class=\"form-group\">\n    <label for=\"exampleInputEmail1\">Email address</label>\n    <input type=\"email\" clas"
  },
  {
    "path": "src/app/pages/form/layouts/widgets/blockForm.html",
    "chars": 960,
    "preview": "<div class=\"row\">\n  <div class=\"col-sm-6\">\n    <div class=\"form-group\">\n      <label for=\"inputFirstName\">First Name</la"
  },
  {
    "path": "src/app/pages/form/layouts/widgets/formWithoutLabels.html",
    "chars": 390,
    "preview": "<form>\n  <div class=\"form-group\">\n    <input type=\"text\" class=\"form-control\" placeholder=\"Recipients\">\n  </div>\n  <div "
  },
  {
    "path": "src/app/pages/form/layouts/widgets/horizontalForm.html",
    "chars": 940,
    "preview": "<form class=\"form-horizontal\">\n  <div class=\"form-group\">\n    <label for=\"inputEmail3\" class=\"col-sm-2 control-label\">Em"
  },
  {
    "path": "src/app/pages/form/layouts/widgets/inlineForm.html",
    "chars": 540,
    "preview": "<form class=\"row form-inline\">\n  <div class=\"form-group col-sm-3 col-xs-6\">\n    <input type=\"text\" class=\"form-control\" "
  },
  {
    "path": "src/app/pages/form/wizard/wizard.html",
    "chars": 7999,
    "preview": "<div class=\"widgets\">\n\n    <div class=\"row\">\n        <div class=\"col-md-12\">\n            <div ba-panel ba-panel-title=\"F"
  },
  {
    "path": "src/app/pages/form/wizard/wizrdCtrl.js",
    "chars": 444,
    "preview": "(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages.form')\n      .controller('WizardCtrl', WizardCtrl);\n\n "
  },
  {
    "path": "src/app/pages/maps/google-maps/GmapPageCtrl.js",
    "chars": 618,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/maps/google-maps/google-maps.html",
    "chars": 102,
    "preview": "<div ba-panel ba-panel-title=\"Google Maps\" class=\"viewport100\">\n  <div id=\"google-maps\"></div>\n</div>\n"
  },
  {
    "path": "src/app/pages/maps/leaflet/LeafletPageCtrl.js",
    "chars": 835,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/maps/leaflet/leaflet.html",
    "chars": 97,
    "preview": "<div ba-panel ba-panel-title=\"Leaflet\" class=\"viewport100\">\n  <div id=\"leaflet-map\"></div>\n</div>"
  },
  {
    "path": "src/app/pages/maps/map-bubbles/MapBubblePageCtrl.js",
    "chars": 31933,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/maps/map-bubbles/map-bubbles.html",
    "chars": 107,
    "preview": "<div ba-panel ba-panel-title=\"Map with Bubbles\" class=\"viewport100\">\n  <div id=\"map-bubbles\"></div>\n</div>\n"
  },
  {
    "path": "src/app/pages/maps/map-lines/MapLinesPageCtrl.js",
    "chars": 9270,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/maps/map-lines/map-lines.html",
    "chars": 99,
    "preview": "<div ba-panel ba-panel-title=\"Line Map\" class=\"viewport100\">\n  <div id=\"map-lines\"></div>\n</div>\n\n\n"
  },
  {
    "path": "src/app/pages/maps/maps.html",
    "chars": 139,
    "preview": "<div class=\"widgets\">\n\n  <div class=\"row\">\n    <div class=\"col-md-12\" ui-view autoscroll=\"true\" autoscroll-body-top></di"
  },
  {
    "path": "src/app/pages/maps/maps.module.js",
    "chars": 1597,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/pages.module.js",
    "chars": 1352,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/profile/ProfileModalCtrl.js",
    "chars": 376,
    "preview": "/**\n * @author a.demeshko\n * created on 21.01.2016\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/profile/ProfilePageCtrl.js",
    "chars": 2057,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/profile/profile.html",
    "chars": 7553,
    "preview": "<div ba-panel ba-panel-class=\"profile-page\">\n  <div class=\"panel-content\">\n    <div class=\"progress-info\">Your profile i"
  },
  {
    "path": "src/app/pages/profile/profile.module.js",
    "chars": 447,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/profile/profileModal.html",
    "chars": 702,
    "preview": "<div class=\"modal-content\">\n  <div class=\"modal-header\">\n    <button type=\"button\" class=\"close\" ng-click=\"$dismiss()\" a"
  },
  {
    "path": "src/app/pages/tables/TablesPageCtrl.js",
    "chars": 16408,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/tables/basic/tables.html",
    "chars": 1555,
    "preview": "<div class=\"widgets\">\n\n  <div class=\"row\">\n    <div class=\"col-lg-6 col-md-12\">\n      <div ba-panel ba-panel-title=\"Hove"
  },
  {
    "path": "src/app/pages/tables/smart/tables.html",
    "chars": 811,
    "preview": "<div class=\"widgets\">\n\n  <div class=\"row\">\n    <div class=\"col-md-12\">\n      <div ba-panel ba-panel-title=\"Editable Rows"
  },
  {
    "path": "src/app/pages/tables/tables.module.js",
    "chars": 1090,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/tables/widgets/basicTable.html",
    "chars": 4784,
    "preview": "<div class=\"horizontal-scroll\">\n  <table class=\"table\">\n    <thead>\n    <tr>\n      <th class=\"browser-icons\"></th>\n     "
  },
  {
    "path": "src/app/pages/tables/widgets/borderedTable.html",
    "chars": 690,
    "preview": "<div class=\"horizontal-scroll\">\n  <table class=\"table table-bordered\">\n    <thead>\n    <tr>\n      <th class=\"browser-ico"
  },
  {
    "path": "src/app/pages/tables/widgets/condensedTable.html",
    "chars": 698,
    "preview": "<div class=\"horizontal-scroll\">\n  <table class=\"table table-condensed\">\n    <thead>\n    <tr>\n      <th class=\"table-id\">"
  },
  {
    "path": "src/app/pages/tables/widgets/contextualTable.html",
    "chars": 1348,
    "preview": "<table class=\"table\">\n  <tr>\n    <th>#</th>\n    <th>First Name</th>\n    <th>Last Name</th>\n    <th>Username</th>\n    <th"
  },
  {
    "path": "src/app/pages/tables/widgets/editableRowTable.html",
    "chars": 1846,
    "preview": "<div class=\"add-row-editable-table\">\n  <button class=\"btn btn-primary\" ng-click=\"addUser()\">Add row</button>\n</div>\n<tab"
  },
  {
    "path": "src/app/pages/tables/widgets/editableTable.html",
    "chars": 1220,
    "preview": "<div class=\"horizontal-scroll\">\n  <table class=\"table table-hover\" st-table=\"editableTableData\">\n    <thead>\n    <tr cla"
  },
  {
    "path": "src/app/pages/tables/widgets/hoverRows.html",
    "chars": 1181,
    "preview": "<div class=\"horizontal-scroll\">\n  <table class=\"table table-hover\">\n    <thead>\n    <tr class=\"black-muted-bg\">\n      <t"
  },
  {
    "path": "src/app/pages/tables/widgets/responsiveTable.html",
    "chars": 1412,
    "preview": "<div class=\"table-responsive\">\n  <table class=\"table\">\n    <tr>\n      <th>#</th>\n      <th>First Name</th>\n      <th>Las"
  },
  {
    "path": "src/app/pages/tables/widgets/smartTable.html",
    "chars": 2007,
    "preview": "<div class=\"horizontal-scroll\">\n  <div class=\"form-group select-page-size-wrap \">\n    <label>Rows on page\n      <select "
  },
  {
    "path": "src/app/pages/tables/widgets/stripedRows.html",
    "chars": 617,
    "preview": "<div class=\"vertical-scroll\">\n  <table class=\"table table-striped\">\n    <thead>\n    <tr>\n      <th class=\"table-id\">#</t"
  },
  {
    "path": "src/app/pages/ui/alerts/alerts.html",
    "chars": 3472,
    "preview": "<div class=\"widgets\">\n  <div class=\"row\">\n\n    <div class=\"col-md-6\"\n         ba-panel\n         ba-panel-title=\"Basic\"\n "
  },
  {
    "path": "src/app/pages/ui/alerts/alerts.module.js",
    "chars": 471,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/ui/buttons/ButtonPageCtrl.js",
    "chars": 358,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/ui/buttons/buttons.html",
    "chars": 4533,
    "preview": "<div class=\"widgets\">\n  <div class=\"row\">\n    <div class=\"col-md-3\"\n         ba-panel\n         ba-panel-title=\"Flat Butt"
  },
  {
    "path": "src/app/pages/ui/buttons/buttons.module.js",
    "chars": 517,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/ui/buttons/widgets/buttonGroups.html",
    "chars": 1175,
    "preview": "<div class=\"btn-group-example\">\n  <div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n    <button type=\"butt"
  },
  {
    "path": "src/app/pages/ui/buttons/widgets/buttons.html",
    "chars": 3571,
    "preview": "<div class=\"basic-btns\">\n  <div class=\"row\">\n    <div class=\"col-md-2\"><h5>Default button</h5></div>\n    <div class=\"col"
  },
  {
    "path": "src/app/pages/ui/buttons/widgets/dropdowns.html",
    "chars": 7058,
    "preview": "<div class=\"row btns-row\">\n  <div class=\"col-sm-4 col-xs-6\">\n    <div class=\"btn-group\" uib-dropdown dropdown-append-to-"
  },
  {
    "path": "src/app/pages/ui/buttons/widgets/iconButtons.html",
    "chars": 1504,
    "preview": "<ul class=\"btn-list clearfix\">\n  <li><button type=\"button\" class=\"btn btn-primary btn-icon\"><i class=\"ion-android-downlo"
  },
  {
    "path": "src/app/pages/ui/buttons/widgets/largeButtons.html",
    "chars": 698,
    "preview": "<div class=\"row btns-row btns-same-width-lg\">\n  <div class=\"col-sm-4 col-xs-6\"><button type=\"button\" class=\"btn btn-prim"
  },
  {
    "path": "src/app/pages/ui/buttons/widgets/progressButtons.html",
    "chars": 4473,
    "preview": "<div class=\"progress-buttons-container text-center default-text\">\n  <div class=\"row\">\n    <section class=\"col-md-6 col-l"
  },
  {
    "path": "src/app/pages/ui/grid/baseGrid.html",
    "chars": 5796,
    "preview": "<h4 class=\"grid-h\">Stacked to horizontal</h4>\n<div class=\"row show-grid\">\n  <div class=\"col-md-1\">\n    <div>.col-md-1</d"
  },
  {
    "path": "src/app/pages/ui/grid/grid.html",
    "chars": 257,
    "preview": "<div class=\"widgets\">\n\n  <div class=\"row\">\n    <div class=\"col-md-12\"\n         ba-panel\n         ba-panel-title=\"Inline "
  },
  {
    "path": "src/app/pages/ui/grid/grid.module.js",
    "chars": 459,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/ui/icons/IconsPageCtrl.js",
    "chars": 6318,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/ui/icons/icons.html",
    "chars": 1194,
    "preview": "<div class=\"widgets\">\n\n  <div class=\"row\">\n    <div class=\"col-md-6\">\n      <div\n          ba-panel\n          ba-panel-t"
  },
  {
    "path": "src/app/pages/ui/icons/icons.module.js",
    "chars": 504,
    "preview": "/**\n * @author v.lugovsky\n * created on 16.12.2015\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/ui/icons/widgets/fontAwesomeIcons.html",
    "chars": 285,
    "preview": "<div class=\"row icons-list success awesomeIcons\">\n  <div class=\"col-xs-2\" ng-repeat=\"icon in icons.fontAwesomeIcons\"><i "
  },
  {
    "path": "src/app/pages/ui/icons/widgets/ionicons.html",
    "chars": 229,
    "preview": "<div class=\"row icons-list primary\">\n  <div class=\"col-xs-2\" ng-repeat=\"icon in icons.ionicons\"><i class=\"{{icon}}\"></i>"
  },
  {
    "path": "src/app/pages/ui/icons/widgets/kameleon.html",
    "chars": 326,
    "preview": "<div class=\"row clearfix\">\n  <div class=\"kameleon-row\" ng-repeat=\"icon in icons.kameleonIcons\">\n    <div class=\"kameleon"
  },
  {
    "path": "src/app/pages/ui/icons/widgets/kameleonRounded.html",
    "chars": 362,
    "preview": "<div class=\"row clearfix\">\n  <div class=\"kameleon-row\" ng-repeat=\"icon in icons.kameleonRoundedIcons\">\n    <div class=\"k"
  },
  {
    "path": "src/app/pages/ui/icons/widgets/socicon.html",
    "chars": 247,
    "preview": "<div class=\"row icons-list danger\">\n  <div class=\"col-xs-2\" ng-repeat=\"icon in icons.socicon\"><i class=\"socicon\">{{ icon"
  },
  {
    "path": "src/app/pages/ui/modals/ModalsPageCtrl.js",
    "chars": 600,
    "preview": "/**\n * @author a.demeshko\n * created on 18.01.2016\n */\n(function () {\n  'use strict';\n\n  angular.module('BlurAdmin.pages"
  },
  {
    "path": "src/app/pages/ui/modals/modalTemplates/basicModal.html",
    "chars": 743,
    "preview": "<div class=\"modal-content\">\n  <div class=\"modal-header\">\n    <button type=\"button\" class=\"close\" ng-click=\"$dismiss()\" a"
  },
  {
    "path": "src/app/pages/ui/modals/modalTemplates/dangerModal.html",
    "chars": 344,
    "preview": "<div class=\"modal-content\">\n  <div class=\"modal-header bg-danger\">\n    <i class=\"ion-flame modal-icon\"></i><span> Error<"
  },
  {
    "path": "src/app/pages/ui/modals/modalTemplates/infoModal.html",
    "chars": 348,
    "preview": "<div class=\"modal-content\">\n  <div class=\"modal-header bg-info\">\n    <i class=\"ion-information-circled modal-icon\"></i><"
  }
]

// ... and 154 more files (download for full content)

About this extraction

This page contains the full source code of the akveo/blur-admin GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 354 files (627.7 KB), approximately 191.4k tokens, and a symbol index with 147 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!