Project

General

Profile

1
// Name:            Nav
2
// Description:     Defines styles for list navigations
3
//
4
// Component:       `uk-nav`
5
//
6
// Sub-objects:     `uk-nav-header`
7
//                  `uk-nav-divider`
8
//                  `uk-nav-sub`
9
//
10
// Modifiers:       `uk-nav-parent-icon`
11
//                  `uk-nav-default`
12
//                  `uk-nav-primary`
13
//                  `uk-nav-center`
14
//
15
// States:          `uk-active`
16
//                  `uk-parent`
17
//                  `uk-open`
18
//                  `uk-touch`
19
//
20
// ========================================================================
21

    
22

    
23
// Variables
24
// ========================================================================
25

    
26
@nav-item-padding-vertical:                     5px;
27
@nav-item-padding-horizontal:                   0;
28

    
29
@nav-sublist-padding-vertical:                  5px;
30
@nav-sublist-padding-left:                      15px;
31
@nav-sublist-deeper-padding-left:               15px;
32
@nav-sublist-item-padding-vertical:             2px;
33

    
34
@nav-parent-icon-width:                         (@global-line-height * 1em);
35
@nav-parent-icon-height:                        @nav-parent-icon-width;
36
@nav-parent-icon-color:                         @global-color;
37

    
38
@nav-header-padding-vertical:                   @nav-item-padding-vertical;
39
@nav-header-padding-horizontal:                 @nav-item-padding-horizontal;
40
@nav-header-font-size:                          @global-small-font-size;
41
@nav-header-text-transform:                     uppercase;
42
@nav-header-margin-top:                         @global-margin;
43

    
44
@nav-divider-margin-vertical:                   5px;
45
@nav-divider-margin-horizontal:                 0;
46

    
47
@nav-default-item-color:                        @global-muted-color;
48
@nav-default-item-hover-color:                  @global-color;
49
@nav-default-item-active-color:                 @global-emphasis-color;
50
@nav-default-header-color:                      @global-emphasis-color;
51
@nav-default-divider-border-width:              @global-border-width;
52
@nav-default-divider-border:                    @global-border;
53
@nav-default-sublist-item-color:                @global-muted-color;
54
@nav-default-sublist-item-hover-color:          @global-color;
55

    
56
@nav-primary-item-font-size:                    @global-large-font-size;
57
@nav-primary-item-line-height:                  @global-line-height;
58
@nav-primary-item-color:                        @global-muted-color;
59
@nav-primary-item-hover-color:                  @global-color;
60
@nav-primary-item-active-color:                 @global-emphasis-color;
61
@nav-primary-header-color:                      @global-emphasis-color;
62
@nav-primary-divider-border-width:              @global-border-width;
63
@nav-primary-divider-border:                    @global-border;
64
@nav-primary-sublist-item-color:                @global-muted-color;
65
@nav-primary-sublist-item-hover-color:          @global-color;
66

    
67
@internal-nav-parent-close-image:               "../../images/backgrounds/nav-parent-close.svg";
68
@internal-nav-parent-open-image:                "../../images/backgrounds/nav-parent-open.svg";
69

    
70

    
71
/* ========================================================================
72
   Component: Nav
73
 ========================================================================== */
74

    
75
/*
76
 * Reset
77
 * 1. Prepare lists
78
 * 2. Prepare links
79
 * 3. Remove default focus style
80
 */
81

    
82
/* 1 */
83
.uk-nav,
84
.uk-nav ul {
85
    margin: 0;
86
    padding: 0;
87
    list-style: none;
88
}
89

    
90
/* 2 */
91
.uk-nav li > a {
92
    display: block;
93
    text-decoration: none;
94
}
95

    
96
/* 3 */
97
.uk-nav li > a:focus { outline: none; }
98

    
99
/*
100
 * Items
101
 * Must target `a` elements to exclude other elements (e.g. lists)
102
 */
103

    
104
.uk-nav > li > a { padding: @nav-item-padding-vertical @nav-item-padding-horizontal; }
105

    
106

    
107
/* Sublists
108
 ========================================================================== */
109

    
110
/*
111
 * Level 2
112
 * `ul` needed for higher specificity to override padding
113
 */
114

    
115
ul.uk-nav-sub {
116
    padding: @nav-sublist-padding-vertical 0 @nav-sublist-padding-vertical @nav-sublist-padding-left;
117
    .hook-nav-sub;
118
}
119

    
120
/*
121
 * Level 3 and deeper
122
 */
123

    
124
.uk-nav-sub ul { padding-left: @nav-sublist-deeper-padding-left; }
125

    
126
/*
127
 * Items
128
 */
129

    
130
.uk-nav-sub a { padding: @nav-sublist-item-padding-vertical 0; }
131

    
132

    
133
/* Parent icon modifier
134
 ========================================================================== */
135

    
136
.uk-nav-parent-icon > .uk-parent > a::after {
137
    content: "";
138
    width: @nav-parent-icon-width;
139
    height: @nav-parent-icon-height;
140
    float: right;
141
    .svg-fill(@internal-nav-parent-close-image, "#000", @nav-parent-icon-color);
142
    background-repeat: no-repeat;
143
    background-position: 50% 50%;
144
    .hook-nav-parent-icon;
145
}
146

    
147
.uk-nav-parent-icon > .uk-parent.uk-open > a::after { .svg-fill(@internal-nav-parent-open-image, "#000", @nav-parent-icon-color); }
148

    
149

    
150
/* Header
151
 ========================================================================== */
152

    
153
.uk-nav-header {
154
    padding: @nav-header-padding-vertical @nav-header-padding-horizontal;
155
    text-transform: @nav-header-text-transform;
156
    font-size: @nav-header-font-size;
157
    .hook-nav-header;
158
}
159

    
160
.uk-nav-header:not(:first-child) { margin-top: @nav-header-margin-top; }
161

    
162

    
163
/* Divider
164
 ========================================================================== */
165

    
166
.uk-nav-divider {
167
    margin: @nav-divider-margin-vertical @nav-divider-margin-horizontal;
168
    .hook-nav-divider;
169
}
170

    
171

    
172
/* Default modifier
173
 ========================================================================== */
174

    
175
.uk-nav-default {
176
    .hook-nav-default;
177
}
178

    
179
/*
180
 * Items
181
 */
182

    
183
.uk-nav-default > li > a {
184
    color: @nav-default-item-color;
185
    .hook-nav-default-item;
186
}
187

    
188
/* Hover + Focus */
189
.uk-nav-default > li > a:hover,
190
.uk-nav-default > li > a:focus {
191
    color: @nav-default-item-hover-color;
192
    .hook-nav-default-item-hover;
193
}
194

    
195
/* Active */
196
.uk-nav-default > li.uk-active > a {
197
    color: @nav-default-item-active-color;
198
    .hook-nav-default-item-active;
199
}
200

    
201
/*
202
 * Header
203
 */
204

    
205
.uk-nav-default .uk-nav-header {
206
    color: @nav-default-header-color;
207
    .hook-nav-default-header;
208
}
209

    
210
/*
211
 * Divider
212
 */
213

    
214
.uk-nav-default .uk-nav-divider {
215
    border-top: @nav-default-divider-border-width solid @nav-default-divider-border;
216
    .hook-nav-default-divider;
217
}
218

    
219
/*
220
 * Sublists
221
 */
222

    
223
.uk-nav-default .uk-nav-sub a { color: @nav-default-sublist-item-color; }
224

    
225
.uk-nav-default .uk-nav-sub a:hover,
226
.uk-nav-default .uk-nav-sub a:focus { color: @nav-default-sublist-item-hover-color; }
227

    
228

    
229
/* Primary modifier
230
 ========================================================================== */
231

    
232
.uk-nav-primary {
233
    .hook-nav-primary;
234
}
235

    
236
/*
237
 * Items
238
 */
239

    
240
.uk-nav-primary > li > a {
241
    font-size: @nav-primary-item-font-size;
242
    line-height: @nav-primary-item-line-height;
243
    color: @nav-primary-item-color;
244
    .hook-nav-primary-item;
245
}
246

    
247
/* Hover + Focus */
248
.uk-nav-primary > li > a:hover,
249
.uk-nav-primary > li > a:focus {
250
    color: @nav-primary-item-hover-color;
251
    .hook-nav-primary-item-hover;
252
}
253

    
254
/* Active */
255
.uk-nav-primary > li.uk-active > a {
256
    color: @nav-primary-item-active-color;
257
    .hook-nav-primary-item-active;
258
}
259

    
260
/*
261
 * Header
262
 */
263

    
264
.uk-nav-primary .uk-nav-header {
265
    color: @nav-primary-header-color;
266
    .hook-nav-primary-header;
267
}
268

    
269
/*
270
 * Divider
271
 */
272

    
273
.uk-nav-primary .uk-nav-divider {
274
    border-top: @nav-primary-divider-border-width solid @nav-primary-divider-border;
275
    .hook-nav-primary-divider;
276
}
277

    
278
/*
279
 * Sublists
280
 */
281

    
282
.uk-nav-primary .uk-nav-sub a { color: @nav-primary-sublist-item-color; }
283

    
284
.uk-nav-primary .uk-nav-sub a:hover,
285
.uk-nav-primary .uk-nav-sub a:focus { color: @nav-primary-sublist-item-hover-color; }
286

    
287

    
288
/* Alignment modifier
289
 ========================================================================== */
290

    
291
.uk-nav-center { text-align: center; }
292

    
293
/* Sublists */
294
.uk-nav-center .uk-nav-sub,
295
.uk-nav-center .uk-nav-sub ul { padding-left: 0; }
296

    
297
/* Parent icon modifier  */
298
.uk-nav-center.uk-nav-parent-icon > .uk-parent > a::after { position: absolute; }
299

    
300

    
301
// Hooks
302
// ========================================================================
303

    
304
.hook-nav-misc;
305

    
306
.hook-nav-sub() {}
307
.hook-nav-parent-icon() {}
308
.hook-nav-header() {}
309
.hook-nav-divider() {}
310
.hook-nav-default() {}
311
.hook-nav-default-item() {}
312
.hook-nav-default-item-hover() {}
313
.hook-nav-default-item-active() {}
314
.hook-nav-default-header() {}
315
.hook-nav-default-divider() {}
316
.hook-nav-primary() {}
317
.hook-nav-primary-item() {}
318
.hook-nav-primary-item-hover() {}
319
.hook-nav-primary-item-active() {}
320
.hook-nav-primary-header() {}
321
.hook-nav-primary-divider() {}
322
.hook-nav-misc() {}
323

    
324

    
325
// Inverse
326
// ========================================================================
327

    
328
@inverse-nav-parent-icon-color:                @inverse-global-color;
329
@inverse-nav-default-item-color:               @inverse-global-muted-color;
330
@inverse-nav-default-item-hover-color:         @inverse-global-color;
331
@inverse-nav-default-item-active-color:        @inverse-global-emphasis-color;
332
@inverse-nav-default-header-color:             @inverse-global-emphasis-color;
333
@inverse-nav-default-divider-border:           @inverse-global-border;
334
@inverse-nav-default-sublist-item-color:       @inverse-global-muted-color;
335
@inverse-nav-default-sublist-item-hover-color: @inverse-global-color;
336

    
337
@inverse-nav-primary-item-color:               @inverse-global-muted-color;
338
@inverse-nav-primary-item-hover-color:         @inverse-global-color;
339
@inverse-nav-primary-item-active-color:        @inverse-global-emphasis-color;
340
@inverse-nav-primary-header-color:             @inverse-global-emphasis-color;
341
@inverse-nav-primary-divider-border:           @inverse-global-border;
342
@inverse-nav-primary-sublist-item-color:       @inverse-global-muted-color;
343
@inverse-nav-primary-sublist-item-hover-color: @inverse-global-color;
344

    
345
.hook-inverse() {
346

    
347
    //
348
    // Parent icon modifier
349
    //
350

    
351
    .uk-nav-parent-icon > .uk-parent > a::after {
352
        .svg-fill(@internal-nav-parent-close-image, "#000", @inverse-nav-parent-icon-color);
353
        .hook-inverse-nav-parent-icon;
354
    }
355

    
356
    .uk-nav-parent-icon > .uk-parent.uk-open > a::after { .svg-fill(@internal-nav-parent-open-image, "#000", @inverse-nav-parent-icon-color); }
357

    
358
    //
359
    // Default
360
    //
361

    
362
    .uk-nav-default > li > a {
363
        color: @inverse-nav-default-item-color;
364
        .hook-inverse-nav-default-item;
365
    }
366

    
367
    .uk-nav-default > li > a:hover,
368
    .uk-nav-default > li > a:focus {
369
        color: @inverse-nav-default-item-hover-color;
370
        .hook-inverse-nav-default-item-hover;
371
    }
372

    
373
    .uk-nav-default > li.uk-active > a {
374
        color: @inverse-nav-default-item-active-color;
375
        .hook-inverse-nav-default-item-active;
376
    }
377

    
378
    .uk-nav-default .uk-nav-header {
379
        color: @inverse-nav-default-header-color;
380
        .hook-inverse-nav-default-header;
381
    }
382

    
383
    .uk-nav-default .uk-nav-divider {
384
        border-top-color: @inverse-nav-default-divider-border;
385
        .hook-inverse-nav-default-divider;
386
    }
387

    
388
    .uk-nav-default .uk-nav-sub a { color: @inverse-nav-default-sublist-item-color; }
389

    
390
    .uk-nav-default .uk-nav-sub a:hover,
391
    .uk-nav-default .uk-nav-sub a:focus { color: @inverse-nav-default-sublist-item-hover-color; }
392

    
393
    //
394
    // Primary
395
    //
396

    
397
    .uk-nav-primary > li > a {
398
        color: @inverse-nav-primary-item-color;
399
        .hook-inverse-nav-primary-item;
400
    }
401

    
402
    .uk-nav-primary > li > a:hover,
403
    .uk-nav-primary > li > a:focus {
404
        color: @inverse-nav-primary-item-hover-color;
405
        .hook-inverse-nav-primary-item-hover;
406
    }
407

    
408
    .uk-nav-primary > li.uk-active > a {
409
        color: @inverse-nav-primary-item-active-color;
410
        .hook-inverse-nav-primary-item-active;
411
    }
412

    
413
    .uk-nav-primary .uk-nav-header {
414
        color: @inverse-nav-primary-header-color;
415
        .hook-inverse-nav-primary-header;
416
    }
417

    
418
    .uk-nav-primary .uk-nav-divider {
419
        border-top-color: @inverse-nav-primary-divider-border;
420
        .hook-inverse-nav-primary-divider;
421
    }
422

    
423
    .uk-nav-primary .uk-nav-sub a { color: @inverse-nav-primary-sublist-item-color; }
424

    
425
    .uk-nav-primary .uk-nav-sub a:hover,
426
    .uk-nav-primary .uk-nav-sub a:focus { color: @inverse-nav-primary-sublist-item-hover-color; }
427

    
428
}
429

    
430
.hook-inverse-nav-parent-icon() {}
431
.hook-inverse-nav-default-item() {}
432
.hook-inverse-nav-default-item-hover() {}
433
.hook-inverse-nav-default-item-active() {}
434
.hook-inverse-nav-default-header() {}
435
.hook-inverse-nav-default-divider() {}
436
.hook-inverse-nav-primary-item() {}
437
.hook-inverse-nav-primary-item-hover() {}
438
.hook-inverse-nav-primary-item-active() {}
439
.hook-inverse-nav-primary-header() {}
440
.hook-inverse-nav-primary-divider() {}
(37-37/66)