UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

100 lines (97 loc) 3.37 kB
import React from 'react'; import Box from '../Box/Box.js'; import Truncate from '../Truncate/Truncate.js'; import '@styled-system/css'; import merge from 'deepmerge'; import { ItemContext } from './shared.js'; import '../FeatureFlags/FeatureFlags.js'; import { useFeatureFlag } from '../FeatureFlags/useFeatureFlag.js'; import '../FeatureFlags/DefaultFeatureFlags.js'; import classes from './ActionList.module.css.js'; import { clsx } from 'clsx'; import { defaultSxProp } from '../utils/defaultSxProp.js'; import { actionListCssModulesFlag } from './featureflag.js'; const Description = ({ variant = 'inline', sx = defaultSxProp, className, truncate, ...props }) => { const styles = { fontSize: 0, lineHeight: '16px', flexGrow: 1, flexBasis: variant === 'inline' && !truncate ? 'auto' : 0, minWidth: 0, marginLeft: variant === 'block' ? 0 : 2, color: 'fg.muted', 'li[aria-disabled="true"] &[data-component="ActionList.Description"]': { color: 'inherit' }, 'li[data-variant="danger"]:hover &[data-component="ActionList.Description"], li[data-variant="danger"]:active &[data-component="ActionList.Description"]': { color: 'inherit' } }; const { blockDescriptionId, inlineDescriptionId } = React.useContext(ItemContext); const enabled = useFeatureFlag(actionListCssModulesFlag); if (enabled) { if (sx !== defaultSxProp) { if (variant === 'block' || !truncate) { return /*#__PURE__*/React.createElement(Box, { as: "span", sx: merge(styles, sx), id: variant === 'block' ? blockDescriptionId : inlineDescriptionId, className: className, "data-component": "ActionList.Description" }, props.children); } else { return /*#__PURE__*/React.createElement(Truncate, { id: inlineDescriptionId, className: className, sx: merge(styles, sx), title: props.children, inline: true, maxWidth: "100%", "data-component": "ActionList.Description" }, props.children); } } if (variant === 'block' || !truncate) { return /*#__PURE__*/React.createElement("span", { className: clsx(className, classes.Description), "data-component": "ActionList.Description", id: variant === 'block' ? blockDescriptionId : inlineDescriptionId }, props.children); } else { return /*#__PURE__*/React.createElement(Truncate, { id: inlineDescriptionId, className: clsx(className, classes.Description), title: props.children, inline: true, maxWidth: "100%", "data-component": "ActionList.Description", "data-truncate": truncate }, props.children); } } return variant === 'block' || !truncate ? /*#__PURE__*/React.createElement(Box, { as: "span", sx: merge(styles, sx), id: variant === 'block' ? blockDescriptionId : inlineDescriptionId, className: className, "data-component": "ActionList.Description" }, props.children) : /*#__PURE__*/React.createElement(Truncate, { id: inlineDescriptionId, className: className, sx: merge(styles, sx), title: props.children, inline: true, maxWidth: "100%", "data-component": "ActionList.Description" }, props.children); }; export { Description };