UNPKG

@bootstrap-styled/rsg-components

Version:

Create documentation layouts for your react-styleguidist using Bootstrap-Styled rsg-component. Boostrap Styled rsg-components use the @bootstrap-styled/v4 for recreating the original rsg-components.

142 lines (109 loc) 4.87 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.propTypes = exports.defaultProps = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _Section = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Section")); var _lodash = _interopRequireDefault(require("lodash.omit")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _lib = _interopRequireDefault(require("map-to-css-modules/lib")); var _classnames = _interopRequireDefault(require("classnames")); var _SectionHeading = _interopRequireDefault(require("react-styleguidist/lib/client/rsg-components/SectionHeading")); var _Markdown = _interopRequireDefault(require("../Markdown")); var defaultProps = { theme: { styleguide: { '$rsg-section-margin': '60px 0 0 0', '$rsg-section-isolated-margin': '0' } } }; /* eslint-disable react/require-default-props */ exports.defaultProps = defaultProps; var propTypes = { /** * @ignore */ className: _propTypes.default.string, // eslint-disable-line react/require-default-props /** Display heading section name. */ name: _propTypes.default.string, /** Display section description used in `<Markdown />` component. */ description: _propTypes.default.string, /** Display string containing special characters. */ slug: _propTypes.default.string, /** Display section filepath. */ filepath: _propTypes.default.string, /** Content element to be rendered. */ content: _propTypes.default.node, /** Components elements to be rendered. */ components: _propTypes.default.node, /** Sections elements to be rendered. */ sections: _propTypes.default.node, /** Toggle isolated style. */ isolated: _propTypes.default.bool, /** Set a one page per section. */ pagePerSection: _propTypes.default.bool, /** Depth used in `<HeadingSection />` component. */ depth: _propTypes.default.number.isRequired, /** Theme variables. Can be: */ theme: _propTypes.default.shape({ styleguide: _propTypes.default.shape({ '$rsg-section-margin': _propTypes.default.string, '$rsg-section-isolated-margin': _propTypes.default.string }) }), /** * Replace or remove a className from the component. * See example <a href="https://www.npmjs.com/package/map-to-css-modules" target="_blank">here</a>. */ cssModule: _propTypes.default.object // eslint-disable-line react/require-default-props }; /* eslint-enable react/require-default-props */ exports.propTypes = propTypes; var SectionRendererUnstyled = function SectionRendererUnstyled(props) { var _omit = (0, _lodash.default)(props, ['theme']), className = _omit.className, name = _omit.name, slug = _omit.slug, content = _omit.content, components = _omit.components, sections = _omit.sections, depth = _omit.depth, isolated = _omit.isolated, description = _omit.description, pagePerSection = _omit.pagePerSection, cssModule = _omit.cssModule, attributes = (0, _objectWithoutProperties2.default)(_omit, ["className", "name", "slug", "content", "components", "sections", "depth", "isolated", "description", "pagePerSection", "cssModule"]); return _react.default.createElement(_Section.default, (0, _extends2.default)({ className: (0, _lib.default)((0, _classnames.default)(className, 'rsg-section', { isolated: isolated }), cssModule) }, attributes), name && _react.default.createElement(_SectionHeading.default, { depth: depth, id: slug, slotName: "sectionToolbar", pagePerSection: pagePerSection, slotProps: props }, name), description && _react.default.createElement(_Markdown.default, { text: description }), content, sections, components); }; SectionRendererUnstyled.defaultProps = defaultProps; SectionRendererUnstyled.propTypes = propTypes; var SectionRenderer = (0, _styledComponents.default)(SectionRendererUnstyled).withConfig({ displayName: "SectionRenderer", componentId: "joxu2z-0" })([" ", ""], function (props) { return "\n &.rsg-section {\n margin: ".concat(props.theme.styleguide['$rsg-section-margin'], ";\n }\n &.rsg-section.isolated {\n margin: ").concat(props.theme.styleguide['$rsg-section-isolated-margin'], " !important;\n }\n "); }); SectionRenderer.defaultProps = defaultProps; SectionRenderer.propTypes = propTypes; /** @component */ var _default = SectionRenderer; exports.default = _default;