diff --git a/CHANGELOG.md b/CHANGELOG.md index 32a2431..32c33d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,23 +1,23 @@ ## Changelog [react](./REACT.md) version -### 2017.08.24 +##### 2017.08.24 - webpack.config env.prod - Dashboard .dropdown-menu-right temp.scss hotfix (full) - callout.scss .chart-wrapper hotfix (full) -### 2017.08.11 +##### 2017.08.11 - Bootstrap 4 beta - Dashboard component (full): - line chart for social box - sparkline chart for callout -### 2017.08.01 +##### 2017.08.01 - Sidebar component: - title item with optional wrapper and class (_nav.js) - nav link item with optional badge - code refactoring -### 2017.07.31 +##### 2017.07.31 - moved to [reactstrap](https://reactstrap.github.io/) - moved to [webpack](https://webpack.js.org/) (dropping gulp) - data driven Sidebar component (_nav.js) diff --git a/CHANGELOG.md~Stashed changes b/CHANGELOG.md~Stashed changes new file mode 100644 index 0000000..32c33d5 --- /dev/null +++ b/CHANGELOG.md~Stashed changes @@ -0,0 +1,24 @@ +## Changelog [react](./REACT.md) version + +##### 2017.08.24 +- webpack.config env.prod +- Dashboard .dropdown-menu-right temp.scss hotfix (full) +- callout.scss .chart-wrapper hotfix (full) + +##### 2017.08.11 +- Bootstrap 4 beta +- Dashboard component (full): + - line chart for social box + - sparkline chart for callout + +##### 2017.08.01 +- Sidebar component: + - title item with optional wrapper and class (_nav.js) + - nav link item with optional badge + - code refactoring + +##### 2017.07.31 +- moved to [reactstrap](https://reactstrap.github.io/) +- moved to [webpack](https://webpack.js.org/) (dropping gulp) +- data driven Sidebar component (_nav.js) + diff --git a/REACT.md b/REACT.md index e992b2b..8e105f8 100644 --- a/REACT.md +++ b/REACT.md @@ -1,36 +1,29 @@ # React version ## Intro - It uses Sass (with .scss). The style is loaded at the component level. Dependencies can be handled by **npm**. ## Directories - ``` -src (js|jsx source) -scss (scss source) -public (html template) -public/img (images) +React_Full_Project/ +├── src/ (js|jsx source) +├── scss/ (scss source) +├── public/ (html template) + ├── img/ (images) ``` ## Usage - **npm i** - to install dependencies ## Sctipts - -**npm start** for developing (it runs webpack-dev-server) - -**npm run build** to run a dev build - -**npm run clean** to clean build dir - -**npm run dev** to run a dev build with watching filesystem for changes - +**npm start** for developing (it runs webpack-dev-server) +**npm run build** to run a dev build +**npm run clean** to clean build dir +**npm run dev** to run a dev build with watching filesystem for changes ## See also -[Changelog](./CHANGELOG.md) +[Changelog](./CHANGELOG.md) [Readme](./README.md) \ No newline at end of file diff --git a/REACT.md~Stashed changes b/REACT.md~Stashed changes new file mode 100644 index 0000000..8e105f8 --- /dev/null +++ b/REACT.md~Stashed changes @@ -0,0 +1,29 @@ +# React version + +## Intro +It uses Sass (with .scss). The style is loaded at the component level. + +Dependencies can be handled by **npm**. + +## Directories +``` +React_Full_Project/ +├── src/ (js|jsx source) +├── scss/ (scss source) +├── public/ (html template) + ├── img/ (images) +``` + +## Usage +**npm i** - to install dependencies + +## Sctipts +**npm start** for developing (it runs webpack-dev-server) +**npm run build** to run a dev build +**npm run clean** to clean build dir +**npm run dev** to run a dev build with watching filesystem for changes + +## See also + +[Changelog](./CHANGELOG.md) +[Readme](./README.md) \ No newline at end of file diff --git a/REACT.md~Updated upstream b/REACT.md~Updated upstream new file mode 100644 index 0000000..e992b2b --- /dev/null +++ b/REACT.md~Updated upstream @@ -0,0 +1,36 @@ +# React version + +## Intro + +It uses Sass (with .scss). The style is loaded at the component level. + +Dependencies can be handled by **npm**. + +## Directories + +``` +src (js|jsx source) +scss (scss source) +public (html template) +public/img (images) +``` + +## Usage + +**npm i** - to install dependencies + +## Sctipts + +**npm start** for developing (it runs webpack-dev-server) + +**npm run build** to run a dev build + +**npm run clean** to clean build dir + +**npm run dev** to run a dev build with watching filesystem for changes + + +## See also + +[Changelog](./CHANGELOG.md) +[Readme](./README.md) \ No newline at end of file diff --git a/README.md b/README.md index a8955e3..2aec19a 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ Please help us on [Product Hunt](https://www.producthunt.com/posts/coreui-open-s Why I decided to create CoreUI? Please read this article: [Jack of all trades, master of none. Why Boostrap Admin Templates suck.](https://medium.com/@lukaszholeczek/jack-of-all-trades-master-of-none-5ea53ef8a1f#.7eqx1bcd8) -CoreUI is Open Source React & Bootstrap Admin Template. CoreUI is not just another Admin Template. It goes way beyond hitherto admin templates thanks to transparent code and file structure. And if that's not enough, let's just add that the CoreUI consists bunch of unique features and over 1000 high quality icons. +CoreUI is an Open Source React & Bootstrap Admin Template. But CoreUI is not just another Admin Template. It goes way beyond hitherto admin templates thanks to transparent code and file structure. And if that's not enough, let’s just add that CoreUI consists bunch of unique features and over 1000 high quality icons. -CoreUI based on Bootstrap 4 and offers 6 versions: HTML5, AJAX, AngularJS, Angular 2, React.js & Vue.js. +CoreUI is based on Bootstrap 4 and offers 6 versions: [HTML5 AJAX](https://github.com/mrholek/CoreUI-Free-Bootstrap-Admin-Template), [HTML5 Static](https://github.com/mrholek/CoreUI-Free-Bootstrap-Admin-Template), [AngularJS](https://github.com/mrholek/CoreUI-AngularJS), [Angular 2+](https://github.com/mrholek/CoreUI-Angular), [React.js](https://github.com/mrholek/CoreUI-React) & [Vue.js](https://github.com/mrholek/CoreUI-Vue). -CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of redundant components, so the app is light enough to offer ultimate user experience. This means also mobile devices, where the navigation is the same easy and intuitive as in desktop or laptop. CoreUI Layout API lets you customize your project for almost any device – be it Mobile, Web or WebApp – CoreUI covers them all! +CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of redundant components, so the app is light enough to offer ultimate user experience. This means mobile devices also, where the navigation is just as easy and intuitive as on a desktop or laptop. The CoreUI Layout API lets you customize your project for almost any device – be it Mobile, Web or WebApp – CoreUI covers them all! [![CoreUI React Free Bootstrap Admin Template](http://coreui.io/assets/img/coreui.png "CoreUI React Free Bootstrap Admin Template")](http://coreui.io) diff --git a/React_Full_Project/CHANGELOG.md b/React_Full_Project/CHANGELOG.md new file mode 100644 index 0000000..32a2431 --- /dev/null +++ b/React_Full_Project/CHANGELOG.md @@ -0,0 +1,24 @@ +## Changelog [react](./REACT.md) version + +### 2017.08.24 +- webpack.config env.prod +- Dashboard .dropdown-menu-right temp.scss hotfix (full) +- callout.scss .chart-wrapper hotfix (full) + +### 2017.08.11 +- Bootstrap 4 beta +- Dashboard component (full): + - line chart for social box + - sparkline chart for callout + +### 2017.08.01 +- Sidebar component: + - title item with optional wrapper and class (_nav.js) + - nav link item with optional badge + - code refactoring + +### 2017.07.31 +- moved to [reactstrap](https://reactstrap.github.io/) +- moved to [webpack](https://webpack.js.org/) (dropping gulp) +- data driven Sidebar component (_nav.js) + diff --git a/React_Full_Project/REACT.md b/React_Full_Project/REACT.md new file mode 100644 index 0000000..e992b2b --- /dev/null +++ b/React_Full_Project/REACT.md @@ -0,0 +1,36 @@ +# React version + +## Intro + +It uses Sass (with .scss). The style is loaded at the component level. + +Dependencies can be handled by **npm**. + +## Directories + +``` +src (js|jsx source) +scss (scss source) +public (html template) +public/img (images) +``` + +## Usage + +**npm i** - to install dependencies + +## Sctipts + +**npm start** for developing (it runs webpack-dev-server) + +**npm run build** to run a dev build + +**npm run clean** to clean build dir + +**npm run dev** to run a dev build with watching filesystem for changes + + +## See also + +[Changelog](./CHANGELOG.md) +[Readme](./README.md) \ No newline at end of file diff --git a/React_Full_Project/package.json b/React_Full_Project/package.json index ac02274..43f18e8 100644 --- a/React_Full_Project/package.json +++ b/React_Full_Project/package.json @@ -1,6 +1,6 @@ { "name": "coreui-react", - "version": "1.0.0-alpha.6", + "version": "1.0.0", "description": "CoreUI React Open Source Bootstrap Admin Template", "author": "Łukasz Holeczek ", "url": "http://coreui.io", @@ -15,32 +15,32 @@ "babel-preset-env": "^1.6.0", "babel-preset-react": "^6.24.1", "copy-webpack-plugin": "^4.0.1", - "css-hot-loader": "^1.3.0", - "css-loader": "^0.28.5", + "css-hot-loader": "^1.3.1", + "css-loader": "^0.28.7", "extract-text-webpack-plugin": "^3.0.0", "file-loader": "^0.11.2", "html-loader": "^0.5.1", "html-webpack-plugin": "^2.30.1", "node-sass": "^4.5.3", - "rimraf": "^2.6.1", + "rimraf": "^2.6.2", "sass-loader": "^6.0.6", "source-list-map": "^2.0.0", "style-loader": "^0.18.2", - "uglify-js": "^3.0.28", + "uglify-js": "^3.1.1", "url-loader": "^0.5.9", - "webpack": "^3.5.5", - "webpack-dev-server": "^2.7.1" + "webpack": "^3.6.0", + "webpack-dev-server": "^2.8.2" }, "dependencies": { "bootstrap": "^4.0.0-beta", - "chart.js": "2.6.0", + "chart.js": "2.7.0", "font-awesome": "^4.7.0", "history": "4.7.2", "react": "^15.6.1", - "react-chartjs-2": "2.6.1", + "react-chartjs-2": "2.6.2", "react-dom": "^15.6.1", "react-router-dom": "4.2.2", - "react-transition-group": "^1.2.0", + "react-transition-group": "^2.2.0", "reactstrap": "^4.8.0", "simple-line-icons": "^2.4.1" }, diff --git a/React_Full_Project/scss/core/_breadcrumb.scss b/React_Full_Project/scss/core/_breadcrumb.scss index 55ece3a..ef2d295 100644 --- a/React_Full_Project/scss/core/_breadcrumb.scss +++ b/React_Full_Project/scss/core/_breadcrumb.scss @@ -1,6 +1,6 @@ .breadcrumb { position: relative; - margin-bottom: 1.5 * $spacer; + margin: $breadcrumb-margin; @include borders($breadcrumb-borders); } diff --git a/React_Full_Project/scss/core/_callout.scss b/React_Full_Project/scss/core/_callout.scss index ddd3e22..58b76ac 100644 --- a/React_Full_Project/scss/core/_callout.scss +++ b/React_Full_Project/scss/core/_callout.scss @@ -11,10 +11,10 @@ .chart-wrapper { position: absolute; - top: 18px; + top: 10px; left: 50%; float: right; - width: 60%; + width: 50%; } } diff --git a/React_Full_Project/scss/core/_dropdown-menu-right.scss b/React_Full_Project/scss/core/_dropdown-menu-right.scss new file mode 100644 index 0000000..eec74e8 --- /dev/null +++ b/React_Full_Project/scss/core/_dropdown-menu-right.scss @@ -0,0 +1,7 @@ +// Temp fix for reactstrap +.show { + > .dropdown-menu-right { + right: 0; + left: auto; // Reset the default from `.dropdown-menu` + } +} diff --git a/React_Full_Project/scss/core/_layout.scss b/React_Full_Project/scss/core/_layout.scss index ad6dda2..263cab5 100644 --- a/React_Full_Project/scss/core/_layout.scss +++ b/React_Full_Project/scss/core/_layout.scss @@ -11,8 +11,8 @@ app-dashboard, app-root { display: flex; - flex-direction: column; min-height: 100vh; + flex-direction: column; } .app-header { @@ -26,12 +26,12 @@ app-root { .app-body { display: flex; flex-direction: row; - flex-grow: 1; overflow-x: hidden; + flex-grow: 1; .main { - flex: 1; min-width: 0; + flex: 1; } .sidebar { @@ -65,22 +65,22 @@ app-root { // Sidebar // .sidebar-hidden { - .sidebar { margin-left: - $sidebar-width; } } .sidebar-fixed { - .sidebar { position: fixed; + z-index: $zindex-sticky - 1; width: $sidebar-width; - height: 100%; + height: calc(100vh - #{$navbar-height}); + // margin-top: - $navbar-height; - .sidebar-nav { - height: calc(100vh - #{$navbar-height}); - } + // .sidebar-nav { + // height: calc(100vh - #{$navbar-height}); + // } } .main, .app-footer { @@ -88,7 +88,6 @@ app-root { } &.sidebar-hidden { - .main, .app-footer { margin-left: 0; } @@ -99,12 +98,7 @@ app-root { .sidebar { position: fixed; z-index: $zindex-sticky - 1; - height: 100%; - - - .sidebar-nav { - height: calc(100vh - #{$navbar-height}); - } + height: calc(100vh - #{$navbar-height}); } } @@ -115,14 +109,12 @@ app-root { } &.sidebar-hidden { - .sidebar { margin-left: - $sidebar-compact-width; } } &.sidebar-fixed { - .main, .app-footer { margin-left: $sidebar-compact-width; } @@ -132,7 +124,6 @@ app-root { } &.sidebar-hidden { - .main, .app-footer { margin-left: 0; } @@ -143,17 +134,20 @@ app-root { .sidebar-minimized { .sidebar { flex: 0 0 $sidebar-minimized-width; + .sidebar-header, + .sidebar-form, + .sidebar-footer { + display: none; + } } &.sidebar-hidden { - .sidebar { margin-left: - $sidebar-minimized-width; } } &.sidebar-fixed { - .main, .app-footer { margin-left: $sidebar-minimized-width; } @@ -163,7 +157,6 @@ app-root { } &.sidebar-hidden { - .main, .app-footer { margin-left: 0; } @@ -176,14 +169,12 @@ app-root { // Aside Menu // .aside-menu-hidden { - .aside-menu { margin-right: - $aside-menu-width; } } .aside-menu-fixed { - .aside-menu { position: fixed; right: 0; @@ -199,7 +190,6 @@ app-root { } &.aside-menu-hidden { - .main, .app-footer { margin-right: 0; } @@ -223,7 +213,6 @@ app-root { // Breadcrumb // .breadcrumb-fixed { - .main { $breadcrumb-height: 2 * $breadcrumb-padding-y + $font-size-base + 1.5 * $spacer; padding-top: $breadcrumb-height; @@ -283,7 +272,6 @@ app-root { // Footer // .footer-fixed { - .app-footer { position: fixed; bottom: 0; @@ -306,6 +294,9 @@ app-root { .aside-menu { transition: margin-left $layout-transition-speed, margin-right $layout-transition-speed, width $layout-transition-speed, flex $layout-transition-speed; } +.sidebar-nav { + transition: width $layout-transition-speed; +} .breadcrumb { transition: left $layout-transition-speed, right $layout-transition-speed, width $layout-transition-speed; } @@ -315,12 +306,13 @@ app-root { // @include media-breakpoint-down(md) { - - .app-header { + .app-header.navbar { position: fixed !important; z-index: $zindex-sticky; width: 100%; text-align: center; + background-color: $navbar-brand-bg; + @include borders($navbar-brand-border); .navbar-toggler { @if (lightness( $navbar-brand-bg ) > 40) { @@ -343,6 +335,7 @@ app-root { .sidebar { position: fixed; + z-index: $zindex-sticky - 1; width: $mobile-sidebar-width; height: 100%; margin-left: - $mobile-sidebar-width; @@ -368,7 +361,6 @@ app-root { } .sidebar-mobile-show { - .sidebar { width: $mobile-sidebar-width; margin-left: 0; diff --git a/React_Full_Project/scss/core/_navbar.scss b/React_Full_Project/scss/core/_navbar.scss index 8d321e8..db6ace3 100644 --- a/React_Full_Project/scss/core/_navbar.scss +++ b/React_Full_Project/scss/core/_navbar.scss @@ -1,7 +1,7 @@ .app-header.navbar { position: relative; - flex-direction: row; height: $navbar-height; + flex-direction: row; padding: 0; margin: 0; background-color: $navbar-bg; diff --git a/React_Full_Project/scss/core/_rtl.scss b/React_Full_Project/scss/core/_rtl.scss index 22bda31..28db385 100644 --- a/React_Full_Project/scss/core/_rtl.scss +++ b/React_Full_Project/scss/core/_rtl.scss @@ -44,20 +44,17 @@ // Sidebar // .sidebar-hidden { - .sidebar { margin-right: - $sidebar-width; } } .sidebar-fixed { - .main, .app-footer { margin-right: $sidebar-width; } &.sidebar-hidden { - .main, .app-footer { margin-right: 0; } @@ -70,20 +67,18 @@ } &.sidebar-hidden { - .sidebar { - margin-left: - $sidebar-minimized-width; + margin-right: - $sidebar-minimized-width; + margin-left: 0; } } &.sidebar-fixed { - .main, .app-footer { - margin-left: $sidebar-minimized-width; + margin-right: $sidebar-minimized-width; } &.sidebar-hidden { - .main, .app-footer { margin-left: 0; } @@ -95,15 +90,13 @@ // Aside Menu // .aside-menu-hidden { - .aside-menu { - // margin-right: 0; + margin-right: 0; margin-left: - $aside-menu-width; } } .aside-menu-fixed { - .aside-menu { right: auto; left: 0; @@ -115,7 +108,6 @@ } &.aside-menu-hidden { - .main, .app-footer { margin-left: 0; } @@ -138,15 +130,12 @@ // Sidebar Menu .sidebar { .sidebar-nav { - direction: ltr; - * { - direction: rtl; - } .nav { .nav-item { .nav-link { - [class^="icon-"], [class*=" icon-"] { - margin-right: -4px; + direction: rtl; + i { + margin: 0 0 0 ($sidebar-nav-link-padding-x / 2); } .badge { float: left; @@ -158,13 +147,14 @@ position: absolute; right: auto !important; left: $sidebar-nav-link-padding-x; + transform: rotate(180deg); } } } &.nav-dropdown { &.open { > .nav-link.nav-dropdown-toggle::before { - transform: rotate(90deg); + transform: rotate(270deg); } } } @@ -173,6 +163,30 @@ } } + .sidebar-minimized .sidebar { + .nav-link { + padding-right: 0; + i { + float: right; + padding: 0; + margin: 0; + } + .badge { + right: auto; + left: 15px; + } + } + .nav > .nav-dropdown { + + &:hover { + > .nav-dropdown-items { + right: $sidebar-minimized-width; + left: 0; + } + } + } + } + // Horizontal bars .horizontal-bars { @@ -249,6 +263,12 @@ border: 0 solid $border-color; border-right-width: .25rem; + @each $color, $value in $theme-colors { + &.callout-#{$color} { + border-right-color: $value; + } + } + .chart-wrapper { left: 0; float: left; @@ -258,10 +278,4 @@ .callout-default { border-right-color: $text-muted; } - - @each $color, $value in $theme-colors { - &.callout-#{$color} { - border-right-color: $value; - } - } } diff --git a/React_Full_Project/scss/core/_sidebar.scss b/React_Full_Project/scss/core/_sidebar.scss index df64989..2afeb8e 100644 --- a/React_Full_Project/scss/core/_sidebar.scss +++ b/React_Full_Project/scss/core/_sidebar.scss @@ -1,7 +1,8 @@ // scss-lint:disable NestingDepth, SelectorDepth .sidebar { + display: flex; + flex-direction: column; padding: $sidebar-padding; - overflow: hidden; color: $sidebar-color; background: $sidebar-bg; @include borders($sidebar-borders); @@ -24,31 +25,47 @@ } } + // Will be added soon + // .sidebar-brand { } + + .sidebar-header { + flex: 0 0 $sidebar-header-height; + padding: $sidebar-header-padding-y $sidebar-header-padding-x; + text-align: center; + background: $sidebar-header-bg; + } + + .sidebar-form .form-control { + color: $sidebar-form-color; + background: $sidebar-form-bg; + border: $sidebar-form-border; + + &::placeholder { + color: $sidebar-form-placeholder-color; + } + } + .sidebar-nav { position: relative; + flex: 1; overflow-x: hidden; overflow-y: auto; -ms-overflow-style: -ms-autohiding-scrollbar; @include sidebar-width($sidebar-borders, $sidebar-width); &::-webkit-scrollbar { - position: absolute; width: 10px; margin-left: -10px; -webkit-appearance: none; } - // &::-webkit-scrollbar-button { } - &::-webkit-scrollbar-track { background-color: lighten($sidebar-bg, 5%); border-right: 1px solid darken($sidebar-bg, 5%); border-left: 1px solid darken($sidebar-bg, 5%); } - // &::-webkit-scrollbar-track-piece { } - &::-webkit-scrollbar-thumb { height: 50px; background-color: darken($sidebar-bg, 10%); @@ -57,183 +74,170 @@ border-style: solid; border-width: 1px 2px; } - - // &::-webkit-scrollbar-corner { } - - // &::-webkit-resizer { } } .nav { @include sidebar-width($sidebar-borders, $sidebar-width); flex-direction: column !important; + } - .nav-title { - padding: $sidebar-nav-title-padding-y $sidebar-nav-title-padding-x; - font-size: 11px; - font-weight: 600; - color: $sidebar-nav-title-color; - text-transform: uppercase; - } + .nav-title { + padding: $sidebar-nav-title-padding-y $sidebar-nav-title-padding-x; + font-size: 11px; + font-weight: 600; + color: $sidebar-nav-title-color; + text-transform: uppercase; + } - .divider { - height: 10px; - } + .nav-divider, .divider { + height: 10px; + } + + .nav-item { + position: relative; + margin: 0; + transition: background .3s ease-in-out; + } + + .nav-dropdown-items { + max-height: 0; + padding: 0; + margin: 0; + overflow-y: hidden; + transition: max-height .3s ease-in-out; .nav-item { - position: relative; - margin: 0; - transition: background .3s ease-in-out; + padding: 0; + list-style: none; + } + } - ul { - max-height: 0; - padding: 0; - margin: 0; - overflow-y: hidden; - transition: max-height .3s ease-in-out; + .nav-link { + display: block; + padding: $sidebar-nav-link-padding-y $sidebar-nav-link-padding-x; + color: $sidebar-nav-link-color; + text-decoration: none; + background: $sidebar-nav-link-bg; + @include borders($sidebar-nav-link-borders); + @if $enable-sidebar-nav-rounded { + border-radius: $border-radius; + } - li { - padding: 0; - list-style: none; - } - } + i { + display: inline-block; + width: 20px; + margin: 0 ($sidebar-nav-link-padding-x / 2) 0 0; + font-size: 14px; + color: $sidebar-nav-link-icon-color; + text-align: center; + } - .nav-link { - display: block; - padding: $sidebar-nav-link-padding-y $sidebar-nav-link-padding-x; - color: $sidebar-nav-link-color; - text-decoration: none; - background: $sidebar-nav-link-bg; - @include borders($sidebar-nav-link-borders); - @if $enable-sidebar-nav-rounded { - border-radius: $border-radius; - } + .badge { + float: right; + margin-top: 2px; + } - &:hover { - color: $sidebar-nav-link-hover-color !important; - background: $sidebar-nav-link-hover-bg !important; - @include borders($sidebar-nav-link-hover-borders); + &.active { + color: $sidebar-nav-link-active-color; + background: $sidebar-nav-link-active-bg; + @include borders($sidebar-nav-link-active-borders); - i { - color: $sidebar-nav-link-hover-icon-color; - } - } - - &.active { - color: $sidebar-nav-link-active-color; - background: $sidebar-nav-link-active-bg; - @include borders($sidebar-nav-link-active-borders); - - i { - color: $sidebar-nav-link-active-icon-color; - } - } - - [class^="icon-"], [class*=" icon-"] { - display: inline-block; - margin-top: -4px; - vertical-align: middle; - } - - i { - width: 20px; - margin: 0 ($sidebar-nav-link-padding-x / 2) 0 0; - font-size: 14px; - color: $sidebar-nav-link-icon-color; - text-align: center; - } - - .badge { - float: right; - margin-top: 2px; - // margin-left: 10px; - } - - &.nav-dropdown-toggle { - - &::before { - position: absolute; - top: ($sidebar-nav-link-padding-y + ($font-size-base / 4)); - right: $sidebar-nav-link-padding-x; - display: block; - width: ($font-size-base); - height: ($font-size-base); - padding: 0; - font-size: $font-size-base; - line-height: ($font-size-base * 3 / 4); - text-align: center; - content: "\2039"; - transition: .3s; - } - } - } - - &.nav-dropdown { - &.open { - background: $sidebar-nav-dropdown-bg; - @include borders($sidebar-nav-dropdown-borders); - @if $enable-sidebar-nav-rounded { - border-radius: $border-radius; - } - > ul, > ol { - // display: inline; - max-height: 1000px; - } - - .nav-link { - color: $sidebar-nav-dropdown-color; - border-left: 0 !important; - } - - > .nav-link.nav-dropdown-toggle::before { - transform: rotate(-90deg); - } - - .nav-dropdown.open { - border-left: 0; - } - } - &.nt { - transition: 0s !important; - > ul, > ol { - transition: 0s !important; - } - .nav-link { - &.nav-dropdown-toggle { - - &::before { - transition: 0s !important; - } - } - } - } - } - - .nav-label { - display: block; - padding: ($sidebar-nav-link-padding-y / 8) $sidebar-nav-link-padding-x; - color: $sidebar-nav-title-color; - - &:hover { - color: $sidebar-color; - text-decoration: none; - } - - i { - width: 20px; - margin: -3px ($sidebar-nav-link-padding-x / 2) 0 0; - font-size: 10px; - color: $sidebar-nav-link-icon-color; - text-align: center; - vertical-align: middle; - } - } - - @if (lightness( $sidebar-bg ) < 40) { - .progress { - background-color: lighten($sidebar-bg, 15%) !important; - } + i { + color: $sidebar-nav-link-active-icon-color; } } + + &:hover { + color: $sidebar-nav-link-hover-color !important; + background: $sidebar-nav-link-hover-bg !important; + @include borders($sidebar-nav-link-hover-borders); + + i { + color: $sidebar-nav-link-hover-icon-color; + } + + &.nav-dropdown-toggle::before { + background-image: $sidebar-nav-dropdown-indicator-hover; + } + } + } + + // ex. Components + .nav-dropdown-toggle { + position: relative; + + &::before { + position: absolute; + top: 50%; + right: $sidebar-nav-link-padding-x; + display: block; + width: 8px; + height: 8px; + padding: 0; + margin-top: -4px; + content: ""; + background-image: $sidebar-nav-dropdown-indicator; + background-repeat: no-repeat; + background-position: center; + transition: transform .3s; + } + } + + // ex.