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.
- package/.babelrc.json +14 -0
- package/.storybook/main.js +34 -52
- package/.storybook/preview-head.html +4 -1
- package/.storybook/preview.js +25 -35
- package/CHANGELOG.md +30 -0
- package/dist/assets/index.css +11 -3
- package/dist/views/components/base/load_dynamic.hbs +3 -0
- package/dist/views/components/teaser/ticker/teaser_ticker.hbs +29 -0
- package/package.json +20 -13
- package/src/assets/css/custom-utilities.css +3 -3
- package/src/assets/fixtures/teaser/teaser_ticker.inc.json +121 -0
- package/src/assets/fixtures/teaser/ticker_teaser_standard_100.json +25 -0
- package/src/assets/images/sportschau-image-5708_v-16to9.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-16to9__medium.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-16to9__retina.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-16to9__small.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-1to1.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-1to1__large.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-1to1__medium.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-1to1__small.jpg +0 -0
- package/src/stories/BrandColors.data.js +42 -0
- package/src/stories/BrandColors.mdx +25 -0
- package/src/stories/{Colors.stories.mdx → Colors.data.js} +2 -18
- package/src/stories/Colors.mdx +19 -0
- package/src/stories/Example.mdx +56 -0
- package/src/stories/Example.stories.js +57 -0
- package/src/stories/{Fixtures.stories.mdx → Fixtures.mdx} +3 -5
- package/src/stories/{InstallAndUpdate.stories.mdx → InstallAndUpdate.mdx} +0 -2
- package/src/stories/Introduction.mdx +3 -0
- package/src/stories/{SvgOptimization.stories.mdx → SvgOptimization.mdx} +0 -2
- package/src/stories/{Typography.stories.mdx → Typography.mdx} +13 -14
- package/src/stories/{conventions-and-datastructure.stories.mdx → conventions-and-datastructure.mdx} +7 -9
- package/src/stories/views/components/Button.mdx +30 -0
- package/src/stories/views/components/Button_.stories.js +77 -0
- package/src/stories/views/components/base/load_dynamic.hbs +3 -0
- package/src/stories/views/components/event/calendar/{event_calendar_components.stories.mdx → event_calendar_components.mdx} +31 -87
- package/src/stories/views/components/event/calendar/event_calendar_components.stories.js +129 -0
- package/src/stories/views/components/geoTag/geoTag.mdx +32 -0
- package/src/stories/views/components/geoTag/geoTag.stories.js +35 -0
- package/src/stories/views/components/grid/grid.mdx +210 -0
- package/src/stories/views/components/grid/grid.stories.js +148 -0
- package/src/stories/views/components/label/label.mdx +54 -0
- package/src/stories/views/components/label/label.stories.js +183 -0
- package/src/stories/views/components/page/page.data.js +17 -0
- package/src/stories/views/components/page/page.mdx +110 -0
- package/src/stories/views/components/page/page.stories.js +50 -0
- package/src/stories/views/components/page/page_pagination.data.js +8 -0
- package/src/stories/views/components/page/page_pagination.mdx +8 -0
- package/src/stories/views/components/page/page_pagination.stories.js +34 -0
- package/src/stories/views/components/page/page_player.mdx +21 -0
- package/src/stories/views/components/page/page_player.stories.js +34 -0
- package/src/stories/views/components/site_header/{header.stories.mdx → header.mdx} +218 -152
- package/src/stories/views/components/site_header/header.stories.js +62 -0
- package/src/stories/views/components/teaser/cluster/teaser_cluster.mdx +32 -0
- package/src/stories/views/components/teaser/cluster/teaser_cluster.stories.js +146 -0
- package/src/stories/views/components/teaser/components/teaser_byline.mdx +97 -0
- package/src/stories/views/components/teaser/components/teaser_byline.stories.js +30 -0
- package/src/stories/views/components/teaser/components/teaser_heading.mdx +96 -0
- package/src/stories/views/components/teaser/components/teaser_heading.stories.js +158 -0
- package/src/stories/views/components/teaser/components/teaser_text.mdx +36 -0
- package/src/stories/views/components/teaser/components/teaser_text.stories.js +74 -0
- package/src/stories/views/components/teaser/components/teaser_title.mdx +42 -0
- package/src/stories/views/components/teaser/components/teaser_title.stories.js +85 -0
- package/src/stories/views/components/teaser/components/teaser_topline.mdx +29 -0
- package/src/stories/views/components/teaser/components/teaser_topline.stories.js +27 -0
- package/src/stories/views/components/teaser/content_nav/teaser_content_nav.mdx +54 -0
- package/src/stories/views/components/teaser/content_nav/{teaser_content_nav.stories.mdx → teaser_content_nav.stories.js} +80 -61
- package/src/stories/views/components/teaser/fixtures/ticker_teaser_standard_100.json +1 -0
- package/src/stories/views/components/teaser/group_teaser/group.mdx +18 -0
- package/src/stories/views/components/teaser/group_teaser/group.stories.js +85 -0
- package/src/stories/views/components/teaser/podcast/podcast.mdx +11 -0
- package/src/stories/views/components/teaser/podcast/{podcast.stories.mdx → podcast.stories.js} +50 -39
- package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.mdx +10 -0
- package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.stories.js +51 -0
- package/src/stories/views/components/teaser/tabbox/teaser_tabbox.mdx +10 -0
- package/src/stories/views/components/teaser/tabbox/teaser_tabbox.stories.js +40 -0
- package/src/stories/views/components/teaser/teaser_alternativ.mdx +76 -0
- package/src/stories/views/components/teaser/teaser_alternativ.stories.js +126 -0
- package/src/stories/views/components/teaser/teaser_alternativ_av.mdx +75 -0
- package/src/stories/views/components/teaser/teaser_alternativ_av.stories.js +111 -0
- package/src/stories/views/components/teaser/teaser_event_calendar.mdx +57 -0
- package/src/stories/views/components/teaser/teaser_event_calendar.stories.js +92 -0
- package/src/stories/views/components/teaser/teaser_indextext.mdx +35 -0
- package/src/stories/views/components/teaser/teaser_indextext.stories.js +85 -0
- package/src/stories/views/components/teaser/teaser_logic/teaser_logic.mdx +23 -0
- package/src/stories/views/components/teaser/teaser_logic/teaser_logic.stories.js +36 -0
- package/src/stories/views/components/teaser/teaser_poster.mdx +95 -0
- package/src/stories/views/components/teaser/teaser_poster.stories.js +67 -0
- package/src/stories/views/components/teaser/teaser_stage.mdx +15 -0
- package/src/stories/views/components/teaser/teaser_stage.stories.js +60 -0
- package/src/stories/views/components/teaser/teaser_standard.mdx +129 -0
- package/src/stories/views/components/teaser/teaser_standard.stories.js +166 -0
- package/src/stories/views/components/teaser/teaser_standard_av.mdx +38 -0
- package/src/stories/views/components/teaser/teaser_standard_av.stories.js +117 -0
- package/src/stories/views/components/teaser/teaser_standard_event.mdx +103 -0
- package/src/stories/views/components/teaser/teaser_standard_event.stories.js +119 -0
- package/src/stories/views/components/teaser/ticker/teaser_ticker.hbs +29 -0
- package/src/stories/views/components/teaser/ticker/teaser_ticker.mdx +10 -0
- package/src/stories/views/components/teaser/ticker/teaser_ticker.stories.js +34 -0
- package/.storybook/withThemeDecorator.js +0 -12
- package/src/stories/BrandColors.stories.mdx +0 -39
- package/src/stories/Example.stories.mdx +0 -93
- package/src/stories/Introduction.stories.mdx +0 -211
- package/src/stories/views/components/Button.stories.mdx +0 -82
- package/src/stories/views/components/geoTag/geoTag.stories.mdx +0 -61
- package/src/stories/views/components/grid/grid.stories.mdx +0 -275
- package/src/stories/views/components/label/label.stories.mdx +0 -200
- package/src/stories/views/components/page/page.stories.mdx +0 -144
- package/src/stories/views/components/page/page_pagination.stories.mdx +0 -36
- package/src/stories/views/components/page/page_player.stories.mdx +0 -43
- package/src/stories/views/components/teaser/cluster/teaser_cluster.stories.mdx +0 -97
- package/src/stories/views/components/teaser/components/teaser_byline.stories.mdx +0 -78
- package/src/stories/views/components/teaser/components/teaser_heading.stories.mdx +0 -219
- package/src/stories/views/components/teaser/components/teaser_text.stories.mdx +0 -94
- package/src/stories/views/components/teaser/components/teaser_title.stories.mdx +0 -124
- package/src/stories/views/components/teaser/components/teaser_topline.stories.mdx +0 -63
- package/src/stories/views/components/teaser/group_teaser/group.stories.mdx +0 -85
- package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.stories.mdx +0 -52
- package/src/stories/views/components/teaser/tabbox/teaser_tabbox.stories.mdx +0 -39
- package/src/stories/views/components/teaser/teaser_alternativ.stories.mdx +0 -163
- package/src/stories/views/components/teaser/teaser_alternativ_av.stories.mdx +0 -142
- package/src/stories/views/components/teaser/teaser_event_calendar.stories.mdx +0 -131
- package/src/stories/views/components/teaser/teaser_indextext.stories.mdx +0 -111
- package/src/stories/views/components/teaser/teaser_logic/teaser_logic.stories.mdx +0 -39
- package/src/stories/views/components/teaser/teaser_poster.stories.mdx +0 -130
- package/src/stories/views/components/teaser/teaser_stage.stories.mdx +0 -53
- package/src/stories/views/components/teaser/teaser_standard.stories.mdx +0 -170
- package/src/stories/views/components/teaser/teaser_standard_av.stories.mdx +0 -95
- 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" />
|