@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.
75 lines • 2.67 kB
JavaScript
import * as React from "react";
import styled, { css } from "styled-components";
import defaultTheme from "../defaultTheme";
import ChevronBackward from "../icons/ChevronBackward";
import getSpacingToken from "../common/getSpacingToken";
import { right } from "../utils/rtl";
import TextLink from "../TextLink";
import Hide from "../Hide";
const StyledBreadcrumbs = styled.nav.withConfig({
displayName: "Breadcrumbs__StyledBreadcrumbs",
componentId: "sc-v7d29h-0"
})(["", ""], ({
theme
}) => css(["font-family:", ";font-size:", ";margin-bottom:", ";"], theme.orbit.fontFamily, theme.orbit.fontSizeTextSmall, getSpacingToken));
StyledBreadcrumbs.defaultProps = {
theme: defaultTheme
};
const StyledBreadcrumbsList = styled.ol.withConfig({
displayName: "Breadcrumbs__StyledBreadcrumbsList",
componentId: "sc-v7d29h-1"
})(["display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0;"]);
const StyledBackButtonWrapper = styled.span.withConfig({
displayName: "Breadcrumbs__StyledBackButtonWrapper",
componentId: "sc-v7d29h-2"
})(["", ";"], ({
theme
}) => css(["margin-", ":", ";"], right, theme.orbit.spaceSmall));
StyledBackButtonWrapper.defaultProps = {
theme: defaultTheme
};
const Breadcrumbs = props => {
const childEls = React.Children.toArray(props.children);
const {
children,
dataTest,
onGoBack,
goBackTitle = "Back",
spaceAfter,
backHref,
id
} = props;
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Hide, {
on: ["smallMobile", "mediumMobile"]
}, /*#__PURE__*/React.createElement(StyledBreadcrumbs, {
"aria-label": "Breadcrumb",
id: id,
"data-test": dataTest,
spaceAfter: spaceAfter
}, /*#__PURE__*/React.createElement(StyledBreadcrumbsList, {
itemScope: true,
itemType: "http://schema.org/BreadcrumbList"
}, React.Children.map(childEls, (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",
id: id,
iconLeft: /*#__PURE__*/React.createElement(ChevronBackward, {
reverseOnRtl: true
}),
dataTest: "BreadcrumbsBack",
onClick: onGoBack,
href: backHref
}, goBackTitle) : null));
};
export default Breadcrumbs;
export { default as BreadcrumbsItem } from "./BreadcrumbsItem";