UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

78 lines (72 loc) 2.97 kB
'use strict'; var React = require('react'); var getBreakpointDeclarations = require('../../utils/getBreakpointDeclarations.js'); var constants = require('../../constants.js'); var useResponsiveValue = require('../../hooks/useResponsiveValue.js'); var Avatar = require('../../Avatar/Avatar.js'); var SkeletonBox = require('./SkeletonBox.js'); var SkeletonAvatar_module = require('./SkeletonAvatar.module.css.js'); var clsx = require('clsx'); require('../../FeatureFlags/FeatureFlags.js'); var useFeatureFlag = require('../../FeatureFlags/useFeatureFlag.js'); require('../../FeatureFlags/DefaultFeatureFlags.js'); require('@styled-system/css'); var merge = require('deepmerge'); var FeatureFlag = require('./FeatureFlag.js'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var React__default = /*#__PURE__*/_interopDefault(React); var merge__default = /*#__PURE__*/_interopDefault(merge); 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 avatarSkeletonStyles = { '&[data-component="SkeletonAvatar"]': { borderRadius: '50%', boxShadow: `0 0 0 1px ${constants.get('colors.avatar.border')}`, display: 'inline-block', lineHeight: constants.get('lineHeights.condensedUltra'), height: 'var(--avatar-size)', width: 'var(--avatar-size)' }, '&[data-square]': { borderRadius: 'clamp(4px, var(--avatar-size) - 24px, 6px)' } }; const SkeletonAvatar = ({ size = Avatar.DEFAULT_AVATAR_SIZE, square, className, style, ...rest }) => { const responsive = useResponsiveValue.isResponsiveValue(size); const cssSizeVars = {}; const enabled = useFeatureFlag.useFeatureFlag(FeatureFlag.CSS_MODULE_FLAG); const avatarSx = responsive ? { ...getBreakpointDeclarations.getBreakpointDeclarations(size, '--avatar-size', value => `${value || Avatar.DEFAULT_AVATAR_SIZE}px`), ...avatarSkeletonStyles } : { '--avatar-size': `${size}px`, ...avatarSkeletonStyles }; if (enabled) { if (responsive) { for (const [key, value] of Object.entries(size)) { cssSizeVars[`--avatarSize-${key}`] = `${value}px`; } } else { cssSizeVars['--avatarSize-regular'] = `${size}px`; } } return /*#__PURE__*/React__default.default.createElement(SkeletonBox.SkeletonBox, _extends({ sx: enabled ? undefined : avatarSx, className: clsx.clsx(className, { [SkeletonAvatar_module.SkeletonAvatar]: enabled }) }, rest, { "data-component": "SkeletonAvatar", "data-responsive": responsive ? '' : undefined, "data-square": square ? '' : undefined, style: merge__default.default(style, enabled ? cssSizeVars : {}) })); }; SkeletonAvatar.displayName = "SkeletonAvatar"; exports.SkeletonAvatar = SkeletonAvatar;