조민지

Merge branch 'frontend' into 'master'

Frontend



See merge request !1
Showing 123 changed files with 4343 additions and 0 deletions
1 +# Created by https://www.gitignore.io/api/node,macos,windows,intellij
2 +# Edit at https://www.gitignore.io/?templates=node,macos,windows,intellij
3 +
4 +### Intellij ###
5 +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
6 +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
7 +
8 +build
9 +build/
10 +.idea
11 +
12 +# User-specific stuff
13 +.idea
14 +.idea/**/workspace.xml
15 +.idea/**/tasks.xml
16 +.idea/**/usage.statistics.xml
17 +.idea/**/dictionaries
18 +.idea/**/shelf
19 +
20 +# Generated files
21 +.idea/**/contentModel.xml
22 +
23 +# Sensitive or high-churn files
24 +.idea/**/dataSources/
25 +.idea/**/dataSources.ids
26 +.idea/**/dataSources.local.xml
27 +.idea/**/sqlDataSources.xml
28 +.idea/**/dynamic.xml
29 +.idea/**/uiDesigner.xml
30 +.idea/**/dbnavigator.xml
31 +
32 +# Gradle
33 +.idea/**/gradle.xml
34 +.idea/**/libraries
35 +
36 +# Gradle and Maven with auto-import
37 +# When using Gradle or Maven with auto-import, you should exclude module files,
38 +# since they will be recreated, and may cause churn. Uncomment if using
39 +# auto-import.
40 +# .idea/modules.xml
41 +# .idea/*.iml
42 +# .idea/modules
43 +# *.iml
44 +# *.ipr
45 +
46 +# CMake
47 +cmake-build-*/
48 +
49 +# Mongo Explorer plugin
50 +.idea/**/mongoSettings.xml
51 +
52 +# File-based project format
53 +*.iws
54 +
55 +# IntelliJ
56 +out/
57 +
58 +# mpeltonen/sbt-idea plugin
59 +.idea_modules/
60 +
61 +# JIRA plugin
62 +atlassian-ide-plugin.xml
63 +
64 +# Cursive Clojure plugin
65 +.idea/replstate.xml
66 +
67 +# Crashlytics plugin (for Android Studio and IntelliJ)
68 +com_crashlytics_export_strings.xml
69 +crashlytics.properties
70 +crashlytics-build.properties
71 +fabric.properties
72 +
73 +# Editor-based Rest Client
74 +.idea/httpRequests
75 +
76 +# Android studio 3.1+ serialized cache file
77 +.idea/caches/build_file_checksums.ser
78 +
79 +### Intellij Patch ###
80 +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
81 +
82 +# *.iml
83 +# modules.xml
84 +# .idea/misc.xml
85 +# *.ipr
86 +
87 +# Sonarlint plugin
88 +.idea/**/sonarlint/
89 +
90 +# SonarQube Plugin
91 +.idea/**/sonarIssues.xml
92 +
93 +# Markdown Navigator plugin
94 +.idea/**/markdown-navigator.xml
95 +.idea/**/markdown-navigator/
96 +
97 +### macOS ###
98 +# General
99 +.DS_Store
100 +.AppleDouble
101 +.LSOverride
102 +
103 +# Icon must end with two \r
104 +Icon
105 +
106 +# Thumbnails
107 +._*
108 +
109 +# Files that might appear in the root of a volume
110 +.DocumentRevisions-V100
111 +.fseventsd
112 +.Spotlight-V100
113 +.TemporaryItems
114 +.Trashes
115 +.VolumeIcon.icns
116 +.com.apple.timemachine.donotpresent
117 +
118 +# Directories potentially created on remote AFP share
119 +.AppleDB
120 +.AppleDesktop
121 +Network Trash Folder
122 +Temporary Items
123 +.apdisk
124 +
125 +### Node ###
126 +# Logs
127 +logs
128 +*.log
129 +npm-debug.log*
130 +yarn-debug.log*
131 +yarn-error.log*
132 +lerna-debug.log*
133 +
134 +# Diagnostic reports (https://nodejs.org/api/report.html)
135 +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
136 +
137 +# Runtime data
138 +pids
139 +*.pid
140 +*.seed
141 +*.pid.lock
142 +
143 +# Directory for instrumented libs generated by jscoverage/JSCover
144 +lib-cov
145 +
146 +# Coverage directory used by tools like istanbul
147 +coverage
148 +*.lcov
149 +
150 +# nyc test coverage
151 +.nyc_output
152 +
153 +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
154 +.grunt
155 +
156 +# Bower dependency directory (https://bower.io/)
157 +bower_components
158 +
159 +# node-waf configuration
160 +.lock-wscript
161 +
162 +# Compiled binary addons (https://nodejs.org/api/addons.html)
163 +build/Release
164 +
165 +# Dependency directories
166 +node_modules/
167 +jspm_packages/
168 +
169 +# TypeScript v1 declaration files
170 +typings/
171 +
172 +# TypeScript cache
173 +*.tsbuildinfo
174 +
175 +# Optional npm cache directory
176 +.npm
177 +
178 +# Optional eslint cache
179 +.eslintcache
180 +
181 +# Optional REPL history
182 +.node_repl_history
183 +
184 +# Output of 'npm pack'
185 +*.tgz
186 +
187 +# Yarn Integrity file
188 +.yarn-integrity
189 +
190 +# dotenv environment variables file
191 +.env
192 +.env.test
193 +
194 +# parcel-bundler cache (https://parceljs.org/)
195 +.cache
196 +
197 +# next.js build output
198 +.next
199 +
200 +# nuxt.js build output
201 +.nuxt
202 +
203 +# rollup.js default build output
204 +dist/
205 +
206 +# Uncomment the public line if your project uses Gatsby
207 +# https://nextjs.org/blog/next-9-1#public-directory-support
208 +# https://create-react-app.dev/docs/using-the-public-folder/#docsNav
209 +# public
210 +
211 +# Storybook build outputs
212 +.out
213 +.storybook-out
214 +
215 +# vuepress build output
216 +.vuepress/dist
217 +
218 +# Serverless directories
219 +.serverless/
220 +
221 +# FuseBox cache
222 +.fusebox/
223 +
224 +# DynamoDB Local files
225 +.dynamodb/
226 +
227 +# Temporary folders
228 +tmp/
229 +temp/
230 +
231 +### Windows ###
232 +# Windows thumbnail cache files
233 +Thumbs.db
234 +Thumbs.db:encryptable
235 +ehthumbs.db
236 +ehthumbs_vista.db
237 +
238 +# Dump file
239 +*.stackdump
240 +
241 +# Folder config file
242 +[Dd]esktop.ini
243 +
244 +# Recycle Bin used on file shares
245 +$RECYCLE.BIN/
246 +
247 +# Windows Installer files
248 +*.cab
249 +*.msi
250 +*.msix
251 +*.msm
252 +*.msp
253 +
254 +# Windows shortcuts
255 +*.lnk
256 +
257 +# build
258 +dist/
259 +zip/
260 +public/
261 +
262 +# End of https://www.gitignore.io/api/node,macos,windows,intellij
1 +# 공유 킥보드 서비스 이슈 관리 시스템 프론트엔드
2 +## 사용 기술
3 +- React
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "compilerOptions": {
3 + "baseUrl": "src",
4 + "paths": {
5 + "*": ["src/*"]
6 + }
7 + }
8 +}
This diff could not be displayed because it is too large.
1 +{
2 + "name": "light-bootstrap-dashboard-react",
3 + "version": "1.3.0",
4 + "private": true,
5 + "dependencies": {
6 + "bootstrap": "3.3.7",
7 + "chartist": "0.10.1",
8 + "moment": "^2.26.0",
9 + "node-sass": "4.12.0",
10 + "react": "16.8.6",
11 + "react-bootstrap": "0.32.4",
12 + "react-chartist": "0.13.3",
13 + "react-dom": "16.8.6",
14 + "react-google-maps": "9.4.5",
15 + "react-moment": "^0.9.7",
16 + "react-notification-system": "0.2.17",
17 + "react-router": "5.0.0",
18 + "react-router-dom": "5.0.0",
19 + "react-scripts": "3.0.0",
20 + "react-toggle": "4.0.2"
21 + },
22 + "devDependencies": {
23 + "@types/googlemaps": "3.30.19",
24 + "@types/markerclustererplus": "2.1.33",
25 + "@types/react": "16.8.13",
26 + "react-dimensions": "^1.3.1",
27 + "typescript": "3.4.3"
28 + },
29 + "scripts": {
30 + "start": "react-scripts start",
31 + "build": "react-scripts build",
32 + "test": "react-scripts test --env=jsdom",
33 + "eject": "react-scripts eject",
34 + "install:clean": "rm -rf node_modules/ && rm -rf package-lock.json && npm install && npm start",
35 + "compile-sass": "node-sass src/assets/sass/light-bootstrap-dashboard-react.scss src/assets/css/light-bootstrap-dashboard-react.css",
36 + "minify-sass": "node-sass src/assets/sass/light-bootstrap-dashboard-react.scss src/assets/css/light-bootstrap-dashboard-react.min.css --output-style compressed",
37 + "map-sass": "node-sass src/assets/sass/light-bootstrap-dashboard-react.scss src/assets/css/light-bootstrap-dashboard-react.css --source-map true"
38 + },
39 + "browserslist": {
40 + "production": [
41 + ">0.2%",
42 + "not dead",
43 + "not op_mini all"
44 + ],
45 + "development": [
46 + "last 1 chrome version",
47 + "last 1 firefox version",
48 + "last 1 safari version"
49 + ]
50 + }
51 +}
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
No preview for this file type
This diff could not be displayed because it is too large.
No preview for this file type
This diff could not be displayed because it is too large.
1 +export const empty = require('./empty.png');
2 +export const mate_logo = require('./mate_logo.png');
3 +export const search_user = require('./search_user.png');
1 +.alert{
2 + border: 0;
3 + border-radius: 0;
4 + color: #FFFFFF;
5 + padding: 10px 15px;
6 + font-size: 14px;
7 +
8 + .container &{
9 + border-radius: 4px;
10 +
11 + }
12 + .navbar &{
13 + border-radius: 0;
14 + left: 0;
15 + position: absolute;
16 + right: 0;
17 + top: 85px;
18 + width: 100%;
19 + z-index: 3;
20 + }
21 + .navbar:not(.navbar-transparent) &{
22 + top: 70px;
23 + }
24 +
25 + span[data-notify="icon"]{
26 + font-size: 30px;
27 + display: block;
28 + left: 15px;
29 + position: absolute;
30 + top: 50%;
31 + margin-top: -15px;
32 + }
33 +
34 + button.close{
35 + position: absolute;
36 + right: 10px;
37 + top: 50%;
38 + margin-top: -13px;
39 + z-index: 1033;
40 + background-color: #FFFFFF;
41 + display: block;
42 + border-radius: 50%;
43 + opacity: .4;
44 + line-height: 20px;
45 + font-size: 12px;
46 + width: 25px;
47 + height: 25px;
48 + outline: 0 !important;
49 + text-align: center;
50 + padding: 3px;
51 + font-weight: 300;
52 +
53 + &:hover{
54 + opacity: .55;
55 + }
56 + }
57 +
58 + .close ~ span{
59 + display: block;
60 + max-width: 89%;
61 + }
62 +
63 + &[data-notify="container"]{
64 + padding: 10px 10px 10px 20px;
65 + border-radius: $border-radius-base;
66 + }
67 +
68 + &.alert-with-icon{
69 + padding-left: 65px;
70 + }
71 + a, a:hover, a:focus{
72 + text-decoration: underline;
73 + color: white;
74 + }
75 +}
76 +.alert-info{
77 + background-color: $azure-navbar;
78 +}
79 +.alert-success {
80 + background-color: $green-navbar;
81 +}
82 +.alert-warning {
83 + background-color: $orange-navbar;
84 +}
85 +.alert-danger {
86 + background-color: $red-navbar;
87 +}
1 +.btn{
2 + border-width: $border-thick;
3 + background-color: $transparent-bg;
4 + font-weight: $font-weight-normal;
5 +
6 + @include opacity(.8);
7 + padding: $padding-base-vertical $padding-base-horizontal;
8 +
9 + @include btn-styles($default-color, $default-states-color);
10 +
11 + &:hover,
12 + &:focus{
13 + @include opacity(1);
14 + outline: 0 !important;
15 + }
16 + &:active,
17 + &.active,
18 + .open > &.dropdown-toggle {
19 + @include box-shadow(none);
20 + outline: 0 !important;
21 + }
22 +
23 + &.btn-icon{
24 + padding: $padding-base-vertical;
25 + }
26 +
27 +}
28 +
29 +// Apply the mixin to the buttons
30 +//.btn-default { @include btn-styles($default-color, $default-states-color); }
31 +.btn-primary { @include btn-styles($primary-color, $primary-states-color); }
32 +.btn-success { @include btn-styles($success-color, $success-states-color); }
33 +.btn-info { @include btn-styles($info-color, $info-states-color); }
34 +.btn-warning { @include btn-styles($warning-color, $warning-states-color); }
35 +.btn-danger { @include btn-styles($danger-color, $danger-states-color); }
36 +.btn-neutral {
37 + @include btn-styles($white-color, $white-color);
38 +
39 + &:active,
40 + &.active,
41 + .open > &.dropdown-toggle{
42 + background-color: $white-color;
43 + color: $default-color;
44 + }
45 +
46 + &.btn-fill,
47 + &.btn-fill:hover,
48 + &.btn-fill:focus{
49 + color: $default-color;
50 + }
51 +
52 + &.btn-simple:active,
53 + &.btn-simple.active{
54 + background-color: transparent;
55 + }
56 +}
57 +
58 +.btn{
59 + &:disabled,
60 + &[disabled],
61 + &.disabled{
62 + @include opacity(.5);
63 + }
64 +}
65 +.btn-round{
66 + border-width: $border-thin;
67 + border-radius: $btn-round-radius !important;
68 + padding: $padding-round-vertical $padding-round-horizontal;
69 +
70 + &.btn-icon{
71 + padding: $padding-round-vertical;
72 + }
73 +}
74 +.btn-simple{
75 + border: $none;
76 + font-size: $font-size-medium;
77 + padding: $padding-base-vertical $padding-base-horizontal;
78 +
79 + &.btn-icon{
80 + padding: $padding-base-vertical;
81 + }
82 +}
83 +.btn-lg{
84 + @include btn-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $border-radius-large);
85 + font-weight: $font-weight-normal;
86 +}
87 +.btn-sm{
88 + @include btn-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $border-radius-small);
89 +}
90 +.btn-xs {
91 + @include btn-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $border-radius-small);
92 +}
93 +.btn-wd {
94 + min-width: 140px;
95 +}
96 +
97 +.btn-group.select{
98 + width: 100%;
99 +}
100 +.btn-group.select .btn{
101 + text-align: left;
102 +}
103 +.btn-group.select .caret{
104 + position: absolute;
105 + top: 50%;
106 + margin-top: -1px;
107 + right: 8px;
108 +}
1 +.card{
2 + border-radius: $border-radius-base;
3 + box-shadow: 0 1px 2px rgba(0,0,0,.05),0 0 0 1px rgba(63,63,68,.1);
4 + background-color: #FFFFFF;
5 + margin-bottom: 30px;
6 +
7 + .image{
8 + width: 100%;
9 + overflow: hidden;
10 + height: 260px;
11 + border-radius: $border-radius-base $border-radius-base 0 0;
12 + position: relative;
13 + -webkit-transform-style: preserve-3d;
14 + -moz-transform-style: preserve-3d;
15 + transform-style: preserve-3d;
16 +
17 + img {
18 + width: 100%;
19 + }
20 + }
21 + .filter{
22 + position: absolute;
23 + z-index: 2;
24 + background-color: rgba(0,0,0,.68);
25 + top: 0;
26 + left: 0;
27 + width: 100%;
28 + height: 100%;
29 + text-align: center;
30 +
31 + @include opacity(0);
32 +
33 + .btn{
34 + @include vertical-align();
35 + }
36 + }
37 + &:hover .filter{
38 + @include opacity(1);
39 + }
40 + .btn-hover{
41 + @include opacity(0);
42 + }
43 + &:hover .btn-hover{
44 + @include opacity(1);
45 + }
46 + .content{
47 + padding: 15px 15px 10px 15px;
48 + }
49 + .header{
50 + padding: 15px 15px 0;
51 + }
52 + .category,
53 + label{
54 + font-size: $font-size-base;
55 + font-weight: $font-weight-normal;
56 + color: $dark-gray;
57 + margin-bottom: 0px;
58 +
59 + i{
60 + font-size: $font-paragraph;
61 + }
62 + }
63 +
64 + label{
65 + font-size: $font-size-small;
66 + margin-bottom: 5px;
67 + text-transform: uppercase;
68 + }
69 +
70 + .title{
71 + margin: $none;
72 + color: $black-color;
73 + font-weight: $font-weight-light;
74 + }
75 + .avatar{
76 + width: 30px;
77 + height: 30px;
78 + overflow: hidden;
79 + border-radius: 50%;
80 + margin-right: 5px;
81 + }
82 + .description{
83 + font-size: $font-size-base;
84 + color: #333;
85 + }
86 + .footer{
87 + padding: 0;
88 + background-color: $transparent-bg;
89 + line-height: 30px;
90 +
91 + .legend{
92 + padding: 5px 0;
93 + }
94 +
95 + hr{
96 + margin-top: 5px;
97 + margin-bottom: 5px;
98 + }
99 + }
100 + .stats{
101 + color: #a9a9a9;
102 + }
103 + .footer div{
104 + display: inline-block;
105 + }
106 +
107 + .author{
108 + font-size: $font-size-small;
109 + font-weight: $font-weight-bold;
110 + text-transform: uppercase;
111 + }
112 + .author i{
113 + font-size: $font-size-base;
114 + }
115 + h6{
116 + font-size: $font-size-small;
117 + margin: 0;
118 + }
119 + &.card-separator:after{
120 + height: 100%;
121 + right: -15px;
122 + top: 0;
123 + width: 1px;
124 + background-color: $medium-gray;
125 + content: "";
126 + position: absolute;
127 + }
128 +
129 + .ct-chart{
130 + margin: 30px 0 30px;
131 + height: 245px;
132 + }
133 +
134 + .table{
135 + tbody td:first-child,
136 + thead th:first-child{
137 + padding-left: 15px;
138 + }
139 +
140 + tbody td:last-child,
141 + thead th:last-child{
142 + padding-right: 15px;
143 + }
144 + }
145 +
146 + .alert{
147 + border-radius: $border-radius-base;
148 + position: relative;
149 +
150 + &.alert-with-icon{
151 + padding-left: 65px;
152 + }
153 + }
154 +}
155 +.card-user{
156 + .image{
157 + height: 110px;
158 + }
159 + .image-plain{
160 + height: 0;
161 + margin-top: 110px;
162 + }
163 + .author{
164 + text-align: center;
165 + text-transform: none;
166 + margin-top: -70px;
167 + }
168 + .avatar{
169 + width: 124px;
170 + height: 124px;
171 + border: 5px solid #FFFFFF;
172 + position: relative;
173 + margin-bottom: 15px;
174 +
175 + &.border-gray{
176 + border-color: #EEEEEE;
177 + }
178 + }
179 + .title{
180 + line-height: 24px;
181 + }
182 + .content{
183 + min-height: 240px;
184 + }
185 +}
186 +
187 +.card-user,
188 +.card-price{
189 + .footer{
190 + padding: 5px 15px 10px;
191 + }
192 + hr{
193 + margin: 5px 15px;
194 + }
195 +}
196 +.card-plain{
197 + background-color: transparent;
198 + box-shadow: none;
199 + border-radius: 0;
200 +
201 + .image{
202 + border-radius: 4px;
203 + }
204 +}
205 +
206 +.card-stats{
207 + .icon-big{
208 + font-size: 3em;
209 + min-height: 64px;
210 + i{
211 + font-weight: bold;
212 + line-height: 59px;
213 + }
214 + }
215 + .numbers{
216 + font-size: 2em;
217 + text-align: right;
218 + p {
219 + margin: 0;
220 + }
221 + }
222 +}
1 +@mixin ct-responsive-svg-container($width: 100%, $ratio: $ct-container-ratio) {
2 + display: block;
3 + position: relative;
4 + width: $width;
5 +
6 + &:before {
7 + display: block;
8 + float: left;
9 + content: "";
10 + width: 0;
11 + height: 0;
12 + padding-bottom: $ratio * 100%;
13 + }
14 +
15 + &:after {
16 + content: "";
17 + display: table;
18 + clear: both;
19 + }
20 +
21 + > svg {
22 + display: block;
23 + position: absolute;
24 + top: 0;
25 + left: 0;
26 + }
27 +}
28 +
29 +@mixin ct-align-justify($ct-text-align: $ct-text-align, $ct-text-justify: $ct-text-justify) {
30 + -webkit-box-align: $ct-text-align;
31 + -webkit-align-items: $ct-text-align;
32 + -ms-flex-align: $ct-text-align;
33 + align-items: $ct-text-align;
34 + -webkit-box-pack: $ct-text-justify;
35 + -webkit-justify-content: $ct-text-justify;
36 + -ms-flex-pack: $ct-text-justify;
37 + justify-content: $ct-text-justify;
38 + // Fallback to text-align for non-flex browsers
39 + @if($ct-text-justify == 'flex-start') {
40 + text-align: left;
41 + } @else if ($ct-text-justify == 'flex-end') {
42 + text-align: right;
43 + } @else {
44 + text-align: center;
45 + }
46 +}
47 +
48 +@mixin ct-flex() {
49 + // Fallback to block
50 + display: block;
51 + display: -webkit-box;
52 + display: -moz-box;
53 + display: -ms-flexbox;
54 + display: -webkit-flex;
55 + display: flex;
56 +}
57 +
58 +@mixin ct-chart-label($ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-text-line-height: $ct-text-line-height) {
59 + fill: $ct-text-color;
60 + color: $ct-text-color;
61 + font-size: $ct-text-size;
62 + line-height: $ct-text-line-height;
63 +}
64 +
65 +@mixin ct-chart-grid($ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray) {
66 + stroke: $ct-grid-color;
67 + stroke-width: $ct-grid-width;
68 +
69 + @if ($ct-grid-dasharray) {
70 + stroke-dasharray: $ct-grid-dasharray;
71 + }
72 +}
73 +
74 +@mixin ct-chart-point($ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape) {
75 + stroke-width: $ct-point-size;
76 + stroke-linecap: $ct-point-shape;
77 +}
78 +
79 +@mixin ct-chart-line($ct-line-width: $ct-line-width, $ct-line-dasharray: $ct-line-dasharray) {
80 + fill: none;
81 + stroke-width: $ct-line-width;
82 +
83 + @if ($ct-line-dasharray) {
84 + stroke-dasharray: $ct-line-dasharray;
85 + }
86 +}
87 +
88 +@mixin ct-chart-area($ct-area-opacity: $ct-area-opacity) {
89 + stroke: none;
90 + fill-opacity: $ct-area-opacity;
91 +}
92 +
93 +@mixin ct-chart-bar($ct-bar-width: $ct-bar-width) {
94 + fill: none;
95 + stroke-width: $ct-bar-width;
96 +}
97 +
98 +@mixin ct-chart-donut($ct-donut-width: $ct-donut-width) {
99 + fill: none;
100 + stroke-width: $ct-donut-width;
101 +}
102 +
103 +@mixin ct-chart-series-color($color) {
104 + .#{$ct-class-point}, .#{$ct-class-line}, .#{$ct-class-bar}, .#{$ct-class-slice-donut} {
105 + stroke: $color;
106 + }
107 +
108 + .#{$ct-class-slice-pie}, .#{$ct-class-area} {
109 + fill: $color;
110 + }
111 +}
112 +
113 +@mixin ct-chart($ct-container-ratio: $ct-container-ratio, $ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray, $ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape, $ct-line-width: $ct-line-width, $ct-bar-width: $ct-bar-width, $ct-donut-width: $ct-donut-width, $ct-series-names: $ct-series-names, $ct-series-colors: $ct-series-colors) {
114 +
115 + .#{$ct-class-label} {
116 + @include ct-chart-label($ct-text-color, $ct-text-size);
117 + }
118 +
119 + .#{$ct-class-chart-line} .#{$ct-class-label},
120 + .#{$ct-class-chart-bar} .#{$ct-class-label} {
121 + @include ct-flex();
122 + }
123 +
124 + .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} {
125 + @include ct-align-justify(flex-end, flex-start);
126 + // Fallback for browsers that don't support foreignObjects
127 + text-anchor: start;
128 + }
129 +
130 + .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} {
131 + @include ct-align-justify(flex-start, flex-start);
132 + // Fallback for browsers that don't support foreignObjects
133 + text-anchor: start;
134 + }
135 +
136 + .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} {
137 + @include ct-align-justify(flex-end, flex-end);
138 + // Fallback for browsers that don't support foreignObjects
139 + text-anchor: end;
140 + }
141 +
142 + .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} {
143 + @include ct-align-justify(flex-end, flex-start);
144 + // Fallback for browsers that don't support foreignObjects
145 + text-anchor: start;
146 + }
147 +
148 + .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} {
149 + @include ct-align-justify(flex-end, center);
150 + // Fallback for browsers that don't support foreignObjects
151 + text-anchor: start;
152 + }
153 +
154 + .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} {
155 + @include ct-align-justify(flex-start, center);
156 + // Fallback for browsers that don't support foreignObjects
157 + text-anchor: start;
158 + }
159 +
160 + .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} {
161 + @include ct-align-justify(flex-end, flex-start);
162 + // Fallback for browsers that don't support foreignObjects
163 + text-anchor: start;
164 + }
165 +
166 + .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} {
167 + @include ct-align-justify(flex-start, flex-start);
168 + // Fallback for browsers that don't support foreignObjects
169 + text-anchor: start;
170 + }
171 +
172 + .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} {
173 + //@include ct-chart-label($ct-text-color, $ct-text-size, center, $ct-vertical-text-justify);
174 + @include ct-align-justify(center, flex-end);
175 + // Fallback for browsers that don't support foreignObjects
176 + text-anchor: end;
177 + }
178 +
179 + .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} {
180 + @include ct-align-justify(center, flex-start);
181 + // Fallback for browsers that don't support foreignObjects
182 + text-anchor: end;
183 + }
184 +
185 + .#{$ct-class-grid} {
186 + @include ct-chart-grid($ct-grid-color, $ct-grid-width, $ct-grid-dasharray);
187 + }
188 +
189 + .#{$ct-class-point} {
190 + @include ct-chart-point($ct-point-size, $ct-point-shape);
191 + }
192 +
193 + .#{$ct-class-line} {
194 + @include ct-chart-line($ct-line-width);
195 + }
196 +
197 + .#{$ct-class-area} {
198 + @include ct-chart-area();
199 + }
200 +
201 + .#{$ct-class-bar} {
202 + @include ct-chart-bar($ct-bar-width);
203 + }
204 +
205 + .#{$ct-class-slice-donut} {
206 + @include ct-chart-donut($ct-donut-width);
207 + }
208 +
209 + @if $ct-include-colored-series {
210 + @for $i from 0 to length($ct-series-names) {
211 + .#{$ct-class-series}-#{nth($ct-series-names, $i + 1)} {
212 + $color: nth($ct-series-colors, $i + 1);
213 +
214 + @include ct-chart-series-color($color);
215 + }
216 + }
217 + }
218 +}
219 +
220 +@if $ct-include-classes {
221 + @include ct-chart();
222 +
223 + @if $ct-include-alternative-responsive-containers {
224 + @for $i from 0 to length($ct-scales-names) {
225 + .#{nth($ct-scales-names, $i + 1)} {
226 + @include ct-responsive-svg-container($ratio: nth($ct-scales, $i + 1));
227 + }
228 + }
229 + }
230 +}
...\ No newline at end of file ...\ No newline at end of file
1 +/* Checkbox and radio */
2 +.checkbox,
3 +.radio {
4 + margin-bottom: 12px;
5 +}
6 +
7 +.checkbox label,
8 +.radio label {
9 + display: inline-block;
10 + position: relative;
11 + cursor: pointer;
12 + padding-left: 24px;
13 + margin-bottom: 0;
14 +}
15 +
16 +.checkbox label::before,
17 +.checkbox label::after{
18 + font-family: 'FontAwesome';
19 + content: "\f096";
20 + display: inline-block;
21 + position: absolute;
22 + width: 20px;
23 + height: 20px;
24 + left: 0;
25 + cursor: pointer;
26 + line-height: 19px;
27 + font-size: 20px;
28 + -webkit-font-smoothing: antialiased;
29 + -moz-osx-font-smoothing: grayscale;
30 + top: 1px;
31 + color: $medium-gray;
32 + transition: color 0.2s linear;
33 + padding: 1px;
34 +}
35 +
36 + .checkbox label::after{
37 + content: "";
38 + text-align: center;
39 + opacity: 1;
40 + left: 1px;
41 + color: $medium-gray;
42 +}
43 +
44 +.checkbox input[type="checkbox"],
45 +.radio input[type="radio"] {
46 + opacity: 0;
47 + margin-left: 0;
48 +}
49 +
50 +.checkbox input[type="checkbox"]:checked + label::after{
51 + font-family: 'FontAwesome';
52 + content: "\f046";
53 +}
54 +
55 +.checkbox input[type="checkbox"]:checked + label::after{
56 + color: $info-color;
57 +}
58 +
59 +.checkbox input[type="checkbox"]:checked + label::before{
60 + opacity: 0;
61 +}
62 +
63 +.checkbox input[type="checkbox"]:disabled + label,
64 +.radio input[type="radio"]:disabled + label,
65 +.checkbox input[type="checkbox"]:disabled:checked + label::after {
66 + color: $medium-gray;
67 +}
68 +.checkbox input[type="checkbox"]:disabled + label::before,
69 +.checkbox input[type="checkbox"]:disabled + label::after{
70 + cursor: not-allowed;
71 +}
72 +
73 +.checkbox input[type="checkbox"]:disabled + label,
74 +.radio input[type="radio"]:disabled + label{
75 + cursor: not-allowed;
76 +}
77 +
78 +.checkbox.checkbox-circle label::before {
79 + border-radius: 50%;
80 +}
81 +
82 +.checkbox.checkbox-inline {
83 + padding-left:0;
84 +}
85 +
86 +.checkbox-primary input[type="checkbox"]:checked + label::before {
87 + background-color: #428bca;
88 + border-color: #428bca;
89 +}
90 +
91 +.checkbox-primary input[type="checkbox"]:checked + label::after {
92 + color: #fff;
93 +}
94 +
95 +.checkbox-danger input[type="checkbox"]:checked + label::before {
96 + background-color: #d9534f;
97 + border-color: #d9534f;
98 +}
99 +
100 +.checkbox-danger input[type="checkbox"]:checked + label::after {
101 + color: #fff;
102 +}
103 +
104 +.checkbox-info input[type="checkbox"]:checked + label::before {
105 + background-color: #5bc0de;
106 + border-color: #5bc0de;
107 +}
108 +
109 +.checkbox-info input[type="checkbox"]:checked + label::after {
110 + color: #fff;
111 +}
112 +
113 +.checkbox-warning input[type="checkbox"]:checked + label::before {
114 + background-color: #f0ad4e;
115 + border-color: #f0ad4e;
116 +}
117 +
118 +.checkbox-warning input[type="checkbox"]:checked + label::after {
119 + color: #fff;
120 +}
121 +
122 +.checkbox-success input[type="checkbox"]:checked + label::before {
123 + background-color: #5cb85c;
124 + border-color: #5cb85c;
125 +}
126 +
127 +.checkbox-success input[type="checkbox"]:checked + label::after {
128 + color: #fff;
129 +}
130 +
131 +.radio label::before,
132 +.radio label::after {
133 + font-family: 'FontAwesome';
134 + content: "\f10c";
135 + font-size: 20px;
136 + height: 20px;
137 + width: 20px;
138 + -webkit-font-smoothing: antialiased;
139 + -moz-osx-font-smoothing: grayscale;
140 + display: inline-block;
141 + position: absolute;
142 + line-height: 19px;
143 + left: 0;
144 + top: 0;
145 + color: $medium-gray;
146 + padding: 1px;
147 + transition: color 0.2s linear;
148 +}
149 +
150 +.radio input[type="radio"]:checked + label::after {
151 + font-family: 'FontAwesome';
152 + content: "\f192";
153 + color: $medium-gray;
154 +}
155 +
156 +.radio input[type="radio"]:checked + label::after{
157 + color: $info-color;
158 +}
159 +
160 +
161 +.radio input[type="radio"]:disabled + label {
162 + color: #ddd;
163 +}
164 +
165 +.radio input[type="radio"]:disabled + label::before,
166 +.radio input[type="radio"]:disabled + label::after {
167 + color: #ddd;
168 +}
169 +
170 +.radio.radio-inline {
171 + margin-top: 0;
172 +}
173 +
174 +
175 +
176 +
177 +/**
178 + * bootstrap-switch - Turn checkboxes and radio buttons into toggle switches.
179 + *
180 + * @version v3.3.4
181 + * @homepage https://bttstrp.github.io/bootstrap-switch
182 + * @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu)
183 + * @license Apache-2.0
184 + */
185 +
186 +.bootstrap-switch {
187 + display: inline-block;
188 + direction: ltr;
189 + cursor: pointer;
190 + border-radius: 4px;
191 + border: 1px solid;
192 + border-color: #ccc;
193 + position: relative;
194 + text-align: left;
195 + overflow: hidden;
196 + line-height: 8px;
197 + z-index: 0;
198 + -webkit-user-select: none;
199 + -moz-user-select: none;
200 + -ms-user-select: none;
201 + user-select: none;
202 + vertical-align: middle;
203 + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
204 + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
205 + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
206 +}
207 +.bootstrap-switch .bootstrap-switch-container {
208 + display: inline-block;
209 + top: 0;
210 + border-radius: 4px;
211 + -webkit-transform: translate3d(0, 0, 0);
212 + transform: translate3d(0, 0, 0);
213 +}
214 +.bootstrap-switch .bootstrap-switch-handle-on,
215 +.bootstrap-switch .bootstrap-switch-handle-off,
216 +.bootstrap-switch .bootstrap-switch-label {
217 + -webkit-box-sizing: border-box;
218 + -moz-box-sizing: border-box;
219 + box-sizing: border-box;
220 + cursor: pointer;
221 + display: table-cell;
222 + vertical-align: middle;
223 + padding: 6px 12px;
224 + font-size: 14px;
225 + line-height: 20px;
226 +}
227 +.bootstrap-switch .bootstrap-switch-handle-on,
228 +.bootstrap-switch .bootstrap-switch-handle-off {
229 + text-align: center;
230 + z-index: 1;
231 +}
232 +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,
233 +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary {
234 + color: #fff;
235 + background: #337ab7;
236 +}
237 +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info,
238 +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info {
239 + color: #fff;
240 + background: #5bc0de;
241 +}
242 +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,
243 +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success {
244 + color: #fff;
245 + background: #5cb85c;
246 +}
247 +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning,
248 +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning {
249 + background: #f0ad4e;
250 + color: #fff;
251 +}
252 +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger,
253 +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger {
254 + color: #fff;
255 + background: #d9534f;
256 +}
257 +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default,
258 +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {
259 + color: #000;
260 + background: #eeeeee;
261 +}
262 +.bootstrap-switch .bootstrap-switch-label {
263 + text-align: center;
264 + margin-top: -1px;
265 + margin-bottom: -1px;
266 + z-index: 100;
267 + color: #333;
268 + background: #fff;
269 +}
270 +.bootstrap-switch span::before {
271 + content: "\200b";
272 +}
273 +.bootstrap-switch .bootstrap-switch-handle-on {
274 + border-bottom-left-radius: 3px;
275 + border-top-left-radius: 3px;
276 +}
277 +.bootstrap-switch .bootstrap-switch-handle-off {
278 + border-bottom-right-radius: 3px;
279 + border-top-right-radius: 3px;
280 +}
281 +.bootstrap-switch input[type='radio'],
282 +.bootstrap-switch input[type='checkbox'] {
283 + position: absolute !important;
284 + top: 0;
285 + left: 0;
286 + margin: 0;
287 + z-index: -1;
288 + opacity: 0;
289 + filter: alpha(opacity=0);
290 + visibility: hidden;
291 +}
292 +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,
293 +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,
294 +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label {
295 + padding: 1px 5px;
296 + font-size: 12px;
297 + line-height: 1.5;
298 +}
299 +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,
300 +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,
301 +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label {
302 + padding: 5px 10px;
303 + font-size: 12px;
304 + line-height: 1.5;
305 +}
306 +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,
307 +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,
308 +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label {
309 + padding: 6px 16px;
310 + font-size: 18px;
311 + line-height: 1.3333333;
312 +}
313 +.bootstrap-switch.bootstrap-switch-disabled,
314 +.bootstrap-switch.bootstrap-switch-readonly,
315 +.bootstrap-switch.bootstrap-switch-indeterminate {
316 + cursor: default !important;
317 +}
318 +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,
319 +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,
320 +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,
321 +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,
322 +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,
323 +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,
324 +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,
325 +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label,
326 +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label {
327 + opacity: 0.5;
328 + filter: alpha(opacity=50);
329 + cursor: default !important;
330 +}
331 +.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container {
332 + -webkit-transition: margin-left 0.5s;
333 + -o-transition: margin-left 0.5s;
334 + transition: margin-left 0.5s;
335 +}
336 +.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on {
337 + border-bottom-left-radius: 0;
338 + border-top-left-radius: 0;
339 + border-bottom-right-radius: 3px;
340 + border-top-right-radius: 3px;
341 +}
342 +.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off {
343 + border-bottom-right-radius: 0;
344 + border-top-right-radius: 0;
345 + border-bottom-left-radius: 3px;
346 + border-top-left-radius: 3px;
347 +}
348 +.bootstrap-switch.bootstrap-switch-focused {
349 + border-color: #66afe9;
350 + outline: 0;
351 + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
352 + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
353 +}
354 +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label,
355 +.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label {
356 + border-bottom-right-radius: 3px;
357 + border-top-right-radius: 3px;
358 +}
359 +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label,
360 +.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label {
361 + border-bottom-left-radius: 3px;
362 + border-top-left-radius: 3px;
363 +}
1 +.dropdown-menu{
2 + visibility: hidden;
3 + margin: 0;
4 + padding: 0;
5 + border-radius: $border-radius-extreme;
6 + display: block;
7 + z-index: 9000;
8 + position: absolute;
9 +
10 + @include opacity(0);
11 + @include box-shadow($dropdown-shadow);
12 +
13 + .open &{
14 + @include opacity(1);
15 + visibility: visible;
16 + }
17 + .select &{
18 + border-radius: $border-radius-bottom;
19 + @include box-shadow(none);
20 + @include transform-origin($select-coordinates);
21 + @include transform-scale(1);
22 + @include transition($fast-transition-time, $transition-linear);
23 + margin-top: -20px;
24 + }
25 + .select.open &{
26 + margin-top: -1px;
27 + }
28 +
29 + > li > a {
30 + padding: $padding-base-vertical $padding-base-horizontal;
31 + color: #333333;
32 +
33 + img{
34 + margin-top: -3px;
35 + }
36 + }
37 + > li > a:focus{
38 + outline: 0 !important;
39 + }
40 +
41 + .btn-group.select &{
42 + min-width: 100%;
43 + }
44 +
45 + > li:first-child > a{
46 + border-top-left-radius: $border-radius-extreme;
47 + border-top-right-radius: $border-radius-extreme;
48 + }
49 +
50 + > li:last-child > a{
51 + border-bottom-left-radius: $border-radius-extreme;
52 + border-bottom-right-radius: $border-radius-extreme;
53 + }
54 +
55 + .select & > li:first-child > a{
56 + border-radius: 0;
57 + border-bottom: 0 none;
58 + }
59 +
60 + > li > a:hover,
61 + > li > a:focus {
62 + background-color: $smoke-bg;
63 + color: #333333;
64 + opacity: 1;
65 + text-decoration: none;
66 + }
67 +
68 + &.dropdown-blue > li > a:hover,
69 + &.dropdown-blue > li > a:focus{
70 + background-color: $light-blue;
71 + }
72 + &.dropdown-azure > li > a:hover,
73 + &.dropdown-azure > li > a:focus{
74 + background-color: $light-azure;
75 + }
76 + &.ct-green > li > a:hover,
77 + &.ct-green > li > a:focus{
78 + background-color: $light-green;
79 + }
80 + &.dropdown-orange > li > a:hover,
81 + &.dropdown-orange > li > a:focus{
82 + background-color: $light-orange;
83 + }
84 + &.dropdown-red > li > a:hover,
85 + &.dropdown-red > li > a:focus{
86 + background-color: $light-red;
87 + }
88 +
89 +}
90 +
91 +.dropdown-with-icons{
92 + > li > a{
93 + padding-left: 0px;
94 + line-height: 28px;
95 + }
96 + i{
97 + text-align: center;
98 + line-height: 28px;
99 + float: left;
100 +
101 + &[class^="pe-"]{
102 + font-size: 24px;
103 + width: 46px;
104 + }
105 + &[class^="fa"]{
106 + font-size: 14px;
107 + width: 38px;
108 + }
109 + }
110 +}
111 +
112 +//fix bug for the select items in btn-group
113 +.btn-group.select{
114 + overflow: hidden;
115 +}
116 +.btn-group.select.open{
117 + overflow: visible;
118 +}
119 +
120 +
1 +.footer{
2 + background-color: $white-color;
3 + line-height: $line-height;
4 +
5 + nav > ul{
6 + list-style: none;
7 + margin: 0;
8 + padding: 0;
9 + font-weight: normal;
10 +
11 + a:not(.btn){
12 + color: $dark-gray;
13 + display: block;
14 + margin-bottom: 3px;
15 + &:hover,
16 + &:focus{
17 + color: $default-states-color;
18 + }
19 + }
20 + }
21 + .social-area{
22 + padding: 15px 0;
23 + h5{
24 + padding-bottom: 15px;
25 + }
26 + }
27 + .social-area > a:not(.btn){
28 + color: $dark-gray;
29 + display: inline-block;
30 + vertical-align: top;
31 + padding: $padding-social-a;
32 + font-size: $font-size-large-navbar;
33 + font-weight: normal;
34 + line-height: $line-height;
35 + text-align: center;
36 + &:hover,
37 + &:focus{
38 + color: $default-states-color;
39 + }
40 + }
41 + .copyright{
42 + color: $default-states-color;
43 + padding: 10px 15px;
44 + margin: 10px 3px;
45 + line-height: 20px;
46 + font-size: $font-size-base;
47 + }
48 + hr{
49 + border-color: $medium-gray;
50 + }
51 + .title{
52 + color: $default-states-color;
53 + }
54 +}
55 +
56 +.footer-default{
57 + background-color: $smoke-bg;
58 +}
59 +
60 +.footer:not(.footer-big){
61 + nav > ul{
62 + font-size: $font-size-base;
63 + li{
64 + margin-left: 20px;
65 + float: left;
66 + }
67 + a{
68 + padding: 10px 0px;
69 + margin: 10px 10px 10px 0px;
70 + }
71 + }
72 +}
73 +
74 +
75 +
76 +
77 +
1 +.form-control::-moz-placeholder{
2 + @include placeholder($medium-gray,1);
3 +}
4 +.form-control:-moz-placeholder{
5 + @include placeholder($medium-gray,1);
6 +}
7 +.form-control::-webkit-input-placeholder{
8 + @include placeholder($medium-gray,1);
9 +}
10 +.form-control:-ms-input-placeholder{
11 + @include placeholder($medium-gray,1);
12 +}
13 +
14 +.form-control {
15 + background-color: $white-bg;
16 + border: 1px solid $light-gray;
17 + border-radius: $border-radius-base;
18 + color: #565656;
19 + @include input-size($padding-base-vertical, $padding-base-horizontal - 4, $height-base);
20 + @include box-shadow(none);
21 +
22 + &:focus{
23 + background-color: $white-bg;
24 + border: 1px solid $medium-dark-gray;
25 + @include box-shadow(none);
26 + outline: 0 !important;
27 + color: #333333;
28 + }
29 +
30 + .has-success &,
31 + .has-error &,
32 + .has-success &:focus,
33 + .has-error &:focus{
34 + border-color: $light-gray;
35 + @include box-shadow(none);
36 + }
37 +
38 + .has-success &{
39 + color: $success-color;
40 + }
41 + .has-success &:focus{
42 + border-color: $success-color;
43 + }
44 + .has-error &{
45 + color: $danger-color;
46 + }
47 + .has-error &:focus{
48 + border-color: $danger-color;
49 + }
50 +
51 + & + .form-control-feedback{
52 + border-radius: $border-radius-large;
53 + font-size: $font-size-base;
54 + margin-top: -7px;
55 + position: absolute;
56 + right: 10px;
57 + top: 50%;
58 + vertical-align: middle;
59 + }
60 +
61 + .open &{
62 + border-radius: $border-radius-base $border-radius-base 0 0;
63 + border-bottom-color: transparent;
64 + }
65 +}
66 +
67 +.input-lg{
68 + height: 55px;
69 + padding: $padding-large-vertical $padding-large-horizontal;
70 +}
71 +
72 +.has-error{
73 + .form-control-feedback{
74 + color: $danger-color;
75 + }
76 +}
77 +.has-success{
78 + .form-control-feedback{
79 + color: $success-color
80 + }
81 +}
82 +
83 +
84 +.input-group-addon {
85 + background-color: $white-color;
86 + border: 1px solid $light-gray;
87 + border-radius: $border-radius-base;
88 +
89 + .has-success &,
90 + .has-error &{
91 + background-color: $white-color;
92 + border: 1px solid $light-gray;
93 + }
94 + .has-error .form-control:focus + &{
95 + border-color: $danger-color;
96 + color: $danger-color;
97 + }
98 + .has-success .form-control:focus + &{
99 + border-color: $success-color;
100 + color: $success-color;
101 + }
102 + .form-control:focus + &,
103 + .form-control:focus ~ &{
104 + background-color: $white-color;
105 + border-color: $dark-gray;
106 + }
107 +}
108 +
109 +.input-group .form-control:first-child,
110 +.input-group-addon:first-child,
111 +.input-group-btn:first-child > .dropdown-toggle,
112 +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
113 + border-right: 0 none;
114 +}
115 +.input-group .form-control:last-child,
116 +.input-group-addon:last-child,
117 +.input-group-btn:last-child > .dropdown-toggle,
118 +.input-group-btn:first-child > .btn:not(:first-child) {
119 + border-left: 0 none;
120 +}
121 +.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {
122 + background-color: $smoke-bg;
123 + color: $default-color;
124 + cursor: not-allowed;
125 +}
126 +
127 +.input-group-btn .btn{
128 + border-width: $border-thin;
129 + padding: $padding-round-vertical $padding-base-horizontal;
130 +}
131 +.input-group-btn .btn-default:not(.btn-fill){
132 + border-color: $medium-gray;
133 +}
134 +
135 +.input-group-btn:last-child > .btn{
136 + margin-left: 0;
137 +}
138 +
139 +.input-group-focus .input-group-addon{
140 + border-color: $dark-gray;
141 +}
1 +/* General overwrite */
2 +body,
3 +.wrapper{
4 + min-height: 100vh;
5 + position: relative;
6 + background-color: white;
7 +}
8 +a{
9 + color: $info-color;
10 +
11 + &:hover, &:focus{
12 + color: $info-states-color;
13 + text-decoration: none;
14 + }
15 +}
16 +
17 +a:focus, a:active,
18 +button::-moz-focus-inner,
19 +input::-moz-focus-inner,
20 +input[type="reset"]::-moz-focus-inner,
21 +input[type="button"]::-moz-focus-inner,
22 +input[type="submit"]::-moz-focus-inner,
23 +select::-moz-focus-inner,
24 +input[type="file"] > input[type="button"]::-moz-focus-inner{
25 + outline:0;
26 +}
27 +.ui-slider-handle:focus,
28 +.navbar-toggle,
29 +input:focus {
30 + outline : 0 !important;
31 +}
32 +
33 +/* Animations */
34 +.form-control,
35 +.input-group-addon,
36 +.tagsinput,
37 +.navbar,
38 +.navbar .alert{
39 + @include transition($general-transition-time, $transition-linear);
40 +}
41 +
42 +.sidebar .nav a,
43 +.table > tbody > tr .td-actions .btn{
44 + @include transition($fast-transition-time, $transition-ease-in);
45 +}
46 +
47 +.btn{
48 + @include transition($ultra-fast-transition-time, $transition-ease-in);
49 +}
50 +.fa{
51 + width: 18px;
52 + text-align: center;
53 +}
54 +.margin-top{
55 + margin-top: 50px;
56 +}
57 +
58 +.wrapper{
59 + position: relative;
60 + top: 0;
61 + height: 100vh;
62 +}
1 +//Utilities
2 +
3 +@import "mixins/transparency";
4 +@import "mixins/vendor-prefixes";
5 +
6 +
7 +//Components
8 +
9 +@import "mixins/buttons";
10 +@import "mixins/inputs";
11 +@import "mixins/labels";
12 +@import "mixins/tabs";
13 +
14 +@import "mixins/navbars";
15 +@import "mixins/icons";
16 +@import "mixins/social-buttons";
17 +
18 +@import "mixins/morphing-buttons";
19 +
20 +@import "mixins/cards";
21 +
22 +@import "mixins/chartist";
...\ No newline at end of file ...\ No newline at end of file
1 +.nav {
2 + > li{
3 + > a:hover,
4 + > a:focus{
5 + background-color: transparent;
6 + }
7 + }
8 +}
9 +.navbar{
10 + border: $none;
11 + font-size: $font-size-navbar;
12 + border-radius: 0;
13 +
14 + .navbar-brand {
15 + font-weight: $font-weight-normal;
16 + margin: $navbar-margin-brand;
17 + padding: $navbar-padding-brand;
18 + font-size: $font-size-large-navbar;
19 + }
20 + .navbar-nav{
21 + > li > a {
22 + padding: $navbar-padding-a;
23 + margin: $navbar-margin-a;
24 + position: relative;
25 + }
26 + > li > a.btn{
27 + margin: $navbar-margin-a-btn;
28 + padding: $padding-base-vertical $padding-base-horizontal;
29 + }
30 + > li > a.btn-round{
31 + margin: $navbar-margin-a-btn-round;
32 + }
33 + > li > a [class^="fa"]{
34 + font-size: $font-size-large + 1;
35 + position: relative;
36 + line-height: 16px;
37 + top: 1px;
38 + }
39 +
40 + .notification{
41 + position: absolute;
42 + background-color: #FB404B;
43 + text-align: center;
44 + border-radius: 10px;
45 + min-width: 18px;
46 + padding: 0 5px;
47 + height: 18px;
48 + font-size: 12px;
49 + color: #FFFFFF;
50 + font-weight: bold;
51 + line-height: 18px;
52 + top: 0px;
53 + left: 7px;
54 + }
55 + }
56 + .btn{
57 + margin: $navbar-margin-btn;
58 + font-size: $font-size-base;
59 + }
60 + .btn-simple{
61 + font-size: $font-size-medium;
62 + }
63 + .caret{
64 + // @include center-item();
65 + }
66 +
67 + &.fixed{
68 + width: calc(100% - #{$sidebar-width});
69 + right: 0;
70 + left: auto;
71 + border-radius: 0;
72 + }
73 +
74 +}
75 +
76 +.navbar-nav > li > .dropdown-menu{
77 + border-radius: $border-radius-extreme;
78 + margin-top: -5px;
79 +}
80 +
81 +.navbar-transparent, [class*="navbar-ct"]{
82 + .navbar-brand{
83 + color: $white-color;
84 + @include opacity(.9);
85 +
86 + &:focus,
87 + &:hover{
88 + background-color: transparent;
89 + @include opacity(1);
90 + }
91 + }
92 +
93 + .navbar-nav{
94 + > li > a:not(.btn){
95 + color: $white-color;
96 + border-color: $white-color;
97 + @include opacity(0.8);
98 + }
99 + > .active > a:not(.btn),
100 + > .active > a:hover:not(.btn),
101 + > .active > a:focus:not(.btn),
102 + > li > a:hover:not(.btn),
103 + > li > a:focus:not(.btn){
104 + background-color: transparent;
105 + border-radius: 3px;
106 + color: $white-color;
107 + @include opacity(1);
108 + }
109 + .nav > li > a.btn:hover{
110 + background-color: transparent;
111 + }
112 +
113 + > .dropdown > a .caret,
114 + > .dropdown > a:hover .caret,
115 + > .dropdown > a:focus .caret{
116 + border-bottom-color: $white-color;
117 + border-top-color: $white-color;
118 + }
119 +
120 + > .open > a,
121 + > .open > a:hover,
122 + > .open > a:focus {
123 + background-color: transparent;
124 + color: $white-color;
125 + @include opacity(1);
126 + }
127 + }
128 +
129 + .btn-default{
130 + color: $white-color;
131 + border-color: $white-color;
132 + }
133 + .btn-default.btn-fill{
134 + color: $dark-gray;
135 + background-color: $white-color;
136 + @include opacity(.9);
137 + }
138 + .btn-default.btn-fill:hover,
139 + .btn-default.btn-fill:focus,
140 + .btn-default.btn-fill:active,
141 + .btn-default.btn-fill.active,
142 + .open .dropdown-toggle.btn-fill.btn-default{
143 + border-color: $white-color;
144 + @include opacity(1);
145 + }
146 +
147 +}
148 +.navbar-transparent{
149 + .dropdown-menu .divider{
150 + background-color: rgba($white-color,.2);
151 + }
152 +}
153 +
154 +.nav-open .nav .caret{
155 + border-bottom-color: $white-color;
156 + border-top-color: $white-color;
157 +}
158 +
159 +.navbar-default {
160 + background-color: $white-navbar;
161 + border-bottom: 1px solid rgba(0, 0, 0, 0.1);
162 +
163 + .navbar-nav{
164 + > li > a:not(.btn){
165 + color: $dark-gray;
166 + }
167 +
168 + > .active > a,
169 + > .active > a:not(.btn):hover,
170 + > .active > a:not(.btn):focus,
171 + > li > a:not(.btn):hover,
172 + > li > a:not(.btn):focus {
173 + background-color: transparent;
174 + border-radius: 3px;
175 + color: $info-color;
176 + @include opacity(1);
177 + }
178 +
179 + > .dropdown > a:hover .caret,
180 + > .dropdown > a:focus .caret {
181 + border-bottom-color: $info-color;
182 + border-top-color: $info-color;
183 +
184 + }
185 +
186 + > .open > a,
187 + > .open > a:hover,
188 + > .open > a:focus{
189 + background-color: transparent;
190 + color: $info-color;
191 + }
192 +
193 + .navbar-toggle:hover,.navbar-toggle:focus {
194 + background-color: transparent;
195 + }
196 +
197 + }
198 +
199 + &:not(.navbar-transparent) .btn-default:hover{
200 + color: $info-color;
201 + border-color: $info-color;
202 + }
203 + &:not(.navbar-transparent) .btn-neutral,
204 + &:not(.navbar-transparent) .btn-neutral:hover,
205 + &:not(.navbar-transparent) .btn-neutral:active{
206 + color: $dark-gray;
207 + }
208 +}
209 +
210 +/* Navbar with icons */
211 +
212 +.navbar-icons{
213 + &.navbar .navbar-brand{
214 + margin-top: 12px;
215 + margin-bottom: 12px;
216 + }
217 + .navbar-nav{
218 + > li > a{
219 + text-align: center;
220 + padding: $navbar-padding-a-icons;
221 + margin: $navbar-margin-a-icons;
222 + }
223 +
224 + [class^="pe"] {
225 + font-size: 30px;
226 + position: relative;
227 + }
228 + p {
229 + margin: 3px 0 0;
230 + }
231 + }
232 +}
233 +
234 +.navbar-form{
235 + @include box-shadow(none);
236 + .form-control{
237 + @include light-form();
238 + height: 22px;
239 + font-size: $font-size-navbar;
240 + line-height: $line-height-general;
241 + color: $light-gray;
242 + }
243 + .navbar-transparent & .form-control,
244 + [class*="navbar-ct"] & .form-control{
245 + color: $white-color;
246 + border: $none;
247 + border-bottom: 1px solid rgba($white-color,.6);
248 + }
249 +
250 +}
251 +
252 +.navbar-ct-blue{
253 + @include navbar-color($blue-navbar);
254 +}
255 +.navbar-ct-azure{
256 + @include navbar-color($azure-navbar);
257 +}
258 +.navbar-ct-green{
259 + @include navbar-color($green-navbar);
260 +}
261 +.navbar-ct-orange{
262 + @include navbar-color($orange-navbar);
263 +}
264 +.navbar-ct-red{
265 + @include navbar-color($red-navbar);
266 +}
267 +
268 +.navbar-transparent{
269 + padding-top: 15px;
270 + background-color: transparent;
271 + border-bottom: 1px solid transparent;
272 +}
273 +
274 +.navbar-toggle{
275 + margin-top: 19px;
276 + margin-bottom: 19px;
277 + border: $none;
278 +
279 + .icon-bar {
280 + background-color: $white-color;
281 + }
282 + .navbar-collapse,
283 + .navbar-form {
284 + border-color: transparent;
285 + }
286 +
287 + &.navbar-default .navbar-toggle:hover,
288 + &.navbar-default .navbar-toggle:focus {
289 + background-color: transparent;
290 + }
291 +}
292 +
293 +
This diff is collapsed. Click to expand it.
1 +.sidebar{
2 + position: fixed;
3 + top: 0;
4 + bottom: 0;
5 + left: 0;
6 + width: 260px;
7 + display: block;
8 + z-index: 1;
9 + color: #fff;
10 + font-weight: 200;
11 + background-size: cover;
12 + background-position: center center;
13 +
14 + .sidebar-wrapper{
15 + position: relative;
16 + height: calc(100vh - 75px);
17 + overflow: auto;
18 + width: 260px;
19 + z-index: 4;
20 + padding-bottom: 30px;
21 + }
22 +
23 + .sidebar-background{
24 + position: absolute;
25 + z-index: 1;
26 + height: 100%;
27 + width: 100%;
28 + display: block;
29 + top: 0;
30 + left: 0;
31 + background-size: cover;
32 + background-position: center center;
33 + }
34 +
35 + .logo{
36 + padding: 12px 30px;
37 + border-bottom: 1px solid rgba(255, 255, 255, 0.2);
38 + position: relative;
39 + z-index: 4;
40 +
41 + p{
42 + float: left;
43 + font-size: 20px;
44 + margin: 10px 10px;
45 + color: $white-color;
46 + line-height: 20px;
47 + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
48 + }
49 +
50 + a.logo-mini{
51 + float: left;
52 + text-align: center;
53 + width: 30px;
54 + margin-right: 15px;
55 +
56 + img{
57 + width: 40px;
58 + margin-left: -3px;
59 + display: block;
60 + margin-top: 2px;
61 + }
62 + }
63 +
64 + a.logo-normal{
65 + display: block;
66 + }
67 +
68 + .logo-img{
69 + width: 34px;
70 + display: inline-block;
71 + height: 34px;
72 + margin-left: -2px;
73 + margin-top: -2px;
74 + margin-right: 10px;
75 + border-radius: 30px;
76 + text-align: center;
77 + }
78 + }
79 +
80 + .logo-tim{
81 + border-radius: 50%;
82 + border: 1px solid #333;
83 + display: block;
84 + height: 61px;
85 + width: 61px;
86 + float: left;
87 + overflow: hidden;
88 +
89 + img{
90 + width: 60px;
91 + height: 60px;
92 + }
93 + }
94 +
95 + .nav{
96 + margin-top: 20px;
97 +
98 + li{
99 + > a{
100 + color: #FFFFFF;
101 + margin: 5px 15px;
102 + opacity: .86;
103 + border-radius: 4px;
104 + }
105 +
106 + &:hover > a,
107 + &.open > a,
108 + &.open > a:focus,
109 + &.open > a:hover{
110 + background: rgba(255,255,255,0.13);
111 + opacity: 1;
112 + }
113 +
114 + &.active > a{
115 + color: #FFFFFF;
116 + opacity: 1;
117 + background: rgba(255,255,255,0.23);
118 +
119 + }
120 + }
121 +
122 + p{
123 + margin: 0;
124 + line-height: 30px;
125 + font-size: 12px;
126 + font-weight: 600;
127 + text-transform: uppercase;
128 + }
129 +
130 + .caret{
131 + top: 24px;
132 + position: absolute;
133 + right: 15px;
134 + }
135 +
136 + i{
137 + font-size: 28px;
138 + float: left;
139 + margin-right: 15px;
140 + line-height: 30px;
141 + width: 30px;
142 + text-align: center;
143 + }
144 + }
145 +}
146 +
147 +
148 +.sidebar,
149 +body > .navbar-collapse{
150 + .logo{
151 + padding: 12px 30px;
152 + border-bottom: 1px solid rgba(255, 255, 255, 0.2);
153 +
154 + p{
155 + float: left;
156 + font-size: 20px;
157 + margin: 10px 10px;
158 + color: $white-color;
159 + line-height: 20px;
160 + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
161 + }
162 +
163 + .simple-text{
164 + text-transform: uppercase;
165 + padding: $padding-small-vertical $padding-zero;
166 + display: block;
167 + font-size: $font-size-large;
168 + color: $white-color;
169 + font-weight: $font-weight-normal;
170 + line-height: 30px;
171 + }
172 + }
173 +
174 + .logo-tim{
175 + border-radius: 50%;
176 + border: 1px solid #333;
177 + display: block;
178 + height: 61px;
179 + width: 61px;
180 + float: left;
181 + overflow: hidden;
182 +
183 + img{
184 + width: 60px;
185 + height: 60px;
186 + }
187 + }
188 +
189 + &:after,
190 + &:before{
191 + display: block;
192 + content: "";
193 + position: absolute;
194 + width: 100%;
195 + height: 100%;
196 + top: 0;
197 + left: 0;
198 + z-index: 2;
199 + }
200 +
201 + &:before{
202 + opacity: .33;
203 + background: #000000;
204 + }
205 +
206 + &:after{
207 + @include icon-gradient($black-color-top, $black-color-bottom);
208 + z-index: 3;
209 + opacity: 1;
210 + }
211 +
212 + &[data-image]:after,
213 + &.has-image:after{
214 + opacity: .77;
215 + }
216 +
217 + &[data-color="blue"]:after{
218 + @include icon-gradient($new-dark-blue, $blue-color-bottom);
219 + }
220 + &[data-color="azure"]:after{
221 + @include icon-gradient($new-blue, $azure-color-bottom);
222 + }
223 + &[data-color="green"]:after{
224 + @include icon-gradient($new-green, $green-color-bottom);
225 + }
226 + &[data-color="orange"]:after{
227 + @include icon-gradient($new-orange, $orange-color-bottom);
228 + }
229 + &[data-color="red"]:after{
230 + @include icon-gradient($new-red, $red-color-bottom);
231 + }
232 + &[data-color="purple"]:after{
233 + @include icon-gradient($new-purple, $purple-color-bottom);
234 + }
235 +}
236 +
237 +
238 +.main-panel{
239 + background: rgba(203,203,210,.15);
240 + position: relative;
241 + float: right;
242 + width: $sidebar-width;
243 +
244 + > .content{
245 + padding: 30px 15px;
246 + min-height: calc(100% - 123px);
247 + }
248 +
249 + > .footer{
250 + border-top: 1px solid #e7e7e7;
251 + }
252 +
253 + .navbar{
254 + margin-bottom: 0;
255 + }
256 +}
257 +
258 +.sidebar,
259 +.main-panel{
260 + -webkit-transition-property: top,bottom;
261 + transition-property: top,bottom;
262 + -webkit-transition-duration: .2s,.2s;
263 + transition-duration: .2s,.2s;
264 + -webkit-transition-timing-function: linear,linear;
265 + transition-timing-function: linear,linear;
266 + -webkit-overflow-scrolling: touch;
267 +}
1 +.table{
2 +
3 + .radio,
4 + .checkbox{
5 + position: relative;
6 + height: 20px;
7 + display: block;
8 + width: 20px;
9 + padding: 0px 0px;
10 + margin: 0px 5px;
11 + text-align: center;
12 +
13 + .icons{
14 + left: 5px;
15 + }
16 + }
17 + > thead > tr > th,
18 + > tbody > tr > th,
19 + > tfoot > tr > th,
20 + > thead > tr > td,
21 + > tbody > tr > td,
22 + > tfoot > tr > td{
23 + padding: 12px 8px;
24 + vertical-align: middle;
25 + }
26 + // MANU : aici este ceva schimbat!!!
27 + > tbody > tr > td{
28 + font-size: 14px;
29 + }
30 + > thead > tr > th{
31 + border-bottom-width: 1px;
32 + font-size: $font-size-small;
33 + text-transform: uppercase;
34 + color: $dark-gray;
35 + font-weight: $font-weight-normal;
36 + padding-bottom: 5px;
37 + }
38 +
39 + .td-actions .btn{
40 + @include opacity(0.36);
41 +
42 + &.btn-xs{
43 + padding-left: 3px;
44 + padding-right: 3px;
45 + }
46 + }
47 + .td-actions{
48 + min-width: 90px;
49 + }
50 +
51 + > tbody > tr{
52 + position: relative;
53 +
54 + &:hover{
55 + .td-actions .btn{
56 + @include opacity(1);
57 + }
58 + }
59 + }
60 +}
1 +/* Font Smoothing */
2 +body,
3 +h1, .h1,
4 +h2, .h2,
5 +h3, .h3,
6 +h4, .h4,
7 +h5, .h5,
8 +h6, .h6,
9 +p,
10 +.navbar,
11 +.brand,
12 +.btn-simple,
13 +.alert,
14 +a,
15 +.td-name,
16 +td,
17 +button.close{
18 + -moz-osx-font-smoothing: grayscale;
19 + -webkit-font-smoothing: antialiased;
20 + font-family: "Roboto","Helvetica Neue",Arial,sans-serif;
21 + font-weight: $font-weight-normal;
22 +}
23 +
24 +h1, .h1, h2, .h2, h3, .h3, h4, .h4{
25 + font-weight: $font-weight-light;
26 + margin: $margin-large-vertical 0 $margin-base-vertical;
27 +}
28 +
29 +h1, .h1 {
30 + font-size: $font-size-h1;
31 +}
32 +h2, .h2{
33 + font-size: $font-size-h2;
34 +}
35 +h3, .h3{
36 + font-size: $font-size-h3;
37 + margin: 20px 0 10px;
38 +}
39 +h4, .h4{
40 + font-size: $font-size-h4;
41 + line-height: 30px;
42 +}
43 +h5, .h5 {
44 + font-size: $font-size-h5;
45 + margin-bottom: 15px;
46 +}
47 +h6, .h6{
48 + font-size: $font-size-h6;
49 + font-weight: $font-weight-bold;
50 + text-transform: uppercase;
51 +}
52 +p{
53 + font-size: $font-paragraph;
54 + line-height: $line-height-general;
55 +}
56 +
57 +h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small {
58 + color: $dark-gray;
59 + font-weight: $font-weight-light;
60 + line-height: $line-height-general;
61 +}
62 +
63 +h1 small, h2 small, h3 small, h1 .small, h2 .small, h3 .small {
64 + font-size: 60%;
65 +}
66 +
67 +h1 .subtitle{
68 + display: block;
69 + margin: 0 0 $margin-large-vertical;
70 +}
71 +
72 +.text-muted{
73 + color: #9A9A9A;
74 +}
75 +.text-primary, .text-primary:hover{
76 + color: #1D62F0 !important;
77 +}
78 +.text-info, .text-info:hover{
79 + color: $info-color !important;
80 +}
81 +.text-success, .text-success:hover{
82 + color: $success-color !important;
83 +}
84 +.text-warning, .text-warning:hover{
85 + color: $warning-color !important;
86 +}
87 +.text-danger, .text-danger:hover{
88 + color: $danger-color !important;
89 +}
90 +
1 +//== Buttons
2 +//
3 +//## For each of Bootstrap's buttons, define text, background and border color.
4 +
5 +$none: 0 !default;
6 +$border-thin: 1px !default;
7 +$border-thick: 2px !default;
8 +
9 +$white-color: #FFFFFF !default;
10 +$white-bg: #FFFFFF !default;
11 +
12 +$smoke-bg: #F5F5F5 !default;
13 +
14 +$black-bg: rgba(30,30,30,.97) !default;
15 +
16 +$black-color: #333333 !default;
17 +$black-hr: #444444 !default;
18 +
19 +$light-gray: #E3E3E3 !default;
20 +$medium-gray: #DDDDDD !default;
21 +$medium-dark-gray: #AAAAAA !default;
22 +$dark-gray: #9A9A9A !default;
23 +
24 +$transparent-bg: transparent !default;
25 +
26 +$default-color: #888888 !default;
27 +$default-bg: #888888 !default;
28 +$default-states-color: #777777 !default;
29 +
30 +$primary-color: #3472F7 !default;
31 +$primary-bg: #3472F7 !default;
32 +$primary-states-color: #1D62F0 !default;
33 +
34 +$success-color: #87CB16 !default;
35 +$success-bg: #87CB16 !default;
36 +$success-states-color: #049F0C !default;
37 +
38 +$info-color: #1DC7EA !default;
39 +$info-bg: #1DC7EA !default;
40 +$info-states-color: lighten($info-color, 8%) !default;
41 +
42 +$warning-color: #FF9500 !default;
43 +$warning-bg: #FF9500 !default;
44 +$warning-states-color: #ED8D00 !default;
45 +
46 +
47 +$danger-color: #FF4A55 !default;
48 +$danger-bg: #FF4A55 !default;
49 +$danger-states-color: #EE2D20 !default;
50 +
51 +
52 +
53 +$link-disabled-color: #666666 !default;
54 +
55 +
56 +/* light colors */
57 +$light-blue: rgba($primary-color, .2);
58 +$light-azure: rgba($info-color, .2);
59 +$light-green: rgba($success-color, .2);
60 +$light-orange: rgba($warning-color, .2);
61 +$light-red: rgba($danger-color, .2);
62 +
63 +
64 +//== Components
65 +//
66 +
67 +$padding-base-vertical: 8px !default;
68 +$padding-base-horizontal: 16px !default;
69 +
70 +$padding-round-vertical: 9px !default;
71 +$padding-round-horizontal: 18px !default;
72 +
73 +$padding-simple-vertical: 10px !default;
74 +$padding-simple-horizontal: 18px !default;
75 +
76 +$padding-large-vertical: 14px !default;
77 +$padding-large-horizontal: 30px !default;
78 +
79 +$padding-small-vertical: 5px !default;
80 +$padding-small-horizontal: 10px !default;
81 +
82 +$padding-xs-vertical: 1px !default;
83 +$padding-xs-horizontal: 5px !default;
84 +
85 +$padding-label-vertical: 2px !default;
86 +$padding-label-horizontal: 12px !default;
87 +
88 +$margin-large-vertical: 30px !default;
89 +$margin-base-vertical: 15px !default;
90 +
91 +$padding-zero: 0px !default;
92 +
93 +$margin-bottom: 0 0 10px 0 !default;
94 +$border-radius-small: 3px !default;
95 +$border-radius-base: 4px !default;
96 +$border-radius-large: 6px !default;
97 +$border-radius-extreme: 10px !default;
98 +
99 +$border-radius-large-top: $border-radius-large $border-radius-large 0 0 !default;
100 +$border-radius-large-bottom: 0 0 $border-radius-large $border-radius-large !default;
101 +
102 +$btn-round-radius: 30px !default;
103 +
104 +$height-base: 40px !default;
105 +
106 +$font-size-base: 14px !default;
107 +$font-size-small: 12px !default;
108 +$font-size-medium: 16px !default;
109 +$font-size-large: 18px !default;
110 +$font-size-large-navbar: 20px !default;
111 +
112 +$font-size-h1: 52px !default;
113 +$font-size-h2: 36px !default;
114 +$font-size-h3: 28px !default;
115 +$font-size-h4: 22px !default;
116 +$font-size-h5: 16px !default;
117 +$font-size-h6: 14px !default;
118 +$font-paragraph: 16px !default;
119 +$font-size-navbar: 16px !default;
120 +$font-size-small: 12px !default;
121 +
122 +$font-weight-light: 300 !default;
123 +$font-weight-normal: 400 !default;
124 +$font-weight-semi: 500 !default;
125 +$font-weight-bold: 600 !default;
126 +
127 +$line-height-general: 1.5 !default;
128 +$line-height: 20px !default;
129 +$line-height-lg: 54px !default;
130 +
131 +$sidebar-width: calc(100% - 260px) !default;
132 +
133 +
134 +$border-radius-top: 10px 10px 0 0 !default;
135 +$border-radius-bottom: 0 0 10px 10px !default;
136 +
137 +$dropdown-shadow: 1px 2px 3px rgba(0, 0, 0, 0.125);
138 +
139 +$general-transition-time: 300ms !default;
140 +
141 +$slow-transition-time: 370ms !default;
142 +$dropdown-coordinates: 29px -50px !default;
143 +
144 +$fast-transition-time: 150ms !default;
145 +
146 +$ultra-fast-transition-time: 100ms !default;
147 +
148 +$select-coordinates: 50% -40px !default;
149 +
150 +$transition-linear: linear !default;
151 +$transition-bezier: cubic-bezier(0.34, 1.61, 0.7, 1) !default;
152 +$transition-ease: ease 0s;
153 +$transition-ease-in: ease-in !default;
154 +$transition-ease-out: ease-out !default;
155 +
156 +
157 +$navbar-padding-a: 10px 15px;
158 +$navbar-margin-a: 10px 3px;
159 +
160 +$padding-social-a: 10px 5px;
161 +
162 +$navbar-margin-a-btn: 15px 3px;
163 +$navbar-margin-a-btn-round: 16px 3px;
164 +
165 +$navbar-padding-a-icons: 6px 15px;
166 +$navbar-margin-a-icons: 6px 3px;
167 +
168 +$navbar-padding-brand: 15px 15px;
169 +$navbar-margin-brand: 5px 0px;
170 +
171 +$navbar-margin-brand-icons: 12px auto;
172 +
173 +$navbar-margin-btn: 15px 3px;
174 +
175 +$height-icon: 64px !default;
176 +$width-icon: 64px !default;
177 +$padding-icon: 12px !default;
178 +$border-radius-icon: 15px !default;
179 +
180 +$size-icon: 64px;
181 +$size-icon-sm: 32px;
182 +
183 +
184 +$height-icon-sm: 32px;
185 +$width-icon-sm: 32px;
186 +$padding-icon-sm: 4px;
187 +$border-radius-icon-sm: 7px;
188 +
189 +$height-icon-message: 40px;
190 +$width-icon-message: 40px;
191 +
192 +$height-icon-message-sm: 20px;
193 +$width-icon-message-sm: 20px;
194 +
195 +$default-color-top: #d9d9d9 !default;
196 +$default-color-bottom: #909297 !default;
197 +
198 +$blue-color-top: #4087ea;
199 +$blue-color-bottom: #2632c1;
200 +
201 +$azure-color-top: #45c0fd;
202 +$azure-color-bottom: #4091ff;
203 +
204 +$green-color-top: #a1eb3a;
205 +$green-color-bottom: #6dc030;
206 +
207 +$orange-color-top: #ffb33b;
208 +$orange-color-bottom: #ff5221;
209 +
210 +$red-color-top: #ff3b30;
211 +$red-color-bottom: #bb0502;
212 +
213 +$purple-color-top: #df55e1;
214 +$purple-color-bottom: #943bea;
215 +
216 +$pink-color-top: #ff2a63;
217 +$pink-color-bottom: #ff2e2e;
218 +
219 +$black-color-top: #282828;
220 +$black-color-bottom: #111;
221 +
222 +$social-facebook: #3b5998;
223 +$social-twitter: #55acee;
224 +$social-pinterest: #cc2127;
225 +$social-google: #dd4b39;
226 +$social-linkedin: #0976b4;
227 +$social-dribbble: #ea4c89;
228 +$social-github: #333333;
229 +$social-youtube: #e52d27;
230 +$social-stumbleupon: #eb4924;
231 +$social-reddit: #ff4500;
232 +$social-tumblr: #35465c;
233 +$social-behance: #1769ff;
234 +
235 +
236 +$filter-blue: darken($primary-color, 10%);
237 +$filter-azure: darken($info-color, 10%);
238 +$filter-green: darken($success-color, 10%);
239 +$filter-orange: darken($warning-color, 10%);
240 +$filter-red: darken($danger-color, 10%);
241 +
242 +
243 +$new-blue: #1DC7EA;
244 +$new-purple: #9368E9;
245 +$new-red: #FB404B;
246 +$new-green: #87CB16;
247 +$new-orange: #FFA534;
248 +$new-dark-blue: #1b8dff;
249 +$new-black: #5e5e5e;
250 +
251 +
252 +$topbar-x: topbar-x !default;
253 +$topbar-back: topbar-back !default;
254 +$bottombar-x: bottombar-x !default;
255 +$bottombar-back: bottombar-back !default;
256 +
257 +
258 +$white-navbar: rgba(#FFFFFF, .96);
259 +$blue-navbar: lighten($new-dark-blue, 10%);
260 +$azure-navbar: lighten($new-blue, 15%);
261 +$green-navbar: lighten($new-green, 10%);
262 +$orange-navbar: lighten($new-orange, 10%);
263 +$red-navbar: lighten($new-red, 10%);
1 +// Mixin for generating new styles
2 +@mixin btn-styles($btn-color, $btn-states-color) {
3 + border-color: $btn-color;
4 + color: $btn-color;
5 +
6 + &:hover,
7 + &:focus,
8 + &:active,
9 + &.active,
10 + .open > &.dropdown-toggle {
11 + background-color: $transparent-bg;
12 + color: $btn-states-color;
13 + border-color: $btn-states-color;
14 + }
15 +
16 + &.disabled,
17 + &:disabled,
18 + &[disabled],
19 + fieldset[disabled] & {
20 + &,
21 + &:hover,
22 + &:focus,
23 + &.focus,
24 + &:active,
25 + &.active {
26 + background-color: $transparent-bg;
27 + border-color: $btn-color;
28 + }
29 + }
30 +
31 +
32 + &.btn-fill {
33 + color: $white-color;
34 + background-color: $btn-color;
35 + @include opacity(1);
36 +
37 + &:hover,
38 + &:focus,
39 + &:active,
40 + &.active,
41 + .open > &.dropdown-toggle{
42 + background-color: $btn-states-color;
43 + color: $white-color;
44 + }
45 +
46 + .caret{
47 + border-top-color: $white-color;
48 + }
49 + }
50 +
51 + .caret{
52 + border-top-color: $btn-color;
53 + }
54 +}
55 +
56 +
57 +@mixin btn-size($padding-vertical, $padding-horizontal, $font-size, $border){
58 + font-size: $font-size;
59 + border-radius: $border;
60 + padding: $padding-vertical $padding-horizontal;
61 +
62 + &.btn-round{
63 + padding: $padding-vertical + 1 $padding-horizontal;
64 + }
65 +
66 + &.btn-simple{
67 + padding: $padding-vertical + 2 $padding-horizontal;
68 + }
69 +
70 +}
...\ No newline at end of file ...\ No newline at end of file
1 +@mixin filter($color){
2 + @if $color == #FFFFFF{
3 + background-color: rgba($color,.91);
4 + } @else {
5 + background-color: rgba($color,.69);
6 + }
7 +}
8 +
1 +// Scales for responsive SVG containers
2 +$ct-scales: ((1), (15/16), (8/9), (5/6), (4/5), (3/4), (2/3), (5/8), (1/1.618), (3/5), (9/16), (8/15), (1/2), (2/5), (3/8), (1/3), (1/4)) !default;
3 +$ct-scales-names: (ct-square, ct-minor-second, ct-major-second, ct-minor-third, ct-major-third, ct-perfect-fourth, ct-perfect-fifth, ct-minor-sixth, ct-golden-section, ct-major-sixth, ct-minor-seventh, ct-major-seventh, ct-octave, ct-major-tenth, ct-major-eleventh, ct-major-twelfth, ct-double-octave) !default;
4 +
5 +// Class names to be used when generating CSS
6 +$ct-class-chart: ct-chart !default;
7 +$ct-class-chart-line: ct-chart-line !default;
8 +$ct-class-chart-bar: ct-chart-bar !default;
9 +$ct-class-horizontal-bars: ct-horizontal-bars !default;
10 +$ct-class-chart-pie: ct-chart-pie !default;
11 +$ct-class-chart-donut: ct-chart-donut !default;
12 +$ct-class-label: ct-label !default;
13 +$ct-class-series: ct-series !default;
14 +$ct-class-line: ct-line !default;
15 +$ct-class-point: ct-point !default;
16 +$ct-class-area: ct-area !default;
17 +$ct-class-bar: ct-bar !default;
18 +$ct-class-slice-pie: ct-slice-pie !default;
19 +$ct-class-slice-donut: ct-slice-donut !default;
20 +$ct-class-grid: ct-grid !default;
21 +$ct-class-vertical: ct-vertical !default;
22 +$ct-class-horizontal: ct-horizontal !default;
23 +$ct-class-start: ct-start !default;
24 +$ct-class-end: ct-end !default;
25 +
26 +// Container ratio
27 +$ct-container-ratio: (1/1.618) !default;
28 +
29 +// Text styles for labels
30 +$ct-text-color: rgba(0, 0, 0, 0.4) !default;
31 +$ct-text-size: 1.3rem !default;
32 +$ct-text-align: flex-start !default;
33 +$ct-text-justify: flex-start !default;
34 +$ct-text-line-height: 1;
35 +
36 +// Grid styles
37 +$ct-grid-color: rgba(0, 0, 0, 0.2) !default;
38 +$ct-grid-dasharray: 2px !default;
39 +$ct-grid-width: 1px !default;
40 +
41 +// Line chart properties
42 +$ct-line-width: 3px !default;
43 +$ct-line-dasharray: false !default;
44 +$ct-point-size: 8px !default;
45 +// Line chart point, can be either round or square
46 +$ct-point-shape: round !default;
47 +// Area fill transparency between 0 and 1
48 +$ct-area-opacity: 0.8 !default;
49 +
50 +// Bar chart bar width
51 +$ct-bar-width: 10px !default;
52 +
53 +// Donut width (If donut width is to big it can cause issues where the shape gets distorted)
54 +$ct-donut-width: 60px !default;
55 +
56 +// If set to true it will include the default classes and generate CSS output. If you're planning to use the mixins you
57 +// should set this property to false
58 +$ct-include-classes: true !default;
59 +
60 +// If this is set to true the CSS will contain colored series. You can extend or change the color with the
61 +// properties below
62 +$ct-include-colored-series: $ct-include-classes !default;
63 +
64 +// If set to true this will include all responsive container variations using the scales defined at the top of the script
65 +$ct-include-alternative-responsive-containers: $ct-include-classes !default;
66 +
67 +// Series names and colors. This can be extended or customized as desired. Just add more series and colors.
68 +$ct-series-names: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) !default;
69 +$ct-series-colors: (
70 + $new-blue,
71 + $new-red,
72 + $new-orange,
73 + $new-purple,
74 + $new-green,
75 + $new-dark-blue,
76 + $new-black,
77 + $social-google,
78 + $social-tumblr,
79 + $social-youtube,
80 + $social-twitter,
81 + $social-pinterest,
82 + $social-behance,
83 + #6188e2,
84 + #a748ca
85 +) !default;
...\ No newline at end of file ...\ No newline at end of file
1 +@mixin icon-background ($icon-url){
2 + background-image : url($icon-url);
3 +
4 +}
5 +
6 +@mixin icon-shape ($size, $padding, $border-radius) {
7 + height: $size;
8 + width: $size;
9 + padding: $padding;
10 + border-radius: $border-radius;
11 + display: inline-table;
12 +
13 +}
...\ No newline at end of file ...\ No newline at end of file
1 +@mixin input-size($padding-vertical, $padding-horizontal, $height){
2 + padding: $padding-vertical $padding-horizontal;
3 + height: $height;
4 +}
5 +
6 +@mixin placeholder($color, $opacity){
7 + color: $color;
8 + @include opacity(1);
9 +}
10 +
11 +@mixin light-form(){
12 + border-radius: 0;
13 + border:0;
14 + padding: 0;
15 + background-color: transparent;
16 +
17 +}
...\ No newline at end of file ...\ No newline at end of file
1 +@mixin label-style(){
2 + padding: $padding-label-vertical $padding-label-horizontal;
3 + border: 1px solid $default-color;
4 + border-radius: $border-radius-small;
5 + color: $default-color;
6 + font-weight: $font-weight-semi;
7 + font-size: $font-size-small;
8 + text-transform: uppercase;
9 + display: inline-block;
10 + vertical-align: middle;
11 +}
12 +
13 +@mixin label-color($color){
14 + border-color: $color;
15 + color: $color;
16 +}
17 +@mixin label-color-fill($color){
18 + border-color: $color;
19 + color: $white-color;
20 + background-color: $color;
21 +}
...\ No newline at end of file ...\ No newline at end of file
1 +$prefixes: ('', '-moz-', '-webkit-', '-ms-') !default;
2 +
3 +@mixin circle-animation(){
4 + @for $i from 0 to length($prefixes) {
5 + @include circle-animation-details(nth($prefixes, $i + 1));
6 + }
7 +}
8 +
9 +@mixin circle-animation-details($name){
10 + #{$name}animation-name: spin;
11 + #{$name}animation-duration: 1250ms;
12 + #{$name}animation-iteration-count: infinite;
13 + #{$name}animation-timing-function: linear;
14 +
15 +}
16 +@keyframes spin {
17 + from { transform:rotate(0deg); }
18 + to { transform:rotate(360deg); }
19 +}
20 +
21 +@-webkit-keyframes spin {
22 + from { -webkit-transform: rotate(0deg); }
23 + to { -webkit-transform: rotate(360deg); }
24 +}
25 +
26 +@-moz-keyframes spin {
27 + from { -moz-transform: rotate(0deg); }
28 + to { -moz-transform: rotate(360deg); }
29 +}
30 +
31 +@-ms-keyframes spin {
32 + from { -ms-transform: rotate(0deg); }
33 + to { -ms-transform: rotate(360deg); }
34 +}
...\ No newline at end of file ...\ No newline at end of file
1 +@mixin navbar-color($color){
2 + background-color: $color;
3 +}
4 +
5 +@mixin center-item(){
6 + left: 0;
7 + right: 0;
8 + margin-right: auto;
9 + margin-left: auto;
10 + position: absolute;
11 +}
...\ No newline at end of file ...\ No newline at end of file
1 +@mixin social-buttons-color ($color){
2 +
3 + border-color: $color;
4 + color: $color;
5 +
6 + &:hover,
7 + &:focus,
8 + &:active,
9 + &.active,
10 + .open > &.dropdown-toggle {
11 + background-color: $transparent-bg;
12 + color: $color;
13 + border-color: $color;
14 + opacity: 1;
15 + }
16 +
17 + &:disabled,
18 + &[disabled],
19 + &.disabled {
20 + background-color: $transparent-bg;
21 + border-color: $color;
22 + }
23 +
24 + &.btn-fill {
25 + color: $white-color;
26 + background-color: $color;
27 + opacity: 0.9;
28 +
29 + &:hover,
30 + &:focus,
31 + &:active,
32 + &.active,
33 + .open > &.dropdown-toggle{
34 + background-color: $color;
35 + color: $white-color;
36 + opacity: 1;
37 + }
38 +
39 + }
40 +
41 +
42 +}
43 +
...\ No newline at end of file ...\ No newline at end of file
1 +@mixin pill-style($color){
2 + border: 1px solid $color;
3 + color: $color;
4 +}
...\ No newline at end of file ...\ No newline at end of file
1 +// Opacity
2 +
3 +@mixin opacity($opacity) {
4 + opacity: $opacity;
5 + // IE8 filter
6 + $opacity-ie: ($opacity * 100);
7 + filter: #{alpha(opacity=$opacity-ie)};
8 +}
9 +
10 +@mixin black-filter($opacity){
11 + top: 0;
12 + left: 0;
13 + height: 100%;
14 + width: 100%;
15 + position: absolute;
16 + background-color: rgba(17,17,17,$opacity);
17 + display: block;
18 + content: "";
19 + z-index: 1;
20 +}
...\ No newline at end of file ...\ No newline at end of file
1 +// User select
2 +// For selecting text on the page
3 +
4 +@mixin user-select($select) {
5 + -webkit-user-select: $select;
6 + -moz-user-select: $select;
7 + -ms-user-select: $select; // IE10+
8 + user-select: $select;
9 +}
10 +
11 +@mixin box-shadow($shadow...) {
12 + -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
13 + box-shadow: $shadow;
14 +}
15 +
16 +// Box sizing
17 +@mixin box-sizing($boxmodel) {
18 + -webkit-box-sizing: $boxmodel;
19 + -moz-box-sizing: $boxmodel;
20 + box-sizing: $boxmodel;
21 +}
22 +
23 +
24 +@mixin transition($time, $type){
25 + -webkit-transition: all $time $type;
26 + -moz-transition: all $time $type;
27 + -o-transition: all $time $type;
28 + -ms-transition: all $time $type;
29 + transition: all $time $type;
30 +}
31 +
32 +@mixin transform-scale($value){
33 + -webkit-transform: scale($value);
34 + -moz-transform: scale($value);
35 + -o-transform: scale($value);
36 + -ms-transform: scale($value);
37 + transform: scale($value);
38 +}
39 +
40 +@mixin transform-translate-x($value){
41 + -webkit-transform: translate3d($value, 0, 0);
42 + -moz-transform: translate3d($value, 0, 0);
43 + -o-transform: translate3d($value, 0, 0);
44 + -ms-transform: translate3d($value, 0, 0);
45 + transform: translate3d($value, 0, 0);
46 +}
47 +
48 +@mixin transform-origin($coordinates){
49 + -webkit-transform-origin: $coordinates;
50 + -moz-transform-origin: $coordinates;
51 + -o-transform-origin: $coordinates;
52 + -ms-transform-origin: $coordinates;
53 + transform-origin: $coordinates;
54 +}
55 +
56 +@mixin icon-gradient ($top-color, $bottom-color){
57 + background: $top-color;
58 + background: -moz-linear-gradient(top, $top-color 0%, $bottom-color 100%);
59 + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$top-color), color-stop(100%,$bottom-color));
60 + background: -webkit-linear-gradient(top, $top-color 0%,$bottom-color 100%);
61 + background: -o-linear-gradient(top, $top-color 0%,$bottom-color 100%);
62 + background: -ms-linear-gradient(top, $top-color 0%,$bottom-color 100%);
63 + background: linear-gradient(to bottom, $top-color 0%,$bottom-color 100%);
64 + background-size: 150% 150%;
65 +}
66 +
67 +@mixin radial-gradient($extern-color, $center-color){
68 + background: $extern-color;
69 + background: -moz-radial-gradient(center, ellipse cover, $center-color 0%, $extern-color 100%); /* FF3.6+ */
70 + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,$center-color), color-stop(100%,$extern-color)); /* Chrome,Safari4+ */
71 + background: -webkit-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* Chrome10+,Safari5.1+ */
72 + background: -o-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* Opera 12+ */
73 + background: -ms-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* IE10+ */
74 + background: radial-gradient(ellipse at center, $center-color 0%,$extern-color 100%); /* W3C */
75 + background-size: 550% 450%;
76 +}
77 +
78 +@mixin vertical-align {
79 + position: relative;
80 + top: 50%;
81 + -webkit-transform: translateY(-50%);
82 + -ms-transform: translateY(-50%);
83 + transform: translateY(-50%);
84 +}
85 +
86 +@mixin rotate-180(){
87 + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
88 + -webkit-transform: rotate(180deg);
89 + -ms-transform: rotate(180deg);
90 + transform: rotate(180deg);
91 +}
92 +
93 +@mixin bar-animation($type){
94 + -webkit-animation: $type 500ms linear 0s;
95 + -moz-animation: $type 500ms linear 0s;
96 + animation: $type 500ms 0s;
97 + -webkit-animation-fill-mode: forwards;
98 + -moz-animation-fill-mode: forwards;
99 + animation-fill-mode: forwards;
100 +}
101 +
102 +@mixin topbar-x-rotation(){
103 + @keyframes topbar-x {
104 + 0% {top: 0px; transform: rotate(0deg); }
105 + 45% {top: 6px; transform: rotate(145deg); }
106 + 75% {transform: rotate(130deg); }
107 + 100% {transform: rotate(135deg); }
108 + }
109 + @-webkit-keyframes topbar-x {
110 + 0% {top: 0px; -webkit-transform: rotate(0deg); }
111 + 45% {top: 6px; -webkit-transform: rotate(145deg); }
112 + 75% {-webkit-transform: rotate(130deg); }
113 + 100% { -webkit-transform: rotate(135deg); }
114 + }
115 + @-moz-keyframes topbar-x {
116 + 0% {top: 0px; -moz-transform: rotate(0deg); }
117 + 45% {top: 6px; -moz-transform: rotate(145deg); }
118 + 75% {-moz-transform: rotate(130deg); }
119 + 100% { -moz-transform: rotate(135deg); }
120 + }
121 +}
122 +
123 +@mixin topbar-back-rotation(){
124 + @keyframes topbar-back {
125 + 0% { top: 6px; transform: rotate(135deg); }
126 + 45% { transform: rotate(-10deg); }
127 + 75% { transform: rotate(5deg); }
128 + 100% { top: 0px; transform: rotate(0); }
129 + }
130 +
131 + @-webkit-keyframes topbar-back {
132 + 0% { top: 6px; -webkit-transform: rotate(135deg); }
133 + 45% { -webkit-transform: rotate(-10deg); }
134 + 75% { -webkit-transform: rotate(5deg); }
135 + 100% { top: 0px; -webkit-transform: rotate(0); }
136 + }
137 +
138 + @-moz-keyframes topbar-back {
139 + 0% { top: 6px; -moz-transform: rotate(135deg); }
140 + 45% { -moz-transform: rotate(-10deg); }
141 + 75% { -moz-transform: rotate(5deg); }
142 + 100% { top: 0px; -moz-transform: rotate(0); }
143 + }
144 +}
145 +
146 +@mixin bottombar-x-rotation(){
147 + @keyframes bottombar-x {
148 + 0% {bottom: 0px; transform: rotate(0deg);}
149 + 45% {bottom: 6px; transform: rotate(-145deg);}
150 + 75% {transform: rotate(-130deg);}
151 + 100% {transform: rotate(-135deg);}
152 + }
153 + @-webkit-keyframes bottombar-x {
154 + 0% {bottom: 0px; -webkit-transform: rotate(0deg);}
155 + 45% {bottom: 6px; -webkit-transform: rotate(-145deg);}
156 + 75% {-webkit-transform: rotate(-130deg);}
157 + 100% {-webkit-transform: rotate(-135deg);}
158 + }
159 + @-moz-keyframes bottombar-x {
160 + 0% {bottom: 0px; -moz-transform: rotate(0deg);}
161 + 45% {bottom: 6px; -moz-transform: rotate(-145deg);}
162 + 75% {-moz-transform: rotate(-130deg);}
163 + 100% {-moz-transform: rotate(-135deg);}
164 + }
165 +}
166 +
167 +@mixin bottombar-back-rotation{
168 + @keyframes bottombar-back {
169 + 0% { bottom: 6px;transform: rotate(-135deg);}
170 + 45% { transform: rotate(10deg);}
171 + 75% { transform: rotate(-5deg);}
172 + 100% { bottom: 0px;transform: rotate(0);}
173 + }
174 + @-webkit-keyframes bottombar-back {
175 + 0% {bottom: 6px;-webkit-transform: rotate(-135deg);}
176 + 45% {-webkit-transform: rotate(10deg);}
177 + 75% {-webkit-transform: rotate(-5deg);}
178 + 100% {bottom: 0px;-webkit-transform: rotate(0);}
179 + }
180 + @-moz-keyframes bottombar-back {
181 + 0% {bottom: 6px;-moz-transform: rotate(-135deg);}
182 + 45% {-moz-transform: rotate(10deg);}
183 + 75% {-moz-transform: rotate(-5deg);}
184 + 100% {bottom: 0px;-moz-transform: rotate(0);}
185 + }
186 +
187 +}
188 +
189 +
1 +/*!
2 +
3 + =========================================================
4 + * Light Bootstrap Dashboard React - v1.3.0
5 + * Based on Light Bootstrap Dashboard - v1.3.0
6 + =========================================================
7 +
8 + * Product Page: http://www.creative-tim.com/product/light-bootstrap-dashboard-react
9 + * Copyright 2019 Creative Tim (http://www.creative-tim.com)
10 + * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)
11 +
12 + =========================================================
13 +
14 + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
15 +
16 + */
17 +
18 +@import "lbd/variables";
19 +@import "lbd/mixins";
20 +
21 +// Core CSS
22 +@import "lbd/typography";
23 +@import "lbd/misc";
24 +@import "lbd/sidebar-and-main-panel";
25 +@import "lbd/buttons";
26 +@import "lbd/inputs";
27 +
28 +@import "lbd/alerts";
29 +@import "lbd/tables";
30 +
31 +@import "lbd/checkbox-radio-switch";
32 +@import "lbd/navbars";
33 +@import "lbd/footers";
34 +
35 +// Fancy Stuff
36 +@import "lbd/dropdown";
37 +@import "lbd/cards";
38 +@import "lbd/chartist";
39 +@import "lbd/responsive";
1 +/*!
2 +
3 +=========================================================
4 +* Light Bootstrap Dashboard React - v1.3.0
5 +=========================================================
6 +
7 +* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 +* Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 +* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)
10 +
11 +* Coded by Creative Tim
12 +
13 +=========================================================
14 +
15 +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 +
17 +*/
18 +import React, { Component } from "react";
19 +
20 +export class Card extends Component {
21 + render() {
22 + return (
23 + <div className={"card" + (this.props.plain ? " card-plain" : "")}>
24 + <div className={"header" + (this.props.hCenter ? " text-center" : "")}>
25 + <h4 className="title" style={{fontWeight: 400}}>{this.props.title}</h4>
26 + <p className="category">{this.props.category}</p>
27 + </div>
28 + <div
29 + className={
30 + "content" +
31 + (this.props.ctAllIcons ? " all-icons" : "") +
32 + (this.props.ctTableFullWidth ? " table-full-width" : "") +
33 + (this.props.ctTableResponsive ? " table-responsive" : "") +
34 + (this.props.ctTableUpgrade ? " table-upgrade" : "")
35 + }
36 + >
37 + {this.props.content}
38 +
39 + <div className="footer">
40 + {this.props.legend}
41 + {this.props.stats != null ? <hr /> : ""}
42 + <div className="stats">
43 + <i className={this.props.statsIcon} /> {this.props.stats}
44 + </div>
45 + </div>
46 + </div>
47 + </div>
48 + );
49 + }
50 +}
51 +
52 +export default Card;
1 +/*!
2 +
3 +=========================================================
4 +* Light Bootstrap Dashboard React - v1.3.0
5 +=========================================================
6 +
7 +* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 +* Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 +* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)
10 +
11 +* Coded by Creative Tim
12 +
13 +=========================================================
14 +
15 +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 +
17 +*/
18 +import React, { Component } from "react";
19 +import { Button } from "react-bootstrap";
20 +import cx from "classnames";
21 +import PropTypes from "prop-types";
22 +
23 +class CustomButton extends Component {
24 + render() {
25 + const { fill, simple, pullRight, round, block, ...rest } = this.props;
26 +
27 + const btnClasses = cx({
28 + "btn-fill": fill,
29 + "btn-simple": simple,
30 + "pull-right": pullRight,
31 + "btn-block": block,
32 + "btn-round": round
33 + });
34 +
35 + return <Button className={btnClasses} {...rest} />;
36 + }
37 +}
38 +
39 +CustomButton.propTypes = {
40 + fill: PropTypes.bool,
41 + simple: PropTypes.bool,
42 + pullRight: PropTypes.bool,
43 + block: PropTypes.bool,
44 + round: PropTypes.bool
45 +};
46 +
47 +export default CustomButton;
1 +/*!
2 +
3 +=========================================================
4 +* Light Bootstrap Dashboard React - v1.3.0
5 +=========================================================
6 +
7 +* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 +* Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 +* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)
10 +
11 +* Coded by Creative Tim
12 +
13 +=========================================================
14 +
15 +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 +
17 +*/
18 +import React, { Component } from "react";
19 +
20 +class CustomCheckbox extends Component {
21 + constructor(props) {
22 + super(props);
23 + this.state = {
24 + is_checked: props.isChecked ? true : false
25 + };
26 + this.handleClick = this.handleClick.bind(this);
27 + }
28 + handleClick() {
29 + this.setState({ is_checked: !this.state.is_checked });
30 + }
31 + render() {
32 + const { isChecked, number, label, inline, ...rest } = this.props;
33 + const classes =
34 + inline !== undefined ? "checkbox checkbox-inline" : "checkbox";
35 + return (
36 + <div className={classes}>
37 + <input
38 + id={number}
39 + type="checkbox"
40 + onChange={this.handleClick}
41 + checked={this.state.is_checked}
42 + {...rest}
43 + />
44 + <label htmlFor={number}>{label}</label>
45 + </div>
46 + );
47 + }
48 +}
49 +
50 +export default CustomCheckbox;
1 +/*!
2 +
3 +=========================================================
4 +* Light Bootstrap Dashboard React - v1.3.0
5 +=========================================================
6 +
7 +* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 +* Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 +* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)
10 +
11 +* Coded by Creative Tim
12 +
13 +=========================================================
14 +
15 +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 +
17 +*/
18 +import React, { Component } from "react";
19 +
20 +class CustomRadio extends Component {
21 + render() {
22 + const { number, label, option, name, ...rest } = this.props;
23 +
24 + return (
25 + <div className="radio">
26 + <input id={number} name={name} type="radio" value={option} {...rest} />
27 + <label htmlFor={number}>{label}</label>
28 + </div>
29 + );
30 + }
31 +}
32 +
33 +export default CustomRadio;
1 +/*!
2 +
3 +=========================================================
4 +* Light Bootstrap Dashboard React - v1.3.0
5 +=========================================================
6 +
7 +* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 +* Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 +* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)
10 +
11 +* Coded by Creative Tim
12 +
13 +=========================================================
14 +
15 +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 +
17 +*/
18 +/*eslint-disable*/
19 +import React, { Component } from "react";
20 +import Toggle from "react-toggle";
21 +``
22 +class FixedPlugin extends Component {
23 + constructor(props) {
24 + super(props);
25 + this.state = {
26 + classes: "dropdown show-dropdown open",
27 + bg_checked: true,
28 + bgImage: this.props.bgImage
29 + };
30 + }
31 + handleClick = () => {
32 + this.props.handleFixedClick();
33 + };
34 + onChangeClick = () => {
35 + this.props.handleHasImage(!this.state.bg_checked);
36 + this.setState({ bg_checked: !this.state.bg_checked });
37 + };
38 + render() {
39 + return (
40 + <div className="fixed-plugin">
41 + <div id="fixedPluginClasses" className={this.props.fixedClasses}>
42 + <div onClick={this.handleClick}>
43 + <i className="fa fa-cog fa-2x" />
44 + </div>
45 + <ul className="dropdown-menu">
46 + <li className="header-title">Configuration</li>
47 + <li className="adjustments-line">
48 + <p className="pull-left">Background Image</p>
49 + <div className="pull-right">
50 + <Toggle
51 + defaultChecked={this.state.bg_checked}
52 + onChange={this.onChangeClick}
53 + />
54 + </div>
55 + <div className="clearfix" />
56 + </li>
57 + <li className="adjustments-line">
58 + <a className="switch-trigger">
59 + <p>Filters</p>
60 + <div className="pull-right">
61 + <span
62 + className={
63 + this.props.bgColor === "black"
64 + ? "badge filter active"
65 + : "badge filter"
66 + }
67 + data-color="black"
68 + onClick={() => {
69 + this.props.handleColorClick("black");
70 + }}
71 + />
72 + <span
73 + className={
74 + this.props.bgColor === "azure"
75 + ? "badge filter badge-azure active"
76 + : "badge filter badge-azure"
77 + }
78 + data-color="azure"
79 + onClick={() => {
80 + this.props.handleColorClick("azure");
81 + }}
82 + />
83 + <span
84 + className={
85 + this.props.bgColor === "green"
86 + ? "badge filter badge-green active"
87 + : "badge filter badge-green"
88 + }
89 + data-color="green"
90 + onClick={() => {
91 + this.props.handleColorClick("green");
92 + }}
93 + />
94 + <span
95 + className={
96 + this.props.bgColor === "orange"
97 + ? "badge filter badge-orange active"
98 + : "badge filter badge-orange"
99 + }
100 + data-color="orange"
101 + onClick={() => {
102 + this.props.handleColorClick("orange");
103 + }}
104 + />
105 + <span
106 + className={
107 + this.props.bgColor === "red"
108 + ? "badge filter badge-red active"
109 + : "badge filter badge-red"
110 + }
111 + data-color="red"
112 + onClick={() => {
113 + this.props.handleColorClick("red");
114 + }}
115 + />
116 + <span
117 + className={
118 + this.props.bgColor === "purple"
119 + ? "badge filter badge-purple active"
120 + : "badge filter badge-purple"
121 + }
122 + data-color="purple"
123 + onClick={() => {
124 + this.props.handleColorClick("purple");
125 + }}
126 + />
127 + </div>
128 + <div className="clearfix" />
129 + </a>
130 + </li>
131 + <li className="header-title">Sidebar Images</li>
132 + <li className={this.state["bgImage"] === imagine1 ? "active" : ""}>
133 + <a
134 + className="img-holder switch-trigger"
135 + onClick={() => {
136 + this.setState({ bgImage: imagine1 });
137 + this.props.handleImageClick(imagine1);
138 + }}
139 + >
140 + <img src={imagine1} alt="..." />
141 + </a>
142 + </li>
143 + <li className={this.state["bgImage"] === imagine2 ? "active" : ""}>
144 + <a
145 + className="img-holder switch-trigger"
146 + onClick={() => {
147 + this.setState({ bgImage: imagine2 });
148 + this.props.handleImageClick(imagine2);
149 + }}
150 + >
151 + <img src={imagine2} alt="..." />
152 + </a>
153 + </li>
154 + <li className={this.state["bgImage"] === imagine3 ? "active" : ""}>
155 + <a
156 + className="img-holder switch-trigger"
157 + onClick={() => {
158 + this.setState({ bgImage: imagine3 });
159 + this.props.handleImageClick(imagine3);
160 + }}
161 + >
162 + <img src={imagine3} alt="..." />
163 + </a>
164 + </li>
165 + <li className={this.state["bgImage"] === imagine4 ? "active" : ""}>
166 + <a
167 + className="img-holder switch-trigger"
168 + onClick={() => {
169 + this.setState({ bgImage: imagine4 });
170 + this.props.handleImageClick(imagine4);
171 + }}
172 + >
173 + <img src={imagine4} alt="..." />
174 + </a>
175 + </li>
176 +
177 + <li className="button-container">
178 + <div className="">
179 + <a
180 + href="https://www.creative-tim.com/product/light-bootstrap-dashboard-react?ref=lbdr-fixed-plugin"
181 + target="_blank"
182 + className="btn btn-success btn-block btn-fill"
183 + >
184 + Download free!
185 + </a>
186 + </div>
187 + </li>
188 + <li className="button-container">
189 + <div className="">
190 + <a
191 + href="https://www.creative-tim.com/product/light-bootstrap-dashboard-pro-react?ref=lbdr-fixed-plugin"
192 + target="_blank"
193 + className="btn btn-warning btn-block btn-fill"
194 + >
195 + Buy Pro
196 + </a>
197 + </div>
198 + </li>
199 + <li className="button-container">
200 + <a
201 + href="https://demos.creative-tim.com/light-bootstrap-dashboard-react/#/documentation/getting-started?ref=lbdr-fixed-plugin"
202 + target="_blank"
203 + className="btn btn-fill btn-info"
204 + >
205 + Documentation
206 + </a>
207 + </li>
208 + </ul>
209 + </div>
210 + </div>
211 + );
212 + }
213 +}
214 +
215 +export default FixedPlugin;
1 +/*!
2 +
3 +=========================================================
4 +* Light Bootstrap Dashboard React - v1.3.0
5 +=========================================================
6 +
7 +* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 +* Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 +* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)
10 +
11 +* Coded by Creative Tim
12 +
13 +=========================================================
14 +
15 +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 +
17 +*/
18 +import React, { Component } from "react";
19 +import { Grid } from "react-bootstrap";
20 +
21 +class Footer extends Component {
22 + render() {
23 + return (
24 + <footer className="footer">
25 + <Grid fluid>
26 + <nav className="pull-left">
27 + <ul>
28 + <li>
29 + <a href="http://mate.ryulth.com/admin/kickboard">Home</a>
30 + </li>
31 + <li>
32 + <a href="http://mate.ryulth.com/admin/kickboard">Company</a>
33 + </li>
34 + </ul>
35 + </nav>
36 + <p className="copyright pull-right">
37 + &copy; {new Date().getFullYear()}{" "}
38 + <a href="#">
39 + Wico
40 + </a>
41 + </p>
42 + </Grid>
43 + </footer>
44 + );
45 + }
46 +}
47 +
48 +export default Footer;
1 +/*!
2 +
3 +=========================================================
4 +* Light Bootstrap Dashboard React - v1.3.0
5 +=========================================================
6 +
7 +* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 +* Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 +* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)
10 +
11 +* Coded by Creative Tim
12 +
13 +=========================================================
14 +
15 +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 +
17 +*/
18 +import React, { Component } from "react";
19 +import { FormGroup, ControlLabel, FormControl, Row } from "react-bootstrap";
20 +
21 +function FieldGroup({ label, ...props }) {
22 + return (
23 + <FormGroup>
24 + <ControlLabel>{label}</ControlLabel>
25 + <FormControl {...props} />
26 + </FormGroup>
27 + );
28 +}
29 +
30 +export class FormInputs extends Component {
31 + render() {
32 + var row = [];
33 + for (var i = 0; i < this.props.ncols.length; i++) {
34 + row.push(
35 + <div key={i} className={this.props.ncols[i]}>
36 + <FieldGroup {...this.props.properties[i]} />
37 + </div>
38 + );
39 + }
40 + return <Row>{row}</Row>;
41 + }
42 +}
43 +
44 +export default FormInputs;
1 +import React, {useEffect} from "react";
2 +import Dimensions from "react-dimensions";
3 +import res from './res';
4 +
5 +let map;
6 +let markers = [];
7 +let infoWindow;
8 +
9 +const getBatteryUrlStringByBattery = battery => {
10 + if (battery >= 0 && battery < 25) {
11 + return "0-25";
12 + } else if (battery >= 25 && battery < 50) {
13 + return "25-50";
14 + } else if (battery >= 50 && battery < 75) {
15 + return "50-75";
16 + }
17 + return "75-100";
18 +};
19 +
20 +class GoogleMap extends React.Component {
21 + constructor(props) {
22 + super(props);
23 + this.state = {
24 + kickboards: []
25 + };
26 + }
27 +
28 + componentDidMount() {
29 + // fetch('http://1.201.143.67:5901/kickboard/all')
30 + // .then(r => r.json())
31 + // .then(d => {
32 + // if(!d.success || !d.data.length) return;
33 + //
34 + // // console.log(d.data)
35 + // this.setState({
36 + // kickboards: d.data
37 + // })
38 + // })
39 + // .then(d => {
40 + // const { google } = window;
41 + //
42 + // infoWindow = new window.google.maps.InfoWindow({});
43 + //
44 + // map = new google.maps.Map(document.getElementById("map"), {
45 + // zoom: 11,
46 + // center: {lat: -34.397, lng: 150.644},
47 + // disableDefaultUI: true,
48 + // zoomControl: true
49 + // });
50 + //
51 + // google.maps.event.addListenerOnce(map, "idle", () => {
52 + // this.getCurrentLocation();
53 + // });
54 + // })
55 + // .catch(err => console.log(err));
56 +
57 + const response = JSON.parse(res);
58 + this.setState({
59 + kickboards: response.data
60 + });
61 +
62 + const { google } = window;
63 + infoWindow = new window.google.maps.InfoWindow({});
64 +
65 + map = new google.maps.Map(document.getElementById("map"), {
66 + zoom: 8,
67 + center: {lat: -34.397, lng: 150.644},
68 + disableDefaultUI: true,
69 + zoomControl: true
70 + });
71 +
72 + google.maps.event.addListenerOnce(map, "idle", () => {
73 + this.getCurrentLocation();
74 + });
75 + }
76 +
77 + getCurrentLocation() {
78 + if (navigator.geolocation) {
79 + map.setCenter(
80 + new window.google.maps.LatLng({
81 + lat: 37.2441088,
82 + lng: 127.05054720000001
83 + })
84 + );
85 + } else {
86 + map.setCenter(
87 + new window.google.maps.LatLng({
88 + lat: 37.2441088,
89 + lng: 127.05054720000001
90 + })
91 + );
92 + }
93 + }
94 +
95 + drawMarkers() {
96 + if (map === null) return;
97 + // const selectedMarker = new window.google.maps.Marker({});
98 +
99 + markers = this.state.kickboards.map(item => {
100 +
101 + const marker = new window.google.maps.Marker({
102 + position: new window.google.maps.LatLng({
103 + lat: item.coordinates.y,
104 + lng: item.coordinates.x
105 + })
106 + });
107 +
108 + const markerContent = `
109 + <div>
110 + <div style="color:black"> 시리얼번호: ${item.serial_number} </div>
111 + </div>
112 + `;
113 +
114 + marker.item = item;
115 +
116 + this.renderMarker(marker);
117 +
118 + window.google.maps.event.addListener(marker, "click", () => {
119 + infoWindow.close();
120 + infoWindow.setContent(markerContent);
121 + infoWindow.open(map, marker);
122 + this.props.setKbId(item.serial_number);
123 + });
124 +
125 + window.google.maps.event.addListener(marker, "mouseover", () => {
126 + infoWindow.close();
127 + infoWindow.setContent(markerContent);
128 + infoWindow.open(map, marker);
129 + this.highlightMarker(marker);
130 + });
131 +
132 + window.google.maps.event.addListener(marker, "mouseout", () => {
133 + infoWindow.close();
134 + this.renderMarker(marker);
135 + });
136 +
137 + marker.setMap(map);
138 + return marker;
139 + });
140 + }
141 +
142 + renderMarker(marker) {
143 + const { battery } = marker.item;
144 + const batteryString = getBatteryUrlStringByBattery(battery);
145 +
146 + const iconUrl = require(`../../assets/marker/ic_map_pin_battery${batteryString}.png`);
147 + marker.setIcon(iconUrl);
148 + }
149 +
150 + highlightMarker(marker) {
151 + const { battery } = marker.item;
152 + const batteryString = getBatteryUrlStringByBattery(battery);
153 +
154 + const iconUrl = require(`../../assets/marker/ic_map_pin_battery${batteryString}_selected.png`);
155 + marker.setIcon(iconUrl);
156 + }
157 +
158 + moveToMarker(kbId) {
159 + if (map == null || markers.length === 0) {
160 + return;
161 + }
162 +
163 + const searchedMarker = markers.find(
164 + marker => marker.item.serial_number === kbId
165 + );
166 +
167 + if(!searchedMarker) return;
168 + const markerContent = `
169 + <div>
170 + <div style="color:black"> 시리얼번호: ${kbId} </div>
171 + </div>
172 + `;
173 +
174 + infoWindow.close();
175 + infoWindow.setContent(markerContent);
176 + infoWindow.open(map, searchedMarker);
177 +
178 + map.setCenter(
179 + new window.google.maps.LatLng({
180 + lat: searchedMarker.item.coordinates.y,
181 + lng: searchedMarker.item.coordinates.x
182 + })
183 + );
184 + map.setZoom(14);
185 + }
186 +
187 + componentDidUpdate(prevProps, prevState, snapshot) {
188 + this.moveToMarker(this.props.kbId);
189 + }
190 +
191 + render() {
192 + this.drawMarkers();
193 +
194 + return (
195 + <div id="map" style={{height:this.props.containerWidth}}>
196 + </div>
197 + )
198 + }
199 +};
200 +
201 +export default Dimensions()(GoogleMap) // Enhanced component
...\ No newline at end of file ...\ No newline at end of file
1 +import React from "react";
2 +import { Card } from "components/Card/Card.jsx";
3 +import Dimensions from 'react-dimensions'
4 +import moment from 'moment';
5 +import GoogleMap from './GoogleMap';
6 +import KickboardStatusCard from "./KickboardStatusCard";
7 +
8 +const GoogleMapCard = (props) => {
9 + const getStats = `마지막 업데이트 ${moment().format("YYYY/MM/DD hh:mm")}`;
10 +
11 + return (
12 + <Card
13 + id="chartActivity"
14 + title="서비스 현황"
15 + stats={getStats}
16 + statsIcon="fa fa-history"
17 + content={
18 + <GoogleMap kbId={props.kbId} setKbId={props.setKbId}/>
19 + }
20 + />
21 + );
22 +};
23 +
24 +export default GoogleMapCard // Enhanced component
...\ No newline at end of file ...\ No newline at end of file
1 +import React from "react";
2 +import {Table} from "react-bootstrap";
3 +import { Card } from "components/Card/Card.jsx";
4 +import styled from "styled-components";
5 +
6 +const A = styled.a`
7 + color: #333;
8 + text-decoration: underline;
9 + font-weight: 500;
10 +`;
11 +
12 +const UserDataKey = {
13 + user_id: '유저ID',
14 + rent_datetime: '대여 시각',
15 + return_datetime: '반납 시각',
16 + rental_time: '대여 시간',
17 + rental_distance: '이동 거리',
18 + rental_fee: '대여 금액',
19 +};
20 +
21 +function timestampToString(stamp) {
22 + if (!stamp) return '';
23 + const date = stamp.split('T')[0];
24 + const time = stamp.split('T')[1].split('.')[0];
25 +
26 + return `${date} ${time}`;
27 +}
28 +
29 +const KickboardHistoryTable = (props) => {
30 + const {kbId, historyData} = props;
31 +
32 + return (
33 + <Card
34 + title={`${kbId}번 킥보드 사용자 대여 히스토리`}
35 + ctTableFullWidth
36 + ctTableResponsive
37 + content={
38 + <Table striped hover>
39 + <thead>
40 + <tr>
41 + {Object.values(UserDataKey).map((prop, key) => {
42 + return <th key={key}>{prop}</th>;
43 + })}
44 + </tr>
45 + </thead>
46 + <tbody>
47 + {historyData.map((data, idx) => {
48 + const {user_id, rent_datetime, return_datetime, rental_time, rental_distance, rental_fee} = data;
49 + const userHistoryUrl = `http://mate.ryulth.com/admin/user/?userId=${user_id}`;
50 +
51 + return (
52 + <tr key={idx}>
53 + <td><A href={userHistoryUrl}>{user_id}</A></td>
54 + <td>{timestampToString(rent_datetime)}</td>
55 + <td>{timestampToString(return_datetime)}</td>
56 + <td>{rental_time}</td>
57 + <td>{rental_distance}km</td>
58 + <td>{rental_fee}</td>
59 + </tr>
60 + );
61 + })}
62 + </tbody>
63 + </Table>
64 + }
65 + />
66 + )
67 +};
68 +
69 +export default KickboardHistoryTable;
70 +
1 +import React, {useState, useEffect} from "react";
2 +import { Card } from "components/Card/Card.jsx";
3 +import {Col, Row} from "react-bootstrap";
4 +import styled from "styled-components"
5 +import moment from "moment";
6 +
7 +// border: 1px solid #E3E3E3;
8 +const KickboardButton = styled.div`
9 + font-size: 15px;
10 + background-color: #e7e7e7;
11 + border-radius: 4px;
12 + color: #565656;
13 + padding: 8px 12px;
14 + height: 40px;
15 + box-shadow: none;
16 + margin: 0 auto;
17 + text-align: center;
18 + margin-bottom: 20px;
19 +
20 + &:hover {
21 + background-color: #565656;
22 + color: white;
23 + cursor: pointer;
24 + }
25 +`;
26 +
27 +const KickboardDataList = styled.ul`
28 + font-size: 16px;
29 +`;
30 +
31 +const KickboardData = styled.li`
32 + padding: 5px 0;
33 +`;
34 +
35 +const kickboardDataKey = {
36 + battery: '배터리',
37 + coordinates: '킥보드 위치',
38 + states: '킥보드 상태',
39 + is_good_posture: '킥보드 자세 상태',
40 + total_driven_distance: '총 누적 이동 거리',
41 + total_driven_time: '총 누적 대여 시간',
42 + is_good_gps_signal: 'GPS 신호 양호 여부',
43 + connected: '현재 네트워크 연결 여부',
44 + updated_coordinates_datetime: '최근 gps 업데이트 시각',
45 + connection_updated_datetime: '최근 연결 업데이트 시각',
46 + model_name: '모델명',
47 + updated_datetime: '최근 업데이트 시각',
48 +};
49 +
50 +// "serial_number":"000165",
51 +// "coordinates":{"x":126.64504,"y":37.39101},
52 +// "states":"{}",
53 +// "model_name":"MA01",
54 +// "is_good_gps_signal":true,
55 +// "updated_coordinates_datetime":"2020-04-19T15:27:39.427Z",
56 +// "connection_updated_datetime":"2020-04-18T12:43:00.393Z",
57 +// "is_good_posture":true,
58 +// "connected":true,
59 +// "total_driven_distance":3534,
60 +// "total_driven_time":162636,
61 +// "updated_datetime":"2020-06-12T10:00:28.715Z",
62 +// "battery":72
63 +
64 +function timestampToString(stamp) {
65 + if (!stamp) return '';
66 + const date = stamp.split('T')[0];
67 + const time = stamp.split('T')[1].split('.')[0];
68 +
69 + return `${date} ${time}`;
70 +}
71 +
72 +const KickboardStatusCard = (props) => {
73 + const {kbId, kbData} = props;
74 + const { battery, coordinates, states, is_good_posture, total_driven_distance,
75 + total_driven_time, is_good_gps_signal, connected, updated_coordinates_datetime,
76 + connection_updated_datetime, model_name, updated_datetime } = kbData;
77 + const getStats = `마지막 업데이트 ${moment().format("YYYY/MM/DD hh:mm")}`;
78 +
79 + return (
80 + <Card
81 + title={`${kbId}번 킥보드`}
82 + stats={getStats}
83 + statsIcon="fa fa-history"
84 + content={
85 + <Row>
86 + <Col md={4} sm={4} xs={4}>
87 + <KickboardButton>경적 울리기</KickboardButton>
88 + </Col>
89 + <Col md={4} sm={4} xs={4}>
90 + <KickboardButton>반납하기</KickboardButton>
91 + </Col>
92 + <Col md={4} sm={4} xs={4}>
93 + <KickboardButton>운행 종료하기</KickboardButton>
94 + </Col>
95 + <KickboardDataList>
96 + <KickboardData>{kickboardDataKey.battery} : {battery}%</KickboardData>
97 + <KickboardData>{kickboardDataKey.coordinates} : {JSON.stringify(coordinates)}</KickboardData>
98 + <KickboardData>{kickboardDataKey.states} : {states}</KickboardData>
99 + <KickboardData>{kickboardDataKey.is_good_posture} : {is_good_posture ? '양호' : '불량'}</KickboardData>
100 + <KickboardData>{kickboardDataKey.total_driven_distance} : {total_driven_distance}</KickboardData>
101 + <KickboardData>{kickboardDataKey.total_driven_time} : {total_driven_time}</KickboardData>
102 + <KickboardData>{kickboardDataKey.is_good_gps_signal} : {is_good_gps_signal ? '양호' : '불량'}</KickboardData>
103 + <KickboardData>{kickboardDataKey.connected} : {connected ? '연결됨' : '연결되지 않음'}</KickboardData>
104 + <KickboardData>{kickboardDataKey.updated_coordinates_datetime} : {timestampToString(updated_coordinates_datetime)}</KickboardData>
105 + <KickboardData>{kickboardDataKey.connection_updated_datetime} : {timestampToString(connection_updated_datetime)}</KickboardData>
106 + <KickboardData>{kickboardDataKey.model_name} : {model_name}</KickboardData>
107 + <KickboardData>{kickboardDataKey.updated_datetime} : {timestampToString(updated_datetime)}</KickboardData>
108 + </KickboardDataList>
109 + </Row>
110 + }
111 + />
112 + );
113 +};
114 +
115 +export default KickboardStatusCard;
...\ No newline at end of file ...\ No newline at end of file
1 +import React, {useRef} from "react";
2 +import styled from "styled-components";
3 +
4 +const SearchButtonWrapper = styled.div`
5 + display: flex;
6 + flex-direction: row;
7 + justify-content: space-between;
8 +`;
9 +
10 +const SearchInput = styled.input`
11 + width: 80%;
12 +`;
13 +
14 +const ApplyButton = styled.div`
15 + width: 17%;
16 + background-color: #e7e7e7;
17 + border-radius: 4px;
18 + color: #565656;
19 + text-align: center;
20 +
21 + display: flex;
22 + justify-content: center;
23 + align-items: center;
24 +
25 + &:hover {
26 + background-color: #565656;
27 + color: white;
28 + cursor: pointer;
29 +`;
30 +
31 +
32 +
33 +const SearchButton = (props) => {
34 + const {setKbId} = props;
35 + const inputEl = useRef(null);
36 +
37 + const searchKickboard = (e) => {
38 + const searchText = inputEl.current.value;
39 +
40 + fetch(`http://1.201.143.67:5901/kickboard/${searchText}`)
41 + .then(r => r.json())
42 + .then(d => {
43 + if(d.success && d.data.length) setKbId(searchText);
44 + else window.alert('해당 번호의 킥보드가 존재하지 않습니다!')
45 + })
46 + .catch(err => console.log(err));
47 + };
48 +
49 + return (
50 + <SearchButtonWrapper>
51 + <SearchInput ref={inputEl} type="text" className="form-control" placeholder={"킥보드 번호로 검색하기"}/>
52 + <ApplyButton onClick={(e) => searchKickboard(e)}><span>검색</span></ApplyButton>
53 + </SearchButtonWrapper>
54 + );
55 +};
56 +
57 +export default SearchButton;
58 +
59 +
This diff is collapsed. Click to expand it.
1 +/*!
2 +
3 +=========================================================
4 +* Light Bootstrap Dashboard React - v1.3.0
5 +=========================================================
6 +
7 +* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 +* Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 +* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)
10 +
11 +* Coded by Creative Tim
12 +
13 +=========================================================
14 +
15 +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 +
17 +*/
18 +import React, { Component } from "react";
19 +import { Navbar } from "react-bootstrap";
20 +
21 +import AdminNavbarLinks from "./AdminNavbarLinks.jsx";
22 +
23 +class Header extends Component {
24 + constructor(props) {
25 + super(props);
26 + this.mobileSidebarToggle = this.mobileSidebarToggle.bind(this);
27 + this.state = {
28 + sidebarExists: false
29 + };
30 + }
31 + mobileSidebarToggle(e) {
32 + if (this.state.sidebarExists === false) {
33 + this.setState({
34 + sidebarExists: true
35 + });
36 + }
37 + e.preventDefault();
38 + document.documentElement.classList.toggle("nav-open");
39 + var node = document.createElement("div");
40 + node.id = "bodyClick";
41 + node.onclick = function() {
42 + this.parentElement.removeChild(this);
43 + document.documentElement.classList.toggle("nav-open");
44 + };
45 + document.body.appendChild(node);
46 + }
47 + render() {
48 + return (
49 + <Navbar fluid>
50 + <Navbar.Header>
51 + <Navbar.Brand>
52 + <a href="#pablo" style={{color: '#333333'}}>{this.props.brandText}</a>
53 + </Navbar.Brand>
54 + <Navbar.Toggle onClick={this.mobileSidebarToggle} />
55 + </Navbar.Header>
56 + <Navbar.Collapse>
57 + <AdminNavbarLinks />
58 + </Navbar.Collapse>
59 + </Navbar>
60 + );
61 + }
62 +}
63 +
64 +export default Header;
1 +/*!
2 +
3 +=========================================================
4 +* Light Bootstrap Dashboard React - v1.3.0
5 +=========================================================
6 +
7 +* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react
8 +* Copyright 2019 Creative Tim (https://www.creative-tim.com)
9 +* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)
10 +
11 +* Coded by Creative Tim
12 +
13 +=========================================================
14 +
15 +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 +
17 +*/
18 +import React, { Component } from "react";
19 +import { NavItem, Nav, NavDropdown, MenuItem } from "react-bootstrap";
20 +
21 +class AdminNavbarLinks extends Component {
22 + render() {
23 + return (
24 + <div>
25 + <Nav pullRight>
26 + <NavItem eventKey={3} href="#">
27 + Log out
28 + </NavItem>
29 + </Nav>
30 + </div>
31 + );
32 + }
33 +}
34 +
35 +export default AdminNavbarLinks;
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.