{"version":3,"sources":["webpack:///./Avensia.Common/Features/Shared/Blocks/Products/ProductsBlock.tsx","webpack:///./Avensia.Common/Features/Product/ProductDetails/AverageRating.tsx","webpack:///./Avensia.Common/Features/Product/ProductAddToCart/index.tsx","webpack:///./Avensia.Common/Features/Product/ProductCard/Badge.tsx","webpack:///./Avensia.Common/Features/Shared/string-format.tsx","webpack:///./Avensia.Common/Features/Shared/BoxLayout/index.tsx","webpack:///./Avensia.Common/Features/Product/ProductDetails/UspBullets.tsx","webpack:///./Avensia.Common/Features/Shared/Icon/RemovePlain.tsx","webpack:///./Avensia.Common/Features/Shared/variation-helper.ts","webpack:///./Avensia.Common/Features/Shared/Icon/Check-Thin.tsx","webpack:///./Avensia.Common/Features/Product/ProductCard/ProductCard.tsx","webpack:///./Avensia.Common/Features/Product/ProductDetails/AverageRatingBlack.tsx","webpack:///./Avensia.Common/Features/Shared/Icon/Star-Black.tsx","webpack:///./Avensia.Common/Features/Shared/Icon/glyphs/star-black.svg","webpack:///./Avensia.Common/Features/Shared/Icon/glyphs/star-outline-black.svg","webpack:///./Avensia.Common/Features/Shared/Icon/glyphs/star-half-black.svg","webpack:///./Avensia.Common/Features/Shared/Icon/glyphs/md-checkmark.svg","webpack:///./Avensia.Common/Features/Shared/Icon/glyphs/remove-plain.svg","webpack:///./Avensia.Common/Features/Shared/Icon/Info.tsx","webpack:///./Avensia.Common/Features/Shared/Icon/glyphs/information-icon.svg","webpack:///./Avensia.Common/Features/Product/ProductCard/List.tsx","webpack:///./Avensia.Common/Features/Product/ProductCard/ProductCardMobile.tsx","webpack:///./Avensia.Common/Features/Shared/Blocks/PaddedBlock.tsx"],"names":["Header","div","marginBottom","position","textAlign","display","LinkStyled","color","theme","textColor","letterSpacing","maxWidth","textTransform","fontSize","borderBottom","width","style","Title","compose","restProps","fontWeight","lineHeight","HeaderTitle","HeaderTitleWrapper","justifyContent","LinkWrapper","paddingRight","ProductsBlock","props","headerUrl","block","linkUrl","horizontalScrollMobile","scrollStyle","overflow","flexWrap","padding","xy","margin","x","Div","css","className","component","for","title","innerProps","to","linkText","products","layout","Block","noPlaceholders","Spacing","Size","floatPart","Number","average","Math","trunc","toFixed","parsedFloat","parseFloat","starStyles","size","spacing","height","marginLeft","Micro","Tiny","Normal","Large","Huge","Medium","Wide","getStyles","Base","map","rating","key","ceil","whiteSpace","behavior","KeepEnabled","onClick","event","feedback","push","addToCart","stopPropagation","preventDefault","render","FeedbackButton","this","Button","variant","appearance","Primary","Full","disabled","children","Component","zIndex","Badge","CampaignBadge","campaignTextProductcard","top","right","backgroundClip","WebkitBackgroundClip","textShadow","sharedStyle","borderRadius","triStyle","OuterWrapper","border","discountBadgeColor","InnerWrapper","left","NewBadge","backgroundColor","badgeColor","DiscountBadge","DiscountTriBadge","formatTitleCase","str","replace","txt","charAt","toUpperCase","substr","toLowerCase","SPACING_DEFAULT","SPACING_MOBILE","BOX_ITEM_CLASSNAME","fractions","spacingDefaulter","value","currentBreakpoint","isThin","fraction","Column","flexDirection","flexGrow","minWidth","sort","entities","a","b","Children","toArray","row","allowSorting","Small","entry","element","shift","columns","reduce","current","item","convert","spacingBetweenBlocks","wrap","entity","index","isColumn","flexBasis","state","BoxLayout","ListStyleType","Theme","bulletpoints","marginRight","verticalAlign","ListStyleMobileType","Li","li","textOverflow","Value","span","UspBullets","Sliced","bulletPoints","bulletLimit","slice","UlComponent","isCompact","MobileUl","DesktopUl","hasValue","bulletPoint","listItemCss","isMobile","listStyleType","ul","y","prepareVariationName","name","m","String","fromCharCode","CheckIcon","Check","bulletPointsVisible","toggleBulletPointsTrue","setState","toggleBulletPointsFalse","averageRating","brand","imageUrls","price","hasMultipleVariants","hasDiscount","hasPromotion","isNew","displayName","url","inStock","ticket","displayTagDesigner","displayHighlightImage","whiteHighlightText","highlightImageUrl","hideProductInfo","promotions","images","productImage","length","productBrand","trim","productName","original","currency","discountPercentage","isPriceDiscounted","currentPrice","originalPrice","currentTheme","imageWithPaddingStyle","paddingTop","actionButtonText","DoggieDefault","PromotionNode","PromotionTitle","promotion","i","PromotionLink","promotionUrl","PromotionItemTitle","promotionName","ExtensionWrapper","onMouseEnter","onMouseLeave","Body","productUrl","linkIdentifier","productTicket","HighlightImage","objectFit","src","Wrapper","visibility","startsWith","isProductNew","ImageStyled","alt","itemProp","preset","includes","undefined","ratio","OneToOne","imageStyle","lazy","RatingsPlaceholder","productRatings","Ratings","RatingsNone","BrandPlaceholder","Brand","NameWrapper","Name","UspBulletsStyled","bulletListItemStyle","LowerWrapper","Prices","CurrentPrice","priceType","New","Regular","OldPrice","Old","StockPlaceholder","StockStatus","CrossIcon","ActionStyled","hasVariants","isInStock","addCart","CartIcon","ProductCard","Action","ViewProduct","AddCart","boxShadow","shadowColor","cardBackgroundColor","transform","willChange","property","duration","timingFunction","buyButtonProductcardDesktop","buttonTextColor","cursor","alignItems","flex","basis","shrink","marginTop","opacity","paddingLeft","flexShrink","WebkitLineClamp","WebkitBoxOrient","bottom","actionStyle","mixBlendMode","campaignBackgroundColor","StarBlack","StarOutlineBlack","HalfStarBlack","React","createElement","defaultProps","module","exports","default","StarHalfBlack","MdCheckmark","RemovePlain","InformationIcon","Layout","hasBulletpoints","IsVxnSite","ActionButtonIcon","InfoIconStyled","ShoppingBagIcon","CrossNoStock","HighlightImageWrapper","RatingsContainer","MobileBulletWrap","ButtonContainer","ButtonLeftContainer","Price","mobileActionButtonStyle","connect","buyButtonProductcardMobile","minHeight","img","Link","AverageRating","alignSelf","Info","flexFlow","pageStyled","blockStyled","baseStyled","BaseCard","BaseCardMobile","PageCard","PageCardMobile","BlockCard","BlockCardMobile","BasePlaceholder","PagePlaceholder","BlockPlaceholder","code","isCheckoutPage","addCartItem","Promise","reject","ProductCardMobile","Placeholder","ieBlockCardStyle","desktopCardStyle","mobileCardStyle","product","variation","Fragment","Array","fill","elem","PureComponent","currentPage","dispatch","quantity"],"mappings":"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","file":"assets/9.chunk.207483fc12f35815b43e.js","sourcesContent":["/**\r\n * @ComponentFor ProductListBlockViewModel\r\n */\r\nimport React from 'react';\r\nimport { styled, StyledProps, applyClassName } from '@glitz/react';\r\nimport { EpiProperty, epiPropertyValue } from '@avensia/scope-episerver';\r\nimport Products, { Layout } from 'Product/ProductCard/List';\r\nimport padStyled from 'Shared/Blocks/PaddedBlock';\r\nimport { delta, minMediumMediaQuery, pixelsToUnit, beta, large, thin, truncate, kappa } from 'Shared/Style';\r\nimport ProductListBlockViewModelType from './ProductListBlockViewModel.type';\r\nimport Link from 'Shared/Link';\r\nimport { BOX_ITEM_CLASSNAME } from 'Shared/BoxLayout';\r\nimport { Style } from '@glitz/type';\r\n\r\ntype PropType = ProductListBlockViewModelType & StyledProps;\r\n\r\nconst Header = styled.div({\r\n marginBottom: large,\r\n position: 'relative',\r\n textAlign: 'center',\r\n [minMediumMediaQuery]: {\r\n marginBottom: pixelsToUnit(10),\r\n display: 'flex',\r\n },\r\n});\r\n\r\nconst LinkStyled = styled(Link, {\r\n color: (theme) => theme.textColor,\r\n display: 'inline-block',\r\n letterSpacing: pixelsToUnit(0.5),\r\n maxWidth: '100%',\r\n textTransform: 'uppercase',\r\n position: 'static',\r\n [minMediumMediaQuery]: {\r\n maxWidth: '25%',\r\n fontSize: kappa,\r\n },\r\n ':hover': {\r\n borderBottom: {\r\n width: thin,\r\n color: (theme) => theme.textColor,\r\n style: 'solid',\r\n },\r\n },\r\n ...truncate(),\r\n});\r\n\r\nconst Title = styled(\r\n applyClassName(({ compose, ...restProps }: React.HTMLProps & StyledProps) => (\r\n

\r\n )),\r\n {\r\n fontSize: delta,\r\n fontWeight: 'bold',\r\n letterSpacing: pixelsToUnit(1.9),\r\n lineHeight: 'normal',\r\n marginBottom: pixelsToUnit(25),\r\n textAlign: 'center',\r\n textTransform: 'uppercase',\r\n [minMediumMediaQuery]: {\r\n fontSize: beta,\r\n fontWeight: 'normal',\r\n letterSpacing: pixelsToUnit(3),\r\n marginBottom: pixelsToUnit(51),\r\n },\r\n },\r\n);\r\n\r\nconst HeaderTitle = styled(Title, {\r\n marginBottom: 0,\r\n [minMediumMediaQuery]: {\r\n marginBottom: 0,\r\n },\r\n});\r\n\r\nconst HeaderTitleWrapper = styled.div({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n width: '100%',\r\n});\r\n\r\nconst LinkWrapper = styled.div({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n marginBottom: pixelsToUnit(5),\r\n [minMediumMediaQuery]: {\r\n justifyContent: 'flex-end',\r\n paddingRight: pixelsToUnit(10),\r\n marginBottom: pixelsToUnit(15),\r\n },\r\n});\r\n\r\nconst ProductsBlock = padStyled((props: PropType) => {\r\n const headerUrl = epiPropertyValue(props.block.linkUrl);\r\n const horizontalScrollMobile = epiPropertyValue(props.block.horizontalScrollMobile);\r\n const scrollStyle: Style = {\r\n overflow: 'auto',\r\n flexWrap: 'nowrap',\r\n justifyContent: 'left',\r\n padding: { xy: 15 },\r\n margin: { x: -15 },\r\n [minMediumMediaQuery]: {\r\n overflow: 'unset',\r\n flexWrap: 'unset',\r\n justifyContent: 'unset',\r\n padding: 0,\r\n margin: 0,\r\n },\r\n };\r\n return (\r\n \r\n {!!headerUrl ? (\r\n <>\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n }\r\n for={props.block.linkText}\r\n />\r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n
\r\n );\r\n});\r\n\r\nexport default ProductsBlock;\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { pixelsToUnit } from 'Shared/Style';\r\nimport { Star, StarOutline, HalfStar } from 'Shared/Icon/Star';\r\n\r\nexport enum Spacing {\r\n Normal,\r\n Medium,\r\n Wide,\r\n}\r\n\r\nexport enum Size {\r\n Micro,\r\n Tiny,\r\n Normal,\r\n Large,\r\n Huge,\r\n}\r\n\r\ntype PropType = {\r\n average: number;\r\n spacing: Spacing;\r\n size: Size;\r\n} & StyledProps;\r\n\r\nfunction getStyles(size: Size, spacing: Spacing) {\r\n let height;\r\n let width;\r\n let marginLeft;\r\n switch (size) {\r\n case Size.Micro:\r\n height = pixelsToUnit(10);\r\n width = pixelsToUnit(10);\r\n break;\r\n case Size.Tiny:\r\n height = pixelsToUnit(12.8);\r\n width = pixelsToUnit(13.8);\r\n break;\r\n case Size.Normal:\r\n height = pixelsToUnit(15);\r\n width = pixelsToUnit(15);\r\n break;\r\n case Size.Large:\r\n height = pixelsToUnit(20);\r\n width = pixelsToUnit(20);\r\n break;\r\n case Size.Huge:\r\n height = pixelsToUnit(24);\r\n width = pixelsToUnit(24);\r\n break;\r\n default:\r\n break;\r\n }\r\n switch (spacing) {\r\n case Spacing.Normal:\r\n marginLeft = pixelsToUnit(5);\r\n break;\r\n case Spacing.Medium:\r\n marginLeft = pixelsToUnit(10);\r\n break;\r\n case Spacing.Wide:\r\n marginLeft = pixelsToUnit(15);\r\n break;\r\n default:\r\n break;\r\n }\r\n return {\r\n height,\r\n width,\r\n ':not(:first-child)': {\r\n marginLeft,\r\n },\r\n };\r\n}\r\n\r\nexport default styled((props: PropType) => {\r\n const RATINGS = [1, 2, 3, 4, 5];\r\n const floatPart = Number(props.average - Math.trunc(props.average)).toFixed(1);\r\n const parsedFloat = parseFloat(floatPart);\r\n const starStyles = getStyles(props.size, props.spacing);\r\n return (\r\n \r\n {RATINGS.map((rating) => {\r\n if (rating <= props.average) {\r\n return ;\r\n } else if (rating <= Math.ceil(props.average)) {\r\n if (parsedFloat < 0.4) {\r\n return ;\r\n } else if (parsedFloat < 0.8) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n } else {\r\n return ;\r\n }\r\n })}\r\n \r\n );\r\n});\r\n\r\nconst Base = styled.div({\r\n whiteSpace: 'nowrap',\r\n});\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport {\r\n connectWithFeedback,\r\n Behavior as ButtonBehavior,\r\n Appearance as ButtonAppearance,\r\n ConnectPropType as FeedbackPropType,\r\n} from 'Shared/Button/Feedback';\r\nimport { Variant } from 'Shared/Button';\r\n\r\ntype PropType = {\r\n addToCart: () => Promise;\r\n disabled?: boolean;\r\n variant?: Variant;\r\n children?: React.ReactNode;\r\n} & StyledProps &\r\n FeedbackPropType;\r\n\r\nexport default styled(\r\n connectWithFeedback({ behavior: ButtonBehavior.KeepEnabled })(\r\n class AddToCart extends React.Component {\r\n onClick = (event: React.MouseEvent) => {\r\n this.props.feedback.push(this.props.addToCart());\r\n event.stopPropagation();\r\n event.preventDefault();\r\n };\r\n render() {\r\n const FeedbackButton = this.props.feedback.Button;\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n },\r\n ),\r\n);\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { pixelsToUnit, white, sigma, kappa, minTinyMediaQuery } from 'Shared/Style';\r\nimport { Style } from '@glitz/type';\r\n\r\ntype PropType = StyledProps & {\r\n children?: React.ReactNode;\r\n};\r\n\r\nconst Base = styled.div({\r\n fontSize: kappa,\r\n position: 'absolute',\r\n textTransform: 'uppercase',\r\n zIndex: 1,\r\n [minTinyMediaQuery]: {\r\n fontSize: sigma,\r\n },\r\n});\r\n\r\nconst Badge = (props: PropType) => {props.children};\r\nconst TriBadge = (props: PropType) => (\r\n \r\n \r\n {props.children}\r\n \r\n \r\n);\r\n\r\nexport const CampaignBadge = styled(Badge, {\r\n color: (theme) => theme.campaignTextProductcard,\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n fontWeight: 'bold',\r\n letterSpacing: pixelsToUnit(0.7),\r\n textAlign: 'left',\r\n backgroundClip: 'text',\r\n margin: { xy: '0.5rem' },\r\n WebkitBackgroundClip: 'text',\r\n textShadow: '-1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, 1px 1px 0 #fff',\r\n});\r\n\r\nconst sharedStyle: Style = {\r\n borderRadius: '50%',\r\n color: white,\r\n margin: { xy: '0.5rem' },\r\n height: pixelsToUnit(32),\r\n lineHeight: pixelsToUnit(32),\r\n textAlign: 'center',\r\n width: pixelsToUnit(32),\r\n [minTinyMediaQuery]: {\r\n height: pixelsToUnit(40),\r\n lineHeight: pixelsToUnit(40),\r\n width: pixelsToUnit(40),\r\n },\r\n};\r\n\r\nconst triStyle: Style = {\r\n height: pixelsToUnit(32),\r\n width: pixelsToUnit(32),\r\n lineHeight: pixelsToUnit(32),\r\n textAlign: 'center',\r\n};\r\n\r\nconst OuterWrapper = styled.div({\r\n position: 'relative',\r\n height: '100%',\r\n width: '100%',\r\n border: {\r\n top: {\r\n color: (theme) => theme.discountBadgeColor,\r\n width: '75px',\r\n style: 'solid',\r\n },\r\n right: {\r\n color: 'transparent',\r\n width: '75px',\r\n style: 'solid',\r\n },\r\n },\r\n});\r\n\r\nconst InnerWrapper = styled.div({\r\n position: 'absolute',\r\n top: pixelsToUnit(-75),\r\n left: pixelsToUnit(8),\r\n color: white,\r\n fontWeight: 'bold',\r\n fontSize: pixelsToUnit(16),\r\n});\r\n\r\nexport const NewBadge = styled(Badge, {\r\n backgroundColor: (theme) => theme.badgeColor,\r\n ...sharedStyle,\r\n});\r\n\r\nexport const DiscountBadge = styled(Badge, {\r\n backgroundColor: (theme) => theme.discountBadgeColor,\r\n ...sharedStyle,\r\n});\r\n\r\nexport const DiscountTriBadge = styled(TriBadge, {\r\n ...triStyle,\r\n});\r\n","export function formatTitleCase(str: string) {\r\n if (str === '') {\r\n return str;\r\n }\r\n return str.replace(/\\S*/g, function(txt) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n}\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport connect from '../connect';\r\nimport { Breakpoint } from '@avensia/scope';\r\nimport * as style from '../Style';\r\n\r\nexport const SPACING_DEFAULT = style.pixelsToUnit(25);\r\nexport const SPACING_MOBILE = style.pixelsToUnit(15);\r\nexport const BOX_CLASSNAME = 'purefun-box';\r\nexport const BOX_ITEM_CLASSNAME = 'purefun-box-item';\r\n\r\nconst fractions = {\r\n '1:2': 1 / 2,\r\n '1:3': 1 / 3,\r\n '1:4': 1 / 4,\r\n '2:3': 2 / 3,\r\n '3:4': 3 / 4,\r\n};\r\n\r\nexport type LayoutAliasType = keyof typeof fractions;\r\n\r\ntype LayoutColumnType = LayoutAliasType[] & {\r\n 0: LayoutAliasType;\r\n 1: LayoutAliasType[] & {\r\n 0: LayoutAliasType;\r\n 1: LayoutAliasType;\r\n };\r\n};\r\n\r\nexport type LayoutType = LayoutAliasType | LayoutColumnType;\r\n\r\nfunction spacingDefaulter(value: boolean | string, currentBreakpoint: number) {\r\n return value === true ? (currentBreakpoint > Breakpoint.Tiny ? SPACING_DEFAULT : SPACING_MOBILE) : value;\r\n}\r\n\r\nfunction isThin(fraction: number) {\r\n return fraction <= 1 / 3;\r\n}\r\n\r\nconst Column = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n minWidth: 0,\r\n});\r\n\r\nconst Block = styled.div({\r\n flexGrow: 1,\r\n minWidth: 0,\r\n});\r\n\r\ntype BlockEntityType = {\r\n fraction: number;\r\n element: React.ReactNode;\r\n};\r\n\r\ntype ColumnEntityType = {\r\n fraction: number;\r\n columns: BlockEntityType[];\r\n};\r\n\r\nfunction sort(entities: BlockEntityType[]) {\r\n return entities.sort((a, b) => b.fraction - a.fraction);\r\n}\r\n\r\nfunction convert(\r\n row: LayoutType[],\r\n children: React.ReactNode[],\r\n currentBreakpoint: number,\r\n allowSorting?: boolean,\r\n ): (BlockEntityType | ColumnEntityType)[] {\r\n if (currentBreakpoint > Breakpoint.Small) {\r\n return row.map(entry => {\r\n if (typeof entry === 'string') {\r\n return {\r\n fraction: fractions[entry],\r\n element: children.shift(),\r\n };\r\n }\r\n\r\n return {\r\n fraction: fractions[entry[0]],\r\n columns: entry[1].map(entry => ({\r\n fraction: fractions[entry],\r\n element: children.shift(),\r\n })),\r\n };\r\n });\r\n }\r\n\r\n // Flatten all blocks to full or half width\r\n if (currentBreakpoint > Breakpoint.Micro) {\r\n const entities = row.reduce((current, item) => {\r\n if (typeof item === 'string') {\r\n return [\r\n ...current,\r\n {\r\n fraction: isThin(fractions[item]) ? 0.5 : 1,\r\n element: children.shift(),\r\n },\r\n ];\r\n }\r\n\r\n const value = isThin(fractions[item[0]]) ? 0.5 : 1;\r\n return [\r\n ...current,\r\n ...item[1].map(() => ({\r\n fraction: value,\r\n element: children.shift(),\r\n })),\r\n ];\r\n }, []);\r\n\r\n return allowSorting ? sort(entities) : entities;\r\n }\r\n\r\n // Flatten all blocks to full width\r\n const entities = row.reduce(\r\n (current, entry) =>\r\n typeof entry === 'string'\r\n ? [\r\n ...current,\r\n {\r\n fraction: 1,\r\n element: children.shift(),\r\n },\r\n ]\r\n : [\r\n ...current,\r\n ...entry[1].map(() => ({\r\n fraction: 1,\r\n element: children.shift(),\r\n })),\r\n ],\r\n [],\r\n );\r\n\r\n return allowSorting ? sort(entities) : entities;\r\n}\r\n\r\nfunction isColumn(entity: BlockEntityType | ColumnEntityType): entity is ColumnEntityType {\r\n return 'columns' in entity;\r\n}\r\n\r\nfunction wrap(spacingBetweenBlocks: boolean | string, currentBreakpoint: number) {\r\n const spacing = spacingDefaulter(spacingBetweenBlocks, currentBreakpoint);\r\n return (entity: BlockEntityType | ColumnEntityType, index: number): React.ReactNode => {\r\n return isColumn(entity) ? (\r\n \r\n {entity.columns.map(wrap(spacingBetweenBlocks, currentBreakpoint))}\r\n \r\n ) : (\r\n \r\n {entity.element}\r\n \r\n );\r\n };\r\n}\r\n\r\ntype RequiredPropType = {\r\n layout: LayoutType[];\r\n spacingBetweenBlocks?: boolean | string;\r\n allowSorting?: boolean;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n};\r\n\r\ntype ConnectStateType = {\r\n currentBreakpoint: number;\r\n};\r\n\r\ntype PropType = StyledProps & RequiredPropType & ConnectStateType;\r\n\r\nclass BoxLayout extends React.Component {\r\n render() {\r\n const children = React.Children.toArray(this.props.children);\r\n const entities = convert(this.props.layout, children, this.props.currentBreakpoint, this.props.allowSorting);\r\n const spacing = spacingDefaulter(this.props.spacingBetweenBlocks, this.props.currentBreakpoint);\r\n return (\r\n Breakpoint.Small && {\r\n flexWrap: 'nowrap',\r\n }),\r\n }}\r\n className={BOX_CLASSNAME}\r\n >\r\n {entities.map(wrap(this.props.spacingBetweenBlocks, this.props.currentBreakpoint))}\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\n\r\nexport default styled(\r\n connect(\r\n (state): ConnectStateType => ({\r\n currentBreakpoint: state.currentBreakpoint,\r\n }),\r\n )(BoxLayout),\r\n);\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { theta, medium, large, micro, pixelsToUnit } from 'Shared/Style';\r\nimport { ValuePropType, ViewportPropType } from './shared';\r\nimport { StyleOrStyleArray } from '@glitz/type';\r\n\r\ntype PropType = {\r\n bulletPoints: string[];\r\n bulletLimit?: boolean;\r\n isMobile?: boolean;\r\n listItemCss?: StyleOrStyleArray;\r\n} & ViewportPropType &\r\n ValuePropType;\r\n\r\nconst ListStyleType = styled.div({\r\n display: 'inline-block',\r\n width: pixelsToUnit(8),\r\n height: pixelsToUnit(8),\r\n backgroundColor: (Theme) => Theme.bulletpoints,\r\n borderRadius: '50%',\r\n marginRight: medium,\r\n verticalAlign: 'middle',\r\n});\r\n\r\nconst ListStyleMobileType = styled(ListStyleType, {\r\n marginRight: micro,\r\n width: pixelsToUnit(6),\r\n height: pixelsToUnit(6),\r\n});\r\n\r\nconst Li = styled.li({\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n});\r\n\r\nconst Value = styled.span({\r\n textAlign: 'left',\r\n verticalAlign: 'middle',\r\n});\r\n\r\nconst UspBullets = styled(\r\n (props: PropType & StyledProps) => {\r\n let Sliced: string[] = props.bulletPoints;\r\n if (props.bulletLimit) {\r\n Sliced = props.bulletPoints.slice(0, 4);\r\n }\r\n const UlComponent = props.isCompact ? MobileUl : DesktopUl;\r\n return props.hasValue ? (\r\n \r\n {Sliced.map((bulletPoint, index) => (\r\n
  • \r\n {props.isMobile ? : }\r\n {bulletPoint}\r\n
  • \r\n ))}\r\n
    \r\n ) : null;\r\n },\r\n {\r\n listStyleType: 'none',\r\n textAlign: 'left',\r\n },\r\n);\r\n\r\nexport default UspBullets;\r\n\r\nconst MobileUl = styled.ul({\r\n minWidth: '138px',\r\n maxWidth: '308px',\r\n});\r\n\r\nconst DesktopUl = styled.ul({\r\n fontSize: theta,\r\n margin: {\r\n y: large,\r\n x: 0,\r\n },\r\n minWidth: 'initial',\r\n maxWidth: 'initial',\r\n});\r\n","import factory from './icon';\r\nimport Svg from './glyphs/remove-plain.svg';\r\n\r\nexport default factory(Svg);\r\n","import { epiPropertyValue } from '@avensia/scope-episerver';\r\n\r\n// This function processes a variation name so it'll display nicer.\r\nexport function prepareVariationName(name: Scope.Property | string): string {\r\n if (typeof name !== 'string') {\r\n name = epiPropertyValue(name) || '';\r\n }\r\n\r\n // don't linebreak between an amount and a single-word (presumed) unit\r\n name = name.replace(/\\d \\w*$/, m => m.replace(' ', String.fromCharCode(160))); // replacing with a non-breaking space\r\n\r\n return name;\r\n}\r\n","import { styled } from '@glitz/react';\r\nimport factory from './icon';\r\nimport Svg from './glyphs/md-checkmark.svg';\r\n\r\nexport const CheckIcon = factory(Svg);\r\n\r\nexport const Check = styled(CheckIcon, {\r\n verticalAlign: 'text-bottom',\r\n});\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { StyleOrStyleArray, Style } from '@glitz/type';\r\nimport Link from 'Shared/Link';\r\nimport { translate } from '@avensia/scope';\r\nimport { epiPropertyValue } from '@avensia/scope-episerver';\r\nimport EsalesProductForListType from '../../../Esales/Models/EsalesProductForList.type';\r\nimport Image, { Ratio as ImageRatio, Preset as ImagePreset } from 'Shared/Image/Ratio';\r\nimport UspBullets from './../ProductDetails/UspBullets';\r\nimport {\r\n gamma,\r\n theta,\r\n transition,\r\n pixelsToUnit,\r\n truncate,\r\n small,\r\n minMediumMediaQuery,\r\n zeta,\r\n sigma,\r\n} from 'Shared/Style';\r\nimport connect from 'Shared/connect';\r\nimport Button, { Appearance as ButtonAppearance, Variant as ButtonVariant } from 'Shared/Button';\r\nimport Icon from 'Shared/Icon/Cart';\r\nimport { formatTitleCase } from 'Shared/string-format';\r\nimport AddToCart from 'Product/ProductAddToCart';\r\nimport AverageRatings, { Spacing, Size } from 'Product/ProductDetails/AverageRating';\r\nimport AverageRatingsBlack from 'Product/ProductDetails/AverageRatingBlack';\r\nimport Price, { Type as PriceType } from 'Pricing/Price';\r\nimport { NewBadge, DiscountBadge, DiscountTriBadge } from './Badge';\r\nimport { prepareVariationName } from 'Shared/variation-helper';\r\nimport { Check } from 'Shared/Icon/Check-Thin';\r\nimport Cross from 'Shared/Icon/RemovePlain';\r\nimport { Theme } from 'Shared/Theming';\r\n\r\ntype RequiredPropType = {\r\n product: EsalesProductForListType;\r\n addToCart: () => Promise;\r\n};\r\n\r\ntype StateType = {\r\n bulletPointsVisible: boolean;\r\n};\r\n\r\ntype ConnectStateType = {\r\n theme: string;\r\n};\r\n\r\ntype PropType = RequiredPropType & StyledProps & ConnectStateType;\r\n\r\nclass ProductCard extends React.Component {\r\n state: StateType = {\r\n bulletPointsVisible: false,\r\n };\r\n\r\n toggleBulletPointsTrue = (event: React.MouseEvent) => {\r\n this.setState({ bulletPointsVisible: true });\r\n event.stopPropagation();\r\n event.preventDefault();\r\n };\r\n\r\n toggleBulletPointsFalse = (event: React.MouseEvent) => {\r\n this.setState({ bulletPointsVisible: false });\r\n event.stopPropagation();\r\n event.preventDefault();\r\n };\r\n\r\n render() {\r\n const {\r\n averageRating: productRatings = 0,\r\n brand = '',\r\n imageUrls,\r\n price,\r\n hasMultipleVariants = false,\r\n hasDiscount = false,\r\n hasPromotion = false,\r\n isNew: isProductNew = false,\r\n variation: { displayName },\r\n url: productUrl = '',\r\n inStock,\r\n ticket: productTicket,\r\n displayTagDesigner,\r\n displayHighlightImage,\r\n whiteHighlightText,\r\n highlightImageUrl,\r\n hideProductInfo,\r\n bulletPoints = [],\r\n promotions,\r\n } = this.props.product;\r\n\r\n const { bulletPointsVisible } = this.state;\r\n\r\n const images = imageUrls || [];\r\n const productImage = images.length > 0 ? images[0] : '';\r\n const productBrand = brand ? formatTitleCase(brand.trim()) : '';\r\n const productName = formatTitleCase(prepareVariationName(epiPropertyValue(displayName)).trim());\r\n const { current: currentPrice, original: originalPrice, currency, discountPercentage } = price;\r\n const isPriceDiscounted = currentPrice < originalPrice;\r\n const currentTheme = this.props.theme;\r\n const imageHoverStyle: Style = {\r\n height: '110px',\r\n };\r\n\r\n const imageNoHoverStyle: Style = {\r\n height: '200px',\r\n };\r\n\r\n const imageWithPaddingStyle: Style = {\r\n paddingTop: pixelsToUnit(10),\r\n };\r\n\r\n const actionButtonText =\r\n hasMultipleVariants || displayTagDesigner\r\n ? translate('/ProductListing/ViewProduct')\r\n : inStock\r\n ? this.props.theme === Theme.DoggieDefault\r\n ? translate('/Cart/BuyDoggie')\r\n : translate('/Cart/BuyDesktop')\r\n : translate('/Cart/OutOfStock');\r\n\r\n const PromotionNode = (\r\n \r\n {translate('/Product/Badge/Campaign')}\r\n {promotions.map((promotion, i) => {\r\n if (i < 4) {\r\n return (\r\n \r\n {promotion.promotionName}\r\n \r\n );\r\n }\r\n })}\r\n \r\n );\r\n\r\n return (\r\n \r\n {hasPromotion && PromotionNode}\r\n \r\n \r\n {displayHighlightImage && (\r\n \r\n \r\n \r\n )}\r\n \r\n {hasDiscount ? (\r\n !currentTheme.startsWith('dog') &&\r\n !currentTheme.startsWith('cli') &&\r\n !currentTheme.startsWith('lac') ? (\r\n {`-${discountPercentage}%`}\r\n ) : (\r\n {`-${discountPercentage}%`}\r\n )\r\n ) : (\r\n isProductNew && {`${translate('/Product/Badge/New')}!`}\r\n )}\r\n {!displayHighlightImage ? (\r\n 0 ? imageHoverStyle : imageNoHoverStyle}\r\n imageStyle={imageWithPaddingStyle}\r\n lazy\r\n />\r\n ) : (\r\n
    \r\n )}\r\n\r\n \r\n {!!productRatings ? (\r\n !currentTheme.startsWith('dog') &&\r\n !currentTheme.startsWith('cli') &&\r\n !currentTheme.startsWith('lac') ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \r\n )}\r\n \r\n {productBrand && {productBrand}}\r\n \r\n {productName}\r\n \r\n {!displayHighlightImage && bulletPointsVisible && (\r\n 0}\r\n bulletPoints={bulletPoints}\r\n listItemCss={bulletListItemStyle}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {isPriceDiscounted && }\r\n \r\n \r\n {inStock ? (\r\n \r\n \r\n {translate('/Product/InStock')}\r\n \r\n ) : (\r\n \r\n {translate('/Product/OutOfStock')}\r\n \r\n \r\n )}\r\n \r\n \r\n {inStock && }\r\n {actionButtonText}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default styled(\r\n connect(\r\n (state): ConnectStateType => ({\r\n theme: state.currentTheme,\r\n }),\r\n )(ProductCard),\r\n);\r\n\r\ntype ActionPropType = {\r\n hasVariants: boolean;\r\n productUrl: string;\r\n isInStock: boolean;\r\n children: React.ReactNode;\r\n addCart: () => Promise;\r\n displayTagDesigner: boolean;\r\n};\r\n\r\nconst Action = styled((props: ActionPropType & StyledProps) => {\r\n return props.hasVariants || props.displayTagDesigner ? (\r\n \r\n {props.children}\r\n \r\n ) : (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\n\r\nconst Base = styled.div({\r\n height: '400px',\r\n boxShadow: (theme) => `0 0.2rem 1rem 0 rgba(${theme.shadowColor}, 0.2)`,\r\n display: 'flex',\r\n backgroundColor: (theme) => theme.cardBackgroundColor,\r\n flexDirection: 'column',\r\n position: 'relative',\r\n textAlign: 'left',\r\n marginBottom: '2rem',\r\n});\r\n\r\nconst Wrapper = styled.div({\r\n position: 'relative',\r\n});\r\n\r\nconst ExtensionWrapper = styled.div({\r\n position: 'relative',\r\n height: '400px',\r\n overflow: 'hidden',\r\n backgroundColor: (theme) => theme.cardBackgroundColor,\r\n borderRadius: '0.15rem',\r\n width: '100%',\r\n zIndex: 2,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n boxShadow: (theme) => `0 0 0.5rem rgba(${theme.shadowColor}, 0)`,\r\n transform: 'translateZ(0)',\r\n willChange: 'transform',\r\n ...transition({\r\n property: ['color', 'background', 'opacity', 'box-shadow', 'transform'],\r\n duration: '0.2s',\r\n timingFunction: 'ease-out',\r\n }),\r\n ':hover': {\r\n backgroundColor: '#fff',\r\n boxShadow: (theme) => `0 0.3rem 1rem 0 rgba(${theme.shadowColor}, 0.3)`,\r\n transform: 'translateZ(0) scale(1.02)',\r\n zIndex: 3,\r\n },\r\n});\r\n\r\nconst ActionStyled = styled(Action, {\r\n backgroundColor: (theme) => theme.buyButtonProductcardDesktop,\r\n});\r\n\r\nconst StockPlaceholder = styled.div({\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst StockStatus = styled.span({\r\n fontSize: pixelsToUnit(11),\r\n letterSpacing: pixelsToUnit(0.3),\r\n lineHeight: pixelsToUnit(10),\r\n});\r\n\r\nconst CheckIcon = styled(Check, {\r\n marginRight: pixelsToUnit(5),\r\n height: '1rem',\r\n color: (theme) => theme.buttonTextColor,\r\n});\r\n\r\nconst Body = styled(Link, {\r\n color: (theme) => theme.textColor,\r\n marginBottom: pixelsToUnit(10),\r\n});\r\n\r\nconst Brand = styled.div({\r\n fontSize: sigma,\r\n marginBottom: small,\r\n ...truncate(),\r\n});\r\n\r\nconst PromotionLink = styled(Link, {\r\n marginBottom: pixelsToUnit(10),\r\n cursor: 'pointer',\r\n});\r\n\r\nconst BrandPlaceholder = styled.div({\r\n height: small,\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n flex: {\r\n basis: pixelsToUnit(18),\r\n shrink: 0,\r\n },\r\n lineHeight: 'normal',\r\n marginTop: pixelsToUnit(10),\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst Ratings = styled(AverageRatings, {\r\n lineHeight: pixelsToUnit(18),\r\n});\r\n\r\nconst RatingsNone = styled(Ratings, {\r\n opacity: 0.3,\r\n});\r\n\r\nconst RatingsPlaceholder = styled.div({\r\n paddingLeft: pixelsToUnit(5),\r\n marginTop: pixelsToUnit(10),\r\n marginBottom: pixelsToUnit(8),\r\n});\r\n\r\nconst NameWrapper = styled.div({\r\n height: '2.4rem',\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst Name = styled.div({\r\n position: 'relative',\r\n flexBasis: pixelsToUnit(34),\r\n textTransform: 'uppercase',\r\n fontWeight: 'bold',\r\n flexShrink: 0,\r\n fontSize: zeta,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n display: '-webkit-box',\r\n WebkitLineClamp: 2,\r\n WebkitBoxOrient: 'vertical',\r\n letterSpacing: pixelsToUnit(0.2),\r\n lineHeight: 'normal',\r\n marginTop: pixelsToUnit(3),\r\n [minMediumMediaQuery]: {\r\n flexBasis: pixelsToUnit(46),\r\n fontSize: sigma,\r\n marginTop: pixelsToUnit(3),\r\n },\r\n});\r\n\r\nconst bulletListItemStyle: StyleOrStyleArray = {\r\n fontSize: '0.7rem',\r\n marginBottom: 0,\r\n marginLeft: '0.2rem',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n [minMediumMediaQuery]: {\r\n fontSize: '0.8rem',\r\n },\r\n};\r\n\r\nconst Prices = styled.div({\r\n display: 'flex',\r\n flexBasis: pixelsToUnit(20),\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n flexShrink: 0,\r\n justifyContent: 'flex-start',\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n margin: {\r\n top: pixelsToUnit(8),\r\n bottom: pixelsToUnit(8),\r\n },\r\n});\r\n\r\nconst CurrentPrice = styled(Price, {\r\n lineHeight: '1rem',\r\n fontSize: gamma,\r\n color: (theme) => theme.textColor,\r\n marginRight: small,\r\n});\r\n\r\nconst OldPrice = styled(Price, {\r\n paddingTop: '0.15rem',\r\n fontSize: theta,\r\n lineHeight: '0.8rem',\r\n});\r\n\r\nconst UspBulletsStyled = styled(UspBullets, {\r\n ...transition({ property: 'all', duration: 150 }),\r\n padding: {\r\n x: pixelsToUnit(5),\r\n bottom: pixelsToUnit(5),\r\n },\r\n margin: {\r\n xy: 0,\r\n },\r\n});\r\n\r\nconst CartIcon = styled(Icon, {\r\n width: pixelsToUnit(19.3),\r\n height: pixelsToUnit(18),\r\n [minMediumMediaQuery]: {\r\n marginRight: pixelsToUnit(10),\r\n },\r\n});\r\n\r\nconst CrossIcon = styled(Cross, {\r\n marginLeft: pixelsToUnit(5),\r\n height: '1rem',\r\n color: 'red',\r\n});\r\n\r\nconst actionStyle = styled({\r\n fontSize: theta,\r\n borderRadius: 0,\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n ...transition({ property: ['opacity', 'background'], duration: '1s' }),\r\n});\r\n\r\nconst ViewProduct = actionStyle(Button);\r\nconst AddCart = actionStyle(AddToCart);\r\n\r\nconst ImageStyled = styled(Image, {\r\n mixBlendMode: 'multiply',\r\n ...transition({ property: 'all', duration: 200 }),\r\n});\r\n\r\nconst HighlightImage = styled.div({\r\n color: (theme) => theme.campaignBackgroundColor,\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n zIndex: 3,\r\n height: '100%',\r\n width: '100%',\r\n});\r\n\r\nconst LowerWrapper = styled.div({\r\n backgroundColor: (theme) => theme.cardBackgroundColor,\r\n position: 'absolute',\r\n bottom: 0,\r\n width: '100%',\r\n height: '95px',\r\n});\r\n\r\nexport const PromotionItemTitle = styled.div({\r\n color: 'white',\r\n backgroundColor: (theme) => theme.campaignTextProductcard,\r\n maxWidth: pixelsToUnit(90),\r\n minWidth: pixelsToUnit(60),\r\n width: '100%',\r\n fontSize: pixelsToUnit(8),\r\n marginBottom: pixelsToUnit(1),\r\n textTransform: 'uppercase',\r\n padding: { xy: pixelsToUnit(2) },\r\n textAlign: 'center',\r\n});\r\nexport const PromotionTitle = styled(PromotionItemTitle, {\r\n cursor: 'default',\r\n});\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { pixelsToUnit } from 'Shared/Style';\r\nimport { StarBlack, StarOutlineBlack, HalfStarBlack } from 'Shared/Icon/Star-Black';\r\n\r\nexport enum Spacing {\r\n Normal,\r\n Medium,\r\n Wide,\r\n}\r\n\r\nexport enum Size {\r\n Micro,\r\n Tiny,\r\n Normal,\r\n Large,\r\n Huge,\r\n}\r\n\r\ntype PropType = {\r\n average: number;\r\n spacing: Spacing;\r\n size: Size;\r\n} & StyledProps;\r\n\r\nfunction getStyles(size: Size, spacing: Spacing) {\r\n let height;\r\n let width;\r\n let marginLeft;\r\n switch (size) {\r\n case Size.Micro:\r\n height = pixelsToUnit(10);\r\n width = pixelsToUnit(10);\r\n break;\r\n case Size.Tiny:\r\n height = pixelsToUnit(12.8);\r\n width = pixelsToUnit(13.8);\r\n break;\r\n case Size.Normal:\r\n height = pixelsToUnit(15);\r\n width = pixelsToUnit(15);\r\n break;\r\n case Size.Large:\r\n height = pixelsToUnit(20);\r\n width = pixelsToUnit(20);\r\n break;\r\n case Size.Huge:\r\n height = pixelsToUnit(24);\r\n width = pixelsToUnit(24);\r\n break;\r\n default:\r\n break;\r\n }\r\n switch (spacing) {\r\n case Spacing.Normal:\r\n marginLeft = pixelsToUnit(5);\r\n break;\r\n case Spacing.Medium:\r\n marginLeft = pixelsToUnit(10);\r\n break;\r\n case Spacing.Wide:\r\n marginLeft = pixelsToUnit(15);\r\n break;\r\n default:\r\n break;\r\n }\r\n return {\r\n height,\r\n width,\r\n ':not(:first-child)': {\r\n marginLeft,\r\n },\r\n };\r\n}\r\n\r\nexport default styled((props: PropType) => {\r\n const RATINGS = [1, 2, 3, 4, 5];\r\n const floatPart = Number(props.average - Math.trunc(props.average)).toFixed(1);\r\n const parsedFloat = parseFloat(floatPart);\r\n const starStyles = getStyles(props.size, props.spacing);\r\n return (\r\n \r\n {RATINGS.map((rating) => {\r\n if (rating <= props.average) {\r\n return ;\r\n } else if (rating <= Math.ceil(props.average)) {\r\n if (parsedFloat < 0.4) {\r\n return ;\r\n } else if (parsedFloat < 0.8) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n } else {\r\n return ;\r\n }\r\n })}\r\n \r\n );\r\n});\r\n\r\nconst Base = styled.div({\r\n whiteSpace: 'nowrap',\r\n});\r\n","import factory from './icon';\r\nimport StarSvg from './glyphs/star-black.svg';\r\nimport StarOutlineSvg from './glyphs/star-outline-black.svg';\r\nimport StarHalfSvg from './glyphs/star-half-black.svg';\r\n\r\nexport const StarBlack = factory(StarSvg);\r\nexport const StarOutlineBlack = factory(StarOutlineSvg);\r\nexport const HalfStarBlack = factory(StarHalfSvg);\r\n","var React = require('react');\n\nfunction StarBlack (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop-PDP-Copy\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\",\"transform\":\"translate(-774 -425)\"},React.createElement(\"g\",{\"id\":\"Product-Info\",\"transform\":\"translate(744 208)\",\"fill\":\"#000\"},React.createElement(\"g\",{\"id\":\"Recensioner\",\"transform\":\"translate(30 217)\"},React.createElement(\"g\",{\"id\":\"star60\"},React.createElement(\"path\",{\"d\":\"M19.968 7.374c0-.293-.223-.476-.67-.547l-6.015-.87L10.587.54C10.436.214 10.24.05 10 .05s-.435.163-.587.489L6.717 5.958l-6.014.869c-.448.071-.671.254-.671.547 0 .167.1.358.3.572l4.36 4.215-1.03 5.954c-.016.111-.024.19-.024.238a.7.7 0 00.126.423c.084.115.21.173.377.173.144 0 .304-.048.48-.143L10 15.996l5.38 2.81a.974.974 0 00.479.143c.16 0 .282-.058.366-.173a.7.7 0 00.125-.423 1.79 1.79 0 00-.012-.238l-1.03-5.954 4.349-4.215c.208-.206.311-.397.311-.572z\",\"id\":\"Shape\",\"fill\":\"#000\"}))))));\n}\n\nStarBlack.defaultProps = {\"width\":\"20\",\"height\":\"19\",\"viewBox\":\"0 0 20 19\"};\n\nmodule.exports = StarBlack;\n\nStarBlack.default = StarBlack;\n","var React = require('react');\n\nfunction StarOutlineBlack (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop-PDP-Copy\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"currentColor\",\"fillRule\":\"currentColor\",\"transform\":\"translate(-774 -425)\",\"opacity\":\".446\"},React.createElement(\"g\",{\"id\":\"Product-Info\",\"transform\":\"translate(744 208)\",\"fill\":\"#000\"},React.createElement(\"g\",{\"id\":\"Recensioner\",\"transform\":\"translate(30 217)\"},React.createElement(\"g\",{\"id\":\"star61\"},React.createElement(\"path\",{\"d\":\"M19.968 7.374c0-.293-.223-.476-.67-.547l-6.015-.87L10.587.54C10.436.214 10.24.05 10 .05s-.435.163-.587.489L6.717 5.958l-6.014.869c-.448.071-.671.254-.671.547 0 .167.1.358.3.572l4.36 4.215-1.03 5.954c-.016.111-.024.19-.024.238a.7.7 0 00.126.423c.084.115.21.173.377.173.144 0 .304-.048.48-.143L10 15.996l5.38 2.81a.974.974 0 00.479.143c.328 0 .491-.198.491-.595 0-.104-.004-.183-.012-.239l-1.03-5.953 4.35-4.216c.207-.206.31-.397.31-.572zm-6.314 4.252l.863 5.013L10 14.269l-4.529 2.37.875-5.013-3.667-3.537 5.057-.738L10 2.8l2.264 4.55 5.057.738-3.667 3.537z\",\"id\":\"Shape\"}))))));\n}\n\nStarOutlineBlack.defaultProps = {\"width\":\"20\",\"height\":\"19\",\"viewBox\":\"0 0 20 19\"};\n\nmodule.exports = StarOutlineBlack;\n\nStarOutlineBlack.default = StarOutlineBlack;\n","var React = require('react');\n\nfunction StarHalfBlack (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"fillRule\":\"evenodd\"},[React.createElement(\"path\",{\"d\":\"M19.968 7.319c0-.292-.223-.473-.67-.544l-6.015-.862L10.587.536C10.436.213 10.24.05 10 .05s-.435.162-.587.485L6.717 5.913l-6.014.862c-.448.071-.671.252-.671.544 0 .166.1.355.3.567l4.36 4.184-1.03 5.909c-.016.11-.024.19-.024.236a.69.69 0 00.126.42c.084.114.21.171.377.171.144 0 .304-.047.48-.141L10 15.875l5.38 2.79a.98.98 0 00.479.141c.328 0 .491-.196.491-.59a1.75 1.75 0 00-.012-.237l-1.03-5.909 4.35-4.183c.207-.205.31-.395.31-.568zm-6.314 4.22l.863 4.975L10 14.162l-4.529 2.352.875-4.976-3.667-3.51 5.057-.733L10 2.781l2.264 4.514 5.057.733-3.667 3.51z\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M10 .051c-.24 0-.435.163-.587.489L6.717 5.958l-6.014.869c-.448.071-.671.254-.671.547 0 .167.1.358.3.572l4.36 4.215-1.03 5.954c-.016.111-.024.19-.024.238a.7.7 0 00.126.423c.084.115.21.173.377.173.144 0 .304-.048.48-.143L10 15.87S10.24.051 10 .051z\",\"key\":1})]));\n}\n\nStarHalfBlack.defaultProps = {\"width\":\"20\",\"height\":\"19\",\"viewBox\":\"0 0 20 19\"};\n\nmodule.exports = StarHalfBlack;\n\nStarHalfBlack.default = StarHalfBlack;\n","var React = require('react');\n\nfunction MdCheckmark (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"d\":\"M186.301 339.893L96 249.461l-32 30.507L186.301 402 448 140.506 416 110z\",\"fill\":\"#13a970\"}));\n}\n\nMdCheckmark.defaultProps = {\"viewBox\":\"0 0 512 512\"};\n\nmodule.exports = MdCheckmark;\n\nMdCheckmark.default = MdCheckmark;\n","var React = require('react');\n\nfunction RemovePlain (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Page-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\",\"strokeLinecap\":\"square\"},React.createElement(\"g\",{\"id\":\"Group\",\"transform\":\"translate(2 2)\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\"},[React.createElement(\"path\",{\"d\":\"M10.607 0L0 10.607\",\"id\":\"Line\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M10.607 10.607L0 0\",\"id\":\"Line-Copy\",\"key\":1})])));\n}\n\nRemovePlain.defaultProps = {\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\"};\n\nmodule.exports = RemovePlain;\n\nRemovePlain.default = RemovePlain;\n","import factory from './icon';\r\nimport Svg from './glyphs/information-icon.svg';\r\n\r\nexport default factory(Svg);\r\n","var React = require('react');\n\nfunction InformationIcon (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"style\":{\"textIndent\":\"0\",\"textAlign\":\"start\",\"lineHeight\":\"normal\",\"textTransform\":\"none\",\"blockProgression\":\"tb\",\"-inkscapeFontSpecification\":\"Bitstream Vera Sans\"},\"d\":\"M16 4c-2.197 0-4 1.803-4 4s1.803 4 4 4 4-1.803 4-4-1.803-4-4-4zm0 2c1.116 0 2 .884 2 2s-.884 2-2 2-2-.884-2-2 .884-2 2-2zm-5 7v5h2v5h-2v5h10v-5h-2V13h-8zm2 2h4v10h2v1h-6v-1h2v-9h-2v-1z\",\"overflow\":\"visible\",\"fontFamily\":\"Bitstream Vera Sans\"}));\n}\n\nInformationIcon.defaultProps = {\"viewBox\":\"0 0 32 32\"};\n\nmodule.exports = InformationIcon;\n\nInformationIcon.default = InformationIcon;\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { isIE, Breakpoint } from '@avensia/scope';\r\nimport { epiPropertyValue } from '@avensia/scope-episerver';\r\nimport connect from 'Shared/connect';\r\nimport Card from './ProductCard';\r\nimport CardMobile from './ProductCardMobile';\r\nimport { addToCart } from 'Cart/action-creators';\r\nimport ProductCardType from '../../../Esales/Models/EsalesProductForList.type';\r\nimport {\r\n large,\r\n minMediumMediaQuery,\r\n minHugeMediaQuery,\r\n pixelsToUnit,\r\n minLargeMediaQuery,\r\n minTinyMediaQuery,\r\n minSmallMediaQuery,\r\n minMicroMediaQuery,\r\n} from 'Shared/Style';\r\nimport CurerntPageIsCheckout from 'Checkout/Pages/Checkout/current-page-is-checkout';\r\nimport { addCartItem } from 'Checkout//action-creators';\r\n\r\nexport enum Layout {\r\n Page,\r\n Block,\r\n}\r\n\r\ntype RequiredPropType = {\r\n products: ProductCardType[];\r\n layout?: Layout;\r\n margin?: boolean;\r\n noPlaceholders?: boolean;\r\n};\r\n\r\ntype ConnectStateType = {\r\n isCheckoutPage: boolean;\r\n currentBreakpoint: number;\r\n};\r\n\r\ntype ConnectActionType = {\r\n addToCart: (code: string, quantity: number, ticket: string) => Promise;\r\n addCartItem: (code: string, quantity: number, ticket: string) => any;\r\n};\r\n\r\ntype PropType = RequiredPropType & ConnectStateType & ConnectActionType;\r\n\r\nconst MOBILE_CARD_WIDTH = 145;\r\nconst Base = styled.div({\r\n display: 'flex',\r\n flexFlow: 'row wrap',\r\n justifyContent: 'space-around',\r\n [minTinyMediaQuery]: {\r\n justifyContent: 'space-between',\r\n },\r\n});\r\n\r\nconst PAGE_MICRO_CARDS_PER_ROW = 2;\r\nconst PAGE_TINY_CARDS_PER_ROW = 3;\r\nconst PAGE_SMALL_CARDS_PER_ROW = 4;\r\nconst PAGE_MEDIUM_CARDS_PER_ROW = 5;\r\nconst PAGE_LARGE_CARDS_PER_ROW = 6;\r\nconst PAGE_TINY_GUTTER = 4;\r\nconst PAGE_SMALL_GUTTER = 6;\r\nconst PAGE_MEDIUM_GUTTER = 20;\r\nconst PAGE_LARGE_GUTTER = 12;\r\nconst pageStyled = styled({\r\n marginRight: 0,\r\n marginBottom: large,\r\n flexBasis: '100%',\r\n [minMicroMediaQuery]: {\r\n flexBasis: `calc(100% / ${PAGE_MICRO_CARDS_PER_ROW} - ${PAGE_SMALL_GUTTER}px)`,\r\n },\r\n [minTinyMediaQuery]: {\r\n flexBasis: `calc(100% / ${PAGE_TINY_CARDS_PER_ROW} - ${PAGE_TINY_GUTTER}px)`,\r\n },\r\n [minSmallMediaQuery]: {\r\n flexBasis: `calc(100% / ${PAGE_SMALL_CARDS_PER_ROW} - ${PAGE_SMALL_GUTTER}px)`,\r\n },\r\n [minMediumMediaQuery]: {\r\n flexBasis: `calc(100% / ${PAGE_MEDIUM_CARDS_PER_ROW} - ${PAGE_MEDIUM_GUTTER}px)`,\r\n },\r\n [minLargeMediaQuery]: {\r\n flexBasis: `calc(100% / ${PAGE_LARGE_CARDS_PER_ROW} - ${PAGE_LARGE_GUTTER}px)`,\r\n },\r\n [minHugeMediaQuery]: {\r\n flexBasis: `calc(100% / ${PAGE_LARGE_CARDS_PER_ROW} - ${PAGE_LARGE_GUTTER}px)`,\r\n },\r\n});\r\n\r\nconst BLOCK_MICRO_CARDS_PER_ROW = 2;\r\nconst BLOCK_TINY_CARDS_PER_ROW = 3;\r\nconst BLOCK_SMALL_CARDS_PER_ROW = 4;\r\nconst BLOCK_MEDIUM_CARDS_PER_ROW = 5;\r\nconst BLOCK_LARGE_CARDS_PER_ROW = 6;\r\nconst BLOCK_TINY_GUTTER = 3;\r\nconst BLOCK_SMALL_GUTTER = 6;\r\nconst BLOCK_MEDIUM_GUTTER = 15;\r\nconst BLOCK_LARGE_GUTTER = 20;\r\n\r\nconst blockStyled = styled({\r\n marginRight: 0,\r\n flexBasis: '100%',\r\n [minMicroMediaQuery]: {\r\n flexBasis: `calc(100% / ${BLOCK_MICRO_CARDS_PER_ROW} - ${BLOCK_SMALL_GUTTER}px)`,\r\n },\r\n [minTinyMediaQuery]: {\r\n flexBasis: `calc(100% / ${BLOCK_TINY_CARDS_PER_ROW} - ${BLOCK_TINY_GUTTER}px)`,\r\n },\r\n [minSmallMediaQuery]: {\r\n flexBasis: `calc(100% / ${BLOCK_SMALL_CARDS_PER_ROW} - ${BLOCK_SMALL_GUTTER}px)`,\r\n },\r\n [minMediumMediaQuery]: {\r\n flexBasis: `calc(100% / ${BLOCK_MEDIUM_CARDS_PER_ROW} - ${BLOCK_MEDIUM_GUTTER}px)`,\r\n flexGrow: 1,\r\n margin: {\r\n right: pixelsToUnit(BLOCK_MEDIUM_GUTTER),\r\n },\r\n },\r\n [minLargeMediaQuery]: {\r\n flexBasis: `calc(100% / ${BLOCK_LARGE_CARDS_PER_ROW} - ${BLOCK_LARGE_GUTTER}px)`,\r\n marginRight: pixelsToUnit(5),\r\n marginLeft: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst baseStyled = styled({\r\n flexBasis: pixelsToUnit(MOBILE_CARD_WIDTH),\r\n flexGrow: 0,\r\n flexShrink: 0,\r\n minWidth: 0,\r\n});\r\n\r\nconst BaseCard = baseStyled(Card);\r\nconst BaseCardMobile = baseStyled(CardMobile);\r\nconst PageCard = pageStyled(BaseCard);\r\nconst PageCardMobile = pageStyled(BaseCardMobile);\r\nconst BlockCard = blockStyled(BaseCard);\r\nconst BlockCardMobile = blockStyled(BaseCardMobile);\r\n\r\nconst BasePlaceholder = baseStyled(styled.Div, {\r\n margin: {\r\n xy: 0,\r\n },\r\n padding: {\r\n xy: 0,\r\n },\r\n});\r\nconst PagePlaceholder = pageStyled(BasePlaceholder);\r\nconst BlockPlaceholder = blockStyled(BasePlaceholder);\r\n\r\nclass List extends React.PureComponent {\r\n addToCart = async (code: string, ticket: string) => {\r\n try {\r\n const result = this.props.isCheckoutPage\r\n ? this.props.addCartItem(code, 1, ticket)\r\n : await this.props.addToCart(code, 1, ticket);\r\n return result;\r\n } catch (e) {\r\n console.error('Add item to cart error', e);\r\n return Promise.reject(null);\r\n }\r\n };\r\n\r\n render() {\r\n const isMobile = this.props.currentBreakpoint < Breakpoint.Medium;\r\n const ProductCard = this.props.layout === Layout.Block ? BlockCard : PageCard;\r\n const ProductCardMobile = this.props.layout === Layout.Block ? BlockCardMobile : PageCardMobile;\r\n const Placeholder = this.props.layout === Layout.Block ? BlockPlaceholder : PagePlaceholder;\r\n const ieBlockCardStyle = {\r\n [minMediumMediaQuery]: {\r\n flexBasis: 'auto',\r\n width: `calc(100% / ${BLOCK_LARGE_CARDS_PER_ROW})`,\r\n },\r\n };\r\n const desktopCardStyle = {\r\n marginBottom: pixelsToUnit(30),\r\n marginRight: this.props.margin ? 5 : 0,\r\n };\r\n\r\n const mobileCardStyle = {\r\n margin: { x: 0, y: pixelsToUnit(5), right: this.props.margin ? 5 : 0 },\r\n };\r\n\r\n return (\r\n \r\n {this.props.products.map((product, i) => {\r\n const code = epiPropertyValue(product.variation.code);\r\n return (\r\n \r\n {isMobile ? (\r\n this.addToCart(code, product.ticket)}\r\n product={product}\r\n />\r\n ) : (\r\n this.addToCart(code, product.ticket)}\r\n product={product}\r\n />\r\n )}\r\n \r\n );\r\n })}\r\n {!this.props.noPlaceholders &&\r\n new Array(5)\r\n .fill(0)\r\n .map((elem, index) => (\r\n \r\n ))}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default styled(\r\n connect(\r\n (state): ConnectStateType => ({\r\n isCheckoutPage: CurerntPageIsCheckout(state.currentPage),\r\n currentBreakpoint: state.currentBreakpoint,\r\n }),\r\n (dispatch): ConnectActionType => ({\r\n addToCart(code: string, quantity: number, ticket: string) {\r\n return dispatch(addToCart(code, quantity, ticket, 'Produktlista'));\r\n },\r\n addCartItem(code: string, quantity: number, ticket: string) {\r\n return dispatch(addCartItem(code, quantity, ticket, 'Kassakampanjer'));\r\n },\r\n }),\r\n )(List),\r\n);\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { StyleOrStyleArray, Style } from '@glitz/type';\r\nimport Link from 'Shared/Link';\r\nimport connect from 'Shared/connect';\r\nimport { translate } from '@avensia/scope';\r\nimport { epiPropertyValue } from '@avensia/scope-episerver';\r\nimport Image, { Ratio as ImageRatio, Preset as ImagePreset } from 'Shared/Image/Ratio';\r\nimport UspBullets from './../ProductDetails/UspBullets';\r\nimport { theta, epsilon, pixelsToUnit, zeta, milli, white } from 'Shared/Style';\r\nimport Button, { Appearance as ButtonAppearance, Variant as ButtonVariant } from 'Shared/Button';\r\nimport Icon from 'Shared/Icon/Cart';\r\nimport IconShoppingBag from 'Shared/Icon/ShoppingBag';\r\nimport InfoIcon from 'Shared/Icon/Info';\r\nimport { formatTitleCase } from 'Shared/string-format';\r\nimport AddToCart from 'Product/ProductAddToCart';\r\nimport AverageRatings, { Spacing, Size } from 'Product/ProductDetails/AverageRating';\r\nimport Price, { Type as PriceType } from 'Pricing/Price';\r\nimport { NewBadge, DiscountBadge, DiscountTriBadge } from './Badge';\r\nimport { prepareVariationName } from 'Shared/variation-helper';\r\nimport { Check } from 'Shared/Icon/Check-Thin';\r\nimport Cross from 'Shared/Icon/RemovePlain';\r\nimport EsalesProductForListType from '../../../Esales/Models/EsalesProductForList.type';\r\nimport AverageRatingsBlack from 'Product/ProductDetails/AverageRatingBlack';\r\nimport { PromotionTitle, PromotionItemTitle } from 'Product/ProductCard/ProductCard';\r\n\r\ntype ConnectStateType = {\r\n theme: string;\r\n};\r\n\r\ntype RequiredPropType = {\r\n product: EsalesProductForListType;\r\n addToCart: () => Promise;\r\n};\r\n\r\ntype PropType = StyledProps & RequiredPropType & ConnectStateType;\r\n\r\nclass ProductCardMobile extends React.Component {\r\n render() {\r\n const {\r\n averageRating: productRatings = 0,\r\n imageUrls,\r\n price,\r\n hasMultipleVariants = false,\r\n hasPromotion = false,\r\n hasDiscount = false,\r\n isNew: isProductNew = false,\r\n variation: { displayName },\r\n url: productUrl = '',\r\n bulletPoints = [],\r\n inStock,\r\n displayTagDesigner,\r\n ticket: productTicket,\r\n displayHighlightImage,\r\n highlightImageUrl,\r\n whiteHighlightText,\r\n hideProductInfo,\r\n promotions,\r\n } = this.props.product;\r\n const images = imageUrls || [];\r\n const productImage = images.length > 0 ? images[0] : '';\r\n const productName = formatTitleCase(prepareVariationName(epiPropertyValue(displayName)).trim());\r\n const { current: currentPrice, original: originalPrice, currency, discountPercentage } = price;\r\n const isPriceDiscounted = currentPrice < originalPrice;\r\n const currentTheme = this.props.theme;\r\n const hasBulletpoints = bulletPoints && bulletPoints.length > 0;\r\n const IsVxnSite =\r\n !currentTheme.startsWith('dog') &&\r\n !currentTheme.startsWith('cli') &&\r\n !currentTheme.startsWith('lac') &&\r\n !currentTheme.startsWith('party');\r\n const ActionButtonIcon =\r\n hasMultipleVariants || displayTagDesigner ? (\r\n \r\n ) : inStock ? (\r\n IsVxnSite ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \r\n );\r\n\r\n const imageWithPaddingStyle: Style = {\r\n paddingTop: pixelsToUnit(10),\r\n };\r\n\r\n const PromotionNode = (\r\n \r\n {translate('/Product/Badge/Campaign')}\r\n {promotions.map((promotion, i) => {\r\n if (i < 4) {\r\n return (\r\n \r\n {promotion.promotionName}\r\n \r\n );\r\n }\r\n })}\r\n \r\n );\r\n\r\n return (\r\n \r\n {hasPromotion && PromotionNode}\r\n {displayHighlightImage && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {hasDiscount ? (\r\n IsVxnSite ? (\r\n {`-${discountPercentage}%`}\r\n ) : (\r\n {`-${discountPercentage}%`}\r\n )\r\n ) : (\r\n isProductNew && {`${translate('/Product/Badge/New')}!`}\r\n )}\r\n \r\n \r\n {!!productRatings ? (\r\n !currentTheme.startsWith('dog') &&\r\n !currentTheme.startsWith('cli') &&\r\n !currentTheme.startsWith('lac') ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \r\n )}\r\n \r\n\r\n \r\n {productName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isPriceDiscounted && (\r\n \r\n )}\r\n \r\n \r\n {inStock ? (\r\n \r\n {translate('/Product/InStock')}\r\n \r\n \r\n ) : (\r\n \r\n {translate('/Product/OutOfStock')}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {ActionButtonIcon}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\nexport default styled(\r\n connect(\r\n (state): ConnectStateType => ({\r\n theme: state.currentTheme,\r\n }),\r\n )(ProductCardMobile),\r\n);\r\n\r\nconst mobileActionButtonStyle: StyleOrStyleArray = {\r\n backgroundColor: (theme) => theme.buyButtonProductcardMobile,\r\n width: '2.5rem',\r\n height: '2.5rem',\r\n minWidth: '2.5rem',\r\n minHeight: '2.5rem',\r\n borderRadius: '100%',\r\n marginRight: '0.2rem',\r\n marginBottom: '0.2rem',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n zIndex: 3,\r\n lineHeight: '2.1rem',\r\n};\r\n\r\nconst Base = styled.div({\r\n boxShadow: (theme) => `0 0.2rem 1rem 0 rgba(${theme.shadowColor}, 0.2)`,\r\n display: 'flex',\r\n backgroundColor: (theme) => theme.cardBackgroundColor,\r\n flexDirection: 'column',\r\n position: 'relative',\r\n textAlign: 'center',\r\n});\r\n\r\nconst HighlightImageWrapper = styled.div({\r\n color: (theme) => theme.campaignBackgroundColor,\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n zIndex: 3,\r\n height: '100%',\r\n width: '100%',\r\n});\r\n\r\nconst HighlightImage = styled.img({\r\n height: '100%',\r\n width: 'auto',\r\n objectFit: 'cover',\r\n});\r\n\r\nconst Body = styled(Link, {\r\n color: (theme) => theme.textColor,\r\n});\r\n\r\nconst Wrapper = styled.div({\r\n position: 'relative',\r\n});\r\n\r\nconst ImageStyled = styled(Image, {\r\n mixBlendMode: 'multiply',\r\n});\r\n\r\nconst RatingsContainer = styled.div({\r\n marginTop: pixelsToUnit(5),\r\n});\r\n\r\nconst Ratings = styled(AverageRatings, {});\r\n\r\nconst RatingsNone = styled(Ratings, {\r\n opacity: 0.3,\r\n});\r\n\r\nconst NameWrapper = styled.div({\r\n height: '2.4rem',\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst MobileBulletWrap = styled.div({\r\n height: '5rem',\r\n});\r\n\r\nconst Name = styled.div({\r\n position: 'relative',\r\n textTransform: 'uppercase',\r\n fontWeight: 'bold',\r\n fontSize: zeta,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n WebkitLineClamp: 2,\r\n marginTop: pixelsToUnit(3),\r\n display: '-webkit-box',\r\n WebkitBoxOrient: 'vertical',\r\n});\r\n\r\nconst ButtonContainer = styled.div({\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n paddingLeft: pixelsToUnit(5),\r\n});\r\n\r\nconst ButtonLeftContainer = styled.div({\r\n maxWidth: '70%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n height: '2.2rem',\r\n alignSelf: 'center',\r\n});\r\n\r\nconst Prices = styled.div({\r\n display: 'flex',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n justifyContent: 'flex-start',\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst CurrentPrice = styled(Price, {\r\n lineHeight: '1rem',\r\n fontSize: epsilon,\r\n color: (theme) => theme.textColor,\r\n marginRight: pixelsToUnit(3),\r\n});\r\n\r\nconst OldPrice = styled(Price, {\r\n fontSize: milli,\r\n paddingTop: '0.15rem',\r\n});\r\n\r\nconst StockPlaceholder = styled.div({\r\n lineHeight: '0.9rem',\r\n height: pixelsToUnit(10),\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst StockStatus = styled.span({\r\n fontSize: pixelsToUnit(11),\r\n letterSpacing: pixelsToUnit(0.3),\r\n lineHeight: pixelsToUnit(10),\r\n});\r\n\r\nconst CheckIcon = styled(Check, {\r\n marginRight: pixelsToUnit(5),\r\n height: '1rem',\r\n color: (theme) => theme.buttonTextColor,\r\n});\r\n\r\nconst InfoIconStyled = styled(InfoIcon, {\r\n fontSize: '2rem',\r\n height: 'unset',\r\n color: (theme) => theme.buttonTextColor,\r\n});\r\n\r\nconst CartIcon = styled(Icon, {\r\n width: pixelsToUnit(19.3),\r\n height: pixelsToUnit(18),\r\n});\r\n\r\nconst ShoppingBagIcon = styled(IconShoppingBag, {});\r\n\r\nconst CrossNoStock = styled(Cross, {\r\n marginLeft: pixelsToUnit(5),\r\n marginTop: pixelsToUnit(3),\r\n fontSize: '2rem',\r\n color: (theme) => theme.buttonTextColor,\r\n});\r\n\r\nconst CrossIcon = styled(Cross, {\r\n marginLeft: pixelsToUnit(5),\r\n height: '1.3rem',\r\n color: 'red',\r\n});\r\n\r\nconst bulletListItemStyle: StyleOrStyleArray = {\r\n fontSize: '0.7rem',\r\n marginLeft: '0.2rem',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n};\r\n\r\nconst UspBulletsStyled = styled(UspBullets, {\r\n padding: {\r\n x: pixelsToUnit(5),\r\n bottom: pixelsToUnit(5),\r\n },\r\n margin: {\r\n xy: 0,\r\n },\r\n});\r\n\r\nconst PromotionLink = styled(Link, {\r\n color: white,\r\n marginBottom: pixelsToUnit(10),\r\n});\r\n\r\nconst actionStyle = styled({\r\n fontSize: theta,\r\n borderRadius: '0.15rem',\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst ViewProduct = actionStyle(Button);\r\nconst AddCart = actionStyle(AddToCart);\r\n\r\ntype ActionPropType = {\r\n hasVariants: boolean;\r\n productUrl: string;\r\n isInStock: boolean;\r\n children: React.ReactNode;\r\n addCart: () => Promise;\r\n displayTagDesigner: boolean;\r\n};\r\n\r\nconst Action = styled((props: ActionPropType & StyledProps) => {\r\n return props.hasVariants || props.displayTagDesigner ? (\r\n \r\n {props.children}\r\n \r\n ) : (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\n","import { styled } from '@glitz/react';\r\nimport { minTinyMediaQuery, minLargeMediaQuery, pixelsToUnit } from 'Shared/Style';\r\nimport { SPACING_DEFAULT, SPACING_MOBILE } from 'Shared/BoxLayout';\r\n\r\nexport default styled({\r\n marginTop: SPACING_MOBILE,\r\n [minLargeMediaQuery]: {\r\n marginTop: pixelsToUnit(40),\r\n },\r\n [minTinyMediaQuery]: {\r\n marginTop: SPACING_DEFAULT,\r\n },\r\n});\r\n"],"sourceRoot":""}