uikit 3.11.2-dev.72dbb9a19 → 3.11.2-dev.76734f785

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 (114) hide show
  1. package/CHANGELOG.md +39 -19
  2. package/dist/css/uikit-core-rtl.css +86 -170
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +86 -170
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +88 -176
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +88 -176
  9. package/dist/css/uikit.min.css +1 -1
  10. package/dist/js/components/countdown.js +1 -1
  11. package/dist/js/components/countdown.min.js +1 -1
  12. package/dist/js/components/filter.js +1 -1
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +1 -1
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +1 -1
  17. package/dist/js/components/lightbox.min.js +1 -1
  18. package/dist/js/components/notification.js +1 -1
  19. package/dist/js/components/notification.min.js +1 -1
  20. package/dist/js/components/parallax.js +115 -78
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +115 -78
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +79 -33
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +115 -78
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +45 -3
  29. package/dist/js/components/slideshow.min.js +1 -1
  30. package/dist/js/components/sortable.js +1 -1
  31. package/dist/js/components/sortable.min.js +1 -1
  32. package/dist/js/components/tooltip.js +1 -1
  33. package/dist/js/components/tooltip.min.js +1 -1
  34. package/dist/js/components/upload.js +1 -1
  35. package/dist/js/components/upload.min.js +1 -1
  36. package/dist/js/uikit-core.js +259 -234
  37. package/dist/js/uikit-core.min.js +1 -1
  38. package/dist/js/uikit-icons.js +1 -1
  39. package/dist/js/uikit-icons.min.js +1 -1
  40. package/dist/js/uikit.js +461 -347
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/js/components/internal/slider-preload.js +37 -0
  44. package/src/js/components/slider.js +43 -34
  45. package/src/js/components/slideshow.js +8 -1
  46. package/src/js/core/height-viewport.js +3 -0
  47. package/src/js/core/icon.js +13 -6
  48. package/src/js/core/img.js +131 -114
  49. package/src/js/core/sticky.js +51 -57
  50. package/src/js/core/svg.js +10 -6
  51. package/src/js/core/toggle.js +2 -1
  52. package/src/js/mixin/parallax.js +116 -79
  53. package/src/js/util/ajax.js +6 -2
  54. package/src/js/util/dimensions.js +4 -4
  55. package/src/js/util/dom.js +37 -31
  56. package/src/js/util/lang.js +6 -5
  57. package/src/js/util/player.js +3 -2
  58. package/src/js/util/style.js +4 -4
  59. package/src/less/components/base.less +10 -28
  60. package/src/less/components/form-range.less +48 -95
  61. package/src/less/components/form.less +0 -1
  62. package/src/less/components/height.less +3 -0
  63. package/src/less/components/lightbox.less +0 -1
  64. package/src/less/components/modal.less +3 -7
  65. package/src/less/components/progress.less +14 -36
  66. package/src/less/components/slider.less +0 -3
  67. package/src/less/components/slideshow.less +0 -3
  68. package/src/less/components/text.less +16 -32
  69. package/src/scss/components/base.scss +10 -28
  70. package/src/scss/components/form-range.scss +48 -95
  71. package/src/scss/components/form.scss +0 -1
  72. package/src/scss/components/height.scss +3 -0
  73. package/src/scss/components/lightbox.scss +0 -1
  74. package/src/scss/components/modal.scss +3 -7
  75. package/src/scss/components/progress.scss +14 -36
  76. package/src/scss/components/slider.scss +0 -3
  77. package/src/scss/components/slideshow.scss +0 -3
  78. package/src/scss/components/text.scss +16 -32
  79. package/src/scss/mixins-theme.scss +1 -1
  80. package/src/scss/mixins.scss +1 -1
  81. package/src/scss/variables-theme.scss +3 -3
  82. package/src/scss/variables.scss +3 -3
  83. package/tests/align.html +10 -10
  84. package/tests/animation.html +2 -2
  85. package/tests/article.html +2 -2
  86. package/tests/base.html +3 -3
  87. package/tests/card.html +10 -10
  88. package/tests/column.html +3 -3
  89. package/tests/comment.html +9 -9
  90. package/tests/dotnav.html +3 -3
  91. package/tests/image.html +296 -64
  92. package/tests/images/image-type.avif +0 -0
  93. package/tests/images/image-type.jpeg +0 -0
  94. package/tests/images/image-type.webp +0 -0
  95. package/tests/index.html +8 -8
  96. package/tests/lightbox.html +10 -10
  97. package/tests/marker.html +2 -2
  98. package/tests/modal.html +8 -9
  99. package/tests/navbar.html +2 -2
  100. package/tests/overlay.html +7 -7
  101. package/tests/parallax.html +16 -7
  102. package/tests/position.html +12 -12
  103. package/tests/slidenav.html +12 -12
  104. package/tests/slider.html +20 -20
  105. package/tests/sortable.html +1 -1
  106. package/tests/sticky-parallax.html +56 -71
  107. package/tests/svg.html +6 -6
  108. package/tests/table.html +11 -11
  109. package/tests/thumbnav.html +12 -12
  110. package/tests/transition.html +30 -30
  111. package/tests/utility.html +33 -33
  112. package/tests/video.html +1 -1
  113. package/tests/width.html +1 -1
  114. package/tests/images/animated.gif +0 -0
@@ -1,10 +1,9 @@
1
- /*! UIkit 3.11.2-dev.72dbb9a19 | https://www.getuikit.com | (c) 2014 - 2022 YOOtheme | MIT License */
1
+ /*! UIkit 3.11.2-dev.76734f785 | https://www.getuikit.com | (c) 2014 - 2022 YOOtheme | MIT License */
2
2
  /* ========================================================================
3
3
  Component: Base
4
4
  ========================================================================== */
5
5
  /*
6
6
  * 1. Set `font-size` to support `rem` units
7
- * Not using `font` property because a leading hyphen (e.g. -apple-system) causes the font to break in IE11 and Edge
8
7
  * 2. Prevent adjustments of font size after orientation changes in iOS.
9
8
  * 3. Style
10
9
  */
@@ -130,7 +129,7 @@ sub {
130
129
  /* Embedded content
131
130
  ========================================================================== */
132
131
  /*
133
- * Remove the gap between embedded content and the bottom of their containers.
132
+ * Remove the gap between the element and the bottom of its parent container.
134
133
  */
135
134
  audio,
136
135
  canvas,
@@ -141,13 +140,13 @@ video {
141
140
  vertical-align: middle;
142
141
  }
143
142
  /*
144
- * 1. Add responsiveness.
145
- * 2. Auto-scale the height. Only needed if `height` attribute is present.
146
- * 3. Corrects responsive `max-width` behavior if padding and border are used.
147
- * 4. Exclude SVGs for IE11 because they don't preserve their aspect ratio.
143
+ * 1. Constrain the element to its parent width.
144
+ * 2. Preserve the intrinsic aspect ratio and auto-scale the height of an image if the `height` attribute is present.
145
+ * 3. Take border and padding into account.
148
146
  */
149
147
  canvas,
150
148
  img,
149
+ svg,
151
150
  video {
152
151
  /* 1 */
153
152
  max-width: 100%;
@@ -156,30 +155,16 @@ video {
156
155
  /* 3 */
157
156
  box-sizing: border-box;
158
157
  }
159
- /* 4 */
160
- @supports (display: block) {
161
- svg {
162
- max-width: 100%;
163
- height: auto;
164
- box-sizing: border-box;
165
- }
166
- }
167
- /*
168
- * Hide the overflow in IE.
169
- */
170
- svg:not(:root) {
171
- overflow: hidden;
172
- }
173
158
  /*
174
- * 1. Fix lazy loading images if parent element is set to `display: inline` and has `overflow: hidden`.
175
- * 2. Hide `alt` text for lazy loading images.
176
- * Note: Selector for background while loading img[data-src*='.jpg'][src*='data:image'] { background: grey; }
159
+ * Deprecated: only needed for `img` elements with `uk-img`
160
+ * 1. Hide `alt` text for lazy load images.
161
+ * 2. Fix lazy loading images if parent element is set to `display: inline` and has `overflow: hidden`.
177
162
  */
178
163
  img:not([src]) {
179
164
  /* 1 */
180
- min-width: 1px;
181
- /* 2 */
182
165
  visibility: hidden;
166
+ /* 2 */
167
+ min-width: 1px;
183
168
  }
184
169
  /*
185
170
  * Iframe
@@ -1202,28 +1187,29 @@ button.uk-icon:not(:disabled) {
1202
1187
  Component: Form Range
1203
1188
  ========================================================================== */
1204
1189
  /*
1205
- * 1. Normalize and defaults
1206
- * 2. Prevent content overflow if a fixed width is used
1207
- * 3. Take the full width
1208
- * 4. Remove default style
1209
- * 5. Remove white background in Chrome
1210
- * 6. Remove padding in IE11
1190
+ * 1. Remove default style.
1191
+ * 2. Define consistent box sizing.
1192
+ * 3. Remove `margin` in all browsers.
1193
+ * 4. Align to the center of the line box.
1194
+ * 5. Prevent content overflow if a fixed width is used.
1195
+ * 6. Take the full width.
1196
+ * 7. Remove white background in Chrome.
1211
1197
  */
1212
1198
  .uk-range {
1213
1199
  /* 1 */
1200
+ -webkit-appearance: none;
1201
+ /* 2 */
1214
1202
  box-sizing: border-box;
1203
+ /* 3 */
1215
1204
  margin: 0;
1205
+ /* 4 */
1216
1206
  vertical-align: middle;
1217
- /* 2 */
1207
+ /* 5 */
1218
1208
  max-width: 100%;
1219
- /* 3 */
1209
+ /* 6 */
1220
1210
  width: 100%;
1221
- /* 4 */
1222
- -webkit-appearance: none;
1223
- /* 5 */
1211
+ /* 7 */
1224
1212
  background: transparent;
1225
- /* 6 */
1226
- padding: 0;
1227
1213
  }
1228
1214
  /* Focus */
1229
1215
  .uk-range:focus {
@@ -1232,13 +1218,6 @@ button.uk-icon:not(:disabled) {
1232
1218
  .uk-range::-moz-focus-outer {
1233
1219
  border: none;
1234
1220
  }
1235
- /* IE11 Reset */
1236
- .uk-range::-ms-track {
1237
- height: 15px;
1238
- background: transparent;
1239
- border-color: transparent;
1240
- color: transparent;
1241
- }
1242
1221
  /*
1243
1222
  * Improves consistency of cursor style for clickable elements
1244
1223
  */
@@ -1248,12 +1227,29 @@ button.uk-icon:not(:disabled) {
1248
1227
  .uk-range:not(:disabled)::-moz-range-thumb {
1249
1228
  cursor: pointer;
1250
1229
  }
1251
- .uk-range:not(:disabled)::-ms-thumb {
1252
- cursor: pointer;
1230
+ /*
1231
+ * Track
1232
+ * 1. Safari doesn't have a focus state. Using active instead.
1233
+ */
1234
+ /* Webkit */
1235
+ .uk-range::-webkit-slider-runnable-track {
1236
+ height: 3px;
1237
+ background: #ebebeb;
1238
+ }
1239
+ .uk-range:focus::-webkit-slider-runnable-track,
1240
+ .uk-range:active::-webkit-slider-runnable-track {
1241
+ background: #dedede;
1242
+ }
1243
+ /* Firefox */
1244
+ .uk-range::-moz-range-track {
1245
+ height: 3px;
1246
+ background: #ebebeb;
1247
+ }
1248
+ .uk-range:focus::-moz-range-track {
1249
+ background: #dedede;
1253
1250
  }
1254
- /* Thumb
1255
- ========================================================================== */
1256
1251
  /*
1252
+ * Thumb
1257
1253
  * 1. Reset
1258
1254
  * 2. Style
1259
1255
  */
@@ -1275,60 +1271,10 @@ button.uk-icon:not(:disabled) {
1275
1271
  /* 2 */
1276
1272
  height: 15px;
1277
1273
  width: 15px;
1274
+ margin-top: -7px;
1278
1275
  border-radius: 500px;
1279
1276
  background: #666;
1280
1277
  }
1281
- /* Edge */
1282
- .uk-range::-ms-thumb {
1283
- /* 1 */
1284
- margin-top: 0;
1285
- }
1286
- /* IE11 */
1287
- .uk-range::-ms-thumb {
1288
- /* 1 */
1289
- border: none;
1290
- /* 2 */
1291
- height: 15px;
1292
- width: 15px;
1293
- border-radius: 500px;
1294
- background: #666;
1295
- }
1296
- /* Edge + IE11 */
1297
- .uk-range::-ms-tooltip {
1298
- display: none;
1299
- }
1300
- /* Track
1301
- ========================================================================== */
1302
- /*
1303
- * 1. Safari doesn't have a focus state. Using active instead.
1304
- */
1305
- /* Webkit */
1306
- .uk-range::-webkit-slider-runnable-track {
1307
- height: 3px;
1308
- background: #ebebeb;
1309
- }
1310
- .uk-range:focus::-webkit-slider-runnable-track,
1311
- .uk-range:active::-webkit-slider-runnable-track {
1312
- background: #dedede;
1313
- }
1314
- /* Firefox */
1315
- .uk-range::-moz-range-track {
1316
- height: 3px;
1317
- background: #ebebeb;
1318
- }
1319
- .uk-range:focus::-moz-range-track {
1320
- background: #dedede;
1321
- }
1322
- /* Edge */
1323
- .uk-range::-ms-fill-lower,
1324
- .uk-range::-ms-fill-upper {
1325
- height: 3px;
1326
- background: #ebebeb;
1327
- }
1328
- .uk-range:focus::-ms-fill-lower,
1329
- .uk-range:focus::-ms-fill-upper {
1330
- background: #dedede;
1331
- }
1332
1278
  /* ========================================================================
1333
1279
  Component: Form
1334
1280
  ========================================================================== */
@@ -1653,7 +1599,6 @@ select.uk-form-width-xsmall {
1653
1599
  display: none !important;
1654
1600
  }
1655
1601
  /* Radio and checkbox
1656
- * Note: Does not work in IE11
1657
1602
  ========================================================================== */
1658
1603
  /*
1659
1604
  * 1. Style
@@ -2112,27 +2057,23 @@ select.uk-form-width-xsmall {
2112
2057
  Component: Progress
2113
2058
  ========================================================================== */
2114
2059
  /*
2115
- * 1. Add the correct vertical alignment in Chrome, Firefox, and Opera.
2116
- * 2. Remove default style
2117
- * 3. Behave like a block element
2118
- * 4. Remove borders in Firefox and Edge
2119
- * 5. Set background color for progress container in Firefox, IE11 and Edge
2120
- * 6. Style
2060
+ * 1. Add the correct vertical alignment in all browsers.
2061
+ * 2. Behave like a block element.
2062
+ * 3. Remove borders in Firefox.
2063
+ * 4. Remove default style in Chrome, Safari and Edge.
2064
+ * 5. Style
2121
2065
  */
2122
2066
  .uk-progress {
2123
2067
  /* 1 */
2124
2068
  vertical-align: baseline;
2125
2069
  /* 2 */
2126
- -webkit-appearance: none;
2127
- -moz-appearance: none;
2128
- /* 3 */
2129
2070
  display: block;
2130
2071
  width: 100%;
2131
- /* 4 */
2072
+ /* 3 */
2132
2073
  border: 0;
2133
- /* 5 */
2074
+ /* 4 */
2134
2075
  background-color: #f8f8f8;
2135
- /* 6 */
2076
+ /* 5 */
2136
2077
  margin-bottom: 20px;
2137
2078
  height: 15px;
2138
2079
  }
@@ -2141,25 +2082,15 @@ select.uk-form-width-xsmall {
2141
2082
  margin-top: 20px;
2142
2083
  }
2143
2084
  /*
2144
- * Remove animated circles for indeterminate state in IE11 and Edge
2145
- */
2146
- .uk-progress:indeterminate {
2147
- color: transparent;
2148
- }
2149
- /*
2150
- * Progress container
2151
- * 2. Remove progress bar for indeterminate state in Firefox
2085
+ * Show background color set on `uk-progress` in Chrome, Safari and Edge.
2152
2086
  */
2153
2087
  .uk-progress::-webkit-progress-bar {
2154
- background-color: #f8f8f8;
2155
- }
2156
- /* 2 */
2157
- .uk-progress:indeterminate::-moz-progress-bar {
2158
- width: 0;
2088
+ background-color: transparent;
2159
2089
  }
2160
2090
  /*
2161
- * Progress bar
2162
- * 1. Remove right border in IE11 and Edge
2091
+ * Progress Bar
2092
+ * 1. Transitions don't work on `::-moz-progress-bar` pseudo element in Firefox yet.
2093
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=662351
2163
2094
  */
2164
2095
  .uk-progress::-webkit-progress-value {
2165
2096
  background-color: #1e87f0;
@@ -2167,12 +2098,8 @@ select.uk-form-width-xsmall {
2167
2098
  }
2168
2099
  .uk-progress::-moz-progress-bar {
2169
2100
  background-color: #1e87f0;
2170
- }
2171
- .uk-progress::-ms-fill {
2172
- background-color: #1e87f0;
2173
- transition: width 0.6s ease;
2174
2101
  /* 1 */
2175
- border: 0;
2102
+ transition: width 0.6s ease;
2176
2103
  }
2177
2104
  /* ========================================================================
2178
2105
  Component: Section
@@ -3499,10 +3426,8 @@ select.uk-form-width-xsmall {
3499
3426
  /*
3500
3427
  * 1. Create position context for spinner and close button
3501
3428
  * 2. Dimensions
3502
- * 3. Fix `max-width: 100%` not working in combination with flex and responsive images in IE11
3503
- * `!important` needed to overwrite `uk-width-auto`. See `#modal-media-image` in tests
3504
- * 4. Style
3505
- * 5. Slide-in transition
3429
+ * 3. Style
3430
+ * 4. Slide-in transition
3506
3431
  */
3507
3432
  .uk-modal-dialog {
3508
3433
  /* 1 */
@@ -3512,10 +3437,8 @@ select.uk-form-width-xsmall {
3512
3437
  margin: 0 auto;
3513
3438
  width: 600px;
3514
3439
  /* 3 */
3515
- max-width: calc(100% - 0.01px) !important;
3516
- /* 4 */
3517
3440
  background: #fff;
3518
- /* 5 */
3441
+ /* 4 */
3519
3442
  opacity: 0;
3520
3443
  transform: translateY(-100px);
3521
3444
  transition: 0.3s linear;
@@ -3669,7 +3592,6 @@ select.uk-form-width-xsmall {
3669
3592
  * 2. Take the full width
3670
3593
  * 3. Clip child elements, e.g. for `uk-cover`
3671
3594
  * 4. Optimize animation
3672
- * 5. Disable horizontal panning gestures in IE11 and Edge
3673
3595
  */
3674
3596
  .uk-slideshow-items > * {
3675
3597
  /* 1 */
@@ -3683,8 +3605,6 @@ select.uk-form-width-xsmall {
3683
3605
  overflow: hidden;
3684
3606
  /* 4 */
3685
3607
  will-change: transform, opacity;
3686
- /* 5 */
3687
- touch-action: pan-y;
3688
3608
  }
3689
3609
  /*
3690
3610
  * Hide not active items
@@ -3751,7 +3671,6 @@ select.uk-form-width-xsmall {
3751
3671
  * 1. Let items take content dimensions (0 0 auto)
3752
3672
  * `max-width` needed to keep image responsiveness and prevent content overflow
3753
3673
  * 3. Create position context
3754
- * 4. Disable horizontal panning gestures in IE11 and Edge
3755
3674
  */
3756
3675
  .uk-slider-items > * {
3757
3676
  /* 1 */
@@ -3759,8 +3678,6 @@ select.uk-form-width-xsmall {
3759
3678
  max-width: 100%;
3760
3679
  /* 3 */
3761
3680
  position: relative;
3762
- /* 4 */
3763
- touch-action: pan-y;
3764
3681
  }
3765
3682
  /* ========================================================================
3766
3683
  Component: Sticky
@@ -5810,7 +5727,6 @@ ul.uk-nav-sub {
5810
5727
  * 4. Optimize animation
5811
5728
  * 5. Responsiveness
5812
5729
  * Using `vh` for `max-height` to fix image proportions after resize in Safari and Opera
5813
- * Using `vh` and `vw` to make responsive image work in IE11
5814
5730
  */
5815
5731
  .uk-lightbox-items > * {
5816
5732
  /* 1 */
@@ -6730,6 +6646,15 @@ ul.uk-nav-sub {
6730
6646
  .uk-height-viewport {
6731
6647
  min-height: 100vh;
6732
6648
  }
6649
+ .uk-height-viewport-2 {
6650
+ min-height: 200vh;
6651
+ }
6652
+ .uk-height-viewport-3 {
6653
+ min-height: 300vh;
6654
+ }
6655
+ .uk-height-viewport-4 {
6656
+ min-height: 400vh;
6657
+ }
6733
6658
  /*
6734
6659
  * Pixel
6735
6660
  * Useful for `overflow: auto`
@@ -6845,24 +6770,20 @@ ul.uk-nav-sub {
6845
6770
  /* Background modifier
6846
6771
  ========================================================================== */
6847
6772
  /*
6848
- * 1. The background clips to the foreground text. Works in Chrome, Firefox, Safari, Edge and Opera
6849
- * Default color is set to transparent
6850
- * 2. Container fits the text
6851
- * 3. Fallback color for IE11
6773
+ * 1. The background clips to the foreground text. Works in all browsers.
6774
+ * 2. Default color is set to transparent.
6775
+ * 3. Container fits the text
6776
+ * 4. Style
6852
6777
  */
6853
6778
  .uk-text-background {
6854
6779
  /* 1 */
6855
6780
  -webkit-background-clip: text;
6856
6781
  /* 2 */
6857
- display: inline-block;
6782
+ color: transparent !important;
6858
6783
  /* 3 */
6859
- color: #1e87f0 !important;
6860
- }
6861
- @supports (-webkit-background-clip: text) {
6862
- .uk-text-background {
6863
- background-color: #1e87f0;
6864
- color: transparent !important;
6865
- }
6784
+ display: inline-block;
6785
+ /* 4 */
6786
+ background-color: #1e87f0;
6866
6787
  }
6867
6788
  /* Alignment modifiers
6868
6789
  ========================================================================== */
@@ -6968,22 +6889,17 @@ td.uk-text-truncate {
6968
6889
  max-width: 0;
6969
6890
  }
6970
6891
  /*
6971
- * 1. Wrap long words onto the next line and break them if they are too long to fit
6972
- * 2. Legacy `word-wrap` as fallback for `overflow-wrap`
6973
- * 3. Fix `overflow-wrap` which doesn't work with table cells in Chrome, Opera, IE11 and Edge
6974
- * Must use `break-all` to support IE11 and Edge
6975
- * Note: Not using `hyphens: auto;` because it hyphenates text even if not needed
6892
+ * Wrap long words onto the next line and break them if they are too long to fit.
6893
+ * 1. Make it work with table cells in all browsers.
6894
+ * Note: Not using `hyphens: auto` because it hyphenates text even if not needed.
6976
6895
  */
6977
6896
  .uk-text-break {
6978
- /* 1 */
6979
6897
  overflow-wrap: break-word;
6980
- /* 2 */
6981
- word-wrap: break-word;
6982
6898
  }
6983
- /* 3 */
6899
+ /* 1 */
6984
6900
  th.uk-text-break,
6985
6901
  td.uk-text-break {
6986
- word-break: break-all;
6902
+ word-break: break-word;
6987
6903
  }
6988
6904
  /* ========================================================================
6989
6905
  Component: Column