Project

General

Profile

1
// Name:            Card
2
// Description:     Component to create boxed content containers
3
//
4
// Component:       `uk-card`
5
//
6
// Sub-objects:     `uk-card-body`
7
//                  `uk-card-header`
8
//                  `uk-card-footer`
9
//                  `uk-card-media-*`
10
//                  `uk-card-title`
11
//                  `uk-card-badge`
12
//
13
// Modifiers:       `uk-card-hover`
14
//                  `uk-card-default`
15
//                  `uk-card-primary`
16
//                  `uk-card-secondary`
17
//                  `uk-card-small`
18
//                  `uk-card-large`
19
//
20
// Uses:            `uk-grid-stack`
21
//
22
// ========================================================================
23

    
24

    
25
// Variables
26
// ========================================================================
27

    
28
$card-body-padding-horizontal:                  $global-gutter !default;
29
$card-body-padding-vertical:                    $global-gutter !default;
30

    
31
$card-body-padding-horizontal-l:                $global-medium-gutter !default;
32
$card-body-padding-vertical-l:                  $global-medium-gutter !default;
33

    
34
$card-header-padding-horizontal:                $global-gutter !default;
35
$card-header-padding-vertical:                  round($global-gutter / 2) !default;
36

    
37
$card-header-padding-horizontal-l:              $global-medium-gutter !default;
38
$card-header-padding-vertical-l:                round($global-medium-gutter / 2) !default;
39

    
40
$card-footer-padding-horizontal:                $global-gutter !default;
41
$card-footer-padding-vertical:                  ($global-gutter / 2) !default;
42

    
43
$card-footer-padding-horizontal-l:              $global-medium-gutter !default;
44
$card-footer-padding-vertical-l:                round($global-medium-gutter / 2) !default;
45

    
46
$card-title-font-size:                          $global-large-font-size !default;
47
$card-title-line-height:                        1.4 !default;
48

    
49
$card-badge-top:                                $global-gutter !default;
50
$card-badge-right:                              $card-badge-top !default;
51

    
52
$card-hover-background:                         $global-muted-background !default;
53

    
54
$card-default-background:                       $global-muted-background !default;
55
$card-default-color:                            $global-color !default;
56
$card-default-title-color:                      $global-emphasis-color !default;
57
$card-default-hover-background:                 darken($card-default-background, 5%) !default;
58

    
59
$card-primary-background:                       $global-primary-background !default;
60
$card-primary-color:                            $global-inverse-color !default;
61
$card-primary-title-color:                      $card-primary-color !default;
62
$card-primary-hover-background:                 darken($card-primary-background, 5%) !default;
63
$card-primary-color-mode:                       light !default;
64

    
65
$card-secondary-background:                     $global-secondary-background !default;
66
$card-secondary-color:                          $global-inverse-color !default;
67
$card-secondary-title-color:                    $card-secondary-color !default;
68
$card-secondary-hover-background:               darken($card-secondary-background, 5%) !default;
69
$card-secondary-color-mode:                     light !default;
70

    
71
$card-small-body-padding-horizontal:            $global-margin !default;
72
$card-small-body-padding-vertical:              $global-margin !default;
73
$card-small-header-padding-horizontal:          $global-margin !default;
74
$card-small-header-padding-vertical:            round($global-margin / 1.5) !default;
75
$card-small-footer-padding-horizontal:          $global-margin !default;
76
$card-small-footer-padding-vertical:            round($global-margin / 1.5) !default;
77

    
78
$card-large-body-padding-horizontal-l:          $global-large-gutter !default;
79
$card-large-body-padding-vertical-l:            $global-large-gutter !default;
80
$card-large-header-padding-horizontal-l:        $global-large-gutter !default;
81
$card-large-header-padding-vertical-l:          round($global-large-gutter / 2) !default;
82
$card-large-footer-padding-horizontal-l:        $global-large-gutter !default;
83
$card-large-footer-padding-vertical-l:          round($global-large-gutter / 2) !default;
84

    
85

    
86
/* ========================================================================
87
   Component: Card
88
 ========================================================================== */
89

    
90
.uk-card {
91
    position: relative;
92
    box-sizing: border-box;
93
    @if(mixin-exists(hook-card)) {@include hook-card();}
94
}
95

    
96

    
97
/* Sections
98
 ========================================================================== */
99

    
100
.uk-card-body {
101
    padding: $card-body-padding-vertical $card-body-padding-horizontal;
102
    @if(mixin-exists(hook-card-body)) {@include hook-card-body();}
103
}
104

    
105
.uk-card-header {
106
    padding: $card-header-padding-vertical $card-header-padding-horizontal;
107
    @if(mixin-exists(hook-card-header)) {@include hook-card-header();}
108
}
109

    
110
.uk-card-footer {
111
    padding: $card-footer-padding-vertical $card-footer-padding-horizontal;
112
    @if(mixin-exists(hook-card-footer)) {@include hook-card-footer();}
113
}
114

    
115
/* Desktop and bigger */
116
@media (min-width: $breakpoint-large) {
117

    
118
    .uk-card-body { padding: $card-body-padding-vertical-l $card-body-padding-horizontal-l; }
119

    
120
    .uk-card-header { padding: $card-header-padding-vertical-l $card-header-padding-horizontal-l; }
121

    
122
    .uk-card-footer { padding: $card-footer-padding-vertical-l $card-footer-padding-horizontal-l; }
123

    
124
}
125

    
126
/*
127
 * Micro clearfix
128
 */
129

    
130
.uk-card-body::before,
131
.uk-card-body::after,
132
.uk-card-header::before,
133
.uk-card-header::after,
134
.uk-card-footer::before,
135
.uk-card-footer::after {
136
    content: "";
137
    display: table;
138
}
139

    
140
.uk-card-body::after,
141
.uk-card-header::after,
142
.uk-card-footer::after { clear: both; }
143

    
144
/*
145
 * Remove margin from the last-child
146
 */
147

    
148
.uk-card-body > :last-child,
149
.uk-card-header > :last-child,
150
.uk-card-footer > :last-child { margin-bottom: 0; }
151

    
152

    
153
/* Media
154
 ========================================================================== */
155

    
156
/*
157
 * Reserved alignment modifier to style the media element, e.g. with `border-radius`
158
 * Implemented by the theme
159
 */
160

    
161
[class*='uk-card-media'] {
162
    @if(mixin-exists(hook-card-media)) {@include hook-card-media();}
163
}
164

    
165
.uk-card-media-top,
166
.uk-grid-stack > .uk-card-media-left,
167
.uk-grid-stack > .uk-card-media-right  {
168
    @if(mixin-exists(hook-card-media-top)) {@include hook-card-media-top();}
169
}
170

    
171
.uk-card-media-bottom {
172
    @if(mixin-exists(hook-card-media-bottom)) {@include hook-card-media-bottom();}
173
}
174

    
175
:not(.uk-grid-stack) > .uk-card-media-left {
176
    @if(mixin-exists(hook-card-media-left)) {@include hook-card-media-left();}
177
}
178

    
179
:not(.uk-grid-stack) > .uk-card-media-right {
180
    @if(mixin-exists(hook-card-media-right)) {@include hook-card-media-right();}
181
}
182

    
183

    
184
/* Title
185
 ========================================================================== */
186

    
187
.uk-card-title {
188
    font-size: $card-title-font-size;
189
    line-height: $card-title-line-height;
190
    @if(mixin-exists(hook-card-title)) {@include hook-card-title();}
191
}
192

    
193

    
194
/* Badge
195
 ========================================================================== */
196

    
197
.uk-card-badge {
198
    position: absolute;
199
    top: $card-badge-top;
200
    right: $card-badge-right;
201
    z-index: 1;
202
    @if(mixin-exists(hook-card-badge)) {@include hook-card-badge();}
203
}
204

    
205
/*
206
 * Remove margin from adjacent element
207
 */
208

    
209
.uk-card-badge:first-child + * { margin-top: 0; }
210

    
211

    
212
/* Hover modifier
213
 ========================================================================== */
214

    
215
.uk-card-hover:not(.uk-card-default):not(.uk-card-primary):not(.uk-card-secondary):hover {
216
    background: $card-hover-background;
217
    @if(mixin-exists(hook-card-hover)) {@include hook-card-hover();}
218
}
219

    
220

    
221
/* Style modifiers
222
 ========================================================================== */
223

    
224
/*
225
 * Default
226
 * Note: Header and Footer are only implemented for the default style
227
 */
228

    
229
.uk-card-default {
230
    background: $card-default-background;
231
    color: $card-default-color;
232
    @if(mixin-exists(hook-card-default)) {@include hook-card-default();}
233
}
234

    
235
.uk-card-default .uk-card-title {
236
    color: $card-default-title-color;
237
    @if(mixin-exists(hook-card-default-title)) {@include hook-card-default-title();}
238
}
239

    
240
.uk-card-default.uk-card-hover:hover {
241
    background-color: $card-default-hover-background;
242
    @if(mixin-exists(hook-card-default-hover)) {@include hook-card-default-hover();}
243
}
244

    
245
.uk-card-default .uk-card-header {
246
    @if(mixin-exists(hook-card-default-header)) {@include hook-card-default-header();}
247
}
248

    
249
.uk-card-default .uk-card-footer {
250
    @if(mixin-exists(hook-card-default-footer)) {@include hook-card-default-footer();}
251
}
252

    
253
/*
254
 * Primary
255
 */
256

    
257
.uk-card-primary {
258
    background: $card-primary-background;
259
    color: $card-primary-color;
260
    @if(mixin-exists(hook-card-primary)) {@include hook-card-primary();}
261
}
262

    
263
.uk-card-primary .uk-card-title {
264
    color: $card-primary-title-color;
265
    @if(mixin-exists(hook-card-primary-title)) {@include hook-card-primary-title();}
266
}
267

    
268
.uk-card-primary.uk-card-hover:hover {
269
    background-color: $card-primary-hover-background;
270
    @if(mixin-exists(hook-card-primary-hover)) {@include hook-card-primary-hover();}
271
}
272

    
273
// Color Mode
274
@if ( $card-primary-color-mode == light ) { .uk-card-primary.uk-card-body { @extend .uk-light;} }
275
@if ( $card-primary-color-mode == light ) { .uk-card-primary > :not([class*='uk-card-media']) { @extend .uk-light;} }
276
@if ( $card-primary-color-mode == dark ) { .uk-card-primary.uk-card-body { @extend .uk-dark;} }
277
@if ( $card-primary-color-mode == dark ) { .uk-card-primary > :not([class*='uk-card-media']) { @extend .uk-dark;} }
278

    
279
/*
280
 * Secondary
281
 */
282

    
283
.uk-card-secondary {
284
    background: $card-secondary-background;
285
    color: $card-secondary-color;
286
    @if(mixin-exists(hook-card-secondary)) {@include hook-card-secondary();}
287
}
288

    
289
.uk-card-secondary .uk-card-title {
290
    color: $card-secondary-title-color;
291
    @if(mixin-exists(hook-card-secondary-title)) {@include hook-card-secondary-title();}
292
}
293

    
294
.uk-card-secondary.uk-card-hover:hover {
295
    background-color: $card-secondary-hover-background;
296
    @if(mixin-exists(hook-card-secondary-hover)) {@include hook-card-secondary-hover();}
297
}
298

    
299
// Color Mode
300
@if ( $card-secondary-color-mode == light ) { .uk-card-secondary.uk-card-body { @extend .uk-light;} }
301
@if ( $card-secondary-color-mode == light ) { .uk-card-secondary > :not([class*='uk-card-media']) { @extend .uk-light;} }
302
@if ( $card-secondary-color-mode == dark ) { .uk-card-secondary.uk-card-body { @extend .uk-dark;} }
303
@if ( $card-secondary-color-mode == dark ) { .uk-card-secondary > :not([class*='uk-card-media']) { @extend .uk-dark;} }
304

    
305

    
306
/* Size modifier
307
 ========================================================================== */
308

    
309
/*
310
 * Small
311
 */
312

    
313
.uk-card-small.uk-card-body,
314
.uk-card-small .uk-card-body { padding: $card-small-body-padding-vertical $card-small-body-padding-horizontal; }
315

    
316
.uk-card-small .uk-card-header { padding: $card-small-header-padding-vertical $card-small-header-padding-horizontal; }
317
.uk-card-small .uk-card-footer { padding: $card-small-footer-padding-vertical $card-small-footer-padding-horizontal; }
318

    
319
/*
320
 * Large
321
 */
322

    
323
/* Desktop and bigger */
324
@media (min-width: $breakpoint-large) {
325

    
326
    .uk-card-large.uk-card-body,
327
    .uk-card-large .uk-card-body { padding: $card-large-body-padding-vertical-l $card-large-body-padding-horizontal-l; }
328

    
329
    .uk-card-large .uk-card-header { padding: $card-large-header-padding-vertical-l $card-large-header-padding-horizontal-l; }
330
    .uk-card-large .uk-card-footer { padding: $card-large-footer-padding-vertical-l $card-large-footer-padding-horizontal-l; }
331

    
332
}
333

    
334

    
335
// Hooks
336
// ========================================================================
337

    
338
@if(mixin-exists(hook-card-misc)) {@include hook-card-misc();}
339

    
340
// @mixin hook-card(){}
341
// @mixin hook-card-body(){}
342
// @mixin hook-card-header(){}
343
// @mixin hook-card-footer(){}
344
// @mixin hook-card-media(){}
345
// @mixin hook-card-media-top(){}
346
// @mixin hook-card-media-bottom(){}
347
// @mixin hook-card-media-left(){}
348
// @mixin hook-card-media-right(){}
349
// @mixin hook-card-title(){}
350
// @mixin hook-card-badge(){}
351
// @mixin hook-card-hover(){}
352
// @mixin hook-card-default(){}
353
// @mixin hook-card-default-title(){}
354
// @mixin hook-card-default-hover(){}
355
// @mixin hook-card-default-header(){}
356
// @mixin hook-card-default-footer(){}
357
// @mixin hook-card-primary(){}
358
// @mixin hook-card-primary-title(){}
359
// @mixin hook-card-primary-hover(){}
360
// @mixin hook-card-secondary(){}
361
// @mixin hook-card-secondary-title(){}
362
// @mixin hook-card-secondary-hover(){}
363
// @mixin hook-card-misc(){}
(13-13/66)