UNPKG

@cimpress/react-components

Version:
161 lines (131 loc) 3.87 kB
var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; import * as React from 'react'; import { css, cx, injectGlobal } from '@emotion/css'; import memoizeOne from 'memoize-one'; export const spacing = [0, 1, 2, 4, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96]; function createSpacingUtilities(breakpointName) { const prefix = `${breakpointName ? `${breakpointName}\\:` : ''}`; return spacing .map(size => ` .${prefix}m-${size} { margin: ${size}px; } .${prefix}mt-${size} { margin-top: ${size}px; } .${prefix}mb-${size} { margin-bottom: ${size}px; } .${prefix}mr-${size} { margin-right: ${size}px; } .${prefix}ml-${size} { margin-left: ${size}px; } .${prefix}mx-${size} { margin-left: ${size}px; margin-right: ${size}px; } .${prefix}my-${size} { margin-top: ${size}px; margin-bottom: ${size}px; } .${prefix}ms-${size} { margin-inline-start: ${size}px; } .${prefix}me-${size} { margin-inline-end: ${size}px; } .${prefix}m-auto { margin: auto; } .${prefix}mt-auto { margin-top: auto; } .${prefix}mb-auto { margin-bottom: auto; } .${prefix}mr-auto { margin-right: auto; } .${prefix}p-${size} { padding: ${size}px; } .${prefix}pt-${size} { padding-top: ${size}px; } .${prefix}pb-${size} { padding-bottom: ${size}px; } .${prefix}pr-${size} { padding-right: ${size}px; } .${prefix}pl-${size} { padding-left: ${size}px; } .${prefix}px-${size} { padding-left: ${size}px; padding-right: ${size}px; } .${prefix}py-${size} { padding-top: ${size}px; padding-bottom: ${size}px; } .${prefix}ps-${size} { padding-inline-start: ${size}px; } .${prefix}pe-${size} { padding-inline-end: ${size}px; } .${prefix}p-auto { padding: auto; } .${prefix}pt-auto { padding-top: auto; } .${prefix}pb-auto { padding-bottom: auto; } .${prefix}pr-auto { padding-right: auto; } .${prefix}pl-auto { padding-left: auto; } `) .join('\n'); } // Memoize for lazy evaluation const createSpacingStyles = memoizeOne(() => css ` ${createSpacingUtilities()}; @media screen and (min-width: 640px) { ${createSpacingUtilities('sm')}; } @media screen and (min-width: 768px) { ${createSpacingUtilities('md')}; } @media screen and (min-width: 1024px) { ${createSpacingUtilities('lg')}; } @media screen and (min-width: 1280px) { ${createSpacingUtilities('xl')}; } `); export function unstable_injectGlobalSpacingStyles() { injectGlobal(createSpacingStyles()); } export function unstable_ScopedSpacingStyles(_a) { var { className } = _a, props = __rest(_a, ["className"]); return React.createElement("div", Object.assign({ className: cx(className, createSpacingStyles()) }, props)); } //# sourceMappingURL=spacing.js.map