@animus-ui/system 0.1.0-next.38 → 0.1.0-next.40
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/README.md +127 -0
- package/dist/SystemBuilder.d.ts +5 -1
- package/dist/SystemBuilder.d.ts.map +1 -1
- package/dist/compose.d.ts +10 -5
- package/dist/compose.d.ts.map +1 -1
- package/dist/{createClassResolver-u1d160An.js → createClassResolver-Qh7lL0eP.js} +42 -15
- package/dist/groups/index.d.ts +32 -0
- package/dist/groups/index.d.ts.map +1 -1
- package/dist/groups/index.js +47 -15
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +197 -43
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime-entry.js +1 -1
- package/dist/selectors.d.ts +40 -0
- package/dist/selectors.d.ts.map +1 -0
- package/dist/types/component.d.ts +14 -6
- package/dist/types/component.d.ts.map +1 -1
- package/dist/types/config.d.ts +13 -0
- package/dist/types/config.d.ts.map +1 -1
- package/package.json +18 -3
package/README.md
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# @animus-ui/system
|
|
2
|
+
|
|
3
|
+
Design system builder for React. Type-driven CSS-in-JS with zero runtime — styles extract to static CSS at build time.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @animus-ui/system
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Pair with a bundler plugin for extraction:
|
|
12
|
+
- [`@animus-ui/vite-plugin`](https://github.com/codecaaron/animus/tree/main/packages/vite-plugin) for Vite
|
|
13
|
+
- [`@animus-ui/next-plugin`](https://github.com/codecaaron/animus/tree/main/packages/next-plugin) for Next.js
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
### 1. Define tokens
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
import { createTheme } from '@animus-ui/system';
|
|
21
|
+
|
|
22
|
+
const tokens = createTheme()
|
|
23
|
+
.addBreakpoints({ sm: 480, md: 768, lg: 1024 })
|
|
24
|
+
.addColors({
|
|
25
|
+
gray: { 100: '#f0f0f0', 800: '#1a1a1a' },
|
|
26
|
+
blue: { 400: '#3d94ff', 700: '#003d99' },
|
|
27
|
+
})
|
|
28
|
+
.addColorModes('dark', {
|
|
29
|
+
dark: { primary: 'blue.400', bg: 'gray.800', text: 'gray.100' },
|
|
30
|
+
light: { primary: 'blue.700', bg: 'gray.100', text: 'gray.800' },
|
|
31
|
+
})
|
|
32
|
+
.addScale({ name: 'space', values: { sm: '0.5rem', md: '1rem', lg: '1.5rem' } })
|
|
33
|
+
.build();
|
|
34
|
+
|
|
35
|
+
declare module '@animus-ui/system' {
|
|
36
|
+
interface Theme extends typeof tokens {}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 2. Create system with prop groups
|
|
41
|
+
|
|
42
|
+
Pre-built groups ship with the package. Compose them into your own semantic groups:
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
import { createSystem } from '@animus-ui/system';
|
|
46
|
+
import { space, color, typography, border, shadows, background, flex, layout } from '@animus-ui/system/groups';
|
|
47
|
+
|
|
48
|
+
export const { system: ds, createGlobalStyles } = createSystem()
|
|
49
|
+
.addGroup('surface', { ...color, ...border, ...shadows, ...background })
|
|
50
|
+
.addGroup('space', space)
|
|
51
|
+
.addGroup('text', typography)
|
|
52
|
+
.addGroup('arrange', { ...flex, ...layout })
|
|
53
|
+
.build();
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Each group becomes an opt-in set of props that components can enable via `.system()`:
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
const Box = ds.styles({}).system({ surface: true, space: true }).asElement('div');
|
|
60
|
+
|
|
61
|
+
// Box now accepts: color, bg, border, shadow, p, m, gap, etc.
|
|
62
|
+
<Box bg="surface" p="md" borderBottom="1" />
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 3. Build components
|
|
66
|
+
|
|
67
|
+
```tsx
|
|
68
|
+
const Button = ds
|
|
69
|
+
.styles({
|
|
70
|
+
display: 'inline-flex',
|
|
71
|
+
alignItems: 'center',
|
|
72
|
+
cursor: 'pointer',
|
|
73
|
+
border: 'none',
|
|
74
|
+
borderRadius: 4,
|
|
75
|
+
fontFamily: '{fonts.body}',
|
|
76
|
+
})
|
|
77
|
+
.variant({
|
|
78
|
+
size: {
|
|
79
|
+
prop: 'size',
|
|
80
|
+
variants: {
|
|
81
|
+
small: { fontSize: 14, padding: '{space.sm}' },
|
|
82
|
+
large: { fontSize: 18, padding: '{space.md} {space.lg}' },
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
intent: {
|
|
86
|
+
prop: 'intent',
|
|
87
|
+
variants: {
|
|
88
|
+
primary: { backgroundColor: '{colors.primary}', color: 'white' },
|
|
89
|
+
ghost: { backgroundColor: 'transparent', color: '{colors.primary}' },
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
})
|
|
93
|
+
.states({
|
|
94
|
+
disabled: { opacity: 0.5, pointerEvents: 'none' },
|
|
95
|
+
})
|
|
96
|
+
.system({ space: true })
|
|
97
|
+
.asElement('button');
|
|
98
|
+
|
|
99
|
+
<Button size="large" intent="primary" m={8} disabled />;
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Builder Chain
|
|
103
|
+
|
|
104
|
+
The chain enforces cascade ordering — each method maps to a CSS `@layer`:
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
ds.styles() → @layer base
|
|
108
|
+
.variant() → @layer variants
|
|
109
|
+
.compound() → @layer compounds
|
|
110
|
+
.states() → @layer states
|
|
111
|
+
.system() → @layer system
|
|
112
|
+
.props() → @layer custom
|
|
113
|
+
.asElement() → typed React component
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
The type system prevents calling methods out of order. `.variant()` after `.states()` is a type error.
|
|
117
|
+
|
|
118
|
+
## Exports
|
|
119
|
+
|
|
120
|
+
| Path | What's in it |
|
|
121
|
+
|------|-------------|
|
|
122
|
+
| `@animus-ui/system` | Full API — builder, theme, runtime, types |
|
|
123
|
+
| `@animus-ui/system/groups` | Pre-built prop groups: `space`, `color`, `typography`, `layout`, `flex`, `grid`, `border`, `shadows`, `background`, `positioning`, `transitions` |
|
|
124
|
+
|
|
125
|
+
## License
|
|
126
|
+
|
|
127
|
+
MIT
|
package/dist/SystemBuilder.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Animus } from './Animus';
|
|
2
|
+
import { type SelectorAliasMap } from './selectors';
|
|
2
3
|
import { NamedTransform } from './transforms/createTransform';
|
|
3
4
|
import { Prop } from './types/config';
|
|
4
5
|
export type GlobalStyleMap = Record<string, Record<string, any>>;
|
|
@@ -10,7 +11,8 @@ export interface GlobalStyleBlock {
|
|
|
10
11
|
export type GlobalStylesFactory = (styles: GlobalStyleMap) => GlobalStyleBlock;
|
|
11
12
|
export declare class SystemBuilder<PropReg extends Record<string, Prop> = {}, GroupReg extends Record<string, (keyof PropReg)[]> = {}> {
|
|
12
13
|
#private;
|
|
13
|
-
constructor(propRegistry?: PropReg, groupRegistry?: GroupReg);
|
|
14
|
+
constructor(propRegistry?: PropReg, groupRegistry?: GroupReg, selectorRegistry?: SelectorAliasMap);
|
|
15
|
+
addSelectors(selectors: Record<string, string>): SystemBuilder<PropReg, GroupReg>;
|
|
14
16
|
addGroup<Name extends string, Conf extends Record<string, Prop>>(name: Name extends keyof PropReg ? never : Name, config: Conf): SystemBuilder<PropReg & Conf, GroupReg & Record<Name, (keyof Conf)[]>>;
|
|
15
17
|
addProps<Conf extends Record<string, Prop> & Partial<Record<Extract<keyof GroupReg, string>, never>>>(config: Conf): SystemBuilder<PropReg & Conf, GroupReg>;
|
|
16
18
|
includes(_systems: readonly {
|
|
@@ -28,6 +30,8 @@ export interface SerializedConfig {
|
|
|
28
30
|
propConfig: string;
|
|
29
31
|
groupRegistry: string;
|
|
30
32
|
transforms: Record<string, NamedTransform>;
|
|
33
|
+
selectorAliases: string;
|
|
34
|
+
selectorOrder: string;
|
|
31
35
|
}
|
|
32
36
|
export declare function createSystem(): SystemBuilder<{}, {}>;
|
|
33
37
|
//# sourceMappingURL=SystemBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemBuilder.d.ts","sourceRoot":"","sources":["../src/SystemBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAWtC,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,CACP,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GACzC,cAAc,CAAC;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,gBAAgB,CAAC;AAE/E,qBAAa,aAAa,CACxB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EACzC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE;;
|
|
1
|
+
{"version":3,"file":"SystemBuilder.d.ts","sourceRoot":"","sources":["../src/SystemBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAWtC,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,CACP,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GACzC,cAAc,CAAC;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,gBAAgB,CAAC;AAE/E,qBAAa,aAAa,CACxB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EACzC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE;;gBAOrD,YAAY,CAAC,EAAE,OAAO,EACtB,aAAa,CAAC,EAAE,QAAQ,EACxB,gBAAgB,CAAC,EAAE,gBAAgB;IAOrC,YAAY,CACV,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;IAKnC,QAAQ,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAC7D,IAAI,EAAE,IAAI,SAAS,MAAM,OAAO,GAAG,KAAK,GAAG,IAAI,EAC/C,MAAM,EAAE,IAAI,GACX,aAAa,CAAC,OAAO,GAAG,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;IAsCzE,QAAQ,CACN,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,QAAQ,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,EACzD,MAAM,EAAE,IAAI,GAAG,aAAa,CAAC,OAAO,GAAG,IAAI,EAAE,QAAQ,CAAC;IAqCxD,QAAQ,CACN,QAAQ,EAAE,SAAS;QAAE,QAAQ,IAAI,gBAAgB,CAAA;KAAE,EAAE,GACpD,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;IAQnC,KAAK,IAAI;QACP,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1C,kBAAkB,EAAE,mBAAmB,CAAC;KACzC;CAiCF;AAED,MAAM,MAAM,cAAc,CACxB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EACpC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,OAAO,CAAC,EAAE,CAAC,IAChD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG;IAC9B,QAAQ,IAAI,gBAAgB,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AA0DD,wBAAgB,YAAY,0BAE3B"}
|
package/dist/compose.d.ts
CHANGED
|
@@ -2,13 +2,17 @@ import type { AnyBrandedComponent, ComposedFamily, SharedConfig } from './types/
|
|
|
2
2
|
/**
|
|
3
3
|
* Compose independently-authored Animus components into a sealed,
|
|
4
4
|
* namespaced component family with shared variant propagation via
|
|
5
|
-
*
|
|
5
|
+
* CSS cascade.
|
|
6
6
|
*
|
|
7
7
|
* - **Enforce**: TypeScript ensures shared keys exist on Root (the
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* - **Wire**:
|
|
11
|
-
*
|
|
8
|
+
* cascade source). Non-Root slots that have the key consume it from
|
|
9
|
+
* CSS inheritance; slots without the key are unaffected.
|
|
10
|
+
* - **Wire**: The extraction pipeline emits composed variant CSS
|
|
11
|
+
* rules — two per shared variant option per child (inheritance +
|
|
12
|
+
* override) within @layer variants.
|
|
13
|
+
* - **Context**: When `context: true`, shared variant prop values
|
|
14
|
+
* are also propagated via React context for portal-mounted children
|
|
15
|
+
* that CSS descendant selectors cannot reach.
|
|
12
16
|
* - **Seal**: Output components are plain ForwardRefExoticComponent —
|
|
13
17
|
* no `.extend()`, no builder methods. One-way door from builder-land
|
|
14
18
|
* to component-land.
|
|
@@ -16,5 +20,6 @@ import type { AnyBrandedComponent, ComposedFamily, SharedConfig } from './types/
|
|
|
16
20
|
export declare function compose<Slots extends Record<string, AnyBrandedComponent>, const Shared extends SharedConfig<Slots>>(slots: Slots, options: {
|
|
17
21
|
shared: Shared;
|
|
18
22
|
name?: string;
|
|
23
|
+
context?: boolean;
|
|
19
24
|
}): ComposedFamily<Slots>;
|
|
20
25
|
//# sourceMappingURL=compose.d.ts.map
|
package/dist/compose.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,YAAY,EACb,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,OAAO,CACrB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACjD,KAAK,CAAC,MAAM,SAAS,YAAY,CAAC,KAAK,CAAC,EAExC,KAAK,EAAE,KAAK,EAKZ,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5D,cAAc,CAAC,KAAK,CAAC,CA0DvB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createElement, forwardRef } from "react";
|
|
1
|
+
import { Children, cloneElement, createElement, forwardRef, isValidElement } from "react";
|
|
2
2
|
import { UNITLESS_PROPERTIES } from "@animus-ui/properties";
|
|
3
3
|
//#region src/runtime/resolveClasses.ts
|
|
4
4
|
/**
|
|
@@ -106,6 +106,17 @@ function resolveClasses(baseClassName, props, config, systemPropMap, dynamicProp
|
|
|
106
106
|
//#endregion
|
|
107
107
|
//#region src/runtime/index.ts
|
|
108
108
|
/**
|
|
109
|
+
* Merge multiple refs (callback or object) into a single callback ref.
|
|
110
|
+
* Creates a new callback on each call — no memoization possible in a
|
|
111
|
+
* hook-free runtime (RSC compatibility). Matches @radix-ui/react-compose-refs.
|
|
112
|
+
*/
|
|
113
|
+
function composeRefs(...refs) {
|
|
114
|
+
return (node) => {
|
|
115
|
+
for (const ref of refs) if (typeof ref === "function") ref(node);
|
|
116
|
+
else if (ref) ref.current = node;
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
109
120
|
* Create a lightweight component that applies extracted CSS class names.
|
|
110
121
|
* Replaces Emotion's styled() for extracted components.
|
|
111
122
|
*
|
|
@@ -126,6 +137,7 @@ function createComponent(element, className, config, systemPropMap, dynamicPropC
|
|
|
126
137
|
const systemPropNames = config.systemPropNames || [];
|
|
127
138
|
const filterProps = new Set([
|
|
128
139
|
"as",
|
|
140
|
+
"asChild",
|
|
129
141
|
...variantProps,
|
|
130
142
|
...stateProps,
|
|
131
143
|
...systemPropNames
|
|
@@ -133,10 +145,33 @@ function createComponent(element, className, config, systemPropMap, dynamicPropC
|
|
|
133
145
|
let prevDynKey = "";
|
|
134
146
|
let prevDynStyle = null;
|
|
135
147
|
const Component = forwardRef((props, ref) => {
|
|
136
|
-
const renderElement = props.as || element;
|
|
137
|
-
const isComponentElement = typeof renderElement !== "string";
|
|
138
148
|
const { classes, dynamicStyle } = resolveClasses(className, props, config, systemPropMap, dynamicPropConfig);
|
|
139
149
|
if (props.className) classes.push(props.className);
|
|
150
|
+
if (dynamicStyle) {
|
|
151
|
+
const dynKey = Object.entries(dynamicStyle).map(([k, v]) => `${k}:${v}`).join("|");
|
|
152
|
+
if (dynKey !== prevDynKey) {
|
|
153
|
+
prevDynKey = dynKey;
|
|
154
|
+
prevDynStyle = dynamicStyle;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (props.asChild) {
|
|
158
|
+
const child = Children.only(props.children);
|
|
159
|
+
if (!isValidElement(child)) throw new Error(`${className}: asChild requires a single React element as children`);
|
|
160
|
+
const childRef = child.ref;
|
|
161
|
+
const mergedClassName = [classes.join(" "), child.props.className].filter(Boolean).join(" ");
|
|
162
|
+
const mergedStyle = prevDynStyle || props.style || child.props.style ? {
|
|
163
|
+
...props.style,
|
|
164
|
+
...child.props.style,
|
|
165
|
+
...prevDynStyle
|
|
166
|
+
} : void 0;
|
|
167
|
+
return cloneElement(child, {
|
|
168
|
+
ref: composeRefs(ref, childRef),
|
|
169
|
+
className: mergedClassName,
|
|
170
|
+
...mergedStyle ? { style: mergedStyle } : {}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
const renderElement = props.as || element;
|
|
174
|
+
const isComponentElement = typeof renderElement !== "string";
|
|
140
175
|
const domProps = {
|
|
141
176
|
ref,
|
|
142
177
|
className: classes.join(" ")
|
|
@@ -147,21 +182,13 @@ function createComponent(element, className, config, systemPropMap, dynamicPropC
|
|
|
147
182
|
if (!isComponentElement) {}
|
|
148
183
|
domProps[key] = value;
|
|
149
184
|
}
|
|
150
|
-
if (dynamicStyle) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
prevDynStyle = dynamicStyle;
|
|
155
|
-
}
|
|
156
|
-
domProps.style = props.style ? {
|
|
157
|
-
...props.style,
|
|
158
|
-
...prevDynStyle
|
|
159
|
-
} : prevDynStyle;
|
|
160
|
-
}
|
|
185
|
+
if (prevDynStyle && dynamicStyle) domProps.style = props.style ? {
|
|
186
|
+
...props.style,
|
|
187
|
+
...prevDynStyle
|
|
188
|
+
} : prevDynStyle;
|
|
161
189
|
return createElement(renderElement, domProps);
|
|
162
190
|
});
|
|
163
191
|
Component.displayName = className;
|
|
164
|
-
Component.__variantKeys = new Set(variantProps);
|
|
165
192
|
return Object.assign(Component, { extend: () => {
|
|
166
193
|
throw new Error(`Cannot extend extracted component "${className}" at runtime. Extensions must be authored in source code using the builder API (e.g. import the original component and call .extend() there) so the extraction pipeline can resolve them at build time.`);
|
|
167
194
|
} });
|
package/dist/groups/index.d.ts
CHANGED
|
@@ -55,122 +55,146 @@ export declare const border: {
|
|
|
55
55
|
readonly border: {
|
|
56
56
|
readonly property: "border";
|
|
57
57
|
readonly scale: "borders";
|
|
58
|
+
readonly strict: false;
|
|
58
59
|
readonly transform: import("../transforms").NamedTransform;
|
|
59
60
|
};
|
|
60
61
|
readonly borderX: {
|
|
61
62
|
readonly property: "border";
|
|
62
63
|
readonly properties: readonly ["borderLeft", "borderRight"];
|
|
63
64
|
readonly scale: "borders";
|
|
65
|
+
readonly strict: false;
|
|
64
66
|
readonly transform: import("../transforms").NamedTransform;
|
|
65
67
|
};
|
|
66
68
|
readonly borderY: {
|
|
67
69
|
readonly property: "border";
|
|
68
70
|
readonly properties: readonly ["borderTop", "borderBottom"];
|
|
69
71
|
readonly scale: "borders";
|
|
72
|
+
readonly strict: false;
|
|
70
73
|
readonly transform: import("../transforms").NamedTransform;
|
|
71
74
|
};
|
|
72
75
|
readonly borderTop: {
|
|
73
76
|
readonly property: "borderTop";
|
|
74
77
|
readonly scale: "borders";
|
|
78
|
+
readonly strict: false;
|
|
75
79
|
readonly transform: import("../transforms").NamedTransform;
|
|
76
80
|
};
|
|
77
81
|
readonly borderRight: {
|
|
78
82
|
readonly property: "borderRight";
|
|
79
83
|
readonly scale: "borders";
|
|
84
|
+
readonly strict: false;
|
|
80
85
|
readonly transform: import("../transforms").NamedTransform;
|
|
81
86
|
};
|
|
82
87
|
readonly borderBottom: {
|
|
83
88
|
readonly property: "borderBottom";
|
|
84
89
|
readonly scale: "borders";
|
|
90
|
+
readonly strict: false;
|
|
85
91
|
readonly transform: import("../transforms").NamedTransform;
|
|
86
92
|
};
|
|
87
93
|
readonly borderLeft: {
|
|
88
94
|
readonly property: "borderLeft";
|
|
89
95
|
readonly scale: "borders";
|
|
96
|
+
readonly strict: false;
|
|
90
97
|
readonly transform: import("../transforms").NamedTransform;
|
|
91
98
|
};
|
|
92
99
|
readonly borderWidth: {
|
|
93
100
|
readonly property: "borderWidth";
|
|
94
101
|
readonly scale: "borderWidths";
|
|
102
|
+
readonly strict: false;
|
|
95
103
|
};
|
|
96
104
|
readonly borderXWidth: {
|
|
97
105
|
readonly property: "borderWidth";
|
|
98
106
|
readonly properties: readonly ["borderLeftWidth", "borderRightWidth"];
|
|
99
107
|
readonly scale: "borderWidths";
|
|
108
|
+
readonly strict: false;
|
|
100
109
|
};
|
|
101
110
|
readonly borderYWidth: {
|
|
102
111
|
readonly property: "borderWidth";
|
|
103
112
|
readonly properties: readonly ["borderTopWidth", "borderBottomWidth"];
|
|
104
113
|
readonly scale: "borderWidths";
|
|
114
|
+
readonly strict: false;
|
|
105
115
|
};
|
|
106
116
|
readonly borderLeftWidth: {
|
|
107
117
|
readonly property: "borderLeftWidth";
|
|
108
118
|
readonly scale: "borderWidths";
|
|
119
|
+
readonly strict: false;
|
|
109
120
|
};
|
|
110
121
|
readonly borderRightWidth: {
|
|
111
122
|
readonly property: "borderRightWidth";
|
|
112
123
|
readonly scale: "borderWidths";
|
|
124
|
+
readonly strict: false;
|
|
113
125
|
};
|
|
114
126
|
readonly borderTopWidth: {
|
|
115
127
|
readonly property: "borderTopWidth";
|
|
116
128
|
readonly scale: "borderWidths";
|
|
129
|
+
readonly strict: false;
|
|
117
130
|
};
|
|
118
131
|
readonly borderBottomWidth: {
|
|
119
132
|
readonly property: "borderBottomWidth";
|
|
120
133
|
readonly scale: "borderWidths";
|
|
134
|
+
readonly strict: false;
|
|
121
135
|
};
|
|
122
136
|
readonly borderRadius: {
|
|
123
137
|
readonly property: "borderRadius";
|
|
124
138
|
readonly scale: "radii";
|
|
139
|
+
readonly strict: false;
|
|
125
140
|
readonly transform: import("../transforms").NamedTransform;
|
|
126
141
|
};
|
|
127
142
|
readonly rounded: {
|
|
128
143
|
readonly property: "borderRadius";
|
|
129
144
|
readonly scale: "radii";
|
|
145
|
+
readonly strict: false;
|
|
130
146
|
readonly transform: import("../transforms").NamedTransform;
|
|
131
147
|
};
|
|
132
148
|
readonly borderLeftRadius: {
|
|
133
149
|
readonly property: "borderRadius";
|
|
134
150
|
readonly properties: readonly ["borderTopLeftRadius", "borderBottomLeftRadius"];
|
|
135
151
|
readonly scale: "radii";
|
|
152
|
+
readonly strict: false;
|
|
136
153
|
readonly transform: import("../transforms").NamedTransform;
|
|
137
154
|
};
|
|
138
155
|
readonly borderTopRadius: {
|
|
139
156
|
readonly property: "borderRadius";
|
|
140
157
|
readonly properties: readonly ["borderTopLeftRadius", "borderTopRightRadius"];
|
|
141
158
|
readonly scale: "radii";
|
|
159
|
+
readonly strict: false;
|
|
142
160
|
readonly transform: import("../transforms").NamedTransform;
|
|
143
161
|
};
|
|
144
162
|
readonly borderBottomRadius: {
|
|
145
163
|
readonly property: "borderRadius";
|
|
146
164
|
readonly properties: readonly ["borderBottomLeftRadius", "borderBottomRightRadius"];
|
|
147
165
|
readonly scale: "radii";
|
|
166
|
+
readonly strict: false;
|
|
148
167
|
readonly transform: import("../transforms").NamedTransform;
|
|
149
168
|
};
|
|
150
169
|
readonly borderRightRadius: {
|
|
151
170
|
readonly property: "borderRadius";
|
|
152
171
|
readonly properties: readonly ["borderTopRightRadius", "borderBottomRightRadius"];
|
|
153
172
|
readonly scale: "radii";
|
|
173
|
+
readonly strict: false;
|
|
154
174
|
readonly transform: import("../transforms").NamedTransform;
|
|
155
175
|
};
|
|
156
176
|
readonly borderTopLeftRadius: {
|
|
157
177
|
readonly property: "borderTopLeftRadius";
|
|
158
178
|
readonly scale: "radii";
|
|
179
|
+
readonly strict: false;
|
|
159
180
|
readonly transform: import("../transforms").NamedTransform;
|
|
160
181
|
};
|
|
161
182
|
readonly borderTopRightRadius: {
|
|
162
183
|
readonly property: "borderTopRightRadius";
|
|
163
184
|
readonly scale: "radii";
|
|
185
|
+
readonly strict: false;
|
|
164
186
|
readonly transform: import("../transforms").NamedTransform;
|
|
165
187
|
};
|
|
166
188
|
readonly borderBottomRightRadius: {
|
|
167
189
|
readonly property: "borderBottomRightRadius";
|
|
168
190
|
readonly scale: "radii";
|
|
191
|
+
readonly strict: false;
|
|
169
192
|
readonly transform: import("../transforms").NamedTransform;
|
|
170
193
|
};
|
|
171
194
|
readonly borderBottomLeftRadius: {
|
|
172
195
|
readonly property: "borderBottomLeftRadius";
|
|
173
196
|
readonly scale: "radii";
|
|
197
|
+
readonly strict: false;
|
|
174
198
|
readonly transform: import("../transforms").NamedTransform;
|
|
175
199
|
};
|
|
176
200
|
readonly borderStyle: {
|
|
@@ -430,24 +454,29 @@ export declare const positioning: {
|
|
|
430
454
|
readonly zIndex: {
|
|
431
455
|
readonly property: "zIndex";
|
|
432
456
|
readonly scale: "zIndices";
|
|
457
|
+
readonly strict: false;
|
|
433
458
|
};
|
|
434
459
|
readonly opacity: {
|
|
435
460
|
readonly property: "opacity";
|
|
436
461
|
readonly scale: "opacities";
|
|
462
|
+
readonly strict: false;
|
|
437
463
|
};
|
|
438
464
|
};
|
|
439
465
|
export declare const shadows: {
|
|
440
466
|
readonly boxShadow: {
|
|
441
467
|
readonly property: "boxShadow";
|
|
442
468
|
readonly scale: "shadows";
|
|
469
|
+
readonly strict: false;
|
|
443
470
|
};
|
|
444
471
|
readonly shadow: {
|
|
445
472
|
readonly property: "boxShadow";
|
|
446
473
|
readonly scale: "shadows";
|
|
474
|
+
readonly strict: false;
|
|
447
475
|
};
|
|
448
476
|
readonly textShadow: {
|
|
449
477
|
readonly property: "textShadow";
|
|
450
478
|
readonly scale: "shadows";
|
|
479
|
+
readonly strict: false;
|
|
451
480
|
};
|
|
452
481
|
};
|
|
453
482
|
export declare const layout: {
|
|
@@ -570,10 +599,12 @@ export declare const typography: {
|
|
|
570
599
|
readonly fontWeight: {
|
|
571
600
|
readonly property: "fontWeight";
|
|
572
601
|
readonly scale: "fontWeights";
|
|
602
|
+
readonly strict: false;
|
|
573
603
|
};
|
|
574
604
|
readonly lineHeight: {
|
|
575
605
|
readonly property: "lineHeight";
|
|
576
606
|
readonly scale: "lineHeights";
|
|
607
|
+
readonly strict: false;
|
|
577
608
|
};
|
|
578
609
|
readonly fontSize: {
|
|
579
610
|
readonly property: "fontSize";
|
|
@@ -582,6 +613,7 @@ export declare const typography: {
|
|
|
582
613
|
readonly letterSpacing: {
|
|
583
614
|
readonly property: "letterSpacing";
|
|
584
615
|
readonly scale: "letterSpacings";
|
|
616
|
+
readonly strict: false;
|
|
585
617
|
};
|
|
586
618
|
readonly textAlign: {
|
|
587
619
|
readonly property: "textAlign";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/groups/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBR,CAAC;AAEX,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/groups/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBR,CAAC;AAEX,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2IT,CAAC;AA8BX,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQP,CAAC;AAWX,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCP,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUb,CAAC;AAEX,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAed,CAAC;AAEX,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;CAIV,CAAC;AAEX,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CT,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBb,CAAC;AAwCX,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGR,CAAC;AAEX,eAAO,MAAM,WAAW;;;;;;;;;;;CAWd,CAAC;AAEX,eAAO,MAAM,IAAI;;;;;CAEP,CAAC;AAEX,eAAO,MAAM,IAAI;;;;CAEP,CAAC"}
|