UNPKG

@procore/core-react

Version:
93 lines 4.32 kB
import styled, { css, keyframes } from 'styled-components'; import { getTypographyIntent } from '../Typography'; import { colors } from '../_styles/colors'; import { spacing } from '../_styles/spacing'; var duration = 1500; var durationOffset = 500; var transition = '0.5s ease'; var zContainer = 3; var zOverlay = 2; var dash = /*#__PURE__*/keyframes(["0%{stroke-dasharray:1,150;stroke-dashoffset:0;}50%{stroke-dasharray:90,150;stroke-dashoffset:-35;}100%{stroke-dasharray:90,150;stroke-dashoffset:-124;}"]); export var StyledCircle = /*#__PURE__*/styled.circle.withConfig({ displayName: "StyledCircle", componentId: "core-12_44_0__sc-1igww3-0" })(["", " stroke-linecap:round;"], function (p) { if (p.$animate) { var animationDelay = -(p.$mountTime % duration); return css(["animation:", " ", "ms ease-in-out ", "ms infinite;"], dash, duration, animationDelay); } }); export var spinnerDimensions = { xs: spacing.md, sm: spacing.lg, md: spacing.xl, lg: 48 }; var spinnerColorMap = { "default": 'gray60', button: 'gray15', light: 'white', focus: 'blue50' }; var spinnerStroke = { xs: 10, sm: 8, md: 8, lg: 6 }; function getHeightWidthStroke(_ref) { var $size = _ref.$size; var dimension = spinnerDimensions[$size]; var strokeWidth = spinnerStroke[$size]; return css(["height:", "px;width:", "px;stroke-width:", "px;"], dimension, dimension, strokeWidth); } function getStrokeColor(_ref2) { var $color = _ref2.$color, $variant = _ref2.$variant; if ($color) { return css(["stroke:", ";"], colors[$color]); } return css(["stroke:", ";"], colors[spinnerColorMap[$variant]]); } export var StyledSpinnerContainer = /*#__PURE__*/styled.div.withConfig({ displayName: "StyledSpinnerContainer", componentId: "core-12_44_0__sc-1igww3-1" })(["border-radius:100%;box-sizing:border-box;display:block;flex-shrink:0;position:relative;", " ", "{", "}"], getHeightWidthStroke, StyledCircle, getStrokeColor); export var StyledSpinnerOverlayLabel = /*#__PURE__*/styled.span.withConfig({ displayName: "StyledSpinnerOverlayLabel", componentId: "core-12_44_0__sc-1igww3-2" })(["", " color:", ";display:block;min-height:20px;padding-top:", "px;text-align:center;transition:opacity ", ";"], getTypographyIntent('body'), colors.gray15, spacing.md, transition); var rotate = /*#__PURE__*/keyframes(["to{transform:rotate(360deg);}"]); export var StyledSpinnerSVG = /*#__PURE__*/styled.svg.withConfig({ displayName: "StyledSpinnerSVG", componentId: "core-12_44_0__sc-1igww3-3" })(["", " fill:none;height:100%;left:0;margin:auto;position:absolute;right:0;top:0;width:100%;z-index:2;"], function (p) { if (p.$animate) { var animationDelay = -(p.$mountTime % (duration - durationOffset)); return css(["animation:", " ", "ms linear ", "ms infinite;"], rotate, duration - durationOffset, animationDelay); } }); var startsWithNoInteraction = /*#__PURE__*/css(["opacity:0;pointer-events:none;transition:opacity ", ";"], transition); export var StyledSpinnerOverlay = /*#__PURE__*/styled.div.withConfig({ displayName: "StyledSpinnerOverlay", componentId: "core-12_44_0__sc-1igww3-4" })(["", ";background-color:", ";bottom:0;left:0;position:absolute;right:0;top:0;z-index:", ";"], startsWithNoInteraction, colors.white, zOverlay); export var StyledSpinnerContainerWithLabel = /*#__PURE__*/styled.div.withConfig({ displayName: "StyledSpinnerContainerWithLabel", componentId: "core-12_44_0__sc-1igww3-5" })(["", ";align-items:center;display:flex;flex-direction:column;height:100%;max-height:400px;justify-content:center;position:absolute;top:0;width:100%;z-index:", ";"], startsWithNoInteraction, zContainer); export var StyledSpinnerOverlayContainer = /*#__PURE__*/styled.div.withConfig({ displayName: "StyledSpinnerOverlayContainer", componentId: "core-12_44_0__sc-1igww3-6" })(["min-height:150px;position:relative;", " ", ""], function (_ref3) { var $loading = _ref3.$loading; if ($loading) { return css(["", ",", "{opacity:1;pointer-events:auto;}"], StyledSpinnerContainerWithLabel, StyledSpinnerOverlay); } }, function (_ref4) { var $centered = _ref4.$centered; if ($centered) { return css(["", "{position:absolute;top:50%;transform:translateY(-50%);}"], StyledSpinnerContainerWithLabel); } }); //# sourceMappingURL=Spinner.styles.js.map