uikit 3.23.13 → 3.23.14-dev.be820cd99

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/.prettierignore +1 -0
  2. package/CHANGELOG.md +36 -0
  3. package/dist/css/uikit-core-rtl.css +301 -111
  4. package/dist/css/uikit-core-rtl.min.css +1 -1
  5. package/dist/css/uikit-core.css +301 -111
  6. package/dist/css/uikit-core.min.css +1 -1
  7. package/dist/css/uikit-rtl.css +305 -111
  8. package/dist/css/uikit-rtl.min.css +1 -1
  9. package/dist/css/uikit.css +305 -111
  10. package/dist/css/uikit.min.css +1 -1
  11. package/dist/js/components/countdown.js +1 -1
  12. package/dist/js/components/countdown.min.js +1 -1
  13. package/dist/js/components/filter.js +49 -23
  14. package/dist/js/components/filter.min.js +1 -1
  15. package/dist/js/components/lightbox-panel.js +19 -14
  16. package/dist/js/components/lightbox-panel.min.js +1 -1
  17. package/dist/js/components/lightbox.js +19 -14
  18. package/dist/js/components/lightbox.min.js +1 -1
  19. package/dist/js/components/notification.js +1 -1
  20. package/dist/js/components/notification.min.js +1 -1
  21. package/dist/js/components/parallax.js +2 -2
  22. package/dist/js/components/parallax.min.js +1 -1
  23. package/dist/js/components/slider-parallax.js +2 -2
  24. package/dist/js/components/slider-parallax.min.js +1 -1
  25. package/dist/js/components/slider.js +8 -3
  26. package/dist/js/components/slider.min.js +1 -1
  27. package/dist/js/components/slideshow-parallax.js +2 -2
  28. package/dist/js/components/slideshow-parallax.min.js +1 -1
  29. package/dist/js/components/slideshow.js +8 -3
  30. package/dist/js/components/slideshow.min.js +1 -1
  31. package/dist/js/components/sortable.js +48 -22
  32. package/dist/js/components/sortable.min.js +1 -1
  33. package/dist/js/components/tooltip.js +3 -3
  34. package/dist/js/components/tooltip.min.js +1 -1
  35. package/dist/js/components/upload.js +2 -2
  36. package/dist/js/components/upload.min.js +1 -1
  37. package/dist/js/uikit-core.js +136 -63
  38. package/dist/js/uikit-core.min.js +1 -1
  39. package/dist/js/uikit-icons.js +1 -1
  40. package/dist/js/uikit-icons.min.js +1 -1
  41. package/dist/js/uikit.js +185 -90
  42. package/dist/js/uikit.min.js +1 -1
  43. package/eslint.config.mjs +1 -1
  44. package/package.json +1 -1
  45. package/src/images/backgrounds/form-checkbox.svg +2 -2
  46. package/src/images/components/navbar-toggle-icon.svg +14 -7
  47. package/src/js/api/options.js +1 -1
  48. package/src/js/components/lightbox-panel.js +6 -4
  49. package/src/js/components/upload.js +1 -3
  50. package/src/js/core/drop.js +3 -8
  51. package/src/js/core/dropnav.js +4 -4
  52. package/src/js/core/img.js +1 -1
  53. package/src/js/core/index.js +1 -0
  54. package/src/js/core/navbar.js +3 -5
  55. package/src/js/core/overflow-fade.js +67 -0
  56. package/src/js/core/scrollspy.js +10 -10
  57. package/src/js/core/sticky.js +18 -16
  58. package/src/js/core/toggle.js +3 -5
  59. package/src/js/core/video.js +36 -10
  60. package/src/js/mixin/internal/animate-fade.js +32 -15
  61. package/src/js/mixin/internal/animate-slide.js +27 -9
  62. package/src/js/mixin/modal.js +3 -4
  63. package/src/js/mixin/slider.js +3 -1
  64. package/src/js/mixin/togglable.js +1 -1
  65. package/src/js/util/animation.js +3 -4
  66. package/src/js/util/await.js +7 -0
  67. package/src/js/util/player.js +1 -3
  68. package/src/js/util/scroll.js +2 -2
  69. package/src/js/util/selector.js +1 -1
  70. package/src/js/util/viewport.js +3 -1
  71. package/src/less/components/base.less +19 -4
  72. package/src/less/components/card.less +40 -1
  73. package/src/less/components/countdown.less +4 -42
  74. package/src/less/components/form.less +87 -67
  75. package/src/less/components/heading.less +0 -84
  76. package/src/less/components/icon.less +44 -0
  77. package/src/less/components/navbar.less +23 -9
  78. package/src/less/components/position.less +1 -1
  79. package/src/less/components/section.less +33 -0
  80. package/src/less/components/subnav.less +1 -1
  81. package/src/less/components/utility.less +45 -0
  82. package/src/less/components/visibility.less +1 -1
  83. package/src/less/components/width.less +0 -5
  84. package/src/less/theme/card.less +13 -0
  85. package/src/less/theme/icon.less +14 -0
  86. package/src/scss/components/base.scss +19 -4
  87. package/src/scss/components/card.scss +35 -1
  88. package/src/scss/components/countdown.scss +2 -40
  89. package/src/scss/components/form.scss +73 -55
  90. package/src/scss/components/heading.scss +0 -83
  91. package/src/scss/components/icon.scss +22 -0
  92. package/src/scss/components/navbar.scss +23 -9
  93. package/src/scss/components/position.scss +1 -1
  94. package/src/scss/components/section.scss +33 -0
  95. package/src/scss/components/subnav.scss +1 -1
  96. package/src/scss/components/utility.scss +45 -0
  97. package/src/scss/components/visibility.scss +1 -1
  98. package/src/scss/components/width.scss +0 -15
  99. package/src/scss/mixins-theme.scss +28 -8
  100. package/src/scss/mixins.scss +25 -8
  101. package/src/scss/variables-theme.scss +27 -30
  102. package/src/scss/variables.scss +25 -30
  103. package/tests/article.html +7 -7
  104. package/tests/base.html +13 -13
  105. package/tests/card.html +9 -1
  106. package/tests/column.html +1 -1
  107. package/tests/countdown.html +595 -8
  108. package/tests/cover.html +7 -13
  109. package/tests/dropbar.html +3 -3
  110. package/tests/dropdown.html +13 -13
  111. package/tests/dropnav.html +9 -9
  112. package/tests/form.html +56 -3
  113. package/tests/icon.html +31 -0
  114. package/tests/index.html +68 -58
  115. package/tests/js/index.js +76 -83
  116. package/tests/lightbox.html +4 -4
  117. package/tests/link.html +71 -8
  118. package/tests/modal.html +1 -1
  119. package/tests/navbar.html +32 -32
  120. package/tests/notification.html +5 -5
  121. package/tests/search.html +3 -3
  122. package/tests/slideshow.html +3 -3
  123. package/tests/sticky-navbar.html +72 -72
  124. package/tests/subnav.html +106 -2
  125. package/tests/tab.html +68 -21
  126. package/tests/table.html +8 -8
  127. package/tests/utility.html +159 -1
  128. package/tests/video.html +137 -10
@@ -122,82 +122,6 @@
122
122
  }
123
123
 
124
124
 
125
- /* Primary
126
- Deprecated: Use `uk-heading-medium` instead
127
- ========================================================================== */
128
-
129
- @heading-primary-font-size-l: 3.75rem; // 60px
130
- @heading-primary-line-height-l: 1.1;
131
-
132
- @heading-primary-font-size-m: @heading-primary-font-size-l * 0.9; // 54px
133
-
134
- @heading-primary-font-size: @heading-primary-font-size-l * 0.8; // 48px
135
- @heading-primary-line-height: 1.2;
136
-
137
- .uk-heading-primary when (@deprecated = true) {
138
- font-size: @heading-primary-font-size;
139
- line-height: @heading-primary-line-height;
140
- .hook-heading-primary();
141
- }
142
-
143
- /* Tablet landscape and bigger */
144
- @media (min-width: @breakpoint-medium) {
145
-
146
- .uk-heading-primary when (@deprecated = true) { font-size: @heading-primary-font-size-m; }
147
-
148
- }
149
-
150
- /* Desktop and bigger */
151
- @media (min-width: @breakpoint-large) {
152
-
153
- .uk-heading-primary when (@deprecated = true) {
154
- font-size: @heading-primary-font-size-l;
155
- line-height: @heading-primary-line-height-l;
156
- }
157
-
158
- }
159
-
160
-
161
- /* Hero
162
- Deprecated: Use `uk-heading-xlarge` instead
163
- ========================================================================== */
164
-
165
- @heading-hero-font-size-l: 8rem; // 128px
166
- @heading-hero-line-height-l: 1;
167
-
168
- @heading-hero-font-size-m: @heading-hero-font-size-l * 0.75; // 96px
169
- @heading-hero-line-height-m: 1;
170
-
171
- @heading-hero-font-size: @heading-hero-font-size-l * 0.5; // 64px
172
- @heading-hero-line-height: 1.1;
173
-
174
- .uk-heading-hero when (@deprecated = true) {
175
- font-size: @heading-hero-font-size;
176
- line-height: @heading-hero-line-height;
177
- .hook-heading-hero();
178
- }
179
-
180
- /* Tablet landscape and bigger */
181
- @media (min-width: @breakpoint-medium) {
182
-
183
- .uk-heading-hero when (@deprecated = true) {
184
- font-size: @heading-hero-font-size-m;
185
- line-height: @heading-hero-line-height-m;
186
- }
187
-
188
- }
189
-
190
- /* Desktop and bigger */
191
- @media (min-width: @breakpoint-large) {
192
-
193
- .uk-heading-hero when (@deprecated = true) {
194
- font-size: @heading-hero-font-size-l;
195
- line-height: @heading-hero-line-height-l;
196
- }
197
-
198
- }
199
-
200
-
201
125
  /* Divider
202
126
  ========================================================================== */
203
127
 
@@ -334,14 +258,6 @@
334
258
  .hook-inverse-heading-3xlarge();
335
259
  }
336
260
 
337
- .uk-heading-primary when (@deprecated = true) {
338
- .hook-inverse-heading-primary();
339
- }
340
-
341
- .uk-heading-hero when (@deprecated = true) {
342
- .hook-inverse-heading-hero();
343
- }
344
-
345
261
  .uk-heading-divider {
346
262
  border-bottom-color: @inverse-heading-divider-border;
347
263
  .hook-inverse-heading-divider();
@@ -6,6 +6,7 @@
6
6
  // Modifiers: `uk-icon-image`
7
7
  // `uk-icon-link`
8
8
  // `uk-icon-button`
9
+ // `uk-icon-overlay`
9
10
  //
10
11
  // States: `uk-preserve`
11
12
  //
@@ -32,6 +33,9 @@
32
33
  @icon-button-active-background: darken(@icon-button-background, 10%);
33
34
  @icon-button-active-color: @global-color;
34
35
 
36
+ @icon-overlay-color: fade(@global-emphasis-color, 60%);
37
+ @icon-overlay-hover-color: @global-emphasis-color;
38
+
35
39
 
36
40
  /* ========================================================================
37
41
  Component: Icon
@@ -187,6 +191,22 @@ button.uk-icon:not(:disabled) { cursor: pointer; }
187
191
  .hook-icon-button-active();
188
192
  }
189
193
 
194
+ /*
195
+ * Overlay
196
+ */
197
+
198
+ .uk-icon-overlay,
199
+ a .uk-icon-overlay {
200
+ color: @icon-overlay-color;
201
+ .hook-icon-overlay();
202
+ }
203
+
204
+ .uk-icon-overlay:hover,
205
+ a:hover .uk-icon-overlay {
206
+ color: @icon-overlay-hover-color;
207
+ .hook-icon-overlay-hover();
208
+ }
209
+
190
210
 
191
211
  // Hooks
192
212
  // ========================================================================
@@ -199,6 +219,8 @@ button.uk-icon:not(:disabled) { cursor: pointer; }
199
219
  .hook-icon-button() {}
200
220
  .hook-icon-button-hover() {}
201
221
  .hook-icon-button-active() {}
222
+ .hook-icon-overlay() {}
223
+ .hook-icon-overlay-hover() {}
202
224
  .hook-icon-misc() {}
203
225
 
204
226
 
@@ -214,6 +236,8 @@ button.uk-icon:not(:disabled) { cursor: pointer; }
214
236
  @inverse-icon-button-hover-color: @inverse-global-color;
215
237
  @inverse-icon-button-active-background: fadein(@inverse-icon-button-background, 10%);
216
238
  @inverse-icon-button-active-color: @inverse-global-color;
239
+ @inverse-icon-overlay-color: fade(@inverse-global-emphasis-color, 60%);
240
+ @inverse-icon-overlay-hover-color: @inverse-global-emphasis-color;
217
241
 
218
242
  .hook-inverse() {
219
243
 
@@ -259,6 +283,24 @@ button.uk-icon:not(:disabled) { cursor: pointer; }
259
283
  .hook-inverse-icon-button-active();
260
284
  }
261
285
 
286
+ //
287
+ // Overlay
288
+ //
289
+
290
+ .uk-icon-overlay,
291
+ a .uk-icon-overlay
292
+ a& .uk-icon-overlay {
293
+ color: @inverse-icon-overlay-color;
294
+ .hook-inverse-icon-overlay();
295
+ }
296
+
297
+ .uk-icon-overlay:hover,
298
+ a:hover .uk-icon-overlay,
299
+ a&:hover .uk-icon-overlay {
300
+ color: @inverse-icon-overlay-hover-color;
301
+ .hook-inverse-icon-overlay-hover();
302
+ }
303
+
262
304
  }
263
305
 
264
306
  .hook-inverse-icon-link() {}
@@ -267,3 +309,5 @@ button.uk-icon:not(:disabled) { cursor: pointer; }
267
309
  .hook-inverse-icon-button() {}
268
310
  .hook-inverse-icon-button-hover() {}
269
311
  .hook-inverse-icon-button-active() {}
312
+ .hook-inverse-icon-overlay() {}
313
+ .hook-inverse-icon-overlay-hover() {}
@@ -131,7 +131,7 @@
131
131
  ========================================================================== */
132
132
 
133
133
  /*
134
- * 1. Align navs and items vertically if they have a different height
134
+ * 1. Stretch height if a sibling's height is expanded by its content
135
135
  */
136
136
 
137
137
  .uk-navbar-left,
@@ -140,7 +140,7 @@
140
140
  display: flex;
141
141
  gap: @navbar-gap;
142
142
  /* 1 */
143
- align-items: center;
143
+ align-items: stretch;
144
144
  }
145
145
 
146
146
  /*
@@ -149,7 +149,8 @@
149
149
  * 2. Fix text wrapping if content is larger than 50% of the container.
150
150
  * 3. Needed for dropdowns because a new position context is created
151
151
  * `z-index` must be smaller than off-canvas
152
- * 4. Align sub groups for centered navbar
152
+ * 4. Stretch height if a sibling's height is expanded by its content
153
+ * 5. Align sub groups for centered navbar
153
154
  */
154
155
 
155
156
  .uk-navbar-right { margin-left: auto; }
@@ -171,13 +172,18 @@
171
172
  box-sizing: border-box;
172
173
  /* 3 */
173
174
  z-index: @global-z-index - 10;
175
+ /* 4 */
176
+ height: 100%;
177
+ align-items: stretch;
174
178
  }
175
179
 
176
- /* 4 */
177
180
  .uk-navbar-center-left,
178
181
  .uk-navbar-center-right {
179
- position: absolute;
180
- top: 0;
182
+ /* 4 */
183
+ height: 100%;
184
+ /* 5 */
185
+ position: absolute;
186
+ top: 0;
181
187
  }
182
188
 
183
189
  .uk-navbar-center-left { right: ~'calc(100% + @{navbar-gap})'; }
@@ -193,13 +199,16 @@
193
199
  ========================================================================== */
194
200
 
195
201
  /*
196
- * 1. Reset list
202
+ * 1. Stretch height if a sibling's height is expanded by its content
203
+ * 2. Reset list
197
204
  */
198
205
 
199
206
  .uk-navbar-nav {
200
207
  display: flex;
201
208
  gap: @navbar-nav-gap;
202
209
  /* 1 */
210
+ align-items: stretch;
211
+ /* 2 */
203
212
  margin: 0;
204
213
  padding: 0;
205
214
  list-style: none;
@@ -244,9 +253,14 @@
244
253
 
245
254
  /*
246
255
  * Nav items
256
+ * 1. Stretch height if a sibling's height is expanded by its content
257
+ * 2. Reset list
247
258
  */
248
259
 
249
260
  .uk-navbar-nav > li > a {
261
+ /* 1 */
262
+ height: 100%;
263
+ /* 2 */
250
264
  padding: 0 @navbar-nav-item-padding-horizontal;
251
265
  color: @navbar-nav-item-color;
252
266
  .hook-navbar-nav-item();
@@ -400,8 +414,8 @@
400
414
  .uk-navbar-dropdown > :last-child { margin-bottom: 0; }
401
415
 
402
416
  // Color Mode
403
- .uk-navbar-dropdown:extend(.uk-light all) when (@navbar-dropdown-color-mode = light) {}
404
- .uk-navbar-dropdown:extend(.uk-dark all) when (@navbar-dropdown-color-mode = dark) {}
417
+ .uk-navbar-dropdown:not(.uk-preserve-color):extend(.uk-light all) when (@navbar-dropdown-color-mode = light) {}
418
+ .uk-navbar-dropdown:not(.uk-preserve-color):extend(.uk-dark all) when (@navbar-dropdown-color-mode = dark) {}
405
419
 
406
420
  .uk-navbar-dropdown :focus-visible when not (@navbar-dropdown-color-mode = @inverse-global-color-mode) {
407
421
  outline-color: @navbar-dropdown-focus-outline !important;
@@ -231,7 +231,7 @@
231
231
  .uk-position-z-index-zero { z-index: 0; }
232
232
  .uk-position-z-index-negative { z-index: -1; }
233
233
  .uk-position-z-index-high { z-index: @global-z-index - 10; } // Higher than dropbar so it is behind
234
-
234
+ .uk-position-z-index-highest { z-index: @global-z-index + 60; }
235
235
 
236
236
  // Hooks
237
237
  // ========================================================================
@@ -92,6 +92,9 @@
92
92
  padding-bottom: @section-xsmall-padding-vertical;
93
93
  }
94
94
 
95
+ .uk-section-xsmall-top { padding-top: @section-xsmall-padding-vertical; }
96
+ .uk-section-xsmall-bottom { padding-bottom: @section-xsmall-padding-vertical; }
97
+
95
98
  /*
96
99
  * Small
97
100
  */
@@ -101,6 +104,24 @@
101
104
  padding-bottom: @section-small-padding-vertical;
102
105
  }
103
106
 
107
+ .uk-section-small-top { padding-top: @section-small-padding-vertical; }
108
+ .uk-section-small-bottom { padding-bottom: @section-small-padding-vertical; }
109
+
110
+ /*
111
+ * Medium
112
+ */
113
+
114
+ .uk-section-medium-top { padding-top: @section-padding-vertical; }
115
+ .uk-section-medium-bottom { padding-bottom: @section-padding-vertical; }
116
+
117
+ /* Desktop and bigger */
118
+ @media (min-width: @breakpoint-medium) {
119
+
120
+ .uk-section-medium-top { padding-top: @section-padding-vertical-m; }
121
+ .uk-section-medium-bottom { padding-bottom: @section-padding-vertical-m; }
122
+
123
+ }
124
+
104
125
  /*
105
126
  * Large
106
127
  */
@@ -110,6 +131,9 @@
110
131
  padding-bottom: @section-large-padding-vertical;
111
132
  }
112
133
 
134
+ .uk-section-large-top { padding-top: @section-large-padding-vertical; }
135
+ .uk-section-large-bottom { padding-bottom: @section-large-padding-vertical; }
136
+
113
137
  /* Tablet landscape and bigger */
114
138
  @media (min-width: @breakpoint-medium) {
115
139
 
@@ -118,6 +142,9 @@
118
142
  padding-bottom: @section-large-padding-vertical-m;
119
143
  }
120
144
 
145
+ .uk-section-large-top { padding-top: @section-large-padding-vertical-m; }
146
+ .uk-section-large-bottom { padding-bottom: @section-large-padding-vertical-m; }
147
+
121
148
  }
122
149
 
123
150
  /*
@@ -129,6 +156,9 @@
129
156
  padding-bottom: @section-xlarge-padding-vertical;
130
157
  }
131
158
 
159
+ .uk-section-xlarge-top { padding-top: @section-xlarge-padding-vertical; }
160
+ .uk-section-xlarge-bottom { padding-bottom: @section-xlarge-padding-vertical; }
161
+
132
162
  /* Tablet landscape and bigger */
133
163
  @media (min-width: @breakpoint-medium) {
134
164
 
@@ -137,6 +167,9 @@
137
167
  padding-bottom: @section-xlarge-padding-vertical-m;
138
168
  }
139
169
 
170
+ .uk-section-xlarge-top { padding-top: @section-xlarge-padding-vertical-m; }
171
+ .uk-section-xlarge-bottom { padding-bottom: @section-xlarge-padding-vertical-m; }
172
+
140
173
  }
141
174
 
142
175
 
@@ -200,7 +200,7 @@
200
200
  * The same for all style modifiers
201
201
  ========================================================================== */
202
202
 
203
- .uk-subnav > .uk-disabled > a {
203
+ .uk-subnav > .uk-disabled > :first-child {
204
204
  color: @subnav-item-disabled-color;
205
205
  .hook-subnav-item-disabled();
206
206
  }
@@ -36,6 +36,8 @@
36
36
  @panel-scrollable-border-width: @global-border-width;
37
37
  @panel-scrollable-border: @global-border;
38
38
 
39
+ @overflow-fade-size: 100px;
40
+
39
41
  @border-rounded-border-radius: 5px;
40
42
 
41
43
  @box-shadow-duration: 0.1s;
@@ -143,6 +145,49 @@
143
145
 
144
146
  .uk-overflow-auto > :last-child { margin-bottom: 0; }
145
147
 
148
+ /*
149
+ * Overflow fade
150
+ * 1. Overflow
151
+ * 2. Mask
152
+ */
153
+
154
+ @property --uk-overflow-fade-start-opacity {
155
+ syntax: "<number>";
156
+ inherits: false;
157
+ initial-value: 0;
158
+ }
159
+
160
+ @property --uk-overflow-fade-end-opacity {
161
+ syntax: "<number>";
162
+ inherits: false;
163
+ initial-value: 0;
164
+ }
165
+
166
+ .uk-overflow-fade-horizontal {
167
+ overflow-x: auto;
168
+ --uk-overflow-fade-direction: right;
169
+ }
170
+
171
+ .uk-overflow-fade-vertical {
172
+ overflow-y: auto;
173
+ --uk-overflow-fade-direction: bottom;
174
+ }
175
+
176
+ .uk-overflow-fade-horizontal,
177
+ .uk-overflow-fade-vertical {
178
+ /* 1 */
179
+ -webkit-overflow-scrolling: touch;
180
+ -ms-overflow-style: -ms-autohiding-scrollbar;
181
+ /* 2 */
182
+ mask-image: linear-gradient(to var(--uk-overflow-fade-direction), rgba(0,0,0,var(--uk-overflow-fade-start-opacity)), #000 @overflow-fade-size, #000 ~'calc(100% - @{overflow-fade-size})', rgba(0,0,0,var(--uk-overflow-fade-end-opacity)));
183
+ }
184
+
185
+ .uk-overflow-fade-horizontal > *,
186
+ .uk-overflow-fade-vertical > * { min-width: max-content; }
187
+
188
+ .uk-overflow-fade-horizontal::-webkit-scrollbar,
189
+ .uk-overflow-fade-vertical::-webkit-scrollbar { display: none; }
190
+
146
191
 
147
192
  /* Box Sizing
148
193
  ========================================================================== */
@@ -124,7 +124,7 @@
124
124
  width: 0 !important;
125
125
  height: 0 !important;
126
126
  padding: 0 !important;
127
- border: 0 !important;
127
+ border-width: 0 !important;
128
128
  margin: 0 !important;
129
129
  overflow: hidden !important;
130
130
  }
@@ -201,7 +201,6 @@
201
201
  .uk-width-large { width: @width-large-width; }
202
202
  .uk-width-xlarge { width: @width-xlarge-width; }
203
203
  .uk-width-2xlarge { width: @width-2xlarge-width; }
204
- .uk-width-xxlarge when (@deprecated = true) { width: @width-2xlarge-width; }
205
204
 
206
205
  /* Auto */
207
206
  .uk-width-auto { width: auto; }
@@ -245,7 +244,6 @@
245
244
  .uk-width-large\@s { width: @width-large-width; }
246
245
  .uk-width-xlarge\@s { width: @width-xlarge-width; }
247
246
  .uk-width-2xlarge\@s { width: @width-2xlarge-width; }
248
- .uk-width-xxlarge\@s when (@deprecated = true) { width: @width-2xlarge-width; }
249
247
 
250
248
  /* Auto */
251
249
  .uk-width-auto\@s { width: auto; }
@@ -311,7 +309,6 @@
311
309
  .uk-width-large\@m { width: @width-large-width; }
312
310
  .uk-width-xlarge\@m { width: @width-xlarge-width; }
313
311
  .uk-width-2xlarge\@m { width: @width-2xlarge-width; }
314
- .uk-width-xxlarge\@m when (@deprecated = true) { width: @width-2xlarge-width; }
315
312
 
316
313
  /* Auto */
317
314
  .uk-width-auto\@m { width: auto; }
@@ -377,7 +374,6 @@
377
374
  .uk-width-large\@l { width: @width-large-width; }
378
375
  .uk-width-xlarge\@l { width: @width-xlarge-width; }
379
376
  .uk-width-2xlarge\@l { width: @width-2xlarge-width; }
380
- .uk-width-xxlarge\@l when (@deprecated = true) { width: @width-2xlarge-width; }
381
377
 
382
378
  /* Auto */
383
379
  .uk-width-auto\@l { width: auto; }
@@ -443,7 +439,6 @@
443
439
  .uk-width-large\@xl { width: @width-large-width; }
444
440
  .uk-width-xlarge\@xl { width: @width-xlarge-width; }
445
441
  .uk-width-2xlarge\@xl { width: @width-2xlarge-width; }
446
- .uk-width-xxlarge\@xl when (@deprecated = true) { width: @width-2xlarge-width; }
447
442
 
448
443
  /* Auto */
449
444
  .uk-width-auto\@xl { width: auto; }
@@ -40,6 +40,9 @@
40
40
  @card-secondary-box-shadow: @global-medium-box-shadow;
41
41
  @card-secondary-hover-box-shadow: @global-large-box-shadow;
42
42
 
43
+ @card-overlay-box-shadow: @global-medium-box-shadow;
44
+ @card-overlay-hover-box-shadow: @global-large-box-shadow;
45
+
43
46
 
44
47
  // Component
45
48
  // ========================================================================
@@ -125,6 +128,16 @@
125
128
 
126
129
  .hook-card-secondary-hover() { box-shadow: @card-secondary-hover-box-shadow; }
127
130
 
131
+ //
132
+ // Overlay
133
+ //
134
+
135
+ .hook-card-overlay() { box-shadow: @card-overlay-box-shadow; }
136
+
137
+ .hook-card-overlay-title() {}
138
+
139
+ .hook-card-overlay-hover() { box-shadow: @card-overlay-hover-box-shadow; }
140
+
128
141
 
129
142
  // Miscellaneous
130
143
  // ========================================================================
@@ -34,6 +34,17 @@
34
34
 
35
35
  .hook-icon-button-active() {}
36
36
 
37
+ //
38
+ // Overlay
39
+ //
40
+
41
+ .hook-icon-overlay() {
42
+ transition: 0.1s ease-in-out;
43
+ transition-property: color;
44
+ }
45
+
46
+ .hook-icon-overlay-hover() {}
47
+
37
48
 
38
49
  // Miscellaneous
39
50
  // ========================================================================
@@ -51,3 +62,6 @@
51
62
  .hook-inverse-icon-button() {}
52
63
  .hook-inverse-icon-button-hover() {}
53
64
  .hook-inverse-icon-button-active() {}
65
+
66
+ .hook-inverse-icon-overlay() {}
67
+ .hook-inverse-icon-overlay-hover() {}
@@ -80,6 +80,14 @@ a:hover,
80
80
  @if(meta.mixin-exists(hook-base-link-hover)) {@include hook-base-link-hover();}
81
81
  }
82
82
 
83
+ /*
84
+ * Fix text underline offset if `vertical-align`is set to `middle`
85
+ */
86
+
87
+ a:has(.uk-text-middle),
88
+ .uk-link:has(.uk-text-middle),
89
+ .uk-link-toggle:hover .uk-link:has(.uk-text-middle) { text-underline-offset: 0.1875em; }
90
+
83
91
 
84
92
  /* Text-level semantics
85
93
  ========================================================================== */
@@ -191,8 +199,11 @@ video { vertical-align: middle; }
191
199
 
192
200
  /*
193
201
  * 1. Constrain the element to its parent width.
194
- * 2. Preserve the intrinsic aspect ratio and auto-scale the height of an image if the `height` attribute is present.
195
- * 3. Take border and padding into account.
202
+ * 2. Take border and padding into account.
203
+ * 3. Reset `height` attribute if present to scale the height based on the intrinsic aspect ratio.
204
+ * 4. Scale height based on the extrinsic aspect ratio. Works only in Chrome yet.
205
+ * 5. Size image to fill the element's content box.
206
+ * Note: Add `iframe` as soon as `attr` is supported in all browsers and remove `uk-responsive`.
196
207
  */
197
208
 
198
209
  canvas,
@@ -202,9 +213,13 @@ video {
202
213
  /* 1 */
203
214
  max-width: 100%;
204
215
  /* 2 */
205
- height: auto;
206
- /* 3 */
207
216
  box-sizing: border-box;
217
+ /* 3 */
218
+ height: auto;
219
+ /* 4 */
220
+ aspect-ratio: string.unquote('attr(width type(<number>)) / attr(height type(<number>))');
221
+ /* 5 */
222
+ object-fit: cover;
208
223
  }
209
224
 
210
225
  /*
@@ -16,6 +16,7 @@
16
16
  // `uk-card-default`
17
17
  // `uk-card-primary`
18
18
  // `uk-card-secondary`
19
+ // `uk-card-overlay`
19
20
  // `uk-card-small`
20
21
  // `uk-card-large`
21
22
  //
@@ -42,6 +43,7 @@
42
43
 
43
44
 
44
45
 
46
+
45
47
  /* ========================================================================
46
48
  Component: Card
47
49
  ========================================================================== */
@@ -176,7 +178,7 @@
176
178
  /* Hover modifier
177
179
  ========================================================================== */
178
180
 
179
- .uk-card-hover:not(.uk-card-default):not(.uk-card-primary):not(.uk-card-secondary):hover {
181
+ .uk-card-hover:not(.uk-card-default, .uk-card-primary, .uk-card-secondary, .uk-card-overlay):hover {
180
182
  background-color: $card-hover-background;
181
183
  @if(meta.mixin-exists(hook-card-hover)) {@include hook-card-hover();}
182
184
  }
@@ -276,6 +278,35 @@
276
278
  @if ( $card-secondary-color-mode == dark ) { .uk-card-secondary > :not([class*="uk-card-media"]) { @extend .uk-dark !optional;} }
277
279
 
278
280
 
281
+ /*
282
+ * Overlay
283
+ */
284
+
285
+ .uk-card-overlay {
286
+ --uk-inverse: #{$card-overlay-color-mode};
287
+ background-color: $card-overlay-background;
288
+ color: $card-overlay-color;
289
+ @if(meta.mixin-exists(hook-card-overlay)) {@include hook-card-overlay();}
290
+ }
291
+
292
+ .uk-card-overlay .uk-card-title {
293
+ color: $card-overlay-title-color;
294
+ @if(meta.mixin-exists(hook-card-overlay-title)) {@include hook-card-overlay-title();}
295
+ }
296
+
297
+ .uk-card-overlay.uk-card-hover:hover {
298
+ background-color: $card-overlay-hover-background;
299
+ @if(meta.mixin-exists(hook-card-overlay-hover)) {@include hook-card-overlay-hover();}
300
+ }
301
+
302
+
303
+ // Color Mode
304
+ @if ( $card-overlay-color-mode == light ) { .uk-card-overlay.uk-card-body { @extend .uk-light !optional;} }
305
+ @if ( $card-overlay-color-mode == light ) { .uk-card-overlay > :not([class*="uk-card-media"]) { @extend .uk-light !optional;} }
306
+ @if ( $card-overlay-color-mode == dark ) { .uk-card-overlay.uk-card-body { @extend .uk-dark !optional;} }
307
+ @if ( $card-overlay-color-mode == dark ) { .uk-card-overlay > :not([class*="uk-card-media"]) { @extend .uk-dark !optional;} }
308
+
309
+
279
310
  /* Size modifier
280
311
  ========================================================================== */
281
312
 
@@ -333,6 +364,9 @@
333
364
  // @mixin hook-card-secondary(){}
334
365
  // @mixin hook-card-secondary-title(){}
335
366
  // @mixin hook-card-secondary-hover(){}
367
+ // @mixin hook-card-overlay(){}
368
+ // @mixin hook-card-overlay-title(){}
369
+ // @mixin hook-card-overlay-hover(){}
336
370
  // @mixin hook-card-misc(){}
337
371
 
338
372