UNPKG

@mskcc/carbon-react

Version:

Carbon react components for the MSKCC DSM

280 lines (269 loc) 9.46 kB
/** * MSKCC 2021, 2024 */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js'); var React = require('react'); var PropTypes = require('prop-types'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n["default"] = e; return Object.freeze(n); } var React__namespace = /*#__PURE__*/_interopNamespace(React); var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes); // type ChildProps = { // children?: React.ReactNode; // as?: React.ElementType; // layout?: LayoutTypes; // }; // const Child: React.FC<ChildProps> = ({ as, children, layout }) => { // return React.createElement( // as, // { // className: `msk-layout-${layout}-slot msk-layout-${layout}-slot-main`, // }, // <div className={`msk-layout-${layout}-slot-container`}> // <div className={`msk-layout-${layout}-slot-content`}>{children}</div> // </div> // ); // }; const Child = _ref => { let { as: Component, children, layout, ...rest } = _ref; return /*#__PURE__*/React__namespace.createElement(Component, _rollupPluginBabelHelpers["extends"]({ className: `msk-layout-${layout}-slot msk-layout-${layout}-slot-main` }, rest), /*#__PURE__*/React__namespace.createElement("div", { className: `msk-layout-${layout}-slot-container` }, /*#__PURE__*/React__namespace.createElement("div", { className: `msk-layout-${layout}-slot-content` }, children))); }; // const Child: React.FC<ChildProps> = ({ as, children, layout }) => { // return React.createElement( // as, // { // className: `msk-layout-${layout}-slot msk-layout-${layout}-slot-main`, // }, // <div className={`msk-layout-${layout}-slot-container`}> // <div className={`msk-layout-${layout}-slot-content`}>{children}</div> // </div>, // ); // }; const PageLayout = _ref2 => { let { layout = 'bookworm', side, children, ...other } = _ref2; switch (layout) { case 'bookworm': return /*#__PURE__*/React__namespace.createElement(BookwormLayout, other, children); case 'potato': return /*#__PURE__*/React__namespace.createElement(PotatoLayout, other, children); case 'sarge': return /*#__PURE__*/React__namespace.createElement(SargeLayout, other, children); case 'bullseye': return /*#__PURE__*/React__namespace.createElement(BullseyeLayout, _rollupPluginBabelHelpers["extends"]({ side: side }, other), children); case 'buster': return /*#__PURE__*/React__namespace.createElement(BusterLayout, _rollupPluginBabelHelpers["extends"]({ side: side }, other), children); case 'slink': return /*#__PURE__*/React__namespace.createElement(SlinkLayout, _rollupPluginBabelHelpers["extends"]({ side: side }, other), children); default: return /*#__PURE__*/React__namespace.createElement(BookwormLayout, other, children); } }; const BookwormLayout = _ref3 => { let { as = 'main', children, ...other } = _ref3; return /*#__PURE__*/React__namespace.createElement("div", _rollupPluginBabelHelpers["extends"]({ className: "msk-layout-stage" }, other), /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-bookworm" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-bookworm-container" }, /*#__PURE__*/React__namespace.createElement(Child, { as: as, layout: "bookworm" }, children)))); }; const PotatoLayout = _ref4 => { let { as = 'main', children, ...other } = _ref4; return /*#__PURE__*/React__namespace.createElement("div", _rollupPluginBabelHelpers["extends"]({ className: "msk-layout-stage" }, other), /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-potato" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-potato-container" }, /*#__PURE__*/React__namespace.createElement(Child, { as: as, layout: "potato" }, children)))); }; const SargeLayout = _ref5 => { let { as = 'main', children, ...other } = _ref5; return /*#__PURE__*/React__namespace.createElement("div", _rollupPluginBabelHelpers["extends"]({ className: "msk-layout-stage" }, other), /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-sarge" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-sarge-container" }, /*#__PURE__*/React__namespace.createElement(Child, { as: as, layout: "sarge" }, children)))); }; const BullseyeLayout = _ref6 => { let { as = 'main', children, side, ...other } = _ref6; return /*#__PURE__*/React__namespace.createElement("div", _rollupPluginBabelHelpers["extends"]({ className: "msk-layout-stage" }, other), /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-bullseye" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-bullseye-container" }, /*#__PURE__*/React__namespace.createElement("aside", { className: "msk-layout-bullseye-slot msk-layout-bullseye-slot-left" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-bullseye-slot-container" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-bullseye-slot-content" }, side))), /*#__PURE__*/React__namespace.createElement(Child, { as: as, layout: "bullseye" }, children)))); }; const SlinkLayout = _ref7 => { let { as = 'main', children, side, ...other } = _ref7; return /*#__PURE__*/React__namespace.createElement("div", _rollupPluginBabelHelpers["extends"]({ className: "msk-layout-stage" }, other), /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-slink" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-slink-container" }, /*#__PURE__*/React__namespace.createElement("aside", { className: "msk-layout-slink-slot msk-layout-slink-slot-left" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-slink-slot-container" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-slink-slot-content" }, side))), /*#__PURE__*/React__namespace.createElement(Child, { as: as, layout: "slink" }, children)))); }; const BusterLayout = _ref8 => { let { as = 'main', children, side, ...other } = _ref8; return /*#__PURE__*/React__namespace.createElement("div", _rollupPluginBabelHelpers["extends"]({ className: "msk-layout-stage" }, other), /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-buster" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-buster-container" }, /*#__PURE__*/React__namespace.createElement(Child, { as: as, layout: "buster" }, children), /*#__PURE__*/React__namespace.createElement("aside", { className: "msk-layout-buster-slot msk-layout-buster-slot-right" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-buster-slot-container" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-layout-buster-slot-content" }, side)))))); }; PageLayout.displayName = 'PageLayout'; PageLayout.propTypes = { children: PropTypes__default["default"].node, /** * * Bookworm layout * 2400px max • 12 columns • 1 slot * Bookworm is a wide central container for dense applications. * * Potato layout * 144px max • 12 columns • 1 slot * The Potato layout is a single slot container that uses all * 12 columns. * * Sarge layout * 1440px max • 12 columns • 1 slot * The Sarge layout focuses the user by skipping 2 of the 12 * columns when content does not flow very much horizontally. * * Bullesye layout * 1440px max • 12 columns • 2 slots * Bullseye has two slots, where the left could be use for a * table of contents or search filters. * * Buster layout * 1440px max • 12 columns • 2 slots * Buster is a great layout for an article where the right slot * is useful for reading tools (like printing and sharing) and * also to link out to related articles or authors. * * Slink layout * 1440px max • 12 columns • 2 slots * Slink has two slots, where the left could be used for a * table of contents or search filters. This one differs from * Bullseye in that there is no extra gutter between the left * and main slots. It's wider too. * */ layout: PropTypes__default["default"].oneOf(['bookworm', 'potato', 'sarge', 'bullseye', 'buster', 'slink']), /** * Side content for Bullseye, Buster, and Slink layouts */ side: PropTypes__default["default"].node }; exports.PageLayout = PageLayout; exports["default"] = PageLayout;