Skip to content

Commit 5201606

Browse files
committed
Implement runtime component
1 parent a00dc4e commit 5201606

File tree

5 files changed

+48
-0
lines changed

5 files changed

+48
-0
lines changed

packages/pigment-css-react/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
/processors/
22
/utils/
33
LICENSE
4+
/private-runtime/

packages/pigment-css-react/package.json

+9
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,15 @@
147147
},
148148
"require": "./build/RtlProvider.js",
149149
"default": "./build/RtlProvider.js"
150+
},
151+
"./private-runtime": {
152+
"types": "./private-runtime/index.d.ts",
153+
"import": {
154+
"types": "./private-runtime/index.d.mts",
155+
"default": "./private-runtime/index.mjs"
156+
},
157+
"require": "./private-runtime/index.js",
158+
"default": "./private-runtime/index.js"
150159
}
151160
},
152161
"nx": {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import * as React from 'react';
2+
import clsx from 'clsx';
3+
4+
function useSx(sx, className, style) {
5+
const sxClass = typeof sx === 'string' ? sx : sx?.className;
6+
const sxVars = sx && typeof sx !== 'string' ? sx.vars : undefined;
7+
const varStyles = {};
8+
9+
if (sxVars) {
10+
Object.entries(sxVars).forEach(([cssVariable, [value, isUnitLess]]) => {
11+
if (typeof value === 'string' || isUnitLess) {
12+
varStyles[`--${cssVariable}`] = value;
13+
} else {
14+
varStyles[`--${cssVariable}`] = `${value}px`;
15+
}
16+
});
17+
}
18+
19+
return {
20+
className: clsx(sxClass, className),
21+
style: {
22+
...varStyles,
23+
...style,
24+
},
25+
};
26+
}
27+
28+
/* eslint-disable-next-line react/prop-types */
29+
export const ForwardSx = React.forwardRef(({ sx, sxComponent, className, style, ...rest }, ref) => {
30+
const Component = sxComponent;
31+
return <Component ref={ref} {...rest} {...useSx(sx, className, style)} />;
32+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './ForwardSx';

packages/pigment-css-react/tsup.config.ts

+5
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,9 @@ export default defineConfig([
3131
],
3232
outDir: 'utils',
3333
},
34+
{
35+
...baseConfig,
36+
entry: ['./src/private-runtime/index.ts'],
37+
outDir: 'private-runtime',
38+
},
3439
]);

0 commit comments

Comments
 (0)