hr-design-system-handlebars 1.11.11 → 1.12.0

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 (126) hide show
  1. package/.storybook/main.js +9 -0
  2. package/.storybook/manager.js +18 -18
  3. package/.storybook/preview.js +9 -1
  4. package/CHANGELOG.md +24 -0
  5. package/README.md +13 -2
  6. package/build/handlebars/handlebars.js +1 -1
  7. package/build/scripts/build.js +1 -1
  8. package/config.js +1 -0
  9. package/dist/assets/index.css +223 -190
  10. package/dist/views/components/base/image/icon.hbs +1 -1
  11. package/dist/views/components/base/link.hbs +11 -1
  12. package/dist/views/components/base/link_open.hbs +12 -13
  13. package/dist/views/components/base/link_v2.hbs +14 -0
  14. package/dist/views/components/button/button.hbs +9 -24
  15. package/dist/views/components/button/components/button_icon.hbs +2 -1
  16. package/dist/views/components/button/components/button_label.hbs +1 -1
  17. package/dist/views/components/button/link_button.hbs +6 -0
  18. package/dist/views/components/button/utilities/button_base_classes.hbs +1 -0
  19. package/dist/views/components/button/utilities/button_dimension_classes.hbs +1 -0
  20. package/dist/views/components/button/utilities/button_on_image_classes.hbs +39 -0
  21. package/dist/views/components/button/utilities/button_variation_classes.hbs +14 -0
  22. package/dist/views/components/content_nav/content_nav_container.hbs +1 -1
  23. package/dist/views/components/content_nav/content_nav_item.hbs +1 -1
  24. package/dist/views/components/event/calendar/event_calendar_footer.hbs +1 -1
  25. package/dist/views/components/event/event_ticket_button.hbs +11 -9
  26. package/dist/views/components/grid/grid_group_highlight.hbs +1 -1
  27. package/dist/views/components/label/label_old.hbs +1 -1
  28. package/dist/views/components/mediaplayer/media_player.hbs +4 -22
  29. package/dist/views/components/mediaplayer/mediaplayer_button.hbs +9 -0
  30. package/dist/views/components/modal/modal.hbs +2 -2
  31. package/dist/views/components/page/page_pagination.hbs +1 -1
  32. package/dist/views/components/pagination/pagination.hbs +15 -14
  33. package/dist/views/components/pagination/pagination_current_page_invalid.hbs +1 -1
  34. package/dist/views/components/pagination/pagination_current_page_valid.hbs +2 -1
  35. package/dist/views/components/pagination/pagination_more_than_three_pages.hbs +3 -3
  36. package/dist/views/components/pagination/pagination_only_three_pages.hbs +7 -7
  37. package/dist/views/components/pagination/pagination_only_two_pages.hbs +2 -2
  38. package/dist/views/components/site_header/brand_navigation/brand_navigation.hbs +1 -1
  39. package/dist/views/components/teaser/cluster/teaser_cluster.hbs +4 -1
  40. package/dist/views/components/teaser/cluster/teaser_cluster_byline.hbs +1 -1
  41. package/dist/views/components/teaser/cluster/teaser_cluster_item.hbs +1 -1
  42. package/dist/views/components/teaser/components/teaser_av_consumption_close_button.hbs +6 -20
  43. package/dist/views/components/teaser/components/teaser_byline.hbs +1 -1
  44. package/dist/views/components/teaser/components/teaser_image.hbs +6 -14
  45. package/dist/views/components/teaser/podcast/podcast_subscribe_button.hbs +18 -15
  46. package/dist/views/components/teaser/podcast/podcast_title.hbs +2 -2
  47. package/dist/views/components/teaser/tabbox/group_tabbox.hbs +4 -1
  48. package/dist/views/components/teaser/tabbox/teaser_tabbox.hbs +10 -11
  49. package/dist/views/components/teaser/teaser_poster.hbs +5 -1
  50. package/gulpfile.js +9 -0
  51. package/package.json +4 -2
  52. package/src/assets/css/custom-components.css +37 -38
  53. package/src/assets/css/custom-utilities.css +2 -2
  54. package/src/assets/fixtures/event/calendar/event_calendar_months.inc.json +5 -1
  55. package/src/assets/fixtures/page/page_pagination.json +15 -14
  56. package/src/assets/tailwind.css +54 -22
  57. package/src/stories/conventions-and-datastructure.mdx +217 -4
  58. package/src/stories/views/components/base/image/icon.hbs +1 -1
  59. package/src/stories/views/components/base/link.hbs +11 -1
  60. package/src/stories/views/components/base/link_open.hbs +12 -13
  61. package/src/stories/views/components/base/link_v2.hbs +14 -0
  62. package/src/stories/views/components/button/button.hbs +9 -24
  63. package/src/stories/views/components/button/button.mdx +186 -0
  64. package/src/stories/views/components/button/button.stories.js +508 -0
  65. package/src/stories/views/components/button/components/button_icon.hbs +2 -1
  66. package/src/stories/views/components/button/components/button_icon.mdx +25 -0
  67. package/src/stories/views/components/button/components/button_icon.stories.js +44 -0
  68. package/src/stories/views/components/button/components/button_label.hbs +1 -1
  69. package/src/stories/views/components/button/components/button_label.mdx +25 -0
  70. package/src/stories/views/components/button/components/button_label.stories.js +33 -0
  71. package/src/stories/views/components/button/link_button.hbs +6 -0
  72. package/src/stories/views/components/button/link_button.mdx +137 -0
  73. package/src/stories/views/components/button/link_button.stories.js +420 -0
  74. package/src/stories/views/components/button/utilities/button_base_classes.hbs +1 -0
  75. package/src/stories/views/components/button/utilities/button_dimension_classes.hbs +1 -0
  76. package/src/stories/views/components/button/utilities/button_on_image_classes.hbs +39 -0
  77. package/src/stories/views/components/button/utilities/button_variation_classes.hbs +14 -0
  78. package/src/stories/views/components/content_nav/content_nav_container.hbs +1 -1
  79. package/src/stories/views/components/content_nav/content_nav_item.hbs +1 -1
  80. package/src/stories/views/components/event/calendar/event_calendar_footer.hbs +1 -1
  81. package/src/stories/views/components/event/event_ticket_button.hbs +11 -9
  82. package/src/stories/views/components/grid/grid_group_highlight.hbs +1 -1
  83. package/src/stories/views/components/label/label_old.hbs +1 -1
  84. package/src/stories/views/components/mediaplayer/media_player.hbs +4 -22
  85. package/src/stories/views/components/mediaplayer/mediaplayer_button.hbs +9 -0
  86. package/src/stories/views/components/mediaplayer/mediaplayer_button.mdx +82 -0
  87. package/src/stories/views/components/mediaplayer/mediaplayer_button.stories.js +178 -0
  88. package/src/stories/views/components/modal/modal.hbs +2 -2
  89. package/src/stories/views/components/page/fixtures/page_pagination.json +1 -1
  90. package/src/stories/views/components/page/page_pagination.hbs +1 -1
  91. package/src/stories/views/components/pagination/pagination.hbs +15 -14
  92. package/src/stories/views/components/pagination/pagination_current_page_invalid.hbs +1 -1
  93. package/src/stories/views/components/pagination/pagination_current_page_valid.hbs +2 -1
  94. package/src/stories/views/components/pagination/pagination_more_than_three_pages.hbs +3 -3
  95. package/src/stories/views/components/pagination/pagination_only_three_pages.hbs +7 -7
  96. package/src/stories/views/components/pagination/pagination_only_two_pages.hbs +2 -2
  97. package/src/stories/views/components/site_header/brand_navigation/brand_navigation.hbs +1 -1
  98. package/src/stories/views/components/teaser/cluster/teaser_cluster.hbs +4 -1
  99. package/src/stories/views/components/teaser/cluster/teaser_cluster_byline.hbs +1 -1
  100. package/src/stories/views/components/teaser/cluster/teaser_cluster_item.hbs +1 -1
  101. package/src/stories/views/components/teaser/components/teaser_av_consumption_close_button.hbs +6 -20
  102. package/src/stories/views/components/teaser/components/teaser_byline.hbs +1 -1
  103. package/src/stories/views/components/teaser/components/teaser_image.hbs +6 -14
  104. package/src/stories/views/components/teaser/fixtures/teaser_event_calendar_100_serif.json +1 -1
  105. package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.hbs +18 -15
  106. package/src/stories/views/components/teaser/podcast/podcast_title.hbs +2 -2
  107. package/src/stories/views/components/teaser/tabbox/group_tabbox.hbs +4 -1
  108. package/src/stories/views/components/teaser/tabbox/teaser_tabbox.hbs +10 -11
  109. package/src/stories/views/components/teaser/teaser_poster.hbs +5 -1
  110. package/tailwind.config.js +8 -1
  111. package/dist/views/components/button/button_pseudo.hbs +0 -8
  112. package/dist/views/components/button/button_pseudo.inc.hbs +0 -18
  113. package/dist/views/components/button/button_pseudo_v2.hbs +0 -12
  114. package/dist/views/components/button/button_round.hbs +0 -23
  115. package/dist/views/components/button/button_round_classes.hbs +0 -46
  116. package/dist/views/components/button/button_transparent.hbs +0 -17
  117. package/dist/views/components/button/button_v2.hbs +0 -7
  118. package/dist/views/components/button/components/button_pseudo_link.hbs +0 -3
  119. package/src/stories/views/components/button/button_pseudo.hbs +0 -8
  120. package/src/stories/views/components/button/button_pseudo.inc.hbs +0 -18
  121. package/src/stories/views/components/button/button_pseudo_v2.hbs +0 -12
  122. package/src/stories/views/components/button/button_round.hbs +0 -23
  123. package/src/stories/views/components/button/button_round_classes.hbs +0 -46
  124. package/src/stories/views/components/button/button_transparent.hbs +0 -17
  125. package/src/stories/views/components/button/button_v2.hbs +0 -7
  126. package/src/stories/views/components/button/components/button_pseudo_link.hbs +0 -3
@@ -28,7 +28,7 @@
28
28
  /* Sendung */
29
29
  --color-label-program: theme('colors.blue.matisse');
30
30
  /* Download */
31
- --color-label-download: theme('colors.grey.scorpion');
31
+ --color-label-download: theme('colors.gray.scorpion');
32
32
  /* Pressemitteilungen */
33
33
  --color-label-pm: theme('colors.blue.deepCerulean');
34
34
  /* Sendungsdokument */
@@ -42,7 +42,7 @@
42
42
  /* Eventkalender */
43
43
  --color-label-event-calendar-title: theme('colors.teal.deeperPool');
44
44
  --color-eventcalendar-primary: var(--color-primary-ds);
45
- --color-eventcalendar-secondary: theme('colors.grey.boulder');
45
+ --color-eventcalendar-secondary: theme('colors.gray.boulder');
46
46
  /* Subline */
47
47
  --color-subline: var(--color-topline);
48
48
  /* Link */
@@ -53,7 +53,7 @@
53
53
  --color-stage-primary: theme('colors.blue.deepCerulean');
54
54
  --color-stage-link: var('--color-link');
55
55
  /* geoTag */
56
- --color-geoTag: theme('colors.grey.brightGray');
56
+ --color-geoTag: theme('colors.gray.brightGray');
57
57
  /* Cluster-Teaser */
58
58
  --color-cluster-teaser-link: theme('colors.blue.science');
59
59
  --color-cluster-teaser-headline: theme('colors.blue.congress');
@@ -61,6 +61,8 @@
61
61
  --color-button: var(--color-primary-ds);
62
62
  --color-button-inverted: theme('colors.white.DEFAULT');
63
63
  --color-button-hollow: theme('colors.blue.science');
64
+ --color-button-secondary: theme('colors.blue.science');
65
+ --color-button-ghost: theme('colors.blue.science');
64
66
  /* Media-Button */
65
67
  --color-media-button: theme('colors.blue.jellyBean');
66
68
  /* States */
@@ -71,7 +73,7 @@
71
73
  --color-podcast: theme('colors.blue.science');
72
74
  --color-podcast-text: var(--color-link);
73
75
  /* Byline */
74
- --color-byline: theme('colors.grey.scorpion');
76
+ --color-byline: theme('colors.gray.scorpion');
75
77
  /* Font */
76
78
  --font-title: theme('fontFamily.heading');
77
79
  --font-weight-title: theme('fontWeight.bold');
@@ -102,7 +104,7 @@
102
104
  /* Sendung */
103
105
  --color-label-program: theme('colors.blue.matisse');
104
106
  /* Download */
105
- --color-label-download: theme('colors.grey.scorpion');
107
+ --color-label-download: theme('colors.gray.scorpion');
106
108
  /* Pressemitteilungen */
107
109
  --color-label-pm: theme('colors.blue.deepCerulean');
108
110
  /* Kurzmeldung */
@@ -121,14 +123,20 @@
121
123
  --color-stage-text: theme('colors.white.DEFAULT');
122
124
  --color-stage-link: theme('colors.white.DEFAULT');
123
125
  /* geoTag */
124
- --color-geoTag: theme('colors.grey.brightGray');
126
+ --color-geoTag: theme('colors.gray.brightGray');
125
127
  /* Cluster-Teaser */
126
128
  --color-cluster-teaser-link: theme('colors.blue.science');
127
129
  --color-cluster-teaser-headline: theme('colors.blue.congress');
128
130
  /* Button */
129
131
  --color-button: var(--color-primary-ds);
132
+ --color-button-primary: theme('colors.blue.science');
133
+ --color-button-primary-dark: theme('colors.blue.congress');
134
+ --color-button-primary-inverted: theme('colors.white.DEFAULT');
135
+ --color-button-primary-inverted-dark: theme('colors.blue.accented');
130
136
  --color-button-inverted: theme('colors.white.DEFAULT');
131
137
  --color-button-hollow: theme('colors.blue.science');
138
+ --color-button-secondary: theme('colors.blue.science');
139
+ --color-button-ghost: theme('colors.blue.science');
132
140
  /* Media-Button */
133
141
  --color-media-button: theme('colors.blue.science');
134
142
  /* States */
@@ -165,7 +173,7 @@
165
173
  /* Sendung */
166
174
  --color-label-program: theme('colors.red.mexican');
167
175
  /* Download */
168
- --color-label-download: theme('colors.grey.scorpion');
176
+ --color-label-download: theme('colors.gray.scorpion');
169
177
  /* Event */
170
178
  --color-label-event: theme('colors.black.DEFAULT');
171
179
  /* Kurzmeldung */
@@ -190,6 +198,8 @@
190
198
  --color-button: var(--color-primary-ds);
191
199
  --color-button-inverted: theme('colors.white.DEFAULT');
192
200
  --color-button-hollow: theme('colors.purple.jazzberry');
201
+ --color-button-secondary: theme('colors.purple.jazzberry');
202
+ --color-button-ghost: theme('colors.purple.jazzberry');
193
203
  /* Media-Button */
194
204
  --color-media-button: var(--color-primary-ds);
195
205
  /* States */
@@ -222,7 +232,7 @@
222
232
  /* Sendung */
223
233
  --color-label-program: theme('colors.pink.rose');
224
234
  /* Download */
225
- --color-label-download: theme('colors.grey.scorpion');
235
+ --color-label-download: theme('colors.gray.scorpion');
226
236
  /* Event */
227
237
  --color-label-event: theme('colors.black.DEFAULT');
228
238
  /* Kurzmeldung */
@@ -246,6 +256,8 @@
246
256
  --color-button: var(--color-primary-ds);
247
257
  --color-button-inverted: theme('colors.white.DEFAULT');
248
258
  --color-button-hollow: theme('colors.blue.jellyBean');
259
+ --color-button-secondary: theme('colors.blue.jellyBean');
260
+ --color-button-ghost: theme('colors.blue.jellyBean');
249
261
  /* Media-Button */
250
262
  --color-media-button: var(--color-primary-ds);
251
263
  /* States */
@@ -262,7 +274,7 @@
262
274
  }
263
275
 
264
276
  [data-theme='hr-rundfunkrat'] {
265
- --color-primary-ds: theme('colors.grey.scorpion');
277
+ --color-primary-ds: theme('colors.gray.scorpion');
266
278
  --color-secondary-ds: #007179;
267
279
  --color-highlight-1: theme('colors.blue.accented');
268
280
  --color-highlight-2: theme('colors.orange.spicyCarrot');
@@ -278,7 +290,7 @@
278
290
  /* Sendung */
279
291
  --color-label-program: theme('colors.red.mexican');
280
292
  /* Download */
281
- --color-label-download: theme('colors.grey.scorpion');
293
+ --color-label-download: theme('colors.gray.scorpion');
282
294
  /* Event */
283
295
  --color-label-event: theme('colors.black.DEFAULT');
284
296
  /* Pressemitteilungen */
@@ -304,6 +316,8 @@
304
316
  --color-button: theme('colors.blue.deepCerulean');
305
317
  --color-button-inverted: theme('colors.white.DEFAULT');
306
318
  --color-button-hollow: theme('colors.blue.deepCerulean');
319
+ --color-button-secondary: theme('colors.blue.deepCerulean');
320
+ --color-button-ghost: theme('colors.blue.deepCerulean');
307
321
  /* Media-Button */
308
322
  --color-media-button: var(--color-primary-ds);
309
323
  /* States */
@@ -336,7 +350,7 @@
336
350
  /* Sendung */
337
351
  --color-label-program: theme('colors.red.mexican');
338
352
  /* Download */
339
- --color-label-download: theme('colors.grey.scorpion');
353
+ --color-label-download: theme('colors.gray.scorpion');
340
354
  /* Event */
341
355
  --color-label-event: theme('colors.black.DEFAULT');
342
356
  /* Pressemitteilungen */
@@ -362,6 +376,8 @@
362
376
  --color-button: var(--color-primary-ds);
363
377
  --color-button-inverted: theme('colors.white.DEFAULT');
364
378
  --color-button-hollow: var(--color-primary-ds);
379
+ --color-button-secondary: var(--color-primary-ds);
380
+ --color-button-ghost: var(--color-primary-ds);
365
381
  /* Media-Button */
366
382
  --color-media-button: var(--color-primary-ds);
367
383
  /* States */
@@ -380,7 +396,7 @@
380
396
  [data-theme='hr-sinfonieorchester'] {
381
397
  --color-primary-ds: theme('colors.red.burntUmber');
382
398
  --color-secondary-ds: #007179;
383
- --color-highlight-1: theme('colors.grey.alto');
399
+ --color-highlight-1: theme('colors.gray.alto');
384
400
  --color-highlight-2: theme('colors.orange.spicyCarrot');
385
401
 
386
402
  /* Medieninhalte, Video, Audio, Bildergalerie */
@@ -394,7 +410,7 @@
394
410
  /* Sendung */
395
411
  --color-label-program: theme('colors.green.goBen');
396
412
  /* Download */
397
- --color-label-download: theme('colors.grey.scorpion');
413
+ --color-label-download: theme('colors.gray.scorpion');
398
414
  /* Event */
399
415
  --color-label-event: theme('colors.black.DEFAULT');
400
416
  /* Kurzmeldung */
@@ -418,6 +434,8 @@
418
434
  --color-button: theme('colors.red.wellRead');
419
435
  --color-button-inverted: theme('colors.white.DEFAULT');
420
436
  --color-button-hollow: theme('colors.red.wellRead');
437
+ --color-button-secondary: theme('colors.red.wellRead');
438
+ --color-button-ghost: theme('colors.red.wellRead');
421
439
  /* Media-Button */
422
440
  --color-media-button: theme('colors.red.wellRead');
423
441
  /* States */
@@ -450,7 +468,7 @@
450
468
  /* Sendung */
451
469
  --color-label-program: theme('colors.blue.blueStone');
452
470
  /* Download */
453
- --color-label-download: theme('colors.grey.scorpion');
471
+ --color-label-download: theme('colors.gray.scorpion');
454
472
  /* Event */
455
473
  --color-label-event: theme('colors.black.DEFAULT');
456
474
  /* Kurzmeldung */
@@ -474,6 +492,8 @@
474
492
  --color-button: theme('colors.blue.teal');
475
493
  --color-button-inverted: theme('colors.white.DEFAULT');
476
494
  --color-button-hollow: theme('colors.blue.teal');
495
+ --color-button-secondary: theme('colors.blue.teal');
496
+ --color-button-ghost: theme('colors.blue.teal');
477
497
  /* Media-Button */
478
498
  --color-media-button: theme('colors.blue.teal');
479
499
  /* States */
@@ -506,7 +526,7 @@
506
526
  /* Sendung */
507
527
  --color-label-program: theme('colors.red.mexican');
508
528
  /* Download */
509
- --color-label-download: theme('colors.grey.scorpion');
529
+ --color-label-download: theme('colors.gray.scorpion');
510
530
  /* Event */
511
531
  --color-label-event: theme('colors.black.DEFAULT');
512
532
  /* Pressemitteilungen */
@@ -532,6 +552,8 @@
532
552
  --color-button: var(--color-primary-ds);
533
553
  --color-button-inverted: theme('colors.white.DEFAULT');
534
554
  --color-button-hollow: var(--color-primary-ds);
555
+ --color-button-secondary: var(--color-primary-ds);
556
+ --color-button-ghost: var(--color-primary-ds);
535
557
  /* Media-Button */
536
558
  --color-media-button: var(--color-primary-ds);
537
559
  /* States */
@@ -590,6 +612,8 @@
590
612
  --color-button: theme('colors.yellow.olive');
591
613
  --color-button-inverted: theme('colors.white.DEFAULT');
592
614
  --color-button-hollow: theme('colors.yellow.olive');
615
+ --color-button-secondary: theme('colors.yellow.olive');
616
+ --color-button-ghost: theme('colors.yellow.olive');
593
617
  /* Media-Button */
594
618
  --color-media-button: theme('colors.yellow.olive');
595
619
  /* States */
@@ -608,7 +632,7 @@
608
632
  [data-theme='hr2'] {
609
633
  --color-primary-ds: theme('colors.orange.clementine');
610
634
  --color-secondary-ds: #007179;
611
- --color-highlight-1: theme('colors.grey.alto');
635
+ --color-highlight-1: theme('colors.gray.alto');
612
636
  --color-highlight-2: theme('colors.orange.spicyCarrot');
613
637
 
614
638
  /* Medieninhalte, Video, Audio, Bildergalerie */
@@ -622,7 +646,7 @@
622
646
  /* Sendung */
623
647
  --color-label-program: theme('colors.red.paprika');
624
648
  /* Download */
625
- --color-label-download: theme('colors.grey.scorpion');
649
+ --color-label-download: theme('colors.gray.scorpion');
626
650
  /* Event */
627
651
  --color-label-event: theme('colors.black.DEFAULT');
628
652
  /* Kurzmeldung */
@@ -647,6 +671,8 @@
647
671
  --color-button: theme('colors.red.paprika');
648
672
  --color-button-inverted: theme('colors.white.DEFAULT');
649
673
  --color-button-hollow: theme('colors.red.paprika');
674
+ --color-button-secondary: theme('colors.red.paprika');
675
+ --color-button-ghost: theme('colors.red.paprika');
650
676
  /* Media-Button */
651
677
  --color-media-button: theme('colors.orange.burntOrange');
652
678
  /* States */
@@ -665,7 +691,7 @@
665
691
  [data-theme='hr3'] {
666
692
  --color-primary-ds: theme('colors.red.monza');
667
693
  --color-secondary-ds: #007179;
668
- --color-highlight-1: theme('colors.grey.mercury');
694
+ --color-highlight-1: theme('colors.gray.mercury');
669
695
  --color-highlight-2: theme('colors.orange.spicyCarrot');
670
696
 
671
697
  /* Medieninhalte, Video, Audio, Bildergalerie */
@@ -679,7 +705,7 @@
679
705
  /* Sendung */
680
706
  --color-label-program: theme('colors.green.pineGreen');
681
707
  /* Download */
682
- --color-label-download: theme('colors.grey.scorpion');
708
+ --color-label-download: theme('colors.gray.scorpion');
683
709
  /* Event */
684
710
  --color-label-event: theme('colors.black.DEFAULT');
685
711
  /* Kurzmeldung */
@@ -706,6 +732,8 @@
706
732
  --color-button: theme('colors.red.scarlett');
707
733
  --color-button-inverted: theme('colors.white.DEFAULT');
708
734
  --color-button-hollow: theme('colors.red.scarlett');
735
+ --color-button-secondary: theme('colors.red.scarlett');
736
+ --color-button-ghost: theme('colors.red.scarlett');
709
737
  /* Media-Button */
710
738
  --color-media-button: var(--color-primary-ds);
711
739
  /* States */
@@ -738,7 +766,7 @@
738
766
  /* Sendung */
739
767
  --color-label-program: theme('colors.pink.fuchsie');
740
768
  /* Download */
741
- --color-label-download: theme('colors.grey.scorpion');
769
+ --color-label-download: theme('colors.gray.scorpion');
742
770
  /* Event */
743
771
  --color-label-event: theme('colors.black.DEFAULT');
744
772
  /* Kurzmeldung */
@@ -765,6 +793,8 @@
765
793
  --color-button: theme('colors.green.casal');
766
794
  --color-button-inverted: theme('colors.white.DEFAULT');
767
795
  --color-button-hollow: theme('colors.green.casal');
796
+ --color-button-secondary: theme('colors.green.casal');
797
+ --color-button-ghost: theme('colors.green.casal');
768
798
  /* Media-Button */
769
799
  --color-media-button: theme('colors.green.eden');
770
800
  /* States */
@@ -785,7 +815,7 @@
785
815
  [data-theme='you-fm'] {
786
816
  --color-primary-ds: #c20016;
787
817
  --color-secondary-ds: #007179;
788
- --color-highlight-1: theme('colors.grey.platinum');
818
+ --color-highlight-1: theme('colors.gray.platinum');
789
819
  --color-highlight-2: theme('colors.orange.spicyCarrot');
790
820
 
791
821
  /* Medieninhalte, Video, Audio, Bildergalerien */
@@ -799,7 +829,7 @@
799
829
  /* Sendung */
800
830
  --color-label-program: theme('colors.blue.lightCerulean');
801
831
  /* Download */
802
- --color-label-download: theme('colors.grey.scorpion');
832
+ --color-label-download: theme('colors.gray.scorpion');
803
833
  /* Event */
804
834
  --color-label-event: theme('colors.black.DEFAULT');
805
835
  /* Kurzmeldung */
@@ -824,6 +854,8 @@
824
854
  --color-button: var(--color-link);
825
855
  --color-button-inverted: theme('colors.white.DEFAULT');
826
856
  --color-button-hollow: var(--color-link);
857
+ --color-button-secondary: var(--color-link);
858
+ --color-button-ghost: var(--color-link);
827
859
  /* Media-Button */
828
860
  --color-media-button: theme('colors.black.DEFAULT');
829
861
  /* States */
@@ -4,6 +4,18 @@ import { Meta, Canvas } from '@storybook/addon-docs'
4
4
 
5
5
  # Konventionen und Datenstrukturen
6
6
 
7
+ - [Übersicht](#übersicht)
8
+ - [Aufbau der Datenstruktur des Designsystems](#aufbau-der-datenstruktur-des-designsystems)
9
+ - [Namenskonventionen](#namenskonventionen)
10
+ - [Stories](#stories)
11
+ - [Handlebar-Komponenten](#handlebar-komponenten)
12
+ - [JSON](#json)
13
+ - [Konventionen beim Bau von Komponenten](#konventionen-beim-bau-von-komponentenn)
14
+ - [Styling von Komponenten](#styling-von-komponenten)
15
+ - [Wiederverwendbarkeit und Erweiterbarkeit von Komponenten](#wiederverwendbarkeit-und-erweiterbarkeit-von-komponenten)
16
+
17
+ ## Übersicht
18
+
7
19
  Dieses Kapitel richtet sich vor allem an die Entwickler des Designsystems. Es erläutert den grundlegenden Aufbau der Datenstruktur und legt Konventionen für die Benennung von Dateien fest.
8
20
 
9
21
  ## Aufbau der Datenstruktur des Designsystems
@@ -159,7 +171,11 @@ svg_optimization.stories.mdx`}
159
171
  </pre>
160
172
  </div>
161
173
 
162
- ### Handlebar Komponenten
174
+ ### Handlebar-Komponenten
175
+
176
+ Bei der Erstellung von Handlebar-Komponenten müssen verschiedenen Namenskonvention eingehalten werden.
177
+
178
+ #### Namen von Komponenten
163
179
 
164
180
  Für die Namen von Handlebar-Komponenten gelten die gleichen Regeln wie für Stories.
165
181
 
@@ -192,8 +208,11 @@ Namen und deren einzelnen Bestandteile sind immer auszuschreiben. Abkürzungen s
192
208
  <pre class="!bg-white !p-4 !leading-8">{`brand_navigation_item.hbs`}</pre>
193
209
  </div>
194
210
 
211
+ #### Namen von Komponenten-Parametern
212
+
195
213
  Die Namen von Parametern in Handlebar-Komponenten sind, anders als der Datainame, in
196
- [Camel-Case](https://en.wikipedia.org/wiki/Camel_case) Notation zu schreiben.
214
+ [Camel-Case](https://en.wikipedia.org/wiki/Camel_case) Notation zu schreiben und mit einem Unterstrich
215
+ zu prefixen.
197
216
 
198
217
  <div class="bg-red-200 !mt-4 p-4">
199
218
  <h4 class="!text-red-900 font-bold">Falsch</h4>
@@ -204,11 +223,58 @@ Die Namen von Parametern in Handlebar-Komponenten sind, anders als der Datainame
204
223
  <div class="bg-green-200 !mt-4 p-4">
205
224
  <h4 class="!text-green-900 font-bold">Korrekt</h4>
206
225
  <pre class="!bg-white !p-4 !leading-8">
207
- &#123;&#123;#>components/base/link cssClasses="" isAriaHidden=true
208
- clickLabelPrefix2="mediaLink"&#125;&#125;
226
+ &#123;&#123;#>components/base/link _cssClasses="" _isAriaHidden=true
227
+ _clickLabelPrefix2="mediaLink"&#125;&#125;
209
228
  </pre>
210
229
  </div>
211
230
 
231
+ #### Namen übergebener Komponenten-Parameter in Partial-Blocks und Inline-Partials
232
+
233
+ Sollen an Subkomponenten, die in Partial-Blocks und/oder Inline-Partials aufgerufen werden Komponenten-Parameter der Parent-Komponente
234
+ übergeben werden, muss an die Namen der zu übergebenden Parameter das Postfix `-adjust_context` angefügt werden.
235
+ Dies ist leider notwendig, da [Handlebars.js](https://handlebarsjs.com) und [Handlebars.java](https://github.com/jknack/handlebars.java)
236
+ innerhalb von Partial-Blocks und Inline-Partials die Datenkontexte anders auflösen. Der Wert des Parameters `_css` kann in
237
+ Handlebars.js direkt, in Handlebars.java aber nur ausgelesen werden, wenn mittels `../../_css` zwei Ebenen nach oben gegangen wird.
238
+ Durch setzen des Postfixes `-adjust_context` können mittels eines Gulp-Skriptes diese Vatriablen in Komponenten herausgefiltert werden
239
+ und je nachdem wofür gerade gebaut wird der Kontext automatisiert angepasst werden oder nicht. Hierzu ein kurzes Beispiel.
240
+
241
+ ```handlebars
242
+ {{#with this}}
243
+ {{> components/base/image/icon _icon="play_button" _addClass="text-media-button fill-white hover:fill-media-button w-10 h-10 inline"}}
244
+ {{#*inline "css"~}}
245
+ {{~> components/button/utilities/button_on_image_classes _isMobile1to1=_isMobile1to1-adjust_context}}
246
+ {{/inline}}
247
+ {{/with}}
248
+ ```
249
+
250
+ Dem Play-Button Icon werden hier in einem Inline-Partial mit der [Style-Komponente](#setzen-kontextabhängiger-css-klassen-mit-style-komponenten)
251
+ `button_on_image_classes` zusätzliche CSS Klassen übergeben. Je nach Wert des Parameters `_isMobile1to1` werden darin unterschiedliche CSS Klassen gesetzt.
252
+ Der Wert dieses Parameters kommt in diesem Beispiel aus einem Parameter gleichen Namens aus dem Parent-Kontext. Damit dieser korrekt von
253
+ den unterschiedlichen Handlebars Implementierungen aufgelöst werden kann, hat er den Postfix `-adjust_context` erhalten. Das oben angesprochene
254
+ Gulp-Skript filtert diesen Parameter jetzt heraus und macht daraus, wenn Storybook mit `yarn storybook` lokal ausgeführt wird wieder den Parameter `_isMobile1to1`.
255
+
256
+ ```handlebars
257
+ {{#with this}}
258
+ {{> components/base/image/icon _icon="play_button" _addClass="text-media-button fill-white hover:fill-media-button w-10 h-10 inline"}}
259
+ {{#*inline "css"~}}
260
+ {{~> components/button/utilities/button_on_image_classes _isMobile1to1=_isMobile1to1}}
261
+ {{/inline}}
262
+ {{/with}}
263
+ ```
264
+
265
+ Anders verhält es sich, wenn mit `yarn build` das Designsystem für die Verwendung im Delivery gebaut wird (dieses Skript wird beim bauen eines Releases
266
+ in Github aufgerufen). Der Parameter `_isMobile1to1-adjust_context` wird jetzt durch `../../_isMobile1to1` ersetzt, sodass auch im Kontext von Handlebars.java
267
+ der Wert des Parameters korrekt ausgelesen werden kann.
268
+
269
+ ```handlebars
270
+ {{#with this}}
271
+ {{> components/base/image/icon _icon="play_button" _addClass="text-media-button fill-white hover:fill-media-button w-10 h-10 inline"}}
272
+ {{#*inline "css"~}}
273
+ {{~> components/button/utilities/button_on_image_classes _isMobile1to1=../../_isMobile1to1}}
274
+ {{/inline}}
275
+ {{/with}}
276
+ ```
277
+
212
278
  ### JSON
213
279
 
214
280
  Im Designsystem werden Testdaten für Komponenten mittels JSON-Dateien bereitgestellt. Auch diese Dateinamen werden in Snake-Case Notation
@@ -238,3 +304,150 @@ sofern sie aus mehreren Worten zusammengesetzt werden, mit Minus voneinander get
238
304
  |— navigation-flyout`}
239
305
  </pre>
240
306
  </div>
307
+
308
+ ## Konventionen beim Bau von Komponenten
309
+
310
+ Bei der Entwicklung neuer Komponenten müssen einige Konventionen beachtet werden.
311
+
312
+ ### Styling von Komponenten
313
+
314
+ Zum Styling von Komponenten verwenden wir das CSS Framework [Tailwind CSS](https://tailwindcss.com/). Tailwind CSS
315
+ ist ein auf dem Utility-First Ansatz basierendes Framework. Für nahezu jede CSS Eigenschaft gibt es eine eigene
316
+ Utility Klasse, mit deren Hilfe die Styles einer Komponente im HTML Markup zusammengesetzt werden. Anstatt
317
+ wie üblich Klassen mit beliebig vielen CSS Eigenschaften zu erstellen, setzen Tailwind CSS Klassen in der Regel
318
+ immer nur jeweils eine einzelne Style Eigenschaft. Auf diese Weise wird ein sehr hohes Maß an Wiederverwendung
319
+ erreicht und die Dateigröße der ausglieferten CSS Dateien ist in der Regel deutlich kleiner als beim klassischen
320
+ Ansatz mit mehreren CSS Eigenschaften pro Klasse.
321
+ Nachteil ist jedoch, dass alle CSS Logik auf diese Weise in die Templates verlagert wird und diese auf den ersten
322
+ Blick recht unübersichtlich wirken können.
323
+
324
+ #### Definition eigener CSS Klassen
325
+
326
+ Tailwind CSS gestattet es auch sehr einfach eigene CSS Klassen zu schreiben. Sollte es für eine bestimmte CSS Eigenschaft
327
+ noch keine eigene Utility Klasse geben, kann diese problemlos in der Datei `custom-utilities.css` definiert werden.
328
+ Auch ist es möglich in der Datei `custom-components.css` eigene, vom Utility-First Ansatz abweichende, Klassen zu schreiben.
329
+
330
+ Von dieser Möglichkeit sollte aber nur in Ausnahmefällen gebrauch gemacht werden, da ansonsten der Vorteil der kleinen Dateigrößen
331
+ sehr schnell zunichte gemacht werden kann.
332
+
333
+ #### Setzen Kontextabhängiger CSS Klassen mit Style-Komponenten
334
+
335
+ An vielen Stellen im Design System müssen CSS Klassen abhängig vom Kontext, in dem die zu stylende Komponente genutzt wird, gesetzt
336
+ werden. Ein Beispiel dafür sind Teaser auf Übersichtsseiten. Wie diese auf der Webseite angezeigt werden sollen, können Redakteure
337
+ auf der Webseite durch setzen entsprechender Parameter dynamisch festlegen.
338
+ Mit der Verwendung von Tailwind CSS und dem Einsatz von Utility Klassen, verlagert sich die ganze Logik aus den CSS Dateien in die
339
+ Komponenten. Als Best-Practice haben sich hierfür separate, ausschließlich CSS Klassen setzende, Handlebar-Komponenten (Style-Komponenten) herausgestellt.
340
+ Diesen Komponenten werden die von den Redakteuren im CMS vorgenommenen Einstellungen als Parameter übergeben. Abhängig von deren Wert
341
+ werden die entsprechenden CSS Utility Klassen gesetzt. Style-Komponenten können beliebig oft und an beliebigen Stellen wiederverwendet werden.
342
+
343
+ ### Wiederverwendbarkeit und Erweiterbarkeit von Komponenten
344
+
345
+ Damit nicht bei jeder neuen Anforderung das Rad neu erfunden werden muss, ist es wichtig, dass
346
+ beim Bau von Komponenten auf ein hohes Maß an Wiederverwendbarkeit sowie eine
347
+ gute und einfache Erweiterbarkeit geachtet wird.
348
+ Komponenten sollten demgemäß möglichst einfach gehalten und nicht mit einer vielzahl an Features überladen werden.
349
+
350
+ Ein gutes Beispiel, wie man es nicht machen sollte ist die Button-Komponente. Bei ihr wurde versucht alle Anforderungen,
351
+ die an einen Button gestellt wurden in einer einzigen Komponente abzubilden. Dies ging bei den initialen Anforderungen
352
+ noch halbwegs, aber je mehr zusätzliche Anforderungen und Features im Laufe der Zeit hinzukamen, desto unübersichtlicher
353
+ und schlechter wartbar wurde die Komponente. Am Ende hatte die Komponente fast zwanzig Parameter, mit denen ihr Verhalten
354
+ gesteuert werden konnte und sie war zu einem richtigen "Monster" angewachsen.
355
+ Aus diesem Grund wurde sie umgebaut und vereinfacht. Gemäß dem Prinzip der "[Component Selfishness](https://www.smashingmagazine.com/2023/01/key-good-component-design-selfishness/)"
356
+ rendert die Komponente nur noch den Rahmen eines Buttons. Alle Inhalte, wie das Label oder ein mögliches Icon,
357
+ werden dem Button mit Hilfe von Subkomponenten hinzugefügt.
358
+
359
+ #### Erweitern von Basis-Komponenten mit Subkomponenten
360
+
361
+ Um einer Basis-Komponente weitere Inhalte mittels Subkomponenten hinzuzufügen, sieht Handlebars das Konzept der
362
+ sogenannten "[Partial-Blocks}(https://handlebarsjs.com/guide/partials.html#partial-blocks)" vor. Mit `@partial-block`
363
+ stellt Handlebars hierfür ein spezielles Partial bereit. Es erlaubt in einer Basis-Komponente, wie z.B. der Button-Komponente,
364
+ an einer bestimmten Stelle im Markup einen Platzhalter für mögliche Subkomponenten anzugeben.
365
+ Schauen wir uns das ganze anhand der Button-Komponente an.
366
+
367
+ ```handlebars
368
+ <button>
369
+ {{> @partial-block }}
370
+ </button>
371
+ ```
372
+
373
+ Die Komponente rendert lediglich das Markup des Button-Elements (alle HTML-Properties des Button wurden der besseren Übersichtlichkeit halber an
374
+ dieser Stelle weggelassen) und ruft das `@partial-block` Partial auf. Der Button Komponente können jetzt, wie nachfolgend gezeigt, Subkomponenten hinzugefügt
375
+ werden.
376
+
377
+ ```handlebars
378
+ {{#> components/button/button _size="lg"}}
379
+ {{> components/button/components/button_label _label="Icon rechts"}}
380
+ {{> components/button/components/button_icon _icon="arrow-right" _iconmap="icons"}}
381
+ {{/components/button/button}}
382
+ ```
383
+
384
+ Auf diese Weise ist es möglich neue Funktionen sehr einfach über Subkomponenten hinzuzufügen.
385
+
386
+ #### Komponenten mit Inline-Partials um zusätzliche Eigenschaften Erweitern
387
+
388
+ Wie im vorigen Abschnitt erläutert, können Basis-Komponenten mit Hilfe des `@partial-block` Partials
389
+ sehr gut mit Hilfe von Subkomponenten erweitert werden. Sollen jedoch einem von einer Komponente gerenderten HTML-Element
390
+ dynamisch weitere Eigenschaften (z.B. über Style-Komponenten bereitgestellte CSS-Klassen) übergeben werden,
391
+ ist dies auf diesem Wege nicht möglich. Hierfür lassen sich in Handlebars sogenannte [`Inline-Partials`](https://handlebarsjs.com/guide/partials.html#inline-partials)
392
+ nutzen. Deren Gebrauch lässt sich am besten mit einem Beispiel erläutern.
393
+
394
+ Für den Abonieren-Button in der Podcast-Player-Komponente wird die Button-Komponente verwendet.
395
+ Diese setzt standardmäßig verschiedenen HTML-Properties im HTML-Button-Element. Der Abonieren-Button
396
+ benötigt darüber hinaus weitere HTML-Properties. Diese sind aber so speziell, dass sie nicht der
397
+ Button-Komponente als weitere Standard-HTML-Properties hinzugefügt wurden. Stattdessen wurde mit einem
398
+ `Inline-Partial` die Möglichkeit geschaffen der Button-Komponente dynamisch beliebige weitere HTML-Properties
399
+ zu übergeben.
400
+
401
+ ```handlebars
402
+ <button class="ds-button" {{#> html_properties}}{{/html_properties}}>
403
+ {{> @partial-block }}
404
+ </button>
405
+ ```
406
+
407
+ Das Beispiel zeigt eine vereinfachte (aus Gründen der Übersichtlichkeit wurden alle anderen HTML-Properties weggelassen)
408
+ Ansicht der Button-Komponente. Innerhalb des HTML-Button-Elements wird hier das Inline-Partial `html_properties`
409
+ aufgerufen. Der Inhalt dieses Partials kann, wie im folgenden Codebeispiel zu sehen, gesetzt werden.
410
+
411
+ ```handlebars
412
+ {{#with this}}
413
+ {{#> components/button/button _size="md" _disableButtonPress=true}}
414
+ {{>components/button/components/button_label _label="Abonnieren" _css="flex-1 truncate mr-2" _type="button"}}
415
+ <span x-cloak x-show="open" class="w-3 h-3">
416
+ {{> components/base/image/icon _icon='arrow-up' _addClass="flex self-center w-3 h-3 fill-white" }}
417
+ </span>
418
+ <span x-show="!open" class="w-3 h-3">
419
+ {{> components/base/image/icon _icon='arrow-down' _addClass="flex self-center w-3 h-3 fill-white" }}
420
+ </span>
421
+ {{/components/button/button}}
422
+ {{#*inline "html_properties"}}
423
+ x-ref="button"
424
+ x-on:click="toggle()"
425
+ :aria-expanded="open"
426
+ :aria-controls="$id('dropdown-button')"
427
+ :class="open ? 'drop-shadow' : ''"
428
+ data-hr-click-tracking='{"settings": [{"type": "uxAction", "clickLabel": "podcastAbonnieren:ButtonClick"}]}'
429
+ {{/inline}}
430
+ {{/with}}
431
+ ```
432
+
433
+ Unterhalb des Aufrufs der Button-Komponente wird hier das Inline-Partial `html_properties` implementiert. Ein Inline-Partial
434
+ muss immer in der Form `{{#*inline NAME_DES_PARTIALS}}` aufgerufen werden. Alle Inhalte die zwischen öffnendem und schließenden
435
+ `inline` stehen, werden in der Komponente in der dieses Inline-Partial aufgerufen wird gerendert.
436
+
437
+ Zu Beachten ist, dass, wie hier im Codebeispiel zu sehen, der Aufruf der Komponente und die Definition des Inline-Partials Von
438
+ einem `with` Block umschlossen werden sollten. Auf diese Weise wird sichergestellt, dass ausschließlich die hier aufgerufene
439
+ Button-Komponente die zusätzlichen Eigenschaften erhält. Würde der `with` Block weggelassen und irgendwo im weitere
440
+ Verlauf der Seite ein weiteres Mal die Button-Komponente aufgerufen, würde auch das HTML-Button-Element in dieser Komponente
441
+ diese zuätzlichen HTML-Properties rendern.
442
+
443
+ <div class="bg-blue-200 !mt-4 p-4">
444
+ <h4 class="!text-stone-950 font-bold">Wichtig</h4>
445
+ <p>
446
+ Sollen beim Aufruf von Subkomponenten in einem Partial-Block oder einem Inline-Partial
447
+ Hash-Parameter (`_NAME_DES_PARAMETERS`) der umliegenden Komponente übergeben werden, muss
448
+ die [hier](#namen-übergebener-komponenten-parameter-in-partial-blocks-und-inline-partials)
449
+ beschriebene Namenskonvention zwingend eingehalten werden. Aufgrund von Unterschieden beim
450
+ Auflösen der Kontexte zwischen Handlebars.js und Handlebars.java können andernfalls die
451
+ Werte der Parameter nicht ausgelesen werden.
452
+ </p>
453
+ </div>
@@ -40,7 +40,7 @@ Erklärung / Hinweise / Best Practices für "Accessible SVG":
40
40
 
41
41
  --}}
42
42
  {{#if _icon}}
43
- <svg class="sb-icon {{~#if _addClass }} {{_addClass}}{{/if}} {{#if _webview}} -webview{{/if}}" role="presentation" aria-hidden="{{defaultIfEmpty _ariaHidden true}}"
43
+ <svg class="sb-icon {{~#if _addClass }} {{_addClass}}{{/if}} {{#if _webview}} -webview{{/if}} {{#>css}}{{/css}}" role="presentation" aria-hidden="{{defaultIfEmpty _ariaHidden true}}"
44
44
  {{# if brand}} data-brand="{{brand}}"{{/if}}
45
45
  {{~#if _iconTitle }} {{changeRandom~}}
46
46
  aria-labelledby="iconTitle--{{getRandom}}"
@@ -1,3 +1,13 @@
1
- {{> components/base/link_open _clickLabelPrefix1=_clickLabelPrefix1 _clickLabelPrefix2=_clickLabelPrefix2 _clickLabelType=_clickLabelType _css=_css _doNavigationTracking=_doNavigationTracking _isAriaHidden=_isAriaHidden _isSelected=_isSelected _selectedCssClass=_selectedCssClass}}
1
+ <a {{#with this.link.webviewUrl}}data-webviewurl="{{this}}"{{/with}} href="{{this.link.url}}{{#if this.hasComments}}#commentList{{/if}}"
2
+ class="sb-link ds-link js-load{{#if _css}} {{_css}}{{/if}} {{#if _isSelected}} {{defaultIfEmpty _selectedCssClass "-current"}}{{/if}}"
3
+ {{#if _doNavigationTracking}}
4
+ data-hr-click-tracking='{"settings": [{"type":"uxAction","secondLevelId": "1","clickLabel":"{{_clickLabelType}}{{#if _clickLabelPrefix1}}::{{_clickLabelPrefix1}}{{/if}}::{{_clickLabelPrefix2}}-Link geklickt"}]}'
5
+ {{/if}}
6
+ {{#if this.isFileDownload}}
7
+ {{#with this.trackingData}}data-hr-click-tracking='{"settings": [{"type":"download","secondLevelId": "{{this.link.secondLevelId}}","clickLabel": "{{this.link.pageName}}"}]}'{{/with}}
8
+ {{/if}}
9
+ {{#if this.link.isTargetBlank}} target="_blank" rel="noopener{{#if this.link.hasNoReferrerFlag}} noreferrer{{/if}}"{{/if}}
10
+ {{#if _isAriaHidden}} aria-hidden="true" tabindex="-1"{{/if}}
11
+ >
2
12
  {{~ decorator_body ~}}
3
13
  </a>
@@ -1,13 +1,12 @@
1
- {{#with this.link}}
2
- <a {{#with this.webviewUrl}}data-webviewurl="{{this}}"{{/with}} href="{{this.url}}{{#if ../this.hasComments}}#commentList{{/if}}"
3
- class="sb-link js-load{{#if ../_css}} {{../_css}}{{/if}} {{#if ../_isSelected}} {{defaultIfEmpty ../_selectedCssClass "-current"}}{{/if}}"
4
- {{#if ../_doNavigationTracking}}
5
- data-hr-click-tracking='{"settings": [{"type":"uxAction","secondLevelId": "1","clickLabel":"{{../_clickLabelType}}{{#if ../_clickLabelPrefix1}}::{{../_clickLabelPrefix1}}{{/if}}::{{../_clickLabelPrefix2}}-Link geklickt"}]}'
6
- {{/if}}
7
- {{#if ../this.isFileDownload}}
8
- {{#with ../this.trackingData}}data-hr-click-tracking='{"settings": [{"type":"download","secondLevelId": "{{this.secondLevelId}}","clickLabel": "{{this.pageName}}"}]}'{{/with}}
9
- {{/if}}
10
- {{#if this.isTargetBlank}} target="_blank" rel="noopener{{#if this.hasNoReferrerFlag}} noreferrer{{/if}}"{{/if}}
11
- {{#if ../_isAriaHidden}} aria-hidden="true" tabindex="-1"{{/if}}
12
- >
13
- {{/with}}
1
+ <a {{#with this.link.webviewUrl}}data-webviewurl="{{this}}"{{/with}} href="{{this.link.url}}{{#if this.hasComments}}#commentList{{/if}}"
2
+ class="sb-link ds-link js-load {{#if _isSelected}} {{defaultIfEmpty _selectedCssClass "-current"}}{{/if}}{{#if _css}} {{_css}}{{/if}} {{#> css}}{{/css}}"
3
+ {{#if _doNavigationTracking}}
4
+ data-hr-click-tracking='{"settings": [{"type":"uxAction","secondLevelId": "1","clickLabel":"{{_clickLabelType}}{{#if _clickLabelPrefix1}}::{{_clickLabelPrefix1}}{{/if}}::{{_clickLabelPrefix2}}-Link geklickt"}]}'
5
+ {{/if}}
6
+ {{#if this.isFileDownload}}
7
+ {{#with this.trackingData}}data-hr-click-tracking='{"settings": [{"type":"download","secondLevelId": "{{this.link.secondLevelId}}","clickLabel": "{{this.link.pageName}}"}]}'{{/with}}
8
+ {{/if}}
9
+ {{#if this.link.isTargetBlank}} target="_blank" rel="noopener{{#if this.link.hasNoReferrerFlag}} noreferrer{{/if}}"{{/if}}
10
+ {{#if _isAriaHidden}} aria-hidden="true" tabindex="-1"{{/if}}
11
+ >
12
+
@@ -0,0 +1,14 @@
1
+ <a {{#with this.link.webviewUrl}}data-webviewurl="{{this}}"{{/with}} href="{{this.link.url}}{{#if this.hasComments}}#commentList{{/if}}"
2
+ class="sb-link ds-link js-load {{#if _isSelected}} {{defaultIfEmpty _selectedCssClass "-current"}}{{/if}}{{#if _css}} {{_css}}{{/if}} {{#> css}}{{/css}}"
3
+ {{#if _doNavigationTracking}}
4
+ data-hr-click-tracking='{"settings": [{"type":"uxAction","secondLevelId": "1","clickLabel":"{{_clickLabelType}}{{#if _clickLabelPrefix1}}::{{_clickLabelPrefix1}}{{/if}}::{{_clickLabelPrefix2}}-Link geklickt"}]}'
5
+ {{/if}}
6
+ {{#if this.isFileDownload}}
7
+ {{#with this.trackingData}}data-hr-click-tracking='{"settings": [{"type":"download","secondLevelId": "{{this.link.secondLevelId}}","clickLabel": "{{this.link.pageName}}"}]}'{{/with}}
8
+ {{/if}}
9
+ {{#if this.link.isTargetBlank}} target="_blank" rel="noopener{{#if this.link.hasNoReferrerFlag}} noreferrer{{/if}}"{{/if}}
10
+ {{#if _isAriaHidden}} aria-hidden="true" tabindex="-1"{{/if}}
11
+ >
12
+
13
+ {{> @partial-block }}
14
+ </a>