hr-design-system-handlebars 1.11.9 → 1.11.11

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 (129) hide show
  1. package/.babelrc.json +14 -0
  2. package/.storybook/main.js +34 -52
  3. package/.storybook/preview-head.html +4 -1
  4. package/.storybook/preview.js +25 -35
  5. package/CHANGELOG.md +30 -0
  6. package/dist/assets/index.css +11 -3
  7. package/dist/views/components/base/load_dynamic.hbs +3 -0
  8. package/dist/views/components/teaser/ticker/teaser_ticker.hbs +29 -0
  9. package/package.json +20 -13
  10. package/src/assets/css/custom-utilities.css +3 -3
  11. package/src/assets/fixtures/teaser/teaser_ticker.inc.json +121 -0
  12. package/src/assets/fixtures/teaser/ticker_teaser_standard_100.json +25 -0
  13. package/src/assets/images/sportschau-image-5708_v-16to9.jpg +0 -0
  14. package/src/assets/images/sportschau-image-5708_v-16to9__medium.jpg +0 -0
  15. package/src/assets/images/sportschau-image-5708_v-16to9__retina.jpg +0 -0
  16. package/src/assets/images/sportschau-image-5708_v-16to9__small.jpg +0 -0
  17. package/src/assets/images/sportschau-image-5708_v-1to1.jpg +0 -0
  18. package/src/assets/images/sportschau-image-5708_v-1to1__large.jpg +0 -0
  19. package/src/assets/images/sportschau-image-5708_v-1to1__medium.jpg +0 -0
  20. package/src/assets/images/sportschau-image-5708_v-1to1__small.jpg +0 -0
  21. package/src/stories/BrandColors.data.js +42 -0
  22. package/src/stories/BrandColors.mdx +25 -0
  23. package/src/stories/{Colors.stories.mdx → Colors.data.js} +2 -18
  24. package/src/stories/Colors.mdx +19 -0
  25. package/src/stories/Example.mdx +56 -0
  26. package/src/stories/Example.stories.js +57 -0
  27. package/src/stories/{Fixtures.stories.mdx → Fixtures.mdx} +3 -5
  28. package/src/stories/{InstallAndUpdate.stories.mdx → InstallAndUpdate.mdx} +0 -2
  29. package/src/stories/Introduction.mdx +3 -0
  30. package/src/stories/{SvgOptimization.stories.mdx → SvgOptimization.mdx} +0 -2
  31. package/src/stories/{Typography.stories.mdx → Typography.mdx} +13 -14
  32. package/src/stories/{conventions-and-datastructure.stories.mdx → conventions-and-datastructure.mdx} +7 -9
  33. package/src/stories/views/components/Button.mdx +30 -0
  34. package/src/stories/views/components/Button_.stories.js +77 -0
  35. package/src/stories/views/components/base/load_dynamic.hbs +3 -0
  36. package/src/stories/views/components/event/calendar/{event_calendar_components.stories.mdx → event_calendar_components.mdx} +31 -87
  37. package/src/stories/views/components/event/calendar/event_calendar_components.stories.js +129 -0
  38. package/src/stories/views/components/geoTag/geoTag.mdx +32 -0
  39. package/src/stories/views/components/geoTag/geoTag.stories.js +35 -0
  40. package/src/stories/views/components/grid/grid.mdx +210 -0
  41. package/src/stories/views/components/grid/grid.stories.js +148 -0
  42. package/src/stories/views/components/label/label.mdx +54 -0
  43. package/src/stories/views/components/label/label.stories.js +183 -0
  44. package/src/stories/views/components/page/page.data.js +17 -0
  45. package/src/stories/views/components/page/page.mdx +110 -0
  46. package/src/stories/views/components/page/page.stories.js +50 -0
  47. package/src/stories/views/components/page/page_pagination.data.js +8 -0
  48. package/src/stories/views/components/page/page_pagination.mdx +8 -0
  49. package/src/stories/views/components/page/page_pagination.stories.js +34 -0
  50. package/src/stories/views/components/page/page_player.mdx +21 -0
  51. package/src/stories/views/components/page/page_player.stories.js +34 -0
  52. package/src/stories/views/components/site_header/{header.stories.mdx → header.mdx} +218 -152
  53. package/src/stories/views/components/site_header/header.stories.js +62 -0
  54. package/src/stories/views/components/teaser/cluster/teaser_cluster.mdx +32 -0
  55. package/src/stories/views/components/teaser/cluster/teaser_cluster.stories.js +146 -0
  56. package/src/stories/views/components/teaser/components/teaser_byline.mdx +97 -0
  57. package/src/stories/views/components/teaser/components/teaser_byline.stories.js +30 -0
  58. package/src/stories/views/components/teaser/components/teaser_heading.mdx +96 -0
  59. package/src/stories/views/components/teaser/components/teaser_heading.stories.js +158 -0
  60. package/src/stories/views/components/teaser/components/teaser_text.mdx +36 -0
  61. package/src/stories/views/components/teaser/components/teaser_text.stories.js +74 -0
  62. package/src/stories/views/components/teaser/components/teaser_title.mdx +42 -0
  63. package/src/stories/views/components/teaser/components/teaser_title.stories.js +85 -0
  64. package/src/stories/views/components/teaser/components/teaser_topline.mdx +29 -0
  65. package/src/stories/views/components/teaser/components/teaser_topline.stories.js +27 -0
  66. package/src/stories/views/components/teaser/content_nav/teaser_content_nav.mdx +54 -0
  67. package/src/stories/views/components/teaser/content_nav/{teaser_content_nav.stories.mdx → teaser_content_nav.stories.js} +80 -61
  68. package/src/stories/views/components/teaser/fixtures/ticker_teaser_standard_100.json +1 -0
  69. package/src/stories/views/components/teaser/group_teaser/group.mdx +18 -0
  70. package/src/stories/views/components/teaser/group_teaser/group.stories.js +85 -0
  71. package/src/stories/views/components/teaser/podcast/podcast.mdx +11 -0
  72. package/src/stories/views/components/teaser/podcast/{podcast.stories.mdx → podcast.stories.js} +50 -39
  73. package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.mdx +10 -0
  74. package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.stories.js +51 -0
  75. package/src/stories/views/components/teaser/tabbox/teaser_tabbox.mdx +10 -0
  76. package/src/stories/views/components/teaser/tabbox/teaser_tabbox.stories.js +40 -0
  77. package/src/stories/views/components/teaser/teaser_alternativ.mdx +76 -0
  78. package/src/stories/views/components/teaser/teaser_alternativ.stories.js +126 -0
  79. package/src/stories/views/components/teaser/teaser_alternativ_av.mdx +75 -0
  80. package/src/stories/views/components/teaser/teaser_alternativ_av.stories.js +111 -0
  81. package/src/stories/views/components/teaser/teaser_event_calendar.mdx +57 -0
  82. package/src/stories/views/components/teaser/teaser_event_calendar.stories.js +92 -0
  83. package/src/stories/views/components/teaser/teaser_indextext.mdx +35 -0
  84. package/src/stories/views/components/teaser/teaser_indextext.stories.js +85 -0
  85. package/src/stories/views/components/teaser/teaser_logic/teaser_logic.mdx +23 -0
  86. package/src/stories/views/components/teaser/teaser_logic/teaser_logic.stories.js +36 -0
  87. package/src/stories/views/components/teaser/teaser_poster.mdx +95 -0
  88. package/src/stories/views/components/teaser/teaser_poster.stories.js +67 -0
  89. package/src/stories/views/components/teaser/teaser_stage.mdx +15 -0
  90. package/src/stories/views/components/teaser/teaser_stage.stories.js +60 -0
  91. package/src/stories/views/components/teaser/teaser_standard.mdx +129 -0
  92. package/src/stories/views/components/teaser/teaser_standard.stories.js +166 -0
  93. package/src/stories/views/components/teaser/teaser_standard_av.mdx +38 -0
  94. package/src/stories/views/components/teaser/teaser_standard_av.stories.js +117 -0
  95. package/src/stories/views/components/teaser/teaser_standard_event.mdx +103 -0
  96. package/src/stories/views/components/teaser/teaser_standard_event.stories.js +119 -0
  97. package/src/stories/views/components/teaser/ticker/teaser_ticker.hbs +29 -0
  98. package/src/stories/views/components/teaser/ticker/teaser_ticker.mdx +10 -0
  99. package/src/stories/views/components/teaser/ticker/teaser_ticker.stories.js +34 -0
  100. package/.storybook/withThemeDecorator.js +0 -12
  101. package/src/stories/BrandColors.stories.mdx +0 -39
  102. package/src/stories/Example.stories.mdx +0 -93
  103. package/src/stories/Introduction.stories.mdx +0 -211
  104. package/src/stories/views/components/Button.stories.mdx +0 -82
  105. package/src/stories/views/components/geoTag/geoTag.stories.mdx +0 -61
  106. package/src/stories/views/components/grid/grid.stories.mdx +0 -275
  107. package/src/stories/views/components/label/label.stories.mdx +0 -200
  108. package/src/stories/views/components/page/page.stories.mdx +0 -144
  109. package/src/stories/views/components/page/page_pagination.stories.mdx +0 -36
  110. package/src/stories/views/components/page/page_player.stories.mdx +0 -43
  111. package/src/stories/views/components/teaser/cluster/teaser_cluster.stories.mdx +0 -97
  112. package/src/stories/views/components/teaser/components/teaser_byline.stories.mdx +0 -78
  113. package/src/stories/views/components/teaser/components/teaser_heading.stories.mdx +0 -219
  114. package/src/stories/views/components/teaser/components/teaser_text.stories.mdx +0 -94
  115. package/src/stories/views/components/teaser/components/teaser_title.stories.mdx +0 -124
  116. package/src/stories/views/components/teaser/components/teaser_topline.stories.mdx +0 -63
  117. package/src/stories/views/components/teaser/group_teaser/group.stories.mdx +0 -85
  118. package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.stories.mdx +0 -52
  119. package/src/stories/views/components/teaser/tabbox/teaser_tabbox.stories.mdx +0 -39
  120. package/src/stories/views/components/teaser/teaser_alternativ.stories.mdx +0 -163
  121. package/src/stories/views/components/teaser/teaser_alternativ_av.stories.mdx +0 -142
  122. package/src/stories/views/components/teaser/teaser_event_calendar.stories.mdx +0 -131
  123. package/src/stories/views/components/teaser/teaser_indextext.stories.mdx +0 -111
  124. package/src/stories/views/components/teaser/teaser_logic/teaser_logic.stories.mdx +0 -39
  125. package/src/stories/views/components/teaser/teaser_poster.stories.mdx +0 -130
  126. package/src/stories/views/components/teaser/teaser_stage.stories.mdx +0 -53
  127. package/src/stories/views/components/teaser/teaser_standard.stories.mdx +0 -170
  128. package/src/stories/views/components/teaser/teaser_standard_av.stories.mdx +0 -95
  129. package/src/stories/views/components/teaser/teaser_standard_event.stories.mdx +0 -150
@@ -0,0 +1,85 @@
1
+ import teaser from './teaser_indextext.hbs'
2
+ import dataTeserIndextext100Accented from './fixtures/teaser_indextext_100_accented.json'
3
+ import dataTeserIndextext100Boxed from './fixtures/teaser_indextext_100_boxed.json'
4
+ import dataTeserIndextext100Highlighted from './fixtures/teaser_indextext_100_highlighted.json'
5
+ import dataTeserIndextext50Accented from './fixtures/teaser_indextext_50_accented.json'
6
+
7
+ const Template = (args, { globals: { customConditionalToolbar } }) => {
8
+ // You can either use a function to create DOM elements or use a plain html string!
9
+ // return `<div>${label}</div>`;
10
+ let brand =
11
+ undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
12
+ return teaser({ brand, ...args })
13
+ }
14
+
15
+ export default {
16
+ title: 'Komponenten/Teaser/Indextext',
17
+
18
+ parameters: {
19
+ layout: 'fullscreen',
20
+ },
21
+
22
+ argTypes: {
23
+ teaserSize: {
24
+ control: {
25
+ type: 'select',
26
+ options: ['50', '100'],
27
+ },
28
+
29
+ description: 'Teaser Größe',
30
+
31
+ table: {
32
+ defaultValue: {
33
+ summary: '100',
34
+ },
35
+ },
36
+ },
37
+
38
+ teasertype: {
39
+ control: {
40
+ type: 'select',
41
+ options: ['accented', 'boxed', 'highlighted'],
42
+ },
43
+
44
+ description: 'Teaser Typ',
45
+
46
+ table: {
47
+ defaultValue: {
48
+ summary: 'accented',
49
+ },
50
+ },
51
+ },
52
+ },
53
+
54
+ decorators: [
55
+ (Story) => {
56
+ return `<div class="grid grid-page"><div class="grid grid-cols-12 py-6 col-full gap-x-6 gap-y-6 sm:px-9.5 sm:col-main">
57
+ ${Story()}
58
+ </div></div>`
59
+ },
60
+ ],
61
+ }
62
+
63
+ export const TextMitHintergrund100 = {
64
+ render: Template.bind({}),
65
+ name: 'Text mit Hintergrund 100',
66
+ args: dataTeserIndextext100Accented.logicItem.includeModel,
67
+ }
68
+
69
+ export const TextMitBox100 = {
70
+ render: Template.bind({}),
71
+ name: 'Text mit Box 100',
72
+ args: dataTeserIndextext100Boxed.logicItem.includeModel,
73
+ }
74
+
75
+ export const HintergrundOrange100 = {
76
+ render: Template.bind({}),
77
+ name: 'Hintergrund orange 100',
78
+ args: dataTeserIndextext100Highlighted.logicItem.includeModel,
79
+ }
80
+
81
+ export const TextMitHintergrund50 = {
82
+ render: Template.bind({}),
83
+ name: 'Text mit Hintergrund 50',
84
+ args: dataTeserIndextext50Accented.logicItem.includeModel,
85
+ }
@@ -0,0 +1,23 @@
1
+ import { ArgsTable, Meta, Story, Canvas, Preview } from '@storybook/blocks'
2
+ import * as TeaserLogicStories from './teaser_logic.stories';
3
+
4
+ import teaser from './teaser_logic.hbs'
5
+ import index_site from '../fixtures/teaser_index.json'
6
+
7
+ <Meta of={TeaserLogicStories} />
8
+
9
+ export const Template = (args, { globals: { customConditionalToolbar } }) => {
10
+ // You can either use a function to create DOM elements or use a plain html string!
11
+ // return `<div>${label}</div>`;
12
+ let brand =
13
+ undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
14
+ return teaser({ brand, ...args })
15
+ }
16
+
17
+ # Header
18
+
19
+ Ein toller Einleitungstext für unsere `Teaser` Komponente:
20
+
21
+ <Canvas withToolbar>
22
+ <Story of={TeaserLogicStories.Logic} />
23
+ </Canvas>
@@ -0,0 +1,36 @@
1
+ import teaser from './teaser_logic.hbs'
2
+ import index_site from '../fixtures/teaser_index.json'
3
+
4
+ const Template = (args, { globals: { customConditionalToolbar } }) => {
5
+ // You can either use a function to create DOM elements or use a plain html string!
6
+ // return `<div>${label}</div>`;
7
+ let brand =
8
+ undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
9
+ return teaser({ brand, ...args })
10
+ }
11
+
12
+ export default {
13
+ title: 'Komponenten/Teaser/Logic',
14
+
15
+ parameters: {
16
+ layout: 'fullscreen',
17
+ },
18
+
19
+ argTypes: {},
20
+
21
+ decorators: [
22
+ (Story) => {
23
+ return `<div class="grid bg-white grid-page">
24
+ <div class="grid grid-cols-12 py-6 bg-white sm:px-9.5 col-full sm:col-main gap-x-6 gap-y-6">
25
+ ${Story()}
26
+ </div>
27
+ </div>`
28
+ },
29
+ ],
30
+ }
31
+
32
+ export const Logic = {
33
+ render: Template.bind({}),
34
+ name: 'logic',
35
+ args: index_site,
36
+ }
@@ -0,0 +1,95 @@
1
+ import { ArgsTable, Meta, Story, Canvas, Preview } from '@storybook/blocks'
2
+ import * as TeaserPosterStories from './teaser_poster.stories'
3
+
4
+ <Meta of={TeaserPosterStories} />
5
+
6
+ # Poster-Teaser
7
+
8
+ ## Beschreibung
9
+
10
+ Der Poster-Teaser besteht aus 3 übereinanderliegenden Ebenen.
11
+
12
+ Unterste-Ebene: <b>Bild (1:1)</b><br />
13
+ Mittlere Ebene: <b>Dachzeile und Titel</b> + <b>Farbverlauf</b> von schwarz nach transparent<br />
14
+ Oberste Ebene (verlinkt): <b>Zusatztext</b> ("zum Artikel" o.ä.)<br />
15
+
16
+ Alle Ebenen erstrecken sich über die komplette Größe des 1:1-Bilds.
17
+
18
+ Alle enthaltenen Inhalte sind aria-hidden. Für screenreader wurde ein extra span eingebaut mit class="sr-only".<br />
19
+ Inhalt dieses spans: Zusatztext + ": " + Titel
20
+
21
+ Der Poster-Teaser soll nur als 50%- bzw. 33%-Teaser verwendet werden. Diese Restriktion muss cms-seitig implementiert werden.
22
+
23
+ ## Sub-Komponenten
24
+
25
+ Die Poster-Teaser-Komponente inkludiert folgende Komponenten:
26
+
27
+ <ul>
28
+ <li>
29
+ components/base/image/<b>responsive\_image</b>
30
+ </li>
31
+
32
+ {' '}
33
+
34
+ <li>
35
+ components/base/<b>link</b>
36
+ </li>
37
+
38
+ <li>
39
+ components/teaser/components/<b>teaser\_heading</b>
40
+ </li>
41
+ </ul>
42
+
43
+ ## Props
44
+
45
+ Die Poster-Teaser-Komponente benötigt die folgenden json-Daten (enthalten im Teaser-Json im Objekt <b>logicItem.includeModel</b>):
46
+
47
+ <ul>
48
+ <li>
49
+ <b>topline</b>
50
+ </li>
51
+
52
+ <li>
53
+ <b>title</b>
54
+ </li>
55
+
56
+ <li>
57
+ <b>teaserSize</b>
58
+ </li>
59
+
60
+ <li>
61
+ <b>teaserType</b>
62
+ </li>
63
+ <li>
64
+ <b>teaserImage</b>
65
+ </li>
66
+ <li>
67
+ <b>content.imageVariant</b>
68
+ </li>
69
+ <li>
70
+ <b>isSerifHeading</b>
71
+ </li>
72
+ <li>
73
+ <b>link.readMoreText.readMoreLong</b>
74
+ </li>
75
+ </ul>
76
+
77
+ ## Verwendung
78
+
79
+ Die Poster-Teaser-Komponente wird in handlebars wie folgt eingebaut:
80
+
81
+ ```html
82
+ {{> components/teaser/teaser_poster}}
83
+ ```
84
+
85
+ <Canvas withToolbar>
86
+ <Story of={TeaserPosterStories.Poster50} />
87
+
88
+ {' '}
89
+
90
+ <Story of={TeaserPosterStories.Poster33} />
91
+
92
+ <Story of={TeaserPosterStories.Poster33MitLabel} />
93
+ </Canvas>
94
+
95
+ <ArgsTable story="Poster 50" />
@@ -0,0 +1,67 @@
1
+ import teaser from './teaser_poster.hbs'
2
+ import teserPosterLg from './fixtures/teaser_poster_lg.json'
3
+ import teserPosterMd from './fixtures/teaser_poster_md.json'
4
+ import teserPosterMdLabel from './fixtures/teaser_poster_md_label.json'
5
+
6
+ const Template = (args, { globals: { customConditionalToolbar } }) => {
7
+ // You can either use a function to create DOM elements or use a plain html string!
8
+ // return `<div>${label}</div>`;
9
+ let brand =
10
+ undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
11
+ return teaser({ brand, ...args })
12
+ }
13
+
14
+ export default {
15
+ title: 'Komponenten/Teaser/Poster',
16
+
17
+ parameters: {
18
+ layout: 'fullscreen',
19
+
20
+ chromatic: {
21
+ diffThreshold: 0.5,
22
+ },
23
+ },
24
+
25
+ argTypes: {
26
+ teaserSize: {
27
+ control: {
28
+ type: 'select',
29
+ options: ['50', '33'],
30
+ },
31
+
32
+ description: 'Teaser Größe',
33
+
34
+ table: {
35
+ defaultValue: {
36
+ summary: '50',
37
+ },
38
+ },
39
+ },
40
+ },
41
+
42
+ decorators: [
43
+ (Story) => {
44
+ return `<div class="grid grid-page"><div class="grid grid-cols-12 py-6 col-full gap-x-6 gap-y-6 sm:px-9.5 sm:col-main">
45
+ ${Story()}
46
+ </div></div>`
47
+ },
48
+ ],
49
+ }
50
+
51
+ export const Poster50 = {
52
+ render: Template.bind({}),
53
+ name: 'Poster 50',
54
+ args: teserPosterLg.logicItem.includeModel,
55
+ }
56
+
57
+ export const Poster33 = {
58
+ render: Template.bind({}),
59
+ name: 'Poster 33',
60
+ args: teserPosterMd.logicItem.includeModel,
61
+ }
62
+
63
+ export const Poster33MitLabel = {
64
+ render: Template.bind({}),
65
+ name: 'Poster 33 mit Label',
66
+ args: teserPosterMdLabel.logicItem.includeModel,
67
+ }
@@ -0,0 +1,15 @@
1
+ import { ArgsTable, Meta, Story, Canvas, Preview } from '@storybook/blocks'
2
+ import * as TeaserStageStories from './teaser_stage.stories'
3
+
4
+ <Meta of={TeaserStageStories} />
5
+
6
+ # Stage-Teaser
7
+
8
+ ## Beschreibung
9
+
10
+ <Canvas withToolbar>
11
+ <Story of={TeaserStageStories.StageTeaser} />
12
+ <Story of={TeaserStageStories.StageTeaserWide} />
13
+ <Story of={TeaserStageStories.StageTeaserWithEvent} />
14
+ <Story of={TeaserStageStories.StageTeaserProgram} />
15
+ </Canvas>
@@ -0,0 +1,60 @@
1
+ import teaser from './teaser_stage.hbs'
2
+ import stageTeaserData from './fixtures/stage_teaser.json'
3
+ import stageTeaserWideData from './fixtures/stage_teaser_wide.json'
4
+ import stageTeaserDataWithEventtag from './fixtures/stage_teaser_eventtag.json'
5
+ import stageTeaserDataForProgram from './fixtures/stage_teaser_program.json'
6
+
7
+ const Template = (args, { globals: { customConditionalToolbar } }) => {
8
+ // You can either use a function to create DOM elements or use a plain html string!
9
+ // return `<div>${label}</div>`;
10
+ let brand =
11
+ undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
12
+ return teaser({ brand, ...args })
13
+ }
14
+
15
+ export default {
16
+ title: 'Komponenten/Teaser/Stage',
17
+
18
+ parameters: {
19
+ layout: 'fullscreen',
20
+
21
+ chromatic: {
22
+ viewports: [360, 768, 1024],
23
+ diffThreshold: 0.5,
24
+ },
25
+ },
26
+
27
+ argTypes: {},
28
+
29
+ decorators: [
30
+ (Story) => {
31
+ return `<div class="grid grid-page"><div class="col-full gap-x-6 gap-y-6">
32
+ ${Story()}
33
+ </div></div>`
34
+ },
35
+ ],
36
+ }
37
+
38
+ export const StageTeaser = {
39
+ render: Template.bind({}),
40
+ name: 'Stage Teaser',
41
+ args: stageTeaserData,
42
+ }
43
+
44
+ export const StageTeaserWide = {
45
+ render: Template.bind({}),
46
+ name: 'Stage Teaser Wide',
47
+ args: stageTeaserWideData,
48
+ }
49
+
50
+ export const StageTeaserWithEvent = {
51
+ render: Template.bind({}),
52
+ name: 'Stage Teaser with Event',
53
+ args: stageTeaserDataWithEventtag,
54
+ }
55
+
56
+ export const StageTeaserProgram = {
57
+ render: Template.bind({}),
58
+ name: 'Stage Teaser Program',
59
+ args: stageTeaserDataForProgram,
60
+ }
@@ -0,0 +1,129 @@
1
+ import { ArgsTable, Meta, Story, Canvas } from '@storybook/blocks'
2
+
3
+ import * as TeaserStandardStories from './teaser_standard.stories'
4
+
5
+ <Meta of={TeaserStandardStories} />
6
+
7
+ # Standard-Teaser
8
+
9
+ ## Beschreibung
10
+
11
+ Der Standard-Teaser besteht aus 2 Hauptelemente: <b>Bild</b> und <b>Text</b> (Label, Dachzeile, Titel, Teasertext, Zusatzinformationen)
12
+
13
+ <b>Standard Hero:</b> <br />
14
+ Desktop = Text unter dem Bild <br />
15
+ Mobile = Text unter dem Bild <b>ohne</b> Teasertext <br />
16
+
17
+ <b>Standard 100%, 50%, 33%:</b> <br />
18
+ Desktop = Text unter dem Bild <br />
19
+ Mobile = Text unter dem Bild ohne Teasertext <br />
20
+
21
+ <b>Standard 25%:</b> <br />
22
+ Desktop = Text unter dem Bild ohne Teasertext <br />
23
+ Mobile = Bild(1x1) neben Text ohne Teasertext <br />
24
+
25
+ ## Sub-Komponenten
26
+
27
+ Die Standard-Teaser-Komponente inkludiert folgende Komponenten:
28
+
29
+ <ul>
30
+ <li>
31
+ components/teaser/components/<b>teaser\_lead</b>
32
+ </li>
33
+
34
+ {' '}
35
+
36
+ <li>
37
+ components/base/<b>link</b>
38
+ </li>
39
+
40
+ {' '}
41
+
42
+ <li>
43
+ components/teaser/components/<b>teaser\_heading</b>
44
+ </li>
45
+
46
+ {' '}
47
+
48
+ <li>
49
+ components/teaser/components/<b>teaser\_text</b>
50
+ </li>
51
+
52
+ <li>
53
+ components/teaser/components/<b>teaser\_byline</b>
54
+ </li>
55
+ </ul>
56
+
57
+ ## Verwendung
58
+
59
+ Die Standard-Teaser-Komponente wird in handlebars wie folgt eingebaut:
60
+
61
+ ```html
62
+ {{> components/teaser/teaser_standard}}
63
+ ```
64
+
65
+ <Canvas withToolbar>
66
+ <Story of={TeaserStandardStories.StandardHero} />
67
+
68
+ {' '}
69
+
70
+ <Story of={TeaserStandardStories.StandardHeroMitLabel} />
71
+
72
+ {' '}
73
+
74
+ <Story of={TeaserStandardStories.StandardHeroMitKommentaren} />
75
+
76
+ {' '}
77
+
78
+ <Story of={TeaserStandardStories.StandardHeroMitExternemLink} />
79
+
80
+ {' '}
81
+
82
+ <Story of={TeaserStandardStories.Standard100} />
83
+
84
+ {' '}
85
+
86
+ <Story of={TeaserStandardStories.Standard100MitExternemLink} />
87
+
88
+ {' '}
89
+
90
+ <Story of={TeaserStandardStories.Standard100MitSendungsdokument} />
91
+
92
+ {' '}
93
+
94
+ <Story of={TeaserStandardStories.Standard50} />
95
+
96
+ {' '}
97
+
98
+ <Story of={TeaserStandardStories.Standard50OhneTeaserbild} />
99
+
100
+ {' '}
101
+
102
+ <Story of={TeaserStandardStories.Standard50MitExternemLink} />
103
+
104
+ {' '}
105
+
106
+ <Story of={TeaserStandardStories.Standard33} />
107
+
108
+ {' '}
109
+
110
+ <Story of={TeaserStandardStories.Standard33MitExternemLink} />
111
+
112
+ {' '}
113
+
114
+ <Story of={TeaserStandardStories.Standard25} />
115
+
116
+ {' '}
117
+
118
+ <Story of={TeaserStandardStories.Standard25OhneTeaserbild} />
119
+
120
+ {' '}
121
+
122
+ <Story of={TeaserStandardStories.Standard25MitExternemLink} />
123
+
124
+ {' '}
125
+
126
+ <Story of={TeaserStandardStories.Standard100MitDownload} />
127
+
128
+ <Story of={TeaserStandardStories.Standard33MitLangerOrtsmarke} />
129
+ </Canvas>
@@ -0,0 +1,166 @@
1
+ import teaser from './teaser_standard.hbs'
2
+ import teaserHeroSerifWithLabel from './fixtures/teaser_standard_hero_serif_label.json'
3
+ import teaserHeroSerifWithComments from './fixtures/teaser_standard_hero_serif_comments.json'
4
+ import teaserHeroLink from './fixtures/teaser_standard_hero_serif_link.json'
5
+ import teaserHeroSerif from './fixtures/teaser_standard_hero_serif.json'
6
+ import teaser100Serif from './fixtures/teaser_standard_100_serif.json'
7
+ import teaser50Serif from './fixtures/teaser_standard_50_serif.json'
8
+ import teaser50SerifWithoutTeaserImage from './fixtures/teaser_standard_without_teaserimage_50_serif.json'
9
+ import teaser33Serif from './fixtures/teaser_standard_33_serif.json'
10
+ import teaser25Serif from './fixtures/teaser_standard_25_serif.json'
11
+ import teaser25SerifWithoutTeaserimage from './fixtures/teaser_standard_without_teaserimage_25_serif.json'
12
+ import teaser100Download from './fixtures/teaser_standard_100_serif_download.json'
13
+ import teaser100Link from './fixtures/teaser_standard_100_serif_link.json'
14
+ import teaser100Program from './fixtures/teaser_standard_100_serif_program.json'
15
+ import teaser50Link from './fixtures/teaser_standard_50_serif_link.json'
16
+ import teaser33Link from './fixtures/teaser_standard_33_serif_link.json'
17
+ import teaser25Link from './fixtures/teaser_standard_25_serif_link.json'
18
+ import teaser33LongGeotag from './fixtures/teaser_standard_33_long_geotag.json'
19
+
20
+ const Template = (args, { globals: { customConditionalToolbar } }) => {
21
+ // You can either use a function to create DOM elements or use a plain html string!
22
+ // return `<div>${label}</div>`;
23
+ let brand =
24
+ undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
25
+ return teaser({ brand, ...args })
26
+ }
27
+
28
+ export default {
29
+ title: 'Komponenten/Teaser/Standard',
30
+
31
+ parameters: {
32
+ layout: 'fullscreen',
33
+
34
+ chromatic: {
35
+ viewports: [360, 1024],
36
+ diffThreshold: 0.5,
37
+ },
38
+ },
39
+
40
+ argTypes: {
41
+ teaserSize: {
42
+ control: {
43
+ type: 'select',
44
+ options: ['hero', '100', '50', '33', '25'],
45
+ },
46
+
47
+ description: 'Teaser Größe',
48
+
49
+ table: {
50
+ defaultValue: {
51
+ summary: 'hero',
52
+ },
53
+ },
54
+ },
55
+ },
56
+
57
+ decorators: [
58
+ (Story) => {
59
+ return `<div class="grid grid-page"><div class="grid grid-cols-12 py-6 col-full gap-x-6 gap-y-6 sm:px-9.5 sm:col-main">
60
+ ${Story()}
61
+ </div></div>`
62
+ },
63
+ ],
64
+ }
65
+
66
+ export const StandardHero = {
67
+ render: Template.bind({}),
68
+ name: 'Standard Hero',
69
+ args: teaserHeroSerif.logicItem.includeModel,
70
+ }
71
+
72
+ export const StandardHeroMitLabel = {
73
+ render: Template.bind({}),
74
+ name: 'Standard Hero mit Label',
75
+ args: teaserHeroSerifWithLabel.logicItem.includeModel,
76
+ }
77
+
78
+ export const StandardHeroMitKommentaren = {
79
+ render: Template.bind({}),
80
+ name: 'Standard Hero Mit Kommentaren',
81
+ args: teaserHeroSerifWithComments.logicItem.includeModel,
82
+ }
83
+
84
+ export const StandardHeroMitExternemLink = {
85
+ render: Template.bind({}),
86
+ name: 'Standard Hero mit externem Link',
87
+ args: teaserHeroLink.logicItem.includeModel,
88
+ }
89
+
90
+ export const Standard100 = {
91
+ render: Template.bind({}),
92
+ name: 'Standard 100',
93
+ args: teaser100Serif.logicItem.includeModel,
94
+ }
95
+
96
+ export const Standard100MitExternemLink = {
97
+ render: Template.bind({}),
98
+ name: 'Standard 100 mit externem Link',
99
+ args: teaser100Link.logicItem.includeModel,
100
+ }
101
+
102
+ export const Standard100MitSendungsdokument = {
103
+ render: Template.bind({}),
104
+ name: 'Standard 100 mit Sendungsdokument',
105
+ args: teaser100Program.logicItem.includeModel,
106
+ }
107
+
108
+ export const Standard50 = {
109
+ render: Template.bind({}),
110
+ name: 'Standard 50',
111
+ args: teaser50Serif.logicItem.includeModel,
112
+ }
113
+
114
+ export const Standard50OhneTeaserbild = {
115
+ render: Template.bind({}),
116
+ name: 'Standard 50 ohne Teaserbild',
117
+ args: teaser50SerifWithoutTeaserImage.logicItem.includeModel,
118
+ }
119
+
120
+ export const Standard50MitExternemLink = {
121
+ render: Template.bind({}),
122
+ name: 'Standard 50 mit externem Link',
123
+ args: teaser50Link.logicItem.includeModel,
124
+ }
125
+
126
+ export const Standard33 = {
127
+ render: Template.bind({}),
128
+ name: 'Standard 33',
129
+ args: teaser33Serif.logicItem.includeModel,
130
+ }
131
+
132
+ export const Standard33MitExternemLink = {
133
+ render: Template.bind({}),
134
+ name: 'Standard 33 mit externem Link',
135
+ args: teaser33Link.logicItem.includeModel,
136
+ }
137
+
138
+ export const Standard25 = {
139
+ render: Template.bind({}),
140
+ name: 'Standard 25',
141
+ args: teaser25Serif.logicItem.includeModel,
142
+ }
143
+
144
+ export const Standard25OhneTeaserbild = {
145
+ render: Template.bind({}),
146
+ name: 'Standard 25 ohne Teaserbild',
147
+ args: teaser25SerifWithoutTeaserimage.logicItem.includeModel,
148
+ }
149
+
150
+ export const Standard25MitExternemLink = {
151
+ render: Template.bind({}),
152
+ name: 'Standard 25 mit externem Link',
153
+ args: teaser25Link.logicItem.includeModel,
154
+ }
155
+
156
+ export const Standard100MitDownload = {
157
+ render: Template.bind({}),
158
+ name: 'Standard 100 Mit Download',
159
+ args: teaser100Download.logicItem.includeModel,
160
+ }
161
+
162
+ export const Standard33MitLangerOrtsmarke = {
163
+ render: Template.bind({}),
164
+ name: 'Standard 33 mit langer Ortsmarke',
165
+ args: teaser33LongGeotag.logicItem.includeModel,
166
+ }