@db-ux/core-components 1.0.0-test-13b991d

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 (167) hide show
  1. package/README.md +107 -0
  2. package/build/assets/fonts/OFL.txt +93 -0
  3. package/build/assets/fonts/OpenSans-Bold-EU.woff2 +0 -0
  4. package/build/assets/fonts/OpenSans-Bold.ttf +0 -0
  5. package/build/assets/fonts/OpenSans-ExtraBold-EU.woff2 +0 -0
  6. package/build/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
  7. package/build/assets/fonts/OpenSans-Light-EU.woff2 +0 -0
  8. package/build/assets/fonts/OpenSans-Light.ttf +0 -0
  9. package/build/assets/fonts/OpenSans-Medium-EU.woff2 +0 -0
  10. package/build/assets/fonts/OpenSans-Medium.ttf +0 -0
  11. package/build/assets/fonts/OpenSans-Regular-EU.woff2 +0 -0
  12. package/build/assets/fonts/OpenSans-Regular.ttf +0 -0
  13. package/build/assets/fonts/OpenSans-SemiBold-EU.woff2 +0 -0
  14. package/build/assets/fonts/OpenSans-SemiBold.ttf +0 -0
  15. package/build/assets/fonts/README.md +23 -0
  16. package/build/assets/fonts/generate-eu-fonts.ts +46 -0
  17. package/build/assets/fonts/unicode-eu.txt +14 -0
  18. package/build/assets/icons/DB_LICENSE +253 -0
  19. package/build/assets/icons/LICENCES.json +153 -0
  20. package/build/assets/icons/arrow_down.svg +1 -0
  21. package/build/assets/icons/arrow_left.svg +1 -0
  22. package/build/assets/icons/arrow_right.svg +1 -0
  23. package/build/assets/icons/arrow_up.svg +1 -0
  24. package/build/assets/icons/arrow_up_right.svg +1 -0
  25. package/build/assets/icons/brand.svg +1 -0
  26. package/build/assets/icons/calendar.svg +5 -0
  27. package/build/assets/icons/check-circle.svg +1 -0
  28. package/build/assets/icons/check.svg +1 -0
  29. package/build/assets/icons/check_circle.svg +1 -0
  30. package/build/assets/icons/chevron_down.svg +1 -0
  31. package/build/assets/icons/chevron_left.svg +1 -0
  32. package/build/assets/icons/chevron_right.svg +1 -0
  33. package/build/assets/icons/chevron_up.svg +1 -0
  34. package/build/assets/icons/circle.svg +1 -0
  35. package/build/assets/icons/clock.svg +1 -0
  36. package/build/assets/icons/cross.svg +1 -0
  37. package/build/assets/icons/cross_circle.svg +1 -0
  38. package/build/assets/icons/exclamation_mark_circle.svg +1 -0
  39. package/build/assets/icons/exclamation_mark_triangle.svg +1 -0
  40. package/build/assets/icons/fonts/all/db-ux.woff2 +0 -0
  41. package/build/assets/icons/fonts/default/db-ux.woff2 +0 -0
  42. package/build/assets/icons/fonts/default_12/db-ux.woff2 +0 -0
  43. package/build/assets/icons/fonts/default_14/db-ux.woff2 +0 -0
  44. package/build/assets/icons/fonts/default_16/db-ux.woff2 +0 -0
  45. package/build/assets/icons/fonts/default_20/db-ux.woff2 +0 -0
  46. package/build/assets/icons/fonts/default_24/db-ux.woff2 +0 -0
  47. package/build/assets/icons/fonts/default_28/db-ux.woff2 +0 -0
  48. package/build/assets/icons/fonts/default_32/db-ux.woff2 +0 -0
  49. package/build/assets/icons/fonts/default_48/db-ux.woff2 +0 -0
  50. package/build/assets/icons/fonts/default_64/db-ux.woff2 +0 -0
  51. package/build/assets/icons/fonts/filled/db-ux.woff2 +0 -0
  52. package/build/assets/icons/fonts/filled_12/db-ux.woff2 +0 -0
  53. package/build/assets/icons/fonts/filled_14/db-ux.woff2 +0 -0
  54. package/build/assets/icons/fonts/filled_16/db-ux.woff2 +0 -0
  55. package/build/assets/icons/fonts/filled_20/db-ux.woff2 +0 -0
  56. package/build/assets/icons/fonts/filled_24/db-ux.woff2 +0 -0
  57. package/build/assets/icons/fonts/filled_28/db-ux.woff2 +0 -0
  58. package/build/assets/icons/fonts/filled_32/db-ux.woff2 +0 -0
  59. package/build/assets/icons/fonts/filled_48/db-ux.woff2 +0 -0
  60. package/build/assets/icons/fonts/filled_64/db-ux.woff2 +0 -0
  61. package/build/assets/icons/information_circle.svg +1 -0
  62. package/build/assets/icons/magnifying_glass.svg +1 -0
  63. package/build/assets/icons/menu.svg +1 -0
  64. package/build/assets/icons/minus.svg +1 -0
  65. package/build/assets/icons/plus.svg +1 -0
  66. package/build/assets/icons/resize_handle_corner.svg +1 -0
  67. package/build/assets/icons/x_placeholder.svg +1 -0
  68. package/build/components/accordion/accordion.css +78 -0
  69. package/build/components/accordion/accordion.scss +62 -0
  70. package/build/components/accordion-item/accordion-item.css +239 -0
  71. package/build/components/accordion-item/accordion-item.scss +73 -0
  72. package/build/components/badge/badge.css +253 -0
  73. package/build/components/badge/badge.scss +107 -0
  74. package/build/components/brand/brand.css +42 -0
  75. package/build/components/brand/brand.scss +32 -0
  76. package/build/components/button/button.css +165 -0
  77. package/build/components/button/button.scss +123 -0
  78. package/build/components/card/card.css +115 -0
  79. package/build/components/card/card.scss +56 -0
  80. package/build/components/checkbox/checkbox.css +476 -0
  81. package/build/components/checkbox/checkbox.scss +80 -0
  82. package/build/components/divider/divider.css +84 -0
  83. package/build/components/divider/divider.scss +56 -0
  84. package/build/components/drawer/drawer.css +303 -0
  85. package/build/components/drawer/drawer.scss +228 -0
  86. package/build/components/header/header.css +697 -0
  87. package/build/components/header/header.scss +246 -0
  88. package/build/components/icon/icon.css +24 -0
  89. package/build/components/icon/icon.scss +14 -0
  90. package/build/components/infotext/infotext.css +152 -0
  91. package/build/components/infotext/infotext.scss +54 -0
  92. package/build/components/input/input.css +712 -0
  93. package/build/components/input/input.scss +147 -0
  94. package/build/components/link/link.css +257 -0
  95. package/build/components/link/link.scss +60 -0
  96. package/build/components/navigation/navigation.css +218 -0
  97. package/build/components/navigation/navigation.scss +117 -0
  98. package/build/components/navigation-item/navigation-item.css +482 -0
  99. package/build/components/navigation-item/navigation-item.scss +310 -0
  100. package/build/components/notification/notification-grid-default.css +1 -0
  101. package/build/components/notification/notification-grid-default.scss +52 -0
  102. package/build/components/notification/notification-grid-non-overlay.css +1 -0
  103. package/build/components/notification/notification-grid-non-overlay.scss +66 -0
  104. package/build/components/notification/notification-grid-overlay.css +1 -0
  105. package/build/components/notification/notification-grid-overlay.scss +55 -0
  106. package/build/components/notification/notification.css +1173 -0
  107. package/build/components/notification/notification.scss +216 -0
  108. package/build/components/page/page.css +49 -0
  109. package/build/components/page/page.scss +52 -0
  110. package/build/components/popover/popover.css +291 -0
  111. package/build/components/popover/popover.scss +26 -0
  112. package/build/components/radio/radio.css +390 -0
  113. package/build/components/radio/radio.scss +49 -0
  114. package/build/components/section/section.css +38 -0
  115. package/build/components/section/section.scss +51 -0
  116. package/build/components/select/select.css +651 -0
  117. package/build/components/select/select.scss +83 -0
  118. package/build/components/stack/stack-web-component.css +93 -0
  119. package/build/components/stack/stack-web-component.scss +1 -0
  120. package/build/components/stack/stack.css +93 -0
  121. package/build/components/stack/stack.scss +5 -0
  122. package/build/components/switch/switch.css +901 -0
  123. package/build/components/switch/switch.scss +233 -0
  124. package/build/components/tab-item/tab-item.css +160 -0
  125. package/build/components/tab-item/tab-item.scss +135 -0
  126. package/build/components/tab-list/tab-list.css +202 -0
  127. package/build/components/tab-list/tab-list.scss +18 -0
  128. package/build/components/tab-panel/tab-panel.css +10 -0
  129. package/build/components/tab-panel/tab-panel.scss +5 -0
  130. package/build/components/tabs/tabs.css +358 -0
  131. package/build/components/tabs/tabs.scss +361 -0
  132. package/build/components/tag/tag.css +1544 -0
  133. package/build/components/tag/tag.scss +236 -0
  134. package/build/components/textarea/textarea.css +546 -0
  135. package/build/components/textarea/textarea.scss +86 -0
  136. package/build/components/tooltip/tooltip.css +346 -0
  137. package/build/components/tooltip/tooltip.scss +137 -0
  138. package/build/styles/absolute.css +1559 -0
  139. package/build/styles/absolute.scss +5 -0
  140. package/build/styles/component-animations.css +1 -0
  141. package/build/styles/component-animations.scss +17 -0
  142. package/build/styles/dialog-init.css +1 -0
  143. package/build/styles/dialog-init.scss +57 -0
  144. package/build/styles/index.css +615 -0
  145. package/build/styles/index.scss +32 -0
  146. package/build/styles/internal/_button-components.scss +8 -0
  147. package/build/styles/internal/_component.scss +79 -0
  148. package/build/styles/internal/_custom-elements.scss +7 -0
  149. package/build/styles/internal/_db-puls.scss +83 -0
  150. package/build/styles/internal/_form-components.scss +516 -0
  151. package/build/styles/internal/_icon-passing.scss +26 -0
  152. package/build/styles/internal/_link-components.scss +62 -0
  153. package/build/styles/internal/_popover-component.scss +213 -0
  154. package/build/styles/internal/_scrollbar.scss +93 -0
  155. package/build/styles/internal/_stack-components.scss +104 -0
  156. package/build/styles/internal/_tag-components.scss +234 -0
  157. package/build/styles/relative.css +1559 -0
  158. package/build/styles/relative.scss +15 -0
  159. package/build/styles/rollup.css +1559 -0
  160. package/build/styles/rollup.scss +5 -0
  161. package/build/styles/visually-hidden.css +1 -0
  162. package/build/styles/visually-hidden.scss +6 -0
  163. package/build/styles/wc-workarounds.css +1 -0
  164. package/build/styles/wc-workarounds.scss +12 -0
  165. package/build/styles/webpack.css +1559 -0
  166. package/build/styles/webpack.scss +5 -0
  167. package/package.json +62 -0
@@ -0,0 +1,216 @@
1
+ @use "sass:map";
2
+ @use "@db-ux/core-foundations/build/styles/density";
3
+ @use "@db-ux/core-foundations/build/styles/variables";
4
+ @use "@db-ux/core-foundations/build/styles/colors";
5
+ @use "@db-ux/core-foundations/build/styles/icons";
6
+ @use "@db-ux/core-foundations/build/styles/screen-sizes";
7
+ @use "../../styles/internal/component";
8
+ @use "../../styles/internal/link-components";
9
+ @use "./notification-grid-default";
10
+ @use "./notification-grid-overlay";
11
+ @use "./notification-grid-non-overlay";
12
+
13
+ %ugly-line-height-workarounds {
14
+ // resets line-height to smaller height based on timestamp
15
+ &:has(span) {
16
+ header,
17
+ p,
18
+ &::before,
19
+ .db-button {
20
+ /* stylelint-disable-next-line db-ux/use-spacings */
21
+ margin-block-start: -2px;
22
+ }
23
+ }
24
+ }
25
+
26
+ .db-notification {
27
+ @extend %component-border;
28
+ @extend %grid-layout-default;
29
+ @extend %ugly-line-height-workarounds;
30
+
31
+ display: grid;
32
+ padding: variables.$db-spacing-fixed-md;
33
+ gap: variables.$db-spacing-fixed-xs variables.$db-spacing-fixed-md;
34
+ inline-size: inherit;
35
+ background-color: colors.$db-adaptive-bg-basic-level-2-default;
36
+
37
+ &::before {
38
+ --db-icon-color: #{colors.$db-adaptive-on-bg-basic-emphasis-70-default};
39
+ }
40
+
41
+ a {
42
+ @extend %db-default-link;
43
+
44
+ grid-area: link;
45
+ white-space: nowrap;
46
+
47
+ // Overwrite settings for db-link ALWAYS
48
+ &::before,
49
+ &::after {
50
+ content: none !important;
51
+ margin: 0 !important;
52
+ }
53
+
54
+ &[data-variant="brand"] {
55
+ @extend %db-link-default-color;
56
+ }
57
+
58
+ &[data-size="small"] {
59
+ @extend %db-overwrite-font-size-md;
60
+ }
61
+ }
62
+
63
+ // headline
64
+ header {
65
+ grid-area: head;
66
+ font-weight: 700;
67
+
68
+ &,
69
+ h1,
70
+ h2,
71
+ h3,
72
+ h4,
73
+ h5,
74
+ h6 {
75
+ font-family: var(--db-font-family-sans);
76
+ margin: 0;
77
+ line-height: var(--db-type-headline-line-height-2xs);
78
+ font-size: var(--db-type-headline-font-size-2xs);
79
+
80
+ &::before,
81
+ &::after {
82
+ --db-icon-font-size: var(--db-base-headline-icon-font-size-2xs);
83
+ --db-icon-font-weight: var(--db-base-headline-icon-weight-2xs);
84
+ }
85
+ }
86
+ }
87
+
88
+ // content
89
+ p {
90
+ @extend %db-overwrite-font-size-md;
91
+
92
+ grid-area: content;
93
+ margin: 0;
94
+ }
95
+
96
+ img {
97
+ min-block-size: variables.$db-sizing-md;
98
+ min-inline-size: variables.$db-sizing-md;
99
+ max-block-size: variables.$db-sizing-md;
100
+ max-inline-size: variables.$db-sizing-md;
101
+ border-radius: variables.$db-border-radius-xs;
102
+ }
103
+
104
+ // timestamp
105
+ span {
106
+ @extend %db-overwrite-font-size-sm;
107
+
108
+ grid-area: timestamp;
109
+ white-space: nowrap;
110
+ }
111
+
112
+ .db-button {
113
+ grid-area: close;
114
+ }
115
+
116
+ &:has(img) {
117
+ // we don't show a icon if we have an image
118
+ ::before {
119
+ content: none !important;
120
+ }
121
+ }
122
+
123
+ &[data-icon]::before,
124
+ &::before,
125
+ img {
126
+ --db-icon-margin-end: 0;
127
+
128
+ @include icons.to-filled-icon();
129
+
130
+ grid-area: icon;
131
+ }
132
+
133
+ // has link inline or overlay
134
+ &:has(a) {
135
+ &[data-link-variant="inline"],
136
+ &[data-variant="overlay"] {
137
+ // 1. only content (min. requirement)
138
+ grid-template-areas: "content link";
139
+ grid-template-columns: 1fr min-content;
140
+
141
+ &:has(.db-button) {
142
+ grid-template-columns: 1fr min-content min-content;
143
+ grid-template-areas: "content link close";
144
+ }
145
+
146
+ // 2. headline
147
+ &:has(header) {
148
+ grid-template-columns: 1fr min-content;
149
+ grid-template-areas:
150
+ "head link"
151
+ "content content";
152
+
153
+ &:has(.db-button) {
154
+ grid-template-columns: 1fr min-content min-content;
155
+ grid-template-areas:
156
+ "head link close"
157
+ "content content content";
158
+ }
159
+ }
160
+
161
+ // 3. icon or img
162
+ &[data-icon],
163
+ &[data-semantic]:not([data-semantic="adaptive"]),
164
+ &:has(img) {
165
+ grid-template-areas: "icon content link";
166
+ grid-template-columns: min-content 1fr min-content;
167
+
168
+ &:has(.db-button) {
169
+ grid-template-columns: min-content 1fr min-content min-content;
170
+ grid-template-areas: "icon content link close";
171
+ }
172
+
173
+ &:has(header) {
174
+ grid-template-columns: min-content 1fr min-content;
175
+ grid-template-areas:
176
+ "icon head link"
177
+ "icon content content";
178
+
179
+ &:has(.db-button) {
180
+ grid-template-columns: min-content 1fr min-content min-content;
181
+ grid-template-areas:
182
+ "icon head link close"
183
+ "icon content content content";
184
+ }
185
+ }
186
+ }
187
+ }
188
+ }
189
+
190
+ &[data-variant="overlay"] {
191
+ @extend %grid-layout-variant-overlay;
192
+
193
+ box-shadow: variables.$db-elevation-md;
194
+ }
195
+
196
+ &:not([data-variant="overlay"]) {
197
+ @extend %grid-layout-variant-not-overlay;
198
+ }
199
+
200
+ &[data-variant="overlay"],
201
+ &[data-variant="standalone"] {
202
+ @extend %default-card;
203
+ }
204
+
205
+ @each $name in colors.$variant-colors {
206
+ &[data-semantic="#{$name}"] {
207
+ @extend %db-#{$name}-variables;
208
+
209
+ @include icons.variant-icons($name);
210
+
211
+ &::before {
212
+ @extend %icon;
213
+ }
214
+ }
215
+ }
216
+ }
@@ -0,0 +1,49 @@
1
+ /* Use sizing's for fixed heights/widths e.g. the db-button has always a fixed height */
2
+ /* Use fixed spacings for all kind of distances (margin, padding, ...) */
3
+ /* The primary use-case for responsive spacings are
4
+ paddings/gaps in an application e.g. the <main> should have a responsive padding. */
5
+ /* Elevation */
6
+ /* Border */
7
+ /* Transitions */
8
+ .db-page-document {
9
+ block-size: 100%;
10
+ overflow: hidden;
11
+ }
12
+
13
+ .db-page {
14
+ opacity: 0;
15
+ }
16
+ @media screen and (prefers-reduced-motion: no-preference) {
17
+ .db-page[data-fade-in=true] {
18
+ transition: opacity var(--db-transition-straight-emotional);
19
+ }
20
+ }
21
+ .db-page:not([data-fonts-loaded]), .db-page[data-fonts-loaded=true] {
22
+ opacity: 1;
23
+ }
24
+ .db-page[data-variant=fixed] {
25
+ block-size: 100%;
26
+ min-block-size: 100%;
27
+ display: flex;
28
+ flex-direction: column;
29
+ /* workaround for angular */
30
+ }
31
+ .db-page[data-variant=fixed] > :is(.db-header, .db-footer, header, footer) {
32
+ display: flex;
33
+ flex: 0 1 auto;
34
+ flex-grow: 0;
35
+ flex-shrink: 0;
36
+ }
37
+ .db-page[data-variant=fixed] > :is(db-header, dbheader, dbfooter, db-footer) > :is(.db-header, .db-footer, header, footer) {
38
+ display: flex;
39
+ flex: 0 1 auto;
40
+ flex-grow: 0;
41
+ flex-shrink: 0;
42
+ }
43
+ .db-page[data-variant=fixed] > .db-main {
44
+ display: flex;
45
+ flex-direction: column;
46
+ overflow: auto;
47
+ flex: 1 1 auto;
48
+ inline-size: 100%;
49
+ }
@@ -0,0 +1,52 @@
1
+ @use "@db-ux/core-foundations/build/styles/variables";
2
+
3
+ .db-page-document {
4
+ block-size: 100%;
5
+ overflow: hidden;
6
+ }
7
+
8
+ @mixin header-footer-style {
9
+ > :is(.db-header, .db-footer, header, footer) {
10
+ display: flex;
11
+ flex: 0 1 auto;
12
+ flex-grow: 0;
13
+ flex-shrink: 0;
14
+ }
15
+ }
16
+
17
+ .db-page {
18
+ opacity: 0;
19
+
20
+ @media screen and (prefers-reduced-motion: no-preference) {
21
+ &[data-fade-in="true"] {
22
+ transition: opacity variables.$db-transition-straight-emotional;
23
+ }
24
+ }
25
+
26
+ &:not([data-fonts-loaded]),
27
+ &[data-fonts-loaded="true"] {
28
+ opacity: 1;
29
+ }
30
+
31
+ &[data-variant="fixed"] {
32
+ @include header-footer-style();
33
+
34
+ block-size: 100%;
35
+ min-block-size: 100%;
36
+ display: flex;
37
+ flex-direction: column;
38
+
39
+ /* workaround for angular */
40
+ > :is(db-header, dbheader, dbfooter, db-footer) {
41
+ @include header-footer-style();
42
+ }
43
+
44
+ > .db-main {
45
+ display: flex;
46
+ flex-direction: column;
47
+ overflow: auto;
48
+ flex: 1 1 auto;
49
+ inline-size: 100%;
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,291 @@
1
+ /* Use sizing's for fixed heights/widths e.g. the db-button has always a fixed height */
2
+ /* Use fixed spacings for all kind of distances (margin, padding, ...) */
3
+ /* The primary use-case for responsive spacings are
4
+ paddings/gaps in an application e.g. the <main> should have a responsive padding. */
5
+ /* Elevation */
6
+ /* Border */
7
+ /* Transitions */
8
+ /* Variants for adaptive components like input, select, notification, ... */
9
+ @keyframes show-right-to-left {
10
+ from {
11
+ transform: translateX(110%);
12
+ }
13
+ to {
14
+ transform: translateX(0%);
15
+ }
16
+ }
17
+ @keyframes hide-right-to-left {
18
+ from {
19
+ transform: translateX(0%);
20
+ }
21
+ to {
22
+ transform: translateX(110%);
23
+ }
24
+ }
25
+ @keyframes show-left-to-right {
26
+ from {
27
+ transform: translateX(-110%);
28
+ }
29
+ to {
30
+ transform: translateX(0%);
31
+ }
32
+ }
33
+ @keyframes hide-left-to-right {
34
+ from {
35
+ transform: translateX(0%);
36
+ }
37
+ to {
38
+ transform: translateX(-110%);
39
+ }
40
+ }
41
+ @keyframes show-bottom-to-top {
42
+ from {
43
+ transform: translateY(110%);
44
+ }
45
+ to {
46
+ transform: translateY(0%);
47
+ }
48
+ }
49
+ @keyframes hide-bottom-to-top {
50
+ from {
51
+ transform: translateY(0%);
52
+ }
53
+ to {
54
+ transform: translateY(110%);
55
+ }
56
+ }
57
+ @keyframes show-top-to-bottom {
58
+ from {
59
+ transform: translateY(-110%);
60
+ }
61
+ to {
62
+ transform: translateY(0%);
63
+ }
64
+ }
65
+ @keyframes hide-top-to-bottom {
66
+ from {
67
+ transform: translateY(0%);
68
+ }
69
+ to {
70
+ transform: translateY(-110%);
71
+ }
72
+ }
73
+ @keyframes accordion-open {
74
+ 0% {
75
+ opacity: 0;
76
+ transform: translateY(-10%);
77
+ }
78
+ 100% {
79
+ opacity: 1;
80
+ transform: translateY(0%);
81
+ }
82
+ }
83
+ @keyframes popover-animation {
84
+ 0% {
85
+ opacity: 0;
86
+ transform: translate(var(--db-popover-center-x, var(--db-popover-translate-x, 0%)), var(--db-popover-center-y, var(--db-popover-translate-y, 0%)));
87
+ }
88
+ 100% {
89
+ opacity: 1;
90
+ transform: translate(var(--db-popover-center-x, 0%), var(--db-popover-center-y, 0%));
91
+ }
92
+ }
93
+ .db-popover > article {
94
+ border: var(--db-border-height-3xs) solid var(--db-adaptive-on-bg-basic-emphasis-60-default);
95
+ }
96
+
97
+ .db-popover > article {
98
+ /* stylelint-disable-next-line db-ux/use-border-radius */
99
+ border-radius: var(--default-card-border-radius, var(--db-border-radius-sm));
100
+ }
101
+
102
+ .db-popover > article:not([data-placement]), .db-popover > article[data-placement=bottom]:not([data-outside-vy]), .db-popover > article[data-placement=top]:not([data-outside-vy]), .db-popover > article:is([data-outside-vy=bottom], [data-outside-vy=top]):not([data-outside-vx],
103
+ [data-placement$=end],
104
+ [data-placement$=start]) {
105
+ --db-popover-center-x: -50%;
106
+ inset-inline-start: 50%;
107
+ }
108
+ .db-popover > article[data-placement=left]:not([data-outside-vx]), .db-popover > article[data-placement=right]:not([data-outside-vx]), .db-popover > article[data-outside-vx=left]:not([data-placement$=end],
109
+ [data-placement$=start]), .db-popover > article[data-outside-vx=right]:not([data-placement$=end],
110
+ [data-placement$=start]) {
111
+ --db-popover-center-y: -50%;
112
+ inset-block-start: 50%;
113
+ }
114
+
115
+ .db-popover > article {
116
+ --db-popover-distance: var(--db-spacing-fixed-2xs);
117
+ }
118
+ .db-popover > article::before {
119
+ content: "";
120
+ position: absolute;
121
+ }
122
+ .db-popover > article[data-gap=true] {
123
+ --db-popover-gap: 1;
124
+ --db-popover-distance: var(--db-spacing-fixed-md);
125
+ }
126
+ .db-popover > article:is(.db-tooltip) {
127
+ --db-popover-distance: var(--db-spacing-fixed-sm);
128
+ }
129
+ .db-popover > article[data-placement^=bottom]:not([data-outside-vy])[data-placement$=end], .db-popover > article[data-placement^=top]:not([data-outside-vy])[data-placement$=end], .db-popover > article[data-outside-vy=bottom]:not([data-outside-vx])[data-placement$=end], .db-popover > article[data-outside-vy=top]:not([data-outside-vx])[data-placement$=end] {
130
+ inset-inline-end: 0;
131
+ }
132
+ .db-popover > article[data-placement^=bottom]:not([data-outside-vy])[data-placement$=start], .db-popover > article[data-placement^=top]:not([data-outside-vy])[data-placement$=start], .db-popover > article[data-outside-vy=bottom]:not([data-outside-vx])[data-placement$=start], .db-popover > article[data-outside-vy=top]:not([data-outside-vx])[data-placement$=start] {
133
+ inset-inline-start: 0;
134
+ }
135
+ .db-popover > article[data-placement^=left]:not([data-outside-vx])[data-placement$=end], .db-popover > article[data-placement^=right]:not([data-outside-vx])[data-placement$=end], .db-popover > article[data-outside-vx=left][data-placement$=end], .db-popover > article[data-outside-vx=right][data-placement$=end] {
136
+ inset-block-end: 0;
137
+ }
138
+ .db-popover > article[data-placement^=left]:not([data-outside-vx])[data-placement$=start], .db-popover > article[data-placement^=right]:not([data-outside-vx])[data-placement$=start], .db-popover > article[data-outside-vx=left][data-placement$=start], .db-popover > article[data-outside-vx=right][data-placement$=start] {
139
+ inset-block-start: 0;
140
+ }
141
+ .db-popover > article:not([data-placement], [data-outside-vy]), .db-popover > article[data-placement^=bottom]:not([data-outside-vy]), .db-popover > article[data-outside-vy=top]:not([data-outside-vx]) {
142
+ inset-block-start: calc(100% + var(--db-popover-distance) * var(--db-popover-gap, 0));
143
+ }
144
+ .db-popover > article:not([data-placement], [data-outside-vy])::before, .db-popover > article[data-placement^=bottom]:not([data-outside-vy])::before, .db-popover > article[data-outside-vy=top]:not([data-outside-vx])::before {
145
+ inset-inline-start: 0;
146
+ inline-size: 100%;
147
+ block-size: var(--db-popover-distance);
148
+ inset-block-start: calc(-1 * var(--db-popover-distance));
149
+ }
150
+ .db-popover > article[data-placement^=top]:not([data-outside-vy]), .db-popover > article[data-outside-vy=bottom]:not([data-outside-vx]) {
151
+ inset-block-end: calc(100% + var(--db-popover-distance) * var(--db-popover-gap, 0));
152
+ }
153
+ .db-popover > article[data-placement^=top]:not([data-outside-vy])::before, .db-popover > article[data-outside-vy=bottom]:not([data-outside-vx])::before {
154
+ inset-inline-end: 0;
155
+ inline-size: 100%;
156
+ block-size: var(--db-popover-distance);
157
+ inset-block-end: calc(-1 * var(--db-popover-distance));
158
+ }
159
+ .db-popover > article[data-placement^=left]:not([data-outside-vx]), .db-popover > article[data-outside-vx=right] {
160
+ inset-inline-end: calc(100% + var(--db-popover-distance) * var(--db-popover-gap, 0));
161
+ }
162
+ .db-popover > article[data-placement^=left]:not([data-outside-vx])::before, .db-popover > article[data-outside-vx=right]::before {
163
+ inset-block-end: 0;
164
+ block-size: 100%;
165
+ inline-size: var(--db-popover-distance);
166
+ inset-inline-end: calc(-1 * var(--db-popover-distance));
167
+ }
168
+ .db-popover > article[data-placement^=right]:not([data-outside-vx]), .db-popover > article[data-outside-vx=left] {
169
+ inset-inline-start: calc(100% + var(--db-popover-distance) * var(--db-popover-gap, 0));
170
+ }
171
+ .db-popover > article[data-placement^=right]:not([data-outside-vx])::before, .db-popover > article[data-outside-vx=left]::before {
172
+ inset-block-start: 0;
173
+ block-size: 100%;
174
+ inline-size: var(--db-popover-distance);
175
+ inset-inline-start: calc(-1 * var(--db-popover-distance));
176
+ }
177
+
178
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article:not([data-open=false]), .db-popover > article[data-open=true] {
179
+ display: revert;
180
+ }
181
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article:not([data-placement], [data-outside-vy]):not([data-open=false]), .db-popover > article[data-open=true]:not([data-placement], [data-outside-vy]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=bottom]:not([data-outside-vy]):not([data-open=false]), .db-popover > article[data-placement^=bottom][data-open=true]:not([data-outside-vy]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vy=top]:not([data-outside-vx]):not([data-open=false]), .db-popover > article[data-outside-vy=top][data-open=true]:not([data-outside-vx]) {
182
+ --db-popover-translate-y: -25%;
183
+ }
184
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article:not([data-placement], [data-outside-vy]):not([data-animation]):not([data-open=false]), .db-popover > article[data-open=true]:not([data-placement], [data-outside-vy]):not([data-animation]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article:not([data-placement], [data-outside-vy])[data-animation=false]:not([data-open=false]), .db-popover > article[data-open=true]:not([data-placement], [data-outside-vy])[data-animation=false], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=bottom]:not([data-outside-vy]):not([data-animation]):not([data-open=false]), .db-popover > article[data-placement^=bottom][data-open=true]:not([data-outside-vy]):not([data-animation]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=bottom]:not([data-outside-vy])[data-animation=false]:not([data-open=false]), .db-popover > article[data-placement^=bottom][data-open=true]:not([data-outside-vy])[data-animation=false], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vy=top]:not([data-outside-vx]):not([data-animation]):not([data-open=false]), .db-popover > article[data-outside-vy=top][data-open=true]:not([data-outside-vx]):not([data-animation]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vy=top]:not([data-outside-vx])[data-animation=false]:not([data-open=false]), .db-popover > article[data-outside-vy=top][data-open=true]:not([data-outside-vx])[data-animation=false] {
185
+ opacity: 1;
186
+ transform: translate(var(--db-popover-center-x, 0), var(--db-popover-center-y, 0));
187
+ }
188
+ @media screen and (prefers-reduced-motion: no-preference) {
189
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article:not([data-placement], [data-outside-vy])[data-animation=true]:not([data-open=false]), .db-popover > article[data-open=true]:not([data-placement], [data-outside-vy])[data-animation=true], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=bottom]:not([data-outside-vy])[data-animation=true]:not([data-open=false]), .db-popover > article[data-placement^=bottom][data-open=true]:not([data-outside-vy])[data-animation=true], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vy=top]:not([data-outside-vx])[data-animation=true]:not([data-open=false]), .db-popover > article[data-outside-vy=top][data-open=true]:not([data-outside-vx])[data-animation=true] {
190
+ animation: popover-animation var(--db-transition-straight-emotional) normal both;
191
+ }
192
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article:not([data-placement], [data-outside-vy])[data-animation=true][data-delay=slow]:not([data-open=false]), .db-popover > article[data-open=true]:not([data-placement], [data-outside-vy])[data-animation=true][data-delay=slow], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=bottom]:not([data-outside-vy])[data-animation=true][data-delay=slow]:not([data-open=false]), .db-popover > article[data-placement^=bottom][data-open=true]:not([data-outside-vy])[data-animation=true][data-delay=slow], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vy=top]:not([data-outside-vx])[data-animation=true][data-delay=slow]:not([data-open=false]), .db-popover > article[data-outside-vy=top][data-open=true]:not([data-outside-vx])[data-animation=true][data-delay=slow] {
193
+ animation-delay: var(--db-transition-duration-fast);
194
+ }
195
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article:not([data-placement], [data-outside-vy])[data-animation=true][data-delay=fast]:not([data-open=false]), .db-popover > article[data-open=true]:not([data-placement], [data-outside-vy])[data-animation=true][data-delay=fast], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=bottom]:not([data-outside-vy])[data-animation=true][data-delay=fast]:not([data-open=false]), .db-popover > article[data-placement^=bottom][data-open=true]:not([data-outside-vy])[data-animation=true][data-delay=fast], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vy=top]:not([data-outside-vx])[data-animation=true][data-delay=fast]:not([data-open=false]), .db-popover > article[data-outside-vy=top][data-open=true]:not([data-outside-vx])[data-animation=true][data-delay=fast] {
196
+ animation-delay: calc(var(--db-transition-duration-fast) / 2);
197
+ }
198
+ }
199
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=top]:not([data-outside-vy]):not([data-open=false]), .db-popover > article[data-placement^=top][data-open=true]:not([data-outside-vy]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vy=bottom]:not([data-outside-vx]):not([data-open=false]), .db-popover > article[data-outside-vy=bottom][data-open=true]:not([data-outside-vx]) {
200
+ --db-popover-translate-y: 25%;
201
+ }
202
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=top]:not([data-outside-vy]):not([data-animation]):not([data-open=false]), .db-popover > article[data-placement^=top][data-open=true]:not([data-outside-vy]):not([data-animation]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=top]:not([data-outside-vy])[data-animation=false]:not([data-open=false]), .db-popover > article[data-placement^=top][data-open=true]:not([data-outside-vy])[data-animation=false], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vy=bottom]:not([data-outside-vx]):not([data-animation]):not([data-open=false]), .db-popover > article[data-outside-vy=bottom][data-open=true]:not([data-outside-vx]):not([data-animation]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vy=bottom]:not([data-outside-vx])[data-animation=false]:not([data-open=false]), .db-popover > article[data-outside-vy=bottom][data-open=true]:not([data-outside-vx])[data-animation=false] {
203
+ opacity: 1;
204
+ transform: translate(var(--db-popover-center-x, 0), var(--db-popover-center-y, 0));
205
+ }
206
+ @media screen and (prefers-reduced-motion: no-preference) {
207
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=top]:not([data-outside-vy])[data-animation=true]:not([data-open=false]), .db-popover > article[data-placement^=top][data-open=true]:not([data-outside-vy])[data-animation=true], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vy=bottom]:not([data-outside-vx])[data-animation=true]:not([data-open=false]), .db-popover > article[data-outside-vy=bottom][data-open=true]:not([data-outside-vx])[data-animation=true] {
208
+ animation: popover-animation var(--db-transition-straight-emotional) normal both;
209
+ }
210
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=top]:not([data-outside-vy])[data-animation=true][data-delay=slow]:not([data-open=false]), .db-popover > article[data-placement^=top][data-open=true]:not([data-outside-vy])[data-animation=true][data-delay=slow], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vy=bottom]:not([data-outside-vx])[data-animation=true][data-delay=slow]:not([data-open=false]), .db-popover > article[data-outside-vy=bottom][data-open=true]:not([data-outside-vx])[data-animation=true][data-delay=slow] {
211
+ animation-delay: var(--db-transition-duration-fast);
212
+ }
213
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=top]:not([data-outside-vy])[data-animation=true][data-delay=fast]:not([data-open=false]), .db-popover > article[data-placement^=top][data-open=true]:not([data-outside-vy])[data-animation=true][data-delay=fast], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vy=bottom]:not([data-outside-vx])[data-animation=true][data-delay=fast]:not([data-open=false]), .db-popover > article[data-outside-vy=bottom][data-open=true]:not([data-outside-vx])[data-animation=true][data-delay=fast] {
214
+ animation-delay: calc(var(--db-transition-duration-fast) / 2);
215
+ }
216
+ }
217
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=right]:not([data-outside-vx]):not([data-open=false]), .db-popover > article[data-placement^=right][data-open=true]:not([data-outside-vx]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vx=left]:not([data-open=false]), .db-popover > article[data-outside-vx=left][data-open=true] {
218
+ --db-popover-translate-x: -25%;
219
+ }
220
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=right]:not([data-outside-vx]):not([data-animation]):not([data-open=false]), .db-popover > article[data-placement^=right][data-open=true]:not([data-outside-vx]):not([data-animation]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=right]:not([data-outside-vx])[data-animation=false]:not([data-open=false]), .db-popover > article[data-placement^=right][data-open=true]:not([data-outside-vx])[data-animation=false], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vx=left]:not([data-animation]):not([data-open=false]), .db-popover > article[data-outside-vx=left][data-open=true]:not([data-animation]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vx=left][data-animation=false]:not([data-open=false]), .db-popover > article[data-outside-vx=left][data-animation=false][data-open=true] {
221
+ opacity: 1;
222
+ transform: translate(var(--db-popover-center-x, 0), var(--db-popover-center-y, 0));
223
+ }
224
+ @media screen and (prefers-reduced-motion: no-preference) {
225
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=right]:not([data-outside-vx])[data-animation=true]:not([data-open=false]), .db-popover > article[data-placement^=right][data-open=true]:not([data-outside-vx])[data-animation=true], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vx=left][data-animation=true]:not([data-open=false]), .db-popover > article[data-outside-vx=left][data-animation=true][data-open=true] {
226
+ animation: popover-animation var(--db-transition-straight-emotional) normal both;
227
+ }
228
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=right]:not([data-outside-vx])[data-animation=true][data-delay=slow]:not([data-open=false]), .db-popover > article[data-placement^=right][data-open=true]:not([data-outside-vx])[data-animation=true][data-delay=slow], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vx=left][data-animation=true][data-delay=slow]:not([data-open=false]), .db-popover > article[data-outside-vx=left][data-animation=true][data-delay=slow][data-open=true] {
229
+ animation-delay: var(--db-transition-duration-fast);
230
+ }
231
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=right]:not([data-outside-vx])[data-animation=true][data-delay=fast]:not([data-open=false]), .db-popover > article[data-placement^=right][data-open=true]:not([data-outside-vx])[data-animation=true][data-delay=fast], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vx=left][data-animation=true][data-delay=fast]:not([data-open=false]), .db-popover > article[data-outside-vx=left][data-animation=true][data-delay=fast][data-open=true] {
232
+ animation-delay: calc(var(--db-transition-duration-fast) / 2);
233
+ }
234
+ }
235
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=left]:not([data-outside-vx]):not([data-open=false]), .db-popover > article[data-placement^=left][data-open=true]:not([data-outside-vx]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vx=right]:not([data-open=false]), .db-popover > article[data-outside-vx=right][data-open=true] {
236
+ --db-popover-translate-x: 25%;
237
+ }
238
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=left]:not([data-outside-vx]):not([data-animation]):not([data-open=false]), .db-popover > article[data-placement^=left][data-open=true]:not([data-outside-vx]):not([data-animation]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=left]:not([data-outside-vx])[data-animation=false]:not([data-open=false]), .db-popover > article[data-placement^=left][data-open=true]:not([data-outside-vx])[data-animation=false], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vx=right]:not([data-animation]):not([data-open=false]), .db-popover > article[data-outside-vx=right][data-open=true]:not([data-animation]), .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vx=right][data-animation=false]:not([data-open=false]), .db-popover > article[data-outside-vx=right][data-animation=false][data-open=true] {
239
+ opacity: 1;
240
+ transform: translate(var(--db-popover-center-x, 0), var(--db-popover-center-y, 0));
241
+ }
242
+ @media screen and (prefers-reduced-motion: no-preference) {
243
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=left]:not([data-outside-vx])[data-animation=true]:not([data-open=false]), .db-popover > article[data-placement^=left][data-open=true]:not([data-outside-vx])[data-animation=true], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vx=right][data-animation=true]:not([data-open=false]), .db-popover > article[data-outside-vx=right][data-animation=true][data-open=true] {
244
+ animation: popover-animation var(--db-transition-straight-emotional) normal both;
245
+ }
246
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=left]:not([data-outside-vx])[data-animation=true][data-delay=slow]:not([data-open=false]), .db-popover > article[data-placement^=left][data-open=true]:not([data-outside-vx])[data-animation=true][data-delay=slow], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vx=right][data-animation=true][data-delay=slow]:not([data-open=false]), .db-popover > article[data-outside-vx=right][data-animation=true][data-delay=slow][data-open=true] {
247
+ animation-delay: var(--db-transition-duration-fast);
248
+ }
249
+ .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-placement^=left]:not([data-outside-vx])[data-animation=true][data-delay=fast]:not([data-open=false]), .db-popover > article[data-placement^=left][data-open=true]:not([data-outside-vx])[data-animation=true][data-delay=fast], .db-popover:is([data-e2e-hover=true], :hover, :focus-within) > article[data-outside-vx=right][data-animation=true][data-delay=fast]:not([data-open=false]), .db-popover > article[data-outside-vx=right][data-animation=true][data-delay=fast][data-open=true] {
250
+ animation-delay: calc(var(--db-transition-duration-fast) / 2);
251
+ }
252
+ }
253
+
254
+ .db-popover > article {
255
+ position: absolute;
256
+ background-color: var(--db-adaptive-bg-basic-level-1-default);
257
+ box-shadow: var(--db-elevation-md);
258
+ display: none;
259
+ z-index: 1;
260
+ white-space: nowrap;
261
+ }
262
+ .db-popover > article[data-width=fixed] {
263
+ inline-size: max-content;
264
+ max-inline-size: var(--db-sizing-3xl);
265
+ white-space: normal;
266
+ text-align: initial;
267
+ }
268
+
269
+ .db-popover {
270
+ position: relative;
271
+ display: flex;
272
+ inline-size: fit-content;
273
+ }
274
+ .db-popover > article {
275
+ /* stylelint-disable-next-line at-rule-empty-line-before */
276
+ }
277
+ .db-popover > article:not([data-spacing]) {
278
+ padding: var(--db-spacing-fixed-sm);
279
+ }
280
+ .db-popover > article[data-spacing=large] {
281
+ padding: var(--db-spacing-fixed-lg);
282
+ }
283
+ .db-popover > article[data-spacing=medium] {
284
+ padding: var(--db-spacing-fixed-md);
285
+ }
286
+ .db-popover > article[data-spacing=small] {
287
+ padding: var(--db-spacing-fixed-sm);
288
+ }
289
+ .db-popover > article[data-spacing=none] {
290
+ padding: 0;
291
+ }
@@ -0,0 +1,26 @@
1
+ @use "@db-ux/core-foundations/build/styles/variables";
2
+ @use "../../styles/internal/popover-component";
3
+ @use "../../styles/internal/component";
4
+
5
+ .db-popover {
6
+ position: relative;
7
+ display: flex;
8
+ inline-size: fit-content;
9
+
10
+ &:is([data-e2e-hover="true"], :hover, :focus-within) {
11
+ > article:not([data-open="false"]) {
12
+ @extend %show-popover;
13
+ }
14
+ }
15
+
16
+ > article {
17
+ @extend %popover-center;
18
+ @extend %default-popover;
19
+
20
+ @include component.get-data-spacing();
21
+
22
+ &[data-open="true"] {
23
+ @extend %show-popover;
24
+ }
25
+ }
26
+ }