@spark-web/columns 3.0.0-rc.0 → 3.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/dist/declarations/src/alignment.d.ts +14 -0
- package/dist/declarations/src/columns.d.ts +39 -0
- package/dist/declarations/src/index.d.ts +2 -0
- package/dist/spark-web-columns.cjs.d.ts +2 -2
- package/dist/spark-web-columns.cjs.dev.js +62 -0
- package/dist/spark-web-columns.cjs.js +6 -15
- package/dist/spark-web-columns.cjs.prod.js +62 -0
- package/dist/spark-web-columns.esm.js +58 -0
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @spark-web/columns
|
|
2
2
|
|
|
3
|
+
## 3.0.0-rc.2
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- add parser
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies []:
|
|
12
|
+
- @spark-web/theme@4.0.0-rc.2
|
|
13
|
+
- @spark-web/utils@2.0.0-rc.2
|
|
14
|
+
- @spark-web/box@2.0.0-rc.2
|
|
15
|
+
|
|
16
|
+
## 3.0.0-rc.1
|
|
17
|
+
|
|
18
|
+
### Major Changes
|
|
19
|
+
|
|
20
|
+
- rc
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- Updated dependencies []:
|
|
25
|
+
- @spark-web/theme@4.0.0-rc.1
|
|
26
|
+
- @spark-web/utils@2.0.0-rc.1
|
|
27
|
+
- @spark-web/box@2.0.0-rc.1
|
|
28
|
+
|
|
3
29
|
## 3.0.0-rc.0
|
|
4
30
|
|
|
5
31
|
### Major Changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare const alignYLookup: {
|
|
2
|
+
readonly top: "start";
|
|
3
|
+
readonly center: "center";
|
|
4
|
+
readonly bottom: "end";
|
|
5
|
+
readonly stretch: "stretch";
|
|
6
|
+
};
|
|
7
|
+
export declare type AlignY = keyof typeof alignYLookup;
|
|
8
|
+
export declare const alignYToAlignItems: (prop?: import("@spark-web/theme").ResponsiveProp<"center" | "top" | "bottom" | "stretch"> | undefined) => "center" | "start" | "stretch" | "end" | {
|
|
9
|
+
mobile: "center" | "start" | "stretch" | "end" | undefined;
|
|
10
|
+
tablet: "center" | "start" | "stretch" | "end" | undefined;
|
|
11
|
+
desktop: "center" | "start" | "stretch" | "end" | undefined;
|
|
12
|
+
wide: "center" | "start" | "stretch" | "end" | undefined;
|
|
13
|
+
} | undefined;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { BoxProps } from '@spark-web/box';
|
|
2
|
+
import type { BrighteTheme, ResponsiveProp, ResponsiveRangeProps } from '@spark-web/theme';
|
|
3
|
+
import type { DataAttributeMap } from '@spark-web/utils/internal';
|
|
4
|
+
import type { ReactNode } from 'react';
|
|
5
|
+
import type { AlignY } from "./alignment.js";
|
|
6
|
+
declare type Gap = ResponsiveProp<keyof Omit<BrighteTheme['spacing'], 'none'>>;
|
|
7
|
+
declare type ValidBoxProps = Omit<BoxProps, 'display' | 'alignItems' | 'gap' | 'flexDirection' | 'justifyContent' | 'flexWrap' | 'dangerouslySetInnerHTML'>;
|
|
8
|
+
export declare type ColumnsProps = {
|
|
9
|
+
/** Vertically align items within the container. */
|
|
10
|
+
alignY?: ResponsiveProp<AlignY>;
|
|
11
|
+
/** Elements representing each column. */
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
/** At which breakpoint, if any, should the columns collapse. */
|
|
14
|
+
collapseBelow?: ResponsiveRangeProps['below'];
|
|
15
|
+
/** Sets data attributes on the component. */
|
|
16
|
+
data?: DataAttributeMap;
|
|
17
|
+
/** The size of the gap between each column. */
|
|
18
|
+
gap?: Gap;
|
|
19
|
+
/** Define the relative width of each column. By default each column is the same width. */
|
|
20
|
+
template?: number[];
|
|
21
|
+
} & ValidBoxProps;
|
|
22
|
+
export declare const Columns: <Comp extends import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> = "div">(props: {
|
|
23
|
+
as?: Comp | undefined;
|
|
24
|
+
ref?: import("react").Ref<Comp extends "symbol" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "set" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | keyof HTMLElementTagNameMap ? (HTMLElementTagNameMap & Pick<SVGElementTagNameMap, "symbol" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "set" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view">)[Comp] : Comp extends new (...args: any) => any ? InstanceType<Comp> : undefined> | undefined;
|
|
25
|
+
} & Omit<import("react").PropsWithoutRef<import("react").ComponentProps<Comp>>, "as"> & {
|
|
26
|
+
/** Vertically align items within the container. */
|
|
27
|
+
alignY?: ResponsiveProp<"center" | "top" | "bottom" | "stretch"> | undefined;
|
|
28
|
+
/** Elements representing each column. */
|
|
29
|
+
children: ReactNode;
|
|
30
|
+
/** At which breakpoint, if any, should the columns collapse. */
|
|
31
|
+
collapseBelow?: ResponsiveRangeProps['below'];
|
|
32
|
+
/** Sets data attributes on the component. */
|
|
33
|
+
data?: DataAttributeMap | undefined;
|
|
34
|
+
/** The size of the gap between each column. */
|
|
35
|
+
gap?: Gap | undefined;
|
|
36
|
+
/** Define the relative width of each column. By default each column is the same width. */
|
|
37
|
+
template?: number[] | undefined;
|
|
38
|
+
} & ValidBoxProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
39
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
1
|
+
export * from "./declarations/src/index";
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bhcmstd2ViLWNvbHVtbnMuY2pzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuL2RlY2xhcmF0aW9ucy9zcmMvaW5kZXguZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
|
6
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
7
|
+
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
8
|
+
var react$1 = require('@emotion/react');
|
|
9
|
+
var box = require('@spark-web/box');
|
|
10
|
+
var theme = require('@spark-web/theme');
|
|
11
|
+
var ts = require('@spark-web/utils/ts');
|
|
12
|
+
var react = require('react');
|
|
13
|
+
var jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
14
|
+
|
|
15
|
+
var alignYLookup = {
|
|
16
|
+
top: 'start',
|
|
17
|
+
center: 'center',
|
|
18
|
+
bottom: 'end',
|
|
19
|
+
stretch: 'stretch'
|
|
20
|
+
};
|
|
21
|
+
var alignYToAlignItems = theme.createResponsiveMapFn(alignYLookup);
|
|
22
|
+
|
|
23
|
+
var _excluded = ["alignY", "collapseBelow", "data", "gap", "template"];
|
|
24
|
+
var Columns = ts.forwardRefWithAs(function (_ref, forwardedRef) {
|
|
25
|
+
var _ref$alignY = _ref.alignY,
|
|
26
|
+
alignY = _ref$alignY === void 0 ? 'top' : _ref$alignY,
|
|
27
|
+
collapseBelow = _ref.collapseBelow,
|
|
28
|
+
data = _ref.data,
|
|
29
|
+
gap = _ref.gap,
|
|
30
|
+
template = _ref.template,
|
|
31
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
32
|
+
var theme$1 = theme.useTheme();
|
|
33
|
+
var alignItems = alignYToAlignItems(alignY);
|
|
34
|
+
var count = react.Children.count(props.children);
|
|
35
|
+
var gridTemplateColumns = template ? template.map(function (c) {
|
|
36
|
+
return "".concat(c, "fr");
|
|
37
|
+
}).join(' ') : "repeat(".concat(count, ", 1fr)");
|
|
38
|
+
var _theme$utils$responsi = theme$1.utils.responsiveRange({
|
|
39
|
+
below: collapseBelow
|
|
40
|
+
}),
|
|
41
|
+
_theme$utils$responsi2 = _slicedToArray(_theme$utils$responsi, 4),
|
|
42
|
+
collapseOnMobile = _theme$utils$responsi2[0],
|
|
43
|
+
collapseOnTablet = _theme$utils$responsi2[1],
|
|
44
|
+
collapseOnDesktop = _theme$utils$responsi2[2],
|
|
45
|
+
collapseOnWide = _theme$utils$responsi2[3];
|
|
46
|
+
return jsxRuntime.jsx(box.Box, _objectSpread({
|
|
47
|
+
ref: forwardedRef,
|
|
48
|
+
css: react$1.css(theme$1.utils.resolveResponsiveProps({
|
|
49
|
+
alignItems: alignItems,
|
|
50
|
+
display: 'grid',
|
|
51
|
+
gap: theme$1.utils.mapResponsiveScale(gap, theme$1.spacing),
|
|
52
|
+
gridTemplateColumns: collapseBelow ? theme$1.utils.optimizeResponsiveArray([collapseOnMobile ? null : gridTemplateColumns, collapseOnTablet ? null : gridTemplateColumns, collapseOnDesktop ? null : gridTemplateColumns, collapseOnWide ? null : gridTemplateColumns]) : gridTemplateColumns,
|
|
53
|
+
// fix flex overflow bug that prevents text truncation
|
|
54
|
+
'> *': {
|
|
55
|
+
minWidth: 0
|
|
56
|
+
}
|
|
57
|
+
})),
|
|
58
|
+
data: data
|
|
59
|
+
}, props));
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
exports.Columns = Columns;
|
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
// this file might look strange and you might be wondering what it's for
|
|
3
|
-
// it's lets you import your source files by importing this entrypoint
|
|
4
|
-
// as you would import it if it was built with preconstruct build
|
|
5
|
-
// this file is slightly different to some others though
|
|
6
|
-
// it has a require hook which compiles your code with Babel
|
|
7
|
-
// this means that you don't have to set up @babel/register or anything like that
|
|
8
|
-
// but you can still require this module and it'll be compiled
|
|
1
|
+
'use strict';
|
|
9
2
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
unregister();
|
|
3
|
+
if (process.env.NODE_ENV === "production") {
|
|
4
|
+
module.exports = require("./spark-web-columns.cjs.prod.js");
|
|
5
|
+
} else {
|
|
6
|
+
module.exports = require("./spark-web-columns.cjs.dev.js");
|
|
7
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
|
6
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
7
|
+
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
8
|
+
var react$1 = require('@emotion/react');
|
|
9
|
+
var box = require('@spark-web/box');
|
|
10
|
+
var theme = require('@spark-web/theme');
|
|
11
|
+
var ts = require('@spark-web/utils/ts');
|
|
12
|
+
var react = require('react');
|
|
13
|
+
var jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
14
|
+
|
|
15
|
+
var alignYLookup = {
|
|
16
|
+
top: 'start',
|
|
17
|
+
center: 'center',
|
|
18
|
+
bottom: 'end',
|
|
19
|
+
stretch: 'stretch'
|
|
20
|
+
};
|
|
21
|
+
var alignYToAlignItems = theme.createResponsiveMapFn(alignYLookup);
|
|
22
|
+
|
|
23
|
+
var _excluded = ["alignY", "collapseBelow", "data", "gap", "template"];
|
|
24
|
+
var Columns = ts.forwardRefWithAs(function (_ref, forwardedRef) {
|
|
25
|
+
var _ref$alignY = _ref.alignY,
|
|
26
|
+
alignY = _ref$alignY === void 0 ? 'top' : _ref$alignY,
|
|
27
|
+
collapseBelow = _ref.collapseBelow,
|
|
28
|
+
data = _ref.data,
|
|
29
|
+
gap = _ref.gap,
|
|
30
|
+
template = _ref.template,
|
|
31
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
32
|
+
var theme$1 = theme.useTheme();
|
|
33
|
+
var alignItems = alignYToAlignItems(alignY);
|
|
34
|
+
var count = react.Children.count(props.children);
|
|
35
|
+
var gridTemplateColumns = template ? template.map(function (c) {
|
|
36
|
+
return "".concat(c, "fr");
|
|
37
|
+
}).join(' ') : "repeat(".concat(count, ", 1fr)");
|
|
38
|
+
var _theme$utils$responsi = theme$1.utils.responsiveRange({
|
|
39
|
+
below: collapseBelow
|
|
40
|
+
}),
|
|
41
|
+
_theme$utils$responsi2 = _slicedToArray(_theme$utils$responsi, 4),
|
|
42
|
+
collapseOnMobile = _theme$utils$responsi2[0],
|
|
43
|
+
collapseOnTablet = _theme$utils$responsi2[1],
|
|
44
|
+
collapseOnDesktop = _theme$utils$responsi2[2],
|
|
45
|
+
collapseOnWide = _theme$utils$responsi2[3];
|
|
46
|
+
return jsxRuntime.jsx(box.Box, _objectSpread({
|
|
47
|
+
ref: forwardedRef,
|
|
48
|
+
css: react$1.css(theme$1.utils.resolveResponsiveProps({
|
|
49
|
+
alignItems: alignItems,
|
|
50
|
+
display: 'grid',
|
|
51
|
+
gap: theme$1.utils.mapResponsiveScale(gap, theme$1.spacing),
|
|
52
|
+
gridTemplateColumns: collapseBelow ? theme$1.utils.optimizeResponsiveArray([collapseOnMobile ? null : gridTemplateColumns, collapseOnTablet ? null : gridTemplateColumns, collapseOnDesktop ? null : gridTemplateColumns, collapseOnWide ? null : gridTemplateColumns]) : gridTemplateColumns,
|
|
53
|
+
// fix flex overflow bug that prevents text truncation
|
|
54
|
+
'> *': {
|
|
55
|
+
minWidth: 0
|
|
56
|
+
}
|
|
57
|
+
})),
|
|
58
|
+
data: data
|
|
59
|
+
}, props));
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
exports.Columns = Columns;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
|
|
2
|
+
import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
|
|
3
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
4
|
+
import { css } from '@emotion/react';
|
|
5
|
+
import { Box } from '@spark-web/box';
|
|
6
|
+
import { createResponsiveMapFn, useTheme } from '@spark-web/theme';
|
|
7
|
+
import { forwardRefWithAs } from '@spark-web/utils/ts';
|
|
8
|
+
import { Children } from 'react';
|
|
9
|
+
import { jsx } from '@emotion/react/jsx-runtime';
|
|
10
|
+
|
|
11
|
+
var alignYLookup = {
|
|
12
|
+
top: 'start',
|
|
13
|
+
center: 'center',
|
|
14
|
+
bottom: 'end',
|
|
15
|
+
stretch: 'stretch'
|
|
16
|
+
};
|
|
17
|
+
var alignYToAlignItems = createResponsiveMapFn(alignYLookup);
|
|
18
|
+
|
|
19
|
+
var _excluded = ["alignY", "collapseBelow", "data", "gap", "template"];
|
|
20
|
+
var Columns = forwardRefWithAs(function (_ref, forwardedRef) {
|
|
21
|
+
var _ref$alignY = _ref.alignY,
|
|
22
|
+
alignY = _ref$alignY === void 0 ? 'top' : _ref$alignY,
|
|
23
|
+
collapseBelow = _ref.collapseBelow,
|
|
24
|
+
data = _ref.data,
|
|
25
|
+
gap = _ref.gap,
|
|
26
|
+
template = _ref.template,
|
|
27
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
28
|
+
var theme = useTheme();
|
|
29
|
+
var alignItems = alignYToAlignItems(alignY);
|
|
30
|
+
var count = Children.count(props.children);
|
|
31
|
+
var gridTemplateColumns = template ? template.map(function (c) {
|
|
32
|
+
return "".concat(c, "fr");
|
|
33
|
+
}).join(' ') : "repeat(".concat(count, ", 1fr)");
|
|
34
|
+
var _theme$utils$responsi = theme.utils.responsiveRange({
|
|
35
|
+
below: collapseBelow
|
|
36
|
+
}),
|
|
37
|
+
_theme$utils$responsi2 = _slicedToArray(_theme$utils$responsi, 4),
|
|
38
|
+
collapseOnMobile = _theme$utils$responsi2[0],
|
|
39
|
+
collapseOnTablet = _theme$utils$responsi2[1],
|
|
40
|
+
collapseOnDesktop = _theme$utils$responsi2[2],
|
|
41
|
+
collapseOnWide = _theme$utils$responsi2[3];
|
|
42
|
+
return jsx(Box, _objectSpread({
|
|
43
|
+
ref: forwardedRef,
|
|
44
|
+
css: css(theme.utils.resolveResponsiveProps({
|
|
45
|
+
alignItems: alignItems,
|
|
46
|
+
display: 'grid',
|
|
47
|
+
gap: theme.utils.mapResponsiveScale(gap, theme.spacing),
|
|
48
|
+
gridTemplateColumns: collapseBelow ? theme.utils.optimizeResponsiveArray([collapseOnMobile ? null : gridTemplateColumns, collapseOnTablet ? null : gridTemplateColumns, collapseOnDesktop ? null : gridTemplateColumns, collapseOnWide ? null : gridTemplateColumns]) : gridTemplateColumns,
|
|
49
|
+
// fix flex overflow bug that prevents text truncation
|
|
50
|
+
'> *': {
|
|
51
|
+
minWidth: 0
|
|
52
|
+
}
|
|
53
|
+
})),
|
|
54
|
+
data: data
|
|
55
|
+
}, props));
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
export { Columns };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spark-web/columns",
|
|
3
|
-
"version": "3.0.0-rc.
|
|
3
|
+
"version": "3.0.0-rc.2",
|
|
4
4
|
"homepage": "https://github.com/brighte-labs/spark-web#readme",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@babel/runtime": "^7.25.0",
|
|
19
19
|
"@emotion/react": "^11.13.5",
|
|
20
|
-
"@spark-web/box": "^2.0.0-rc.
|
|
21
|
-
"@spark-web/theme": "^4.0.0-rc.
|
|
22
|
-
"@spark-web/utils": "^2.0.0-rc.
|
|
20
|
+
"@spark-web/box": "^2.0.0-rc.2",
|
|
21
|
+
"@spark-web/theme": "^4.0.0-rc.2",
|
|
22
|
+
"@spark-web/utils": "^2.0.0-rc.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/react": "^18.2.0",
|