hr-design-system-handlebars 1.11.10 → 1.11.12

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 (130) 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 +29 -0
  6. package/dist/assets/index.css +11 -3
  7. package/dist/views/components/page/page_pagination.hbs +1 -1
  8. package/dist/views/components/pagination/pagination.hbs +15 -14
  9. package/dist/views/components/pagination/pagination_current_page_invalid.hbs +1 -1
  10. package/dist/views/components/pagination/pagination_current_page_valid.hbs +2 -1
  11. package/dist/views/components/pagination/pagination_more_than_three_pages.hbs +3 -3
  12. package/dist/views/components/pagination/pagination_only_three_pages.hbs +7 -7
  13. package/dist/views/components/pagination/pagination_only_two_pages.hbs +2 -2
  14. package/package.json +20 -13
  15. package/src/assets/css/custom-utilities.css +3 -3
  16. package/src/assets/fixtures/page/page_pagination.json +15 -14
  17. package/src/stories/BrandColors.data.js +42 -0
  18. package/src/stories/BrandColors.mdx +25 -0
  19. package/src/stories/{Colors.stories.mdx → Colors.data.js} +2 -18
  20. package/src/stories/Colors.mdx +19 -0
  21. package/src/stories/Example.mdx +56 -0
  22. package/src/stories/Example.stories.js +57 -0
  23. package/src/stories/{Fixtures.stories.mdx → Fixtures.mdx} +3 -5
  24. package/src/stories/{InstallAndUpdate.stories.mdx → InstallAndUpdate.mdx} +0 -2
  25. package/src/stories/Introduction.mdx +3 -0
  26. package/src/stories/{SvgOptimization.stories.mdx → SvgOptimization.mdx} +0 -2
  27. package/src/stories/{Typography.stories.mdx → Typography.mdx} +13 -14
  28. package/src/stories/{conventions-and-datastructure.stories.mdx → conventions-and-datastructure.mdx} +7 -9
  29. package/src/stories/views/components/Button.mdx +30 -0
  30. package/src/stories/views/components/Button_.stories.js +77 -0
  31. package/src/stories/views/components/event/calendar/{event_calendar_components.stories.mdx → event_calendar_components.mdx} +31 -87
  32. package/src/stories/views/components/event/calendar/event_calendar_components.stories.js +129 -0
  33. package/src/stories/views/components/geoTag/geoTag.mdx +32 -0
  34. package/src/stories/views/components/geoTag/geoTag.stories.js +35 -0
  35. package/src/stories/views/components/grid/grid.mdx +210 -0
  36. package/src/stories/views/components/grid/grid.stories.js +148 -0
  37. package/src/stories/views/components/label/label.mdx +54 -0
  38. package/src/stories/views/components/label/label.stories.js +183 -0
  39. package/src/stories/views/components/page/fixtures/page_pagination.json +1 -1
  40. package/src/stories/views/components/page/page.data.js +17 -0
  41. package/src/stories/views/components/page/page.mdx +110 -0
  42. package/src/stories/views/components/page/page.stories.js +50 -0
  43. package/src/stories/views/components/page/page_pagination.data.js +8 -0
  44. package/src/stories/views/components/page/page_pagination.hbs +1 -1
  45. package/src/stories/views/components/page/page_pagination.mdx +8 -0
  46. package/src/stories/views/components/page/page_pagination.stories.js +34 -0
  47. package/src/stories/views/components/page/page_player.mdx +21 -0
  48. package/src/stories/views/components/page/page_player.stories.js +34 -0
  49. package/src/stories/views/components/pagination/pagination.hbs +15 -14
  50. package/src/stories/views/components/pagination/pagination_current_page_invalid.hbs +1 -1
  51. package/src/stories/views/components/pagination/pagination_current_page_valid.hbs +2 -1
  52. package/src/stories/views/components/pagination/pagination_more_than_three_pages.hbs +3 -3
  53. package/src/stories/views/components/pagination/pagination_only_three_pages.hbs +7 -7
  54. package/src/stories/views/components/pagination/pagination_only_two_pages.hbs +2 -2
  55. package/src/stories/views/components/site_header/{header.stories.mdx → header.mdx} +218 -152
  56. package/src/stories/views/components/site_header/header.stories.js +62 -0
  57. package/src/stories/views/components/teaser/cluster/teaser_cluster.mdx +32 -0
  58. package/src/stories/views/components/teaser/cluster/teaser_cluster.stories.js +146 -0
  59. package/src/stories/views/components/teaser/components/teaser_byline.mdx +97 -0
  60. package/src/stories/views/components/teaser/components/teaser_byline.stories.js +30 -0
  61. package/src/stories/views/components/teaser/components/teaser_heading.mdx +96 -0
  62. package/src/stories/views/components/teaser/components/teaser_heading.stories.js +158 -0
  63. package/src/stories/views/components/teaser/components/teaser_text.mdx +36 -0
  64. package/src/stories/views/components/teaser/components/teaser_text.stories.js +74 -0
  65. package/src/stories/views/components/teaser/components/teaser_title.mdx +42 -0
  66. package/src/stories/views/components/teaser/components/teaser_title.stories.js +85 -0
  67. package/src/stories/views/components/teaser/components/teaser_topline.mdx +29 -0
  68. package/src/stories/views/components/teaser/components/teaser_topline.stories.js +27 -0
  69. package/src/stories/views/components/teaser/content_nav/teaser_content_nav.mdx +54 -0
  70. package/src/stories/views/components/teaser/content_nav/{teaser_content_nav.stories.mdx → teaser_content_nav.stories.js} +80 -61
  71. package/src/stories/views/components/teaser/group_teaser/group.mdx +18 -0
  72. package/src/stories/views/components/teaser/group_teaser/group.stories.js +85 -0
  73. package/src/stories/views/components/teaser/podcast/podcast.mdx +11 -0
  74. package/src/stories/views/components/teaser/podcast/{podcast.stories.mdx → podcast.stories.js} +50 -39
  75. package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.mdx +10 -0
  76. package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.stories.js +51 -0
  77. package/src/stories/views/components/teaser/tabbox/teaser_tabbox.mdx +10 -0
  78. package/src/stories/views/components/teaser/tabbox/teaser_tabbox.stories.js +40 -0
  79. package/src/stories/views/components/teaser/teaser_alternativ.mdx +76 -0
  80. package/src/stories/views/components/teaser/teaser_alternativ.stories.js +126 -0
  81. package/src/stories/views/components/teaser/teaser_alternativ_av.mdx +75 -0
  82. package/src/stories/views/components/teaser/teaser_alternativ_av.stories.js +111 -0
  83. package/src/stories/views/components/teaser/teaser_event_calendar.mdx +57 -0
  84. package/src/stories/views/components/teaser/teaser_event_calendar.stories.js +92 -0
  85. package/src/stories/views/components/teaser/teaser_indextext.mdx +35 -0
  86. package/src/stories/views/components/teaser/teaser_indextext.stories.js +85 -0
  87. package/src/stories/views/components/teaser/teaser_logic/teaser_logic.mdx +23 -0
  88. package/src/stories/views/components/teaser/teaser_logic/teaser_logic.stories.js +36 -0
  89. package/src/stories/views/components/teaser/teaser_poster.mdx +95 -0
  90. package/src/stories/views/components/teaser/teaser_poster.stories.js +67 -0
  91. package/src/stories/views/components/teaser/teaser_stage.mdx +15 -0
  92. package/src/stories/views/components/teaser/teaser_stage.stories.js +60 -0
  93. package/src/stories/views/components/teaser/teaser_standard.mdx +129 -0
  94. package/src/stories/views/components/teaser/teaser_standard.stories.js +166 -0
  95. package/src/stories/views/components/teaser/teaser_standard_av.mdx +38 -0
  96. package/src/stories/views/components/teaser/teaser_standard_av.stories.js +117 -0
  97. package/src/stories/views/components/teaser/teaser_standard_event.mdx +103 -0
  98. package/src/stories/views/components/teaser/teaser_standard_event.stories.js +119 -0
  99. package/src/stories/views/components/teaser/ticker/teaser_ticker.mdx +10 -0
  100. package/src/stories/views/components/teaser/ticker/{teaser_ticker.stories.mdx → teaser_ticker.stories.js} +25 -24
  101. package/.storybook/withThemeDecorator.js +0 -12
  102. package/src/stories/BrandColors.stories.mdx +0 -39
  103. package/src/stories/Example.stories.mdx +0 -93
  104. package/src/stories/Introduction.stories.mdx +0 -211
  105. package/src/stories/views/components/Button.stories.mdx +0 -82
  106. package/src/stories/views/components/geoTag/geoTag.stories.mdx +0 -61
  107. package/src/stories/views/components/grid/grid.stories.mdx +0 -275
  108. package/src/stories/views/components/label/label.stories.mdx +0 -200
  109. package/src/stories/views/components/page/page.stories.mdx +0 -144
  110. package/src/stories/views/components/page/page_pagination.stories.mdx +0 -36
  111. package/src/stories/views/components/page/page_player.stories.mdx +0 -43
  112. package/src/stories/views/components/teaser/cluster/teaser_cluster.stories.mdx +0 -97
  113. package/src/stories/views/components/teaser/components/teaser_byline.stories.mdx +0 -78
  114. package/src/stories/views/components/teaser/components/teaser_heading.stories.mdx +0 -219
  115. package/src/stories/views/components/teaser/components/teaser_text.stories.mdx +0 -94
  116. package/src/stories/views/components/teaser/components/teaser_title.stories.mdx +0 -124
  117. package/src/stories/views/components/teaser/components/teaser_topline.stories.mdx +0 -63
  118. package/src/stories/views/components/teaser/group_teaser/group.stories.mdx +0 -85
  119. package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.stories.mdx +0 -52
  120. package/src/stories/views/components/teaser/tabbox/teaser_tabbox.stories.mdx +0 -39
  121. package/src/stories/views/components/teaser/teaser_alternativ.stories.mdx +0 -163
  122. package/src/stories/views/components/teaser/teaser_alternativ_av.stories.mdx +0 -142
  123. package/src/stories/views/components/teaser/teaser_event_calendar.stories.mdx +0 -131
  124. package/src/stories/views/components/teaser/teaser_indextext.stories.mdx +0 -111
  125. package/src/stories/views/components/teaser/teaser_logic/teaser_logic.stories.mdx +0 -39
  126. package/src/stories/views/components/teaser/teaser_poster.stories.mdx +0 -130
  127. package/src/stories/views/components/teaser/teaser_stage.stories.mdx +0 -53
  128. package/src/stories/views/components/teaser/teaser_standard.stories.mdx +0 -170
  129. package/src/stories/views/components/teaser/teaser_standard_av.stories.mdx +0 -95
  130. package/src/stories/views/components/teaser/teaser_standard_event.stories.mdx +0 -150
@@ -0,0 +1,51 @@
1
+ import { resetComponents } from '@storybook/components'
2
+ import subscribeButtonJson from '../fixtures/teaser_podcast.json'
3
+
4
+ import subscribeButton from './podcast_subscribe_button.hbs'
5
+
6
+ const Template = ({ label, ...args }) => {
7
+ // You can either use a function to create DOM elements or use a plain html string!
8
+ // return `<div>${label}</div>`;
9
+ return subscribeButton({ label, ...args })
10
+ }
11
+
12
+ export default {
13
+ title: 'Komponenten/Teaser/Podcast/Komponenten',
14
+
15
+ argTypes: {
16
+ storybookOpen: {
17
+ control: 'boolean',
18
+ description: 'Offen',
19
+ },
20
+ },
21
+
22
+ parameters: {
23
+ controls: {
24
+ sort: 'requiredFirst',
25
+ },
26
+ },
27
+
28
+ decorators: [
29
+ (Story) => {
30
+ return `<div class="flex flex-row pt-5">
31
+ ${Story()}
32
+ </div>`
33
+ },
34
+ ],
35
+ }
36
+
37
+ export const SubscribeButtonClose = {
38
+ render: Template.bind({}),
39
+ name: 'Subscribe Button Close',
40
+ args: subscribeButtonJson.logicItem.includeModel.podcastChannel,
41
+ }
42
+
43
+ export const SubscribeButtonOpen = {
44
+ render: Template.bind({}),
45
+ name: 'Subscribe Button Open',
46
+
47
+ args: {
48
+ ...subscribeButtonJson.logicItem.includeModel.podcastChannel,
49
+ storybookOpen: true,
50
+ },
51
+ }
@@ -0,0 +1,10 @@
1
+ import { ArgsTable, Meta, Story, Canvas } from '@storybook/blocks'
2
+ import * as TeaserTabboxStories from './teaser_tabbox.stories'
3
+
4
+ import tabbox from './teaser_tabbox.hbs'
5
+
6
+ <Meta of={TeaserTabboxStories} />
7
+
8
+ <Canvas withToolbar>
9
+ <Story of={TeaserTabboxStories.Beispiel1} />
10
+ </Canvas>
@@ -0,0 +1,40 @@
1
+ import tabbox from './teaser_tabbox.hbs'
2
+ import tabboxData from '../fixtures/teaser_tabbox.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 tabbox({ brand, ...args })
10
+ }
11
+
12
+ export default {
13
+ title: 'Komponenten/Teaser/Tabbox',
14
+
15
+ parameters: {
16
+ chromatic: {
17
+ viewports: [360, 768, 1024],
18
+ },
19
+
20
+ layout: 'fullscreen',
21
+ },
22
+
23
+ argTypes: {},
24
+
25
+ decorators: [
26
+ (Story) => {
27
+ return `<div class="grid my-5 grid-page">
28
+ <div>
29
+ ${Story()}
30
+ </div>
31
+ </div>`
32
+ },
33
+ ],
34
+ }
35
+
36
+ export const Beispiel1 = {
37
+ render: Template.bind({}),
38
+ name: 'Beispiel 1',
39
+ args: tabboxData.includeModel,
40
+ }
@@ -0,0 +1,76 @@
1
+ import { ArgsTable, Meta, Story, Canvas, Preview } from '@storybook/blocks'
2
+ import * as TeaserAlternativStories from './teaser_alternativ.stories'
3
+
4
+ <Meta of={TeaserAlternativStories} />
5
+
6
+ # Alternativ-Teaser
7
+
8
+ ## Beschreibung
9
+
10
+ Der Alternativ-Teaser besteht aus 2 Hauptelemente: <b>Bild</b> und <b>Text</b> (Label, Dachzeile, Titel, Teasertext, Zusatzinformationen)
11
+
12
+ <b>Alternativ Hero:</b> <br />
13
+ Desktop = Bild(66%) neben Text(33%) <br />
14
+ Mobile = Verhalten wie bei 100% Standard-Teaser <br />
15
+
16
+ <b>Alternativ 100%:</b> <br />
17
+ Desktop = Bild(33%) neben Text(66%) <br />
18
+ Mobile = Verhalten wie bei 100% Standard-Teaser <br />
19
+
20
+ <b>Alternativ 50%:</b> <br />
21
+ Desktop = Bild(33%) neben Text(66%) <br />
22
+ Mobile = Verhalten wie bei 100% Standard-Teaser <br />
23
+
24
+ <b>Alternativ 50% mit Download:</b> <br />
25
+ Desktop = Bild(33%) neben Text(66%) <br />
26
+ Mobile = Verhalten wie bei 100% Standard-Teaser <br />{' '}
27
+
28
+ Der Alternativ-Teaser soll nur als 100%- bzw. 50%-Teaser verwendet werden.
29
+
30
+ ## Sub-Komponenten
31
+
32
+ Die Alternativ-Teaser-Komponente inkludiert folgende Komponenten:
33
+
34
+ <ul>
35
+ <li>
36
+ components/base/image/<b>responsive\_image</b>
37
+ </li>
38
+ <li>
39
+ components/base/<b>link</b>
40
+ </li>
41
+ <li>
42
+ components/teaser/components/<b>teaser\_heading</b>
43
+ </li>
44
+ <li>
45
+ components/teaser/components/<b>teaser\_text</b>
46
+ </li>
47
+ <li>
48
+ components/teaser/components/<b>teaser\_byline</b>
49
+ </li>
50
+ </ul>
51
+
52
+ ## Verwendung
53
+
54
+ Die Alternativ-Teaser-Komponente wird in handlebars wie folgt eingebaut:
55
+
56
+ ```html
57
+ {{> components/teaser/teaser_alternativ}}
58
+ ```
59
+
60
+ <Canvas withToolbar>
61
+ <Story of={TeaserAlternativStories.AlternativHero} />
62
+ <Story of={TeaserAlternativStories.AlternativHeroMitKommentaren} />
63
+ <Story of={TeaserAlternativStories.AlternativHeroMitLabel} />
64
+ <Story of={TeaserAlternativStories.AlternativHeroMitExternenLinkDokument} />
65
+ <Story of={TeaserAlternativStories.AlternativHeroMitSendungsdokument} />
66
+ <b>Alternativ 100%</b>
67
+ <Story of={TeaserAlternativStories.Alternativ100} />
68
+ <b>Alternativ 100% mit externem Link</b>
69
+ <Story of={TeaserAlternativStories.Alternativ100MitExternemLink} />
70
+ <b>Alternativ 50%</b>
71
+ <Story of={TeaserAlternativStories.Alternativ50} />
72
+ <Story of={TeaserAlternativStories.Alternativ50OhneTeaserbild} />
73
+ <b>Alternativ 50% mit externem Link</b>
74
+ <Story of={TeaserAlternativStories.Alternativ50MitExternemLink} />
75
+ <Story of={TeaserAlternativStories.Alternativ50MitDownload} />
76
+ </Canvas>
@@ -0,0 +1,126 @@
1
+ import { addLabel, removeLabel, changeTeaserSize } from './labelHelper'
2
+ import { addCommentLink } from './jsonHelper'
3
+ import teaser from './teaser_alternativ.hbs'
4
+ import heroTeaser from './fixtures/teaser_alternative_hero_serif.json'
5
+ import heroTeaserWithLabel from './fixtures/teaser_alternative_hero_serif_label.json'
6
+ import heroTeaserWithComments from './fixtures/teaser_alternative_hero_serif_comments.json'
7
+ import heroTeaserLink from './fixtures/teaser_alternative_hero_serif_link.json'
8
+ import heroTeaserProgram from './fixtures/teaser_alternative_hero_serif_program.json'
9
+ import teaser100Link from './fixtures/teaser_alternative_100_serif_link.json'
10
+ import teaser100 from './fixtures/teaser_alternative_100_serif.json'
11
+ import teaser50 from './fixtures/teaser_alternative_50_serif.json'
12
+ import teaser50WithoutTeaserImage from './fixtures/teaser_alternative_without_teaserimage_50_serif.json'
13
+ import teaser50Link from './fixtures/teaser_alternative_50_serif_link.json'
14
+ import teaser50Download from './fixtures/teaser_alternative_50_serif_download.json'
15
+
16
+ const Template = (args, { globals: { customConditionalToolbar } }) => {
17
+ // You can either use a function to create DOM elements or use a plain html string!
18
+ // return `<div>${label}</div>`;
19
+ let brand =
20
+ undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
21
+ return teaser({ brand, ...args })
22
+ }
23
+
24
+ export default {
25
+ title: 'Komponenten/Teaser/Alternativ',
26
+
27
+ parameters: {
28
+ layout: 'fullscreen',
29
+
30
+ chromatic: {
31
+ viewports: [360, 1024],
32
+ diffThreshold: 0.5,
33
+ },
34
+ },
35
+
36
+ argTypes: {
37
+ teaserSize: {
38
+ control: {
39
+ type: 'select',
40
+ options: ['hero', '100', '50'],
41
+ },
42
+
43
+ description: 'Teaser Größ',
44
+
45
+ table: {
46
+ defaultValue: {
47
+ summary: 'hero',
48
+ },
49
+ },
50
+ },
51
+ },
52
+
53
+ decorators: [
54
+ (Story) => {
55
+ 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">
56
+ ${Story()}
57
+ </div></div>`
58
+ },
59
+ ],
60
+ }
61
+
62
+ export const AlternativHero = {
63
+ render: Template.bind({}),
64
+ name: 'Alternativ Hero',
65
+ args: heroTeaser.logicItem.includeModel,
66
+ }
67
+
68
+ export const AlternativHeroMitKommentaren = {
69
+ render: Template.bind({}),
70
+ name: 'Alternativ Hero mit Kommentaren',
71
+ args: heroTeaserWithComments.logicItem.includeModel,
72
+ }
73
+
74
+ export const AlternativHeroMitLabel = {
75
+ render: Template.bind({}),
76
+ name: 'Alternativ Hero mit Label',
77
+ args: heroTeaserWithLabel.logicItem.includeModel,
78
+ }
79
+
80
+ export const AlternativHeroMitExternenLinkDokument = {
81
+ render: Template.bind({}),
82
+ name: 'Alternativ Hero mit externen Link Dokument',
83
+ args: heroTeaserLink.logicItem.includeModel,
84
+ }
85
+
86
+ export const AlternativHeroMitSendungsdokument = {
87
+ render: Template.bind({}),
88
+ name: 'Alternativ Hero mit Sendungsdokument',
89
+ args: heroTeaserProgram.logicItem.includeModel,
90
+ }
91
+
92
+ export const Alternativ100 = {
93
+ render: Template.bind({}),
94
+ name: 'Alternativ 100',
95
+ args: teaser100.logicItem.includeModel,
96
+ }
97
+
98
+ export const Alternativ100MitExternemLink = {
99
+ render: Template.bind({}),
100
+ name: 'Alternativ 100 mit externem Link',
101
+ args: teaser100Link.logicItem.includeModel,
102
+ }
103
+
104
+ export const Alternativ50 = {
105
+ render: Template.bind({}),
106
+ name: 'Alternativ 50',
107
+ args: teaser50.logicItem.includeModel,
108
+ }
109
+
110
+ export const Alternativ50OhneTeaserbild = {
111
+ render: Template.bind({}),
112
+ name: 'Alternativ 50 ohne Teaserbild',
113
+ args: teaser50WithoutTeaserImage.logicItem.includeModel,
114
+ }
115
+
116
+ export const Alternativ50MitExternemLink = {
117
+ render: Template.bind({}),
118
+ name: 'Alternativ 50 mit externem Link',
119
+ args: teaser50Link.logicItem.includeModel,
120
+ }
121
+
122
+ export const Alternativ50MitDownload = {
123
+ render: Template.bind({}),
124
+ name: 'Alternativ 50 mit Download',
125
+ args: teaser50Download.logicItem.includeModel,
126
+ }
@@ -0,0 +1,75 @@
1
+ import { ArgsTable, Meta, Story, Canvas, Preview } from '@storybook/blocks'
2
+ import * as TeaserAlternativAvStories from './teaser_alternativ_av.stories'
3
+
4
+ <Meta of={TeaserAlternativAvStories} />
5
+
6
+ # Alternativ-Teaser
7
+
8
+ ## Beschreibung
9
+
10
+ Der Alternativ-Teaser besteht aus 2 Hauptelemente: <b>Bild</b> und <b>Text</b> (Label, Dachzeile, Titel, Teasertext, Zusatzinformationen)
11
+
12
+ <b>Alternativ Hero:</b> <br />
13
+ Desktop = Bild(66%) neben Text(33%) <br />
14
+ Mobile = Verhalten wie bei 100% Standard-Teaser <br />
15
+
16
+ <b>Alternativ 100%:</b> <br />
17
+ Desktop = Bild(33%) neben Text(66%) <br />
18
+ Mobile = Verhalten wie bei 100% Standard-Teaser <br />
19
+
20
+ <b>Alternativ 50%:</b> <br />
21
+ Desktop = Bild(33%) neben Text(66%) <br />
22
+ Mobile = Verhalten wie bei 100% Standard-Teaser <br />
23
+
24
+ Der Alternativ-Teaser soll nur als 100%- bzw. 50%-Teaser verwendet werden.
25
+
26
+ ## Sub-Komponenten
27
+
28
+ Die Alternativ-Teaser-Komponente inkludiert folgende Komponenten:
29
+
30
+ <ul>
31
+ <li>
32
+ components/base/image/<b>responsive\_image</b>
33
+ </li>
34
+ <li>
35
+ components/base/<b>link</b>
36
+ </li>
37
+ <li>
38
+ components/teaser/components/<b>teaser\_heading</b>
39
+ </li>
40
+ <li>
41
+ components/teaser/components/<b>teaser\_text</b>
42
+ </li>
43
+ <li>
44
+ components/teaser/components/<b>teaser\_byline</b>
45
+ </li>
46
+ </ul>
47
+
48
+ ## Verwendung
49
+
50
+ Die Alternativ-Teaser-Komponente wird in handlebars wie folgt eingebaut:
51
+
52
+ ```html
53
+ {{> components/teaser/teaser_alternativ}}
54
+ ```
55
+
56
+ <Canvas withToolbar>
57
+ <b>Alternativ Hero Video</b>
58
+ <Story of={TeaserAlternativAvStories.AlternativHeroVideo} />
59
+ <b>Alternativ Hero Audio</b>
60
+ <Story of={TeaserAlternativAvStories.AlternativHeroAudio} />
61
+ <b>Alternativ Hero Live</b>
62
+ <Story of={TeaserAlternativAvStories.AlternativHeroLive} />
63
+ <b>Alternativ 100% Video</b>
64
+ <Story of={TeaserAlternativAvStories.Alternativ100Video} />
65
+ <b>Alternativ 100% Audio</b>
66
+ <Story of={TeaserAlternativAvStories.Alternativ100Audio} />
67
+ <b>Alternativ 100% Live</b>
68
+ <Story of={TeaserAlternativAvStories.Alternativ100Live} />
69
+ <b>Alternativ 50% Video</b>
70
+ <Story of={TeaserAlternativAvStories.Alternativ50Video} />
71
+ <b>Alternativ 50% Audio</b>
72
+ <Story of={TeaserAlternativAvStories.Alternativ50Audio} />
73
+ <b>Alternativ 50% Live</b>
74
+ <Story of={TeaserAlternativAvStories.Alternativ50Live} />
75
+ </Canvas>
@@ -0,0 +1,111 @@
1
+ import { addLabel, removeLabel, changeTeaserSize } from './labelHelper'
2
+ import { addCommentLink } from './jsonHelper'
3
+ import teaser from './teaser_alternativ.hbs'
4
+ import heroTeaser_video from './fixtures/teaser_alternative_hero_serif_video.json'
5
+ import heroTeaser_audio from './fixtures/teaser_alternative_hero_serif_audio.json'
6
+ import heroTeaser_live from './fixtures/teaser_alternative_hero_serif_live.json'
7
+ import teaser100_video from './fixtures/teaser_alternative_100_serif_video.json'
8
+ import teaser100_audio from './fixtures/teaser_alternative_100_serif_audio.json'
9
+ import teaser100_live from './fixtures/teaser_alternative_100_serif_live.json'
10
+ import teaser50_video from './fixtures/teaser_alternative_50_serif_video.json'
11
+ import teaser50_audio from './fixtures/teaser_alternative_50_serif_audio.json'
12
+ import teaser50_live from './fixtures/teaser_alternative_50_serif_live.json'
13
+
14
+ const Template = (args, { globals: { customConditionalToolbar } }) => {
15
+ // You can either use a function to create DOM elements or use a plain html string!
16
+ // return `<div>${label}</div>`;
17
+ let brand =
18
+ undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
19
+ return teaser({ brand, ...args })
20
+ }
21
+
22
+ export default {
23
+ title: 'Komponenten/Teaser/AV-Alternativ',
24
+
25
+ parameters: {
26
+ layout: 'fullscreen',
27
+
28
+ chromatic: {
29
+ viewports: [360, 1024],
30
+ },
31
+ },
32
+
33
+ argTypes: {
34
+ teaserSize: {
35
+ control: {
36
+ type: 'select',
37
+ options: ['hero', '100', '50'],
38
+ },
39
+
40
+ description: 'Teaser Größe',
41
+
42
+ table: {
43
+ defaultValue: {
44
+ summary: 'hero',
45
+ },
46
+ },
47
+ },
48
+ },
49
+
50
+ decorators: [
51
+ (Story) => {
52
+ 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">
53
+ ${Story()}
54
+ </div></div>`
55
+ },
56
+ ],
57
+ }
58
+
59
+ export const AlternativHeroVideo = {
60
+ render: Template.bind({}),
61
+ name: 'Alternativ Hero Video',
62
+ args: heroTeaser_video.logicItem.includeModel,
63
+ }
64
+
65
+ export const AlternativHeroAudio = {
66
+ render: Template.bind({}),
67
+ name: 'Alternativ Hero Audio',
68
+ args: heroTeaser_audio.logicItem.includeModel,
69
+ }
70
+
71
+ export const AlternativHeroLive = {
72
+ render: Template.bind({}),
73
+ name: 'Alternativ Hero Live',
74
+ args: heroTeaser_live.logicItem.includeModel,
75
+ }
76
+
77
+ export const Alternativ100Video = {
78
+ render: Template.bind({}),
79
+ name: 'Alternativ 100 Video',
80
+ args: teaser100_video.logicItem.includeModel,
81
+ }
82
+
83
+ export const Alternativ100Audio = {
84
+ render: Template.bind({}),
85
+ name: 'Alternativ 100 Audio',
86
+ args: teaser100_audio.logicItem.includeModel,
87
+ }
88
+
89
+ export const Alternativ100Live = {
90
+ render: Template.bind({}),
91
+ name: 'Alternativ 100 Live',
92
+ args: teaser100_live.logicItem.includeModel,
93
+ }
94
+
95
+ export const Alternativ50Video = {
96
+ render: Template.bind({}),
97
+ name: 'Alternativ 50 Video',
98
+ args: teaser50_video.logicItem.includeModel,
99
+ }
100
+
101
+ export const Alternativ50Audio = {
102
+ render: Template.bind({}),
103
+ name: 'Alternativ 50 Audio',
104
+ args: teaser50_audio.logicItem.includeModel,
105
+ }
106
+
107
+ export const Alternativ50Live = {
108
+ render: Template.bind({}),
109
+ name: 'Alternativ 50 Live',
110
+ args: teaser50_live.logicItem.includeModel,
111
+ }
@@ -0,0 +1,57 @@
1
+ import { ArgsTable, Meta, Story, Canvas } from '@storybook/blocks'
2
+ import * as TeaserEventCalendarStories from './teaser_event_calendar.stories'
3
+
4
+ <Meta of={TeaserEventCalendarStories} />
5
+
6
+ # Standard-Teaser
7
+
8
+ ## Beschreibung
9
+
10
+ Der Standard-Teaser besteht aus 2 Hauptelemente: <b>Bild</b> und <b>Text</b> (Label, Dachzeile, Titel, Teasertext, Zusatzinformationen)
11
+
12
+ <b>Standard 33 Single Event:</b> <br />
13
+ Desktop = Text unter dem Bild <br />
14
+ Mobile = Text unter dem Bild mit Teasertext <br />
15
+
16
+ <b>Standard 33 Two Events:</b> <br />
17
+ Desktop = Text unter dem Bild <br />
18
+ Mobile = Text unter dem Bild mit Teasertext <br />
19
+
20
+ <b>Standard 33 Multiple Events:</b> <br />
21
+ Desktop = Text unter dem Bild <br />
22
+ Mobile = Text unter dem Bild mit Teasertext <br />{' '}
23
+
24
+ ## Sub-Komponenten
25
+
26
+ Die Standard-Teaser-Komponente inkludiert folgende Komponenten:
27
+
28
+ <ul>
29
+ <li>
30
+ components/teaser/components/<b>teaser\_lead</b>
31
+ </li>
32
+ <li>
33
+ components/base/<b>link</b>
34
+ </li>
35
+ <li>
36
+ components/teaser/components/<b>teaser\_heading</b>
37
+ </li>
38
+ <li>
39
+ components/teaser/components/<b>teaser\_text</b>
40
+ </li>
41
+ <li>
42
+ components/teaser/components/<b>teaser\_byline</b>
43
+ </li>
44
+ </ul>
45
+
46
+ ## Verwendung
47
+
48
+ Die Standard-Teaser-Komponente wird in handlebars wie folgt eingebaut:
49
+
50
+ ```html
51
+ {{> components/teaser/teaser_standard_event}}
52
+ ```
53
+
54
+ <Canvas withToolbar>
55
+ <Story of={TeaserEventCalendarStories.Teaser100} />
56
+ <Story of={TeaserEventCalendarStories.Teaser100KeineEventsInDerZukunft} />
57
+ </Canvas>
@@ -0,0 +1,92 @@
1
+ import teaserEventCalendar from '../../components/teaser/teaser_event_calendar.hbs'
2
+ import teaserEventCalendar100Serif from './fixtures/teaser_event_calendar_100_serif.json'
3
+ import teaserEventCalendarWithNoFutureEventsData from './fixtures/teaser_event_calendar_100_no_future_events.json'
4
+
5
+ const TemplateEventCalendarTeaser = (args, { globals: { customConditionalToolbar } }) => {
6
+ // You can either use a function to create DOM elements or use a plain html string!
7
+ // return `<div>${label}</div>`;
8
+ let brand =
9
+ undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
10
+ return teaserEventCalendar({ brand, ...args })
11
+ }
12
+
13
+ export default {
14
+ title: 'Komponenten/Teaser/Eventkalender',
15
+
16
+ parameters: {
17
+ layout: 'fullscreen',
18
+ },
19
+
20
+ argTypes: {
21
+ teaserSize: {
22
+ control: {
23
+ type: 'select',
24
+ options: ['50', '100'],
25
+ },
26
+
27
+ description: 'Teaser Größe',
28
+
29
+ table: {
30
+ defaultValue: {
31
+ summary: '100',
32
+ },
33
+ },
34
+ },
35
+ },
36
+
37
+ decorators: [
38
+ (Story) => {
39
+ 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">
40
+ ${Story()}
41
+ </div></div>`
42
+ },
43
+ ],
44
+ }
45
+
46
+ export const Teaser100 = {
47
+ render: TemplateEventCalendarTeaser.bind({}),
48
+ name: 'Teaser 100',
49
+
50
+ argTypes: {
51
+ teaserSize: {
52
+ control: {
53
+ type: 'select',
54
+ options: ['50', '100'],
55
+ },
56
+
57
+ description: 'Teaser Größe',
58
+
59
+ table: {
60
+ defaultValue: {
61
+ summary: '100',
62
+ },
63
+ },
64
+ },
65
+ },
66
+
67
+ args: teaserEventCalendar100Serif.logicItem.includeModel,
68
+ }
69
+
70
+ export const Teaser100KeineEventsInDerZukunft = {
71
+ render: TemplateEventCalendarTeaser.bind({}),
72
+ name: 'Teaser 100 Keine Events in der Zukunft',
73
+
74
+ argTypes: {
75
+ teaserSize: {
76
+ control: {
77
+ type: 'select',
78
+ options: ['50', '100'],
79
+ },
80
+
81
+ description: 'Teaser Größe',
82
+
83
+ table: {
84
+ defaultValue: {
85
+ summary: '100',
86
+ },
87
+ },
88
+ },
89
+ },
90
+
91
+ args: teaserEventCalendarWithNoFutureEventsData.logicItem.includeModel,
92
+ }
@@ -0,0 +1,35 @@
1
+ import { ArgsTable, Meta, Story, Canvas, Preview } from '@storybook/blocks'
2
+ import * as TeaserIndextextStories from './teaser_indextext.stories'
3
+
4
+ <Meta of={TeaserIndextextStories} />
5
+
6
+ # Indextext-Teaser
7
+
8
+ ## Beschreibung
9
+
10
+ ## Props
11
+
12
+ Die Indextext-Teaser-Komponente benötigt die folgenden json-Daten (enthalten im Teaser-Json im Objekt <b>logicItem.includeModel</b>):
13
+
14
+ - title
15
+ - shorttext
16
+ - shorttext
17
+ - teaserSize
18
+ - teaserType
19
+
20
+ ## Verwendung
21
+
22
+ Die Indextext-Teaser-Komponente wird in handlebars wie folgt eingebaut:
23
+
24
+ ```html
25
+ {{> components/teaser/teaser_indextext}}
26
+ ```
27
+
28
+ <Canvas withToolbar>
29
+ <Story of={TeaserIndextextStories.TextMitHintergrund100} />
30
+ <Story of={TeaserIndextextStories.TextMitBox100} />
31
+ <Story of={TeaserIndextextStories.HintergrundOrange100} />
32
+ <Story of={TeaserIndextextStories.TextMitHintergrund50} />
33
+ </Canvas>
34
+
35
+ <ArgsTable story="Text mit Hintergrund 100" />