UNPKG

@kiwicom/orbit-components

Version:

Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.

78 lines (73 loc) 2.86 kB
import * as React from "react"; import styled, { css } from "styled-components"; import defaultTheme from "../defaultTheme"; import ChevronLeft from "../icons/ChevronLeft"; import getSpacingToken from "../common/getSpacingToken"; import useTranslate from "../hooks/useTranslate"; import { right } from "../utils/rtl"; import TextLink from "../TextLink"; import Hide from "../Hide"; const StyledBreadcrumbs = styled.nav.withConfig({ displayName: "Breadcrumbs__StyledBreadcrumbs", componentId: "sc-ymjqy4-0" })(["", ""], ({ theme }) => css(["font-family:", ";font-size:", ";margin-bottom:", ";"], theme.orbit.fontFamily, theme.orbit.fontSizeTextSmall, getSpacingToken)); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 StyledBreadcrumbs.defaultProps = { theme: defaultTheme }; const StyledBreadcrumbsList = styled.ol.withConfig({ displayName: "Breadcrumbs__StyledBreadcrumbsList", componentId: "sc-ymjqy4-1" })(["display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0;"]); const StyledBackButtonWrapper = styled.span.withConfig({ displayName: "Breadcrumbs__StyledBackButtonWrapper", componentId: "sc-ymjqy4-2" })(["", ";"], ({ theme }) => css(["margin-", ":", ";"], right, theme.orbit.spaceSmall)); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 StyledBackButtonWrapper.defaultProps = { theme: defaultTheme }; const Breadcrumbs = props => { const translate = useTranslate(); const { children, dataTest, onGoBack, goBackTitle = translate("breadcrumbs_back"), spaceAfter, backHref } = props; return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Hide, { on: ["smallMobile", "mediumMobile"] }, /*#__PURE__*/React.createElement(StyledBreadcrumbs, { "aria-label": "Breadcrumb", "data-test": dataTest, spaceAfter: spaceAfter }, /*#__PURE__*/React.createElement(StyledBreadcrumbsList, { itemScope: true, itemType: "http://schema.org/BreadcrumbList" }, React.Children.map(children, (item, key) => { if ( /*#__PURE__*/React.isValidElement(item)) { return /*#__PURE__*/React.cloneElement(item, { active: key === React.Children.count(children) - 1, contentKey: key + 1 }); } return null; })))), /*#__PURE__*/React.createElement(Hide, { on: ["largeMobile", "tablet", "desktop", "largeDesktop"] }, onGoBack || backHref ? /*#__PURE__*/React.createElement(TextLink, { standAlone: true, type: "secondary", iconLeft: /*#__PURE__*/React.createElement(ChevronLeft, { reverseOnRtl: true }), dataTest: "BreadcrumbsBack", onClick: onGoBack, href: backHref }, goBackTitle) : null)); }; export default Breadcrumbs; export { default as BreadcrumbsItem } from "./BreadcrumbsItem";