UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

65 lines (59 loc) 3.35 kB
'use strict'; var React = require('react'); var styled = require('styled-components'); var Box = require('../Box/Box.js'); var sx = require('../sx.js'); var getSegmentedControlStyles = require('./getSegmentedControlStyles.js'); var defaultSxProp = require('../utils/defaultSxProp.js'); var reactIs = require('react-is'); var getGlobalFocusStyles = require('../internal/utils/getGlobalFocusStyles.js'); require('../FeatureFlags/FeatureFlags.js'); var useFeatureFlag = require('../FeatureFlags/useFeatureFlag.js'); require('../FeatureFlags/DefaultFeatureFlags.js'); var SegmentedControl_module = require('./SegmentedControl.module.css.js'); var clsx = require('clsx'); var toggleStyledComponent = require('../internal/utils/toggleStyledComponent.js'); var merge = require('deepmerge'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var React__default = /*#__PURE__*/_interopDefault(React); var styled__default = /*#__PURE__*/_interopDefault(styled); 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 SegmentedControlButtonStyled = toggleStyledComponent.toggleStyledComponent(getSegmentedControlStyles.SEGMENTED_CONTROL_CSS_MODULES_FEATURE_FLAG, 'button', styled__default.default.button.withConfig({ displayName: "SegmentedControlButton__SegmentedControlButtonStyled", componentId: "sc-8lkgxl-0" })(["", ";", ";"], getGlobalFocusStyles('-1px'), sx.default)); const SegmentedControlButton = ({ children, leadingIcon: LeadingIcon, selected, sx: sxProp = defaultSxProp.defaultSxProp, className, ...rest }) => { const enabled = useFeatureFlag.useFeatureFlag(getSegmentedControlStyles.SEGMENTED_CONTROL_CSS_MODULES_FEATURE_FLAG); const mergedSx = enabled ? sxProp : merge__default.default(getSegmentedControlStyles.getSegmentedControlListItemStyles(), sxProp); return /*#__PURE__*/React__default.default.createElement(Box, { as: "li", sx: mergedSx, className: clsx.clsx(enabled && SegmentedControl_module.Item), "data-selected": selected || undefined }, /*#__PURE__*/React__default.default.createElement(SegmentedControlButtonStyled, _extends({ "aria-current": selected, sx: enabled ? undefined : getSegmentedControlStyles.getSegmentedControlButtonStyles({ selected, children }), className: clsx.clsx(enabled && SegmentedControl_module.Button, className), type: "button" }, rest), /*#__PURE__*/React__default.default.createElement("span", { className: clsx.clsx(enabled ? SegmentedControl_module.Content : 'segmentedControl-content') }, LeadingIcon && /*#__PURE__*/React__default.default.createElement(Box, { mr: 1 }, reactIs.isElement(LeadingIcon) ? LeadingIcon : /*#__PURE__*/React__default.default.createElement(LeadingIcon, null)), /*#__PURE__*/React__default.default.createElement(Box, { className: clsx.clsx(enabled ? SegmentedControl_module.Text : 'segmentedControl-text'), "data-text": children }, children)))); }; SegmentedControlButton.displayName = "SegmentedControlButton"; module.exports = SegmentedControlButton;