Bläddra i källkod

Merge branch 'responsive-layout' of fyindr/siimee into dev

tags/0.0.3^2
maeda 3 år sedan
förälder
incheckning
2c7a0aea15

Binär
frontend/assets/images/woman-1-lg.jpg Visa fil


Binär
frontend/assets/images/woman-1-sm.jpg Visa fil


+ 149
- 0
frontend/assets/sass/icons.scss Visa fil

@@ -0,0 +1,149 @@
1
+@font-face {
2
+    font-family: 'icomoon';
3
+    src: url('assets/fonts/icomoon.eot?6rmrq3');
4
+    src: url('assets/fonts/icomoon.eot?6rmrq3#iefix') format('embedded-opentype'),
5
+        url('assets/fonts/icomoon.ttf?6rmrq3') format('truetype'),
6
+        url('assets/fonts/icomoon.woff?6rmrq3') format('woff'),
7
+        url('assets/fonts/icomoon.svg?6rmrq3#icomoon') format('svg');
8
+    font-weight: normal;
9
+    font-style: normal;
10
+    font-display: block;
11
+}
12
+
13
+[class^="icon-"],
14
+[class*=" icon-"] {
15
+    /* use !important to prevent issues with browser extensions that change fonts */
16
+    font-family: 'icomoon' !important;
17
+    speak: never;
18
+    font-style: normal;
19
+    font-weight: normal;
20
+    font-variant: normal;
21
+    text-transform: none;
22
+    line-height: 1;
23
+
24
+    /* Better Font Rendering =========== */
25
+    -webkit-font-smoothing: antialiased;
26
+    -moz-osx-font-smoothing: grayscale;
27
+
28
+    &.icon-cross:before {
29
+        content: "\e911";
30
+    }
31
+
32
+    &.icon-dots-three-horizontal:before {
33
+        content: "\e917";
34
+    }
35
+
36
+    &.icon-dots-three-vertical:before {
37
+        content: "\e91a";
38
+    }
39
+
40
+    &.icon-address:before {
41
+        content: "\e900";
42
+    }
43
+
44
+    &.icon-area-graph:before {
45
+        content: "\e901";
46
+    }
47
+
48
+    &.icon-calendar:before {
49
+        content: "\e902";
50
+    }
51
+
52
+    &.icon-certified:before {
53
+        content: "\e903";
54
+    }
55
+
56
+    &.icon-chat:before {
57
+        content: "\e904";
58
+    }
59
+
60
+    &.icon-checkmark:before {
61
+        content: "\e905";
62
+    }
63
+
64
+    &.icon-clock:before {
65
+        content: "\e906";
66
+    }
67
+
68
+    &.icon-cog:before {
69
+        content: "\e907";
70
+    }
71
+
72
+    &.icon-compass:before {
73
+        content: "\e908";
74
+    }
75
+
76
+    &.icon-emoji-happy:before {
77
+        content: "\e909";
78
+    }
79
+
80
+    &.icon-envelope:before {
81
+        content: "\e90a";
82
+    }
83
+
84
+    &.icon-graduation-cap:before {
85
+        content: "\e90b";
86
+    }
87
+
88
+    &.icon-guage:before {
89
+        content: "\e90c";
90
+    }
91
+
92
+    &.icon-heart:before {
93
+        content: "\e90d";
94
+    }
95
+
96
+    &.icon-home:before {
97
+        content: "\e90e";
98
+    }
99
+
100
+    &.icon-location:before {
101
+        content: "\e90f";
102
+    }
103
+
104
+    &.icon-lock:before {
105
+        content: "\e910";
106
+    }
107
+
108
+    &.icon-paper-plane:before {
109
+        content: "\e912";
110
+    }
111
+
112
+    &.icon-people:before {
113
+        content: "\e913";
114
+    }
115
+
116
+    &.icon-plus:before {
117
+        content: "\e914";
118
+    }
119
+
120
+    &.icon-price-ribbon:before {
121
+        content: "\e915";
122
+    }
123
+
124
+    &.icon-star:before {
125
+        content: "\e916";
126
+    }
127
+
128
+    &.icon-tools:before {
129
+        content: "\e918";
130
+    }
131
+
132
+    &.icon-truck:before {
133
+        content: "\e919";
134
+    }
135
+
136
+    &.icon-search:before {
137
+        content: "\e986";
138
+    }
139
+
140
+    &.icon-eye:before {
141
+        content: "\e9ce";
142
+    }
143
+
144
+    &.icon-eye-blocked:before {
145
+        content: "\e9d1";
146
+        }
147
+        
148
+
149
+    }

+ 13
- 0
frontend/assets/sass/main.scss Visa fil

@@ -0,0 +1,13 @@
1
+@import 'variables';
2
+@import 'icons';
3
+
4
+
5
+// Global Styles
6
+html {
7
+    background-color: $black;
8
+    font-size: $base-font-size;
9
+}
10
+body{
11
+    margin:0;
12
+    font-family: 'Source Code Pro', monospace;
13
+}

+ 48
- 0
frontend/assets/sass/variables.scss Visa fil

@@ -0,0 +1,48 @@
1
+// Color Variables
2
+$yellow: #F7F5A6;
3
+$light-green: #C2F279;
4
+$dark-green: #4D9127;
5
+$red: #FF3660;
6
+$light-blue: #05DBF2;
7
+$dark-blue: #183770;
8
+$dark-grey: #1F2024;
9
+$grey: #4C5264;
10
+$light-grey: #D5D5D5;
11
+$black: #000;
12
+
13
+// Define the base font size
14
+$base-font-size: 14px;
15
+
16
+// Define breakpoints
17
+$mobile: 350px;
18
+$tablet: 768px;
19
+$desktop: 960px;
20
+
21
+// Define font sizes for each breakpoint
22
+$mobile-font-size: $base-font-size;
23
+$tablet-font-size: $base-font-size * 1.2;
24
+$desktop-font-size: $base-font-size * 1.4;
25
+
26
+// Set default font size
27
+html {
28
+    font-size: $base-font-size;
29
+}
30
+
31
+// Media queries for font sizes
32
+@media (min-width: $mobile) {
33
+    html {
34
+        font-size: $mobile-font-size;
35
+    }
36
+}
37
+
38
+@media (min-width: $tablet) {
39
+    html {
40
+        font-size: $tablet-font-size;
41
+    }
42
+}
43
+
44
+@media (min-width: $desktop) {
45
+    html {
46
+        font-size: $desktop-font-size;
47
+    }
48
+}

+ 0
- 1
frontend/index.html Visa fil

@@ -4,7 +4,6 @@
4 4
 <head>
5 5
     <meta charset="UTF-8" />
6 6
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
-    <link rel="stylesheet" href="style.css">
8 7
     <title>Siimee</title>
9 8
 </head>
10 9
 

+ 4
- 0
frontend/src/App.vue Visa fil

@@ -73,7 +73,11 @@ export default {
73 73
 </script>
74 74
 
75 75
 <style lang="sass">
76
+@import '../assets/sass/main'
76 77
 #app > .w-app > main
77 78
     position: relative
78 79
     top: 50px
80
+    max-width: 960px
81
+    width:100%
82
+    margin: 0 auto
79 83
 </style>

+ 34
- 14
frontend/src/components/MainNav.vue Visa fil

@@ -1,23 +1,23 @@
1 1
 <template lang="pug">
2 2
 w-toolbar.mt6.py1(bottom fixed)
3
-    router-link.w-flex.column(:to='`/`')
4
-        w-button.pa8(bg-color='primary')
5
-            w-icon.mr1.icon-home(xl)
6
-    router-link.w-flex.column(:to='`/pairs`')
7
-        w-button.pa8(bg-color='primary')
8
-            w-icon.mr1.icon-people(xl)
3
+    router-link.w-flex.column.exact-active-link(:to='`/`')
4
+        w-button.pa8()
5
+            w-icon.mr1.icon-home(xl :class="{ 'icon-selected': $route.path === '/' }")
6
+    router-link.w-flex.column.exact-active-link(:to='`/pairs`')
7
+        w-button.pa8()
8
+            w-icon.mr1.icon-people(xl, :class="{ 'icon-selected': $route.path === '/pairs' }")
9 9
             //- p.text-upper pending matches
10
-    router-link.w-flex.column(:to='`/messages`')
11
-        w-button.pa8(bg-color='primary')
12
-            w-icon.mr1.icon-chat(xl)
10
+    router-link.w-flex.column.exact-active-link(:to='`/messages`')
11
+        w-button.pa8()
12
+            w-icon.mr1.icon-chat(xl, :class="{ 'icon-selected': $route.path === '/messages' }")
13 13
             //- p.text-upper active chats
14
-    router-link.w-flex.column(:to='`/onboarding`')
15
-        w-button.pa8(bg-color='primary')
14
+    router-link.w-flex.column.exact-active-link(:to='`/onboarding`')
15
+        w-button.pa8()
16 16
             w-icon.mr1.icon-area-graph(xl)
17 17
             //- p.text-upper survey
18
-    router-link.w-flex.column(:to='`/settings`')
19
-        w-button.pa8(bg-color='primary' disabled)
20
-            w-icon.mr1.icon-cog(xl)
18
+    router-link.w-flex.column.exact-active-link(:to='`/settings`')
19
+        w-button.pa8(disabled)
20
+            w-icon.mr1.icon-cog(xl :class="{ 'icon-selected': $route.path === '/settings' }")
21 21
             //- p.text-upper settings
22 22
 </template>
23 23
 
@@ -28,3 +28,23 @@ export default {
28 28
     name: 'MainNav',
29 29
 }
30 30
 </script>
31
+
32
+<style lang="sass">
33
+@import '../assets/sass/main.scss'
34
+.w-toolbar
35
+    max-width: 960px
36
+    width:100%
37
+    margin: auto
38
+    background: $dark-grey
39
+    color: $light-grey
40
+
41
+    .w-button
42
+        background-color: $dark-grey
43
+    
44
+    .icon-selected
45
+        color: $light-green
46
+    
47
+    a
48
+        color:$light-grey
49
+</style>
50
+

+ 0
- 2
frontend/src/components/NamePlate.vue Visa fil

@@ -48,11 +48,9 @@ export default {
48 48
         flex-direction: column
49 49
         align-items: center
50 50
         justify-content: center
51
-        padding: 15px
52 51
         min-height: 10vh
53 52
         width: 100%
54 53
         &.box
55
-            background-color: #D5D5D5
56 54
             border-radius: 6px
57 55
             height: 15vw
58 56
             width: 15vw

+ 5
- 4
frontend/src/components/PairsList.vue Visa fil

@@ -40,22 +40,23 @@ const showMenu = ref(false)
40 40
 </script>
41 41
 
42 42
 <style lang="sass">
43
+@import '../assets/sass/main'
43 44
 .pairs-list
44 45
     color: #fff
45 46
     article
46
-        font-family: 'Century Gothic'
47
+        font-family: 'Source Pro'
47 48
         .dot--icon
48 49
             width:12px
49 50
             height:12px
50 51
             margin: 11px
51 52
             border-radius:50%
52
-            background-color:#60C3FF
53
+            background-color:$light-blue
53 54
         .avatar
54 55
             width:40px
55 56
             height:40px
56 57
             margin: 11px
57 58
             border-radius: 6px
58
-            background-color:#D5D5D5
59
+            background-color:$light-blue
59 60
         .idCard
60 61
             color: #fff
61 62
             margin: 11px
@@ -64,5 +65,5 @@ const showMenu = ref(false)
64 65
             p
65 66
                 font-size: 14px
66 67
 .w-menu--card
67
-    background-color: #000000 !important
68
+    background-color: $black !important
68 69
 </style>

+ 7
- 5
frontend/src/components/ProfileCard.vue Visa fil

@@ -66,8 +66,8 @@ import TagList from './TagList.vue'
66 66
 import PairingButton from './PairingButton.vue'
67 67
 
68 68
 const router = useRouter()
69
-// const isPaired = ref(true)
70
-const isPaired = ref(false)
69
+const isPaired = ref(true)
70
+// const isPaired = ref(false)
71 71
 
72 72
 const props = defineProps({
73 73
     card: {
@@ -134,19 +134,21 @@ const onPass = async () => {
134 134
 </script>
135 135
 
136 136
 <style lang="sass">
137
+@import '../assets/sass/main'
138
+
137 139
 .profile-card-list--card
138
-    background-color: #000
140
+    background-color: $black
139 141
     color: #fff
140 142
     width: 100%
141 143
     max-width: 450px
142 144
     margin: 11px auto
143 145
     header > .w-button
144
-        background-color: #116006
146
+        background-color: $dark-green
145 147
         color: #fff
146 148
     footer
147 149
         margin-bottom: 22px
148 150
         p
149
-            font-family: Century Gothic, CenturyGothic, AppleGothic, sans-serif
151
+            font-family: Source Pro, AppleGothic, sans-serif
150 152
             margin: 11px auto
151 153
             padding: 0 7px
152 154
             line-height: 1.619em

+ 25
- 4
frontend/src/components/ProfileCardList.vue Visa fil

@@ -1,6 +1,6 @@
1 1
 <template lang="pug">
2
-section.profile-card-list.xs12.w-flex.column
3
-    article
2
+section.profile-card-list.xs12.w-flex
3
+    article.w-flex.xs-col.sm-row.sm-wrap
4 4
         ProfileCard.match-layout(
5 5
             :aspects='aspects'
6 6
             :card='card'
@@ -8,7 +8,10 @@ section.profile-card-list.xs12.w-flex.column
8 8
             :key='`${card.pid}-${i}`'
9 9
             v-for='(card, i) in cards'
10 10
         )
11
-        w-button.pa8.more-results(bg-color='primary' @click="loadMoreResults()")
11
+        w-button.pa8.more-results(
12
+            @click='loadMoreResults()'
13
+            bg-color='primary'
14
+        )
12 15
 </template>
13 16
 
14 17
 <script setup>
@@ -36,13 +39,31 @@ const props = defineProps({
36 39
     },
37 40
 })
38 41
 
39
-const loadMoreResults = () => { emit('loadMore') } // TODO update to scroll
42
+const loadMoreResults = () => {
43
+    emit('loadMore')
44
+} // TODO update to scroll
40 45
 </script>
41 46
 
42 47
 <style lang="sass">
48
+@import '../assets/sass/main'
49
+
43 50
 .profile-card-list
44 51
     > header > .w-select >.primary
45 52
         margin-top: 0
53
+
54
+@media (min-width: $tablet)
55
+    section.profile-card-list.xs12.w-flex > article
56
+        display: flex
57
+        flex-wrap: wrap
58
+        flex-direction: row
59
+
60
+@media (max-width: $tablet)
61
+    section.profile-card-list.xs12.w-flex > article
62
+        display: flex
63
+        flex-wrap: wrap
64
+        flex-direction: column
65
+
66
+
46 67
 .more-results
47 68
     margin-bottom: 2em
48 69
 </style>

+ 14
- 13
frontend/src/components/SummaryBar.vue Visa fil

@@ -30,9 +30,9 @@ section.w-flex.column.pb5
30 30
                     p {{ tabContent[item].tab }}
31 31
                     SpiderChart(
32 32
                         :labels='aspects.map(label => label.name)'
33
-                        :profile-data='aspects.map(data => data.percentage)'
34
-                        :target-data='targetScore'
33
+                        :profile-data='aspects.map(data => data.percentage * 10)'
35 34
                         :profile-name='name'
35
+                        :target-data='targetScore'
36 36
                         v-if='isTab'
37 37
                     )
38 38
 
@@ -75,9 +75,9 @@ export default {
75 75
             required: true,
76 76
             type: Object,
77 77
         },
78
-        name:{
79
-            required:true,
80
-            type: String
78
+        name: {
79
+            required: true,
80
+            type: String,
81 81
         },
82 82
         isTab: {
83 83
             required: false,
@@ -92,16 +92,17 @@ export default {
92 92
     },
93 93
     emits: ['tab-change'],
94 94
     computed: {
95
-        targetScore(){
96
-            try{
97
-                let aspectResponses = currentProfile._profile.responses.filter(r => [1,2,3,4,5,6].indexOf(r.response_key_id) !== -1)
98
-                return aspectResponses.map(r => Number(r.val)) 
99
-            }
100
-            catch(e){
95
+        targetScore() {
96
+            try {
97
+                let aspectResponses = currentProfile._profile.responses.filter(
98
+                    r => [1, 2, 3, 4, 5, 6].indexOf(r.response_key_id) !== -1,
99
+                )
100
+                return aspectResponses.map(r => Number(r.val))
101
+            } catch (e) {
101 102
                 console.warn('error: No aspect responses for current profile.')
102
-                return [1,1,1,1,1,1]
103
+                return [1, 1, 1, 1, 1, 1]
103 104
             }
104
-        }
105
+        },
105 106
     },
106 107
     methods: {
107 108
         onTabChanged(tabs) {

+ 12
- 6
frontend/src/entities/card/card.js Visa fil

@@ -1,5 +1,5 @@
1 1
 /** @module card/card */
2
-import { aspectsArr } from "../../utils/lang.js"
2
+import { aspectsArr } from '../../utils/lang.js'
3 3
 
4 4
 const DEFAULT_ABOUT =
5 5
     'Hello! My name is L.L. and I am a nurse from New York. I have been in the healthcare industry for over 6 years.'
@@ -134,14 +134,20 @@ const makeCardFromProfile = profile => {
134 134
     c.locale = `${profile.city}, ${profile.state}`
135 135
     c.email = profile.user_email
136 136
 
137
-    let aspectResponses = profile?.responses.filter(r => aspectsArr.indexOf(r.response_key_id) !== -1)
138
-    if(aspectResponses.length){ // if user has responses for aspects we overwrite default percentages
137
+    let aspectResponses = profile?.responses.filter(
138
+        r => aspectsArr.indexOf(r.response_key_id) !== -1,
139
+    )
140
+    if (aspectResponses.length) {
141
+        // if user has responses for aspects we overwrite default percentages
139 142
         c.aspects.map(a => {
140
-            a.percentage = Number(aspectResponses.find(r => responseKeyIdToAspectName[r.response_key_id] == a.name).val )
141
-            return a 
143
+            a.percentage = Number(
144
+                aspectResponses.find(
145
+                    r => responseKeyIdToAspectName[r.response_key_id] == a.name,
146
+                ).val,
147
+            )
148
+            return a
142 149
         })
143 150
     }
144
-
145 151
     // TODO: delete me later
146 152
     if (profile.profile_description) {
147 153
         c.summary.updateTab('about', profile.profile_description)

+ 7
- 12
frontend/src/entities/survey/survey.answer.validator.js Visa fil

@@ -7,17 +7,8 @@ const answerValidator = {
7 7
         minDomainSegments: 2,
8 8
         tlds: { allow: domains },
9 9
     }),
10
-    // Comment out and uncomment below for more robust password testing
11
-    password: Joi.string().min(14).max(30),
12
-    // TODO: consider using a more robust library for password validation
13
-    // password: Joi.string()
14
-        // .min(14)
15
-        // .max(30)
16
-        // .pattern(
17
-            // new RegExp(
18
-                // '^(?=.*[!@#$%^&*()_+\\-=[\\]{};\':"\\\\|,.<>\\/?])(?=.*[!@#$%^&*()_+\\-=[\\]{};\':"\\\\|,.<>\\/?])[a-zA-Z0-9!@#$%^&*()_+\\-=[\\]{};\':"\\\\|,.<>\\/?]{14,}$',
19
-            // ),
20
-        // ),
10
+
11
+    password: Joi.string().min(10).max(30).pattern(new RegExp('[a-zA-Z0-9]+')),
21 12
     // TODO: Change if going international (only works in usa)
22 13
     zipcode: Joi.string().min(5).max(5).pattern(new RegExp('^[0-9]{5}$')),
23 14
     seeking: Joi.string(),
@@ -31,7 +22,11 @@ const answerValidator = {
31 22
     distance: Joi.string()
32 23
         .min(4)
33 24
         .max(15)
34
-        .pattern(new RegExp('^\\d{1,3}(\\.\\d{1,2})?\\s?(mi|km|mile|miles|kilometer|kilometers)$')),
25
+        .pattern(
26
+            new RegExp(
27
+                '^\\d{1,3}(\\.\\d{1,2})?\\s?(mi|km|mile|miles|kilometer|kilometers)$',
28
+            ),
29
+        ),
35 30
     blurb: Joi.string().max(200),
36 31
     value: Joi.string(),
37 32
     aspect: Joi.number(),

+ 6
- 5
frontend/src/views/HomeView.vue Visa fil

@@ -1,14 +1,12 @@
1 1
 <template lang="pug">
2 2
 main.view--home
3
-    article.w-flex.column.align-center
3
+    p {{ cP._profile.user_name }}
4
+    article.w-flex.sm-column.md-row.align-center
4 5
         template(v-if='isLoading')
5 6
             w-spinner(bounce)
6 7
 
7 8
         template(v-else-if='!isLoading && cards.length > 0')
8
-            ProfileCardList(
9
-                :cards='cards' 
10
-                @loadMore='onLoadMore'
11
-            )
9
+            ProfileCardList(:cards='cards' @loadMore='onLoadMore')
12 10
 
13 11
         template(v-else-if='cards.length === 0')
14 12
             p No profiles in match_queue.
@@ -70,6 +68,9 @@ export default {
70 68
         }
71 69
     },
72 70
     computed: {
71
+        cP() {
72
+            return currentProfile
73
+        },
73 74
         cards() {
74 75
             let initialCards = currentProfile.queue.map(qProfile =>
75 76
                 convertToCard(qProfile),

+ 0
- 155
frontend/style.css Visa fil

@@ -1,155 +0,0 @@
1
-@font-face {
2
-  font-family: 'icomoon';
3
-  src: url('assets/fonts/icomoon.eot?6rmrq3');
4
-  src: url('assets/fonts/icomoon.eot?6rmrq3#iefix') format('embedded-opentype'),
5
-    url('assets/fonts/icomoon.ttf?6rmrq3') format('truetype'),
6
-    url('assets/fonts/icomoon.woff?6rmrq3') format('woff'),
7
-    url('assets/fonts/icomoon.svg?6rmrq3#icomoon') format('svg');
8
-  font-weight: normal;
9
-  font-style: normal;
10
-  font-display: block;
11
-}
12
-
13
-[class^="icon-"],
14
-[class*=" icon-"] {
15
-  /* use !important to prevent issues with browser extensions that change fonts */
16
-  font-family: 'icomoon' !important;
17
-  speak: never;
18
-  font-style: normal;
19
-  font-weight: normal;
20
-  font-variant: normal;
21
-  text-transform: none;
22
-  line-height: 1;
23
-
24
-  /* Better Font Rendering =========== */
25
-  -webkit-font-smoothing: antialiased;
26
-  -moz-osx-font-smoothing: grayscale;
27
-}
28
-
29
-.icon-cross:before {
30
-  content: "\e911";
31
-}
32
-
33
-.icon-dots-three-horizontal:before {
34
-  content: "\e917";
35
-}
36
-
37
-.icon-dots-three-vertical:before {
38
-  content: "\e91a";
39
-}
40
-
41
-.icon-address:before {
42
-  content: "\e900";
43
-}
44
-
45
-.icon-area-graph:before {
46
-  content: "\e901";
47
-}
48
-
49
-.icon-calendar:before {
50
-  content: "\e902";
51
-}
52
-
53
-.icon-certified:before {
54
-  content: "\e903";
55
-}
56
-
57
-.icon-chat:before {
58
-  content: "\e904";
59
-}
60
-
61
-.icon-checkmark:before {
62
-  content: "\e905";
63
-}
64
-
65
-.icon-clock:before {
66
-  content: "\e906";
67
-}
68
-
69
-.icon-cog:before {
70
-  content: "\e907";
71
-}
72
-
73
-.icon-compass:before {
74
-  content: "\e908";
75
-}
76
-
77
-.icon-emoji-happy:before {
78
-  content: "\e909";
79
-}
80
-
81
-.icon-envelope:before {
82
-  content: "\e90a";
83
-}
84
-
85
-.icon-graduation-cap:before {
86
-  content: "\e90b";
87
-}
88
-
89
-.icon-guage:before {
90
-  content: "\e90c";
91
-}
92
-
93
-.icon-heart:before {
94
-  content: "\e90d";
95
-}
96
-
97
-.icon-home:before {
98
-  content: "\e90e";
99
-}
100
-
101
-.icon-location:before {
102
-  content: "\e90f";
103
-}
104
-
105
-.icon-lock:before {
106
-  content: "\e910";
107
-}
108
-
109
-.icon-paper-plane:before {
110
-  content: "\e912";
111
-}
112
-
113
-.icon-people:before {
114
-  content: "\e913";
115
-}
116
-
117
-.icon-plus:before {
118
-  content: "\e914";
119
-}
120
-
121
-.icon-price-ribbon:before {
122
-  content: "\e915";
123
-}
124
-
125
-.icon-star:before {
126
-  content: "\e916";
127
-}
128
-
129
-.icon-tools:before {
130
-  content: "\e918";
131
-}
132
-
133
-.icon-truck:before {
134
-  content: "\e919";
135
-}
136
-
137
-.icon-search:before {
138
-  content: "\e986";
139
-}
140
-
141
-.icon-eye:before {
142
-  content: "\e9ce";
143
-}
144
-
145
-.icon-eye-blocked:before {
146
-  content: "\e9d1";
147
-}
148
-
149
-.icon-bookmarks:before {
150
-  content: "\e9d3";
151
-}
152
-
153
-.icon-arrow-left2:before {
154
-  content: "\ea40";
155
-}

Laddar…
Avbryt
Spara