{"version":3,"sources":["webpack:///./presentation/components/ribbons/tiers/DesktopTier.tsx","webpack:///src/presentation/components/ribbons/tiers/DesktopTier.stylesheet.ts","webpack:///./presentation/components/ribbons/tiers/Desktop.tsx","webpack:///src/presentation/components/ribbons/tiers/Desktop.stylesheet.ts","webpack:///./presentation/utils/urlLanguageParse.ts"],"names":["isValueDefined","value","isNilOrEmpty","PureDesktopTier","colorway","glyph","imageUrl","label","behavior","badge","selected","hover","handleClick","currentLanguage","externalRoutes","styles","theme","useTheme","typography","contrastColor","getContrastColor","useStyles","default","root","display","alignItems","height","position","textAlign","fontFamily","content","color","getTitleColor","width","borderWidth","outline","cursor","paddingTop","gu2px","paddingBottom","cssSides","Side","longhand","style","backgroundColor","transition","textDecoration","text","overflow","textOverflow","whiteSpace","icon","justifyContent","marginRight","spacing","image","minWidth","objectFit","objectPosition","marginLeft","borderBottomColor","rgba","useStylesheet","hasGlyph","hasImage","hasBadge","badgeKind","Colorway","DARK","HIGHLIGHT","includes","BadgeKind","PRIMARY","onClick","to","goto","data-selector","size","loading","src","urlLanguageParse","alt","createImageAlt","Boolean","Shortcode","against","code","flush","kind","displayName","callToAction","withLanguage","withHover","PureDesktopTiers","id","ribbonId","links","layout","palette","alignment","findResponsiveItem","useBreakpoints","Alignment","tiers","opacify","overflowX","overflowY","link","marginBottom","modifier","className","map","i","url","language","length","parsedLanguage","split","toUpperCase","join","replace"],"mappings":"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","file":"pex-static/90/85.adf788fa7a1f2a68e8ff.chunk.js","sourcesContent":["import React, { ComponentType } from 'react';\nimport { withHover } from '@team-griffin/stylr';\nimport Glyph from '@ux/glyphs';\nimport { DynamicLink } from '@ux/dynamic-link';\nimport Badge, { Kind as BadgeKind } from '@uds/badge';\nimport { Colorway } from 'domain/constants/colorway';\nimport callToAction from 'presentation/hocs/callToAction';\nimport createImageAlt from 'presentation/utils/createImageAlt';\nimport withLanguage from 'presentation/hocs/withLanguage';\nimport urlLanguageParse from 'presentation/utils/urlLanguageParse';\nimport { isNilOrEmpty } from 'presentation/utils/generalUtils';\nimport Shortcode, { ShortcodeProps } from 'components/Shortcode';\n\nimport useStylesheet from './DesktopTier.stylesheet';\n\ninterface OuterProps {\n ribbonId?: string;\n colorway: Colorway;\n imageUrl?: string;\n badge?: ShortcodeProps;\n glyph?: string;\n selected?: boolean;\n behavior?: {\n goto: string;\n };\n label?: ShortcodeProps;\n externalRoutes: Array;\n}\n\nexport interface InnerProps extends OuterProps {\n currentLanguage: string;\n handleClick?: (evt?: any) => void;\n hover: boolean;\n}\n\nfunction isValueDefined(value: T | undefined): value is T {\n return !isNilOrEmpty(value);\n}\n\nexport const PureDesktopTier = ({\n colorway,\n glyph,\n imageUrl,\n label,\n behavior,\n badge,\n selected,\n hover,\n handleClick,\n currentLanguage,\n externalRoutes,\n}: InnerProps) => {\n const { styles } = useStylesheet({\n colorway,\n selected,\n hover,\n });\n const hasGlyph = isValueDefined(glyph);\n const hasImage = isValueDefined(imageUrl);\n const hasBadge = isValueDefined(badge);\n const badgeKind = [Colorway.DARK, Colorway.HIGHLIGHT].includes(colorway) ? BadgeKind.PRIMARY : BadgeKind.HIGHLIGHT;\n return (\n \n {(hasGlyph || hasImage) && (\n \n {hasGlyph && }\n {hasImage && (\n \n )}\n \n )}\n\n {Boolean(label) && }\n\n {hasBadge && (\n \n \n \n \n \n )}\n \n );\n};\n\nPureDesktopTier.displayName = 'DesktopTier';\n\nexport default callToAction(withLanguage(withHover(PureDesktopTier))) as ComponentType;\n","import { useStyles } from '@team-griffin/stylr';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport longhand from '@team-griffin/css-longhand';\nimport { gu2px, useTheme } from '@ux/theme-utils';\nimport { content } from '@ux/type-size';\nimport { Colorway } from 'domain/constants/colorway';\nimport { getContrastColor, getTitleColor } from 'presentation/utils/colorway';\nimport rgba from 'presentation/utils/rgba';\n\nexport default ({\n colorway,\n selected,\n hover,\n}: {\n colorway: Colorway;\n selected: boolean | undefined;\n hover: boolean;\n}) => {\n const { theme } = useTheme();\n const { spacing, typography } = theme;\n const contrastColor = getContrastColor(theme, colorway);\n\n return useStyles(\n {\n default: {\n root: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n position: 'relative',\n textAlign: 'center',\n fontFamily: typography.display,\n ...content(),\n color: getTitleColor(theme, colorway),\n width: '100%',\n borderWidth: 0,\n outline: 0,\n cursor: 'pointer',\n paddingTop: gu2px(2, spacing),\n paddingBottom: gu2px(2, spacing),\n ...cssSides('padding', Side.X, 0),\n ...longhand('borderBottom', {\n width: 4,\n style: 'solid',\n color: 'transparent',\n }),\n backgroundColor: 'transparent',\n transition: 'border-bottom-color 0.3s ease-in-out',\n textDecoration: 'none',\n },\n text: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: gu2px(3, spacing),\n height: gu2px(3, spacing),\n color: contrastColor,\n marginRight: gu2px(1, spacing),\n },\n image: {\n width: gu2px(3, spacing),\n height: gu2px(3, spacing),\n minWidth: gu2px(3, spacing),\n objectFit: 'cover',\n objectPosition: 'center',\n },\n badge: {\n marginLeft: gu2px(1, spacing),\n },\n },\n\n selected: {\n root: {\n borderBottomColor: contrastColor,\n },\n },\n\n hover: {\n root: {\n borderBottomColor: rgba(getContrastColor(theme, colorway), 0.9),\n },\n },\n },\n [{ hover }, { colorway }, { selected }],\n );\n};\n","/* eslint-disable react/no-array-index-key */\nimport React from 'react';\nimport Helmet from 'react-helmet';\nimport { Container } from '@ux/grid';\nimport { Colorway } from 'domain/constants/colorway';\nimport { Layout } from 'domain/constants/layout';\n\nimport Tier from './DesktopTier';\nimport { Link } from './Tiers';\nimport useStylesheet from './Desktop.stylesheet';\n\ninterface OuterProps {\n id: string;\n links: Array;\n colorway: Colorway;\n selected: number;\n layout: Layout;\n externalRoutes: Array;\n}\n\nexport const PureDesktopTiers = ({ id: ribbonId, links, colorway, layout, selected, externalRoutes }: OuterProps) => {\n const { styles } = useStylesheet({\n colorway,\n layout,\n });\n\n return (\n
\n \n \n \n \n \n \n
\n );\n};\n\nPureDesktopTiers.displayName = 'DesktopTiers';\n\nexport default PureDesktopTiers;\n","import { useStyles } from '@team-griffin/stylr';\nimport cssSides, { Side } from '@team-griffin/css-sides';\nimport longhand from '@team-griffin/css-longhand';\nimport { modifier, opacify } from '@ux/style-utils';\nimport { gu2px, useTheme } from '@ux/theme-utils';\nimport { useBreakpoints } from '@ux/responsive';\nimport { Colorway } from 'domain/constants/colorway';\nimport { Alignment } from 'domain/constants/alignment';\nimport { Layout } from 'domain/constants/layout';\nimport findResponsiveItem from 'presentation/utils/findResponsiveItem';\n\nexport default ({ colorway, layout }: { colorway: Colorway; layout: Layout }) => {\n const { theme } = useTheme();\n const { spacing, palette } = theme;\n\n const alignment = findResponsiveItem(useBreakpoints(), [\n layout?.alignmentMobile ?? Alignment.STARTING,\n layout?.alignmentTablet ?? Alignment.STARTING,\n layout?.alignment ?? Alignment.STARTING,\n ]);\n\n return useStyles(\n {\n default: {\n root: {},\n tiers: {\n display: 'flex',\n ...longhand('borderBottom', {\n width: 2,\n style: 'solid',\n color: opacify(palette.grey06, 0.2),\n }),\n overflowX: 'scroll',\n overflowY: 'hidden',\n },\n link: {\n ...cssSides('padding', Side.X, gu2px(3, spacing)),\n marginRight: gu2px(1, spacing),\n marginBottom: -2, // offset the 4px border so its over the top\n },\n },\n\n [modifier('alignment', Alignment.STARTING)]: {\n tiers: {\n justifyContent: 'flex-start',\n },\n },\n\n [modifier('alignment', Alignment.CENTER)]: {\n tiers: {\n justifyContent: 'center',\n },\n },\n\n [modifier('colorway', Colorway.HIGHLIGHT)]: {\n tiers: {\n borderBottomColor: opacify(palette.highlightContrast, 0.2),\n },\n },\n\n [modifier('colorway', Colorway.PRIMARY)]: {\n tiers: {\n borderBottomColor: opacify(palette.primaryContrast, 0.2),\n },\n },\n\n [modifier('colorway', Colorway.PRIMARY_GRADIENT)]: {\n tiers: {\n borderBottomColor: opacify(palette.primaryContrast, 0.2),\n },\n },\n },\n [{ alignment }, { colorway }],\n );\n};\n","export default (url: string, language?: string) => {\n if (url && url.length && language) {\n let parsedLanguage;\n if (language.split('-').length === 2) {\n parsedLanguage = [language.split('-')[0], language.split('-')[1].toUpperCase()].join('-');\n } else {\n parsedLanguage = language;\n }\n return url.replace('{{language}}', parsedLanguage);\n }\n return url;\n};\n"],"sourceRoot":""}