@primer/react
Version:
An implementation of GitHub's Primer Design System using React
48 lines (41 loc) • 2.29 kB
JavaScript
;
var styled = require('styled-components');
var sx = require('../sx.js');
var toggleStyledComponent = require('../internal/utils/toggleStyledComponent.js');
var clsx = require('clsx');
require('../FeatureFlags/FeatureFlags.js');
var useFeatureFlag = require('../FeatureFlags/useFeatureFlag.js');
require('../FeatureFlags/DefaultFeatureFlags.js');
var React = require('react');
var VisuallyHidden_module = require('./VisuallyHidden.module.css.js');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var styled__default = /*#__PURE__*/_interopDefault(styled);
var React__default = /*#__PURE__*/_interopDefault(React);
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 CSS_MODULES_FEATURE_FLAG = 'primer_react_css_modules_ga';
/**
* Provides a component that implements the "visually hidden" technique. This is
* analagous to the common `sr-only` class. Children that are rendered inside
* this component will not be visible but will be available to screen readers.
*
* Note: if this component, or a descendant, has focus then this component will
* no longer be visually hidden.
*
* @see https://www.scottohara.me/blog/2023/03/21/visually-hidden-hack.html
*/
const StyledVisuallyHidden = toggleStyledComponent.toggleStyledComponent(CSS_MODULES_FEATURE_FLAG, 'span', styled__default.default.span.withConfig({
displayName: "VisuallyHidden__StyledVisuallyHidden",
componentId: "sc-1rhpuyf-0"
})(["&:not(:focus):not(:active):not(:focus-within){clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px;}", ""], sx.default));
const VisuallyHidden = ({
className,
children,
...rest
}) => {
const enabled = useFeatureFlag.useFeatureFlag(CSS_MODULES_FEATURE_FLAG);
return /*#__PURE__*/React__default.default.createElement(StyledVisuallyHidden, _extends({
className: clsx.clsx(className, enabled && VisuallyHidden_module.VisuallyHidden)
}, rest), children);
};
VisuallyHidden.displayName = "VisuallyHidden";
exports.VisuallyHidden = VisuallyHidden;