| @@ -9,6 +9,7 @@ import {createLinkCollection} from "../../components/link-collection/LinkCollect | |||||
| import {createContact} from "../../components/contact/ContactComponent"; | import {createContact} from "../../components/contact/ContactComponent"; | ||||
| import {createEventsSection} from "../../sections/events/EventsComponent"; | import {createEventsSection} from "../../sections/events/EventsComponent"; | ||||
| import {createFeature} from "../../sections/feature/FeatureComponent"; | import {createFeature} from "../../sections/feature/FeatureComponent"; | ||||
| import {createImageText} from "../../components/image-text/ImageTextComponent"; | |||||
| export const createEventOverviewPage = ({ | export const createEventOverviewPage = ({ | ||||
| @@ -24,6 +25,10 @@ export const createEventOverviewPage = ({ | |||||
| copy: 'Wir beraten Unternehmen – ganz gleich, ob Sie Fragen zur Grün­dung haben, Fördermittel beantragen oder expandieren möchten. Wir stehen Ihnen in allen Phasen der Unter­nehmens­entwick­lung mit Rat und Tat zur Seite und sind Ihre erste Anlaufstelle. Verschaffen Sie sich einen Überblick über unsere Service- und Beratungs­angebote!', | copy: 'Wir beraten Unternehmen – ganz gleich, ob Sie Fragen zur Grün­dung haben, Fördermittel beantragen oder expandieren möchten. Wir stehen Ihnen in allen Phasen der Unter­nehmens­entwick­lung mit Rat und Tat zur Seite und sind Ihre erste Anlaufstelle. Verschaffen Sie sich einen Überblick über unsere Service- und Beratungs­angebote!', | ||||
| capitalInitial: true, | capitalInitial: true, | ||||
| })); | })); | ||||
| wrapper.appendChild(createImageText({ | |||||
| headline: 'Beratung und Service', | |||||
| text: 'Wir beraten Unternehmen!', | |||||
| })); | |||||
| wrapper.appendChild(createTopicTeasersSection({maxItems: 3})); | wrapper.appendChild(createTopicTeasersSection({maxItems: 3})); | ||||
| wrapper.appendChild(createTeasersSection({type: 'hero', maxItems: 2})); | wrapper.appendChild(createTeasersSection({type: 'hero', maxItems: 2})); | ||||
| wrapper.appendChild(createLinkCollection({headline: 'Meistgeklickt', addContainer: true, buttonText: null})); | wrapper.appendChild(createLinkCollection({headline: 'Meistgeklickt', addContainer: true, buttonText: null})); | ||||
| @@ -0,0 +1,93 @@ | |||||
| import {createEventOverviewStage} from "./EventOverviewStageComponent"; | |||||
| export default { | |||||
| title: 'Sections/EventOverview Stage', | |||||
| parameters: { | |||||
| layout: 'fullscreen', | |||||
| }, | |||||
| args: { | |||||
| imageSrc: 'https://source.unsplash.com/2vCqH34PqWs/1080x648', | |||||
| kicker: 'Noch 7 Tage offen', | |||||
| headline: 'Jetzt und digital mitreden', | |||||
| copy: 'Mit der digitalen Beteiligung erhalten Mitgliedsunternehmen die Möglichkeit, sich einfach und schnell über laufende Verfahren und Abstimmungen zu informieren und sich aktiv daran zu beteiligen.', | |||||
| moreCta: { | |||||
| label: 'Mehr Infos', | |||||
| link: '#', | |||||
| target: '_self', | |||||
| }, | |||||
| buttonCta: { | |||||
| label: 'Jetzt beteiligen', | |||||
| link: '#', | |||||
| target: '_self', | |||||
| }, | |||||
| showProgress: true, | |||||
| progress: 60, | |||||
| }, | |||||
| argTypes: { | |||||
| imageSrc: { | |||||
| name: 'Bild-Url', | |||||
| }, | |||||
| kicker: { | |||||
| name: 'Dachzeile', | |||||
| }, | |||||
| headline: { | |||||
| name: 'Überschrift', | |||||
| }, | |||||
| copy: { | |||||
| name: 'Kurztext', | |||||
| }, | |||||
| moreCta: { | |||||
| name: 'Mehr-Link', | |||||
| }, | |||||
| buttonCta: { | |||||
| name: 'Button', | |||||
| }, | |||||
| showProgress: { | |||||
| name: 'Fortschritt anzeigen', | |||||
| }, | |||||
| progress: { | |||||
| name: 'Fortschritt', | |||||
| control: { | |||||
| type: 'number', | |||||
| min: 0, | |||||
| max: 100, | |||||
| }, | |||||
| } | |||||
| }, | |||||
| } | |||||
| const Template = ({...args}) => { | |||||
| return createEventOverviewStage({...args}); | |||||
| }; | |||||
| export const GenericIntro = Template.bind({}); | |||||
| GenericIntro.args = { | |||||
| imageSrc: null, | |||||
| kicker: 'IHK Musterstadt Beteiligungsportal', | |||||
| showProgress: false, | |||||
| buttonCta: { | |||||
| label: 'Mehr erfahren', | |||||
| link: '#', | |||||
| target: '_self', | |||||
| }, | |||||
| moreCta: null, | |||||
| }; | |||||
| export const GenericEventOverviewStage = Template.bind({}); | |||||
| GenericEventOverviewStage.args = { | |||||
| imageSrc: null, | |||||
| } | |||||
| export const EventOverviewStageWithImage = Template.bind({}); | |||||
| EventOverviewStageWithImage.args = {} | |||||
| export const EventOverviewStageWithBackgroundImage = Template.bind({}); | |||||
| EventOverviewStageWithBackgroundImage.args = { | |||||
| imageSrc: null, | |||||
| backgroundImage: './logos/election-header.jpg', | |||||
| } | |||||
| export const EventOverviewStageFirstElement = Template.bind({}); | |||||
| EventOverviewStageFirstElement.args = { | |||||
| isFirstElement: true, | |||||
| } | |||||
| @@ -0,0 +1,75 @@ | |||||
| import './eventoverview-stage.scss'; | |||||
| import {createElement, createImage} from "../../_global/scripts/helpers"; | |||||
| import {createProgressBar} from "../../atoms/progress-bar/ProgressBarComponent"; | |||||
| import {createButton} from "../../atoms/button/ButtonComponent"; | |||||
| export const createEventOverviewStage = ({ | |||||
| imageSrc = 'https://source.unsplash.com/2vCqH34PqWs/1080x648', | |||||
| kicker = 'Noch 7 Tage offen', | |||||
| headline = 'Jetzt und digital mitreden', | |||||
| copy = 'Mit der digitalen Beteiligung erhalten Mitgliedsunternehmen die Möglichkeit, sich einfach und schnell über laufende Verfahren und Abstimmungen zu informieren und sich aktiv daran zu beteiligen.', | |||||
| moreCta = { | |||||
| label: 'Mehr Infos', | |||||
| link: '#', | |||||
| target: '_self', | |||||
| }, | |||||
| buttonCta = { | |||||
| label: 'Jetzt beteiligen', | |||||
| link: '#', | |||||
| target: '_self', | |||||
| }, | |||||
| showProgress = true, | |||||
| progress = 60, | |||||
| backgroundImage = null, | |||||
| isFirstElement = false, | |||||
| }) => { | |||||
| const hasImage = imageSrc && imageSrc.length > 0; | |||||
| const section = createElement('section', ['eventoverview', 'eventoverview-stage']); | |||||
| const container = createElement('div', ['container'], null, section); | |||||
| const row = createElement('div', ['row'], null, container); | |||||
| const col = createElement('div', ['col'], null, row); | |||||
| const tb = createElement('div', ['text-box'], null, col); | |||||
| if (backgroundImage && backgroundImage.length > 0) { | |||||
| //section.content('style=background: red;'); | |||||
| section.style = 'background-image: url(' + backgroundImage + ');'; | |||||
| section.classList.add('background-image'); | |||||
| } | |||||
| if (isFirstElement) { | |||||
| section.classList.add('first-element'); | |||||
| } | |||||
| if (kicker && kicker.length > 0) { | |||||
| createElement('p', ['kicker'], kicker, tb); | |||||
| } | |||||
| if (showProgress) { | |||||
| tb.appendChild(createProgressBar({progress})); | |||||
| } | |||||
| createElement('h1', ['like-h2'], headline, tb); | |||||
| createElement('p', [], copy, tb); | |||||
| if (moreCta) { | |||||
| const more = createElement('a', [], moreCta.label, tb); | |||||
| more.href = moreCta.link; | |||||
| more.target = moreCta.target; | |||||
| } | |||||
| if (buttonCta) { | |||||
| const button = createButton({ | |||||
| elementType: 'a', | |||||
| link: buttonCta.link, | |||||
| color: 'white', | |||||
| label: buttonCta.label, | |||||
| iconPosition: 'icon-right', | |||||
| icon: 'small-arrow-right-simple', | |||||
| }); | |||||
| tb.appendChild(button); | |||||
| } | |||||
| if (hasImage) { | |||||
| section.classList.add('image-stage'); | |||||
| const ib = createElement('div', ['image-box'], null, col); | |||||
| createImage(imageSrc, 1080, 648, 'Beteiligung', [], ib); | |||||
| } | |||||
| return section; | |||||
| } | |||||
| @@ -0,0 +1,26 @@ | |||||
| export const eventOverviewStageData = [ | |||||
| { | |||||
| title: 'Beratung und Service', | |||||
| link: '#', | |||||
| }, | |||||
| { | |||||
| title: 'Interessenvertretung', | |||||
| link: '#', | |||||
| }, | |||||
| { | |||||
| title: 'Aus- und Weiterbildung', | |||||
| link: '#', | |||||
| }, | |||||
| { | |||||
| title: 'Unsere Region', | |||||
| link: '#', | |||||
| }, | |||||
| { | |||||
| title: 'Handelskammer vor Ort', | |||||
| link: '#', | |||||
| }, | |||||
| { | |||||
| title: 'Veranstaltungen', | |||||
| link: '#', | |||||
| } | |||||
| ] | |||||
| @@ -0,0 +1,163 @@ | |||||
| @import '../../_global/styles/mixins'; | |||||
| @import '../../_global/styles/vars'; | |||||
| .eventoverview-stage { | |||||
| background-image: url('./beteiligung-cover.jpg'); | |||||
| background-size: cover; | |||||
| color: white; | |||||
| min-height: calc(18vw + 300px); | |||||
| display: flex; | |||||
| align-items: center; | |||||
| margin: 0; | |||||
| &.background-image { | |||||
| background-size: cover; | |||||
| background-position: 50% 50%; | |||||
| } | |||||
| &.first-element { | |||||
| @media(min-width: 1400px) { | |||||
| margin-top: -60px; | |||||
| } | |||||
| } | |||||
| .kicker { | |||||
| margin-bottom: 0.6em; | |||||
| } | |||||
| .btn { | |||||
| margin-top: 0.8em; | |||||
| margin-bottom: 0.4em; | |||||
| } | |||||
| .text-box { | |||||
| max-width: 580px; | |||||
| padding: calc(30px + 1vw) 0; | |||||
| } | |||||
| a:not(.btn) { | |||||
| color: white; | |||||
| + .btn { | |||||
| margin-left: 30px; | |||||
| } | |||||
| } | |||||
| .progress { | |||||
| --color-bg: var(--theme-color-white); | |||||
| --color-fg: var(--theme-color-white); | |||||
| --bg-opacity: 0.4; | |||||
| + h1, + .text-2 { | |||||
| margin-top: 0.7em; | |||||
| } | |||||
| } | |||||
| &.image-stage { | |||||
| position: relative; | |||||
| background-image: none; | |||||
| background-color: var(--theme-color-primary); | |||||
| overflow: hidden; | |||||
| z-index: 1; | |||||
| &::before { | |||||
| content: ""; | |||||
| position: absolute; | |||||
| left: 0; | |||||
| right: 50%; | |||||
| top: 0; | |||||
| bottom: 0; | |||||
| margin: -15% 0 -15% 0; | |||||
| background-color: var(--theme-color-primary); | |||||
| } | |||||
| .text-box { | |||||
| position: relative; | |||||
| } | |||||
| .image-box { | |||||
| position: absolute; | |||||
| left: 45%; | |||||
| right: 0; | |||||
| top: 0; | |||||
| bottom: 0; | |||||
| z-index: -1; | |||||
| img { | |||||
| position: relative; | |||||
| display: block; | |||||
| width: 100%; | |||||
| height: 100%; | |||||
| object-fit: cover; | |||||
| opacity: 1; | |||||
| transition: 0.4s ease; | |||||
| &.loading { | |||||
| opacity: 0; | |||||
| } | |||||
| } | |||||
| } | |||||
| @media(max-width: 1200px) { | |||||
| &::before { | |||||
| min-width: 560px; | |||||
| } | |||||
| .text-box { | |||||
| max-width: 480px; | |||||
| } | |||||
| } | |||||
| @media(min-width: 1000px) { | |||||
| &::before { | |||||
| border-top-right-radius: 28% 50%; | |||||
| border-bottom-right-radius: 28% 50%; | |||||
| min-width: 650px; | |||||
| } | |||||
| } | |||||
| @media(max-width: 999px) { | |||||
| padding-bottom: 75%; | |||||
| &::before { | |||||
| top: 0; | |||||
| bottom: 0; | |||||
| left: 0; | |||||
| right: 0; | |||||
| margin: 0 -28% 67%; | |||||
| border-bottom-left-radius: 50% 28%; | |||||
| border-bottom-right-radius: 50% 28%; | |||||
| min-width: 0; | |||||
| } | |||||
| .col { | |||||
| padding: 0 var(--col-padding); | |||||
| } | |||||
| .image-box { | |||||
| position: absolute; | |||||
| top: auto; | |||||
| left: 0; | |||||
| &::before { | |||||
| content: ''; | |||||
| position: relative; | |||||
| display: block; | |||||
| padding-top: 75%; | |||||
| } | |||||
| img { | |||||
| position: absolute; | |||||
| top: 0; | |||||
| left: 0; | |||||
| } | |||||
| } | |||||
| .text-box { | |||||
| max-width: none; | |||||
| margin-bottom: 0; | |||||
| padding-bottom: 24px; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||