@vaadin/vaadin-lumo-styles 25.0.0-alpha6 → 25.0.0-alpha8

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 (221) hide show
  1. package/auto-complete.css +0 -71
  2. package/components/accordion-heading.css +14 -0
  3. package/components/accordion-panel.css +15 -0
  4. package/components/accordion.css +7 -0
  5. package/components/app-layout.css +11 -0
  6. package/components/avatar-group.css +31 -0
  7. package/components/avatar.css +17 -0
  8. package/components/button.css +12 -0
  9. package/components/card.css +50 -0
  10. package/components/charts.css +11 -0
  11. package/components/checkbox-group.css +23 -0
  12. package/components/checkbox.css +14 -0
  13. package/components/combo-box.css +47 -0
  14. package/components/confirm-dialog.css +17 -0
  15. package/components/context-menu.css +32 -0
  16. package/components/crud.css +40 -0
  17. package/components/custom-field.css +20 -0
  18. package/components/dashboard.css +34 -0
  19. package/components/date-picker.css +49 -0
  20. package/components/date-time-picker.css +28 -0
  21. package/components/details-summary.css +11 -0
  22. package/components/details.css +12 -0
  23. package/components/dialog.css +16 -0
  24. package/components/drawer-toggle.css +14 -0
  25. package/components/email-field.css +25 -0
  26. package/components/field-highlighter.css +22 -0
  27. package/components/form-item.css +11 -0
  28. package/components/form-layout.css +11 -0
  29. package/components/grid-filter-column.css +6 -0
  30. package/components/grid-filter.css +12 -0
  31. package/components/grid-pro-edit-column.css +48 -0
  32. package/components/grid-pro.css +14 -0
  33. package/components/grid-selection-column.css +6 -0
  34. package/components/grid-sort-column.css +6 -0
  35. package/components/grid-sorter.css +19 -0
  36. package/components/grid-tree-column.css +6 -0
  37. package/components/grid-tree-toggle.css +11 -0
  38. package/components/grid.css +11 -0
  39. package/components/horizontal-layout.css +11 -0
  40. package/components/icon.css +11 -0
  41. package/components/input-container.css +11 -0
  42. package/components/integer-field.css +25 -0
  43. package/components/item.css +11 -0
  44. package/components/list-box.css +11 -0
  45. package/components/login-form.css +14 -0
  46. package/components/login.css +15 -0
  47. package/components/map.css +11 -0
  48. package/components/master-detail-layout.css +11 -0
  49. package/components/menu-bar.css +47 -0
  50. package/components/message-input.css +13 -0
  51. package/components/message-list.css +6 -0
  52. package/components/message.css +12 -0
  53. package/components/multi-select-combo-box.css +61 -0
  54. package/components/notification.css +15 -0
  55. package/components/number-field.css +25 -0
  56. package/components/overlay.css +11 -0
  57. package/components/password-field.css +32 -0
  58. package/components/popover.css +14 -0
  59. package/components/progress-bar.css +11 -0
  60. package/components/radio-button.css +14 -0
  61. package/components/radio-group.css +23 -0
  62. package/components/rich-text-editor.css +26 -0
  63. package/components/scroller.css +11 -0
  64. package/components/select.css +48 -0
  65. package/components/side-nav-item.css +14 -0
  66. package/components/side-nav.css +12 -0
  67. package/components/split-layout.css +11 -0
  68. package/components/tab.css +11 -0
  69. package/components/tabs.css +12 -0
  70. package/components/tabsheet.css +19 -0
  71. package/components/text-area.css +25 -0
  72. package/components/text-field.css +23 -0
  73. package/components/time-picker.css +43 -0
  74. package/components/tooltip.css +14 -0
  75. package/components/upload.css +28 -0
  76. package/components/vertical-layout.css +11 -0
  77. package/components.css +71 -0
  78. package/global.css +8 -0
  79. package/lumo.css +8 -0
  80. package/package.json +8 -6
  81. package/props.css +12 -0
  82. package/src/components/accordion-heading.css +42 -0
  83. package/src/components/accordion-panel.css +38 -0
  84. package/src/components/app-layout.css +193 -0
  85. package/src/components/avatar-group-menu-item.css +22 -0
  86. package/src/components/avatar-group-overlay.css +15 -0
  87. package/src/components/avatar-group.css +67 -0
  88. package/src/components/avatar.css +86 -0
  89. package/src/components/button.css +334 -0
  90. package/src/components/card.css +38 -0
  91. package/src/components/chart.css +88 -0
  92. package/src/components/checkbox-group.css +18 -0
  93. package/src/components/checkbox.css +341 -0
  94. package/src/components/combo-box-item.css +18 -0
  95. package/src/components/combo-box-overlay.css +15 -0
  96. package/src/components/combo-box.css +14 -0
  97. package/src/components/confirm-dialog-overlay.css +59 -0
  98. package/src/components/context-menu-item.css +39 -0
  99. package/src/components/context-menu-list-box.css +40 -0
  100. package/src/components/context-menu-overlay.css +41 -0
  101. package/src/components/crud-dialog-overlay.css +57 -0
  102. package/src/components/crud-edit.css +30 -0
  103. package/src/components/crud.css +157 -0
  104. package/src/components/custom-field.css +102 -0
  105. package/src/components/dashboard-layout.css +94 -0
  106. package/src/components/dashboard-section.css +113 -0
  107. package/src/components/dashboard-widget.css +224 -0
  108. package/src/components/dashboard.css +23 -0
  109. package/src/components/date-picker-month-calendar.css +192 -0
  110. package/src/components/date-picker-overlay-content.css +161 -0
  111. package/src/components/date-picker-overlay.css +60 -0
  112. package/src/components/date-picker-year.css +35 -0
  113. package/src/components/date-picker.css +41 -0
  114. package/src/components/date-time-picker.css +36 -0
  115. package/src/components/details-summary.css +131 -0
  116. package/src/components/details.css +37 -0
  117. package/src/components/dialog-overlay.css +173 -0
  118. package/src/components/drawer-toggle.css +51 -0
  119. package/src/components/email-field.css +26 -0
  120. package/src/components/field-outline.css +51 -0
  121. package/src/components/form-item.css +36 -0
  122. package/src/components/form-layout.css +11 -0
  123. package/src/components/grid-filter.css +16 -0
  124. package/src/components/grid-pro-edit-select.css +19 -0
  125. package/src/components/grid-pro.css +84 -0
  126. package/src/components/grid-sorter.css +70 -0
  127. package/src/components/grid-tree-toggle.css +104 -0
  128. package/src/components/grid.css +755 -0
  129. package/src/components/horizontal-layout.css +38 -0
  130. package/src/components/icon.css +11 -0
  131. package/src/components/input-container.css +230 -0
  132. package/src/components/item.css +94 -0
  133. package/src/components/list-box.css +31 -0
  134. package/src/components/login-form-wrapper.css +134 -0
  135. package/src/components/login-overlay-wrapper.css +179 -0
  136. package/src/components/map.css +182 -0
  137. package/src/components/master-detail-layout.css +21 -0
  138. package/src/components/menu-bar-button.css +128 -0
  139. package/src/components/menu-bar-item.css +23 -0
  140. package/src/components/menu-bar-overlay.css +10 -0
  141. package/src/components/menu-bar.css +31 -0
  142. package/src/components/message-input.css +30 -0
  143. package/src/components/message.css +82 -0
  144. package/src/components/multi-select-combo-box-chip.css +113 -0
  145. package/src/components/multi-select-combo-box-container.css +20 -0
  146. package/src/components/multi-select-combo-box-item.css +13 -0
  147. package/src/components/multi-select-combo-box-overlay.css +18 -0
  148. package/src/components/multi-select-combo-box.css +98 -0
  149. package/src/components/notification-card.css +228 -0
  150. package/src/components/notification-container.css +53 -0
  151. package/src/components/number-field.css +53 -0
  152. package/src/components/password-field-button.css +19 -0
  153. package/src/components/password-field.css +24 -0
  154. package/src/components/popover-overlay.css +156 -0
  155. package/src/components/progress-bar.css +295 -0
  156. package/src/components/radio-button.css +156 -0
  157. package/src/components/radio-group.css +18 -0
  158. package/src/components/rich-text-editor-popup-overlay.css +27 -0
  159. package/src/components/rich-text-editor.css +485 -0
  160. package/src/components/scroller.css +40 -0
  161. package/src/components/select-overlay.css +54 -0
  162. package/src/components/select-value-button.css +57 -0
  163. package/src/components/select.css +60 -0
  164. package/src/components/side-nav-item.css +170 -0
  165. package/src/components/side-nav.css +102 -0
  166. package/src/components/split-layout.css +131 -0
  167. package/src/components/tab.css +246 -0
  168. package/src/components/tabs.css +285 -0
  169. package/src/components/tabsheet.css +59 -0
  170. package/src/components/text-area.css +116 -0
  171. package/src/components/time-picker-overlay.css +15 -0
  172. package/src/components/time-picker.css +36 -0
  173. package/src/components/tooltip-overlay.css +50 -0
  174. package/src/components/upload-file-list.css +24 -0
  175. package/src/components/upload-file.css +133 -0
  176. package/src/components/upload-icon.css +14 -0
  177. package/src/components/upload.css +56 -0
  178. package/src/components/user-tag.css +48 -0
  179. package/src/components/user-tags-overlay.css +67 -0
  180. package/src/components/vertical-layout.css +38 -0
  181. package/src/global/badge.css +167 -0
  182. package/src/global/color-scheme.css +99 -0
  183. package/src/global/typography.css +113 -0
  184. package/src/mixins/checkable-field.css +67 -0
  185. package/src/mixins/combo-box-loader.css +14 -0
  186. package/src/mixins/combo-box-overlay.css +30 -0
  187. package/src/mixins/dashboard-item.css +253 -0
  188. package/src/mixins/field-base.css +187 -0
  189. package/src/mixins/field-button.css +46 -0
  190. package/src/mixins/field-error-message.css +36 -0
  191. package/src/mixins/field-helper.css +62 -0
  192. package/src/mixins/field-label.css +62 -0
  193. package/src/mixins/field-required.css +26 -0
  194. package/src/mixins/grid-pro-editor.css +35 -0
  195. package/src/mixins/group-field.css +58 -0
  196. package/src/mixins/loader.css +48 -0
  197. package/src/mixins/menu-overlay-core.css +36 -0
  198. package/src/mixins/menu-overlay-ext.css +63 -0
  199. package/src/mixins/overlay.css +121 -0
  200. package/src/mixins/resizable-overlay.css +99 -0
  201. package/src/props/color.css +98 -0
  202. package/src/props/icons.css +61 -0
  203. package/src/props/reset.css +11 -0
  204. package/src/props/sizing.css +19 -0
  205. package/src/props/spacing.css +27 -0
  206. package/src/props/style.css +21 -0
  207. package/src/props/typography.css +24 -0
  208. package/src/utilities/accessibility.css +17 -0
  209. package/src/utilities/background.css +189 -0
  210. package/src/utilities/border.css +173 -0
  211. package/src/utilities/filter.css +37 -0
  212. package/src/utilities/flexbox-grid.css +781 -0
  213. package/src/utilities/layout.css +629 -0
  214. package/src/utilities/shadows.css +29 -0
  215. package/src/utilities/sizing.css +142 -0
  216. package/src/utilities/spacing.css +682 -0
  217. package/src/utilities/transition.css +46 -0
  218. package/src/utilities/typography.css +424 -0
  219. package/style.d.ts +0 -2
  220. package/style.js +1 -89
  221. package/utility.css +17 -0
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ @media lumo_mixins_field-error-message {
7
+ [part='error-message'] {
8
+ margin-left: calc(var(--lumo-border-radius-m) / 4);
9
+ font-size: var(--vaadin-input-field-error-font-size, var(--lumo-font-size-xs));
10
+ line-height: var(--lumo-line-height-xs);
11
+ font-weight: var(--vaadin-input-field-error-font-weight, 400);
12
+ color: var(--vaadin-input-field-error-color, var(--lumo-error-text-color));
13
+ will-change: max-height;
14
+ transition: 0.4s max-height;
15
+ max-height: 5em;
16
+ }
17
+
18
+ :host([has-error-message]) [part='error-message']::before,
19
+ :host([has-error-message]) [part='error-message']::after {
20
+ content: '';
21
+ display: block;
22
+ height: 0.4em;
23
+ }
24
+
25
+ :host(:not([invalid])) [part='error-message'] {
26
+ max-height: 0;
27
+ overflow: hidden;
28
+ }
29
+
30
+ /* RTL specific styles */
31
+
32
+ :host([dir='rtl']) [part='error-message'] {
33
+ margin-left: 0;
34
+ margin-right: calc(var(--lumo-border-radius-m) / 4);
35
+ }
36
+ }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ @media lumo_mixins_field-helper {
7
+ :host {
8
+ --_helper-spacing: var(--vaadin-input-field-helper-spacing, 0.4em);
9
+ }
10
+
11
+ :host([has-helper]) [part='helper-text']::before {
12
+ content: '';
13
+ display: block;
14
+ height: var(--_helper-spacing);
15
+ }
16
+
17
+ [part='helper-text'] {
18
+ display: block;
19
+ color: var(--vaadin-input-field-helper-color, var(--lumo-secondary-text-color));
20
+ font-size: var(--vaadin-input-field-helper-font-size, var(--lumo-font-size-xs));
21
+ line-height: var(--lumo-line-height-xs);
22
+ font-weight: var(--vaadin-input-field-helper-font-weight, 400);
23
+ margin-left: calc(var(--lumo-border-radius-m) / 4);
24
+ transition: color 0.2s;
25
+ }
26
+
27
+ :host(:hover:not([readonly])) [part='helper-text'] {
28
+ color: var(--lumo-body-text-color);
29
+ }
30
+
31
+ :host([disabled]) [part='helper-text'] {
32
+ color: var(--lumo-disabled-text-color);
33
+ -webkit-text-fill-color: var(--lumo-disabled-text-color);
34
+ }
35
+
36
+ :host([has-helper][theme~='helper-above-field']) [part='helper-text']::before {
37
+ display: none;
38
+ }
39
+
40
+ :host([has-helper][theme~='helper-above-field']) [part='helper-text']::after {
41
+ content: '';
42
+ display: block;
43
+ height: var(--_helper-spacing);
44
+ }
45
+
46
+ :host([has-helper][theme~='helper-above-field']) [part='label'] {
47
+ order: 0;
48
+ padding-bottom: var(--_helper-spacing);
49
+ }
50
+
51
+ :host([has-helper][theme~='helper-above-field']) [part='helper-text'] {
52
+ order: 1;
53
+ }
54
+
55
+ :host([has-helper][theme~='helper-above-field']) [part='label'] + * {
56
+ order: 2;
57
+ }
58
+
59
+ :host([has-helper][theme~='helper-above-field']) [part='error-message'] {
60
+ order: 3;
61
+ }
62
+ }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ @media lumo_mixins_field-label {
7
+ [part='label'] {
8
+ align-self: flex-start;
9
+ color: var(--vaadin-input-field-label-color, var(--lumo-secondary-text-color));
10
+ font-weight: var(--vaadin-input-field-label-font-weight, 500);
11
+ font-size: var(--vaadin-input-field-label-font-size, var(--lumo-font-size-s));
12
+ transition: color 0.2s;
13
+ line-height: 1;
14
+ padding-inline: calc(var(--lumo-border-radius-m) / 4) 1em;
15
+ padding-bottom: 0.5em;
16
+ /* As a workaround for diacritics being cut off, add a top padding and a
17
+ negative margin to compensate */
18
+ padding-top: 0.25em;
19
+ margin-top: -0.25em;
20
+ overflow: hidden;
21
+ white-space: nowrap;
22
+ text-overflow: ellipsis;
23
+ position: relative;
24
+ max-width: 100%;
25
+ box-sizing: border-box;
26
+ }
27
+
28
+ :host([focused]:not([readonly])) [part='label'] {
29
+ color: var(--vaadin-input-field-focused-label-color, var(--lumo-primary-text-color));
30
+ }
31
+
32
+ :host(:hover:not([readonly]):not([focused])) [part='label'] {
33
+ color: var(--vaadin-input-field-hovered-label-color, var(--lumo-body-text-color));
34
+ }
35
+
36
+ /* Touch device adjustment */
37
+ @media (pointer: coarse) {
38
+ :host(:hover:not([readonly]):not([focused])) [part='label'] {
39
+ color: var(--vaadin-input-field-label-color, var(--lumo-secondary-text-color));
40
+ }
41
+ }
42
+
43
+ :host(:not([has-label])) [part='label'] {
44
+ display: none;
45
+ }
46
+
47
+ :host([has-label])::before {
48
+ margin-top: calc(var(--lumo-font-size-s) * 1.5);
49
+ }
50
+
51
+ :host([has-label][theme~='small'])::before {
52
+ margin-top: calc(var(--lumo-font-size-xs) * 1.5);
53
+ }
54
+
55
+ :host([has-label]) {
56
+ padding-top: var(--lumo-space-m);
57
+ }
58
+
59
+ :host([has-label]) ::slotted([slot='tooltip']) {
60
+ --vaadin-tooltip-offset-bottom: calc((var(--lumo-space-m) - var(--lumo-space-xs)) * -1);
61
+ }
62
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ @media lumo_mixins_field-required {
7
+ :host([required]) [part='required-indicator']::after {
8
+ content: var(--lumo-required-field-indicator, '\2022');
9
+ color: var(--lumo-required-field-indicator-color, var(--lumo-primary-text-color));
10
+ position: absolute;
11
+ right: 0;
12
+ width: 1em;
13
+ text-align: center;
14
+ }
15
+
16
+ :host([invalid]) [part='required-indicator']::after {
17
+ color: var(--lumo-required-field-indicator-color, var(--lumo-error-text-color));
18
+ }
19
+
20
+ /* RTL specific styles */
21
+
22
+ :host([dir='rtl']) [part='required-indicator']::after {
23
+ right: auto;
24
+ left: 0;
25
+ }
26
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2000 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ @media lumo_mixins_grid-pro-editor {
7
+ :host([theme~='grid-pro-editor']) {
8
+ position: absolute;
9
+ inset: 0;
10
+ padding: 0;
11
+ will-change: transform;
12
+ font-size: inherit;
13
+ --lumo-text-field-size: 27px;
14
+ /* outline similar to what grid uses */
15
+ box-shadow: inset 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
16
+ }
17
+
18
+ :host([theme~='grid-pro-editor']) [part='input-field'] {
19
+ padding: 0;
20
+ border-radius: 0;
21
+ flex-grow: 1;
22
+ font-weight: 400;
23
+ --vaadin-input-field-border-color: transparent;
24
+ }
25
+
26
+ /* reset outline inherited from text-field */
27
+ :host([theme~='grid-pro-editor'][focus-ring]) [part='input-field'] {
28
+ box-shadow: none;
29
+ }
30
+
31
+ :host([theme~='grid-pro-editor']) ::slotted(input) {
32
+ padding: 0 var(--lumo-space-m);
33
+ font-size: inherit;
34
+ }
35
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ @media lumo_mixins_group-field {
7
+ :host {
8
+ display: inline-flex;
9
+ color: var(--lumo-body-text-color);
10
+ font-size: var(--lumo-font-size-m);
11
+ font-family: var(--lumo-font-family);
12
+ -webkit-font-smoothing: antialiased;
13
+ -moz-osx-font-smoothing: grayscale;
14
+ -webkit-tap-highlight-color: transparent;
15
+ padding: var(--lumo-space-xs) 0;
16
+ }
17
+
18
+ :host::before {
19
+ content: '\2003';
20
+ width: 0;
21
+ height: var(--lumo-size-s);
22
+ box-sizing: border-box;
23
+ display: inline-flex;
24
+ align-items: center;
25
+ }
26
+
27
+ :host([hidden]) {
28
+ display: none !important;
29
+ }
30
+
31
+ .vaadin-group-field-container {
32
+ display: flex;
33
+ flex-direction: column;
34
+ width: 100%;
35
+ }
36
+
37
+ [part='group-field'] {
38
+ display: flex;
39
+ flex-wrap: wrap;
40
+ }
41
+
42
+ :host(:not([has-label])) [part='label'] {
43
+ display: none;
44
+ }
45
+
46
+ :host([theme~='vertical']) [part='group-field'] {
47
+ flex-direction: column;
48
+ }
49
+
50
+ :host([disabled]) [part='label'] {
51
+ color: var(--lumo-disabled-text-color);
52
+ -webkit-text-fill-color: var(--lumo-disabled-text-color);
53
+ }
54
+
55
+ :host([focused]:not([readonly])) [part='label'] {
56
+ color: var(--lumo-primary-text-color);
57
+ }
58
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ @media lumo_mixins_loader {
7
+ [part='loader'] {
8
+ box-sizing: border-box;
9
+ width: var(--lumo-icon-size-s);
10
+ height: var(--lumo-icon-size-s);
11
+ border: 2px solid transparent;
12
+ border-color: var(--lumo-primary-color-10pct) var(--lumo-primary-color-10pct) var(--lumo-primary-color)
13
+ var(--lumo-primary-color);
14
+ border-radius: calc(0.5 * var(--lumo-icon-size-s));
15
+ opacity: 0;
16
+ pointer-events: none;
17
+ }
18
+
19
+ :host(:not([loading])) [part='loader'] {
20
+ display: none;
21
+ }
22
+
23
+ :host([loading]) [part='loader'] {
24
+ animation:
25
+ 1s linear infinite lumo-loader-rotate,
26
+ 0.3s 0.1s lumo-loader-fade-in both;
27
+ }
28
+
29
+ @keyframes lumo-loader-fade-in {
30
+ 0% {
31
+ opacity: 0;
32
+ }
33
+
34
+ 100% {
35
+ opacity: 1;
36
+ }
37
+ }
38
+
39
+ @keyframes lumo-loader-rotate {
40
+ 0% {
41
+ transform: rotate(0deg);
42
+ }
43
+
44
+ 100% {
45
+ transform: rotate(360deg);
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ @media lumo_mixins_menu-overlay-core {
7
+ :host([opening]),
8
+ :host([closing]) {
9
+ animation: 0.14s lumo-overlay-dummy-animation;
10
+ }
11
+
12
+ [part='overlay'] {
13
+ will-change: opacity, transform;
14
+ }
15
+
16
+ :host([opening]) [part='overlay'] {
17
+ animation: 0.1s lumo-menu-overlay-enter ease-out both;
18
+ }
19
+
20
+ @keyframes lumo-menu-overlay-enter {
21
+ 0% {
22
+ opacity: 0;
23
+ transform: translateY(-4px);
24
+ }
25
+ }
26
+
27
+ :host([closing]) [part='overlay'] {
28
+ animation: 0.1s lumo-menu-overlay-exit both;
29
+ }
30
+
31
+ @keyframes lumo-menu-overlay-exit {
32
+ 100% {
33
+ opacity: 0;
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ @media lumo_mixins_menu-overlay-ext {
7
+ /* Small viewport (bottom sheet) styles */
8
+ /* Use direct media queries instead of the state attributes ([phone] and [fullscreen]) provided by the elements */
9
+ @media (max-width: 450px), (max-height: 450px) {
10
+ :host {
11
+ inset: 0 0 var(--vaadin-overlay-viewport-bottom, 0) 0 !important;
12
+ align-items: stretch !important;
13
+ justify-content: flex-end !important;
14
+ }
15
+
16
+ [part='overlay'] {
17
+ max-height: 50vh;
18
+ width: 100vw;
19
+ border-radius: 0;
20
+ box-shadow: var(--lumo-box-shadow-xl);
21
+ }
22
+
23
+ /* The content part scrolls instead of the overlay part, because of the gradient fade-out */
24
+ [part='content'] {
25
+ padding: 30px var(--lumo-space-m);
26
+ max-height: inherit;
27
+ box-sizing: border-box;
28
+ overflow: auto;
29
+ mask-image: linear-gradient(transparent, #000 40px, #000 calc(100% - 40px), transparent);
30
+ }
31
+
32
+ [part='backdrop'] {
33
+ display: block;
34
+ }
35
+
36
+ /* Animations */
37
+
38
+ :host([opening]) [part='overlay'] {
39
+ animation: 0.2s lumo-mobile-menu-overlay-enter cubic-bezier(0.215, 0.61, 0.355, 1) both;
40
+ }
41
+
42
+ :host([closing]),
43
+ :host([closing]) [part='backdrop'] {
44
+ animation-delay: 0.14s;
45
+ }
46
+
47
+ :host([closing]) [part='overlay'] {
48
+ animation: 0.14s 0.14s lumo-mobile-menu-overlay-exit cubic-bezier(0.55, 0.055, 0.675, 0.19) both;
49
+ }
50
+ }
51
+
52
+ @keyframes lumo-mobile-menu-overlay-enter {
53
+ 0% {
54
+ transform: translateY(150%);
55
+ }
56
+ }
57
+
58
+ @keyframes lumo-mobile-menu-overlay-exit {
59
+ 100% {
60
+ transform: translateY(150%);
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,121 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ @media lumo_mixins_overlay {
7
+ :host {
8
+ z-index: 200;
9
+ position: fixed;
10
+
11
+ /* Despite of what the names say, <vaadin-overlay> is just a container
12
+ for position/sizing/alignment. The actual overlay is the overlay part. */
13
+
14
+ /* Use flexbox alignment for the overlay part. */
15
+ display: flex;
16
+ flex-direction: column; /* makes dropdowns sizing easier */
17
+ /* Align to center by default. */
18
+ align-items: center;
19
+ justify-content: center;
20
+
21
+ /* Override native [popover] user agent styles */
22
+ width: auto;
23
+ height: auto;
24
+ border: none;
25
+ padding: 0;
26
+ background-color: transparent;
27
+ overflow: visible;
28
+
29
+ /* Allow centering when max-width/max-height applies. */
30
+ margin: auto;
31
+
32
+ /* The host is not clickable, only the overlay part is. */
33
+ pointer-events: none;
34
+
35
+ /* Remove tap highlight on touch devices. */
36
+ -webkit-tap-highlight-color: transparent;
37
+
38
+ /* CSS API for host */
39
+ --vaadin-overlay-viewport-bottom: 0;
40
+
41
+ inset: var(--lumo-space-m) var(--lumo-space-m) var(--lumo-space-m) var(--lumo-space-m);
42
+ /* Workaround for Edge issue (only on Surface), where an overflowing vaadin-list-box inside vaadin-select-overlay makes the overlay transparent */
43
+ /* stylelint-disable-next-line */
44
+ outline: 0px solid transparent;
45
+ }
46
+
47
+ :host([hidden]),
48
+ :host(:not([opened]):not([closing])),
49
+ :host(:not([opened]):not([closing])) [part='overlay'] {
50
+ display: none !important;
51
+ }
52
+
53
+ [part='overlay'] {
54
+ overflow: auto;
55
+ pointer-events: auto;
56
+
57
+ /* Prevent overflowing the host */
58
+ max-width: 100%;
59
+ box-sizing: border-box;
60
+
61
+ -webkit-tap-highlight-color: initial; /* reenable tap highlight inside */
62
+ background-color: var(--lumo-base-color);
63
+ background-image: linear-gradient(var(--lumo-tint-5pct), var(--lumo-tint-5pct));
64
+ border-radius: var(--lumo-border-radius-m);
65
+ box-shadow:
66
+ 0 0 0 1px var(--lumo-shade-5pct),
67
+ var(--lumo-box-shadow-m);
68
+ color: var(--lumo-body-text-color);
69
+ font-family: var(--lumo-font-family);
70
+ font-size: var(--lumo-font-size-m);
71
+ font-weight: 400;
72
+ line-height: var(--lumo-line-height-m);
73
+ letter-spacing: 0;
74
+ text-transform: none;
75
+ -webkit-text-size-adjust: 100%;
76
+ -webkit-font-smoothing: antialiased;
77
+ -moz-osx-font-smoothing: grayscale;
78
+ }
79
+
80
+ [part='backdrop'] {
81
+ z-index: -1;
82
+ content: '';
83
+ background: rgba(0, 0, 0, 0.5);
84
+ position: fixed;
85
+ inset: 0;
86
+ pointer-events: auto;
87
+ background-color: var(--lumo-shade-20pct);
88
+ animation: 0.2s lumo-overlay-backdrop-enter both;
89
+ will-change: opacity;
90
+ }
91
+
92
+ [part='content'] {
93
+ padding: var(--lumo-space-xs);
94
+ }
95
+
96
+ @keyframes lumo-overlay-backdrop-enter {
97
+ 0% {
98
+ opacity: 0;
99
+ }
100
+ }
101
+
102
+ :host([closing]) [part='backdrop'] {
103
+ animation: 0.2s lumo-overlay-backdrop-exit both;
104
+ }
105
+
106
+ @keyframes lumo-overlay-backdrop-exit {
107
+ 100% {
108
+ opacity: 0;
109
+ }
110
+ }
111
+
112
+ @keyframes lumo-overlay-dummy-animation {
113
+ 0% {
114
+ opacity: 1;
115
+ }
116
+
117
+ 100% {
118
+ opacity: 1;
119
+ }
120
+ }
121
+ }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ @media lumo_mixins_resizable-overlay {
7
+ [part='overlay'] {
8
+ position: relative;
9
+ overflow: visible;
10
+ max-height: 100%;
11
+ display: flex;
12
+ }
13
+
14
+ [part='content'] {
15
+ box-sizing: border-box;
16
+ height: 100%;
17
+ }
18
+
19
+ .resizer-container {
20
+ overflow: auto;
21
+ flex-grow: 1;
22
+ border-radius: inherit; /* prevent child elements being drawn outside part=overlay */
23
+ }
24
+
25
+ [part='overlay'][style] .resizer-container {
26
+ min-height: 100%;
27
+ width: 100%;
28
+ }
29
+
30
+ :host(:not([resizable])) .resizer {
31
+ display: none;
32
+ }
33
+
34
+ :host([resizable]) [part='title'] {
35
+ cursor: move;
36
+ -webkit-user-select: none;
37
+ user-select: none;
38
+ }
39
+
40
+ .resizer {
41
+ position: absolute;
42
+ height: 16px;
43
+ width: 16px;
44
+ }
45
+
46
+ .resizer.edge {
47
+ height: 8px;
48
+ width: 8px;
49
+ inset: -4px;
50
+ }
51
+
52
+ .resizer.edge.n {
53
+ width: auto;
54
+ bottom: auto;
55
+ cursor: ns-resize;
56
+ }
57
+
58
+ .resizer.ne {
59
+ top: -4px;
60
+ right: -4px;
61
+ cursor: nesw-resize;
62
+ }
63
+
64
+ .resizer.edge.e {
65
+ height: auto;
66
+ left: auto;
67
+ cursor: ew-resize;
68
+ }
69
+
70
+ .resizer.se {
71
+ bottom: -4px;
72
+ right: -4px;
73
+ cursor: nwse-resize;
74
+ }
75
+
76
+ .resizer.edge.s {
77
+ width: auto;
78
+ top: auto;
79
+ cursor: ns-resize;
80
+ }
81
+
82
+ .resizer.sw {
83
+ bottom: -4px;
84
+ left: -4px;
85
+ cursor: nesw-resize;
86
+ }
87
+
88
+ .resizer.edge.w {
89
+ height: auto;
90
+ right: auto;
91
+ cursor: ew-resize;
92
+ }
93
+
94
+ .resizer.nw {
95
+ top: -4px;
96
+ left: -4px;
97
+ cursor: nwse-resize;
98
+ }
99
+ }