UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

90 lines (84 loc) 3.08 kB
'use strict'; var React = require('react'); var styled = require('styled-components'); var sx = require('../sx.js'); var VisuallyHidden = require('../VisuallyHidden/VisuallyHidden.js'); require('@primer/behaviors/utils'); require('@primer/behaviors'); var useId = require('../hooks/useId.js'); var Spinner_module = require('./Spinner.module.css.js'); var clsx = require('clsx'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var React__default = /*#__PURE__*/_interopDefault(React); var styled__default = /*#__PURE__*/_interopDefault(styled); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } const sizeMap = { small: '16px', medium: '32px', large: '64px' }; function Spinner({ size: sizeKey = 'medium', srText = 'Loading', 'aria-label': ariaLabel, className, style, ...props }) { const size = sizeMap[sizeKey]; const hasHiddenLabel = srText !== null && ariaLabel === undefined; const labelId = useId.useId(); return /*#__PURE__*/ /* inline-flex removes the extra line height */React__default.default.createElement("span", { className: Spinner_module.Box }, /*#__PURE__*/React__default.default.createElement("svg", _extends({ height: size, width: size, viewBox: "0 0 16 16", fill: "none", "aria-hidden": true, "aria-label": ariaLabel !== null && ariaLabel !== undefined ? ariaLabel : undefined, "aria-labelledby": hasHiddenLabel ? labelId : undefined, className: className, style: style }, props), /*#__PURE__*/React__default.default.createElement("circle", { cx: "8", cy: "8", r: "7", stroke: "currentColor", strokeOpacity: "0.25", strokeWidth: "2", vectorEffect: "non-scaling-stroke" }), /*#__PURE__*/React__default.default.createElement("path", { d: "M15 8a7.002 7.002 0 00-7-7", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", vectorEffect: "non-scaling-stroke" })), hasHiddenLabel ? /*#__PURE__*/React__default.default.createElement(VisuallyHidden.VisuallyHidden, { id: labelId }, srText) : null); } Spinner.displayName = "Spinner"; const StyledBaseSpinner = styled__default.default.div.withConfig({ displayName: "Spinner__StyledBaseSpinner", componentId: "sc-1knt686-0" })(["", ""], sx.default); function StyledSpinner({ sx, className, ...props }) { if (sx) { return /*#__PURE__*/React__default.default.createElement(StyledBaseSpinner, _extends({ sx: sx, as: Spinner, className: clsx.clsx(className, Spinner_module.SpinnerAnimation) }, props)); } return /*#__PURE__*/React__default.default.createElement(Spinner, _extends({ className: clsx.clsx(className, Spinner_module.SpinnerAnimation) }, props)); } StyledSpinner.displayName = "StyledSpinner"; StyledSpinner.displayName = 'Spinner'; module.exports = StyledSpinner;