@spark-web/columns
Version:
--- title: Columns storybookPath: page-layout-columns--default isExperimentalPackage: false ---
66 lines (57 loc) • 2.51 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
var css = require('@emotion/css');
var box = require('@spark-web/box');
var theme = require('@spark-web/theme');
var ts = require('@spark-web/utils/ts');
var react = require('react');
var jsxRuntime = require('react/jsx-runtime');
var alignYLookup = {
top: 'start',
center: 'center',
bottom: 'end',
stretch: 'stretch'
};
var alignYToAlignItems = theme.createResponsiveMapFn(alignYLookup);
var _excluded = ["alignY", "collapseBelow", "data", "gap", "template"];
var Columns = ts.forwardRefWithAs(function (_ref, forwardedRef) {
var _ref$alignY = _ref.alignY,
alignY = _ref$alignY === void 0 ? 'top' : _ref$alignY,
collapseBelow = _ref.collapseBelow,
data = _ref.data,
gap = _ref.gap,
template = _ref.template,
props = _objectWithoutProperties(_ref, _excluded);
var theme$1 = theme.useTheme();
var alignItems = alignYToAlignItems(alignY);
var count = react.Children.count(props.children);
var gridTemplateColumns = template ? template.map(function (c) {
return "".concat(c, "fr");
}).join(' ') : "repeat(".concat(count, ", 1fr)");
var _theme$utils$responsi = theme$1.utils.responsiveRange({
below: collapseBelow
}),
_theme$utils$responsi2 = _slicedToArray(_theme$utils$responsi, 4),
collapseOnMobile = _theme$utils$responsi2[0],
collapseOnTablet = _theme$utils$responsi2[1],
collapseOnDesktop = _theme$utils$responsi2[2],
collapseOnWide = _theme$utils$responsi2[3];
return /*#__PURE__*/jsxRuntime.jsx(box.Box, _objectSpread({
ref: forwardedRef,
className: css.css(theme$1.utils.resolveResponsiveProps({
alignItems: alignItems,
display: 'grid',
gap: theme$1.utils.mapResponsiveScale(gap, theme$1.spacing),
gridTemplateColumns: collapseBelow ? theme$1.utils.optimizeResponsiveArray([collapseOnMobile ? null : gridTemplateColumns, collapseOnTablet ? null : gridTemplateColumns, collapseOnDesktop ? null : gridTemplateColumns, collapseOnWide ? null : gridTemplateColumns]) : gridTemplateColumns,
// fix flex overflow bug that prevents text truncation
'> *': {
minWidth: 0
}
})),
data: data
}, props));
});
exports.Columns = Columns;