UNPKG

@primer/components

Version:
106 lines (92 loc) 2.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Group = exports.GroupContext = void 0; var _react = _interopRequireDefault(require("react")); var _ssr = require("@react-aria/ssr"); var _Box = _interopRequireDefault(require("../Box")); var _List = require("./List"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } const GroupContext = /*#__PURE__*/_react.default.createContext({}); exports.GroupContext = GroupContext; const Group = ({ title, variant = 'subtle', auxiliaryText, selectionVariant, role, sx = {}, ...props }) => { const labelId = (0, _ssr.useSSRSafeId)(); return /*#__PURE__*/_react.default.createElement(_Box.default, _extends({ as: "li", sx: { '&:not(:first-child)': { marginTop: 2 }, listStyle: 'none', // hide the ::marker inserted by browser's stylesheet ...sx } }, props), title && /*#__PURE__*/_react.default.createElement(Header, { title: title, variant: variant, auxiliaryText: auxiliaryText, labelId: labelId }), /*#__PURE__*/_react.default.createElement(GroupContext.Provider, { value: { selectionVariant } }, /*#__PURE__*/_react.default.createElement(_Box.default, { as: "ul", sx: { paddingInlineStart: 0 }, "aria-labelledby": title ? labelId : undefined, role: role }, props.children))); }; exports.Group = Group; Group.displayName = "Group"; /** * Displays the name and description of a `Group`. * * For visual presentation only. It's hidden from screen readers. */ const Header = ({ variant, title, auxiliaryText, labelId, ...props }) => { const { variant: listVariant } = _react.default.useContext(_List.ListContext); const styles = { paddingY: '6px', paddingX: listVariant === 'full' ? 2 : 3, fontSize: 0, fontWeight: 'bold', color: 'fg.muted', ...(variant === 'filled' && { backgroundColor: 'canvas.subtle', marginX: 0, marginBottom: 2, borderTop: '1px solid', borderBottom: '1px solid', borderColor: 'neutral.muted' }) }; return /*#__PURE__*/_react.default.createElement(_Box.default, _extends({ sx: styles, role: "presentation", "aria-hidden": "true" }, props), /*#__PURE__*/_react.default.createElement("span", { id: labelId }, title), auxiliaryText && /*#__PURE__*/_react.default.createElement("span", null, auxiliaryText)); }; Header.displayName = "Header";