@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.
109 lines (102 loc) • 4.29 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
import * as React from "react";
import styled, { css } from "styled-components";
import defaultTheme from "../../defaultTheme";
import ChevronRight from "../../icons/ChevronRight";
var StyledBreadcrumbsItem = styled.li.withConfig({
displayName: "BreadcrumbsItem__StyledBreadcrumbsItem",
componentId: "sc-1aqqbs7-0"
})(["display:flex;align-items:center;"]);
var StyledBreadcrumbsItemAnchor = styled(function (_ref) {
var active = _ref.active,
component = _ref.component,
children = _ref.children,
isClickable = _ref.isClickable,
theme = _ref.theme,
props = _objectWithoutProperties(_ref, ["active", "component", "children", "isClickable", "theme"]);
var Component = isClickable ? component : "div";
return /*#__PURE__*/React.createElement(Component, props, children);
}).withConfig({
displayName: "BreadcrumbsItem__StyledBreadcrumbsItemAnchor",
componentId: "sc-1aqqbs7-1"
})(["font-weight:", ";color:", ";text-decoration:", ";", ";"], function (_ref2) {
var active = _ref2.active,
theme = _ref2.theme;
return active ? theme.orbit.fontWeightBold : theme.orbit.fontWeightMedium;
}, function (_ref3) {
var theme = _ref3.theme;
return theme.orbit.paletteInkNormal;
}, function (_ref4) {
var isClickable = _ref4.isClickable,
active = _ref4.active;
return isClickable && !active ? "underline" : "none";
}, function (_ref5) {
var isClickable = _ref5.isClickable;
return isClickable && css(["transition:color ", " ease-in-out;cursor:pointer;&:hover,&:focus{outline:none;text-decoration:none;}&:hover{color:", ";}:focus{color:", ";}"], function (_ref6) {
var theme = _ref6.theme;
return theme.orbit.durationFast;
}, function (_ref7) {
var theme = _ref7.theme;
return theme.orbit.paletteProductNormalHover;
}, function (_ref8) {
var theme = _ref8.theme;
return theme.orbit.paletteProductNormalActive;
});
}); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198
StyledBreadcrumbsItemAnchor.defaultProps = {
theme: defaultTheme
};
var StyledBreadcrumbsItemIcon = styled(ChevronRight).withConfig({
displayName: "BreadcrumbsItem__StyledBreadcrumbsItemIcon",
componentId: "sc-1aqqbs7-2"
})(["margin:0 ", ";"], function (_ref9) {
var theme = _ref9.theme;
return theme.orbit.spaceXXSmall;
}); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198
StyledBreadcrumbsItemIcon.defaultProps = {
theme: defaultTheme
}; // eslint-disable-next-line jsx-a11y/anchor-has-content
var DefaultComponent = function DefaultComponent(props) {
return /*#__PURE__*/React.createElement("a", props);
};
var BreadcrumbsItem = function BreadcrumbsItem(_ref10) {
var active = _ref10.active,
children = _ref10.children,
dataTest = _ref10.dataTest,
onClick = _ref10.onClick,
href = _ref10.href,
contentKey = _ref10.contentKey,
_ref10$component = _ref10.component,
component = _ref10$component === void 0 ? DefaultComponent : _ref10$component,
id = _ref10.id,
props = _objectWithoutProperties(_ref10, ["active", "children", "dataTest", "onClick", "href", "contentKey", "component", "id"]);
return /*#__PURE__*/React.createElement(StyledBreadcrumbsItem, {
"data-test": dataTest,
"aria-current": active ? "page" : undefined,
itemProp: "itemListElement",
itemScope: true,
itemType: "http://schema.org/ListItem"
}, /*#__PURE__*/React.createElement(StyledBreadcrumbsItemAnchor, _extends({
isClickable: href || onClick,
href: href,
component: component,
active: active,
onClick: onClick,
itemScope: true,
itemType: "http://schema.org/WebPage",
itemProp: "item",
itemID: id || href
}, props), /*#__PURE__*/React.createElement("span", {
itemProp: "name"
}, children)), /*#__PURE__*/React.createElement("meta", {
itemProp: "position",
content: contentKey
}), !active && /*#__PURE__*/React.createElement(StyledBreadcrumbsItemIcon, {
ariaHidden: true,
reverseOnRtl: true,
size: "small",
color: "tertiary"
}));
};
export default BreadcrumbsItem;