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.

74 lines (70 loc) 2.23 kB
import * as React from "react"; import styled from "styled-components"; import defaultTheme from "../defaultTheme"; import Button from "../Button"; import ChevronLeft from "../icons/ChevronLeft"; import getSpacingToken from "../common/getSpacingToken"; import useTranslate from "../hooks/useTranslate"; const StyledBreadcrumbs = styled.nav.withConfig({ displayName: "Breadcrumbs__StyledBreadcrumbs", componentId: "sc-1zqkwq-0" })(["font-family:", ";font-size:", ";margin-bottom:", ";"], ({ theme }) => theme.orbit.fontFamily, ({ theme }) => theme.orbit.fontSizeTextSmall, getSpacingToken); StyledBreadcrumbs.defaultProps = { theme: defaultTheme }; const StyledBreadcrumbsList = styled.ol.withConfig({ displayName: "Breadcrumbs__StyledBreadcrumbsList", componentId: "sc-1zqkwq-1" })(["display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0;"]); const StyledBackButtonWrapper = styled.span.withConfig({ displayName: "Breadcrumbs__StyledBackButtonWrapper", componentId: "sc-1zqkwq-2" })(["margin-right:", ";"], ({ theme }) => theme.orbit.spaceSmall); StyledBackButtonWrapper.defaultProps = { theme: defaultTheme }; const GoBackButton = ({ onClick }) => { const translate = useTranslate(); return React.createElement(StyledBackButtonWrapper, null, React.createElement(Button, { iconLeft: React.createElement(ChevronLeft, null), circled: true, type: "secondary", size: "small", onClick: onClick, title: translate("breadcrumbs_back") })); }; const Breadcrumbs = ({ children, dataTest, onGoBack, spaceAfter }) => React.createElement(StyledBreadcrumbs, { "aria-label": "Breadcrumb", role: "navigation", "data-test": dataTest, spaceAfter: spaceAfter }, React.createElement(StyledBreadcrumbsList, { vocab: "http://schema.org/", typeof: "BreadcrumbList" }, onGoBack && React.createElement(GoBackButton, { onClick: onGoBack }), React.Children.map(children, (item, key) => { if (React.isValidElement(item)) { return React.cloneElement(item, { active: key === React.Children.count(children) - 1, contentKey: key + 1 }); } return null; }))); export default Breadcrumbs; export { default as BreadcrumbsItem } from "./BreadcrumbsItem";