@db-ux/core-components 4.7.3 → 4.8.1-fix-publish-f7808e2

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.
package/CHANGELOG.md CHANGED
@@ -1,9 +1,18 @@
1
1
  # @db-ux/core-components
2
2
 
3
- ## 4.7.3
3
+ ## 4.8.1
4
4
 
5
5
  _version bump_
6
6
 
7
+ ## 4.8.0
8
+
9
+ ### Minor Changes
10
+
11
+ - Notification content now supports additional inline elements like `span` without styling collisions. And added the possibility to set the duration as a machine-readable value via the new `timestampDatetime` property - [see commit dae5149](https://github.com/db-ux-design-system/core-web/commit/dae514902f92a74cb95a3a3adab205d560174692)
12
+
13
+ ## 4.7.3
14
+
15
+ _version bump_
7
16
 
8
17
  ## 4.7.2
9
18
 
@@ -50,7 +59,7 @@ _version bump_
50
59
  - docs(vite): mentioning version 8 configuration in `README.md` file - [see commit 4c5fc92](https://github.com/db-ux-design-system/core-web/commit/4c5fc9266402d9585087f4738a1a800cff1515f1)
51
60
 
52
61
  - fix(number input): prevent from clearing on intermediate decimal entry - [see commit aa85967](https://github.com/db-ux-design-system/core-web/commit/aa85967ffeaa685f6b647069d0e1d415d812dc87):
53
- - fix(input,textarea): allow using `undefined` as `value`
62
+ - fix(input,textarea): allow using `undefined` as `value`
54
63
 
55
64
  ## 4.5.4
56
65
 
@@ -191,14 +200,14 @@ _version bump_
191
200
  - refactor(notification): update and simplify grid layout for block link variant - [see commit cb83f96](https://github.com/db-ux-design-system/core-web/commit/cb83f966eaf29c85b4cf0079750bdd563f216d6e)
192
201
 
193
202
  - fix(DBCustomSelect): properly announce selected options - [see commit 773edeb](https://github.com/db-ux-design-system/core-web/commit/773edeb943a085eb79e1c8d59059137b2830fbf0):
194
- - feat(DBCustomSelect): introduce new property `selectedPrefix`
203
+ - feat(DBCustomSelect): introduce new property `selectedPrefix`
195
204
 
196
205
  ### Patch Changes
197
206
 
198
207
  - fix(DBCustomSelect): automatically handle form reset events - [see commit 6af5246](https://github.com/db-ux-design-system/core-web/commit/6af5246b3b2e6febdc6ff6342ba1a8eb10184d14):
199
- - An event listener is now added for every form component (input, custom-select, etc.) when a `form` property is passed.
200
- - This listener detects form resets and updates the component's internal value/checked state accordingly.
201
- - > **Note**: This does not work for `ngModel` in Angular.
208
+ - An event listener is now added for every form component (input, custom-select, etc.) when a `form` property is passed.
209
+ - This listener detects form resets and updates the component's internal value/checked state accordingly.
210
+ - > **Note**: This does not work for `ngModel` in Angular.
202
211
 
203
212
  - fix(button): Replace fixed height with min-height for buttons to allow dynamic height adjustment when text wraps - [see commit d1fd2c4](https://github.com/db-ux-design-system/core-web/commit/d1fd2c4e58a5ed6f75fab44700cd2d93c7232474)
204
213
 
@@ -221,7 +230,7 @@ _version bump_
221
230
  ### Patch Changes
222
231
 
223
232
  - chore: update instructions files for better copilot outputs - [see commit e4bc905](https://github.com/db-ux-design-system/core-web/commit/e4bc90508479387371d816d5776f9f568aa5fb82):
224
- - fix: add some missing variables
233
+ - fix: add some missing variables
225
234
 
226
235
  - fix(card): Remove the obsolete but harmful declaration regarding wrapping button and link styles. - [see commit 34c78df](https://github.com/db-ux-design-system/core-web/commit/34c78dffd4f43b0ac740574358b426a562e05cd0)
227
236
 
@@ -236,9 +245,9 @@ _version bump_
236
245
  ### Major Changes
237
246
 
238
247
  - feat: Switch stable rework - [see commit cb2deb0](https://github.com/db-ux-design-system/core-web/commit/cb2deb0f1c54900d1967483aea05d81279c02f59):
239
- - **BREAKING CHANGE**: remove `emphasis` property
240
- - introduce validation (invalid and valid)
241
- - configurable label position
248
+ - **BREAKING CHANGE**: remove `emphasis` property
249
+ - introduce validation (invalid and valid)
250
+ - configurable label position
242
251
 
243
252
  - **BREAKING CHANGE**: refactor(Custom Select): renamed `ariaListLabel` property to `listLabel` - [see commit 966d5ad](https://github.com/db-ux-design-system/core-web/commit/966d5ad01f00d0ca1707cc316a63e2d431fff1e9)
244
253
 
@@ -257,12 +266,12 @@ _version bump_
257
266
  ### Patch Changes
258
267
 
259
268
  - fix(DBTabs): ensure navigation arrows appear correctly on window resize - [see commit 4e65e00](https://github.com/db-ux-design-system/core-web/commit/4e65e00d280cae18baee03b5a7a9b13eec063835):
260
- - This update resolves an issue where navigation arrows in DBTabs would not appear or update correctly when the window was resized. The component now properly responds to resize events, ensuring arrows are always shown or hidden as needed.
269
+ - This update resolves an issue where navigation arrows in DBTabs would not appear or update correctly when the window was resized. The component now properly responds to resize events, ensuring arrows are always shown or hidden as needed.
261
270
 
262
271
  - fix(select): jumping placeholder for label above - [see commit 7ed8d22](https://github.com/db-ux-design-system/core-web/commit/7ed8d2225102e0e9044437e95917e11eef4bc73f)
263
272
 
264
273
  - enabled [`@db-ux/agent-cli`](https://www.npmjs.com/package/@db-ux/agent-cli) for every package - [see commit 0233048](https://github.com/db-ux-design-system/core-web/commit/023304869e61f5a506dca66a22d69e5f3d70f4d0):
265
- - auto-generate/auto-update `.github/copilot-instructions.md`, to ensure GitHub Copilot uses DB UX Components for code generation
274
+ - auto-generate/auto-update `.github/copilot-instructions.md`, to ensure GitHub Copilot uses DB UX Components for code generation
266
275
 
267
276
  ## 3.1.17
268
277
 
@@ -270,17 +279,17 @@ _version bump_
270
279
 
271
280
  - fix: color mode for textarea resizer control set by color-mode-switch documentation UI component - [see commit 354e270](https://github.com/db-ux-design-system/core-web/commit/354e27029a4378288a97ed5e31b75c11758f0c01)
272
281
  - refactor: enabling `hidden` HTML attribute in every context in which we need to set overwriting styling declarations (`display`) - [see commit 4826455](https://github.com/db-ux-design-system/core-web/commit/4826455637590b6ae780afb93abb9effe9380342)
273
- - @db-ux/core-foundations@3.1.17
282
+ - @db-ux/core-foundations@3.1.17
274
283
 
275
284
  ## 3.1.16
276
285
 
277
286
  ### Patch Changes
278
287
 
279
288
  - a28eb71: fix(custom-select): keyboard navigation for option groups in single-select mode - [see commit 6d60bab](https://github.com/db-ux-design-system/core-web/commit/6d60bab2eb87f16a9ffa942085bffd658564769c):
280
- - Fixes a keyboard accessibility issue where users could not navigate to options in subsequent option groups using arrow keys in single-select mode.
281
- - Now, all options are accessible via keyboard regardless of group boundaries.
289
+ - Fixes a keyboard accessibility issue where users could not navigate to options in subsequent option groups using arrow keys in single-select mode.
290
+ - Now, all options are accessible via keyboard regardless of group boundaries.
282
291
  - fix: JS framework core-components packages are missing `@db-ux` dependencies - [see commit 49df866](https://github.com/db-ux-design-system/core-web/commit/49df866e753a9459f5acdca4ad1e19141b477471)
283
- - @db-ux/core-foundations@3.1.16
292
+ - @db-ux/core-foundations@3.1.16
284
293
 
285
294
  ## 3.1.15
286
295
 
@@ -289,4 +298,4 @@ _version bump_
289
298
  - 262964b: fix(Switch): double event firing with Angular signals
290
299
  - 262964b: fix(CustomSelect): tags remaining visible when form values are reset
291
300
  - 262964b: fix(CustomSelect): custom removeTagsTexts are not applied correctly
292
- - @db-ux/core-foundations@3.1.15
301
+ - @db-ux/core-foundations@3.1.15
@@ -66,7 +66,7 @@
66
66
 
67
67
  %grid-layout-variant-not-overlay {
68
68
  // Hide timestamp for non-overlay variants only
69
- span {
69
+ [data-area="timestamp"] {
70
70
  display: none;
71
71
  }
72
72
 
@@ -145,12 +145,12 @@
145
145
  @include overlay-timestamp-area-layouts;
146
146
 
147
147
  // 2. Override: When explicitly "block" link variant with timestamp
148
- &:has(span)[data-link-variant="block"] {
148
+ &:has([data-area="timestamp"])[data-link-variant="block"] {
149
149
  @include overlay-block-layouts;
150
150
  }
151
151
 
152
152
  // 3. Override: When "block" link variant WITHOUT timestamp
153
- &:not(:has(span))[data-link-variant="block"] {
153
+ &:not(:has([data-area="timestamp"]))[data-link-variant="block"] {
154
154
  @include overlay-block-layouts-without-timestamp;
155
155
  }
156
156
  }
@@ -751,14 +751,14 @@
751
751
  );
752
752
  }
753
753
 
754
- .db-notification a[data-size=small], .db-notification > [data-area=content], .db-notification[data-link-variant=inline] a {
754
+ .db-notification a[data-size=small], .db-notification > [data-area=content], .db-notification[data-link-variant=inline] > :is(a, db-link) {
755
755
  font: var(--db-type-body-md);
756
756
  /* Those variables are only for components to calculate heights and change icons */
757
757
  --db-icon-font-weight: var(--db-base-body-icon-weight-md);
758
758
  --db-icon-font-size: var(--db-base-body-icon-font-size-md);
759
759
  }
760
760
 
761
- .db-notification span {
761
+ .db-notification [data-area=timestamp] {
762
762
  font: var(--db-type-body-sm);
763
763
  /* Those variables are only for components to calculate heights and change icons */
764
764
  --db-icon-font-weight: var(--db-base-body-icon-weight-sm);
@@ -1018,122 +1018,122 @@
1018
1018
  grid-template-areas: "icon head timestamp close" "icon content content content";
1019
1019
  grid-template-columns: min-content 1fr min-content min-content;
1020
1020
  }
1021
- .db-notification[data-variant=overlay]:has(span)[data-link-variant=block] {
1021
+ .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block] {
1022
1022
  grid-template-areas: "content timestamp" "link link";
1023
1023
  grid-template-columns: 1fr min-content;
1024
1024
  }
1025
- .db-notification[data-variant=overlay]:has(span)[data-link-variant=block]:has(.db-button) {
1025
+ .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block]:has(.db-button) {
1026
1026
  grid-template-areas: "content timestamp close" "link link link";
1027
1027
  grid-template-columns: 1fr min-content min-content;
1028
1028
  }
1029
- .db-notification[data-variant=overlay]:has(span)[data-link-variant=block]:has(header) {
1029
+ .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block]:has(header) {
1030
1030
  grid-template-areas: "head timestamp" "content content" "link link";
1031
1031
  grid-template-columns: 1fr min-content;
1032
1032
  }
1033
- .db-notification[data-variant=overlay]:has(span)[data-link-variant=block]:has(header):has(.db-button) {
1033
+ .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block]:has(header):has(.db-button) {
1034
1034
  grid-template-areas: "head timestamp close" "content content content" "link link link";
1035
1035
  grid-template-columns: 1fr min-content min-content;
1036
1036
  }
1037
- .db-notification[data-variant=overlay]:has(span)[data-link-variant=block][data-icon]:not([data-show-icon=false]), .db-notification[data-variant=overlay]:has(span)[data-link-variant=block][data-semantic]:not([data-semantic=adaptive], [data-show-icon=false]), .db-notification[data-variant=overlay]:has(span)[data-link-variant=block]:has(img) {
1037
+ .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block][data-icon]:not([data-show-icon=false]), .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block][data-semantic]:not([data-semantic=adaptive], [data-show-icon=false]), .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block]:has(img) {
1038
1038
  grid-template-areas: "icon content timestamp" "icon link link";
1039
1039
  grid-template-columns: min-content 1fr min-content;
1040
1040
  }
1041
- .db-notification[data-variant=overlay]:has(span)[data-link-variant=block][data-icon]:not([data-show-icon=false]):has(.db-button), .db-notification[data-variant=overlay]:has(span)[data-link-variant=block][data-semantic]:not([data-semantic=adaptive],
1042
- [data-show-icon=false]):has(.db-button), .db-notification[data-variant=overlay]:has(span)[data-link-variant=block]:has(img):has(.db-button) {
1041
+ .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block][data-icon]:not([data-show-icon=false]):has(.db-button), .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block][data-semantic]:not([data-semantic=adaptive],
1042
+ [data-show-icon=false]):has(.db-button), .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block]:has(img):has(.db-button) {
1043
1043
  grid-template-areas: "icon content timestamp close" "icon link link link";
1044
1044
  grid-template-columns: min-content 1fr min-content min-content;
1045
1045
  }
1046
- .db-notification[data-variant=overlay]:has(span)[data-link-variant=block][data-icon]:not([data-show-icon=false]):has(header), .db-notification[data-variant=overlay]:has(span)[data-link-variant=block][data-semantic]:not([data-semantic=adaptive],
1047
- [data-show-icon=false]):has(header), .db-notification[data-variant=overlay]:has(span)[data-link-variant=block]:has(img):has(header) {
1046
+ .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block][data-icon]:not([data-show-icon=false]):has(header), .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block][data-semantic]:not([data-semantic=adaptive],
1047
+ [data-show-icon=false]):has(header), .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block]:has(img):has(header) {
1048
1048
  grid-template-areas: "icon head timestamp" "icon content content" "icon link link";
1049
1049
  grid-template-columns: min-content 1fr min-content;
1050
1050
  }
1051
- .db-notification[data-variant=overlay]:has(span)[data-link-variant=block][data-icon]:not([data-show-icon=false]):has(header):has(.db-button), .db-notification[data-variant=overlay]:has(span)[data-link-variant=block][data-semantic]:not([data-semantic=adaptive],
1052
- [data-show-icon=false]):has(header):has(.db-button), .db-notification[data-variant=overlay]:has(span)[data-link-variant=block]:has(img):has(header):has(.db-button) {
1051
+ .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block][data-icon]:not([data-show-icon=false]):has(header):has(.db-button), .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block][data-semantic]:not([data-semantic=adaptive],
1052
+ [data-show-icon=false]):has(header):has(.db-button), .db-notification[data-variant=overlay]:has([data-area=timestamp])[data-link-variant=block]:has(img):has(header):has(.db-button) {
1053
1053
  grid-template-areas: "icon head timestamp close" "icon content content content" "icon link link link";
1054
1054
  grid-template-columns: min-content 1fr min-content min-content;
1055
1055
  }
1056
- .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block] {
1056
+ .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block] {
1057
1057
  grid-template-areas: "content" "link";
1058
1058
  grid-template-columns: 1fr;
1059
1059
  }
1060
- .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block]:has(.db-button) {
1060
+ .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block]:has(.db-button) {
1061
1061
  grid-template-areas: "content close" "link link";
1062
1062
  grid-template-columns: 1fr min-content;
1063
1063
  }
1064
- .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block]:has(header) {
1064
+ .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block]:has(header) {
1065
1065
  grid-template-areas: "head" "content" "link";
1066
1066
  grid-template-columns: 1fr;
1067
1067
  }
1068
- .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block]:has(header):has(.db-button) {
1068
+ .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block]:has(header):has(.db-button) {
1069
1069
  grid-template-areas: "head close" "content content" "link link";
1070
1070
  grid-template-columns: 1fr min-content;
1071
1071
  }
1072
- .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block][data-icon]:not([data-show-icon=false]), .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block][data-semantic]:not([data-semantic=adaptive], [data-show-icon=false]), .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block]:has(img) {
1072
+ .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block][data-icon]:not([data-show-icon=false]), .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block][data-semantic]:not([data-semantic=adaptive], [data-show-icon=false]), .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block]:has(img) {
1073
1073
  grid-template-areas: "icon content" "icon link";
1074
1074
  grid-template-columns: min-content 1fr;
1075
1075
  }
1076
- .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block][data-icon]:not([data-show-icon=false]):has(.db-button), .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block][data-semantic]:not([data-semantic=adaptive],
1077
- [data-show-icon=false]):has(.db-button), .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block]:has(img):has(.db-button) {
1076
+ .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block][data-icon]:not([data-show-icon=false]):has(.db-button), .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block][data-semantic]:not([data-semantic=adaptive],
1077
+ [data-show-icon=false]):has(.db-button), .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block]:has(img):has(.db-button) {
1078
1078
  grid-template-areas: "icon content close" "icon link link";
1079
1079
  grid-template-columns: min-content 1fr min-content;
1080
1080
  }
1081
- .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block][data-icon]:not([data-show-icon=false]):has(header), .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block][data-semantic]:not([data-semantic=adaptive],
1082
- [data-show-icon=false]):has(header), .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block]:has(img):has(header) {
1081
+ .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block][data-icon]:not([data-show-icon=false]):has(header), .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block][data-semantic]:not([data-semantic=adaptive],
1082
+ [data-show-icon=false]):has(header), .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block]:has(img):has(header) {
1083
1083
  grid-template-areas: "icon head" "icon content" "icon link";
1084
1084
  grid-template-columns: min-content 1fr;
1085
1085
  }
1086
- .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block][data-icon]:not([data-show-icon=false]):has(header):has(.db-button), .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block][data-semantic]:not([data-semantic=adaptive],
1087
- [data-show-icon=false]):has(header):has(.db-button), .db-notification[data-variant=overlay]:not(:has(span))[data-link-variant=block]:has(img):has(header):has(.db-button) {
1086
+ .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block][data-icon]:not([data-show-icon=false]):has(header):has(.db-button), .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block][data-semantic]:not([data-semantic=adaptive],
1087
+ [data-show-icon=false]):has(header):has(.db-button), .db-notification[data-variant=overlay]:not(:has([data-area=timestamp]))[data-link-variant=block]:has(img):has(header):has(.db-button) {
1088
1088
  grid-template-areas: "icon head close" "icon content content" "icon link link";
1089
1089
  grid-template-columns: min-content 1fr min-content;
1090
1090
  }
1091
1091
 
1092
- .db-notification:not([data-variant=overlay])[data-link-variant=block] span, .db-notification:not([data-variant=overlay]):not([data-link-variant]):has(a) span {
1092
+ .db-notification:not([data-variant=overlay])[data-link-variant=block] [data-area=timestamp], .db-notification:not([data-variant=overlay]):not([data-link-variant]):has(> a, > db-link) [data-area=timestamp] {
1093
1093
  display: none;
1094
1094
  }
1095
- [data-link-variant=block].db-notification:not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a):not([data-variant=overlay]) {
1095
+ [data-link-variant=block].db-notification:not([data-variant=overlay]), [data-link-variant=block].db-notification:not([data-variant=overlay]):not([data-link-variant]):has(> a, > db-link), .db-notification:not([data-link-variant]):has(a):not([data-variant=overlay]):has(> a, > db-link) {
1096
1096
  grid-template-areas: "content" "link";
1097
1097
  grid-template-columns: 1fr;
1098
1098
  }
1099
- [data-link-variant=block].db-notification:has(.db-button):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a):has(.db-button):not([data-variant=overlay]) {
1099
+ [data-link-variant=block].db-notification:has(.db-button):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a):has(.db-button):not([data-variant=overlay]):has(> a, > db-link) {
1100
1100
  grid-template-areas: "content close" "link link";
1101
1101
  grid-template-columns: 1fr min-content;
1102
1102
  }
1103
- [data-link-variant=block].db-notification:has(header):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a):has(header):not([data-variant=overlay]) {
1103
+ [data-link-variant=block].db-notification:has(header):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a):has(header):not([data-variant=overlay]):has(> a, > db-link) {
1104
1104
  grid-template-areas: "head" "content" "link";
1105
1105
  grid-template-columns: 1fr;
1106
1106
  }
1107
- [data-link-variant=block].db-notification:has(header):has(.db-button):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a):has(header):has(.db-button):not([data-variant=overlay]) {
1107
+ [data-link-variant=block].db-notification:has(header):has(.db-button):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a):has(header):has(.db-button):not([data-variant=overlay]):has(> a, > db-link) {
1108
1108
  grid-template-areas: "head close" "content content" "link link";
1109
1109
  grid-template-columns: 1fr min-content;
1110
1110
  }
1111
- [data-link-variant=block][data-icon].db-notification:not([data-show-icon=false]):not([data-variant=overlay]), [data-link-variant=block][data-semantic].db-notification:not([data-semantic=adaptive], [data-show-icon=false]):not([data-variant=overlay]), [data-link-variant=block].db-notification:has(img):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a)[data-icon]:not([data-show-icon=false]):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a)[data-semantic]:not([data-semantic=adaptive], [data-show-icon=false]):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a):has(img):not([data-variant=overlay]) {
1111
+ [data-link-variant=block][data-icon].db-notification:not([data-show-icon=false]):not([data-variant=overlay]), [data-link-variant=block][data-semantic].db-notification:not([data-semantic=adaptive], [data-show-icon=false]):not([data-variant=overlay]), [data-link-variant=block].db-notification:has(img):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a)[data-icon]:not([data-show-icon=false]):not([data-variant=overlay]):has(> a, > db-link), .db-notification:not([data-link-variant]):has(a)[data-semantic]:not([data-semantic=adaptive], [data-show-icon=false]):not([data-variant=overlay]):has(> a, > db-link), .db-notification:not([data-link-variant]):has(a):has(img):not([data-variant=overlay]):has(> a, > db-link) {
1112
1112
  grid-template-areas: "icon content" "icon link";
1113
1113
  grid-template-columns: min-content 1fr;
1114
1114
  }
1115
1115
  [data-link-variant=block][data-icon].db-notification:not([data-show-icon=false]):has(.db-button):not([data-variant=overlay]), [data-link-variant=block][data-semantic].db-notification:not([data-semantic=adaptive],
1116
- [data-show-icon=false]):has(.db-button):not([data-variant=overlay]), [data-link-variant=block].db-notification:has(img):has(.db-button):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a)[data-icon]:not([data-show-icon=false]):has(.db-button):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a)[data-semantic]:not([data-semantic=adaptive],
1117
- [data-show-icon=false]):has(.db-button):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a):has(img):has(.db-button):not([data-variant=overlay]) {
1116
+ [data-show-icon=false]):has(.db-button):not([data-variant=overlay]), [data-link-variant=block].db-notification:has(img):has(.db-button):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a)[data-icon]:not([data-show-icon=false]):has(.db-button):not([data-variant=overlay]):has(> a, > db-link), .db-notification:not([data-link-variant]):has(a)[data-semantic]:not([data-semantic=adaptive],
1117
+ [data-show-icon=false]):has(.db-button):not([data-variant=overlay]):has(> a, > db-link), .db-notification:not([data-link-variant]):has(a):has(img):has(.db-button):not([data-variant=overlay]):has(> a, > db-link) {
1118
1118
  grid-template-areas: "icon content close" "icon link link";
1119
1119
  grid-template-columns: min-content 1fr min-content;
1120
1120
  }
1121
1121
  [data-link-variant=block][data-icon].db-notification:not([data-show-icon=false]):has(header):not([data-variant=overlay]), [data-link-variant=block][data-semantic].db-notification:not([data-semantic=adaptive],
1122
- [data-show-icon=false]):has(header):not([data-variant=overlay]), [data-link-variant=block].db-notification:has(img):has(header):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a)[data-icon]:not([data-show-icon=false]):has(header):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a)[data-semantic]:not([data-semantic=adaptive],
1123
- [data-show-icon=false]):has(header):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a):has(img):has(header):not([data-variant=overlay]) {
1122
+ [data-show-icon=false]):has(header):not([data-variant=overlay]), [data-link-variant=block].db-notification:has(img):has(header):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a)[data-icon]:not([data-show-icon=false]):has(header):not([data-variant=overlay]):has(> a, > db-link), .db-notification:not([data-link-variant]):has(a)[data-semantic]:not([data-semantic=adaptive],
1123
+ [data-show-icon=false]):has(header):not([data-variant=overlay]):has(> a, > db-link), .db-notification:not([data-link-variant]):has(a):has(img):has(header):not([data-variant=overlay]):has(> a, > db-link) {
1124
1124
  grid-template-areas: "icon head" "icon content" "icon link";
1125
1125
  grid-template-columns: min-content 1fr;
1126
1126
  }
1127
1127
  [data-link-variant=block][data-icon].db-notification:not([data-show-icon=false]):has(header):has(.db-button):not([data-variant=overlay]), [data-link-variant=block][data-semantic].db-notification:not([data-semantic=adaptive],
1128
- [data-show-icon=false]):has(header):has(.db-button):not([data-variant=overlay]), [data-link-variant=block].db-notification:has(img):has(header):has(.db-button):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a)[data-icon]:not([data-show-icon=false]):has(header):has(.db-button):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a)[data-semantic]:not([data-semantic=adaptive],
1129
- [data-show-icon=false]):has(header):has(.db-button):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a):has(img):has(header):has(.db-button):not([data-variant=overlay]) {
1128
+ [data-show-icon=false]):has(header):has(.db-button):not([data-variant=overlay]), [data-link-variant=block].db-notification:has(img):has(header):has(.db-button):not([data-variant=overlay]), .db-notification:not([data-link-variant]):has(a)[data-icon]:not([data-show-icon=false]):has(header):has(.db-button):not([data-variant=overlay]):has(> a, > db-link), .db-notification:not([data-link-variant]):has(a)[data-semantic]:not([data-semantic=adaptive],
1129
+ [data-show-icon=false]):has(header):has(.db-button):not([data-variant=overlay]):has(> a, > db-link), .db-notification:not([data-link-variant]):has(a):has(img):has(header):has(.db-button):not([data-variant=overlay]):has(> a, > db-link) {
1130
1130
  grid-template-areas: "icon head close" "icon content content" "icon link link";
1131
1131
  grid-template-columns: min-content 1fr min-content;
1132
1132
  }
1133
1133
 
1134
- .db-notification:has(span) header,
1135
- .db-notification:has(span) p, .db-notification:has(span)::before,
1136
- .db-notification:has(span) .db-button {
1134
+ .db-notification:has([data-area=timestamp]) [data-area=head],
1135
+ .db-notification:has([data-area=timestamp]) p, .db-notification:has([data-area=timestamp])::before,
1136
+ .db-notification:has([data-area=timestamp]) .db-button {
1137
1137
  /* stylelint-disable-next-line db-ux/use-spacings */
1138
1138
  margin-block-start: -2px;
1139
1139
  }
@@ -1154,33 +1154,33 @@
1154
1154
  content: none !important;
1155
1155
  margin: 0 !important;
1156
1156
  }
1157
- .db-notification header {
1157
+ .db-notification [data-area=head] {
1158
1158
  grid-area: head;
1159
1159
  }
1160
- .db-notification header,
1161
- .db-notification header h1,
1162
- .db-notification header h2,
1163
- .db-notification header h3,
1164
- .db-notification header h4,
1165
- .db-notification header h5,
1166
- .db-notification header h6 {
1160
+ .db-notification [data-area=head],
1161
+ .db-notification [data-area=head] h1,
1162
+ .db-notification [data-area=head] h2,
1163
+ .db-notification [data-area=head] h3,
1164
+ .db-notification [data-area=head] h4,
1165
+ .db-notification [data-area=head] h5,
1166
+ .db-notification [data-area=head] h6 {
1167
1167
  margin: 0;
1168
1168
  font: var(--db-type-body-md);
1169
1169
  font-weight: 700;
1170
1170
  }
1171
- .db-notification header::before, .db-notification header::after,
1172
- .db-notification header h1::before,
1173
- .db-notification header h1::after,
1174
- .db-notification header h2::before,
1175
- .db-notification header h2::after,
1176
- .db-notification header h3::before,
1177
- .db-notification header h3::after,
1178
- .db-notification header h4::before,
1179
- .db-notification header h4::after,
1180
- .db-notification header h5::before,
1181
- .db-notification header h5::after,
1182
- .db-notification header h6::before,
1183
- .db-notification header h6::after {
1171
+ .db-notification [data-area=head]::before, .db-notification [data-area=head]::after,
1172
+ .db-notification [data-area=head] h1::before,
1173
+ .db-notification [data-area=head] h1::after,
1174
+ .db-notification [data-area=head] h2::before,
1175
+ .db-notification [data-area=head] h2::after,
1176
+ .db-notification [data-area=head] h3::before,
1177
+ .db-notification [data-area=head] h3::after,
1178
+ .db-notification [data-area=head] h4::before,
1179
+ .db-notification [data-area=head] h4::after,
1180
+ .db-notification [data-area=head] h5::before,
1181
+ .db-notification [data-area=head] h5::after,
1182
+ .db-notification [data-area=head] h6::before,
1183
+ .db-notification [data-area=head] h6::after {
1184
1184
  --db-icon-font-size: var(--db-base-body-icon-font-size-md);
1185
1185
  --db-icon-font-weight: var(--db-base-body-icon-weight-md);
1186
1186
  }
@@ -1197,7 +1197,7 @@
1197
1197
  object-fit: cover;
1198
1198
  grid-area: icon;
1199
1199
  }
1200
- .db-notification span {
1200
+ .db-notification [data-area=timestamp] {
1201
1201
  grid-area: timestamp;
1202
1202
  white-space: nowrap;
1203
1203
  justify-self: end;
@@ -1205,15 +1205,15 @@
1205
1205
  .db-notification .db-button {
1206
1206
  grid-area: close;
1207
1207
  }
1208
- .db-notification[data-link-variant=inline] a {
1208
+ .db-notification[data-link-variant=inline] > :is(a, db-link) {
1209
1209
  grid-area: timestamp;
1210
1210
  white-space: nowrap;
1211
1211
  justify-self: end;
1212
1212
  }
1213
- .db-notification[data-link-variant=inline]:has(a) > span {
1213
+ .db-notification[data-link-variant=inline]:has(> a, > db-link) > [data-area=timestamp] {
1214
1214
  display: none;
1215
1215
  }
1216
- .db-notification:not([data-link-variant=inline]) a {
1216
+ .db-notification:not([data-link-variant=inline]) > :is(a, db-link) {
1217
1217
  grid-area: link;
1218
1218
  white-space: nowrap;
1219
1219
  }
@@ -13,8 +13,8 @@
13
13
 
14
14
  %timestamp-line-height-adjustments {
15
15
  // Adjusts line-height for elements when timestamp is present
16
- &:has(span) {
17
- header,
16
+ &:has([data-area="timestamp"]) {
17
+ [data-area="head"],
18
18
  p,
19
19
  &::before,
20
20
  .db-button {
@@ -59,7 +59,7 @@
59
59
  }
60
60
 
61
61
  // headline
62
- header {
62
+ [data-area="head"] {
63
63
  grid-area: head;
64
64
 
65
65
  &,
@@ -101,7 +101,7 @@
101
101
  }
102
102
 
103
103
  // timestamp
104
- span {
104
+ [data-area="timestamp"] {
105
105
  @extend %db-overwrite-font-size-sm;
106
106
 
107
107
  grid-area: timestamp;
@@ -114,7 +114,7 @@
114
114
  }
115
115
 
116
116
  // Inline links stay within content flow
117
- &[data-link-variant="inline"] a {
117
+ &[data-link-variant="inline"] > :is(a, db-link) {
118
118
  // 1. Assign the link to the "timestamp" area.
119
119
  // All layouts (overlay and default) must recognize this area.
120
120
  grid-area: timestamp;
@@ -131,15 +131,15 @@
131
131
  // If an inline link is present, it takes precedence over the timestamp
132
132
  // Note: :has() pseudo-class has limited browser support (Firefox < 121)
133
133
  // Progressive enhancement - timestamps gracefully shown in older browsers
134
- &[data-link-variant="inline"]:has(a) {
135
- > span {
134
+ &[data-link-variant="inline"]:has(> a, > db-link) {
135
+ > [data-area="timestamp"] {
136
136
  display: none;
137
137
  }
138
138
  }
139
139
 
140
140
  // Block links get placed in grid area (default behavior)
141
141
  // This applies when linkVariant is "block" or not specified
142
- &:not([data-link-variant="inline"]) a {
142
+ &:not([data-link-variant="inline"]) > :is(a, db-link) {
143
143
  grid-area: link;
144
144
  white-space: nowrap;
145
145
  }
@@ -179,7 +179,7 @@
179
179
  // This applies when linkVariant is "block" (explicit or default when links are present)
180
180
  &:not([data-variant="overlay"]) {
181
181
  &[data-link-variant="block"],
182
- &:not([data-link-variant]):has(a) {
182
+ &:not([data-link-variant]):has(> a, > db-link) {
183
183
  @extend %grid-layout-variant-not-overlay;
184
184
  }
185
185
  }