@blateral/b.kit 2.7.2 → 2.7.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"sections.js","sources":["../src/components/sections/Accordion.tsx","../src/components/blocks/Alert.tsx","../src/components/sections/AlertList.tsx","../src/components/sections/Article.tsx","../src/components/sections/CallToAction.tsx","../src/components/sections/CardList.tsx","../src/components/sections/ComparisonSlider.tsx","../src/components/blocks/PromotionCard.tsx","../src/components/sections/CrossPromotion.tsx","../src/components/blocks/Fact.tsx","../src/components/sections/FactGrid.tsx","../src/components/sections/FactList.tsx","../src/components/blocks/Feature.tsx","../src/components/sections/FeatureList.tsx","../src/components/sections/Gallery.tsx","../src/components/sections/IconList.tsx","../src/components/sections/IndexList.tsx","../src/components/sections/Intro.tsx","../src/components/blocks/NavBlock.tsx","../src/components/sections/NavList.tsx","../src/components/sections/NumberList.tsx","../src/components/sections/ParallaxBackground.tsx","../src/components/sections/Poster.tsx","../src/components/sections/PriceList.tsx","../src/components/blocks/PriceTag.tsx","../src/components/sections/PriceTable.tsx","../src/components/sections/Quote.tsx","../src/components/sections/SimpleImage.tsx","../src/components/sections/SocialWall.tsx","../src/components/sections/Table.tsx","../src/components/sections/Teaser.tsx","../src/components/sections/TeaserWide.tsx","../src/components/sections/Timeline.tsx","../src/components/sections/Video.tsx","../src/components/sections/RawVideo.tsx","../src/components/sections/Map.tsx","../src/components/sections/HtmlCode.tsx"],"sourcesContent":["import Plus from 'components/base/icons/Plus';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { spacings, getColors as color, mq } from 'utils/styles';\nimport Minus from 'components/base/icons/Minus';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { generateFAQ } from 'utils/structuredData';\nimport Grid, { gridSettings } from 'components/base/Grid';\n\nconst AccordionContainer = styled.div`\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst View = styled.details``;\n\nconst AccordionHead = styled.summary<{\n isInverted?: boolean;\n hasBg?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n padding: ${spacings.nudge * 2}px;\n margin: 0;\n border: none;\n outline: none;\n background: none;\n user-select: none;\n list-style: none;\n\n background: ${({ isInverted, hasBg, theme }) =>\n isInverted || hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n cursor: pointer;\n transition: background 0.2s ease-in-out;\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 3}px;\n }\n\n &::-webkit-details-marker {\n display: none;\n }\n\n &::marker {\n display: none;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n background: ${({ theme, isInverted, hasBg }) =>\n isInverted || hasBg\n ? color(theme).elementBg.lightHover\n : color(theme).elementBg.mediumHover};\n }\n }\n\n &:focus {\n background: ${({ theme, isInverted, hasBg }) =>\n isInverted || hasBg\n ? color(theme).elementBg.lightHover\n : color(theme).elementBg.mediumHover};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst Column = styled(Copy)`\n flex: 1 1 0;\n`;\n\nconst AccordionText = styled.div<{\n isInverted?: boolean;\n hasBg?: boolean;\n hasAside?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n padding: ${spacings.nudge * 2}px;\n margin-top: 2px;\n background: ${({ isInverted, hasBg, theme }) =>\n isInverted || hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n & > * {\n max-width: 880px;\n }\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.semilarge} {\n flex-direction: row;\n\n & > * + * {\n margin-top: 0px;\n margin-left: ${gridSettings.gutter}px;\n }\n }\n`;\n\ninterface AccordionItem {\n label?: string;\n text?: string;\n aside?: string;\n}\n\nconst AccordionBlock: React.FC<\n AccordionItem & {\n isSelected?: boolean;\n onClick?: () => void;\n isInverted?: boolean;\n hasBg?: boolean;\n itemIcon?: (props: { isSelected: boolean }) => React.ReactNode;\n className?: string;\n }\n> = ({\n label,\n text,\n aside,\n isSelected,\n onClick,\n hasBg,\n isInverted,\n itemIcon,\n className,\n}) => {\n const { colors } = useLibTheme();\n\n return (\n <View open={isSelected} onToggle={onClick} className={className}>\n <AccordionHead isInverted={isInverted} hasBg={hasBg}>\n <Copy renderAs=\"span\" size=\"big\" type=\"copy-b\">\n {label}\n </Copy>\n <span>\n {itemIcon ? (\n itemIcon({ isSelected: isSelected || false })\n ) : isSelected ? (\n <Minus iconColor={colors.text.default} />\n ) : (\n <Plus iconColor={colors.text.default} />\n )}\n </span>\n </AccordionHead>\n <AccordionText\n isInverted={isInverted}\n hasBg={hasBg}\n hasAside={!!aside}\n >\n {text && <Column type=\"copy\" innerHTML={text} />}\n {aside && <Column type=\"copy\" innerHTML={aside} />}\n </AccordionText>\n </View>\n );\n};\n\nconst Accordion: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of accordion items */\n items?: AccordionItem[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom item state icon */\n itemIcon?: (props: { isSelected: boolean }) => React.ReactNode;\n}> = ({ anchorId, items, bgMode, itemIcon }) => {\n const [currentItems, setCurrentItems] = React.useState<number[]>([]);\n\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {items && generateFAQ(items)}\n <Wrapper addWhitespace>\n <Grid.Row gutter={0}>\n <Grid.Col>\n <AccordionContainer aria-label=\"Accordion Control Group Buttons\">\n {items?.map(({ label, text, aside }, i) => {\n const isSelected =\n currentItems.indexOf(i) !== -1;\n return (\n <AccordionBlock\n key={`${label}_${i}`}\n isSelected={isSelected}\n label={label}\n text={text}\n aside={aside}\n onClick={() => {\n setCurrentItems((prev) => {\n const copy = [...prev];\n const index = copy.indexOf(i);\n if (index === -1) {\n copy.push(i);\n } else {\n copy.splice(index, 1);\n }\n return copy;\n });\n }}\n isInverted={isInverted}\n hasBg={hasBg}\n itemIcon={itemIcon}\n />\n );\n })}\n </AccordionContainer>\n </Grid.Col>\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const AccordionComponent = Accordion;\nexport default withLibTheme(Accordion);\n","import Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled from 'styled-components';\nimport {\n getColors as color,\n getGlobals as global,\n spacings,\n} from 'utils/styles';\nimport StatusFormatter from '../../utils/statusFormatter';\nimport Info from '../base/icons/Info';\n\nconst View = styled.div<{ isInverted?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n -ms-grid-columns: min-content 1fr;\n grid-template-columns: min-content 1fr;\n -ms-grid-rows: min-content 1fr;\n grid-auto-rows: min-content 1fr;\n\n text-decoration: none;\n\n position: relative;\n border: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n padding: ${spacings.nudge * 3}px;\n\n text-align: left;\n width: 100%;\n cursor: pointer;\n\n transition: color ease-in-out 0.2s, border 0.2s ease-in-out;\n\n & > * + * {\n margin-left: ${spacings.nudge * 3}px;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n border: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n }\n`;\n\nconst Icon = styled.div`\n display: flex;\n align-items: center;\n\n & > * {\n height: 48px;\n width: 48px;\n }\n`;\n\nconst MainLabel = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst Content = styled.div`\n margin-top: ${spacings.nudge}px;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n`;\n\nconst ViewLink = styled(Link)`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n && {\n margin: 0;\n }\n\n &:focus-within {\n outline: dotted 2px\n ${({ isInverted, theme }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 4px;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n`;\n\nexport interface AlertProps {\n /** Invert colors for use on dark backgrounds */\n isInverted?: boolean;\n\n /** Alert title text */\n title?: string;\n\n /** Alert date */\n date?: Date;\n\n /** Additional description text (richtext) */\n description?: string;\n\n /** Alert link that covers hole element */\n link?: LinkProps;\n\n /** Function to inject custom alert icon */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst Alert: React.FC<AlertProps & { className?: string }> = ({\n isInverted,\n title,\n date,\n description,\n link,\n customIcon,\n className,\n}) => {\n let formattedDate = '';\n if (date) {\n const formatter = new StatusFormatter(\n date.getTime(),\n '',\n 'dd. MMMM yyyy',\n 'hh:mm',\n 'de'\n );\n formattedDate = formatter.getFormattedDate();\n }\n\n return (\n <View isInverted={isInverted} data-sheet=\"alert\" className={className}>\n <Icon>{customIcon ? customIcon({ isInverted }) : <Info />}</Icon>\n <MainLabel>\n {title && (\n <Title textColor=\"inherit\" size=\"medium\" type=\"copy-b\">\n {title}\n </Title>\n )}\n </MainLabel>\n <span />\n <Content>\n {description && (\n <Copy\n isInverted={isInverted}\n size=\"small\"\n innerHTML={description}\n />\n )}\n {date && (\n <Copy size=\"small\" isInverted={isInverted}>\n {formattedDate}\n </Copy>\n )}\n </Content>\n {link && (\n <ViewLink\n {...link}\n ariaLabel={link?.href ? title : undefined}\n />\n )}\n </View>\n );\n};\n\nexport default Alert;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { mq, spacings } from 'utils/styles';\nimport Wrapper from 'components/base/Wrapper';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Alert, { AlertProps } from '../blocks/Alert';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\n\nconst List = styled.ul`\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n }\n`;\n\nconst ListItem = styled.li<{ itemsPerRow: number }>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n flex: 1 1 100%;\n\n @media ${mq.medium} {\n flex: 0 1 50%;\n max-width: 50%;\n\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n\n @media ${mq.large} {\n flex: 0 1 ${({ itemsPerRow }) => (1 / itemsPerRow) * 100}%;\n max-width: 600px;\n\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n`;\n\nconst AlertList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of alert items */\n items?: Pick<AlertProps, 'title' | 'date' | 'description' | 'link'>[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom alert icon */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}> = ({ anchorId, items, bgMode, customIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const alertCount = items?.length || 0;\n const itemsPerRow = alertCount % 3 === 1 || alertCount === 2 ? 2 : 3;\n\n const { sheetRefs: alertRefs } = useEqualSheetHeight<HTMLLIElement>({\n listLength: alertCount,\n identifiers: ['[data-sheet=\"alert\"]'],\n responsive: {\n small: 1,\n medium: 2,\n semilarge: 2,\n large: itemsPerRow,\n xlarge: itemsPerRow,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <ListItem\n key={i}\n itemsPerRow={itemsPerRow}\n ref={alertRefs[i]}\n >\n <Alert\n {...item}\n isInverted={isInverted}\n customIcon={customIcon}\n />\n </ListItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const AlertListComponent = AlertList;\nexport default withLibTheme(AlertList);\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Title, { TitleSize } from 'components/blocks/Title';\nimport Copy from 'components/typography/Copy';\nimport Wrapper from 'components/base/Wrapper';\nimport { spacings, mq } from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Grid from 'components/base/Grid';\n\nconst StyledTitle = styled(Title)`\n &:not(:last-child) {\n margin-bottom: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n max-width: 880px;\n }\n`;\n\nconst ContentText = styled(Copy)`\n text-align: left;\n`;\n\nconst StyledActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n`;\n\nconst Article: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Main title text */\n title?: string;\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Main title size */\n titleSize?: TitleSize;\n /** Superior title that stands above main title */\n superTitle?: string;\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Bold intro text underneath the title (limited richtext capabilites) */\n intro?: string;\n /** Main article richtext */\n text?: string;\n /** Additional article richtext in a second column */\n asideText?: string;\n /** Controls width of left text column (8/12 or 6/12) */\n halfAside?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n title,\n titleAs = 'h2',\n titleSize = 'heading-2',\n superTitle,\n superTitleAs,\n intro,\n text,\n asideText,\n halfAside,\n bgMode,\n primaryAction,\n secondaryAction,\n}) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasContent = intro || text || asideText;\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {(title || superTitle) && (\n <StyledTitle\n title={title}\n titleAs={titleAs}\n titleSize={titleSize}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n colorMode={isInverted ? 'inverted' : 'default'}\n />\n )}\n {hasContent && (\n <Grid.Row valign=\"top\">\n <Grid.Col\n semilarge={{ span: halfAside ? 6 / 12 : 8 / 12 }}\n >\n {intro && (\n <ContentText\n type=\"copy-b\"\n isInverted={isInverted}\n innerHTML={intro}\n />\n )}\n {text && (\n <ContentText\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={text}\n />\n )}\n </Grid.Col>\n {asideText && (\n <Grid.Col\n semilarge={{\n span: halfAside ? 6 / 12 : 4 / 12,\n }}\n >\n <ContentText\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={asideText}\n />\n </Grid.Col>\n )}\n </Grid.Row>\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={primaryAction && primaryAction(isInverted)}\n secondary={\n secondaryAction && secondaryAction(isInverted)\n }\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const ArticleComponent = Article;\nexport default withLibTheme(Article);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getGlobals as global, mq, spacings } from 'utils/styles';\nimport Copy from 'components/typography/Copy';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { gridSettings, getGridWidth } from 'components/base/Grid';\n\nconst ContactView = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0 auto;\n width: 100%;\n\n text-align: left;\n hyphens: auto;\n overflow-wrap: break-word;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n flex-direction: row;\n\n & > * + * {\n margin-top: 0px;\n margin-left: ${gridSettings.gutter}px;\n }\n }\n`;\n\nconst Avatar = styled.img<{ isInverted?: boolean }>`\n align-self: center;\n display: block;\n border: solid 1px transparent;\n border-radius: 50%;\n width: 180px;\n height: 180px;\n\n background: ${({ theme, isInverted }) =>\n isInverted\n ? global(theme).sections.imagePlaceholderBg.inverted\n : global(theme).sections.imagePlaceholderBg.default};\n\n @media ${mq.semilarge} {\n display: block;\n width: 190px;\n height: 190px;\n }\n`;\n\nconst Description = styled(Copy)`\n text-align: center;\n\n .icon-label {\n flex-direction: column;\n }\n\n .icon-label > * + * {\n margin-left: 0;\n margin-top: ${spacings.nudge * 2}px;\n }\n\n & > * {\n justify-content: center;\n }\n\n @media ${mq.semilarge} {\n text-align: left;\n\n & > * {\n justify-content: left;\n }\n\n .icon-label {\n flex-direction: row;\n }\n\n .icon-label > * + * {\n margin-left: ${spacings.nudge * 2}px;\n margin-top: 0;\n }\n }\n`;\n\nexport interface ContactBoxProps {\n isInverted?: boolean;\n description?: string;\n avatar?: { src: string; alt: string };\n}\n\nconst ContactBox: FC<ContactBoxProps & { className?: string }> = ({\n isInverted,\n description,\n avatar,\n className,\n}) => {\n return (\n <ContactView className={className}>\n <Avatar\n src={avatar?.src}\n alt={avatar?.alt}\n isInverted={isInverted}\n />\n {description && (\n <Description\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={description}\n />\n )}\n </ContactView>\n );\n};\n\nconst StyledIntro = styled(IntroBlock)<{ hasDecorator?: boolean }>`\n max-width: 880px;\n margin-right: auto;\n margin-left: auto;\n\n @media ${mq.xlarge} {\n & > *:first-child {\n min-height: ${({ hasDecorator }) => hasDecorator && '110px'};\n }\n }\n`;\n\nconst StyledContactBox = styled(ContactBox)`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.semilarge} {\n max-width: ${getGridWidth({ cols: 8 })};\n margin-right: auto;\n margin-left: auto;\n }\n\n @media ${mq.large} {\n max-width: ${getGridWidth({ cols: 6 })};\n }\n`;\n\nconst StyledActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.medium} {\n display: block;\n text-align: center;\n }\n`;\n\nconst NewsletterWrapper = styled.div`\n width: 100%;\n margin: 0 auto;\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.semilarge} {\n max-width: 400px;\n }\n`;\n\nconst Badge = styled.div`\n display: none;\n position: relative;\n height: 241px;\n width: 241px;\n margin-left: auto;\n margin-bottom: -135px;\n z-index: 3;\n\n @media ${mq.xlarge} {\n display: block;\n margin-right: ${1440 * (1 / 28) + 'px'};\n }\n`;\n\nexport interface CtaActionProps {\n isInverted?: boolean;\n isTextCentered?: boolean;\n}\n\nexport const CallToAction: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Main title text */\n title?: string;\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Superior title that stands above main title */\n superTitle?: string;\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Bold text underneath the title (limited richtext capabilites) */\n text?: string;\n /** Props for contact area */\n contact?: ContactBoxProps;\n /** Show Newsletter defined by inject function newsFormMain. Only visible if React node is defined! */\n hasNewsletter?: boolean;\n /** Badge decorator visible only on large screens */\n badge?: React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (props: CtaActionProps) => React.ReactNode;\n /** Function to inject custom secondary button */\n secondaryAction?: (props: CtaActionProps) => React.ReactNode;\n /** Function to inject newsletter form */\n newsFormMain?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n title,\n titleAs = 'h2',\n superTitle,\n superTitleAs,\n text,\n contact,\n badge,\n primaryAction,\n secondaryAction,\n hasNewsletter,\n newsFormMain,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted ? colors.sectionBg.dark : colors.sectionBg.medium\n }\n bgMode={bgMode ? mapToBgMode(bgMode, true) : 'full'}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n {badge && <Badge>{badge}</Badge>}\n {title && (\n <StyledIntro\n isCentered\n colorMode={isInverted ? 'inverted' : 'default'}\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n hasDecorator={!!badge}\n text={text}\n />\n )}\n\n {contact && (\n <StyledContactBox\n isInverted={isInverted}\n description={contact.description}\n avatar={contact.avatar}\n />\n )}\n {newsFormMain && hasNewsletter && (\n <NewsletterWrapper>\n {newsFormMain(isInverted)}\n </NewsletterWrapper>\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction &&\n primaryAction({ isInverted, isTextCentered: true })\n }\n secondary={\n secondaryAction &&\n secondaryAction({\n isInverted,\n isTextCentered: true,\n })\n }\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const CallToActionComponent = CallToAction;\nexport default withLibTheme(CallToAction);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled, { css } from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport {\n spacings,\n getColors as color,\n mq,\n getGlobals as global,\n} from 'utils/styles';\n\nconst View = styled.div<{\n isInverted?: boolean;\n cardColor?: string;\n hasLink?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n justify-content: center;\n position: relative;\n color: ${({ theme }) => color(theme).text.inverted};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n min-height: 110px;\n\n overflow: hidden;\n\n @media ${mq.medium} {\n display: block;\n padding-top: 85%;\n }\n`;\n\nconst SolidView = styled(View)`\n background-color: ${({ theme, isInverted, cardColor }) =>\n cardColor\n ? cardColor\n : isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n transition: background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n\n ${({ hasLink }) =>\n hasLink &&\n css`\n cursor: pointer;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n }\n }\n `}\n`;\n\nconst ImageView = styled(View)`\n transition: box-shadow 0.2s ease-in-out;\n\n ${({ hasLink }) =>\n hasLink &&\n css`\n @media (hover: hover) and (pointer: fine) {\n cursor: pointer;\n\n img {\n -webkit-backface-visibility: hidden;\n -ms-transform: translateZ(0); /* IE 9 */\n -webkit-transform: translateZ(\n 0\n ); /* Chrome, Safari, Opera */\n transform: translateZ(0);\n transform-origin: center;\n transition: transform 0.2s ease-in-out;\n }\n\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n\n img {\n transform: scale(1.03);\n }\n }\n }\n `}\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme }) => global(theme).sections.imageTextGradient};\n pointer-events: none;\n }\n\n @media ${mq.medium} {\n padding-top: 0;\n }\n`;\n\nconst StyledImage = styled(Image)`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n\n display: block;\n width: 100%;\n height: 100%;\n\n object-fit: cover;\n object-position: center;\n\n @media ${mq.medium} {\n position: relative;\n }\n`;\n\nconst Content = styled.div<{ hasIcon?: boolean }>`\n z-index: 1;\n\n padding: ${spacings.nudge * 3}px;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n\n display: flex;\n flex-direction: ${({ hasIcon }) => (hasIcon ? 'column' : 'row')};\n justify-content: space-between;\n align-items: ${({ hasIcon }) => (hasIcon ? 'flex-start' : 'flex-end')};\n\n & > * + * {\n margin-left: 0;\n }\n }\n`;\n\nconst TextContainer = styled.div`\n width: 100%;\n overflow: hidden;\n\n & > * + * {\n margin-top: ${spacings.nudge / 2}px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n max-width: 100%;\n\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n overflow: hidden;\n`;\n\nconst Footer = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst SubLabel = styled(Copy)`\n display: inline-block;\n\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n`;\n\nconst Icon = styled.div`\n height: 100%;\n max-height: 60px;\n min-height: 40px;\n min-width: 40px;\n\n * {\n height: 100%;\n }\n\n svg,\n img {\n width: 100%;\n }\n\n @media ${mq.medium} {\n svg,\n img {\n width: auto;\n }\n }\n`;\n\nconst CardLink = styled(Link)<{ isInverted?: boolean }>`\n z-index: 1;\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n outline-color: ${({ theme }) => color(theme).primary.default};\n\n &:focus {\n border: 2px dotted ${({ theme }) => color(theme).primary.invertedHover};\n outline-offset: 4px;\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n`;\n\nexport interface CardProps {\n isInverted?: boolean;\n title?: string;\n subLabel?: string;\n image?: ImageProps;\n link?: LinkProps;\n decorator?: (props: { isInverted?: boolean }) => React.ReactNode;\n cardColor?: string;\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst Card: React.FC<\n Omit<CardProps, 'coverSpace' | 'ratios'> & {\n className?: string;\n }\n> = ({\n isInverted,\n title,\n subLabel,\n image,\n link,\n decorator,\n cardColor,\n customIcon,\n}) => {\n const { colors } = useLibTheme();\n const CardView = image && image.small ? ImageView : SolidView;\n const defaultCardColor = isInverted\n ? colors.primary.inverted\n : colors.primary.default;\n\n return (\n <CardView\n isInverted={isInverted}\n cardColor={cardColor || defaultCardColor}\n hasLink={!!link?.href}\n >\n {image?.small && (\n <StyledImage\n {...image}\n coverSpace\n isInverted={isInverted}\n ratios={{\n small: { w: 352, h: 108 },\n medium: { w: 286, h: 244 },\n }}\n />\n )}\n <Content hasIcon={!!customIcon}>\n {customIcon ? <Icon>{customIcon({})}</Icon> : ''}\n <TextContainer>\n {title && (\n <Title size=\"big\" type=\"copy\" isInverted>\n {title}\n </Title>\n )}\n {subLabel && (\n <Footer>\n <SubLabel type=\"copy-b\" size=\"big\" isInverted>\n {subLabel}\n </SubLabel>\n {decorator ? decorator({ isInverted }) : undefined}\n </Footer>\n )}\n </TextContainer>\n </Content>\n {link?.href && (\n <CardLink\n isInverted={isInverted}\n {...link}\n ariaLabel={title || undefined}\n />\n )}\n </CardView>\n );\n};\n\nconst List = styled.ul`\n padding: 0;\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n }\n`;\n\nconst CardItem = styled.li<{ isEqual?: boolean; threeCols?: boolean }>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n\n width: 100%;\n\n @media ${mq.medium} {\n flex: 0 0 50%;\n max-width: 370px;\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n flex: 0 0 33.33%;\n }\n\n @media (min-width: 75em) {\n flex: ${({ isEqual, threeCols }) =>\n threeCols ? '0 0 33.33%' : isEqual && '0 0 25%'};\n }\n`;\n\nconst CardList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with card item settings */\n items?: Omit<CardProps, 'decorator' | 'isInverted'>[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom decoration icon */\n decorator?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Force maximal three items per row */\n maxThreeCols?: boolean;\n}> = ({ anchorId, items, bgMode, decorator, maxThreeCols }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <CardItem\n key={i}\n isEqual={items.length % 2 === 0}\n threeCols={maxThreeCols}\n >\n <Card\n {...item}\n isInverted={isInverted}\n decorator={decorator}\n />\n </CardItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const CardListComponent = CardList;\nexport default withLibTheme(CardList);\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { getColors as color, spacings } from 'utils/styles';\nimport ArrowLeftRight from 'components/base/icons/ArrowLeftRight';\nimport Copy from 'components/typography/Copy';\nimport useIE from 'utils/useIE';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst clamp = (num: number, min: number, max: number) => {\n return Math.min(Math.max(num, min), max);\n};\n\nconst Images = styled.div`\n position: relative;\n cursor: col-resize;\n & > * {\n pointer-events: none;\n user-select: none;\n }\n`;\n\nconst BackgroundImg = styled(Image)`\n position: relative;\n display: block;\n width: 100%;\n`;\n\nconst ForegroundContainer = styled.div<{\n hasTransition?: boolean;\n initalValue?: number;\n hasAnim?: boolean;\n}>`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 50%;\n overflow: hidden;\n transition: width ${({ hasTransition }) => (hasTransition ? 0.1 : 0)}s\n ease-in-out;\n ${({ hasAnim, initalValue }) =>\n hasAnim &&\n css`\n animation-name: ForegroundAnim;\n animation-duration: 5s;\n animation-iteration-count: 1;\n animation-play-state: ${hasAnim && 'running'};\n animation-timing-function: ease-in-out;\n @keyframes ForegroundAnim {\n 0% {\n width: ${initalValue\n ? clamp(initalValue * 100, 0, 100) + '%'\n : '50%'};\n }\n 33% {\n width: ${initalValue\n ? clamp(initalValue * 100 + 10, 0, 100) + '%'\n : '60%'};\n }\n 66% {\n width: ${initalValue\n ? clamp(initalValue * 100 - 10, 0, 100) + '%'\n : '40%'};\n }\n 100% {\n width: ${initalValue ? initalValue * 100 + '%' : '50%'};\n }\n }\n `}\n`;\n\nconst ForegroundImg = styled(Image)`\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n max-width: none;\n object-fit: cover;\n\n img {\n height: auto;\n width: auto;\n }\n`;\n\nconst ForegroundOverlay = styled.div<{ color: string }>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: ${({ color }) => color};\n`;\n\nconst ImageLabel = styled(Copy)<{ bgColor?: string }>`\n height: ${spacings.spacer}px;\n padding: ${spacings.nudge}px ${spacings.spacer}px ${spacings.spacer}px\n ${spacings.spacer}px;\n background: ${({ bgColor }) => bgColor && bgColor};\n`;\n\nconst ForegroundLabel = styled(ImageLabel)`\n position: absolute;\n bottom: ${spacings.spacer}px;\n left: ${spacings.spacer}px;\n pointer-events: none;\n white-space: nowrap;\n`;\n\nconst BackgroundLabel = styled(ImageLabel)`\n position: absolute;\n bottom: ${spacings.spacer}px;\n right: ${spacings.spacer}px;\n pointer-events: none;\n white-space: nowrap;\n`;\n\nconst ControlContainer = styled.div<{\n hasTransition?: boolean;\n hasAnim?: boolean;\n initalValue?: number;\n}>`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n transition: left ${({ hasTransition }) => (hasTransition ? 0.1 : 0)}s\n ease-in-out;\n ${({ hasAnim, initalValue }) =>\n hasAnim &&\n css`\n animation-name: ControlAnim;\n animation-duration: 5s;\n animation-iteration-count: 1;\n animation-play-state: ${hasAnim && 'running'};\n animation-timing-function: ease-in-out;\n @keyframes ControlAnim {\n 0% {\n left: ${initalValue\n ? clamp(initalValue * 100, 0, 100) + '%'\n : '50%'};\n }\n 33% {\n left: ${initalValue\n ? clamp(initalValue * 100 + 10, 0, 100) + '%'\n : '60%'};\n }\n 66% {\n left: ${initalValue\n ? clamp(initalValue * 100 - 10, 0, 100) + '%'\n : '40%'};\n }\n 100% {\n left: ${initalValue ? initalValue * 100 + '%' : '50%'};\n }\n }\n `}\n`;\n\nconst Control = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 54px;\n width: 54px;\n border: solid 2px ${({ theme }) => color(theme).elementBg.light};\n border-radius: 50%;\n background-color: ${({ theme }) => color(theme).elementBg.medium};\n`;\n\nconst ComparisonSlider: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n bgMode?: 'full' | 'inverted' | 'splitted';\n initialValue?: number;\n foregroundImg?: ImageProps;\n backgroundImg?: ImageProps;\n foregroundLabel?: string;\n backgroundLabel?: string;\n overlayColor?: string;\n labelColor?: string;\n dragControl?: React.ReactNode;\n enableControlAnim?: boolean;\n}> = ({\n anchorId,\n bgMode,\n initialValue,\n foregroundImg,\n backgroundImg,\n foregroundLabel,\n backgroundLabel,\n overlayColor = 'rgba(0, 0 , 0, 0.2)',\n labelColor = 'rgba(0, 0 , 0, 0.3)',\n dragControl,\n enableControlAnim,\n}) => {\n const isIE = useIE(true);\n const [slideValue, setSlideValue] = useState<number>(\n initialValue ? Math.min(Math.max(initialValue, 0), 1) : 0.5\n );\n const [isHolding, setIsHolding] = useState<boolean>(false);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n const [interacted, setInteracted] = useState<boolean>(true);\n const [sideOffset, setSideOffset] = useState<number>(0);\n const controlRef = useRef<HTMLDivElement | null>(null);\n const { colors } = useLibTheme();\n\n useEffect(() => {\n if (controlRef.current) {\n setSideOffset(controlRef.current.offsetWidth / 2);\n }\n }, []);\n\n useEffect(() => {\n const handleInitalLoad = () => {\n const options = {\n rootMargin: '0px',\n threshold: 1.0,\n };\n\n const observer = new IntersectionObserver((entries, observer) => {\n if (enableControlAnim && entries[0]?.isIntersecting) {\n // if control is first fully visible\n observer.unobserve(entries[0]?.target);\n setInteracted(false);\n }\n }, options);\n if (controlRef.current) observer.observe(controlRef.current);\n window.removeEventListener('load', handleInitalLoad);\n };\n\n // wait unitl user has scrolled once\n if (!isIE) {\n if (document.readyState === 'complete') handleInitalLoad();\n else window.addEventListener('load', handleInitalLoad);\n }\n\n return () => {\n window.removeEventListener('load', handleInitalLoad);\n };\n }, [enableControlAnim, isIE]);\n\n const setCurrentPos = (target: EventTarget & Element, clientX: number) => {\n if (target && clientX) {\n const relativeClientX = clientX - target.getBoundingClientRect().x;\n\n // check side offset\n if (\n relativeClientX >= sideOffset &&\n relativeClientX <=\n target.getBoundingClientRect().width - sideOffset\n ) {\n let percentage =\n relativeClientX / target.getBoundingClientRect().width;\n percentage = Math.min(Math.max(percentage, 0), 1);\n\n setSlideValue(percentage);\n }\n }\n };\n\n const handleClick = (ev: React.MouseEvent) => {\n const target = ev.currentTarget;\n if (target && ev.clientX) {\n setCurrentPos(target, ev.clientX);\n setInteracted(true);\n }\n };\n\n const handleMouseMove = (ev: React.MouseEvent) => {\n const target = ev.currentTarget;\n if (target && ev.clientX && isHolding) {\n setIsDragging(true);\n setInteracted(true);\n if (isDragging) setCurrentPos(target, ev.clientX);\n }\n };\n\n const handleTouchMove = (ev: React.TouchEvent<HTMLDivElement>) => {\n const target = ev.currentTarget;\n if (target && ev.touches[0]?.clientX) {\n setInteracted(true);\n setCurrentPos(target, ev.touches[0]?.clientX);\n }\n };\n\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper>\n {backgroundImg && foregroundImg && (\n <Images\n onClick={handleClick}\n onMouseMove={handleMouseMove}\n onMouseDown={() => {\n setIsDragging(false);\n setIsHolding(true);\n }}\n onMouseUp={() => {\n setIsDragging(false);\n setIsHolding(false);\n }}\n onMouseLeave={() => {\n setIsHolding(false);\n setIsDragging(false);\n }}\n onTouchMove={handleTouchMove}\n onTouchStart={() => setIsHolding(true)}\n onTouchEnd={() => setIsHolding(false)}\n >\n <BackgroundImg {...backgroundImg} />\n {backgroundLabel && (\n <BackgroundLabel\n textColor={colors.text.inverted}\n bgColor={labelColor}\n >\n {backgroundLabel}\n </BackgroundLabel>\n )}\n <ForegroundContainer\n hasTransition={!isHolding}\n hasAnim={!interacted}\n initalValue={initialValue}\n style={{ width: slideValue * 100 + '%' }}\n >\n <ForegroundImg {...foregroundImg} />\n {foregroundLabel && (\n <ForegroundLabel\n textColor={colors.text.inverted}\n bgColor={labelColor}\n >\n {foregroundLabel}\n </ForegroundLabel>\n )}\n <ForegroundOverlay color={overlayColor} />\n </ForegroundContainer>\n <ControlContainer\n ref={controlRef}\n hasTransition={!isHolding}\n hasAnim={!interacted}\n initalValue={initialValue}\n style={{ left: slideValue * 100 + '%' }}\n >\n {dragControl ? (\n dragControl\n ) : (\n <Control>\n <ArrowLeftRight\n iconColor={colors.elementBg.light}\n />\n </Control>\n )}\n </ControlContainer>\n </Images>\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const ComparisonSliderComponent = ComparisonSlider;\nexport default withLibTheme(ComparisonSlider);\n","import React, { forwardRef } from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport styled, { css } from 'styled-components';\n\nimport {\n spacings,\n getGlobals as global,\n mq,\n withRange,\n getColors as color,\n} from 'utils/styles';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport Title from 'components/blocks/Title';\nimport External from 'components/base/icons/External';\nimport { HeadlineTag } from 'components/typography/Heading';\n\nconst View = styled(Link)<{\n clickable?: boolean;\n}>`\n display: block;\n position: relative;\n width: 100%;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n outline: none;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme }) => global(theme).sections.imageTextGradient};\n pointer-events: none;\n }\n\n ${({ clickable, theme, isInverted }) =>\n clickable &&\n css`\n transition: box-shadow 0.2s ease-in-out;\n cursor: pointer;\n\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n }\n\n &:focus {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n outline: solid 2px\n ${isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 4px;\n\n color: ${isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n `}\n`;\n\nconst StyledImage = styled(Image)`\n width: 100%;\n height: 100%;\n min-height: 300px;\n\n img {\n height: 100%;\n }\n`;\n\nconst IntroContainer = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: auto;\n z-index: 1;\n\n padding: ${spacings.spacer}px ${spacings.nudge * 3}px;\n\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n\n /* required to align items at flex-end in ie11 */\n &:before {\n content: '';\n display: block;\n flex: 1 0 0px;\n }\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 5}px ${spacings.spacer}px;\n }\n`;\n\nconst StyledTitle = styled(Title)<{ clampTitle?: boolean }>`\n max-width: ${({ clampTitle }) =>\n clampTitle && (13 / 28) * spacings.wrapper + 'px'};\n`;\n\nconst ExternalIconHolder = styled.span`\n margin-left: ${spacings.nudge * 2}px;\n\n & > * {\n display: inline-block;\n }\n`;\n\nconst Icon = styled.div`\n ${withRange([60, 100], 'height')};\n ${withRange([60, 100], 'width')};\n\n position: absolute;\n top: ${spacings.nudge * 3}px;\n left: ${spacings.nudge * 3}px;\n\n & > * {\n ${withRange([60, 100], 'height')};\n ${withRange([60, 100], 'width')};\n }\n\n color: ${({ theme }) => color(theme).text.inverted};\n`;\n\nexport interface PromotionCardProps {\n /** Setup Card for dark backgrounds */\n isInverted?: boolean;\n /** Card image settings */\n image: ImageProps;\n /** Card title */\n title?: string;\n /** Card title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Superior card title that stands above main title */\n superTitle?: string;\n /** Superior card title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Href path */\n href?: string;\n /** Advanced href options */\n link?: LinkProps;\n /** Inject custom icon that indicates an external link */\n externalLinkIcon?: React.ReactNode;\n\n /** Function to inject icon in top left corner */\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst PromotionCard = forwardRef<\n HTMLAnchorElement,\n PromotionCardProps & { className?: string }\n>(\n (\n {\n isInverted,\n image,\n title,\n titleAs,\n superTitle,\n superTitleAs,\n href,\n link,\n externalLinkIcon,\n icon,\n className,\n },\n ref\n ) => {\n // fallback for older versions\n let linkObj = link;\n if (href && !link) {\n linkObj = {\n href: href,\n isExternal: false,\n };\n }\n\n const externalIconString = ReactDOMServer.renderToString(\n <ExternalIconHolder>\n {externalLinkIcon || <External />}\n </ExternalIconHolder>\n );\n\n return (\n <View\n ref={ref}\n clickable={!!href || !!link}\n {...linkObj}\n className={className}\n >\n <StyledImage {...image} isInverted={isInverted} coverSpace />\n {icon && <Icon>{icon({ isInverted })}</Icon>}\n {title && (\n <IntroContainer>\n <StyledTitle\n colorMode=\"onImage\"\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n title={\n linkObj?.isExternal\n ? title + externalIconString\n : title\n }\n titleAs={titleAs || 'div'}\n clampTitle\n />\n </IntroContainer>\n )}\n </View>\n );\n }\n);\n\nPromotionCard.displayName = 'PromotionCard';\n\nexport default PromotionCard;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport Grid, { gridSettings } from 'components/base/Grid';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\n\nimport PromotionCard, {\n PromotionCardProps,\n} from 'components/blocks/PromotionCard';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst Card = styled(PromotionCard)<{ isMain?: boolean }>`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n\n height: ${({ isMain }) => isMain && '100%'};\n\n flex: 1 0 auto;\n\n & + & {\n margin-top: ${gridSettings.gutter}px;\n }\n`;\n\nconst CrossPromotion: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Promotion card settings in main grid column (default: on right side). The size prop controls the width. */\n main?: Array<\n Omit<PromotionCardProps, 'externalLinkIcon' | 'isInverted'> & {\n size?: 'full' | 'half';\n }\n >;\n\n /** Promotion card settings in second grid column (default: on left side). The size prop controls the width. */\n aside?: Array<\n Omit<PromotionCardProps, 'externalLinkIcon' | 'isInverted'> & {\n size?: 'full' | 'half';\n }\n >;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Switching order of main and aside columns */\n isMirrored?: boolean;\n\n /** Inject custom icon that indicates an external link */\n externalLinkIcon?: React.ReactNode;\n}> = ({ anchorId, main, aside, bgMode, isMirrored, externalLinkIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, false, isMirrored)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {aside ? (\n isMirrored ? (\n <Grid.Row>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {main &&\n main.map((card, i) => (\n <Card\n key={i}\n isMain\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {aside.map((card, i) => (\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n </Grid.Row>\n ) : (\n <Grid.Row>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {aside.map((card, i) => (\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {main &&\n main.map((card, i) => (\n <Card\n key={i}\n isMain\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n </Grid.Row>\n )\n ) : (\n main && (\n <Grid.Row>\n {main.map((card, i) => (\n <Grid.Col\n semilarge={{\n span:\n (card.size === 'half' ? 6 : 12) /\n 12,\n }}\n key={i}\n >\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n )\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const CrossPromotionComponent = CrossPromotion;\nexport default withLibTheme(CrossPromotion);\n","import React, { forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { spacings, getGlobals as global } from 'utils/styles';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\n\nconst View = styled.div``;\n\nconst ImageContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n margin-bottom: ${spacings.nudge * 3}px;\n max-width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst Content = styled.div<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst Title = styled(Copy)``;\n\nconst SubTitle = styled(Copy)``;\n\nconst Text = styled(Copy)`\n ${SubTitle} + & {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nexport interface FactProps {\n isInverted?: boolean;\n isCentered?: boolean;\n title?: string;\n subTitle?: string;\n text?: string;\n image?: ImageProps;\n}\n\nconst Fact = forwardRef<\n HTMLDivElement,\n FactProps & {\n className?: string;\n }\n>(\n (\n {\n isInverted = false,\n isCentered = false,\n title,\n subTitle,\n text,\n image,\n className,\n },\n ref\n ) => {\n return (\n <View ref={ref} className={className}>\n {image?.small && (\n <ImageContainer isCentered={isCentered}>\n <StyledImage\n isInverted={isInverted}\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n coverSpace={image.coverSpace}\n ratios={image.ratios}\n showPlaceholder={image.showPlaceholder}\n />\n </ImageContainer>\n )}\n <Content isCentered={isCentered}>\n {title && (\n <Title\n type=\"copy-b\"\n size=\"big\"\n isInverted={isInverted}\n data-sheet=\"title\"\n >\n {title}\n </Title>\n )}\n {subTitle && (\n <SubTitle\n type=\"copy-b\"\n isInverted={isInverted}\n data-sheet=\"subtitle\"\n >\n {subTitle}\n </SubTitle>\n )}\n {text && (\n <Text\n type=\"copy\"\n isInverted={isInverted}\n data-sheet=\"text\"\n innerHTML={text}\n />\n )}\n </Content>\n </View>\n );\n }\n);\n\nFact.displayName = 'Fact';\n\nexport default Fact;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { mq } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Fact, { FactProps } from 'components/blocks/Fact';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Grid from 'components/base/Grid';\n\nconst FactFill = styled.div`\n display: none;\n\n @media ${mq.large} {\n display: block;\n }\n`;\n\nconst FactGrid: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Controls amount columns on large screens */\n columns?: 3 | 4 | 6;\n\n /** Array with fact card data */\n facts?: Array<Omit<FactProps, 'isInverted' | 'isCentered'>>;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Center text inside fact card items */\n isCentered?: boolean;\n}> = ({ anchorId, columns = 3, facts, bgMode, isCentered }) => {\n const { colors } = useLibTheme();\n const factCount = facts?.length || 0;\n\n const isInverted = bgMode === 'inverted';\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: factCount,\n identifiers: ['[data-sheet=\"title\"]', '[data-sheet=\"subtitle\"]'],\n responsive: {\n small: 1,\n medium: columns < 3 ? columns : 3,\n semilarge: columns < 4 ? columns : 4,\n large: columns,\n xlarge: columns,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Grid.Row>\n {facts &&\n facts.map((fact, i) => {\n if (\n fact?.title ||\n fact?.subTitle ||\n fact?.image ||\n fact?.text\n ) {\n return (\n <Grid.Col\n key={i}\n medium={{ span: 4 / 12 }}\n semilarge={\n columns > 3\n ? { span: 3 / 12 }\n : { span: 4 / 12 }\n }\n large={{ span: 12 / columns / 12 }}\n >\n <Fact\n key={i}\n ref={cardRefs[i]}\n {...fact}\n isCentered={isCentered}\n isInverted={isInverted}\n />\n </Grid.Col>\n );\n } else {\n return (\n <Grid.Col\n key={i}\n medium={{ span: 4 / 12 }}\n semilarge={\n columns > 3\n ? { span: 3 / 12 }\n : { span: 4 / 12 }\n }\n large={{ span: 12 / columns / 12 }}\n >\n <FactFill ref={cardRefs[i]} key={i} />\n </Grid.Col>\n );\n }\n })}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const FactGridComponent = FactGrid;\nexport default withLibTheme(FactGrid);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport styled from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { spacings, getColors as color, mq } from 'utils/styles';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\n\nconst FactsContainer = styled.ul`\n padding: 0;\n margin: 0;\n\n list-style-type: none;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst FactItem = styled.li<{ hasText?: boolean; hasBack?: boolean }>`\n padding: ${spacings.nudge * 2}px;\n\n background: ${({ theme, hasBack }) =>\n hasBack ? color(theme).elementBg.light : color(theme).elementBg.medium};\n\n display: flex;\n flex-direction: row;\n align-items: ${({ hasText }) => (hasText ? 'flex-start' : 'center')};\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 3}px;\n }\n`;\n\nconst Icon = styled.img`\n margin-right: ${spacings.nudge * 3}px;\n display: block;\n max-width: ${spacings.nudge * 5}px;\n\n @media ${mq.medium} {\n margin-right: ${spacings.spacer}px;\n }\n`;\n\nconst ContentBlock = styled.div`\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Description = styled(Copy)`\n max-width: 880px;\n`;\n\nconst FactList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with fact item data */\n facts?: Array<{\n label?: string;\n text?: string;\n }>;\n\n /** Icon for each fact item */\n icon?: { src: string; alt?: string };\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, facts, icon, bgMode }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBack = isInverted || bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {facts && (\n <FactsContainer>\n {facts.map(({ label, text }, i) => {\n return (\n <FactItem\n key={i}\n hasText={!!text}\n hasBack={hasBack}\n >\n {icon && (\n <Icon\n src={icon.src}\n alt={icon.alt || ''}\n />\n )}\n <ContentBlock>\n {label && (\n <Copy type=\"copy-b\">{label}</Copy>\n )}\n {text && (\n <Description\n type=\"copy\"\n innerHTML={text}\n />\n )}\n </ContentBlock>\n </FactItem>\n );\n })}\n </FactsContainer>\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const FactListComponent = FactList;\nexport default withLibTheme(FactList);\n","import React, { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n mq,\n spacings,\n getGlobals as global,\n getFonts as font,\n} from 'utils/styles';\n\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Link, { LinkProps } from 'components/typography/Link';\n\nconst View = styled.div<{ isCentered?: boolean }>`\n min-width: 270px;\n padding-bottom: ${spacings.nudge}px;\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst TitleLink = styled(Link)<{ href?: string }>`\n display: inline-block;\n ${copyStyle('copy-b', 'big')}\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n text-decoration: none;\n\n ${({ href, isInverted, theme }) =>\n !href &&\n css`\n &:hover {\n color: ${isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n }\n `}\n`;\n\nconst ImageContainer = styled(Link)<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst ArticleContent = styled.div<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n @media ${mq.medium} {\n & > * {\n max-width: 95%;\n margin-right: ${({ isCentered }) => isCentered && 'auto'};\n margin-left: ${({ isCentered }) => isCentered && 'auto'};\n }\n }\n`;\n\nconst Action = styled.div`\n max-width: 100%;\n`;\n\nexport interface FeatureActionProps {\n isInverted?: boolean;\n isTextCentered?: boolean;\n}\n\nexport interface FeatureProps {\n /** Invert color and background for darker themes */\n isInverted?: boolean;\n\n /** Center all texts */\n isCentered?: boolean;\n\n /** Image on item's top */\n image?: ImageProps;\n\n /** Item title text underneath the image */\n title?: string;\n\n /** Small item description text (richtext) */\n description?: string;\n\n /** Item intro text (partial richtext cause it's always bold) */\n intro?: string;\n\n /** Item's main text (richtext) */\n text?: string;\n\n /** Item link settings */\n link?: LinkProps;\n\n /** Function to inject custom primary button */\n action?: (props: FeatureActionProps) => React.ReactNode;\n}\n\nconst Feature = forwardRef<\n HTMLDivElement,\n FeatureProps & {\n className?: string;\n }\n>(\n (\n {\n title,\n description,\n intro,\n text,\n link,\n image,\n isInverted = false,\n isCentered = false,\n action,\n className,\n },\n ref\n ) => {\n return (\n <View ref={ref} isCentered={isCentered} className={className}>\n {image?.small && (\n <ImageContainer {...link} isCentered={isCentered}>\n <StyledImage\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n ratios={image.ratios}\n coverSpace={\n image.coverSpace === undefined\n ? true\n : image.coverSpace\n }\n isInverted={isInverted}\n />\n </ImageContainer>\n )}\n <TitleLink\n {...link}\n isInverted={isInverted}\n ariaLabel={title}\n dataSheet=\"title\"\n >\n {title}\n </TitleLink>\n <Copy\n size=\"small\"\n isInverted={isInverted}\n data-sheet=\"desc\"\n innerHTML={description}\n />\n <ArticleContent isCentered={isCentered}>\n <Copy\n type=\"copy-b\"\n isInverted={isInverted}\n innerHTML={intro}\n data-sheet=\"intro\"\n />\n <Copy\n type=\"copy\"\n size=\"medium\"\n isInverted={isInverted}\n innerHTML={text}\n data-sheet=\"text\"\n />\n </ArticleContent>\n {action && (\n <Action>\n {action({ isInverted, isTextCentered: isCentered })}\n </Action>\n )}\n </View>\n );\n }\n);\n\nFeature.displayName = 'Feature';\n\nexport default Feature;\n","import React, { useMemo } from 'react';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Feature, { FeatureProps } from 'components/blocks/Feature';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Grid from 'components/base/Grid';\n\nconst FeatureList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Center texts in every feature item */\n isCentered?: boolean;\n\n /** Array with feature item content */\n features?: Omit<FeatureProps, 'isInverted' | 'isCentered'>[];\n\n /** If not defined the component falls back to legacy logic: Uneven items = max 3 per row, even items = max 2 per row */\n columns?: 2 | 3;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n}> = ({ anchorId, features, bgMode, isCentered = false, columns }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const featureCount = features?.length || 0;\n\n const isHalf = useMemo(() => {\n if (columns) {\n return columns === 2;\n }\n\n // legacy logic\n return features && features.length % 2 === 0;\n }, [features, columns]);\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: featureCount,\n identifiers: [\n '[data-sheet=\"title\"]',\n '[data-sheet=\"desc\"]',\n '[data-sheet=\"intro\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: isHalf ? 2 : 3,\n xlarge: isHalf ? 2 : 3,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row\n halign={isHalf || featureCount <= 2 ? 'center' : 'left'}\n >\n {features?.map((feature, i) => (\n <Grid.Col\n semilarge={{ span: 6 / 12 }}\n large={{\n span: isHalf ? 5 / 12 : 4 / 12,\n }}\n key={i}\n >\n <Feature\n ref={cardRefs[i]}\n {...feature}\n isCentered={isCentered}\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const FeatureListComponent = FeatureList;\nexport default withLibTheme(FeatureList);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { getGlobals as global } from 'utils/styles';\nimport Grid from 'components/base/Grid';\n\nconst StyledImage = styled(Image)`\n width: 100%;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n picture > img {\n width: 100%;\n height: 100%;\n }\n`;\n\ntype ImageType = Omit<ImageProps, 'coverSpace'> & { isFull?: boolean };\n\nconst Gallery: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of image settings */\n images?: Array<ImageType>;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n}> = ({ anchorId, bgMode, images }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace>\n <Grid.Row>\n {images?.map((img, i) => (\n <Grid.Col\n key={i}\n semilarge={{\n span: img.isFull ? 12 / 12 : 6 / 12,\n }}\n >\n <StyledImage\n {...img}\n coverSpace\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const GalleryComponent = Gallery;\nexport default withLibTheme(Gallery);\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { mq, spacings, getColors as color } from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport Pointer from 'components/buttons/Pointer';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport Image from 'components/blocks/Image';\n\nconst StyledSection = styled(Section)<{ isCentered?: boolean }>`\n margin: 0 auto;\n\n @media ${mq.semilarge} {\n margin: ${({ isCentered }) => (isCentered ? '0 auto' : '0')};\n\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n }\n`;\n\nconst ItemContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n text-align: center;\n\n &:not(:last-child) {\n margin-bottom: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n }\n`;\n\nconst Items = styled.ul<{ isVisible?: boolean; isCentered?: boolean }>`\n display: ${({ isVisible }) => (isVisible ? 'flex' : 'block')};\n align-items: center;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n\n flex-wrap: wrap;\n padding: 0;\n margin: 0;\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n\n list-style: none;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n\n & > * {\n flex: 0 1 auto;\n }\n }\n`;\n\nconst Item = styled.li<{\n isVisible?: boolean;\n index: number;\n}>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n\n display: ${({ index, isVisible }) =>\n isVisible || index < 6 ? 'block' : 'none'};\n\n & > img {\n width: 100%;\n }\n\n @media ${mq.medium} {\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n\n & > img {\n width: auto;\n }\n }\n\n @media ${mq.semilarge} {\n display: ${({ index, isVisible }) =>\n isVisible || index < 8 ? 'block' : 'none'};\n }\n\n @media ${mq.large} {\n display: ${({ index, isVisible }) =>\n isVisible || index < 10 ? 'block' : 'none'};\n }\n`;\n\nconst ItemLink = styled(Link)<{ isInverted?: boolean }>`\n display: block;\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n`;\n\nconst ShowMore = styled.div<{ itemCount?: number; isCentered?: boolean }>`\n display: ${({ itemCount }) =>\n itemCount && itemCount > 6 ? 'block' : 'none'};\n\n background: none;\n border: none;\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n @media ${mq.semilarge} {\n display: ${({ itemCount }) =>\n itemCount && itemCount > 8 ? 'block' : 'none'};\n }\n\n @media ${mq.large} {\n display: ${({ itemCount }) =>\n itemCount && itemCount > 10 ? 'block' : 'none'};\n }\n`;\n\nconst StyledActions = styled(Actions)<{ isCentered?: boolean }>`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.medium} {\n display: block;\n text-align: ${({ isCentered }) => isCentered && 'center'};\n }\n`;\n\nexport interface IconListItem {\n src: string;\n alt?: string;\n link?: LinkProps;\n ratio?: { h: number; w: number };\n showPlaceholder?: boolean;\n}\n\nconst IconList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with icon items data */\n items?: Array<IconListItem>;\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom toggle button */\n toggle?: (props: {\n isInverted?: boolean;\n isToggled?: boolean;\n showLessText?: string;\n showMoreText?: string;\n clickHandler?: (ev?: React.SyntheticEvent<HTMLButtonElement>) => void;\n additionalProps?: Record<string, any>;\n }) => React.ReactNode;\n\n /** Custom text for toggle button in folded state */\n showMoreText?: string;\n\n /** Custom text for toggle button in expanded state */\n showLessText?: string;\n\n /** Center all icons and texts */\n isCentered?: boolean;\n\n /** Enable toggle feature */\n enableToggle?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({\n anchorId,\n items,\n isCentered = false,\n primaryAction,\n secondaryAction,\n toggle,\n showLessText = 'show less',\n showMoreText = 'show more',\n enableToggle,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const [showMore, setShowMore] = useState<boolean>(!enableToggle);\n\n const handleToggleClick = () => {\n setShowMore((prev) => !prev);\n };\n\n return (\n <StyledSection\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n isCentered={isCentered}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <ItemContainer isCentered={isCentered}>\n <Items\n isVisible={!showMore ? true : showMore === true}\n isCentered={isCentered}\n >\n {items?.map(\n ({ src, link, alt, ratio, showPlaceholder }, i) => (\n <Item isVisible={showMore} index={i} key={i}>\n <ItemLink\n {...link}\n isInverted={isInverted}\n ariaLabel={alt}\n >\n <Image\n data-img-loaded={false}\n isInverted={isInverted}\n small={src}\n alt={alt}\n ratios={\n ratio\n ? { small: ratio }\n : undefined\n }\n showPlaceholder={showPlaceholder}\n />\n </ItemLink>\n </Item>\n )\n )}\n </Items>\n </ItemContainer>\n {enableToggle && (\n <ShowMore\n isCentered={isCentered}\n itemCount={items?.length || 0}\n >\n {toggle ? (\n toggle({\n isInverted,\n showLessText,\n showMoreText,\n isToggled: showMore,\n clickHandler: handleToggleClick,\n additionalProps: { 'aria-pressed': showMore },\n })\n ) : (\n <Pointer.View\n as=\"button\"\n isInverted={isInverted}\n aria-pressed={showMore}\n onClick={() => handleToggleClick()}\n >\n <Pointer.Label>\n {showMore ? showLessText : showMoreText}\n </Pointer.Label>\n </Pointer.View>\n )}\n </ShowMore>\n )}\n\n {(primaryAction || secondaryAction) && (\n <StyledActions\n isCentered={isCentered}\n primary={primaryAction && primaryAction(isInverted)}\n secondary={\n secondaryAction && secondaryAction(isInverted)\n }\n />\n )}\n </Wrapper>\n </StyledSection>\n );\n};\n\nexport const IconListComponent = IconList;\nexport default withLibTheme(IconList);\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { copyStyle } from 'components/typography/Copy';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { getColors as color, spacings } from 'utils/styles';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport ArrowDown from 'components/base/icons/ArrowDown';\nimport { useScrollTo } from 'utils/useScrollTo';\nimport { getFullNavbarHeights, getNavbarState } from './navigation/Navigation';\nimport { useMediaQueries } from 'utils/useMediaQuery';\n\nconst List = styled.ul<{ hasBg?: boolean; isInverted?: boolean }>`\n margin: 0;\n padding: 0;\n list-style: none;\n\n max-width: 880px;\n\n & > li + li {\n border-top: 1px solid\n ${({ theme, hasBg, isInverted }) =>\n hasBg && !isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n\n & > li:first-child {\n border-top: 1px solid\n ${({ theme, hasBg, isInverted }) =>\n hasBg && !isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n\n & > li:last-child {\n border-bottom: 1px solid\n ${({ theme, hasBg, isInverted }) =>\n hasBg && !isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n`;\n\nconst ListItem = styled.li``;\n\nconst IndexLink = styled(Link)<{ isInverted?: boolean }>`\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n padding: ${spacings.nudge}px 0;\n\n ${copyStyle('copy', 'big')}\n`;\n\nconst LinkLabel = styled.span`\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nconst IconWrapper = styled.span`\n display: inline-block;\n\n margin-left: ${spacings.nudge * 2}px;\n`;\n\nexport interface IndexItem {\n label?: string;\n link?: LinkProps;\n}\n\nconst IndexList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of index item settings */\n items?: IndexItem[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n\n /** Function to inject custom icon decorator */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Top offset for scroll to clicked item. Default: auto */\n scrollToOffset?: number;\n}> = ({ anchorId, items, bgMode, customIcon, scrollToOffset }) => {\n const { colors, theme } = useLibTheme();\n const setTargetPos = useScrollTo(500);\n const { semilarge } = useMediaQueries();\n\n const [topOffset, setTopOffset] = useState<number>(0);\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const handleLinkClick = (ev: React.SyntheticEvent<HTMLAnchorElement>) => {\n if (!ev?.currentTarget) return;\n\n ev.preventDefault();\n const href = ev.currentTarget.getAttribute('href') as string;\n\n if (!href) return;\n\n const target = document.getElementById(href.split('#')?.[1] || href);\n if (target) {\n setTargetPos(\n target.getBoundingClientRect().top +\n window.scrollY -\n (scrollToOffset || topOffset)\n );\n }\n\n if (window) {\n const url = new URL(window.location as any);\n url.hash = href.split('#')[1];\n window.history.pushState({}, '', url as any);\n }\n };\n\n useEffect(() => {\n if (scrollToOffset) return;\n\n // if header is defined get navbar height and generate top offset\n const header = document.querySelector('header[data-navbar-ident]');\n const navbarIdent = header?.getAttribute('data-navbar-ident');\n if (!navbarIdent) return;\n\n const { isStickable } = getNavbarState(navbarIdent);\n if (!isStickable) return;\n\n // calculate offset from navbar height\n const navbarHeights = getFullNavbarHeights(theme, navbarIdent);\n\n if (semilarge) setTopOffset(navbarHeights.small[1] + spacings.spacer);\n else setTopOffset(navbarHeights.small[0] + spacings.spacer);\n }, [theme, semilarge, scrollToOffset]);\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List hasBg={hasBg} isInverted={isInverted}>\n {items?.map((item, i) => (\n <ListItem key={i}>\n <IndexLink\n {...item.link}\n isInverted={isInverted}\n onClick={handleLinkClick}\n >\n <LinkLabel>{item.label}</LinkLabel>\n <IconWrapper>\n {customIcon ? (\n customIcon({ isInverted })\n ) : (\n <ArrowDown />\n )}\n </IconWrapper>\n </IndexLink>\n </ListItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const IndexListComponent = IndexList;\nexport default withLibTheme(IndexList);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport IntroBlock, { IntroActionProps } from 'components/blocks/IntroBlock';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { ImageProps } from 'components/blocks/Image';\nimport { TitleSize } from 'components/blocks/Title';\n\nconst Intro: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Main title style */\n titleSize?: TitleSize;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Intro text under headline (richtext) */\n abstract?: string;\n\n /** Main text (richtext) */\n text?: string;\n\n /** Images for different screen sizes. coverSpace defaults to true */\n image?: ImageProps;\n\n /** Function to inject custom primary button */\n primaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Center text and actions */\n isCentered?: boolean;\n\n /** Allow reduced section spacing to next section */\n isStackable?: boolean;\n\n /** Clamp title to a width of max 8 grid cols. */\n clampTitle?: boolean;\n\n /** Section background */\n bgMode?: 'inverted' | 'full' | 'splitted';\n className?: string;\n}> = ({\n anchorId,\n title,\n titleAs,\n titleSize = 'heading-2',\n superTitle,\n superTitleAs,\n abstract,\n text,\n primaryAction,\n secondaryAction,\n isCentered = false,\n isStackable = false,\n bgMode,\n image,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n // set default ratio settings\n if (image && !image?.ratios) {\n image.ratios = {\n small: { h: 1, w: 1 },\n };\n }\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n isStackable={isStackable}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <IntroBlock\n title={title}\n titleAs={titleAs}\n titleSize={titleSize}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n abstract={abstract}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n secondaryAction={secondaryAction}\n primaryAction={primaryAction}\n isCentered={isCentered}\n image={image}\n clampTitle\n clampAbstract\n clampText\n />\n </Wrapper>\n </Section>\n );\n};\n\nexport const IntroComponent = Intro;\nexport default withLibTheme(Intro);\n","import Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\n\nconst View = styled(Link)<{ isInverted?: boolean; hasIcon?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n -ms-grid-columns: ${({ hasIcon }) => (hasIcon ? 'min-content 1fr' : '1fr')};\n grid-template-columns: ${({ hasIcon }) =>\n hasIcon ? 'min-content 1fr' : '1fr'};\n -ms-grid-rows: min-content 1fr;\n grid-auto-rows: min-content 1fr;\n\n cursor: pointer;\n text-decoration: none;\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n transition: all ease-in-out 0.2s;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n }\n`;\n\nconst MainLabel = styled.div<{ hasIcon?: boolean }>`\n display: flex;\n align-items: center;\n margin-left: ${({ hasIcon }) => hasIcon && `${spacings.nudge * 3}px`};\n`;\n\nconst Text = styled(Copy)<{ hasIcon?: boolean }>`\n margin-top: ${({ hasIcon }) =>\n hasIcon ? spacings.nudge : spacings.nudge * 2}px;\n margin-left: ${({ hasIcon }) => hasIcon && `${spacings.nudge * 3}px`};\n`;\n\nconst Icon = styled.div`\n display: flex;\n align-items: center;\n\n & > * {\n height: 48px;\n width: 48px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n`;\n\nconst TitleIcon = styled.span`\n display: inline-block;\n margin-left: ${spacings.nudge * 2}px;\n\n @media ${mq.medium} {\n margin-left: ${spacings.nudge * 3}px;\n }\n`;\n\nexport interface NavBlockProps {\n /** Invert colors for use on dark backgrounds */\n isInverted?: boolean;\n\n /** Navigation title */\n title?: string;\n\n /** Navigation text (richtext) */\n text?: string;\n\n /** Link settings */\n link?: LinkProps;\n\n /** Function to inject custom icon node */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Function to inject custom title icon decorator node */\n customTitleIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n className?: string;\n}\n\nconst NavBlock: React.FC<NavBlockProps> = ({\n isInverted = false,\n title,\n text,\n link,\n customIcon,\n customTitleIcon,\n className,\n}) => {\n return (\n <View\n {...link}\n isInverted={isInverted}\n hasIcon={!!customIcon}\n className={className}\n >\n {customIcon ? <Icon>{customIcon({})}</Icon> : ''}\n <MainLabel hasIcon={!!customIcon}>\n {title && (\n <Title textColor=\"inherit\" size=\"medium\" type=\"copy-b\">\n {title}\n {title && customTitleIcon && (\n <TitleIcon>\n {customTitleIcon({ isInverted })}\n </TitleIcon>\n )}\n </Title>\n )}\n </MainLabel>\n {text && (\n <>\n <span />\n <Text\n size=\"small\"\n isInverted={isInverted}\n innerHTML={text}\n hasIcon={!!customIcon}\n />\n </>\n )}\n </View>\n );\n};\n\nexport default NavBlock;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport NavBlock, { NavBlockProps } from 'components/blocks/NavBlock';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { mq, spacings } from 'utils/styles';\n\nconst List = styled.ul`\n margin: 0;\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer * 2}px;\n }\n`;\n\nconst ListItem = styled.li`\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n flex: 1 0 100%;\n\n @media ${mq.medium} {\n flex: 0 0 50%;\n max-width: 50%;\n padding-top: ${spacings.spacer * 2}px;\n }\n\n @media ${mq.large} {\n flex: 0 0 33.33%;\n max-width: 33.33%;\n }\n\n // print version\n @media print {\n flex: 0 0 50%;\n max-width: 50%;\n padding-top: ${spacings.spacer * 2}px;\n }\n`;\n\nexport type NavItem = Omit<\n NavBlockProps,\n 'isInverted' | 'customTitleIcon' | 'className'\n>;\n\nconst NavList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of navigation item settings */\n items?: NavItem[];\n\n /** Section backgrounds */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom title decorator icon */\n customTitleIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}> = ({ anchorId, items, bgMode, customTitleIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <ListItem key={i}>\n <NavBlock\n {...item}\n isInverted={isInverted}\n customTitleIcon={customTitleIcon}\n />\n </ListItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const NavListComponent = NavList;\nexport default withLibTheme(NavList);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Callout from 'components/typography/Callout';\nimport React, { forwardRef, useContext } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\nimport {\n getColors as color,\n spacings,\n getGlobals as global,\n} from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Copy from 'components/typography/Copy';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Image, { ImageProps } from 'components/blocks/Image';\n\nconst CARD_MIN_WIDTH = 240;\nconst CARD_MAX_WIDTH = 440;\nconst MEDIA_QUERIES = {\n medium: '(min-width: 36.5em)',\n semilarge: '(min-width: 54.75em)',\n large: '(min-width: 73em)',\n xlarge: '(min-width: 90em)',\n};\n\nconst View = styled.li<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n & > * {\n margin: ${({ isCentered }) => (isCentered ? '0 auto' : 0)};\n margin-right: auto;\n }\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst ImageContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n margin-bottom: ${spacings.nudge * 3}px;\n max-width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst Label = styled(Copy)``;\n\nconst Text = styled(Copy)``;\n\nexport interface NumberListCardProps {\n image?: ImageProps;\n digit?: string;\n label?: string;\n text?: string;\n}\n\nconst NumberListCard = forwardRef<\n HTMLLIElement,\n NumberListCardProps & {\n isInverted?: boolean;\n isCentered?: boolean;\n className?: string;\n }\n>(({ image, label, digit, isInverted, isCentered, text, className }, ref) => {\n const { colors } = useLibTheme();\n\n return (\n <View ref={ref} isCentered={isCentered} className={className}>\n {image?.small && (\n <ImageContainer isCentered={isCentered}>\n <StyledImage\n isInverted={isInverted}\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n coverSpace={image.coverSpace}\n ratios={image.ratios}\n showPlaceholder={image.showPlaceholder}\n />\n </ImageContainer>\n )}\n <Callout\n data-sheet=\"digit\"\n size=\"mediumBold\"\n renderAs=\"div\"\n isInverted={isInverted}\n >\n {digit}\n </Callout>\n <Label\n type=\"copy-b\"\n size=\"big\"\n textColor={\n isInverted\n ? colors.primary.inverted\n : colors.primary.default\n }\n data-sheet=\"label\"\n >\n {label}\n </Label>\n {text && (\n <Text\n type=\"copy\"\n size=\"medium\"\n isInverted={isInverted}\n data-sheet=\"text\"\n innerHTML={text}\n />\n )}\n </View>\n );\n});\n\nNumberListCard.displayName = 'NumberListCard';\n\nconst CardList = styled.ul`\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n\n list-style: none;\n padding: 0;\n margin: 0;\n margin-left: -${spacings.spacer}px;\n margin-top: -${spacings.nudge * 6}px;\n\n & > * {\n flex: 0 0 100%;\n width: 100%;\n min-width: ${CARD_MIN_WIDTH + spacings.spacer}px;\n max-width: ${CARD_MAX_WIDTH + spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n padding-top: ${spacings.nudge * 6}px;\n }\n\n @media ${MEDIA_QUERIES.medium} {\n flex-direction: row;\n justify-content: center;\n align-items: flex-start;\n\n margin-top: -${spacings.nudge * 10}px;\n\n & > * {\n flex: 0 0 50%;\n padding-top: ${spacings.nudge * 10}px;\n }\n\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n }\n\n @media ${MEDIA_QUERIES.semilarge} {\n & > * {\n flex: 0 0 33.33%;\n }\n\n /* one item */\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n\n /* two items */\n & > li:first-child:nth-last-child(2),\n & > li:first-child:nth-last-child(2) ~ li {\n flex: 0 0 50%;\n }\n }\n\n @media ${MEDIA_QUERIES.large} {\n & > * {\n flex: 0 0 25%;\n }\n\n /* one item */\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n\n /* two items */\n & > li:first-child:nth-last-child(2),\n & > li:first-child:nth-last-child(2) ~ li {\n flex: 0 0 50%;\n }\n\n /* three items */\n & > li:first-child:nth-last-child(3),\n & > li:first-child:nth-last-child(3) ~ li {\n flex: 0 0 33.33%;\n }\n }\n`;\n\nexport interface NumberListItem {\n image?: ImageProps;\n digit?: string;\n label?: string;\n text?: string;\n}\n\nconst NumberList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n items?: NumberListItem[];\n\n /** Center texts in every card item */\n isCentered?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, bgMode, isCentered = true }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const { sheetRefs: numbersRef } = useEqualSheetHeight<HTMLDivElement>({\n listLength: items?.length || 0,\n identifiers: [\n '[data-sheet=\"digit\"]',\n '[data-sheet=\"label\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 2,\n semilarge: 3,\n large: 4,\n xlarge: 4,\n },\n customMediaQueries: MEDIA_QUERIES,\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? color(theme).sectionBg.dark\n : hasBg\n ? color(theme).sectionBg.medium\n : color(theme).sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <CardList>\n {items?.map((item, i) => {\n return (\n <NumberListCard\n key={i}\n ref={numbersRef[i] as any}\n {...item}\n isInverted={isInverted}\n isCentered={isCentered}\n />\n );\n })}\n </CardList>\n </Wrapper>\n </Section>\n );\n};\n\nexport const NumberListComponent = NumberList;\nexport default withLibTheme(NumberList);\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { spacings } from 'utils/styles';\n\nconst View = styled.section`\n position: relative;\n width: 100vw;\n z-index: -1;\n`;\n\nconst Parallax = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n margin-left: 0;\n width: 100%;\n`;\n\nconst Content = styled.div<{\n contentWidth?: number;\n hAlign?: 'left' | 'center' | 'right';\n}>`\n margin-left: ${({ hAlign }) =>\n (hAlign === 'right' || hAlign === 'center') && 'auto'};\n margin-right: ${({ hAlign }) =>\n (hAlign === 'left' || hAlign === 'center') && 'auto'};\n\n width: ${({ contentWidth }) =>\n contentWidth\n ? contentWidth === -1\n ? 'auto'\n : contentWidth * 100 + '%'\n : undefined};\n\n max-width: ${spacings.wrapperLarge}px;\n overflow: hidden;\n\n & > * {\n width: ${({ contentWidth }) => contentWidth !== -1 && '100%'};\n }\n`;\n\nconst StyledImage = styled(Image)<{\n coverSpace?: boolean;\n hAlign?: 'left' | 'center' | 'right';\n}>`\n max-width: ${({ coverSpace }) => !coverSpace && 'none'};\n float: ${({ hAlign }) =>\n hAlign === 'left' || hAlign === 'right' ? hAlign : undefined};\n ${({ coverSpace, hAlign }) =>\n !coverSpace &&\n hAlign === 'center' &&\n css`\n transform: translateX(-50%);\n margin-left: 50%;\n `}\n`;\n\nexport type ParallaxWidth = '1/4' | 'half' | '3/4' | 'full' | 'auto';\n\nconst ParallaxBackground: FC<{\n image?: ImageProps;\n hAlign?: 'left' | 'center' | 'right';\n contentWidth?: ParallaxWidth | number;\n moveRatio?: number;\n direction?: 'down' | 'up';\n className?: string;\n}> = ({\n image,\n hAlign = 'left',\n contentWidth = 1,\n moveRatio = 0.2,\n direction = 'up',\n className,\n}) => {\n const [isLoaded, setIsLoaded] = useState<boolean>(false);\n const [yTransform, setYTransform] = useState<number>(0);\n // const cRef = useRef<HTMLDivElement>(null);\n const [cRef, setContainerRef] = useState<HTMLElement | null>(null);\n const parallaxRef = useRef<HTMLDivElement>(null);\n\n let width = 1;\n if (typeof contentWidth === 'string') {\n switch (contentWidth) {\n case '1/4': {\n width = 0.25;\n break;\n }\n\n case 'half': {\n width = 0.5;\n break;\n }\n\n case '3/4': {\n width = 0.75;\n break;\n }\n\n case 'auto': {\n width = -1;\n break;\n }\n\n default:\n case 'full': {\n width = 1;\n break;\n }\n }\n } else if (!isNaN(contentWidth)) {\n width = contentWidth;\n }\n\n useEffect(() => {\n setIsLoaded(true);\n }, []);\n\n useEffect(() => {\n const prevEl = cRef?.previousElementSibling;\n if (prevEl) {\n const bgIdent = (prevEl as HTMLElement).dataset.bgIdent;\n const stackIdent = (prevEl as HTMLElement).dataset.stackIdent;\n\n if (bgIdent) {\n // set data background from previous element\n cRef?.setAttribute('data-bg-ident', bgIdent);\n }\n\n if (stackIdent) {\n // set data stack flag from previous element\n cRef?.setAttribute('data-stack-ident', stackIdent);\n }\n }\n }, [cRef]);\n\n useEffect(() => {\n const handleScroll = () => {\n if (!cRef) return;\n\n const containerPos = cRef.getBoundingClientRect().top;\n const ratio = containerPos * moveRatio;\n const offset = ratio * (direction === 'up' ? 1 : -1);\n\n setYTransform(offset);\n };\n\n handleScroll();\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [cRef, direction, moveRatio]);\n\n return (\n <>\n {isLoaded && (\n <View ref={setContainerRef} data-bg-ident=\"transparent\">\n <Parallax\n ref={parallaxRef}\n style={{\n transform: `translate3d(0px, ${yTransform}px, 0px)`,\n }}\n className={className}\n >\n <Content hAlign={hAlign} contentWidth={width}>\n {image && (\n <StyledImage\n hAlign={hAlign}\n coverSpace={width !== -1}\n {...image}\n />\n )}\n </Content>\n </Parallax>\n </View>\n )}\n </>\n );\n};\n\nexport default ParallaxBackground;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport Section from 'components/base/Section';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { spacings, getGlobals as global } from 'utils/styles';\nimport IntroBlock, { IntroActionProps } from 'components/blocks/IntroBlock';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst Container = styled.figure<{\n hasContent?: boolean;\n verticallyCentered?: boolean;\n}>`\n position: relative;\n width: 100%;\n max-height: 550px;\n padding: 0;\n margin: 0;\n\n &:after {\n content: ${({ hasContent }) => hasContent && '\"\"'};\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme, verticallyCentered }) =>\n verticallyCentered\n ? global(theme).sections.imageTextGradientCentered\n : global(theme).sections.imageTextGradient};\n pointer-events: none;\n z-index: 0;\n }\n`;\n\nconst StyledImage = styled(Image)`\n img {\n height: 550px;\n }\n`;\n\nconst Intro = styled(IntroBlock)<{\n verticallyCentered?: boolean;\n horizontallyCentered?: boolean;\n}>`\n position: absolute;\n bottom: ${({ verticallyCentered }) => !verticallyCentered && '0'};\n top: ${({ verticallyCentered }) => verticallyCentered && '50%'};\n left: 50%;\n right: 0;\n max-height: 100%;\n max-width: ${spacings.wrapper}px;\n\n padding: ${wrapperWhitespace + spacings.nudge * 2}px;\n z-index: 1;\n\n transform: ${({ verticallyCentered }) =>\n verticallyCentered ? 'translate(-50%, -50%)' : 'translateX(-50%)'};\n`;\n\nconst Poster: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Clamp width of poster image to content wrapper or large wrapper */\n width?: 'full' | 'content';\n\n /** The poster image settings */\n image: Omit<ImageProps, 'coverSpace' | 'ratios'>;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Text underneath the title (richtext) */\n text?: string;\n\n /** Function to inject custom primary button */\n primaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Align text and actions vertically */\n verticallyCentered?: boolean;\n\n /** Align text and actions horizontally */\n horizontallyCentered?: boolean;\n}> = ({\n anchorId,\n width = 'content',\n title,\n titleAs,\n superTitle,\n superTitleAs,\n text,\n primaryAction,\n secondaryAction,\n image,\n verticallyCentered,\n horizontallyCentered,\n}) => {\n const isCentered = verticallyCentered && horizontallyCentered;\n\n return (\n <Section anchorId={anchorId} bgColor=\"image\" bgMode=\"full\">\n <Wrapper clampWidth={width === 'content' ? 'normal' : 'large'}>\n <Container\n hasContent={!!title || !!text}\n verticallyCentered={verticallyCentered}\n >\n <StyledImage {...image} coverSpace ratios={undefined} />\n {title && (\n <Intro\n verticallyCentered={verticallyCentered}\n horizontallyCentered={horizontallyCentered}\n renderAs=\"figcaption\"\n colorMode=\"onImage\"\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n secondaryAction={secondaryAction}\n primaryAction={primaryAction}\n clampTitle\n maxTitleLines={3}\n clampText\n maxTextLines={4}\n isCentered={horizontallyCentered || isCentered}\n />\n )}\n </Container>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PosterComponent = Poster;\nexport default withLibTheme(Poster);\n","import React from 'react';\nimport styled from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst ItemList = styled.ul`\n margin: 0;\n padding: 0;\n list-style: none;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst ItemBlock = styled.li<{ hasBg?: boolean }>`\n max-width: 100%;\n padding: ${spacings.nudge * 2}px;\n\n background: ${({ theme, hasBg }) =>\n hasBg ? color(theme).elementBg.light : color(theme).elementBg.medium};\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n @media ${mq.semilarge} {\n padding: ${spacings.nudge * 3}px;\n }\n`;\n\nconst ListHead = styled.div`\n display: flex;\n justify-content: space-between;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Title = styled(Copy)`\n max-width: 880px;\n`;\n\nconst Price = styled(Copy)`\n white-space: nowrap;\n`;\n\nconst Description = styled(Copy)`\n max-width: 880px;\n`;\n\nexport interface PriceItems {\n /** Title of the price item */\n title?: string;\n /** Description text of price item (richtext) */\n text?: string;\n /** The price value (Currency not included) */\n price?: string;\n}\n\nexport const PriceBlock: React.FC<PriceItems & { hasBg?: boolean }> = ({\n text,\n price,\n hasBg = false,\n title,\n}) => {\n return (\n <ItemBlock hasBg={hasBg}>\n <ListHead>\n {title && <Title type=\"copy-b\">{title}</Title>}\n {price && <Price type=\"copy-b\">{price}</Price>}\n </ListHead>\n {text && <Description type=\"copy\" innerHTML={text} />}\n </ItemBlock>\n );\n};\n\nconst PriceList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with price items */\n items?: PriceItems[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n}> = ({ anchorId, bgMode, items }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBack = isInverted || bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <ItemList>\n {items?.map((item, i) => (\n <PriceBlock key={i} {...item} hasBg={hasBack} />\n ))}\n </ItemList>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PriceListComponent = PriceList;\nexport default withLibTheme(PriceList);\n","import {\n spacings,\n getColors as color,\n getGlobals as global,\n} from 'utils/styles';\nimport React, { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport Copy from 'components/typography/Copy';\nimport Actions from './Actions';\nimport Callout from 'components/typography/Callout';\n\nconst View = styled.div<{\n isInverted?: boolean;\n isCentered?: boolean;\n hasBg?: boolean;\n isHighlighted?: boolean;\n}>`\n padding: ${spacings.spacer}px;\n\n border: 1px solid transparent;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n background: ${({ theme, hasBg, isInverted, isHighlighted }) =>\n isInverted\n ? isHighlighted\n ? color(theme).primary.inverted\n : color(theme).elementBg.medium\n : isHighlighted\n ? color(theme).primary.default\n : hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst StyledActions = styled(Actions)`\n display: block;\n margin-top: auto;\n padding-top: ${spacings.spacer}px;\n text-align: center;\n`;\n\nexport interface PriceTagProps {\n title?: string;\n superTitle?: string;\n text?: string;\n action?: (props: {\n isInverted?: boolean;\n isHighlighted?: boolean;\n }) => React.ReactNode;\n isInverted?: boolean;\n isCentered?: boolean;\n hasBackground?: boolean;\n isHighlighted?: boolean;\n}\n\nconst PriceTag = forwardRef<\n HTMLDivElement,\n PriceTagProps & { className?: string }\n>(\n (\n {\n superTitle,\n title,\n text,\n action,\n isInverted,\n isCentered,\n isHighlighted,\n hasBackground,\n className,\n },\n ref\n ) => {\n const inverted = isHighlighted ? !isInverted : false;\n\n return (\n <View\n ref={ref}\n isInverted={isInverted}\n isCentered={isCentered}\n isHighlighted={isHighlighted}\n hasBg={hasBackground}\n className={className}\n >\n {superTitle && (\n <Copy\n type=\"copy-b\"\n size=\"big\"\n isInverted={inverted}\n innerHTML={superTitle}\n data-sheet=\"superTitle\"\n />\n )}\n {title && (\n <Callout\n renderAs=\"div\"\n size=\"big\"\n isInverted={inverted}\n innerHTML={title}\n data-sheet=\"title\"\n />\n )}\n {text && (\n <Copy\n size=\"medium\"\n isInverted={inverted}\n innerHTML={text}\n data-sheet=\"desc\"\n />\n )}\n <StyledActions\n mode=\"cover\"\n primary={\n action &&\n action({\n isInverted: inverted,\n isHighlighted: isHighlighted,\n })\n }\n />\n </View>\n );\n }\n);\n\nPriceTag.displayName = 'PriceTag';\n\nexport default PriceTag;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport PriceTag, { PriceTagProps } from 'components/blocks/PriceTag';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport { gridSettings } from 'components/base/Grid';\nimport { mq } from 'utils/styles';\n\nconst Tag = styled(PriceTag)`\n min-height: 500px;\n`;\n\nconst Items = styled.div`\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n\n margin-top: -${gridSettings.gutter}px;\n margin-left: -${gridSettings.gutter}px;\n\n & > * {\n flex: 1 1 25%;\n min-width: 286px;\n max-width: 320px;\n margin-top: ${gridSettings.gutter}px;\n margin-left: ${gridSettings.gutter}px;\n }\n\n @media ${mq.large} {\n & > * {\n max-width: 286px;\n }\n }\n`;\n\nconst PriceTable: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Array of PriceTag card items */\n items: Array<Omit<PriceTagProps, 'isInverted'>>;\n /** Center text inside card items */\n isCentered?: boolean;\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, isCentered, bgMode }) => {\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const priceTagCount = items?.length || 0;\n\n const { colors } = useLibTheme();\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: priceTagCount,\n identifiers: [\n '[data-sheet=\"superTitle\"]',\n '[data-sheet=\"title\"]',\n '[data-sheet=\"desc\"]',\n ],\n responsive: {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: 3,\n xlarge: 3,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace>\n <Items>\n {items?.map((item, i) => (\n <Tag\n key={i}\n ref={cardRefs[i]}\n {...item}\n isInverted={isInverted}\n isCentered={isCentered}\n hasBackground={hasBg}\n />\n ))}\n </Items>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PriceTableComponent = PriceTable;\nexport default withLibTheme(PriceTable);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { mq, spacings } from 'utils/styles';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Callout from 'components/typography/Callout';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Copy from 'components/typography/Copy';\n\nconst Content = styled.figure`\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n max-width: 960px;\n margin: 0 auto;\n }\n`;\n\nconst Text = styled(Callout)`\n text-align: center;\n margin-left: 0;\n margin-right: 0;\n padding: 0;\n`;\n\nconst Source = styled(Copy)`\n text-align: center;\n margin-left: 0;\n margin-right: 0;\n padding: 0;\n`;\n\nconst Quote: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Text of the blockquote (richtext) */\n text?: string;\n\n /** Source of the quote e.g. author (richtext) */\n source?: string;\n\n /** URL for additional cite informations */\n citeUrl?: string;\n\n /** Section backgrounds */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, text, source, citeUrl }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Content>\n {text && (\n <Text\n size=\"small\"\n renderAs=\"blockquote\"\n isInverted={isInverted}\n innerHTML={text}\n {...{ cite: citeUrl }}\n />\n )}\n {source && (\n <Source\n isInverted={isInverted}\n renderAs=\"figcaption\"\n innerHTML={source}\n />\n )}\n </Content>\n </Wrapper>\n </Section>\n );\n};\n\nexport const QuoteComponent = Quote;\nexport default withLibTheme(Quote);\n","import React, { FC, useContext } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Wrapper from 'components/base/Wrapper';\nimport { getColors } from 'utils/styles';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst ImageWrapper = styled(Wrapper)<{ hAlign?: 'left' | 'center' | 'right' }>`\n display: flex;\n justify-content: ${({ hAlign }) => {\n switch (hAlign) {\n case 'center':\n return 'center';\n case 'right':\n return 'flex-end';\n default:\n return 'flex-start';\n }\n }};\n`;\n\nconst SimpleImage: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Image settings */\n image?: ImageProps;\n\n /** Horizontal alignment of the image */\n hAlign?: 'left' | 'center' | 'right';\n\n /** Allow reduced section spacing to next section */\n isStackable?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, image, hAlign = 'left', bgMode, isStackable }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n isStackable={isStackable}\n bgColor={\n isInverted\n ? getColors(theme).sectionBg.dark\n : hasBg\n ? getColors(theme).sectionBg.medium\n : getColors(theme).sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <ImageWrapper hAlign={hAlign}>\n {image && <Image {...image} />}\n </ImageWrapper>\n </Section>\n );\n};\n\nexport const SimpleImageComponent = SimpleImage;\nexport default withLibTheme(SimpleImage);\n","import React from 'react';\nimport styled from 'styled-components';\nimport {\n getColors as color,\n mq,\n spacings,\n getGlobals as global,\n} from 'utils/styles';\n\nimport Instagram from 'components/base/icons/socials/Instagram';\nimport Heading from 'components/typography/Heading';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport { gridSettings } from 'components/base/Grid';\nimport Image, { ImageProps } from 'components/blocks/Image';\n\nconst Cards = styled.ul`\n display: flex;\n flex-wrap: wrap;\n margin: 0;\n padding: 0;\n list-style: none;\n\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n\n & > * {\n flex: 1 1 100%;\n margin-top: ${spacings.spacer}px;\n margin-left: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n & > * {\n flex: 1 1 calc(50% - ${gridSettings.gutter}px);\n max-width: calc(50% - ${gridSettings.gutter}px);\n }\n }\n\n @media ${mq.large} {\n & > * {\n flex: 1 1 calc(${(1 / 3) * 100}% - ${gridSettings.gutter}px);\n max-width: calc(${(1 / 3) * 100}% - ${gridSettings.gutter}px);\n }\n }\n`;\n\nconst Item = styled.li`\n display: block;\n position: relative;\n padding: 0;\n`;\n\nconst Card = styled(Link)<{ isInverted?: boolean }>`\n position: relative;\n display: block;\n text-decoration: none;\n color: '#fff';\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n &:before {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).secondary.inverted\n : color(theme).secondary.default};\n\n opacity: 0;\n pointer-events: none;\n z-index: 1;\n transition: opacity 0.2s ease-in-out;\n }\n\n &:hover {\n &:before {\n opacity: 1;\n pointer-events: all;\n }\n }\n\n &:focus {\n &:before {\n opacity: 1;\n pointer-events: all;\n }\n }\n`;\n\nconst StyledImage = styled(Image)`\n display: block;\n height: 100%;\n z-index: 0;\n`;\n\nconst TextContainer = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n transform: translate(-50%, -50%);\n text-align: center;\n\n padding: ${spacings.nudge * 2}px;\n\n opacity: 0;\n pointer-events: none;\n z-index: 2;\n transition: opacity 0.2s ease-in-out;\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n ${Card}:hover & {\n opacity: 1;\n pointer-events: all;\n }\n\n ${Card}:focus & {\n opacity: 1;\n pointer-events: all;\n }\n`;\n\nconst FollowUs = styled(Heading)`\n text-transform: uppercase;\n`;\n\nconst InstagramIcon = styled.div`\n position: absolute;\n left: 20px;\n bottom: 20px;\n color: ${({ theme }) => color(theme).text.inverted};\n z-index: 2;\n\n & > * {\n fill: #fff;\n\n ${Card}:hover & {\n color: ${({ theme }) => color(theme).text.inverted};\n }\n }\n`;\n\nconst SocialWall: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with item settings */\n items?: Array<{\n link?: LinkProps;\n image?: Omit<ImageProps, 'coverSpace' | 'ratio'>;\n }>;\n\n /** Text for main social media follow call */\n followUs?: string;\n\n /** Text for e.g. social media hashtag */\n hashTag?: string;\n\n /** Function to inject custom social icon on bottom left corner */\n socialIcon?: React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, hashTag, followUs, socialIcon, bgMode }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <Cards>\n {items?.map((item, i) => (\n <Item key={i}>\n <Card\n isExternal\n {...item.link}\n isInverted={isInverted}\n ariaLabel={item?.image?.alt}\n >\n {item.image && (\n <StyledImage\n {...item.image}\n coverSpace\n ratios={{\n small: { w: 1, h: 1 },\n }}\n isInverted={isInverted}\n />\n )}\n <TextContainer>\n <FollowUs size=\"super\" isInverted>\n {followUs\n ? followUs\n : 'Follow Us On Instagram'}\n </FollowUs>\n {hashTag && (\n <Heading size=\"heading-2\" isInverted>\n {hashTag}\n </Heading>\n )}\n </TextContainer>\n <InstagramIcon>\n {socialIcon || <Instagram />}\n </InstagramIcon>\n </Card>\n </Item>\n ))}\n </Cards>\n </Wrapper>\n </Section>\n );\n};\n\nexport const SocialWallComponent = SocialWall;\nexport default withLibTheme(SocialWall);\n","import React from 'react';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport TableBlock, { TableProps } from 'components/blocks/TableBlock';\nimport styled from 'styled-components';\nimport { spacings } from 'utils/styles';\n\nconst TableSection = styled(Section)`\n overflow: unset;\n`;\n\nconst TableWrapper = styled(Wrapper)`\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst Table: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Table rows and columns */\n tableItems: TableProps[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, tableItems }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full' || isInverted;\n\n return (\n <TableSection\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <TableWrapper>\n {tableItems.map((item, i) => {\n return (\n <TableBlock\n key={i}\n {...item}\n isInverted={isInverted}\n hasBack={hasBg}\n />\n );\n })}\n </TableWrapper>\n </TableSection>\n );\n};\n\nexport const TableComponent = Table;\nexport default withLibTheme(Table);\n","import React, { FC, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport Grid from 'components/base/Grid';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\nimport Wrapper from 'components/base/Wrapper';\nimport Section, { BgMode } from 'components/base/Section';\nimport {\n mq,\n spacings,\n getGlobals as global,\n getFonts as font,\n} from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport VideoBlock, { VideoAspectRatios } from 'components/blocks/VideoBlock';\nimport { isValidArray } from 'utils/arrays';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport useUpdateEffect from 'utils/useUpdateEffect';\n\nconst Figure = styled.figure`\n display: flex;\n flex-direction: column;\n position: relative;\n height: 100%;\n width: 100%;\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n\n @media ${mq.semilarge} {\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n }\n`;\n\nconst StyledImage = styled(Image)`\n position: relative;\n width: 100%;\n height: 100%;\n\n @media ${mq.semilarge} {\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n }\n`;\n\nconst Video = styled(VideoBlock)<{\n ratios?: VideoAspectRatios;\n isVisible?: boolean;\n}>`\n display: ${({ isVisible }) => (isVisible ? 'block' : 'none')};\n width: 100%;\n height: 100%;\n`;\n\nconst Description = styled(Copy)<{\n isInverted?: boolean;\n isSplitted?: boolean;\n isMirrored?: boolean;\n}>`\n display: block;\n\n @media ${mq.semilarge} {\n padding-left: ${spacings.nudge * 2}px;\n padding-right: ${spacings.nudge * 2}px;\n margin-left: ${({ isMirrored }) => isMirrored && 'auto'};\n margin-right: ${({ isMirrored }) => !isMirrored && 'auto'};\n max-width: ${({ isSplitted }) => isSplitted && '81.5%'};\n\n color: ${({ theme, isInverted, isSplitted }) =>\n isInverted && !isSplitted\n ? font(theme).copy.small.colorInverted\n : font(theme).copy.small.color};\n }\n\n @media ${mq.xlarge} {\n max-width: ${({ isSplitted }) => isSplitted && '69.5%'};\n }\n`;\n\nconst StyledActions = styled(Actions)`\n &:not(:first-child) {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst Teaser: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Switch text and image columns */\n isMirrored?: boolean;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Images for different screen sizes */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /**\n * Use video instead of an image. Until video is loaded images defined in the image prop are used.\n * Multiple video urls can be used to loaded different file formats\n */\n video?: {\n urls: string[];\n aspectRatios?: VideoAspectRatios;\n };\n\n /** Image or video description text (richtext) */\n description?: string;\n\n /** Main richtext */\n text?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted' | 'inverted-splitted';\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n isMirrored = false,\n bgMode,\n superTitle,\n superTitleAs,\n title,\n titleAs,\n image,\n video,\n description,\n text,\n primaryAction,\n secondaryAction,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted' || bgMode === 'inverted-splitted';\n const isSplitted = bgMode === 'splitted' || bgMode === 'inverted-splitted';\n const hasVideo = isValidArray(video?.urls, false);\n\n const viewRef = useRef<HTMLDivElement | null>(null);\n const [isLoaded, setLoaded] = useState(!image?.small || false);\n const [isVideoActive, setVideoActive] = useState<boolean>(false);\n const isObserverSupported = useObserverSupport();\n\n useUpdateEffect(() => {\n if (!viewRef.current || !hasVideo) return;\n if (!isObserverSupported) {\n setVideoActive(true);\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries, observer) => {\n const [entry] = entries;\n\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n setVideoActive(true);\n }\n },\n {\n rootMargin: '200px 0px 200px 0px',\n }\n );\n\n const viewEl = viewRef.current;\n observer.observe(viewEl);\n\n return () => {\n if (viewEl) observer.unobserve(viewEl);\n };\n }, [isObserverSupported]);\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToTeaserBgMode(bgMode, false, isMirrored)}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row valign=\"center\">\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n xlarge={{\n span: 7 / 12,\n move: (isMirrored ? 5 : 0) / 12,\n }}\n >\n {(image?.small || hasVideo) && (\n <Figure ref={viewRef}>\n {image?.small && (!video || !isLoaded) && (\n <StyledImage\n {...image}\n isInverted={isInverted}\n coverSpace\n />\n )}\n {hasVideo && (\n <Video\n urls={\n isVideoActive\n ? video?.urls\n : undefined\n }\n muted\n autoPlay\n loop\n onCanPlayThrough={() => setLoaded(true)}\n ratios={video?.aspectRatios}\n isVisible={isLoaded}\n isInverted={isInverted}\n />\n )}\n {description && (\n <Description\n size=\"small\"\n renderAs=\"figcaption\"\n isInverted={isInverted}\n isSplitted={isSplitted}\n isMirrored={isMirrored}\n innerHTML={description}\n />\n )}\n </Figure>\n )}\n </Grid.Col>\n\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n xlarge={{\n span: 5 / 12,\n move: (isMirrored ? -7 : 0) / 12,\n }}\n >\n <IntroBlock\n titleHyphens\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n />\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction && primaryAction(isInverted)\n }\n secondary={\n secondaryAction &&\n secondaryAction(isInverted)\n }\n />\n )}\n </Grid.Col>\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const mapToTeaserBgMode = (\n mode?: 'full' | 'splitted' | 'inverted' | 'inverted-splitted',\n preventSplit = false,\n isMirrored = false\n): BgMode | undefined => {\n switch (mode) {\n case 'full':\n return 'full';\n case 'inverted':\n return 'inverted';\n case 'splitted': {\n if (!preventSplit)\n return isMirrored ? 'larger-left' : 'larger-right';\n else return undefined;\n }\n case 'inverted-splitted': {\n if (!preventSplit)\n return isMirrored ? 'larger-left' : 'larger-right';\n else return undefined;\n }\n\n default:\n return undefined;\n }\n};\n\nexport const TeaserComponent = Teaser;\nexport default withLibTheme(Teaser);\n","import React, { FC, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Grid, { getGridWidth } from 'components/base/Grid';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport { mq, spacings, withRange, getGlobals as global } from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport VideoBlock, { VideoAspectRatios } from 'components/blocks/VideoBlock';\nimport { isValidArray } from 'utils/arrays';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport useUpdateEffect from 'utils/useUpdateEffect';\n\n/**\n * calculate single grid col from relative content wrapper\n * (grid width = wrapper width without paddings)\n * */\nconst getGridColOfContent = () => {\n return css`\n ${getGridWidth({\n cols: 1,\n gridWidth: `${spacings.wrapper - wrapperWhitespace * 2}px `,\n })}\n `;\n};\n\nconst WideVideo = styled(VideoBlock)<{\n isMirrored?: boolean;\n isVisible?: boolean;\n}>`\n display: ${({ isVisible }) => (isVisible ? 'block' : 'none')};\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n\n min-height: 400px;\n object-fit: cover;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of current\n viewport width.\n */\n width: calc(50% + ${getGridColOfContent()} + ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of large wrapper width.\n */\n width: calc(\n ${spacings.wrapperLarge / 2}px + ${getGridColOfContent()} +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored ? '100% - ' : '-100% + '}\n (${getGridColOfContent()} + ${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst WideImage = styled(Image)<{ isMirrored?: boolean }>`\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n\n height: 100%;\n min-height: 400px;\n\n img {\n height: 100%;\n }\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of current\n viewport width.\n */\n width: calc(50% + ${getGridColOfContent()} + ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of large wrapper width.\n */\n width: calc(\n ${spacings.wrapperLarge / 2}px + ${getGridColOfContent()} +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored ? '100% - ' : '-100% + '}\n (${getGridColOfContent()} + ${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst Content = styled.div`\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-bottom'\n )}\n\n @media ${mq.semilarge} {\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-top'\n )}\n }\n`;\n\nconst StyledActions = styled(Actions)`\n &:not(:first-child) {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst TeaserWide: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Switch text and image columns */\n isMirrored?: boolean;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Images for different screen sizes */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /**\n * Use video instead of an image. Until video is loaded images defined in the image prop are used.\n * Multiple video urls can be used to loaded different file formats\n */\n video?: {\n urls: string[];\n aspectRatios?: VideoAspectRatios;\n };\n\n /** Main richtext */\n text?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n isMirrored = false,\n superTitle,\n superTitleAs,\n title,\n titleAs,\n image,\n video,\n text,\n primaryAction,\n secondaryAction,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const hasVideo = isValidArray(video?.urls, false);\n\n const viewRef = useRef<HTMLDivElement | null>(null);\n const [isLoaded, setLoaded] = useState(!image?.small || false);\n const [isVideoActive, setVideoActive] = useState<boolean>(false);\n const isObserverSupported = useObserverSupport();\n\n useUpdateEffect(() => {\n if (!viewRef.current || !hasVideo) return;\n if (!isObserverSupported) {\n setVideoActive(true);\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries, observer) => {\n const [entry] = entries;\n\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n setVideoActive(true);\n }\n },\n {\n rootMargin: '200px 0px 200px 0px',\n }\n );\n\n const viewEl = viewRef.current;\n observer.observe(viewEl);\n\n return () => {\n if (viewEl) observer.unobserve(viewEl);\n };\n }, [isObserverSupported]);\n\n return (\n <Section\n ref={viewRef}\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {image?.small && (!video || !isLoaded) && (\n <WideImage\n coverSpace\n {...image}\n isMirrored={isMirrored}\n isInverted={isInverted}\n />\n )}\n {hasVideo && (\n <WideVideo\n urls={isVideoActive ? video?.urls : undefined}\n muted\n autoPlay\n loop\n onCanPlayThrough={() => setLoaded(true)}\n isVisible={isLoaded}\n isInverted={isInverted}\n isMirrored={isMirrored}\n ratios={video?.aspectRatios}\n />\n )}\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Grid.Row valign=\"center\">\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n xlarge={{\n span: 7 / 12,\n move: (isMirrored ? 5 : 0) / 12,\n }}\n ></Grid.Col>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n xlarge={{\n span: 5 / 12,\n move: (isMirrored ? -7 : 0) / 12,\n }}\n >\n <Content>\n <IntroBlock\n titleHyphens\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n />\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction &&\n primaryAction(isInverted)\n }\n secondary={\n secondaryAction &&\n secondaryAction(isInverted)\n }\n />\n )}\n </Content>\n </Grid.Col>\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const TeaserWideComponent = TeaserWide;\nexport default withLibTheme(TeaserWide);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport React, {\n createRef,\n MutableRefObject,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { ThemeContext } from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst TimelineBlock = styled.div<{\n isSwitched?: boolean;\n isActive?: boolean;\n isInverted?: boolean;\n}>`\n position: relative;\n\n @media ${mq.large} {\n text-align: ${({ isSwitched }) => (isSwitched ? 'left' : 'right')};\n }\n\n &:after {\n content: '';\n width: 10px;\n height: 10px;\n\n box-sizing: content-box;\n border: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n border-radius: 50%;\n\n background: ${({ theme, isActive, isInverted }) =>\n isActive\n ? isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark\n : isInverted\n ? color(theme).elementBg.dark\n : color(theme).elementBg.light};\n\n position: absolute;\n top: 16px;\n left: 0px;\n\n transition: all 0.2s ease-in-out;\n\n @media ${mq.large} {\n left: ${({ isSwitched }) => (!isSwitched ? '50%' : 'auto')};\n right: ${({ isSwitched }) => isSwitched && '50%'};\n transform: translateX(\n ${({ isSwitched }) => (isSwitched ? '50%' : '-50%')}\n );\n }\n }\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n width: 2px;\n min-height: 160px;\n height: 100%;\n background: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n left: 5px;\n\n @media ${mq.large} {\n left: 50%;\n transform: translateX(-50%);\n }\n }\n\n &:first-child {\n padding-top: 0;\n\n &:before {\n top: 16px;\n }\n }\n`;\n\nconst TimelineText = styled.div<{\n isSwitched?: boolean;\n}>`\n position: relative;\n padding-left: ${spacings.nudge * 3 + 2}px;\n padding-bottom: ${spacings.spacer}px;\n\n @media ${mq.large} {\n max-width: 50%;\n\n margin-left: ${({ isSwitched }) => isSwitched && '50%'};\n margin-right: ${({ isSwitched }) => !isSwitched && '50%'};\n\n padding: ${({ isSwitched }) =>\n isSwitched\n ? `${spacings.spacer}px 0 ${spacings.spacer * 1.75}px ${\n spacings.spacer\n }px`\n : `${spacings.spacer}px ${spacings.spacer}px ${\n spacings.spacer * 1.75\n }px 0`};\n }\n\n &:first-child {\n padding-top: 0;\n }\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n`;\n\nconst ItemTitle = styled(Heading)``;\n\nconst ItemTextBlock = styled(Copy)``;\n\nconst Timeline: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n items?: { label?: string; title?: string; text?: string }[];\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, items }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const [targetRefs, setTargetRefs] = useState<\n MutableRefObject<HTMLDivElement>[]\n >([]);\n const observerSupported = useObserverSupport();\n const observerRef = useRef<IntersectionObserver | null>(null);\n\n const [activeItem, setActiveItem] = useState<number>(0);\n\n useEffect(() => {\n if (observerSupported && targetRefs && targetRefs.length > 0) {\n const options = {\n rootMargin: '-50% 0% -50% 0%',\n threshold: 0,\n };\n\n observerRef.current = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const index = targetRefs?.findIndex(\n (t) => t.current === entry.target\n );\n setActiveItem(index);\n }\n });\n }, options);\n\n for (let i = 0; i < targetRefs.length; i++) {\n observerRef.current.observe(targetRefs[i].current);\n }\n }\n\n return () => {\n observerRef.current?.disconnect();\n };\n }, [targetRefs, observerSupported]);\n\n useEffect(() => {\n setTargetRefs(() =>\n Array(items?.length)\n .fill(null)\n .map((_, i) => targetRefs[i] || createRef())\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [items?.length]);\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? color(theme).sectionBg.dark\n : hasBg\n ? color(theme).sectionBg.medium\n : 'transparent'\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n {items &&\n items.map((item, i) => {\n return (\n <TimelineBlock\n ref={targetRefs[i]}\n isActive={activeItem === i}\n isSwitched={i % 2 === 0}\n isInverted={isInverted}\n key={i}\n >\n <TimelineText isSwitched={i % 2 === 0}>\n <ItemTitle\n size=\"heading-2\"\n textColor={\n isInverted\n ? color(theme).text.inverted\n : color(theme).text.default\n }\n >\n {item.label}\n </ItemTitle>\n\n <ItemTextBlock\n type=\"copy-b\"\n size=\"big\"\n isInverted={isInverted}\n >\n {item.title}\n </ItemTextBlock>\n <ItemTextBlock\n innerHTML={item.text}\n isInverted={isInverted}\n />\n </TimelineText>\n </TimelineBlock>\n );\n })}\n </Wrapper>\n </Section>\n );\n};\n\nexport const TimelineComponent = Timeline;\nexport default withLibTheme(Timeline);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Wrapper from 'components/base/Wrapper';\nimport { ImageProps } from 'components/blocks/Image';\n\nimport VideoCard from 'components/blocks/VideoCard';\n\nconst Video: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n bgImage: Omit<ImageProps, 'ratios' | 'coverSpace'>;\n embedId: string;\n\n consentText?: string;\n consentAction?: (props: {\n handleClick?: () => void;\n consentProps: Record<string, string>;\n }) => React.ReactNode;\n /**\n * Custom handler for play button click\n * @returns true if video should be played\n */\n onPlay?: () => boolean;\n\n playIcon?: React.ReactNode;\n bgMode?: 'full' | 'inverted' | 'splitted';\n}> = ({\n anchorId,\n bgMode,\n bgImage,\n embedId,\n playIcon,\n consentText,\n consentAction,\n onPlay,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <VideoCard\n bgImage={bgImage}\n embedId={embedId}\n playIcon={playIcon}\n consentText={consentText}\n consentAction={consentAction}\n onPlay={onPlay}\n />\n </Wrapper>\n </Section>\n );\n};\n\nexport const VideoComponent = Video;\nexport default withLibTheme(Video);\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport { getColors as color, getGlobals as global, mq } from 'utils/styles';\nimport Play from 'components/base/icons/Play';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Wrapper from 'components/base/Wrapper';\nimport VideoBlock from 'components/blocks/VideoBlock';\nimport { ImageProps } from 'components/blocks/Image';\nimport { isValidArray } from 'utils/arrays';\n\nconst VideoContainer = styled.div<{ isInverted?: boolean }>`\n position: relative;\n cursor: pointer;\n`;\n\nconst Overlay = styled.div<{ bgImage?: ImageProps; isInverted?: boolean }>`\n position: relative;\n padding-top: ${`calc(100% / (16 / 9))`};\n background: ${({ theme, isInverted }) =>\n isInverted\n ? global(theme).sections.imagePlaceholderBg.inverted\n : global(theme).sections.imagePlaceholderBg.default};\n\n background-image: ${({ bgImage }) =>\n bgImage?.small && `url(\"${bgImage.small}\")`};\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n @media ${mq.medium} {\n text-align: left;\n\n background-image: ${({ bgImage }) =>\n bgImage?.medium && `url(\"${bgImage.medium}\")`};\n }\n\n @media ${mq.semilarge} {\n background-image: ${({ bgImage }) =>\n bgImage?.semilarge && `url(\"${bgImage.semilarge}\")`};\n }\n\n @media ${mq.large} {\n background-image: ${({ bgImage }) =>\n bgImage?.large && `url(\"${bgImage.large}\")`};\n }\n\n @media ${mq.xlarge} {\n background-image: ${({ bgImage }) =>\n bgImage?.xlarge && `url(\"${bgImage.xlarge}\")`};\n }\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n pointer-events: none;\n\n background: linear-gradient(\n 358.19deg,\n rgba(29, 34, 35, 0.52) 12.37%,\n rgba(29, 34, 35, 0) 59.02%\n );\n }\n`;\n\nconst VideoControls = styled.button`\n display: block;\n border: none;\n background: none;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n color: ${({ theme }) => color(theme).elementBg.light};\n z-index: 1;\n padding: 0;\n\n cursor: pointer;\n\n & > * {\n opacity: 0.8;\n transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;\n height: 80px;\n width: 80px;\n\n color: ${({ theme }) => color(theme).elementBg.dark};\n }\n\n ${Overlay}:hover > & > * {\n transform: scale(1.05);\n opacity: 1;\n }\n\n ${Overlay}:active > & > * {\n transform: scale(0.95);\n opacity: 1;\n }\n\n &:focus {\n outline: 2px solid ${({ theme }) => color(theme).primary.default};\n border-radius: 50%;\n opacity: 1;\n\n & > * {\n color: ${({ theme }) => color(theme).primary.default};\n }\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n`;\n\nconst Video = styled(VideoBlock)<{ isVisible?: boolean }>`\n opacity: ${({ isVisible }) => (isVisible ? 1 : 0)};\n pointer-events: ${({ isVisible }) => (isVisible ? 'all' : 'none')};\n`;\n\nconst RawVideo: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** URL to video sources */\n videoUrls?: string[];\n\n /** Placeholder image */\n placeholderImg?: Omit<ImageProps, 'ratios' | 'coverSpace'>;\n\n /** Enable autoplay without user interaction */\n autoplay?: boolean;\n\n /** Playing video in loop */\n loop?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Video play icon */\n playIcon?: React.ReactNode;\n}> = ({\n anchorId,\n bgMode,\n videoUrls,\n placeholderImg,\n playIcon,\n autoplay,\n loop,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const [isStarted, setIsStarted] = useState<boolean>(autoplay || false);\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <VideoContainer\n onClick={() => {\n if (isValidArray(videoUrls, false)) {\n setIsStarted(true);\n }\n }}\n >\n {isStarted && (\n <Video\n isVisible={isStarted || !placeholderImg?.small}\n controls={!autoplay}\n autoPlay\n loop={loop}\n muted={autoplay}\n ratios={{ small: 16 / 9 }}\n urls={videoUrls}\n isInverted={isInverted}\n />\n )}\n {!isStarted && (\n <Overlay\n bgImage={placeholderImg}\n isInverted={isInverted}\n >\n <VideoControls>\n {playIcon || <Play iconColor=\"#000\" />}\n </VideoControls>\n </Overlay>\n )}\n </VideoContainer>\n </Wrapper>\n </Section>\n );\n};\n\nexport const RawVideoComponent = RawVideo;\nexport default withLibTheme(RawVideo);\n","import React, { FC, useEffect, useMemo, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n mq,\n spacings,\n getColors as color,\n getFonts as font,\n getGlobals as global,\n withRange,\n} from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Grid, { getGridWidth, gridSettings } from 'components/base/Grid';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\n\nimport IntroBlock from 'components/blocks/IntroBlock';\n\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport { HeadlineTag } from 'components/typography/Heading';\n\nimport Phone from 'components/base/icons/Phone';\nimport Mail from 'components/base/icons/Mail';\n\nimport { generateLocalBusiness } from 'utils/structuredData';\nimport Link from 'components/typography/Link';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Control from 'components/buttons/Control';\nimport * as Icons from 'components/base/icons/Icons';\nimport { getSVGDataImg as getSVGData } from 'utils/dataURI';\nimport useLeafletMap from 'utils/useLeafletMap';\nimport { isValidArray } from 'utils/arrays';\n\ninterface Address {\n street: string;\n postalCode: string;\n city?: string;\n country: string;\n}\n\nconst MapSection = styled(Section)`\n position: relative;\n min-height: 500px;\n z-index: 0;\n`;\n\nconst MapContainer = styled.div<{ isMirrored?: boolean }>`\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n z-index: 0;\n\n height: 100%;\n min-height: 230px;\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n width: calc(50% - ${gridSettings.gutter}px ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n width: calc(\n ${spacings.wrapperLarge / 2}px - ${gridSettings.gutter}px +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored\n ? `(100% + ${gridSettings.gutter}px) - `\n : `(-100% - ${gridSettings.gutter}px) + `}\n (${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst CardWrapper = styled(Wrapper)`\n pointer-events: none;\n`;\n\nconst CardContainer = styled.div<{ isMirrored?: boolean }>`\n display: flex;\n flex-direction: row;\n position: relative;\n width: 100%;\n pointer-events: all;\n\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-bottom'\n )}\n\n @media ${mq.semilarge} {\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-top'\n )}\n }\n`;\n\nconst InfoCardView = styled.div`\n min-height: 100px;\n pointer-events: all;\n\n flex: 1 0 80%;\n max-width: 80%;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst CardHeader = styled.div`\n display: flex;\n`;\n\nconst ContactList = styled.ul<{ isInverted?: boolean }>`\n padding: 0;\n list-style-type: none;\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n\n li {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0;\n margin: 0;\n }\n\n li + li {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n span:first-child {\n flex: 0 0 30px;\n max-width: 30px;\n\n & > * {\n max-width: 100%;\n }\n }\n`;\n\nconst ContactListLink = styled(Link)`\n display: block;\n\n ${copyStyle('copy-b', 'big')}\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n\n * + & {\n margin-left: ${spacings.nudge * 1.5}px;\n }\n`;\n\nconst AddressContainer = styled.div<{ hasIcon?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n ${({ hasIcon }) => css`\n -ms-grid-columns: ${hasIcon ? 'min-content' : ''} 1fr;\n grid-template-columns: ${hasIcon ? 'min-content' : ''} 1fr;\n -ms-grid-rows: ${hasIcon ? 'min-content' : ''} 1fr;\n grid-auto-rows: ${hasIcon ? 'min-content' : ''} 1fr;\n `}\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst CompanyInfo: FC<{\n isInverted?: boolean;\n companyName: string;\n address?: Address;\n customIcon?: (isInverted?: boolean) => React.ReactNode;\n}> = ({ isInverted, companyName, address, customIcon }) => {\n return (\n <AddressContainer hasIcon={!!customIcon}>\n {customIcon && <span> {customIcon()} </span>}\n <div>\n <Copy type=\"copy-b\" size=\"big\" isInverted={isInverted}>\n {companyName}\n </Copy>\n {address && (\n <Copy type=\"copy-b\" size=\"big\" isInverted={isInverted}>\n <div>{address.street}</div>\n <div>{`${address.postalCode} ${address.city}`}</div>\n <div>{address.country}</div>\n </Copy>\n )}\n </div>\n </AddressContainer>\n );\n};\n\nconst Desc = styled(Copy)`\n @media ${mq.semilarge} {\n margin-top: ${spacings.spacer * 2.5}px;\n }\n`;\n\nconst LocationInfoCard: FC<\n MapLocation & {\n isInverted?: boolean;\n }\n> = ({\n isInverted,\n title,\n titleAs,\n superTitle,\n superTitleAs,\n companyName,\n address,\n addressIcon,\n contact,\n description,\n}) => {\n const { colors } = useLibTheme();\n\n const addressIconContent = addressIcon ? (\n addressIcon({ isInverted })\n ) : (\n <LocationPin\n iconColor={isInverted ? colors.text.inverted : colors.text.default}\n />\n );\n\n const phoneIconContent = contact?.telephone?.icon ? (\n contact.telephone.icon({\n isInverted,\n })\n ) : (\n <Phone />\n );\n\n const mailIconContent = contact?.email?.icon ? (\n contact.email.icon({ isInverted })\n ) : (\n <Mail />\n );\n\n return (\n <InfoCardView>\n <CardHeader>\n <IntroBlock\n colorMode={isInverted ? 'inverted' : 'default'}\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n />\n </CardHeader>\n {companyName && (\n <CompanyInfo\n companyName={companyName || ''}\n address={address}\n customIcon={\n addressIconContent\n ? () => addressIconContent\n : undefined\n }\n isInverted={isInverted}\n />\n )}\n {contact && (\n <ContactList isInverted={isInverted}>\n {contact?.telephone?.label && (\n <li>\n {phoneIconContent && (\n <span>{phoneIconContent}</span>\n )}\n <ContactListLink\n isInverted={isInverted}\n href={`tel:${\n contact.telephone.link ||\n contact.telephone.label\n }`}\n >\n {contact.telephone?.label}\n </ContactListLink>\n </li>\n )}\n {contact?.email?.label && (\n <li>\n {mailIconContent && <span>{mailIconContent}</span>}\n <ContactListLink\n isInverted={isInverted}\n href={`mailto:${\n contact?.email.link || contact.email.label\n }`}\n >\n {contact?.email.label}\n </ContactListLink>\n </li>\n )}\n </ContactList>\n )}\n\n <Desc isInverted={isInverted} innerHTML={description} />\n </InfoCardView>\n );\n};\n\nconst Controls = styled.div`\n flex: 1 0 20%;\n max-width: 20%;\n display: flex;\n flex-direction: column;\n align-self: flex-start;\n margin-left: auto;\n text-align: right;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst FylToCtrlContainer = styled.button`\n position: absolute;\n top: 0;\n right: 0;\n z-index: 1000;\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n\n margin-top: ${spacings.spacer}px;\n margin-right: ${spacings.spacer}px;\n color: ${({ theme }) => color(theme).elementBg.dark};\n\n cursor: pointer;\n`;\n\nexport interface LocationIcon {\n url: string;\n size: [number, number];\n anchor: [number, number];\n\n sizeActive: [number, number];\n anchorActive: [number, number];\n}\n\nexport interface MapLocation {\n id: string;\n position: [number, number];\n icon?: LocationIcon;\n\n title?: string; // Rich Text\n titleAs?: HeadlineTag;\n superTitle?: string;\n superTitleAs?: HeadlineTag;\n\n companyName?: string;\n address?: Address;\n addressIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n contact?: {\n telephone?: {\n link?: string;\n label?: string;\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n };\n email?: {\n link?: string;\n label?: string;\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n };\n };\n image?: string[];\n description?: string;\n}\n\nconst Map: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Switch horizontal order of map and location info text */\n isMirrored?: boolean;\n\n /** Map tile provider */\n provider?: string;\n\n /** Map attribution text (richtext) */\n attribution?: string;\n\n /** Initial center of the map */\n center?: [number, number];\n\n /** Initial map zoom */\n zoom?: number;\n\n /** Zoom if map jumps to location */\n flyToZoom?: number;\n\n /** Initial location */\n initialLocation?: string;\n\n /** Array of location settings */\n locations?: Array<MapLocation>;\n\n /** Show all markers on first load */\n allMarkersOnInit?: boolean;\n\n /** Map container padding for show all markers */\n fitBoundsPadding?: [number, number];\n\n /** Icon element for flight to the current active location */\n flyToControl?: React.ReactNode;\n\n /** Injection function to replace default control button */\n controlNext?: (props: {\n isInverted?: boolean;\n isActive?: boolean;\n name?: string;\n clickHandler?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n }) => React.ReactNode;\n\n /** Injection function to replace default control button */\n controlPrev?: (props: {\n isInverted?: boolean;\n isActive?: boolean;\n name?: string;\n clickHandler?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n }) => React.ReactNode;\n}> = ({\n anchorId,\n bgMode,\n isMirrored = false,\n provider,\n attribution,\n center = [51.505, -0.09],\n zoom = 5,\n flyToZoom,\n initialLocation,\n locations,\n allMarkersOnInit = false,\n fitBoundsPadding,\n flyToControl,\n controlNext,\n controlPrev,\n}) => {\n const { colors } = useLibTheme();\n\n const [activeLocationId, setActiveLocationId] = useState<string>(\n initialLocation || ''\n );\n const [isDirty, setIsDirty] = useState<boolean>(false);\n const activeLocation = useMemo(\n () => locations?.find((l) => l.id === activeLocationId),\n [activeLocationId, locations]\n );\n\n const hasBg = bgMode === 'full';\n const isInverted = bgMode === 'inverted';\n\n const defaultMarker: LocationIcon = {\n size: [28, 28],\n anchor: [14, 28],\n sizeActive: [70, 70],\n anchorActive: [35, 70],\n url: getSVGData(<LocationPin />),\n };\n const {\n isLoaded,\n setContainer: setMapContainer,\n flyToActive,\n showAllMarkers,\n } = useLeafletMap({\n url: provider,\n attribution,\n center,\n zoom,\n activeMarkerId: activeLocationId,\n markers: locations?.map(({ id, position, icon }) => ({\n id,\n position,\n icon: icon || defaultMarker,\n isInteractive: true,\n })),\n fitBoundsPadding,\n onMarkerClick: setActiveLocationId,\n });\n\n const goToNext = () => {\n setActiveLocationId((prev) => {\n if (!locations) return prev;\n const currentIndex = locations.findIndex(\n (l) => l.id === activeLocationId\n );\n if (currentIndex === -1) return prev;\n\n // get new index\n const newIndex = (currentIndex + 1) % locations.length;\n return locations[newIndex].id;\n });\n };\n\n const goToPrevious = () => {\n setActiveLocationId((prev) => {\n if (!locations) return prev;\n const currentIndex = locations.findIndex(\n (l) => l.id === activeLocationId\n );\n if (currentIndex === -1) return prev;\n\n // get new index\n const newIndex =\n currentIndex - 1 < 0 ? locations.length - 1 : currentIndex - 1;\n return locations[newIndex].id;\n });\n };\n\n useEffect(() => {\n if (isLoaded && !isDirty) {\n if (allMarkersOnInit) showAllMarkers();\n } else {\n flyToActive(flyToZoom);\n }\n }, [\n activeLocationId,\n allMarkersOnInit,\n flyToActive,\n flyToZoom,\n initialLocation,\n isDirty,\n isLoaded,\n showAllMarkers,\n ]);\n\n useEffect(() => {\n if (!isDirty && activeLocationId !== initialLocation) setIsDirty(true);\n }, [activeLocationId, initialLocation, isDirty]);\n\n return (\n <MapSection\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {locations && generateLocalBusiness(locations)}\n <MapContainer ref={setMapContainer} isMirrored={isMirrored}>\n {flyToControl && (\n <FylToCtrlContainer\n onClick={(ev) => {\n ev.stopPropagation();\n flyToActive(flyToZoom);\n }}\n >\n {flyToControl}\n </FylToCtrlContainer>\n )}\n </MapContainer>\n\n <CardWrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n ></Grid.Col>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n >\n <CardContainer isMirrored={isMirrored}>\n {isValidArray(locations, false) && (\n <React.Fragment>\n {activeLocation && (\n <LocationInfoCard\n {...activeLocation}\n isInverted={isInverted}\n />\n )}\n {locations.length > 1 && (\n <Controls>\n {controlNext ? (\n controlNext({\n isInverted,\n isActive: true,\n clickHandler: goToNext,\n name: 'control_next_head',\n })\n ) : (\n <Control\n isInverted={isInverted}\n isDisabled={false}\n onClick={goToNext}\n >\n <Icons.ArrowRightGhost />\n </Control>\n )}\n {controlPrev ? (\n controlPrev({\n isInverted,\n isActive: true,\n clickHandler: goToPrevious,\n name: 'control_prev_head',\n })\n ) : (\n <Control\n isInverted={isInverted}\n isDisabled={false}\n onClick={goToPrevious}\n >\n <Icons.ArrowLeftGhost />\n </Control>\n )}\n </Controls>\n )}\n </React.Fragment>\n )}\n </CardContainer>\n </Grid.Col>\n </Grid.Row>\n </CardWrapper>\n </MapSection>\n );\n};\n\nexport const MapComponent = Map;\nexport default withLibTheme(Map);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport React from 'react';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst HtmlCode: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** HTML content */\n html?: string;\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ html, anchorId, bgMode }) => {\n const isInverted = bgMode === 'inverted';\n const { colors } = useLibTheme();\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {html && <div dangerouslySetInnerHTML={{ __html: html }} />}\n </Wrapper>\n </Section>\n );\n};\n\nexport const HtmlCodeComponent = HtmlCode;\nexport default withLibTheme(HtmlCode);\n"],"names":["AccordionContainer","styled","div","withConfig","displayName","componentId","templateObject_1","__makeTemplateObject","spacings","nudge","View","details","templateObject_2","AccordionHead","summary","templateObject_3","_a","isInverted","hasBg","theme","color","getColors","elementBg","light","medium","mq","lightHover","mediumHover","Column","Copy","templateObject_4","AccordionText","templateObject_5","spacer","semilarge","gridSettings","gutter","AccordionBlock","label","text","aside","isSelected","onClick","itemIcon","className","colors","useLibTheme","React","createElement","open","onToggle","renderAs","size","type","Minus","iconColor","default","Plus","hasAside","innerHTML","Accordion$1","withLibTheme","anchorId","items","bgMode","_b","useState","currentItems","setCurrentItems","Section","addSeperation","bgColor","sectionBg","dark","mapToBgMode","generateFAQ","Wrapper","addWhitespace","Grid","Row","Col","map","i","indexOf","key","concat","prev","copy","__spreadArray","index","push","splice","primary","inverted","global","sections","edgeRadius","invertedHover","hover","Icon","MainLabel","Content","Title","ViewLink","Link","templateObject_6","Alert","title","date","description","link","customIcon","formattedDate","StatusFormatter","getTime","getFormattedDate","Info","textColor","__assign","ariaLabel","href","undefined","List","ul","ListItem","li","large","itemsPerRow","AlertList$1","alertCount","length","alertRefs","useEqualSheetHeight","listLength","identifiers","responsive","small","xlarge","item","ref","StyledTitle","ContentText","StyledActions","Actions","Article$1","titleAs","_c","titleSize","superTitle","superTitleAs","intro","asideText","halfAside","primaryAction","secondaryAction","hasContent","clampWidth","colorMode","valign","span","secondary","ContactView","Avatar","img","getGlobals","imagePlaceholderBg","Description","StyledIntro","IntroBlock","hasDecorator","StyledContactBox","avatar","src","alt","getGridWidth","cols","NewsletterWrapper","templateObject_7","Badge","templateObject_8","CallToAction$1","contact","badge","hasNewsletter","newsFormMain","isCentered","isTextCentered","SolidView","cardColor","hasLink","css","ImageView","imageTextGradient","StyledImage","Image","hasIcon","TextContainer","templateObject_9","Footer","SubLabel","templateObject_11","templateObject_12","CardLink","templateObject_13","Card","subLabel","image","decorator","CardView","defaultCardColor","coverSpace","ratios","w","h","templateObject_14","CardItem","templateObject_15","isEqual","threeCols","CardList$2","maxThreeCols","clamp","num","min","max","Math","Images","BackgroundImg","ForegroundContainer","hasTransition","hasAnim","initalValue","ForegroundImg","ForegroundOverlay","ImageLabel","ForegroundLabel","BackgroundLabel","ControlContainer","templateObject_10","Control","ComparisonSlider$1","initialValue","foregroundImg","backgroundImg","foregroundLabel","backgroundLabel","overlayColor","labelColor","dragControl","enableControlAnim","isIE","useIE","_d","slideValue","setSlideValue","_e","isHolding","setIsHolding","_f","isDragging","setIsDragging","_g","interacted","setInteracted","_h","sideOffset","setSideOffset","controlRef","useRef","useEffect","current","offsetWidth","handleInitalLoad","observer","IntersectionObserver","entries","isIntersecting","unobserve","target","rootMargin","threshold","observe","window","removeEventListener","document","readyState","addEventListener","setCurrentPos","clientX","relativeClientX","getBoundingClientRect","x","width","percentage","ev","currentTarget","onMouseMove","onMouseDown","onMouseUp","onMouseLeave","onTouchMove","touches","onTouchStart","onTouchEnd","style","left","ArrowLeftRight","clickable","IntroContainer","clampTitle","wrapper","ExternalIconHolder","withRange","PromotionCard","forwardRef","externalLinkIcon","icon","linkObj","isExternal","externalIconString","ReactDOMServer","renderToString","External","isMain","CrossPromotion$1","main","isMirrored","card","ImageContainer","SubTitle","Text","Fact","subTitle","showPlaceholder","FactFill","FactGrid$1","columns","facts","factCount","cardRefs","fact","FactsContainer","FactItem","hasBack","hasText","ContentBlock","FactList$1","TitleLink","copyStyle","font","getFonts","big","colorInverted","ArticleContent","Action","Feature","action","dataSheet","features","featureCount","isHalf","useMemo","halign","feature","Gallery$1","images","isFull","StyledSection","ItemContainer","Items","isVisible","Item","ItemLink","ShowMore","itemCount","IconList$1","toggle","showLessText","showMoreText","enableToggle","showMore","setShowMore","handleToggleClick","ratio","isToggled","clickHandler","additionalProps","Pointer","as","Label","IndexLink","LinkLabel","IconWrapper","IndexList$1","scrollToOffset","setTargetPos","useScrollTo","useMediaQueries","topOffset","setTopOffset","handleLinkClick","preventDefault","getAttribute","getElementById","split","top","scrollY","url","URL","location","hash","history","pushState","header","querySelector","navbarIdent","getNavbarState","navbarHeights","getFullNavbarHeights","ArrowDown","abstract","isStackable","clampAbstract","clampText","TitleIcon","NavBlock","customTitleIcon","Fragment","NavList$1","MEDIA_QUERIES","NumberListCard","digit","Callout","CardList","NumberList$1","useContext","ThemeContext","numbersRef","customMediaQueries","section","Parallax","hAlign","contentWidth","wrapperLarge","Container","figure","verticallyCentered","imageTextGradientCentered","Intro","wrapperWhitespace","Poster$1","horizontallyCentered","maxTitleLines","maxTextLines","ItemList","ItemBlock","ListHead","Price","PriceBlock","price","PriceList$1","isHighlighted","PriceTag","hasBackground","mode","Tag","PriceTable$1","priceTagCount","Source","Quote$1","source","citeUrl","cite","ImageWrapper","SimpleImage$1","Cards","FollowUs","Heading","InstagramIcon","SocialWall$1","hashTag","followUs","socialIcon","Instagram","TableSection","TableWrapper","Table$1","tableItems","TableBlock","Figure","Video","VideoBlock","isSplitted","mapToTeaserBgMode","preventSplit","Teaser$1","video","hasVideo","isValidArray","urls","viewRef","isLoaded","setLoaded","isVideoActive","setVideoActive","isObserverSupported","useObserverSupport","useUpdateEffect","entry","viewEl","move","muted","autoPlay","loop","onCanPlayThrough","aspectRatios","titleHyphens","getGridColOfContent","gridWidth","WideVideo","xxlarge","WideImage","seperation","padding","TeaserWide$1","TimelineBlock","isSwitched","isActive","TimelineText","ItemTitle","ItemTextBlock","Timeline$1","targetRefs","setTargetRefs","observerSupported","observerRef","activeItem","setActiveItem","forEach","findIndex","t","disconnect","Array","fill","_","createRef","bgImage","embedId","playIcon","consentText","consentAction","onPlay","VideoCard","VideoContainer","Overlay","VideoControls","button","RawVideo$1","videoUrls","placeholderImg","autoplay","isStarted","setIsStarted","controls","Play","MapSection","MapContainer","CardWrapper","CardContainer","InfoCardView","CardHeader","ContactList","ContactListLink","AddressContainer","CompanyInfo","companyName","address","street","postalCode","city","country","Desc","LocationInfoCard","addressIcon","addressIconContent","LocationPin","phoneIconContent","telephone","Phone","mailIconContent","email","Mail","Controls","FylToCtrlContainer","Map$1","provider","attribution","center","zoom","flyToZoom","initialLocation","locations","allMarkersOnInit","fitBoundsPadding","flyToControl","controlNext","controlPrev","activeLocationId","setActiveLocationId","isDirty","setIsDirty","activeLocation","find","l","id","defaultMarker","anchor","sizeActive","anchorActive","getSVGData","getSVGDataImg","useLeafletMap","activeMarkerId","markers","position","isInteractive","onMarkerClick","setMapContainer","setContainer","flyToActive","showAllMarkers","goToNext","currentIndex","newIndex","goToPrevious","generateLocalBusiness","stopPropagation","name","isDisabled","Icons","ArrowRightGhost","html","dangerouslySetInnerHTML","__html","moveRatio","direction","setIsLoaded","yTransform","setYTransform","cRef","setContainerRef","parallaxRef","isNaN","prevEl","previousElementSibling","bgIdent","dataset","stackIdent","setAttribute","handleScroll","containerPos","transform"],"mappings":"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"}
1
+ {"version":3,"file":"sections.js","sources":["../src/components/sections/Accordion.tsx","../src/components/blocks/Alert.tsx","../src/components/sections/AlertList.tsx","../src/components/sections/Article.tsx","../src/components/sections/CallToAction.tsx","../src/components/sections/CardList.tsx","../src/components/sections/ComparisonSlider.tsx","../src/components/blocks/PromotionCard.tsx","../src/components/sections/CrossPromotion.tsx","../src/components/blocks/Fact.tsx","../src/components/sections/FactGrid.tsx","../src/components/sections/FactList.tsx","../src/components/blocks/Feature.tsx","../src/components/sections/FeatureList.tsx","../src/components/sections/Gallery.tsx","../src/components/sections/IconList.tsx","../src/components/sections/IndexList.tsx","../src/components/sections/Intro.tsx","../src/components/blocks/NavBlock.tsx","../src/components/sections/NavList.tsx","../src/components/sections/NumberList.tsx","../src/components/sections/ParallaxBackground.tsx","../src/components/sections/Poster.tsx","../src/components/sections/PriceList.tsx","../src/components/blocks/PriceTag.tsx","../src/components/sections/PriceTable.tsx","../src/components/sections/Quote.tsx","../src/components/sections/SimpleImage.tsx","../src/components/sections/SocialWall.tsx","../src/components/sections/Table.tsx","../src/components/sections/Teaser.tsx","../src/components/sections/TeaserWide.tsx","../src/components/sections/Timeline.tsx","../src/components/sections/Video.tsx","../src/components/sections/RawVideo.tsx","../src/components/sections/Map.tsx","../src/components/sections/HtmlCode.tsx"],"sourcesContent":["import Plus from 'components/base/icons/Plus';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { spacings, getColors as color, mq } from 'utils/styles';\nimport Minus from 'components/base/icons/Minus';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { generateFAQ } from 'utils/structuredData';\nimport Grid, { gridSettings } from 'components/base/Grid';\n\nconst AccordionContainer = styled.div`\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst View = styled.details``;\n\nconst AccordionHead = styled.summary<{\n isInverted?: boolean;\n hasBg?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n padding: ${spacings.nudge * 2}px;\n margin: 0;\n border: none;\n outline: none;\n background: none;\n user-select: none;\n list-style: none;\n\n background: ${({ isInverted, hasBg, theme }) =>\n isInverted || hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n cursor: pointer;\n transition: background 0.2s ease-in-out;\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 3}px;\n }\n\n &::-webkit-details-marker {\n display: none;\n }\n\n &::marker {\n display: none;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n background: ${({ theme, isInverted, hasBg }) =>\n isInverted || hasBg\n ? color(theme).elementBg.lightHover\n : color(theme).elementBg.mediumHover};\n }\n }\n\n &:focus {\n background: ${({ theme, isInverted, hasBg }) =>\n isInverted || hasBg\n ? color(theme).elementBg.lightHover\n : color(theme).elementBg.mediumHover};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n`;\n\nconst Column = styled(Copy)`\n flex: 1 1 0;\n`;\n\nconst AccordionText = styled.div<{\n isInverted?: boolean;\n hasBg?: boolean;\n hasAside?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n padding: ${spacings.nudge * 2}px;\n margin-top: 2px;\n background: ${({ isInverted, hasBg, theme }) =>\n isInverted || hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n & > * {\n max-width: 880px;\n }\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.semilarge} {\n flex-direction: row;\n\n & > * + * {\n margin-top: 0px;\n margin-left: ${gridSettings.gutter}px;\n }\n }\n`;\n\ninterface AccordionItem {\n label?: string;\n text?: string;\n aside?: string;\n}\n\nconst AccordionBlock: React.FC<\n AccordionItem & {\n isSelected?: boolean;\n onClick?: () => void;\n isInverted?: boolean;\n hasBg?: boolean;\n itemIcon?: (props: { isSelected: boolean }) => React.ReactNode;\n className?: string;\n }\n> = ({\n label,\n text,\n aside,\n isSelected,\n onClick,\n hasBg,\n isInverted,\n itemIcon,\n className,\n}) => {\n const { colors } = useLibTheme();\n\n return (\n <View open={isSelected} onToggle={onClick} className={className}>\n <AccordionHead isInverted={isInverted} hasBg={hasBg}>\n <Copy renderAs=\"span\" size=\"big\" type=\"copy-b\">\n {label}\n </Copy>\n <span>\n {itemIcon ? (\n itemIcon({ isSelected: isSelected || false })\n ) : isSelected ? (\n <Minus iconColor={colors.text.default} />\n ) : (\n <Plus iconColor={colors.text.default} />\n )}\n </span>\n </AccordionHead>\n <AccordionText\n isInverted={isInverted}\n hasBg={hasBg}\n hasAside={!!aside}\n >\n {text && <Column type=\"copy\" innerHTML={text} />}\n {aside && <Column type=\"copy\" innerHTML={aside} />}\n </AccordionText>\n </View>\n );\n};\n\nconst Accordion: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of accordion items */\n items?: AccordionItem[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom item state icon */\n itemIcon?: (props: { isSelected: boolean }) => React.ReactNode;\n}> = ({ anchorId, items, bgMode, itemIcon }) => {\n const [currentItems, setCurrentItems] = React.useState<number[]>([]);\n\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {items && generateFAQ(items)}\n <Wrapper addWhitespace>\n <Grid.Row gutter={0}>\n <Grid.Col>\n <AccordionContainer aria-label=\"Accordion Control Group Buttons\">\n {items?.map(({ label, text, aside }, i) => {\n const isSelected =\n currentItems.indexOf(i) !== -1;\n return (\n <AccordionBlock\n key={`${label}_${i}`}\n isSelected={isSelected}\n label={label}\n text={text}\n aside={aside}\n onClick={() => {\n setCurrentItems((prev) => {\n const copy = [...prev];\n const index = copy.indexOf(i);\n if (index === -1) {\n copy.push(i);\n } else {\n copy.splice(index, 1);\n }\n return copy;\n });\n }}\n isInverted={isInverted}\n hasBg={hasBg}\n itemIcon={itemIcon}\n />\n );\n })}\n </AccordionContainer>\n </Grid.Col>\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const AccordionComponent = Accordion;\nexport default withLibTheme(Accordion);\n","import Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled from 'styled-components';\nimport {\n getColors as color,\n getGlobals as global,\n spacings,\n} from 'utils/styles';\nimport StatusFormatter from '../../utils/statusFormatter';\nimport Info from '../base/icons/Info';\n\nconst View = styled.div<{ isInverted?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n -ms-grid-columns: min-content 1fr;\n grid-template-columns: min-content 1fr;\n -ms-grid-rows: min-content 1fr;\n grid-auto-rows: min-content 1fr;\n\n text-decoration: none;\n\n position: relative;\n border: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n padding: ${spacings.nudge * 3}px;\n\n text-align: left;\n width: 100%;\n cursor: pointer;\n\n transition: color ease-in-out 0.2s, border 0.2s ease-in-out;\n\n & > * + * {\n margin-left: ${spacings.nudge * 3}px;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n border: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n }\n`;\n\nconst Icon = styled.div`\n display: flex;\n align-items: center;\n\n & > * {\n height: 48px;\n width: 48px;\n }\n`;\n\nconst MainLabel = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst Content = styled.div`\n margin-top: ${spacings.nudge}px;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n`;\n\nconst ViewLink = styled(Link)`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n && {\n margin: 0;\n }\n\n &:focus-within {\n outline: dotted 2px\n ${({ isInverted, theme }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 4px;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n`;\n\nexport interface AlertProps {\n /** Invert colors for use on dark backgrounds */\n isInverted?: boolean;\n\n /** Alert title text */\n title?: string;\n\n /** Alert date */\n date?: Date;\n\n /** Additional description text (richtext) */\n description?: string;\n\n /** Alert link that covers hole element */\n link?: LinkProps;\n\n /** Function to inject custom alert icon */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst Alert: React.FC<AlertProps & { className?: string }> = ({\n isInverted,\n title,\n date,\n description,\n link,\n customIcon,\n className,\n}) => {\n let formattedDate = '';\n if (date) {\n const formatter = new StatusFormatter(\n date.getTime(),\n '',\n 'dd. MMMM yyyy',\n 'hh:mm',\n 'de'\n );\n formattedDate = formatter.getFormattedDate();\n }\n\n return (\n <View isInverted={isInverted} data-sheet=\"alert\" className={className}>\n <Icon>{customIcon ? customIcon({ isInverted }) : <Info />}</Icon>\n <MainLabel>\n {title && (\n <Title textColor=\"inherit\" size=\"medium\" type=\"copy-b\">\n {title}\n </Title>\n )}\n </MainLabel>\n <span />\n <Content>\n {description && (\n <Copy\n isInverted={isInverted}\n size=\"small\"\n innerHTML={description}\n />\n )}\n {date && (\n <Copy size=\"small\" isInverted={isInverted}>\n {formattedDate}\n </Copy>\n )}\n </Content>\n {link && (\n <ViewLink\n {...link}\n ariaLabel={link?.href ? title : undefined}\n />\n )}\n </View>\n );\n};\n\nexport default Alert;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { mq, spacings } from 'utils/styles';\nimport Wrapper from 'components/base/Wrapper';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Alert, { AlertProps } from '../blocks/Alert';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\n\nconst List = styled.ul`\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n }\n`;\n\nconst ListItem = styled.li<{ itemsPerRow: number }>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n flex: 1 1 100%;\n\n @media ${mq.medium} {\n flex: 0 1 50%;\n max-width: 50%;\n\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n\n @media ${mq.large} {\n flex: 0 1 ${({ itemsPerRow }) => (1 / itemsPerRow) * 100}%;\n max-width: 600px;\n\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n`;\n\nconst AlertList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of alert items */\n items?: Pick<AlertProps, 'title' | 'date' | 'description' | 'link'>[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom alert icon */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}> = ({ anchorId, items, bgMode, customIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const alertCount = items?.length || 0;\n const itemsPerRow = alertCount % 3 === 1 || alertCount === 2 ? 2 : 3;\n\n const { sheetRefs: alertRefs } = useEqualSheetHeight<HTMLLIElement>({\n listLength: alertCount,\n identifiers: ['[data-sheet=\"alert\"]'],\n responsive: {\n small: 1,\n medium: 2,\n semilarge: 2,\n large: itemsPerRow,\n xlarge: itemsPerRow,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <ListItem\n key={i}\n itemsPerRow={itemsPerRow}\n ref={alertRefs[i]}\n >\n <Alert\n {...item}\n isInverted={isInverted}\n customIcon={customIcon}\n />\n </ListItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const AlertListComponent = AlertList;\nexport default withLibTheme(AlertList);\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Title, { TitleSize } from 'components/blocks/Title';\nimport Copy from 'components/typography/Copy';\nimport Wrapper from 'components/base/Wrapper';\nimport { spacings, mq } from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Grid from 'components/base/Grid';\n\nconst StyledTitle = styled(Title)`\n &:not(:last-child) {\n margin-bottom: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n max-width: 880px;\n }\n`;\n\nconst ContentText = styled(Copy)`\n text-align: left;\n`;\n\nconst StyledActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n`;\n\nconst Article: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Main title text */\n title?: string;\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Main title size */\n titleSize?: TitleSize;\n /** Superior title that stands above main title */\n superTitle?: string;\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Bold intro text underneath the title (limited richtext capabilites) */\n intro?: string;\n /** Main article richtext */\n text?: string;\n /** Additional article richtext in a second column */\n asideText?: string;\n /** Controls width of left text column (8/12 or 6/12) */\n halfAside?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n title,\n titleAs = 'h2',\n titleSize = 'heading-2',\n superTitle,\n superTitleAs,\n intro,\n text,\n asideText,\n halfAside,\n bgMode,\n primaryAction,\n secondaryAction,\n}) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasContent = intro || text || asideText;\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {(title || superTitle) && (\n <StyledTitle\n title={title}\n titleAs={titleAs}\n titleSize={titleSize}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n colorMode={isInverted ? 'inverted' : 'default'}\n />\n )}\n {hasContent && (\n <Grid.Row valign=\"top\">\n <Grid.Col\n semilarge={{ span: halfAside ? 6 / 12 : 8 / 12 }}\n >\n {intro && (\n <ContentText\n type=\"copy-b\"\n isInverted={isInverted}\n innerHTML={intro}\n />\n )}\n {text && (\n <ContentText\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={text}\n />\n )}\n </Grid.Col>\n {asideText && (\n <Grid.Col\n semilarge={{\n span: halfAside ? 6 / 12 : 4 / 12,\n }}\n >\n <ContentText\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={asideText}\n />\n </Grid.Col>\n )}\n </Grid.Row>\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={primaryAction && primaryAction(isInverted)}\n secondary={\n secondaryAction && secondaryAction(isInverted)\n }\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const ArticleComponent = Article;\nexport default withLibTheme(Article);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getGlobals as global, mq, spacings } from 'utils/styles';\nimport Copy from 'components/typography/Copy';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { gridSettings, getGridWidth } from 'components/base/Grid';\n\nconst ContactView = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0 auto;\n width: 100%;\n\n text-align: left;\n hyphens: auto;\n overflow-wrap: break-word;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n flex-direction: row;\n\n & > * + * {\n margin-top: 0px;\n margin-left: ${gridSettings.gutter}px;\n }\n }\n`;\n\nconst Avatar = styled.img<{ isInverted?: boolean }>`\n align-self: center;\n display: block;\n border: solid 1px transparent;\n border-radius: 50%;\n width: 180px;\n height: 180px;\n\n background: ${({ theme, isInverted }) =>\n isInverted\n ? global(theme).sections.imagePlaceholderBg.inverted\n : global(theme).sections.imagePlaceholderBg.default};\n\n @media ${mq.semilarge} {\n display: block;\n width: 190px;\n height: 190px;\n }\n`;\n\nconst Description = styled(Copy)`\n text-align: center;\n\n .icon-label {\n flex-direction: column;\n }\n\n .icon-label > * + * {\n margin-left: 0;\n margin-top: ${spacings.nudge * 2}px;\n }\n\n & > * {\n justify-content: center;\n }\n\n @media ${mq.semilarge} {\n text-align: left;\n\n & > * {\n justify-content: left;\n }\n\n .icon-label {\n flex-direction: row;\n }\n\n .icon-label > * + * {\n margin-left: ${spacings.nudge * 2}px;\n margin-top: 0;\n }\n }\n`;\n\nexport interface ContactBoxProps {\n isInverted?: boolean;\n description?: string;\n avatar?: { src: string; alt: string };\n}\n\nconst ContactBox: FC<ContactBoxProps & { className?: string }> = ({\n isInverted,\n description,\n avatar,\n className,\n}) => {\n return (\n <ContactView className={className}>\n <Avatar\n src={avatar?.src}\n alt={avatar?.alt}\n isInverted={isInverted}\n />\n {description && (\n <Description\n type=\"copy\"\n isInverted={isInverted}\n innerHTML={description}\n />\n )}\n </ContactView>\n );\n};\n\nconst StyledIntro = styled(IntroBlock)<{ hasDecorator?: boolean }>`\n max-width: 880px;\n margin-right: auto;\n margin-left: auto;\n\n @media ${mq.xlarge} {\n & > *:first-child {\n min-height: ${({ hasDecorator }) => hasDecorator && '110px'};\n }\n }\n`;\n\nconst StyledContactBox = styled(ContactBox)`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.semilarge} {\n max-width: ${getGridWidth({ cols: 8 })};\n margin-right: auto;\n margin-left: auto;\n }\n\n @media ${mq.large} {\n max-width: ${getGridWidth({ cols: 6 })};\n }\n`;\n\nconst StyledActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.medium} {\n display: block;\n text-align: center;\n }\n`;\n\nconst NewsletterWrapper = styled.div`\n width: 100%;\n margin: 0 auto;\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.semilarge} {\n max-width: 400px;\n }\n`;\n\nconst Badge = styled.div`\n display: none;\n position: relative;\n height: 241px;\n width: 241px;\n margin-left: auto;\n margin-bottom: -135px;\n z-index: 3;\n\n @media ${mq.xlarge} {\n display: block;\n margin-right: ${1440 * (1 / 28) + 'px'};\n }\n`;\n\nexport interface CtaActionProps {\n isInverted?: boolean;\n isTextCentered?: boolean;\n}\n\nexport const CallToAction: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Main title text */\n title?: string;\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Superior title that stands above main title */\n superTitle?: string;\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Bold text underneath the title (limited richtext capabilites) */\n text?: string;\n /** Props for contact area */\n contact?: ContactBoxProps;\n /** Show Newsletter defined by inject function newsFormMain. Only visible if React node is defined! */\n hasNewsletter?: boolean;\n /** Badge decorator visible only on large screens */\n badge?: React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (props: CtaActionProps) => React.ReactNode;\n /** Function to inject custom secondary button */\n secondaryAction?: (props: CtaActionProps) => React.ReactNode;\n /** Function to inject newsletter form */\n newsFormMain?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n title,\n titleAs = 'h2',\n superTitle,\n superTitleAs,\n text,\n contact,\n badge,\n primaryAction,\n secondaryAction,\n hasNewsletter,\n newsFormMain,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted ? colors.sectionBg.dark : colors.sectionBg.medium\n }\n bgMode={bgMode ? mapToBgMode(bgMode, true) : 'full'}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n {badge && <Badge>{badge}</Badge>}\n {title && (\n <StyledIntro\n isCentered\n colorMode={isInverted ? 'inverted' : 'default'}\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n hasDecorator={!!badge}\n text={text}\n />\n )}\n\n {contact && (\n <StyledContactBox\n isInverted={isInverted}\n description={contact.description}\n avatar={contact.avatar}\n />\n )}\n {newsFormMain && hasNewsletter && (\n <NewsletterWrapper>\n {newsFormMain(isInverted)}\n </NewsletterWrapper>\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction &&\n primaryAction({ isInverted, isTextCentered: true })\n }\n secondary={\n secondaryAction &&\n secondaryAction({\n isInverted,\n isTextCentered: true,\n })\n }\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const CallToActionComponent = CallToAction;\nexport default withLibTheme(CallToAction);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled, { css } from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport {\n spacings,\n getColors as color,\n mq,\n getGlobals as global,\n} from 'utils/styles';\n\nconst View = styled.div<{\n isInverted?: boolean;\n cardColor?: string;\n hasLink?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n justify-content: center;\n position: relative;\n color: ${({ theme }) => color(theme).text.inverted};\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n min-height: 110px;\n\n overflow: hidden;\n\n @media ${mq.medium} {\n display: block;\n padding-top: 85%;\n }\n`;\n\nconst SolidView = styled(View)`\n background-color: ${({ theme, isInverted, cardColor }) =>\n cardColor\n ? cardColor\n : isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n transition: background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n\n ${({ hasLink }) =>\n hasLink &&\n css`\n cursor: pointer;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n }\n }\n `}\n`;\n\nconst ImageView = styled(View)`\n transition: box-shadow 0.2s ease-in-out;\n\n ${({ hasLink }) =>\n hasLink &&\n css`\n @media (hover: hover) and (pointer: fine) {\n cursor: pointer;\n\n img {\n -webkit-backface-visibility: hidden;\n -ms-transform: translateZ(0); /* IE 9 */\n -webkit-transform: translateZ(\n 0\n ); /* Chrome, Safari, Opera */\n transform: translateZ(0);\n transform-origin: center;\n transition: transform 0.2s ease-in-out;\n }\n\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n\n img {\n transform: scale(1.03);\n }\n }\n }\n `}\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme }) => global(theme).sections.imageTextGradient};\n pointer-events: none;\n }\n\n @media ${mq.medium} {\n padding-top: 0;\n }\n`;\n\nconst StyledImage = styled(Image)`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n\n display: block;\n width: 100%;\n height: 100%;\n\n object-fit: cover;\n object-position: center;\n\n @media ${mq.medium} {\n position: relative;\n }\n`;\n\nconst Content = styled.div<{ hasIcon?: boolean }>`\n z-index: 1;\n\n padding: ${spacings.nudge * 3}px;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n\n display: flex;\n flex-direction: ${({ hasIcon }) => (hasIcon ? 'column' : 'row')};\n justify-content: space-between;\n align-items: ${({ hasIcon }) => (hasIcon ? 'flex-start' : 'flex-end')};\n\n & > * + * {\n margin-left: 0;\n }\n }\n`;\n\nconst TextContainer = styled.div`\n width: 100%;\n overflow: hidden;\n\n & > * + * {\n margin-top: ${spacings.nudge / 2}px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n max-width: 100%;\n\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n overflow: hidden;\n`;\n\nconst Footer = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst SubLabel = styled(Copy)`\n display: inline-block;\n\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n`;\n\nconst Icon = styled.div`\n height: 100%;\n max-height: 60px;\n min-height: 40px;\n min-width: 40px;\n\n * {\n height: 100%;\n }\n\n svg,\n img {\n width: 100%;\n }\n\n @media ${mq.medium} {\n svg,\n img {\n width: auto;\n }\n }\n`;\n\nconst CardLink = styled(Link)<{ isInverted?: boolean }>`\n z-index: 1;\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n outline-color: ${({ theme }) => color(theme).primary.default};\n\n &:focus {\n border: 2px dotted ${({ theme }) => color(theme).primary.invertedHover};\n outline-offset: 4px;\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n`;\n\nexport interface CardProps {\n isInverted?: boolean;\n title?: string;\n subLabel?: string;\n image?: ImageProps;\n link?: LinkProps;\n decorator?: (props: { isInverted?: boolean }) => React.ReactNode;\n cardColor?: string;\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst Card: React.FC<\n Omit<CardProps, 'coverSpace' | 'ratios'> & {\n className?: string;\n }\n> = ({\n isInverted,\n title,\n subLabel,\n image,\n link,\n decorator,\n cardColor,\n customIcon,\n}) => {\n const { colors } = useLibTheme();\n const CardView = image && image.small ? ImageView : SolidView;\n const defaultCardColor = isInverted\n ? colors.primary.inverted\n : colors.primary.default;\n\n return (\n <CardView\n isInverted={isInverted}\n cardColor={cardColor || defaultCardColor}\n hasLink={!!link?.href}\n >\n {image?.small && (\n <StyledImage\n {...image}\n coverSpace\n isInverted={isInverted}\n ratios={{\n small: { w: 352, h: 108 },\n medium: { w: 286, h: 244 },\n }}\n />\n )}\n <Content hasIcon={!!customIcon}>\n {customIcon ? <Icon>{customIcon({})}</Icon> : ''}\n <TextContainer>\n {title && (\n <Title size=\"big\" type=\"copy\" isInverted>\n {title}\n </Title>\n )}\n {subLabel && (\n <Footer>\n <SubLabel type=\"copy-b\" size=\"big\" isInverted>\n {subLabel}\n </SubLabel>\n {decorator ? decorator({ isInverted }) : undefined}\n </Footer>\n )}\n </TextContainer>\n </Content>\n {link?.href && (\n <CardLink\n isInverted={isInverted}\n {...link}\n ariaLabel={title || undefined}\n />\n )}\n </CardView>\n );\n};\n\nconst List = styled.ul`\n padding: 0;\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n }\n`;\n\nconst CardItem = styled.li<{ isEqual?: boolean; threeCols?: boolean }>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n\n width: 100%;\n\n @media ${mq.medium} {\n flex: 0 0 50%;\n max-width: 370px;\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n flex: 0 0 33.33%;\n }\n\n @media (min-width: 75em) {\n flex: ${({ isEqual, threeCols }) =>\n threeCols ? '0 0 33.33%' : isEqual && '0 0 25%'};\n }\n`;\n\nconst CardList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with card item settings */\n items?: Omit<CardProps, 'decorator' | 'isInverted'>[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom decoration icon */\n decorator?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Force maximal three items per row */\n maxThreeCols?: boolean;\n}> = ({ anchorId, items, bgMode, decorator, maxThreeCols }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <CardItem\n key={i}\n isEqual={items.length % 2 === 0}\n threeCols={maxThreeCols}\n >\n <Card\n {...item}\n isInverted={isInverted}\n decorator={decorator}\n />\n </CardItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const CardListComponent = CardList;\nexport default withLibTheme(CardList);\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { getColors as color, spacings } from 'utils/styles';\nimport ArrowLeftRight from 'components/base/icons/ArrowLeftRight';\nimport Copy from 'components/typography/Copy';\nimport useIE from 'utils/useIE';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst clamp = (num: number, min: number, max: number) => {\n return Math.min(Math.max(num, min), max);\n};\n\nconst Images = styled.div`\n position: relative;\n cursor: col-resize;\n & > * {\n pointer-events: none;\n user-select: none;\n }\n`;\n\nconst BackgroundImg = styled(Image)`\n position: relative;\n display: block;\n width: 100%;\n`;\n\nconst ForegroundContainer = styled.div<{\n hasTransition?: boolean;\n initalValue?: number;\n hasAnim?: boolean;\n}>`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 50%;\n overflow: hidden;\n transition: width ${({ hasTransition }) => (hasTransition ? 0.1 : 0)}s\n ease-in-out;\n ${({ hasAnim, initalValue }) =>\n hasAnim &&\n css`\n animation-name: ForegroundAnim;\n animation-duration: 5s;\n animation-iteration-count: 1;\n animation-play-state: ${hasAnim && 'running'};\n animation-timing-function: ease-in-out;\n @keyframes ForegroundAnim {\n 0% {\n width: ${initalValue\n ? clamp(initalValue * 100, 0, 100) + '%'\n : '50%'};\n }\n 33% {\n width: ${initalValue\n ? clamp(initalValue * 100 + 10, 0, 100) + '%'\n : '60%'};\n }\n 66% {\n width: ${initalValue\n ? clamp(initalValue * 100 - 10, 0, 100) + '%'\n : '40%'};\n }\n 100% {\n width: ${initalValue ? initalValue * 100 + '%' : '50%'};\n }\n }\n `}\n`;\n\nconst ForegroundImg = styled(Image)`\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n max-width: none;\n object-fit: cover;\n\n img {\n height: auto;\n width: auto;\n }\n`;\n\nconst ForegroundOverlay = styled.div<{ color: string }>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: ${({ color }) => color};\n`;\n\nconst ImageLabel = styled(Copy)<{ bgColor?: string }>`\n height: ${spacings.spacer}px;\n padding: ${spacings.nudge}px ${spacings.spacer}px ${spacings.spacer}px\n ${spacings.spacer}px;\n background: ${({ bgColor }) => bgColor && bgColor};\n`;\n\nconst ForegroundLabel = styled(ImageLabel)`\n position: absolute;\n bottom: ${spacings.spacer}px;\n left: ${spacings.spacer}px;\n pointer-events: none;\n white-space: nowrap;\n`;\n\nconst BackgroundLabel = styled(ImageLabel)`\n position: absolute;\n bottom: ${spacings.spacer}px;\n right: ${spacings.spacer}px;\n pointer-events: none;\n white-space: nowrap;\n`;\n\nconst ControlContainer = styled.div<{\n hasTransition?: boolean;\n hasAnim?: boolean;\n initalValue?: number;\n}>`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n transition: left ${({ hasTransition }) => (hasTransition ? 0.1 : 0)}s\n ease-in-out;\n ${({ hasAnim, initalValue }) =>\n hasAnim &&\n css`\n animation-name: ControlAnim;\n animation-duration: 5s;\n animation-iteration-count: 1;\n animation-play-state: ${hasAnim && 'running'};\n animation-timing-function: ease-in-out;\n @keyframes ControlAnim {\n 0% {\n left: ${initalValue\n ? clamp(initalValue * 100, 0, 100) + '%'\n : '50%'};\n }\n 33% {\n left: ${initalValue\n ? clamp(initalValue * 100 + 10, 0, 100) + '%'\n : '60%'};\n }\n 66% {\n left: ${initalValue\n ? clamp(initalValue * 100 - 10, 0, 100) + '%'\n : '40%'};\n }\n 100% {\n left: ${initalValue ? initalValue * 100 + '%' : '50%'};\n }\n }\n `}\n`;\n\nconst Control = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 54px;\n width: 54px;\n border: solid 2px ${({ theme }) => color(theme).elementBg.light};\n border-radius: 50%;\n background-color: ${({ theme }) => color(theme).elementBg.medium};\n`;\n\nconst ComparisonSlider: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n bgMode?: 'full' | 'inverted' | 'splitted';\n initialValue?: number;\n foregroundImg?: ImageProps;\n backgroundImg?: ImageProps;\n foregroundLabel?: string;\n backgroundLabel?: string;\n overlayColor?: string;\n labelColor?: string;\n dragControl?: React.ReactNode;\n enableControlAnim?: boolean;\n}> = ({\n anchorId,\n bgMode,\n initialValue,\n foregroundImg,\n backgroundImg,\n foregroundLabel,\n backgroundLabel,\n overlayColor = 'rgba(0, 0 , 0, 0.2)',\n labelColor = 'rgba(0, 0 , 0, 0.3)',\n dragControl,\n enableControlAnim,\n}) => {\n const isIE = useIE(true);\n const [slideValue, setSlideValue] = useState<number>(\n initialValue ? Math.min(Math.max(initialValue, 0), 1) : 0.5\n );\n const [isHolding, setIsHolding] = useState<boolean>(false);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n const [interacted, setInteracted] = useState<boolean>(true);\n const [sideOffset, setSideOffset] = useState<number>(0);\n const controlRef = useRef<HTMLDivElement | null>(null);\n const { colors } = useLibTheme();\n\n useEffect(() => {\n if (controlRef.current) {\n setSideOffset(controlRef.current.offsetWidth / 2);\n }\n }, []);\n\n useEffect(() => {\n const handleInitalLoad = () => {\n const options = {\n rootMargin: '0px',\n threshold: 1.0,\n };\n\n const observer = new IntersectionObserver((entries, observer) => {\n if (enableControlAnim && entries[0]?.isIntersecting) {\n // if control is first fully visible\n observer.unobserve(entries[0]?.target);\n setInteracted(false);\n }\n }, options);\n if (controlRef.current) observer.observe(controlRef.current);\n window.removeEventListener('load', handleInitalLoad);\n };\n\n // wait unitl user has scrolled once\n if (!isIE) {\n if (document.readyState === 'complete') handleInitalLoad();\n else window.addEventListener('load', handleInitalLoad);\n }\n\n return () => {\n window.removeEventListener('load', handleInitalLoad);\n };\n }, [enableControlAnim, isIE]);\n\n const setCurrentPos = (target: EventTarget & Element, clientX: number) => {\n if (target && clientX) {\n const relativeClientX = clientX - target.getBoundingClientRect().x;\n\n // check side offset\n if (\n relativeClientX >= sideOffset &&\n relativeClientX <=\n target.getBoundingClientRect().width - sideOffset\n ) {\n let percentage =\n relativeClientX / target.getBoundingClientRect().width;\n percentage = Math.min(Math.max(percentage, 0), 1);\n\n setSlideValue(percentage);\n }\n }\n };\n\n const handleClick = (ev: React.MouseEvent) => {\n const target = ev.currentTarget;\n if (target && ev.clientX) {\n setCurrentPos(target, ev.clientX);\n setInteracted(true);\n }\n };\n\n const handleMouseMove = (ev: React.MouseEvent) => {\n const target = ev.currentTarget;\n if (target && ev.clientX && isHolding) {\n setIsDragging(true);\n setInteracted(true);\n if (isDragging) setCurrentPos(target, ev.clientX);\n }\n };\n\n const handleTouchMove = (ev: React.TouchEvent<HTMLDivElement>) => {\n const target = ev.currentTarget;\n if (target && ev.touches[0]?.clientX) {\n setInteracted(true);\n setCurrentPos(target, ev.touches[0]?.clientX);\n }\n };\n\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper>\n {backgroundImg && foregroundImg && (\n <Images\n onClick={handleClick}\n onMouseMove={handleMouseMove}\n onMouseDown={() => {\n setIsDragging(false);\n setIsHolding(true);\n }}\n onMouseUp={() => {\n setIsDragging(false);\n setIsHolding(false);\n }}\n onMouseLeave={() => {\n setIsHolding(false);\n setIsDragging(false);\n }}\n onTouchMove={handleTouchMove}\n onTouchStart={() => setIsHolding(true)}\n onTouchEnd={() => setIsHolding(false)}\n >\n <BackgroundImg {...backgroundImg} />\n {backgroundLabel && (\n <BackgroundLabel\n textColor={colors.text.inverted}\n bgColor={labelColor}\n >\n {backgroundLabel}\n </BackgroundLabel>\n )}\n <ForegroundContainer\n hasTransition={!isHolding}\n hasAnim={!interacted}\n initalValue={initialValue}\n style={{ width: slideValue * 100 + '%' }}\n >\n <ForegroundImg {...foregroundImg} />\n {foregroundLabel && (\n <ForegroundLabel\n textColor={colors.text.inverted}\n bgColor={labelColor}\n >\n {foregroundLabel}\n </ForegroundLabel>\n )}\n <ForegroundOverlay color={overlayColor} />\n </ForegroundContainer>\n <ControlContainer\n ref={controlRef}\n hasTransition={!isHolding}\n hasAnim={!interacted}\n initalValue={initialValue}\n style={{ left: slideValue * 100 + '%' }}\n >\n {dragControl ? (\n dragControl\n ) : (\n <Control>\n <ArrowLeftRight\n iconColor={colors.elementBg.light}\n />\n </Control>\n )}\n </ControlContainer>\n </Images>\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const ComparisonSliderComponent = ComparisonSlider;\nexport default withLibTheme(ComparisonSlider);\n","import React, { forwardRef } from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport styled, { css } from 'styled-components';\n\nimport {\n spacings,\n getGlobals as global,\n mq,\n withRange,\n getColors as color,\n} from 'utils/styles';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport Title from 'components/blocks/Title';\nimport External from 'components/base/icons/External';\nimport { HeadlineTag } from 'components/typography/Heading';\n\nconst View = styled(Link)<{\n clickable?: boolean;\n}>`\n display: block;\n position: relative;\n width: 100%;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n outline: none;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme }) => global(theme).sections.imageTextGradient};\n pointer-events: none;\n }\n\n ${({ clickable, theme, isInverted }) =>\n clickable &&\n css`\n transition: box-shadow 0.2s ease-in-out;\n cursor: pointer;\n\n &:hover {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n }\n\n &:focus {\n box-shadow: 0 2px 24px 0 rgba(0, 0, 0, 0.35);\n outline: solid 2px\n ${isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 4px;\n\n color: ${isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n `}\n`;\n\nconst StyledImage = styled(Image)`\n width: 100%;\n height: 100%;\n min-height: 300px;\n\n img {\n height: 100%;\n }\n`;\n\nconst IntroContainer = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: auto;\n z-index: 1;\n\n padding: ${spacings.spacer}px ${spacings.nudge * 3}px;\n\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n\n /* required to align items at flex-end in ie11 */\n &:before {\n content: '';\n display: block;\n flex: 1 0 0px;\n }\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 5}px ${spacings.spacer}px;\n }\n`;\n\nconst StyledTitle = styled(Title)<{ clampTitle?: boolean }>`\n max-width: ${({ clampTitle }) =>\n clampTitle && (13 / 28) * spacings.wrapper + 'px'};\n`;\n\nconst ExternalIconHolder = styled.span`\n margin-left: ${spacings.nudge * 2}px;\n\n & > * {\n display: inline-block;\n }\n`;\n\nconst Icon = styled.div`\n ${withRange([60, 100], 'height')};\n ${withRange([60, 100], 'width')};\n\n position: absolute;\n top: ${spacings.nudge * 3}px;\n left: ${spacings.nudge * 3}px;\n\n & > * {\n ${withRange([60, 100], 'height')};\n ${withRange([60, 100], 'width')};\n }\n\n color: ${({ theme }) => color(theme).text.inverted};\n`;\n\nexport interface PromotionCardProps {\n /** Setup Card for dark backgrounds */\n isInverted?: boolean;\n /** Card image settings */\n image: ImageProps;\n /** Card title */\n title?: string;\n /** Card title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n /** Superior card title that stands above main title */\n superTitle?: string;\n /** Superior card title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n /** Href path */\n href?: string;\n /** Advanced href options */\n link?: LinkProps;\n /** Inject custom icon that indicates an external link */\n externalLinkIcon?: React.ReactNode;\n\n /** Function to inject icon in top left corner */\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}\n\nconst PromotionCard = forwardRef<\n HTMLAnchorElement,\n PromotionCardProps & { className?: string }\n>(\n (\n {\n isInverted,\n image,\n title,\n titleAs,\n superTitle,\n superTitleAs,\n href,\n link,\n externalLinkIcon,\n icon,\n className,\n },\n ref\n ) => {\n // fallback for older versions\n let linkObj = link;\n if (href && !link) {\n linkObj = {\n href: href,\n isExternal: false,\n };\n }\n\n const externalIconString = ReactDOMServer.renderToString(\n <ExternalIconHolder>\n {externalLinkIcon || <External />}\n </ExternalIconHolder>\n );\n\n return (\n <View\n ref={ref}\n clickable={!!href || !!link}\n {...linkObj}\n className={className}\n >\n <StyledImage {...image} isInverted={isInverted} coverSpace />\n {icon && <Icon>{icon({ isInverted })}</Icon>}\n {title && (\n <IntroContainer>\n <StyledTitle\n colorMode=\"onImage\"\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n title={\n linkObj?.isExternal\n ? title + externalIconString\n : title\n }\n titleAs={titleAs || 'div'}\n clampTitle\n />\n </IntroContainer>\n )}\n </View>\n );\n }\n);\n\nPromotionCard.displayName = 'PromotionCard';\n\nexport default PromotionCard;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport Grid, { gridSettings } from 'components/base/Grid';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\n\nimport PromotionCard, {\n PromotionCardProps,\n} from 'components/blocks/PromotionCard';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst Card = styled(PromotionCard)<{ isMain?: boolean }>`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n\n height: ${({ isMain }) => isMain && '100%'};\n\n flex: 1 0 auto;\n\n & + & {\n margin-top: ${gridSettings.gutter}px;\n }\n`;\n\nconst CrossPromotion: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Promotion card settings in main grid column (default: on right side). The size prop controls the width. */\n main?: Array<\n Omit<PromotionCardProps, 'externalLinkIcon' | 'isInverted'> & {\n size?: 'full' | 'half';\n }\n >;\n\n /** Promotion card settings in second grid column (default: on left side). The size prop controls the width. */\n aside?: Array<\n Omit<PromotionCardProps, 'externalLinkIcon' | 'isInverted'> & {\n size?: 'full' | 'half';\n }\n >;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Switching order of main and aside columns */\n isMirrored?: boolean;\n\n /** Inject custom icon that indicates an external link */\n externalLinkIcon?: React.ReactNode;\n}> = ({ anchorId, main, aside, bgMode, isMirrored, externalLinkIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, false, isMirrored)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {aside ? (\n isMirrored ? (\n <Grid.Row>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {main &&\n main.map((card, i) => (\n <Card\n key={i}\n isMain\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {aside.map((card, i) => (\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n </Grid.Row>\n ) : (\n <Grid.Row>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {aside.map((card, i) => (\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n <Grid.Col semilarge={{ span: 6 / 12 }}>\n {main &&\n main.map((card, i) => (\n <Card\n key={i}\n isMain\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n ))}\n </Grid.Col>\n </Grid.Row>\n )\n ) : (\n main && (\n <Grid.Row>\n {main.map((card, i) => (\n <Grid.Col\n semilarge={{\n span:\n (card.size === 'half' ? 6 : 12) /\n 12,\n }}\n key={i}\n >\n <Card\n key={i}\n {...card}\n externalLinkIcon={externalLinkIcon}\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n )\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const CrossPromotionComponent = CrossPromotion;\nexport default withLibTheme(CrossPromotion);\n","import React, { forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { spacings, getGlobals as global } from 'utils/styles';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\n\nconst View = styled.div``;\n\nconst ImageContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n margin-bottom: ${spacings.nudge * 3}px;\n max-width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst Content = styled.div<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst Title = styled(Copy)``;\n\nconst SubTitle = styled(Copy)``;\n\nconst Text = styled(Copy)`\n ${SubTitle} + & {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nexport interface FactProps {\n isInverted?: boolean;\n isCentered?: boolean;\n title?: string;\n subTitle?: string;\n text?: string;\n image?: ImageProps;\n}\n\nconst Fact = forwardRef<\n HTMLDivElement,\n FactProps & {\n className?: string;\n }\n>(\n (\n {\n isInverted = false,\n isCentered = false,\n title,\n subTitle,\n text,\n image,\n className,\n },\n ref\n ) => {\n return (\n <View ref={ref} className={className}>\n {image?.small && (\n <ImageContainer isCentered={isCentered}>\n <StyledImage\n isInverted={isInverted}\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n coverSpace={image.coverSpace}\n ratios={image.ratios}\n showPlaceholder={image.showPlaceholder}\n />\n </ImageContainer>\n )}\n <Content isCentered={isCentered}>\n {title && (\n <Title\n type=\"copy-b\"\n size=\"big\"\n isInverted={isInverted}\n data-sheet=\"title\"\n >\n {title}\n </Title>\n )}\n {subTitle && (\n <SubTitle\n type=\"copy-b\"\n isInverted={isInverted}\n data-sheet=\"subtitle\"\n >\n {subTitle}\n </SubTitle>\n )}\n {text && (\n <Text\n type=\"copy\"\n isInverted={isInverted}\n data-sheet=\"text\"\n innerHTML={text}\n />\n )}\n </Content>\n </View>\n );\n }\n);\n\nFact.displayName = 'Fact';\n\nexport default Fact;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { mq } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Fact, { FactProps } from 'components/blocks/Fact';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Grid from 'components/base/Grid';\n\nconst FactFill = styled.div`\n display: none;\n\n @media ${mq.large} {\n display: block;\n }\n`;\n\nconst FactGrid: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Controls amount columns on large screens */\n columns?: 3 | 4 | 6;\n\n /** Array with fact card data */\n facts?: Array<Omit<FactProps, 'isInverted' | 'isCentered'>>;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Center text inside fact card items */\n isCentered?: boolean;\n}> = ({ anchorId, columns = 3, facts, bgMode, isCentered }) => {\n const { colors } = useLibTheme();\n const factCount = facts?.length || 0;\n\n const isInverted = bgMode === 'inverted';\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: factCount,\n identifiers: ['[data-sheet=\"title\"]', '[data-sheet=\"subtitle\"]'],\n responsive: {\n small: 1,\n medium: columns < 3 ? columns : 3,\n semilarge: columns < 4 ? columns : 4,\n large: columns,\n xlarge: columns,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Grid.Row>\n {facts &&\n facts.map((fact, i) => {\n if (\n fact?.title ||\n fact?.subTitle ||\n fact?.image ||\n fact?.text\n ) {\n return (\n <Grid.Col\n key={i}\n medium={{ span: 4 / 12 }}\n semilarge={\n columns > 3\n ? { span: 3 / 12 }\n : { span: 4 / 12 }\n }\n large={{ span: 12 / columns / 12 }}\n >\n <Fact\n key={i}\n ref={cardRefs[i]}\n {...fact}\n isCentered={isCentered}\n isInverted={isInverted}\n />\n </Grid.Col>\n );\n } else {\n return (\n <Grid.Col\n key={i}\n medium={{ span: 4 / 12 }}\n semilarge={\n columns > 3\n ? { span: 3 / 12 }\n : { span: 4 / 12 }\n }\n large={{ span: 12 / columns / 12 }}\n >\n <FactFill ref={cardRefs[i]} key={i} />\n </Grid.Col>\n );\n }\n })}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const FactGridComponent = FactGrid;\nexport default withLibTheme(FactGrid);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport styled from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { spacings, getColors as color, mq } from 'utils/styles';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\n\nconst FactsContainer = styled.ul`\n padding: 0;\n margin: 0;\n\n list-style-type: none;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst FactItem = styled.li<{ hasText?: boolean; hasBack?: boolean }>`\n padding: ${spacings.nudge * 2}px;\n\n background: ${({ theme, hasBack }) =>\n hasBack ? color(theme).elementBg.light : color(theme).elementBg.medium};\n\n display: flex;\n flex-direction: row;\n align-items: ${({ hasText }) => (hasText ? 'flex-start' : 'center')};\n\n @media ${mq.medium} {\n padding: ${spacings.nudge * 3}px;\n }\n`;\n\nconst Icon = styled.img`\n margin-right: ${spacings.nudge * 3}px;\n display: block;\n max-width: ${spacings.nudge * 5}px;\n\n @media ${mq.medium} {\n margin-right: ${spacings.spacer}px;\n }\n`;\n\nconst ContentBlock = styled.div`\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Description = styled(Copy)`\n max-width: 880px;\n`;\n\nconst FactList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with fact item data */\n facts?: Array<{\n label?: string;\n text?: string;\n }>;\n\n /** Icon for each fact item */\n icon?: { src: string; alt?: string };\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, facts, icon, bgMode }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBack = isInverted || bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {facts && (\n <FactsContainer>\n {facts.map(({ label, text }, i) => {\n return (\n <FactItem\n key={i}\n hasText={!!text}\n hasBack={hasBack}\n >\n {icon && (\n <Icon\n src={icon.src}\n alt={icon.alt || ''}\n />\n )}\n <ContentBlock>\n {label && (\n <Copy type=\"copy-b\">{label}</Copy>\n )}\n {text && (\n <Description\n type=\"copy\"\n innerHTML={text}\n />\n )}\n </ContentBlock>\n </FactItem>\n );\n })}\n </FactsContainer>\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const FactListComponent = FactList;\nexport default withLibTheme(FactList);\n","import React, { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n mq,\n spacings,\n getGlobals as global,\n getFonts as font,\n} from 'utils/styles';\n\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Link, { LinkProps } from 'components/typography/Link';\n\nconst View = styled.div<{ isCentered?: boolean }>`\n min-width: 270px;\n padding-bottom: ${spacings.nudge}px;\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst TitleLink = styled(Link)<{ href?: string }>`\n display: inline-block;\n ${copyStyle('copy-b', 'big')}\n\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n text-decoration: none;\n\n ${({ href, isInverted, theme }) =>\n !href &&\n css`\n &:hover {\n color: ${isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n }\n `}\n`;\n\nconst ImageContainer = styled(Link)<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst ArticleContent = styled.div<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => isCentered && 'center'};\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n @media ${mq.medium} {\n & > * {\n max-width: 95%;\n margin-right: ${({ isCentered }) => isCentered && 'auto'};\n margin-left: ${({ isCentered }) => isCentered && 'auto'};\n }\n }\n`;\n\nconst Action = styled.div`\n max-width: 100%;\n`;\n\nexport interface FeatureActionProps {\n isInverted?: boolean;\n isTextCentered?: boolean;\n}\n\nexport interface FeatureProps {\n /** Invert color and background for darker themes */\n isInverted?: boolean;\n\n /** Center all texts */\n isCentered?: boolean;\n\n /** Image on item's top */\n image?: ImageProps;\n\n /** Item title text underneath the image */\n title?: string;\n\n /** Small item description text (richtext) */\n description?: string;\n\n /** Item intro text (partial richtext cause it's always bold) */\n intro?: string;\n\n /** Item's main text (richtext) */\n text?: string;\n\n /** Item link settings */\n link?: LinkProps;\n\n /** Function to inject custom primary button */\n action?: (props: FeatureActionProps) => React.ReactNode;\n}\n\nconst Feature = forwardRef<\n HTMLDivElement,\n FeatureProps & {\n className?: string;\n }\n>(\n (\n {\n title,\n description,\n intro,\n text,\n link,\n image,\n isInverted = false,\n isCentered = false,\n action,\n className,\n },\n ref\n ) => {\n return (\n <View ref={ref} isCentered={isCentered} className={className}>\n {image?.small && (\n <ImageContainer {...link} isCentered={isCentered}>\n <StyledImage\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n ratios={image.ratios}\n coverSpace={\n image.coverSpace === undefined\n ? true\n : image.coverSpace\n }\n isInverted={isInverted}\n />\n </ImageContainer>\n )}\n <TitleLink\n {...link}\n isInverted={isInverted}\n ariaLabel={title}\n dataSheet=\"title\"\n >\n {title}\n </TitleLink>\n <Copy\n size=\"small\"\n isInverted={isInverted}\n data-sheet=\"desc\"\n innerHTML={description}\n />\n <ArticleContent isCentered={isCentered}>\n <Copy\n type=\"copy-b\"\n isInverted={isInverted}\n innerHTML={intro}\n data-sheet=\"intro\"\n />\n <Copy\n type=\"copy\"\n size=\"medium\"\n isInverted={isInverted}\n innerHTML={text}\n data-sheet=\"text\"\n />\n </ArticleContent>\n {action && (\n <Action>\n {action({ isInverted, isTextCentered: isCentered })}\n </Action>\n )}\n </View>\n );\n }\n);\n\nFeature.displayName = 'Feature';\n\nexport default Feature;\n","import React, { useMemo } from 'react';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Feature, { FeatureProps } from 'components/blocks/Feature';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Grid from 'components/base/Grid';\n\nconst FeatureList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Center texts in every feature item */\n isCentered?: boolean;\n\n /** Array with feature item content */\n features?: Omit<FeatureProps, 'isInverted' | 'isCentered'>[];\n\n /** If not defined the component falls back to legacy logic: Uneven items = max 3 per row, even items = max 2 per row */\n columns?: 2 | 3;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n}> = ({ anchorId, features, bgMode, isCentered = false, columns }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const featureCount = features?.length || 0;\n\n const isHalf = useMemo(() => {\n if (columns) {\n return columns === 2;\n }\n\n // legacy logic\n return features && features.length % 2 === 0;\n }, [features, columns]);\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: featureCount,\n identifiers: [\n '[data-sheet=\"title\"]',\n '[data-sheet=\"desc\"]',\n '[data-sheet=\"intro\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: isHalf ? 2 : 3,\n xlarge: isHalf ? 2 : 3,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row\n halign={isHalf || featureCount <= 2 ? 'center' : 'left'}\n >\n {features?.map((feature, i) => (\n <Grid.Col\n semilarge={{ span: 6 / 12 }}\n large={{\n span: isHalf ? 5 / 12 : 4 / 12,\n }}\n key={i}\n >\n <Feature\n ref={cardRefs[i]}\n {...feature}\n isCentered={isCentered}\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const FeatureListComponent = FeatureList;\nexport default withLibTheme(FeatureList);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { getGlobals as global } from 'utils/styles';\nimport Grid from 'components/base/Grid';\n\nconst StyledImage = styled(Image)`\n width: 100%;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n picture > img {\n width: 100%;\n height: 100%;\n }\n`;\n\ntype ImageType = Omit<ImageProps, 'coverSpace'> & { isFull?: boolean };\n\nconst Gallery: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of image settings */\n images?: Array<ImageType>;\n\n /** Section background */\n bgMode?: 'full' | 'splitted' | 'inverted';\n}> = ({ anchorId, bgMode, images }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace>\n <Grid.Row>\n {images?.map((img, i) => (\n <Grid.Col\n key={i}\n semilarge={{\n span: img.isFull ? 12 / 12 : 6 / 12,\n }}\n >\n <StyledImage\n {...img}\n coverSpace\n isInverted={isInverted}\n />\n </Grid.Col>\n ))}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const GalleryComponent = Gallery;\nexport default withLibTheme(Gallery);\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { mq, spacings, getColors as color } from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport Pointer from 'components/buttons/Pointer';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport Image from 'components/blocks/Image';\n\nconst StyledSection = styled(Section)<{ isCentered?: boolean }>`\n margin: 0 auto;\n\n @media ${mq.semilarge} {\n margin: ${({ isCentered }) => (isCentered ? '0 auto' : '0')};\n\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n }\n`;\n\nconst ItemContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n text-align: center;\n\n &:not(:last-child) {\n margin-bottom: ${spacings.spacer}px;\n }\n\n @media ${mq.semilarge} {\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n }\n`;\n\nconst Items = styled.ul<{ isVisible?: boolean; isCentered?: boolean }>`\n display: ${({ isVisible }) => (isVisible ? 'flex' : 'block')};\n align-items: center;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n\n flex-wrap: wrap;\n padding: 0;\n margin: 0;\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n\n list-style: none;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n\n & > * {\n flex: 0 1 auto;\n }\n }\n`;\n\nconst Item = styled.li<{\n isVisible?: boolean;\n index: number;\n}>`\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n\n display: ${({ index, isVisible }) =>\n isVisible || index < 6 ? 'block' : 'none'};\n\n & > img {\n width: 100%;\n }\n\n @media ${mq.medium} {\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n\n & > img {\n width: auto;\n }\n }\n\n @media ${mq.semilarge} {\n display: ${({ index, isVisible }) =>\n isVisible || index < 8 ? 'block' : 'none'};\n }\n\n @media ${mq.large} {\n display: ${({ index, isVisible }) =>\n isVisible || index < 10 ? 'block' : 'none'};\n }\n`;\n\nconst ItemLink = styled(Link)<{ isInverted?: boolean }>`\n display: block;\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n`;\n\nconst ShowMore = styled.div<{ itemCount?: number; isCentered?: boolean }>`\n display: ${({ itemCount }) =>\n itemCount && itemCount > 6 ? 'block' : 'none'};\n\n background: none;\n border: none;\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n @media ${mq.semilarge} {\n display: ${({ itemCount }) =>\n itemCount && itemCount > 8 ? 'block' : 'none'};\n }\n\n @media ${mq.large} {\n display: ${({ itemCount }) =>\n itemCount && itemCount > 10 ? 'block' : 'none'};\n }\n`;\n\nconst StyledActions = styled(Actions)<{ isCentered?: boolean }>`\n margin-top: ${spacings.spacer}px;\n\n @media ${mq.medium} {\n display: block;\n text-align: ${({ isCentered }) => isCentered && 'center'};\n }\n`;\n\nexport interface IconListItem {\n src: string;\n alt?: string;\n link?: LinkProps;\n ratio?: { h: number; w: number };\n showPlaceholder?: boolean;\n}\n\nconst IconList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with icon items data */\n items?: Array<IconListItem>;\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom toggle button */\n toggle?: (props: {\n isInverted?: boolean;\n isToggled?: boolean;\n showLessText?: string;\n showMoreText?: string;\n clickHandler?: (ev?: React.SyntheticEvent<HTMLButtonElement>) => void;\n additionalProps?: Record<string, any>;\n }) => React.ReactNode;\n\n /** Custom text for toggle button in folded state */\n showMoreText?: string;\n\n /** Custom text for toggle button in expanded state */\n showLessText?: string;\n\n /** Center all icons and texts */\n isCentered?: boolean;\n\n /** Enable toggle feature */\n enableToggle?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({\n anchorId,\n items,\n isCentered = false,\n primaryAction,\n secondaryAction,\n toggle,\n showLessText = 'show less',\n showMoreText = 'show more',\n enableToggle,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const [showMore, setShowMore] = useState<boolean>(!enableToggle);\n\n const handleToggleClick = () => {\n setShowMore((prev) => !prev);\n };\n\n return (\n <StyledSection\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n isCentered={isCentered}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <ItemContainer isCentered={isCentered}>\n <Items\n isVisible={!showMore ? true : showMore === true}\n isCentered={isCentered}\n >\n {items?.map(\n ({ src, link, alt, ratio, showPlaceholder }, i) => (\n <Item isVisible={showMore} index={i} key={i}>\n <ItemLink\n {...link}\n isInverted={isInverted}\n ariaLabel={alt}\n >\n <Image\n data-img-loaded={false}\n isInverted={isInverted}\n small={src}\n alt={alt}\n ratios={\n ratio\n ? { small: ratio }\n : undefined\n }\n showPlaceholder={showPlaceholder}\n />\n </ItemLink>\n </Item>\n )\n )}\n </Items>\n </ItemContainer>\n {enableToggle && (\n <ShowMore\n isCentered={isCentered}\n itemCount={items?.length || 0}\n >\n {toggle ? (\n toggle({\n isInverted,\n showLessText,\n showMoreText,\n isToggled: showMore,\n clickHandler: handleToggleClick,\n additionalProps: { 'aria-pressed': showMore },\n })\n ) : (\n <Pointer.View\n as=\"button\"\n isInverted={isInverted}\n aria-pressed={showMore}\n onClick={() => handleToggleClick()}\n >\n <Pointer.Label>\n {showMore ? showLessText : showMoreText}\n </Pointer.Label>\n </Pointer.View>\n )}\n </ShowMore>\n )}\n\n {(primaryAction || secondaryAction) && (\n <StyledActions\n isCentered={isCentered}\n primary={primaryAction && primaryAction(isInverted)}\n secondary={\n secondaryAction && secondaryAction(isInverted)\n }\n />\n )}\n </Wrapper>\n </StyledSection>\n );\n};\n\nexport const IconListComponent = IconList;\nexport default withLibTheme(IconList);\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { copyStyle } from 'components/typography/Copy';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { getColors as color, spacings } from 'utils/styles';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport ArrowDown from 'components/base/icons/ArrowDown';\nimport { useScrollTo } from 'utils/useScrollTo';\nimport { getFullNavbarHeights, getNavbarState } from './navigation/Navigation';\nimport { useMediaQueries } from 'utils/useMediaQuery';\n\nconst List = styled.ul<{ hasBg?: boolean; isInverted?: boolean }>`\n margin: 0;\n padding: 0;\n list-style: none;\n\n max-width: 880px;\n\n & > li + li {\n border-top: 1px solid\n ${({ theme, hasBg, isInverted }) =>\n hasBg && !isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n\n & > li:first-child {\n border-top: 1px solid\n ${({ theme, hasBg, isInverted }) =>\n hasBg && !isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n\n & > li:last-child {\n border-bottom: 1px solid\n ${({ theme, hasBg, isInverted }) =>\n hasBg && !isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n }\n`;\n\nconst ListItem = styled.li``;\n\nconst IndexLink = styled(Link)<{ isInverted?: boolean }>`\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n padding: ${spacings.nudge}px 0;\n\n ${copyStyle('copy', 'big')}\n`;\n\nconst LinkLabel = styled.span`\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nconst IconWrapper = styled.span`\n display: inline-block;\n\n margin-left: ${spacings.nudge * 2}px;\n`;\n\nexport interface IndexItem {\n label?: string;\n link?: LinkProps;\n}\n\nconst IndexList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of index item settings */\n items?: IndexItem[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n\n /** Function to inject custom icon decorator */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Top offset for scroll to clicked item. Default: auto */\n scrollToOffset?: number;\n}> = ({ anchorId, items, bgMode, customIcon, scrollToOffset }) => {\n const { colors, theme } = useLibTheme();\n const setTargetPos = useScrollTo(500);\n const { semilarge } = useMediaQueries();\n\n const [topOffset, setTopOffset] = useState<number>(0);\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const handleLinkClick = (ev: React.SyntheticEvent<HTMLAnchorElement>) => {\n if (!ev?.currentTarget) return;\n\n ev.preventDefault();\n const href = ev.currentTarget.getAttribute('href') as string;\n\n if (!href) return;\n\n const target = document.getElementById(href.split('#')?.[1] || href);\n if (target) {\n setTargetPos(\n target.getBoundingClientRect().top +\n window.scrollY -\n (scrollToOffset || topOffset)\n );\n }\n\n if (window) {\n const url = new URL(window.location as any);\n url.hash = href.split('#')[1];\n window.history.pushState({}, '', url as any);\n }\n };\n\n useEffect(() => {\n if (scrollToOffset) return;\n\n // if header is defined get navbar height and generate top offset\n const header = document.querySelector('header[data-navbar-ident]');\n const navbarIdent = header?.getAttribute('data-navbar-ident');\n if (!navbarIdent) return;\n\n const { isStickable } = getNavbarState(navbarIdent);\n if (!isStickable) return;\n\n // calculate offset from navbar height\n const navbarHeights = getFullNavbarHeights(theme, navbarIdent);\n\n if (semilarge) setTopOffset(navbarHeights.small[1] + spacings.spacer);\n else setTopOffset(navbarHeights.small[0] + spacings.spacer);\n }, [theme, semilarge, scrollToOffset]);\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List hasBg={hasBg} isInverted={isInverted}>\n {items?.map((item, i) => (\n <ListItem key={i}>\n <IndexLink\n {...item.link}\n isInverted={isInverted}\n onClick={handleLinkClick}\n >\n <LinkLabel>{item.label}</LinkLabel>\n <IconWrapper>\n {customIcon ? (\n customIcon({ isInverted })\n ) : (\n <ArrowDown />\n )}\n </IconWrapper>\n </IndexLink>\n </ListItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const IndexListComponent = IndexList;\nexport default withLibTheme(IndexList);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport IntroBlock, { IntroActionProps } from 'components/blocks/IntroBlock';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { ImageProps } from 'components/blocks/Image';\nimport { TitleSize } from 'components/blocks/Title';\n\nconst Intro: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Main title style */\n titleSize?: TitleSize;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Intro text under headline (richtext) */\n abstract?: string;\n\n /** Main text (richtext) */\n text?: string;\n\n /** Images for different screen sizes. coverSpace defaults to true */\n image?: ImageProps;\n\n /** Function to inject custom primary button */\n primaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Center text and actions */\n isCentered?: boolean;\n\n /** Allow reduced section spacing to next section */\n isStackable?: boolean;\n\n /** Clamp title to a width of max 8 grid cols. */\n clampTitle?: boolean;\n\n /** Section background */\n bgMode?: 'inverted' | 'full' | 'splitted';\n className?: string;\n}> = ({\n anchorId,\n title,\n titleAs,\n titleSize = 'heading-2',\n superTitle,\n superTitleAs,\n abstract,\n text,\n primaryAction,\n secondaryAction,\n isCentered = false,\n isStackable = false,\n bgMode,\n image,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n // set default ratio settings\n if (image && !image?.ratios) {\n image.ratios = {\n small: { h: 1, w: 1 },\n };\n }\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n isStackable={isStackable}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <IntroBlock\n title={title}\n titleAs={titleAs}\n titleSize={titleSize}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n abstract={abstract}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n secondaryAction={secondaryAction}\n primaryAction={primaryAction}\n isCentered={isCentered}\n image={image}\n clampTitle\n clampAbstract\n clampText\n />\n </Wrapper>\n </Section>\n );\n};\n\nexport const IntroComponent = Intro;\nexport default withLibTheme(Intro);\n","import Copy from 'components/typography/Copy';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\n\nconst View = styled(Link)<{ isInverted?: boolean; hasIcon?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n -ms-grid-columns: ${({ hasIcon }) => (hasIcon ? 'min-content 1fr' : '1fr')};\n grid-template-columns: ${({ hasIcon }) =>\n hasIcon ? 'min-content 1fr' : '1fr'};\n -ms-grid-rows: min-content 1fr;\n grid-auto-rows: min-content 1fr;\n\n cursor: pointer;\n text-decoration: none;\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n transition: all ease-in-out 0.2s;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.invertedHover\n : color(theme).primary.hover};\n }\n }\n`;\n\nconst MainLabel = styled.div<{ hasIcon?: boolean }>`\n display: flex;\n align-items: center;\n margin-left: ${({ hasIcon }) => hasIcon && `${spacings.nudge * 3}px`};\n`;\n\nconst Text = styled(Copy)<{ hasIcon?: boolean }>`\n margin-top: ${({ hasIcon }) =>\n hasIcon ? spacings.nudge : spacings.nudge * 2}px;\n margin-left: ${({ hasIcon }) => hasIcon && `${spacings.nudge * 3}px`};\n`;\n\nconst Icon = styled.div`\n display: flex;\n align-items: center;\n\n & > * {\n height: 48px;\n width: 48px;\n }\n`;\n\nconst Title = styled(Copy)`\n display: inline-block;\n`;\n\nconst TitleIcon = styled.span`\n display: inline-block;\n margin-left: ${spacings.nudge * 2}px;\n\n @media ${mq.medium} {\n margin-left: ${spacings.nudge * 3}px;\n }\n`;\n\nexport interface NavBlockProps {\n /** Invert colors for use on dark backgrounds */\n isInverted?: boolean;\n\n /** Navigation title */\n title?: string;\n\n /** Navigation text (richtext) */\n text?: string;\n\n /** Link settings */\n link?: LinkProps;\n\n /** Function to inject custom icon node */\n customIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n /** Function to inject custom title icon decorator node */\n customTitleIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n\n className?: string;\n}\n\nconst NavBlock: React.FC<NavBlockProps> = ({\n isInverted = false,\n title,\n text,\n link,\n customIcon,\n customTitleIcon,\n className,\n}) => {\n return (\n <View\n {...link}\n isInverted={isInverted}\n hasIcon={!!customIcon}\n className={className}\n >\n {customIcon ? <Icon>{customIcon({})}</Icon> : ''}\n <MainLabel hasIcon={!!customIcon}>\n {title && (\n <Title textColor=\"inherit\" size=\"medium\" type=\"copy-b\">\n {title}\n {title && customTitleIcon && (\n <TitleIcon>\n {customTitleIcon({ isInverted })}\n </TitleIcon>\n )}\n </Title>\n )}\n </MainLabel>\n {text && (\n <>\n <span />\n <Text\n size=\"small\"\n isInverted={isInverted}\n innerHTML={text}\n hasIcon={!!customIcon}\n />\n </>\n )}\n </View>\n );\n};\n\nexport default NavBlock;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport NavBlock, { NavBlockProps } from 'components/blocks/NavBlock';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { mq, spacings } from 'utils/styles';\n\nconst List = styled.ul`\n margin: 0;\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n flex-wrap: wrap;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer * 2}px;\n }\n`;\n\nconst ListItem = styled.li`\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n flex: 1 0 100%;\n\n @media ${mq.medium} {\n flex: 0 0 50%;\n max-width: 50%;\n padding-top: ${spacings.spacer * 2}px;\n }\n\n @media ${mq.large} {\n flex: 0 0 33.33%;\n max-width: 33.33%;\n }\n\n // print version\n @media print {\n flex: 0 0 50%;\n max-width: 50%;\n padding-top: ${spacings.spacer * 2}px;\n }\n`;\n\nexport type NavItem = Omit<\n NavBlockProps,\n 'isInverted' | 'customTitleIcon' | 'className'\n>;\n\nconst NavList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of navigation item settings */\n items?: NavItem[];\n\n /** Section backgrounds */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom title decorator icon */\n customTitleIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n}> = ({ anchorId, items, bgMode, customTitleIcon }) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <List>\n {items?.map((item, i) => (\n <ListItem key={i}>\n <NavBlock\n {...item}\n isInverted={isInverted}\n customTitleIcon={customTitleIcon}\n />\n </ListItem>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const NavListComponent = NavList;\nexport default withLibTheme(NavList);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Callout from 'components/typography/Callout';\nimport React, { forwardRef, useContext } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\nimport {\n getColors as color,\n spacings,\n getGlobals as global,\n} from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Copy from 'components/typography/Copy';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport Image, { ImageProps } from 'components/blocks/Image';\n\nconst CARD_MIN_WIDTH = 240;\nconst CARD_MAX_WIDTH = 440;\nconst MEDIA_QUERIES = {\n medium: '(min-width: 36.5em)',\n semilarge: '(min-width: 54.75em)',\n large: '(min-width: 73em)',\n xlarge: '(min-width: 90em)',\n};\n\nconst View = styled.li<{ isCentered?: boolean }>`\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n & > * {\n margin: ${({ isCentered }) => (isCentered ? '0 auto' : 0)};\n margin-right: auto;\n }\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst ImageContainer = styled.div<{ isCentered?: boolean }>`\n display: flex;\n justify-content: ${({ isCentered }) =>\n isCentered ? 'center' : 'flex-start'};\n margin-bottom: ${spacings.nudge * 3}px;\n max-width: 100%;\n`;\n\nconst StyledImage = styled(Image)`\n overflow: hidden;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n`;\n\nconst Label = styled(Copy)``;\n\nconst Text = styled(Copy)``;\n\nexport interface NumberListCardProps {\n image?: ImageProps;\n digit?: string;\n label?: string;\n text?: string;\n}\n\nconst NumberListCard = forwardRef<\n HTMLLIElement,\n NumberListCardProps & {\n isInverted?: boolean;\n isCentered?: boolean;\n className?: string;\n }\n>(({ image, label, digit, isInverted, isCentered, text, className }, ref) => {\n const { colors } = useLibTheme();\n\n return (\n <View ref={ref} isCentered={isCentered} className={className}>\n {image?.small && (\n <ImageContainer isCentered={isCentered}>\n <StyledImage\n isInverted={isInverted}\n small={image.small}\n medium={image.medium}\n semilarge={image.semilarge}\n large={image.large}\n xlarge={image.xlarge}\n alt={image.alt}\n coverSpace={image.coverSpace}\n ratios={image.ratios}\n showPlaceholder={image.showPlaceholder}\n />\n </ImageContainer>\n )}\n <Callout\n data-sheet=\"digit\"\n size=\"mediumBold\"\n renderAs=\"div\"\n isInverted={isInverted}\n >\n {digit}\n </Callout>\n <Label\n type=\"copy-b\"\n size=\"big\"\n textColor={\n isInverted\n ? colors.primary.inverted\n : colors.primary.default\n }\n data-sheet=\"label\"\n >\n {label}\n </Label>\n {text && (\n <Text\n type=\"copy\"\n size=\"medium\"\n isInverted={isInverted}\n data-sheet=\"text\"\n innerHTML={text}\n />\n )}\n </View>\n );\n});\n\nNumberListCard.displayName = 'NumberListCard';\n\nconst CardList = styled.ul`\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-items: center;\n\n list-style: none;\n padding: 0;\n margin: 0;\n margin-left: -${spacings.spacer}px;\n margin-top: -${spacings.nudge * 6}px;\n\n & > * {\n flex: 0 0 100%;\n width: 100%;\n min-width: ${CARD_MIN_WIDTH + spacings.spacer}px;\n max-width: ${CARD_MAX_WIDTH + spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n padding-top: ${spacings.nudge * 6}px;\n }\n\n @media ${MEDIA_QUERIES.medium} {\n flex-direction: row;\n justify-content: center;\n align-items: flex-start;\n\n margin-top: -${spacings.nudge * 10}px;\n\n & > * {\n flex: 0 0 50%;\n padding-top: ${spacings.nudge * 10}px;\n }\n\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n }\n\n @media ${MEDIA_QUERIES.semilarge} {\n & > * {\n flex: 0 0 33.33%;\n }\n\n /* one item */\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n\n /* two items */\n & > li:first-child:nth-last-child(2),\n & > li:first-child:nth-last-child(2) ~ li {\n flex: 0 0 50%;\n }\n }\n\n @media ${MEDIA_QUERIES.large} {\n & > * {\n flex: 0 0 25%;\n }\n\n /* one item */\n & > li:first-child:nth-last-child(1) {\n /* -or- li:only-child { */\n flex: 0 0 100%;\n }\n\n /* two items */\n & > li:first-child:nth-last-child(2),\n & > li:first-child:nth-last-child(2) ~ li {\n flex: 0 0 50%;\n }\n\n /* three items */\n & > li:first-child:nth-last-child(3),\n & > li:first-child:nth-last-child(3) ~ li {\n flex: 0 0 33.33%;\n }\n }\n`;\n\nexport interface NumberListItem {\n image?: ImageProps;\n digit?: string;\n label?: string;\n text?: string;\n}\n\nconst NumberList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n items?: NumberListItem[];\n\n /** Center texts in every card item */\n isCentered?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, bgMode, isCentered = true }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const { sheetRefs: numbersRef } = useEqualSheetHeight<HTMLDivElement>({\n listLength: items?.length || 0,\n identifiers: [\n '[data-sheet=\"digit\"]',\n '[data-sheet=\"label\"]',\n '[data-sheet=\"text\"]',\n ],\n responsive: {\n small: 1,\n medium: 2,\n semilarge: 3,\n large: 4,\n xlarge: 4,\n },\n customMediaQueries: MEDIA_QUERIES,\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? color(theme).sectionBg.dark\n : hasBg\n ? color(theme).sectionBg.medium\n : color(theme).sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <CardList>\n {items?.map((item, i) => {\n return (\n <NumberListCard\n key={i}\n ref={numbersRef[i] as any}\n {...item}\n isInverted={isInverted}\n isCentered={isCentered}\n />\n );\n })}\n </CardList>\n </Wrapper>\n </Section>\n );\n};\n\nexport const NumberListComponent = NumberList;\nexport default withLibTheme(NumberList);\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { spacings } from 'utils/styles';\n\nconst View = styled.section`\n position: relative;\n width: 100vw;\n z-index: -1;\n`;\n\nconst Parallax = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n margin-left: 0;\n width: 100%;\n`;\n\nconst Content = styled.div<{\n contentWidth?: number;\n hAlign?: 'left' | 'center' | 'right';\n}>`\n margin-left: ${({ hAlign }) =>\n (hAlign === 'right' || hAlign === 'center') && 'auto'};\n margin-right: ${({ hAlign }) =>\n (hAlign === 'left' || hAlign === 'center') && 'auto'};\n\n width: ${({ contentWidth }) =>\n contentWidth\n ? contentWidth === -1\n ? 'auto'\n : contentWidth * 100 + '%'\n : undefined};\n\n max-width: ${spacings.wrapperLarge}px;\n overflow: hidden;\n\n & > * {\n width: ${({ contentWidth }) => contentWidth !== -1 && '100%'};\n }\n`;\n\nconst StyledImage = styled(Image)<{\n coverSpace?: boolean;\n hAlign?: 'left' | 'center' | 'right';\n}>`\n max-width: ${({ coverSpace }) => !coverSpace && 'none'};\n float: ${({ hAlign }) =>\n hAlign === 'left' || hAlign === 'right' ? hAlign : undefined};\n ${({ coverSpace, hAlign }) =>\n !coverSpace &&\n hAlign === 'center' &&\n css`\n transform: translateX(-50%);\n margin-left: 50%;\n `}\n`;\n\nexport type ParallaxWidth = '1/4' | 'half' | '3/4' | 'full' | 'auto';\n\nconst ParallaxBackground: FC<{\n image?: ImageProps;\n hAlign?: 'left' | 'center' | 'right';\n contentWidth?: ParallaxWidth | number;\n moveRatio?: number;\n direction?: 'down' | 'up';\n className?: string;\n}> = ({\n image,\n hAlign = 'left',\n contentWidth = 1,\n moveRatio = 0.2,\n direction = 'up',\n className,\n}) => {\n const [isLoaded, setIsLoaded] = useState<boolean>(false);\n const [yTransform, setYTransform] = useState<number>(0);\n // const cRef = useRef<HTMLDivElement>(null);\n const [cRef, setContainerRef] = useState<HTMLElement | null>(null);\n const parallaxRef = useRef<HTMLDivElement>(null);\n\n let width = 1;\n if (typeof contentWidth === 'string') {\n switch (contentWidth) {\n case '1/4': {\n width = 0.25;\n break;\n }\n\n case 'half': {\n width = 0.5;\n break;\n }\n\n case '3/4': {\n width = 0.75;\n break;\n }\n\n case 'auto': {\n width = -1;\n break;\n }\n\n default:\n case 'full': {\n width = 1;\n break;\n }\n }\n } else if (!isNaN(contentWidth)) {\n width = contentWidth;\n }\n\n useEffect(() => {\n setIsLoaded(true);\n }, []);\n\n useEffect(() => {\n const prevEl = cRef?.previousElementSibling;\n if (prevEl) {\n const bgIdent = (prevEl as HTMLElement).dataset.bgIdent;\n const stackIdent = (prevEl as HTMLElement).dataset.stackIdent;\n\n if (bgIdent) {\n // set data background from previous element\n cRef?.setAttribute('data-bg-ident', bgIdent);\n }\n\n if (stackIdent) {\n // set data stack flag from previous element\n cRef?.setAttribute('data-stack-ident', stackIdent);\n }\n }\n }, [cRef]);\n\n useEffect(() => {\n const handleScroll = () => {\n if (!cRef) return;\n\n const containerPos = cRef.getBoundingClientRect().top;\n const ratio = containerPos * moveRatio;\n const offset = ratio * (direction === 'up' ? 1 : -1);\n\n setYTransform(offset);\n };\n\n handleScroll();\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [cRef, direction, moveRatio]);\n\n return (\n <>\n {isLoaded && (\n <View ref={setContainerRef} data-bg-ident=\"transparent\">\n <Parallax\n ref={parallaxRef}\n style={{\n transform: `translate3d(0px, ${yTransform}px, 0px)`,\n }}\n className={className}\n >\n <Content hAlign={hAlign} contentWidth={width}>\n {image && (\n <StyledImage\n hAlign={hAlign}\n coverSpace={width !== -1}\n {...image}\n />\n )}\n </Content>\n </Parallax>\n </View>\n )}\n </>\n );\n};\n\nexport default ParallaxBackground;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport Section from 'components/base/Section';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport { spacings, getGlobals as global } from 'utils/styles';\nimport IntroBlock, { IntroActionProps } from 'components/blocks/IntroBlock';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst Container = styled.figure<{\n hasContent?: boolean;\n verticallyCentered?: boolean;\n}>`\n position: relative;\n width: 100%;\n max-height: 550px;\n padding: 0;\n margin: 0;\n\n &:after {\n content: ${({ hasContent }) => hasContent && '\"\"'};\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background: ${({ theme, verticallyCentered }) =>\n verticallyCentered\n ? global(theme).sections.imageTextGradientCentered\n : global(theme).sections.imageTextGradient};\n pointer-events: none;\n z-index: 0;\n }\n`;\n\nconst StyledImage = styled(Image)`\n img {\n height: 550px;\n }\n`;\n\nconst Intro = styled(IntroBlock)<{\n verticallyCentered?: boolean;\n horizontallyCentered?: boolean;\n}>`\n position: absolute;\n bottom: ${({ verticallyCentered }) => !verticallyCentered && '0'};\n top: ${({ verticallyCentered }) => verticallyCentered && '50%'};\n left: 50%;\n right: 0;\n max-height: 100%;\n max-width: ${spacings.wrapper}px;\n\n padding: ${wrapperWhitespace + spacings.nudge * 2}px;\n z-index: 1;\n\n transform: ${({ verticallyCentered }) =>\n verticallyCentered ? 'translate(-50%, -50%)' : 'translateX(-50%)'};\n`;\n\nconst Poster: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Clamp width of poster image to content wrapper or large wrapper */\n width?: 'full' | 'content';\n\n /** The poster image settings */\n image: Omit<ImageProps, 'coverSpace' | 'ratios'>;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Text underneath the title (richtext) */\n text?: string;\n\n /** Function to inject custom primary button */\n primaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (props: IntroActionProps) => React.ReactNode;\n\n /** Align text and actions vertically */\n verticallyCentered?: boolean;\n\n /** Align text and actions horizontally */\n horizontallyCentered?: boolean;\n}> = ({\n anchorId,\n width = 'content',\n title,\n titleAs,\n superTitle,\n superTitleAs,\n text,\n primaryAction,\n secondaryAction,\n image,\n verticallyCentered,\n horizontallyCentered,\n}) => {\n const isCentered = verticallyCentered && horizontallyCentered;\n\n return (\n <Section anchorId={anchorId} bgColor=\"image\" bgMode=\"full\">\n <Wrapper clampWidth={width === 'content' ? 'normal' : 'large'}>\n <Container\n hasContent={!!title || !!text}\n verticallyCentered={verticallyCentered}\n >\n <StyledImage {...image} coverSpace ratios={undefined} />\n {title && (\n <Intro\n verticallyCentered={verticallyCentered}\n horizontallyCentered={horizontallyCentered}\n renderAs=\"figcaption\"\n colorMode=\"onImage\"\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n secondaryAction={secondaryAction}\n primaryAction={primaryAction}\n clampTitle\n maxTitleLines={3}\n clampText\n maxTextLines={4}\n isCentered={horizontallyCentered || isCentered}\n />\n )}\n </Container>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PosterComponent = Poster;\nexport default withLibTheme(Poster);\n","import React from 'react';\nimport styled from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst ItemList = styled.ul`\n margin: 0;\n padding: 0;\n list-style: none;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst ItemBlock = styled.li<{ hasBg?: boolean }>`\n max-width: 100%;\n padding: ${spacings.nudge * 2}px;\n\n background: ${({ theme, hasBg }) =>\n hasBg ? color(theme).elementBg.light : color(theme).elementBg.medium};\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n @media ${mq.semilarge} {\n padding: ${spacings.nudge * 3}px;\n }\n`;\n\nconst ListHead = styled.div`\n display: flex;\n justify-content: space-between;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Title = styled(Copy)`\n max-width: 880px;\n`;\n\nconst Price = styled(Copy)`\n white-space: nowrap;\n`;\n\nconst Description = styled(Copy)`\n max-width: 880px;\n`;\n\nexport interface PriceItems {\n /** Title of the price item */\n title?: string;\n /** Description text of price item (richtext) */\n text?: string;\n /** The price value (Currency not included) */\n price?: string;\n}\n\nexport const PriceBlock: React.FC<PriceItems & { hasBg?: boolean }> = ({\n text,\n price,\n hasBg = false,\n title,\n}) => {\n return (\n <ItemBlock hasBg={hasBg}>\n <ListHead>\n {title && <Title type=\"copy-b\">{title}</Title>}\n {price && <Price type=\"copy-b\">{price}</Price>}\n </ListHead>\n {text && <Description type=\"copy\" innerHTML={text} />}\n </ItemBlock>\n );\n};\n\nconst PriceList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with price items */\n items?: PriceItems[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n}> = ({ anchorId, bgMode, items }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBack = isInverted || bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n <ItemList>\n {items?.map((item, i) => (\n <PriceBlock key={i} {...item} hasBg={hasBack} />\n ))}\n </ItemList>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PriceListComponent = PriceList;\nexport default withLibTheme(PriceList);\n","import {\n spacings,\n getColors as color,\n getGlobals as global,\n} from 'utils/styles';\nimport React, { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport Copy from 'components/typography/Copy';\nimport Actions from './Actions';\nimport Callout from 'components/typography/Callout';\n\nconst View = styled.div<{\n isInverted?: boolean;\n isCentered?: boolean;\n hasBg?: boolean;\n isHighlighted?: boolean;\n}>`\n padding: ${spacings.spacer}px;\n\n border: 1px solid transparent;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n background: ${({ theme, hasBg, isInverted, isHighlighted }) =>\n isInverted\n ? isHighlighted\n ? color(theme).primary.inverted\n : color(theme).elementBg.medium\n : isHighlighted\n ? color(theme).primary.default\n : hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n text-align: ${({ isCentered }) => (isCentered ? 'center' : 'left')};\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst StyledActions = styled(Actions)`\n display: block;\n margin-top: auto;\n padding-top: ${spacings.spacer}px;\n text-align: center;\n`;\n\nexport interface PriceTagProps {\n title?: string;\n superTitle?: string;\n text?: string;\n action?: (props: {\n isInverted?: boolean;\n isHighlighted?: boolean;\n }) => React.ReactNode;\n isInverted?: boolean;\n isCentered?: boolean;\n hasBackground?: boolean;\n isHighlighted?: boolean;\n}\n\nconst PriceTag = forwardRef<\n HTMLDivElement,\n PriceTagProps & { className?: string }\n>(\n (\n {\n superTitle,\n title,\n text,\n action,\n isInverted,\n isCentered,\n isHighlighted,\n hasBackground,\n className,\n },\n ref\n ) => {\n const inverted = isHighlighted ? !isInverted : false;\n\n return (\n <View\n ref={ref}\n isInverted={isInverted}\n isCentered={isCentered}\n isHighlighted={isHighlighted}\n hasBg={hasBackground}\n className={className}\n >\n {superTitle && (\n <Copy\n type=\"copy-b\"\n size=\"big\"\n isInverted={inverted}\n innerHTML={superTitle}\n data-sheet=\"superTitle\"\n />\n )}\n {title && (\n <Callout\n renderAs=\"div\"\n size=\"big\"\n isInverted={inverted}\n innerHTML={title}\n data-sheet=\"title\"\n />\n )}\n {text && (\n <Copy\n size=\"medium\"\n isInverted={inverted}\n innerHTML={text}\n data-sheet=\"desc\"\n />\n )}\n <StyledActions\n mode=\"cover\"\n primary={\n action &&\n action({\n isInverted: inverted,\n isHighlighted: isHighlighted,\n })\n }\n />\n </View>\n );\n }\n);\n\nPriceTag.displayName = 'PriceTag';\n\nexport default PriceTag;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport PriceTag, { PriceTagProps } from 'components/blocks/PriceTag';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport { gridSettings } from 'components/base/Grid';\nimport { mq } from 'utils/styles';\n\nconst Tag = styled(PriceTag)`\n min-height: 500px;\n`;\n\nconst Items = styled.div`\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n\n margin-top: -${gridSettings.gutter}px;\n margin-left: -${gridSettings.gutter}px;\n\n & > * {\n flex: 1 1 25%;\n min-width: 286px;\n max-width: 320px;\n margin-top: ${gridSettings.gutter}px;\n margin-left: ${gridSettings.gutter}px;\n }\n\n @media ${mq.large} {\n & > * {\n max-width: 286px;\n }\n }\n`;\n\nconst PriceTable: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** Array of PriceTag card items */\n items: Array<Omit<PriceTagProps, 'isInverted'>>;\n /** Center text inside card items */\n isCentered?: boolean;\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, isCentered, bgMode }) => {\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const priceTagCount = items?.length || 0;\n\n const { colors } = useLibTheme();\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: priceTagCount,\n identifiers: [\n '[data-sheet=\"superTitle\"]',\n '[data-sheet=\"title\"]',\n '[data-sheet=\"desc\"]',\n ],\n responsive: {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: 3,\n xlarge: 3,\n },\n });\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <Wrapper addWhitespace>\n <Items>\n {items?.map((item, i) => (\n <Tag\n key={i}\n ref={cardRefs[i]}\n {...item}\n isInverted={isInverted}\n isCentered={isCentered}\n hasBackground={hasBg}\n />\n ))}\n </Items>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PriceTableComponent = PriceTable;\nexport default withLibTheme(PriceTable);\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { mq, spacings } from 'utils/styles';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Callout from 'components/typography/Callout';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Copy from 'components/typography/Copy';\n\nconst Content = styled.figure`\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n max-width: 960px;\n margin: 0 auto;\n }\n`;\n\nconst Text = styled(Callout)`\n text-align: center;\n margin-left: 0;\n margin-right: 0;\n padding: 0;\n`;\n\nconst Source = styled(Copy)`\n text-align: center;\n margin-left: 0;\n margin-right: 0;\n padding: 0;\n`;\n\nconst Quote: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Text of the blockquote (richtext) */\n text?: string;\n\n /** Source of the quote e.g. author (richtext) */\n source?: string;\n\n /** URL for additional cite informations */\n citeUrl?: string;\n\n /** Section backgrounds */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, text, source, citeUrl }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode === 'full'\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Content>\n {text && (\n <Text\n size=\"small\"\n renderAs=\"blockquote\"\n isInverted={isInverted}\n innerHTML={text}\n {...{ cite: citeUrl }}\n />\n )}\n {source && (\n <Source\n isInverted={isInverted}\n renderAs=\"figcaption\"\n innerHTML={source}\n />\n )}\n </Content>\n </Wrapper>\n </Section>\n );\n};\n\nexport const QuoteComponent = Quote;\nexport default withLibTheme(Quote);\n","import React, { FC, useContext } from 'react';\nimport styled, { ThemeContext } from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Wrapper from 'components/base/Wrapper';\nimport { getColors } from 'utils/styles';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst ImageWrapper = styled(Wrapper)<{ hAlign?: 'left' | 'center' | 'right' }>`\n display: flex;\n justify-content: ${({ hAlign }) => {\n switch (hAlign) {\n case 'center':\n return 'center';\n case 'right':\n return 'flex-end';\n default:\n return 'flex-start';\n }\n }};\n`;\n\nconst SimpleImage: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Image settings */\n image?: ImageProps;\n\n /** Horizontal alignment of the image */\n hAlign?: 'left' | 'center' | 'right';\n\n /** Allow reduced section spacing to next section */\n isStackable?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, image, hAlign = 'left', bgMode, isStackable }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n isStackable={isStackable}\n bgColor={\n isInverted\n ? getColors(theme).sectionBg.dark\n : hasBg\n ? getColors(theme).sectionBg.medium\n : getColors(theme).sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n >\n <ImageWrapper hAlign={hAlign}>\n {image && <Image {...image} />}\n </ImageWrapper>\n </Section>\n );\n};\n\nexport const SimpleImageComponent = SimpleImage;\nexport default withLibTheme(SimpleImage);\n","import React from 'react';\nimport styled from 'styled-components';\nimport {\n getColors as color,\n mq,\n spacings,\n getGlobals as global,\n} from 'utils/styles';\n\nimport Instagram from 'components/base/icons/socials/Instagram';\nimport Heading from 'components/typography/Heading';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport { gridSettings } from 'components/base/Grid';\nimport Image, { ImageProps } from 'components/blocks/Image';\n\nconst Cards = styled.ul`\n display: flex;\n flex-wrap: wrap;\n margin: 0;\n padding: 0;\n list-style: none;\n\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n\n & > * {\n flex: 1 1 100%;\n margin-top: ${spacings.spacer}px;\n margin-left: ${spacings.spacer}px;\n }\n\n @media ${mq.medium} {\n & > * {\n flex: 1 1 calc(50% - ${gridSettings.gutter}px);\n max-width: calc(50% - ${gridSettings.gutter}px);\n }\n }\n\n @media ${mq.large} {\n & > * {\n flex: 1 1 calc(${(1 / 3) * 100}% - ${gridSettings.gutter}px);\n max-width: calc(${(1 / 3) * 100}% - ${gridSettings.gutter}px);\n }\n }\n`;\n\nconst Item = styled.li`\n display: block;\n position: relative;\n padding: 0;\n`;\n\nconst Card = styled(Link)<{ isInverted?: boolean }>`\n position: relative;\n display: block;\n text-decoration: none;\n color: '#fff';\n outline-color: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n &:before {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).secondary.inverted\n : color(theme).secondary.default};\n\n opacity: 0;\n pointer-events: none;\n z-index: 1;\n transition: opacity 0.2s ease-in-out;\n }\n\n &:hover {\n &:before {\n opacity: 1;\n pointer-events: all;\n }\n }\n\n &:focus {\n &:before {\n opacity: 1;\n pointer-events: all;\n }\n }\n`;\n\nconst StyledImage = styled(Image)`\n display: block;\n height: 100%;\n z-index: 0;\n`;\n\nconst TextContainer = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n transform: translate(-50%, -50%);\n text-align: center;\n\n padding: ${spacings.nudge * 2}px;\n\n opacity: 0;\n pointer-events: none;\n z-index: 2;\n transition: opacity 0.2s ease-in-out;\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n\n ${Card}:hover & {\n opacity: 1;\n pointer-events: all;\n }\n\n ${Card}:focus & {\n opacity: 1;\n pointer-events: all;\n }\n`;\n\nconst FollowUs = styled(Heading)`\n text-transform: uppercase;\n`;\n\nconst InstagramIcon = styled.div`\n position: absolute;\n left: 20px;\n bottom: 20px;\n color: ${({ theme }) => color(theme).text.inverted};\n z-index: 2;\n\n & > * {\n fill: #fff;\n\n ${Card}:hover & {\n color: ${({ theme }) => color(theme).text.inverted};\n }\n }\n`;\n\nconst SocialWall: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array with item settings */\n items?: Array<{\n link?: LinkProps;\n image?: Omit<ImageProps, 'coverSpace' | 'ratio'>;\n }>;\n\n /** Text for main social media follow call */\n followUs?: string;\n\n /** Text for e.g. social media hashtag */\n hashTag?: string;\n\n /** Function to inject custom social icon on bottom left corner */\n socialIcon?: React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, items, hashTag, followUs, socialIcon, bgMode }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <Cards>\n {items?.map((item, i) => (\n <Item key={i}>\n <Card\n isExternal\n {...item.link}\n isInverted={isInverted}\n ariaLabel={item?.image?.alt}\n >\n {item.image && (\n <StyledImage\n {...item.image}\n coverSpace\n ratios={{\n small: { w: 1, h: 1 },\n }}\n isInverted={isInverted}\n />\n )}\n <TextContainer>\n <FollowUs size=\"super\" isInverted>\n {followUs\n ? followUs\n : 'Follow Us On Instagram'}\n </FollowUs>\n {hashTag && (\n <Heading size=\"heading-2\" isInverted>\n {hashTag}\n </Heading>\n )}\n </TextContainer>\n <InstagramIcon>\n {socialIcon || <Instagram />}\n </InstagramIcon>\n </Card>\n </Item>\n ))}\n </Cards>\n </Wrapper>\n </Section>\n );\n};\n\nexport const SocialWallComponent = SocialWall;\nexport default withLibTheme(SocialWall);\n","import React from 'react';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport TableBlock, { TableProps } from 'components/blocks/TableBlock';\nimport styled from 'styled-components';\nimport { spacings } from 'utils/styles';\n\nconst TableSection = styled(Section)`\n overflow: unset;\n`;\n\nconst TableWrapper = styled(Wrapper)`\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst Table: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Table rows and columns */\n tableItems: TableProps[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, tableItems }) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full' || isInverted;\n\n return (\n <TableSection\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <TableWrapper>\n {tableItems.map((item, i) => {\n return (\n <TableBlock\n key={i}\n {...item}\n isInverted={isInverted}\n hasBack={hasBg}\n />\n );\n })}\n </TableWrapper>\n </TableSection>\n );\n};\n\nexport const TableComponent = Table;\nexport default withLibTheme(Table);\n","import React, { FC, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport Grid from 'components/base/Grid';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\nimport Wrapper from 'components/base/Wrapper';\nimport Section, { BgMode } from 'components/base/Section';\nimport {\n mq,\n spacings,\n getGlobals as global,\n getFonts as font,\n} from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport VideoBlock, { VideoAspectRatios } from 'components/blocks/VideoBlock';\nimport { isValidArray } from 'utils/arrays';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport useUpdateEffect from 'utils/useUpdateEffect';\n\nconst Figure = styled.figure`\n display: flex;\n flex-direction: column;\n position: relative;\n height: 100%;\n width: 100%;\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n\n @media ${mq.semilarge} {\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n }\n`;\n\nconst StyledImage = styled(Image)`\n position: relative;\n width: 100%;\n height: 100%;\n\n @media ${mq.semilarge} {\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n }\n`;\n\nconst Video = styled(VideoBlock)<{\n ratios?: VideoAspectRatios;\n isVisible?: boolean;\n}>`\n display: ${({ isVisible }) => (isVisible ? 'block' : 'none')};\n width: 100%;\n height: 100%;\n`;\n\nconst Description = styled(Copy)<{\n isInverted?: boolean;\n isSplitted?: boolean;\n isMirrored?: boolean;\n}>`\n display: block;\n\n @media ${mq.semilarge} {\n padding-left: ${spacings.nudge * 2}px;\n padding-right: ${spacings.nudge * 2}px;\n margin-left: ${({ isMirrored }) => isMirrored && 'auto'};\n margin-right: ${({ isMirrored }) => !isMirrored && 'auto'};\n max-width: ${({ isSplitted }) => isSplitted && '81.5%'};\n\n color: ${({ theme, isInverted, isSplitted }) =>\n isInverted && !isSplitted\n ? font(theme).copy.small.colorInverted\n : font(theme).copy.small.color};\n }\n\n @media ${mq.xlarge} {\n max-width: ${({ isSplitted }) => isSplitted && '69.5%'};\n }\n`;\n\nconst StyledActions = styled(Actions)`\n &:not(:first-child) {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst Teaser: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Switch text and image columns */\n isMirrored?: boolean;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Images for different screen sizes */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /**\n * Use video instead of an image. Until video is loaded images defined in the image prop are used.\n * Multiple video urls can be used to loaded different file formats\n */\n video?: {\n urls: string[];\n aspectRatios?: VideoAspectRatios;\n };\n\n /** Image or video description text (richtext) */\n description?: string;\n\n /** Main richtext */\n text?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted' | 'inverted-splitted';\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n isMirrored = false,\n bgMode,\n superTitle,\n superTitleAs,\n title,\n titleAs,\n image,\n video,\n description,\n text,\n primaryAction,\n secondaryAction,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted' || bgMode === 'inverted-splitted';\n const isSplitted = bgMode === 'splitted' || bgMode === 'inverted-splitted';\n const hasVideo = isValidArray(video?.urls, false);\n\n const viewRef = useRef<HTMLDivElement | null>(null);\n const [isLoaded, setLoaded] = useState(!image?.small || false);\n const [isVideoActive, setVideoActive] = useState<boolean>(false);\n const isObserverSupported = useObserverSupport();\n\n useUpdateEffect(() => {\n if (!viewRef.current || !hasVideo) return;\n if (!isObserverSupported) {\n setVideoActive(true);\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries, observer) => {\n const [entry] = entries;\n\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n setVideoActive(true);\n }\n },\n {\n rootMargin: '200px 0px 200px 0px',\n }\n );\n\n const viewEl = viewRef.current;\n observer.observe(viewEl);\n\n return () => {\n if (viewEl) observer.unobserve(viewEl);\n };\n }, [isObserverSupported]);\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToTeaserBgMode(bgMode, false, isMirrored)}\n >\n <Wrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row valign=\"center\">\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n xlarge={{\n span: 7 / 12,\n move: (isMirrored ? 5 : 0) / 12,\n }}\n >\n {(image?.small || hasVideo) && (\n <Figure ref={viewRef}>\n {image?.small && (!video || !isLoaded) && (\n <StyledImage\n {...image}\n isInverted={isInverted}\n coverSpace\n />\n )}\n {hasVideo && (\n <Video\n urls={\n isVideoActive\n ? video?.urls\n : undefined\n }\n muted\n autoPlay\n loop\n onCanPlayThrough={() => setLoaded(true)}\n ratios={video?.aspectRatios}\n isVisible={isLoaded}\n isInverted={isInverted}\n />\n )}\n {description && (\n <Description\n size=\"small\"\n renderAs=\"figcaption\"\n isInverted={isInverted}\n isSplitted={isSplitted}\n isMirrored={isMirrored}\n innerHTML={description}\n />\n )}\n </Figure>\n )}\n </Grid.Col>\n\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n xlarge={{\n span: 5 / 12,\n move: (isMirrored ? -7 : 0) / 12,\n }}\n >\n <IntroBlock\n titleHyphens\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n />\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction && primaryAction(isInverted)\n }\n secondary={\n secondaryAction &&\n secondaryAction(isInverted)\n }\n />\n )}\n </Grid.Col>\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const mapToTeaserBgMode = (\n mode?: 'full' | 'splitted' | 'inverted' | 'inverted-splitted',\n preventSplit = false,\n isMirrored = false\n): BgMode | undefined => {\n switch (mode) {\n case 'full':\n return 'full';\n case 'inverted':\n return 'inverted';\n case 'splitted': {\n if (!preventSplit)\n return isMirrored ? 'larger-left' : 'larger-right';\n else return undefined;\n }\n case 'inverted-splitted': {\n if (!preventSplit)\n return isMirrored ? 'larger-left' : 'larger-right';\n else return undefined;\n }\n\n default:\n return undefined;\n }\n};\n\nexport const TeaserComponent = Teaser;\nexport default withLibTheme(Teaser);\n","import React, { FC, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Grid, { getGridWidth } from 'components/base/Grid';\nimport { HeadlineTag } from 'components/typography/Heading';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport { mq, spacings, withRange, getGlobals as global } from 'utils/styles';\nimport Actions from 'components/blocks/Actions';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport IntroBlock from 'components/blocks/IntroBlock';\nimport VideoBlock, { VideoAspectRatios } from 'components/blocks/VideoBlock';\nimport { isValidArray } from 'utils/arrays';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport useUpdateEffect from 'utils/useUpdateEffect';\n\n/**\n * calculate single grid col from relative content wrapper\n * (grid width = wrapper width without paddings)\n * */\nconst getGridColOfContent = () => {\n return css`\n ${getGridWidth({\n cols: 1,\n gridWidth: `${spacings.wrapper - wrapperWhitespace * 2}px `,\n })}\n `;\n};\n\nconst WideVideo = styled(VideoBlock)<{\n isMirrored?: boolean;\n isVisible?: boolean;\n}>`\n display: ${({ isVisible }) => (isVisible ? 'block' : 'none')};\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n\n min-height: 400px;\n object-fit: cover;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of current\n viewport width.\n */\n width: calc(50% + ${getGridColOfContent()} + ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of large wrapper width.\n */\n width: calc(\n ${spacings.wrapperLarge / 2}px + ${getGridColOfContent()} +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored ? '100% - ' : '-100% + '}\n (${getGridColOfContent()} + ${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst WideImage = styled(Image)<{ isMirrored?: boolean }>`\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n\n height: 100%;\n min-height: 400px;\n\n img {\n height: 100%;\n }\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of current\n viewport width.\n */\n width: calc(50% + ${getGridColOfContent()} + ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n /** \n calculate width of 1 grid cols\n and add left or right wrapper padding afterwards. Then add this to 50% of large wrapper width.\n */\n width: calc(\n ${spacings.wrapperLarge / 2}px + ${getGridColOfContent()} +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored ? '100% - ' : '-100% + '}\n (${getGridColOfContent()} + ${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst Content = styled.div`\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-bottom'\n )}\n\n @media ${mq.semilarge} {\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-top'\n )}\n }\n`;\n\nconst StyledActions = styled(Actions)`\n &:not(:first-child) {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst TeaserWide: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Switch text and image columns */\n isMirrored?: boolean;\n\n /** Superior title that stands above main title */\n superTitle?: string;\n\n /** Superior title HTML tag type (h3, h4 ...) */\n superTitleAs?: HeadlineTag;\n\n /** Main title text */\n title?: string;\n\n /** Main title HTML tag type (h2, h3, h4...) */\n titleAs?: HeadlineTag;\n\n /** Images for different screen sizes */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /**\n * Use video instead of an image. Until video is loaded images defined in the image prop are used.\n * Multiple video urls can be used to loaded different file formats\n */\n video?: {\n urls: string[];\n aspectRatios?: VideoAspectRatios;\n };\n\n /** Main richtext */\n text?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Function to inject custom primary button */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject custom secondary button */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n isMirrored = false,\n superTitle,\n superTitleAs,\n title,\n titleAs,\n image,\n video,\n text,\n primaryAction,\n secondaryAction,\n bgMode,\n}) => {\n const { colors } = useLibTheme();\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const hasVideo = isValidArray(video?.urls, false);\n\n const viewRef = useRef<HTMLDivElement | null>(null);\n const [isLoaded, setLoaded] = useState(!image?.small || false);\n const [isVideoActive, setVideoActive] = useState<boolean>(false);\n const isObserverSupported = useObserverSupport();\n\n useUpdateEffect(() => {\n if (!viewRef.current || !hasVideo) return;\n if (!isObserverSupported) {\n setVideoActive(true);\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries, observer) => {\n const [entry] = entries;\n\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n setVideoActive(true);\n }\n },\n {\n rootMargin: '200px 0px 200px 0px',\n }\n );\n\n const viewEl = viewRef.current;\n observer.observe(viewEl);\n\n return () => {\n if (viewEl) observer.unobserve(viewEl);\n };\n }, [isObserverSupported]);\n\n return (\n <Section\n ref={viewRef}\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {image?.small && (!video || !isLoaded) && (\n <WideImage\n coverSpace\n {...image}\n isMirrored={isMirrored}\n isInverted={isInverted}\n />\n )}\n {hasVideo && (\n <WideVideo\n urls={isVideoActive ? video?.urls : undefined}\n muted\n autoPlay\n loop\n onCanPlayThrough={() => setLoaded(true)}\n isVisible={isLoaded}\n isInverted={isInverted}\n isMirrored={isMirrored}\n ratios={video?.aspectRatios}\n />\n )}\n <Wrapper clampWidth=\"normal\" addWhitespace>\n <Grid.Row valign=\"center\">\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n xlarge={{\n span: 7 / 12,\n move: (isMirrored ? 5 : 0) / 12,\n }}\n ></Grid.Col>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n xlarge={{\n span: 5 / 12,\n move: (isMirrored ? -7 : 0) / 12,\n }}\n >\n <Content>\n <IntroBlock\n titleHyphens\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n text={text}\n colorMode={isInverted ? 'inverted' : 'default'}\n />\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={\n primaryAction &&\n primaryAction(isInverted)\n }\n secondary={\n secondaryAction &&\n secondaryAction(isInverted)\n }\n />\n )}\n </Content>\n </Grid.Col>\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const TeaserWideComponent = TeaserWide;\nexport default withLibTheme(TeaserWide);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport React, {\n createRef,\n MutableRefObject,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { ThemeContext } from 'styled-components';\nimport { getColors as color, mq, spacings } from 'utils/styles';\nimport { useObserverSupport } from 'utils/useObserverSupport';\nimport { withLibTheme } from 'utils/LibThemeProvider';\n\nconst TimelineBlock = styled.div<{\n isSwitched?: boolean;\n isActive?: boolean;\n isInverted?: boolean;\n}>`\n position: relative;\n\n @media ${mq.large} {\n text-align: ${({ isSwitched }) => (isSwitched ? 'left' : 'right')};\n }\n\n &:after {\n content: '';\n width: 10px;\n height: 10px;\n\n box-sizing: content-box;\n border: 2px solid\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n border-radius: 50%;\n\n background: ${({ theme, isActive, isInverted }) =>\n isActive\n ? isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark\n : isInverted\n ? color(theme).elementBg.dark\n : color(theme).elementBg.light};\n\n position: absolute;\n top: 16px;\n left: 0px;\n\n transition: all 0.2s ease-in-out;\n\n @media ${mq.large} {\n left: ${({ isSwitched }) => (!isSwitched ? '50%' : 'auto')};\n right: ${({ isSwitched }) => isSwitched && '50%'};\n transform: translateX(\n ${({ isSwitched }) => (isSwitched ? '50%' : '-50%')}\n );\n }\n }\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n width: 2px;\n min-height: 160px;\n height: 100%;\n background: ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n left: 5px;\n\n @media ${mq.large} {\n left: 50%;\n transform: translateX(-50%);\n }\n }\n\n &:first-child {\n padding-top: 0;\n\n &:before {\n top: 16px;\n }\n }\n`;\n\nconst TimelineText = styled.div<{\n isSwitched?: boolean;\n}>`\n position: relative;\n padding-left: ${spacings.nudge * 3 + 2}px;\n padding-bottom: ${spacings.spacer}px;\n\n @media ${mq.large} {\n max-width: 50%;\n\n margin-left: ${({ isSwitched }) => isSwitched && '50%'};\n margin-right: ${({ isSwitched }) => !isSwitched && '50%'};\n\n padding: ${({ isSwitched }) =>\n isSwitched\n ? `${spacings.spacer}px 0 ${spacings.spacer * 1.75}px ${\n spacings.spacer\n }px`\n : `${spacings.spacer}px ${spacings.spacer}px ${\n spacings.spacer * 1.75\n }px 0`};\n }\n\n &:first-child {\n padding-top: 0;\n }\n\n & > * + * {\n margin-top: ${spacings.nudge * 2}px;\n }\n`;\n\nconst ItemTitle = styled(Heading)``;\n\nconst ItemTextBlock = styled(Copy)``;\n\nconst Timeline: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n items?: { label?: string; title?: string; text?: string }[];\n bgMode?: 'full' | 'inverted';\n}> = ({ anchorId, bgMode, items }) => {\n const theme = useContext(ThemeContext);\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const [targetRefs, setTargetRefs] = useState<\n MutableRefObject<HTMLDivElement>[]\n >([]);\n const observerSupported = useObserverSupport();\n const observerRef = useRef<IntersectionObserver | null>(null);\n\n const [activeItem, setActiveItem] = useState<number>(0);\n\n useEffect(() => {\n if (observerSupported && targetRefs && targetRefs.length > 0) {\n const options = {\n rootMargin: '-50% 0% -50% 0%',\n threshold: 0,\n };\n\n observerRef.current = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const index = targetRefs?.findIndex(\n (t) => t.current === entry.target\n );\n setActiveItem(index);\n }\n });\n }, options);\n\n for (let i = 0; i < targetRefs.length; i++) {\n observerRef.current.observe(targetRefs[i].current);\n }\n }\n\n return () => {\n observerRef.current?.disconnect();\n };\n }, [targetRefs, observerSupported]);\n\n useEffect(() => {\n setTargetRefs(() =>\n Array(items?.length)\n .fill(null)\n .map((_, i) => targetRefs[i] || createRef())\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [items?.length]);\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? color(theme).sectionBg.dark\n : hasBg\n ? color(theme).sectionBg.medium\n : 'transparent'\n }\n bgMode={mapToBgMode(bgMode, true)}\n addSeperation\n >\n <Wrapper addWhitespace>\n {items &&\n items.map((item, i) => {\n return (\n <TimelineBlock\n ref={targetRefs[i]}\n isActive={activeItem === i}\n isSwitched={i % 2 === 0}\n isInverted={isInverted}\n key={i}\n >\n <TimelineText isSwitched={i % 2 === 0}>\n <ItemTitle\n size=\"heading-2\"\n textColor={\n isInverted\n ? color(theme).text.inverted\n : color(theme).text.default\n }\n >\n {item.label}\n </ItemTitle>\n\n <ItemTextBlock\n type=\"copy-b\"\n size=\"big\"\n isInverted={isInverted}\n >\n {item.title}\n </ItemTextBlock>\n <ItemTextBlock\n innerHTML={item.text}\n isInverted={isInverted}\n />\n </TimelineText>\n </TimelineBlock>\n );\n })}\n </Wrapper>\n </Section>\n );\n};\n\nexport const TimelineComponent = Timeline;\nexport default withLibTheme(Timeline);\n","import React from 'react';\nimport Section, { mapToBgMode } from 'components/base/Section';\n\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Wrapper from 'components/base/Wrapper';\nimport { ImageProps } from 'components/blocks/Image';\n\nimport VideoCard from 'components/blocks/VideoCard';\n\nconst Video: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n bgImage: Omit<ImageProps, 'ratios' | 'coverSpace'>;\n embedId: string;\n\n consentText?: string;\n consentAction?: (props: {\n handleClick?: () => void;\n consentProps: Record<string, string>;\n }) => React.ReactNode;\n /**\n * Custom handler for play button click\n * @returns true if video should be played\n */\n onPlayClick?: () => Promise<boolean>;\n\n playIcon?: React.ReactNode;\n bgMode?: 'full' | 'inverted' | 'splitted';\n}> = ({\n anchorId,\n bgMode,\n bgImage,\n embedId,\n playIcon,\n consentText,\n consentAction,\n onPlayClick,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <VideoCard\n bgImage={bgImage}\n embedId={embedId}\n playIcon={playIcon}\n consentText={consentText}\n consentAction={consentAction}\n onPlayClick={onPlayClick}\n />\n </Wrapper>\n </Section>\n );\n};\n\nexport const VideoComponent = Video;\nexport default withLibTheme(Video);\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport { getColors as color, getGlobals as global, mq } from 'utils/styles';\nimport Play from 'components/base/icons/Play';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Wrapper from 'components/base/Wrapper';\nimport VideoBlock from 'components/blocks/VideoBlock';\nimport { ImageProps } from 'components/blocks/Image';\nimport { isValidArray } from 'utils/arrays';\n\nconst VideoContainer = styled.div<{ isInverted?: boolean }>`\n position: relative;\n cursor: pointer;\n`;\n\nconst Overlay = styled.div<{ bgImage?: ImageProps; isInverted?: boolean }>`\n position: relative;\n padding-top: ${`calc(100% / (16 / 9))`};\n background: ${({ theme, isInverted }) =>\n isInverted\n ? global(theme).sections.imagePlaceholderBg.inverted\n : global(theme).sections.imagePlaceholderBg.default};\n\n background-image: ${({ bgImage }) =>\n bgImage?.small && `url(\"${bgImage.small}\")`};\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n overflow: hidden;\n\n @media ${mq.medium} {\n text-align: left;\n\n background-image: ${({ bgImage }) =>\n bgImage?.medium && `url(\"${bgImage.medium}\")`};\n }\n\n @media ${mq.semilarge} {\n background-image: ${({ bgImage }) =>\n bgImage?.semilarge && `url(\"${bgImage.semilarge}\")`};\n }\n\n @media ${mq.large} {\n background-image: ${({ bgImage }) =>\n bgImage?.large && `url(\"${bgImage.large}\")`};\n }\n\n @media ${mq.xlarge} {\n background-image: ${({ bgImage }) =>\n bgImage?.xlarge && `url(\"${bgImage.xlarge}\")`};\n }\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n pointer-events: none;\n\n background: linear-gradient(\n 358.19deg,\n rgba(29, 34, 35, 0.52) 12.37%,\n rgba(29, 34, 35, 0) 59.02%\n );\n }\n`;\n\nconst VideoControls = styled.button`\n display: block;\n border: none;\n background: none;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n color: ${({ theme }) => color(theme).elementBg.light};\n z-index: 1;\n padding: 0;\n\n cursor: pointer;\n\n & > * {\n opacity: 0.8;\n transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;\n height: 80px;\n width: 80px;\n\n color: ${({ theme }) => color(theme).elementBg.dark};\n }\n\n ${Overlay}:hover > & > * {\n transform: scale(1.05);\n opacity: 1;\n }\n\n ${Overlay}:active > & > * {\n transform: scale(0.95);\n opacity: 1;\n }\n\n &:focus {\n outline: 2px solid ${({ theme }) => color(theme).primary.default};\n border-radius: 50%;\n opacity: 1;\n\n & > * {\n color: ${({ theme }) => color(theme).primary.default};\n }\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n`;\n\nconst Video = styled(VideoBlock)<{ isVisible?: boolean }>`\n opacity: ${({ isVisible }) => (isVisible ? 1 : 0)};\n pointer-events: ${({ isVisible }) => (isVisible ? 'all' : 'none')};\n`;\n\nconst RawVideo: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** URL to video sources */\n videoUrls?: string[];\n\n /** Placeholder image */\n placeholderImg?: Omit<ImageProps, 'ratios' | 'coverSpace'>;\n\n /** Enable autoplay without user interaction */\n autoplay?: boolean;\n\n /** Playing video in loop */\n loop?: boolean;\n\n /** Section background */\n bgMode?: 'full' | 'inverted' | 'splitted';\n\n /** Video play icon */\n playIcon?: React.ReactNode;\n}> = ({\n anchorId,\n bgMode,\n videoUrls,\n placeholderImg,\n playIcon,\n autoplay,\n loop,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const [isStarted, setIsStarted] = useState<boolean>(autoplay || false);\n\n return (\n <Section\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode)}\n addSeperation\n >\n <Wrapper addWhitespace>\n <VideoContainer\n onClick={() => {\n if (isValidArray(videoUrls, false)) {\n setIsStarted(true);\n }\n }}\n >\n {isStarted && (\n <Video\n isVisible={isStarted || !placeholderImg?.small}\n controls={!autoplay}\n autoPlay\n loop={loop}\n muted={autoplay}\n ratios={{ small: 16 / 9 }}\n urls={videoUrls}\n isInverted={isInverted}\n />\n )}\n {!isStarted && (\n <Overlay\n bgImage={placeholderImg}\n isInverted={isInverted}\n >\n <VideoControls>\n {playIcon || <Play iconColor=\"#000\" />}\n </VideoControls>\n </Overlay>\n )}\n </VideoContainer>\n </Wrapper>\n </Section>\n );\n};\n\nexport const RawVideoComponent = RawVideo;\nexport default withLibTheme(RawVideo);\n","import React, { FC, useEffect, useMemo, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n mq,\n spacings,\n getColors as color,\n getFonts as font,\n getGlobals as global,\n withRange,\n} from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Grid, { getGridWidth, gridSettings } from 'components/base/Grid';\nimport Wrapper, { wrapperWhitespace } from 'components/base/Wrapper';\n\nimport IntroBlock from 'components/blocks/IntroBlock';\n\nimport Copy, { copyStyle } from 'components/typography/Copy';\nimport { HeadlineTag } from 'components/typography/Heading';\n\nimport Phone from 'components/base/icons/Phone';\nimport Mail from 'components/base/icons/Mail';\n\nimport { generateLocalBusiness } from 'utils/structuredData';\nimport Link from 'components/typography/Link';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Control from 'components/buttons/Control';\nimport * as Icons from 'components/base/icons/Icons';\nimport { getSVGDataImg as getSVGData } from 'utils/dataURI';\nimport useLeafletMap from 'utils/useLeafletMap';\nimport { isValidArray } from 'utils/arrays';\n\ninterface Address {\n street: string;\n postalCode: string;\n city?: string;\n country: string;\n}\n\nconst MapSection = styled(Section)`\n position: relative;\n min-height: 500px;\n z-index: 0;\n`;\n\nconst MapContainer = styled.div<{ isMirrored?: boolean }>`\n position: relative;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n z-index: 0;\n\n height: 100%;\n min-height: 230px;\n\n @media ${mq.semilarge} {\n position: absolute;\n /** \n calculate width of 6 grid cols (grid width = viewport width without wrapper paddings)\n and add left or right wrapper padding afterwards\n */\n width: calc(\n ${getGridWidth({\n cols: 6,\n gridWidth: `100% - ${wrapperWhitespace * 2}px `,\n })} + ${wrapperWhitespace}px\n );\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '0')};\n right: ${({ isMirrored }) => (isMirrored ? '0' : 'auto')};\n }\n\n @media ${mq.xlarge} {\n width: calc(50% - ${gridSettings.gutter}px ${wrapperWhitespace}px);\n }\n\n @media ${mq.xxlarge} {\n width: calc(\n ${spacings.wrapperLarge / 2}px - ${gridSettings.gutter}px +\n ${wrapperWhitespace}px\n );\n\n left: ${({ isMirrored }) => (isMirrored ? 'auto' : '50%')};\n right: ${({ isMirrored }) => (isMirrored ? '50%' : 'auto')};\n\n ${({ isMirrored }) =>\n css`\n transform: translateX(\n calc(\n ${isMirrored\n ? `(100% + ${gridSettings.gutter}px) - `\n : `(-100% - ${gridSettings.gutter}px) + `}\n (${wrapperWhitespace}px)\n )\n );\n `};\n }\n`;\n\nconst CardWrapper = styled(Wrapper)`\n pointer-events: none;\n`;\n\nconst CardContainer = styled.div<{ isMirrored?: boolean }>`\n display: flex;\n flex-direction: row;\n position: relative;\n width: 100%;\n pointer-events: all;\n\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-bottom'\n )}\n\n @media ${mq.semilarge} {\n ${({ theme }) =>\n withRange(\n global(theme).sections.seperation.padding.default,\n 'padding-top'\n )}\n }\n`;\n\nconst InfoCardView = styled.div`\n min-height: 100px;\n pointer-events: all;\n\n flex: 1 0 80%;\n max-width: 80%;\n\n & > * + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst CardHeader = styled.div`\n display: flex;\n`;\n\nconst ContactList = styled.ul<{ isInverted?: boolean }>`\n padding: 0;\n list-style-type: none;\n color: ${({ theme, isInverted }) =>\n isInverted ? color(theme).text.inverted : color(theme).text.default};\n\n li {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0;\n margin: 0;\n }\n\n li + li {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n span:first-child {\n flex: 0 0 30px;\n max-width: 30px;\n\n & > * {\n max-width: 100%;\n }\n }\n`;\n\nconst ContactListLink = styled(Link)`\n display: block;\n\n ${copyStyle('copy-b', 'big')}\n color: ${({ theme, isInverted }) =>\n isInverted\n ? font(theme)['copy-b'].big.colorInverted\n : font(theme)['copy-b'].big.color};\n\n * + & {\n margin-left: ${spacings.nudge * 1.5}px;\n }\n`;\n\nconst AddressContainer = styled.div<{ hasIcon?: boolean }>`\n display: -ms-grid;\n display: grid;\n\n ${({ hasIcon }) => css`\n -ms-grid-columns: ${hasIcon ? 'min-content' : ''} 1fr;\n grid-template-columns: ${hasIcon ? 'min-content' : ''} 1fr;\n -ms-grid-rows: ${hasIcon ? 'min-content' : ''} 1fr;\n grid-auto-rows: ${hasIcon ? 'min-content' : ''} 1fr;\n `}\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst CompanyInfo: FC<{\n isInverted?: boolean;\n companyName: string;\n address?: Address;\n customIcon?: (isInverted?: boolean) => React.ReactNode;\n}> = ({ isInverted, companyName, address, customIcon }) => {\n return (\n <AddressContainer hasIcon={!!customIcon}>\n {customIcon && <span> {customIcon()} </span>}\n <div>\n <Copy type=\"copy-b\" size=\"big\" isInverted={isInverted}>\n {companyName}\n </Copy>\n {address && (\n <Copy type=\"copy-b\" size=\"big\" isInverted={isInverted}>\n <div>{address.street}</div>\n <div>{`${address.postalCode} ${address.city}`}</div>\n <div>{address.country}</div>\n </Copy>\n )}\n </div>\n </AddressContainer>\n );\n};\n\nconst Desc = styled(Copy)`\n @media ${mq.semilarge} {\n margin-top: ${spacings.spacer * 2.5}px;\n }\n`;\n\nconst LocationInfoCard: FC<\n MapLocation & {\n isInverted?: boolean;\n }\n> = ({\n isInverted,\n title,\n titleAs,\n superTitle,\n superTitleAs,\n companyName,\n address,\n addressIcon,\n contact,\n description,\n}) => {\n const { colors } = useLibTheme();\n\n const addressIconContent = addressIcon ? (\n addressIcon({ isInverted })\n ) : (\n <LocationPin\n iconColor={isInverted ? colors.text.inverted : colors.text.default}\n />\n );\n\n const phoneIconContent = contact?.telephone?.icon ? (\n contact.telephone.icon({\n isInverted,\n })\n ) : (\n <Phone />\n );\n\n const mailIconContent = contact?.email?.icon ? (\n contact.email.icon({ isInverted })\n ) : (\n <Mail />\n );\n\n return (\n <InfoCardView>\n <CardHeader>\n <IntroBlock\n colorMode={isInverted ? 'inverted' : 'default'}\n title={title}\n titleAs={titleAs}\n superTitle={superTitle}\n superTitleAs={superTitleAs}\n />\n </CardHeader>\n {companyName && (\n <CompanyInfo\n companyName={companyName || ''}\n address={address}\n customIcon={\n addressIconContent\n ? () => addressIconContent\n : undefined\n }\n isInverted={isInverted}\n />\n )}\n {contact && (\n <ContactList isInverted={isInverted}>\n {contact?.telephone?.label && (\n <li>\n {phoneIconContent && (\n <span>{phoneIconContent}</span>\n )}\n <ContactListLink\n isInverted={isInverted}\n href={`tel:${\n contact.telephone.link ||\n contact.telephone.label\n }`}\n >\n {contact.telephone?.label}\n </ContactListLink>\n </li>\n )}\n {contact?.email?.label && (\n <li>\n {mailIconContent && <span>{mailIconContent}</span>}\n <ContactListLink\n isInverted={isInverted}\n href={`mailto:${\n contact?.email.link || contact.email.label\n }`}\n >\n {contact?.email.label}\n </ContactListLink>\n </li>\n )}\n </ContactList>\n )}\n\n <Desc isInverted={isInverted} innerHTML={description} />\n </InfoCardView>\n );\n};\n\nconst Controls = styled.div`\n flex: 1 0 20%;\n max-width: 20%;\n display: flex;\n flex-direction: column;\n align-self: flex-start;\n margin-left: auto;\n text-align: right;\n\n & > * + * {\n margin-top: ${spacings.nudge}px;\n }\n`;\n\nconst FylToCtrlContainer = styled.button`\n position: absolute;\n top: 0;\n right: 0;\n z-index: 1000;\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n\n margin-top: ${spacings.spacer}px;\n margin-right: ${spacings.spacer}px;\n color: ${({ theme }) => color(theme).elementBg.dark};\n\n cursor: pointer;\n`;\n\nexport interface LocationIcon {\n url: string;\n size: [number, number];\n anchor: [number, number];\n\n sizeActive: [number, number];\n anchorActive: [number, number];\n}\n\nexport interface MapLocation {\n id: string;\n position: [number, number];\n icon?: LocationIcon;\n\n title?: string; // Rich Text\n titleAs?: HeadlineTag;\n superTitle?: string;\n superTitleAs?: HeadlineTag;\n\n companyName?: string;\n address?: Address;\n addressIcon?: (props: { isInverted?: boolean }) => React.ReactNode;\n contact?: {\n telephone?: {\n link?: string;\n label?: string;\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n };\n email?: {\n link?: string;\n label?: string;\n icon?: (props: { isInverted?: boolean }) => React.ReactNode;\n };\n };\n image?: string[];\n description?: string;\n}\n\nconst Map: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Switch horizontal order of map and location info text */\n isMirrored?: boolean;\n\n /** Map tile provider */\n provider?: string;\n\n /** Map attribution text (richtext) */\n attribution?: string;\n\n /** Initial center of the map */\n center?: [number, number];\n\n /** Initial map zoom */\n zoom?: number;\n\n /** Zoom if map jumps to location */\n flyToZoom?: number;\n\n /** Initial location */\n initialLocation?: string;\n\n /** Array of location settings */\n locations?: Array<MapLocation>;\n\n /** Show all markers on first load */\n allMarkersOnInit?: boolean;\n\n /** Map container padding for show all markers */\n fitBoundsPadding?: [number, number];\n\n /** Icon element for flight to the current active location */\n flyToControl?: React.ReactNode;\n\n /** Injection function to replace default control button */\n controlNext?: (props: {\n isInverted?: boolean;\n isActive?: boolean;\n name?: string;\n clickHandler?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n }) => React.ReactNode;\n\n /** Injection function to replace default control button */\n controlPrev?: (props: {\n isInverted?: boolean;\n isActive?: boolean;\n name?: string;\n clickHandler?: (ev: React.SyntheticEvent<HTMLButtonElement>) => void;\n }) => React.ReactNode;\n}> = ({\n anchorId,\n bgMode,\n isMirrored = false,\n provider,\n attribution,\n center = [51.505, -0.09],\n zoom = 5,\n flyToZoom,\n initialLocation,\n locations,\n allMarkersOnInit = false,\n fitBoundsPadding,\n flyToControl,\n controlNext,\n controlPrev,\n}) => {\n const { colors } = useLibTheme();\n\n const [activeLocationId, setActiveLocationId] = useState<string>(\n initialLocation || ''\n );\n const [isDirty, setIsDirty] = useState<boolean>(false);\n const activeLocation = useMemo(\n () => locations?.find((l) => l.id === activeLocationId),\n [activeLocationId, locations]\n );\n\n const hasBg = bgMode === 'full';\n const isInverted = bgMode === 'inverted';\n\n const defaultMarker: LocationIcon = {\n size: [28, 28],\n anchor: [14, 28],\n sizeActive: [70, 70],\n anchorActive: [35, 70],\n url: getSVGData(<LocationPin />),\n };\n const {\n isLoaded,\n setContainer: setMapContainer,\n flyToActive,\n showAllMarkers,\n } = useLeafletMap({\n url: provider,\n attribution,\n center,\n zoom,\n activeMarkerId: activeLocationId,\n markers: locations?.map(({ id, position, icon }) => ({\n id,\n position,\n icon: icon || defaultMarker,\n isInteractive: true,\n })),\n fitBoundsPadding,\n onMarkerClick: setActiveLocationId,\n });\n\n const goToNext = () => {\n setActiveLocationId((prev) => {\n if (!locations) return prev;\n const currentIndex = locations.findIndex(\n (l) => l.id === activeLocationId\n );\n if (currentIndex === -1) return prev;\n\n // get new index\n const newIndex = (currentIndex + 1) % locations.length;\n return locations[newIndex].id;\n });\n };\n\n const goToPrevious = () => {\n setActiveLocationId((prev) => {\n if (!locations) return prev;\n const currentIndex = locations.findIndex(\n (l) => l.id === activeLocationId\n );\n if (currentIndex === -1) return prev;\n\n // get new index\n const newIndex =\n currentIndex - 1 < 0 ? locations.length - 1 : currentIndex - 1;\n return locations[newIndex].id;\n });\n };\n\n useEffect(() => {\n if (isLoaded && !isDirty) {\n if (allMarkersOnInit) showAllMarkers();\n } else {\n flyToActive(flyToZoom);\n }\n }, [\n activeLocationId,\n allMarkersOnInit,\n flyToActive,\n flyToZoom,\n initialLocation,\n isDirty,\n isLoaded,\n showAllMarkers,\n ]);\n\n useEffect(() => {\n if (!isDirty && activeLocationId !== initialLocation) setIsDirty(true);\n }, [activeLocationId, initialLocation, isDirty]);\n\n return (\n <MapSection\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {locations && generateLocalBusiness(locations)}\n <MapContainer ref={setMapContainer} isMirrored={isMirrored}>\n {flyToControl && (\n <FylToCtrlContainer\n onClick={(ev) => {\n ev.stopPropagation();\n flyToActive(flyToZoom);\n }}\n >\n {flyToControl}\n </FylToCtrlContainer>\n )}\n </MapContainer>\n\n <CardWrapper addWhitespace clampWidth=\"normal\">\n <Grid.Row>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? 6 : 0) / 12,\n }}\n ></Grid.Col>\n <Grid.Col\n semilarge={{\n span: 6 / 12,\n move: (isMirrored ? -6 : 0) / 12,\n }}\n >\n <CardContainer isMirrored={isMirrored}>\n {isValidArray(locations, false) && (\n <React.Fragment>\n {activeLocation && (\n <LocationInfoCard\n {...activeLocation}\n isInverted={isInverted}\n />\n )}\n {locations.length > 1 && (\n <Controls>\n {controlNext ? (\n controlNext({\n isInverted,\n isActive: true,\n clickHandler: goToNext,\n name: 'control_next_head',\n })\n ) : (\n <Control\n isInverted={isInverted}\n isDisabled={false}\n onClick={goToNext}\n >\n <Icons.ArrowRightGhost />\n </Control>\n )}\n {controlPrev ? (\n controlPrev({\n isInverted,\n isActive: true,\n clickHandler: goToPrevious,\n name: 'control_prev_head',\n })\n ) : (\n <Control\n isInverted={isInverted}\n isDisabled={false}\n onClick={goToPrevious}\n >\n <Icons.ArrowLeftGhost />\n </Control>\n )}\n </Controls>\n )}\n </React.Fragment>\n )}\n </CardContainer>\n </Grid.Col>\n </Grid.Row>\n </CardWrapper>\n </MapSection>\n );\n};\n\nexport const MapComponent = Map;\nexport default withLibTheme(Map);\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport React from 'react';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\n\nconst HtmlCode: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n /** HTML content */\n html?: string;\n /** Section background */\n bgMode?: 'full' | 'inverted';\n}> = ({ html, anchorId, bgMode }) => {\n const isInverted = bgMode === 'inverted';\n const { colors } = useLibTheme();\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper clampWidth=\"normal\" addWhitespace>\n {html && <div dangerouslySetInnerHTML={{ __html: html }} />}\n </Wrapper>\n </Section>\n );\n};\n\nexport const HtmlCodeComponent = HtmlCode;\nexport default withLibTheme(HtmlCode);\n"],"names":["AccordionContainer","styled","div","withConfig","displayName","componentId","templateObject_1","__makeTemplateObject","spacings","nudge","View","details","templateObject_2","AccordionHead","summary","templateObject_3","_a","isInverted","hasBg","theme","color","getColors","elementBg","light","medium","mq","lightHover","mediumHover","Column","Copy","templateObject_4","AccordionText","templateObject_5","spacer","semilarge","gridSettings","gutter","AccordionBlock","label","text","aside","isSelected","onClick","itemIcon","className","colors","useLibTheme","React","createElement","open","onToggle","renderAs","size","type","Minus","iconColor","default","Plus","hasAside","innerHTML","Accordion$1","withLibTheme","anchorId","items","bgMode","_b","useState","currentItems","setCurrentItems","Section","addSeperation","bgColor","sectionBg","dark","mapToBgMode","generateFAQ","Wrapper","addWhitespace","Grid","Row","Col","map","i","indexOf","key","concat","prev","copy","__spreadArray","index","push","splice","primary","inverted","global","sections","edgeRadius","invertedHover","hover","Icon","MainLabel","Content","Title","ViewLink","Link","templateObject_6","Alert","title","date","description","link","customIcon","formattedDate","StatusFormatter","getTime","getFormattedDate","Info","textColor","__assign","ariaLabel","href","undefined","List","ul","ListItem","li","large","itemsPerRow","AlertList$1","alertCount","length","alertRefs","useEqualSheetHeight","listLength","identifiers","responsive","small","xlarge","item","ref","StyledTitle","ContentText","StyledActions","Actions","Article$1","titleAs","_c","titleSize","superTitle","superTitleAs","intro","asideText","halfAside","primaryAction","secondaryAction","hasContent","clampWidth","colorMode","valign","span","secondary","ContactView","Avatar","img","getGlobals","imagePlaceholderBg","Description","StyledIntro","IntroBlock","hasDecorator","StyledContactBox","avatar","src","alt","getGridWidth","cols","NewsletterWrapper","templateObject_7","Badge","templateObject_8","CallToAction$1","contact","badge","hasNewsletter","newsFormMain","isCentered","isTextCentered","SolidView","cardColor","hasLink","css","ImageView","imageTextGradient","StyledImage","Image","hasIcon","TextContainer","templateObject_9","Footer","SubLabel","templateObject_11","templateObject_12","CardLink","templateObject_13","Card","subLabel","image","decorator","CardView","defaultCardColor","coverSpace","ratios","w","h","templateObject_14","CardItem","templateObject_15","isEqual","threeCols","CardList$2","maxThreeCols","clamp","num","min","max","Math","Images","BackgroundImg","ForegroundContainer","hasTransition","hasAnim","initalValue","ForegroundImg","ForegroundOverlay","ImageLabel","ForegroundLabel","BackgroundLabel","ControlContainer","templateObject_10","Control","ComparisonSlider$1","initialValue","foregroundImg","backgroundImg","foregroundLabel","backgroundLabel","overlayColor","labelColor","dragControl","enableControlAnim","isIE","useIE","_d","slideValue","setSlideValue","_e","isHolding","setIsHolding","_f","isDragging","setIsDragging","_g","interacted","setInteracted","_h","sideOffset","setSideOffset","controlRef","useRef","useEffect","current","offsetWidth","handleInitalLoad","observer","IntersectionObserver","entries","isIntersecting","unobserve","target","rootMargin","threshold","observe","window","removeEventListener","document","readyState","addEventListener","setCurrentPos","clientX","relativeClientX","getBoundingClientRect","x","width","percentage","ev","currentTarget","onMouseMove","onMouseDown","onMouseUp","onMouseLeave","onTouchMove","touches","onTouchStart","onTouchEnd","style","left","ArrowLeftRight","clickable","IntroContainer","clampTitle","wrapper","ExternalIconHolder","withRange","PromotionCard","forwardRef","externalLinkIcon","icon","linkObj","isExternal","externalIconString","ReactDOMServer","renderToString","External","isMain","CrossPromotion$1","main","isMirrored","card","ImageContainer","SubTitle","Text","Fact","subTitle","showPlaceholder","FactFill","FactGrid$1","columns","facts","factCount","cardRefs","fact","FactsContainer","FactItem","hasBack","hasText","ContentBlock","FactList$1","TitleLink","copyStyle","font","getFonts","big","colorInverted","ArticleContent","Action","Feature","action","dataSheet","features","featureCount","isHalf","useMemo","halign","feature","Gallery$1","images","isFull","StyledSection","ItemContainer","Items","isVisible","Item","ItemLink","ShowMore","itemCount","IconList$1","toggle","showLessText","showMoreText","enableToggle","showMore","setShowMore","handleToggleClick","ratio","isToggled","clickHandler","additionalProps","Pointer","as","Label","IndexLink","LinkLabel","IconWrapper","IndexList$1","scrollToOffset","setTargetPos","useScrollTo","useMediaQueries","topOffset","setTopOffset","handleLinkClick","preventDefault","getAttribute","getElementById","split","top","scrollY","url","URL","location","hash","history","pushState","header","querySelector","navbarIdent","getNavbarState","navbarHeights","getFullNavbarHeights","ArrowDown","abstract","isStackable","clampAbstract","clampText","TitleIcon","NavBlock","customTitleIcon","Fragment","NavList$1","MEDIA_QUERIES","NumberListCard","digit","Callout","CardList","NumberList$1","useContext","ThemeContext","numbersRef","customMediaQueries","section","Parallax","hAlign","contentWidth","wrapperLarge","Container","figure","verticallyCentered","imageTextGradientCentered","Intro","wrapperWhitespace","Poster$1","horizontallyCentered","maxTitleLines","maxTextLines","ItemList","ItemBlock","ListHead","Price","PriceBlock","price","PriceList$1","isHighlighted","PriceTag","hasBackground","mode","Tag","PriceTable$1","priceTagCount","Source","Quote$1","source","citeUrl","cite","ImageWrapper","SimpleImage$1","Cards","FollowUs","Heading","InstagramIcon","SocialWall$1","hashTag","followUs","socialIcon","Instagram","TableSection","TableWrapper","Table$1","tableItems","TableBlock","Figure","Video","VideoBlock","isSplitted","mapToTeaserBgMode","preventSplit","Teaser$1","video","hasVideo","isValidArray","urls","viewRef","isLoaded","setLoaded","isVideoActive","setVideoActive","isObserverSupported","useObserverSupport","useUpdateEffect","entry","viewEl","move","muted","autoPlay","loop","onCanPlayThrough","aspectRatios","titleHyphens","getGridColOfContent","gridWidth","WideVideo","xxlarge","WideImage","seperation","padding","TeaserWide$1","TimelineBlock","isSwitched","isActive","TimelineText","ItemTitle","ItemTextBlock","Timeline$1","targetRefs","setTargetRefs","observerSupported","observerRef","activeItem","setActiveItem","forEach","findIndex","t","disconnect","Array","fill","_","createRef","bgImage","embedId","playIcon","consentText","consentAction","onPlayClick","VideoCard","VideoContainer","Overlay","VideoControls","button","RawVideo$1","videoUrls","placeholderImg","autoplay","isStarted","setIsStarted","controls","Play","MapSection","MapContainer","CardWrapper","CardContainer","InfoCardView","CardHeader","ContactList","ContactListLink","AddressContainer","CompanyInfo","companyName","address","street","postalCode","city","country","Desc","LocationInfoCard","addressIcon","addressIconContent","LocationPin","phoneIconContent","telephone","Phone","mailIconContent","email","Mail","Controls","FylToCtrlContainer","Map$1","provider","attribution","center","zoom","flyToZoom","initialLocation","locations","allMarkersOnInit","fitBoundsPadding","flyToControl","controlNext","controlPrev","activeLocationId","setActiveLocationId","isDirty","setIsDirty","activeLocation","find","l","id","defaultMarker","anchor","sizeActive","anchorActive","getSVGData","getSVGDataImg","useLeafletMap","activeMarkerId","markers","position","isInteractive","onMarkerClick","setMapContainer","setContainer","flyToActive","showAllMarkers","goToNext","currentIndex","newIndex","goToPrevious","generateLocalBusiness","stopPropagation","name","isDisabled","Icons","ArrowRightGhost","html","dangerouslySetInnerHTML","__html","moveRatio","direction","setIsLoaded","yTransform","setYTransform","cRef","setContainerRef","parallaxRef","isNaN","prevEl","previousElementSibling","bgIdent","dataset","stackIdent","setAttribute","handleScroll","containerPos","transform"],"mappings":"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"}