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.

51 lines 1.64 kB
import * as React from "react"; import styled from "styled-components"; import Stack from "../Stack"; import useMediaQuery from "../hooks/useMediaQuery"; import { TimelineStatusProvider, TimelineStepProvider } from "./TimelineContext"; import getSpacingToken from "../common/getSpacingToken"; import themeDefault from "../defaultTheme"; const WrapperStyled = styled.div.withConfig({ displayName: "Timeline__WrapperStyled", componentId: "sc-1r3wnyu-0" })(["position:relative;overflow:hidden;margin-bottom:", ";"], getSpacingToken); WrapperStyled.defaultProps = { theme: themeDefault }; const Timeline = ({ children, spaceAfter, direction, dataTest, id }) => { const childrenArr = React.Children.toArray(children); const { isDesktop } = useMediaQuery(); const getDirection = () => { if (direction) return direction; return isDesktop ? "row" : "column"; }; return childrenArr && childrenArr.length > 0 ? /*#__PURE__*/React.createElement(WrapperStyled, { spaceAfter: spaceAfter, "data-test": dataTest, id: id }, /*#__PURE__*/React.createElement(Stack, { flex: true, shrink: true, direction: getDirection() }, /*#__PURE__*/React.createElement(TimelineStatusProvider, { direction: direction }, React.Children.map(childrenArr, (child, i) => { if ( /*#__PURE__*/React.isValidElement(child)) { return /*#__PURE__*/React.createElement(TimelineStepProvider, { index: i, last: i + 1 === childrenArr.length }, child); } return null; })))) : null; }; export default Timeline; export { default as TimelineStep } from "./TimelineStep";