@stylexjs/stylex 0.16.3 → 0.17.0

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.
@@ -27,6 +27,9 @@ import type {
27
27
  VarGroup,
28
28
  PositionTry,
29
29
  ViewTransitionClass,
30
+ StyleX$When,
31
+ MapNamespace,
32
+ StyleX$DefineMarker,
30
33
  } from './types/StyleXTypes';
31
34
  import type { ValueWithDefault } from './types/StyleXUtils';
32
35
  import * as Types from './types/VarTypes';
@@ -51,6 +54,7 @@ export declare const create: StyleX$Create;
51
54
  export declare const createTheme: StyleX$CreateTheme;
52
55
  export declare const defineConsts: StyleX$DefineConsts;
53
56
  export declare const defineVars: StyleX$DefineVars;
57
+ export declare const defineMarker: StyleX$DefineMarker;
54
58
  export declare const firstThatWorks: <T extends string | number>(
55
59
  ..._styles: ReadonlyArray<T>
56
60
  ) => ReadonlyArray<T>;
@@ -73,14 +77,10 @@ export declare function props(
73
77
  export declare const viewTransitionClass: (
74
78
  _viewTransitionClass: ViewTransitionClass,
75
79
  ) => string;
76
- export declare const defaultMarker: () => StaticStyles;
77
- export declare const when: {
78
- ancestor: (_pseudo?: string) => string;
79
- descendant: (_pseudo?: string) => string;
80
- siblingBefore: (_pseudo?: string) => string;
81
- siblingAfter: (_pseudo?: string) => string;
82
- anySibling: (_pseudo?: string) => string;
83
- };
80
+ export declare const defaultMarker: () => MapNamespace<
81
+ Readonly<{ marker: 'default-marker' }>
82
+ >;
83
+ export declare const when: StyleX$When;
84
84
  export declare const types: {
85
85
  angle: <T extends string | 0 = string | 0>(
86
86
  _v: ValueWithDefault<T>,
@@ -132,7 +132,8 @@ type IStyleX = {
132
132
  createTheme: StyleX$CreateTheme;
133
133
  defineConsts: StyleX$DefineConsts;
134
134
  defineVars: StyleX$DefineVars;
135
- defaultMarker: () => StaticStyles;
135
+ defaultMarker: () => MapNamespace<Readonly<{ marker: 'default-marker' }>>;
136
+ defineMarker: StyleX$DefineMarker;
136
137
  firstThatWorks: <T extends string | number>(
137
138
  ...v: ReadonlyArray<T>
138
139
  ) => ReadonlyArray<T>;
package/lib/cjs/stylex.js CHANGED
@@ -146,6 +146,9 @@ const defineConsts = function stylexDefineConsts(_styles) {
146
146
  const defineVars = function stylexDefineVars(_styles) {
147
147
  throw errorForFn('defineVars');
148
148
  };
149
+ const defineMarker = () => {
150
+ throw errorForFn('defineMarker');
151
+ };
149
152
  const firstThatWorks = (..._styles) => {
150
153
  throw errorForFn('firstThatWorks');
151
154
  };
@@ -176,19 +179,19 @@ const defaultMarker = () => {
176
179
  throw errorForFn('defaultMarker');
177
180
  };
178
181
  const when = {
179
- ancestor: _pseudo => {
182
+ ancestor: _p => {
180
183
  throw errorForFn('when.ancestor');
181
184
  },
182
- descendant: _pseudo => {
185
+ descendant: _p => {
183
186
  throw errorForFn('when.descendant');
184
187
  },
185
- siblingBefore: _pseudo => {
188
+ siblingBefore: _p => {
186
189
  throw errorForFn('when.siblingBefore');
187
190
  },
188
- siblingAfter: _pseudo => {
191
+ siblingAfter: _p => {
189
192
  throw errorForFn('when.siblingAfter');
190
193
  },
191
- anySibling: _pseudo => {
194
+ anySibling: _p => {
192
195
  throw errorForFn('when.anySibling');
193
196
  }
194
197
  };
@@ -240,6 +243,7 @@ function _legacyMerge(...styles) {
240
243
  _legacyMerge.create = create;
241
244
  _legacyMerge.createTheme = createTheme;
242
245
  _legacyMerge.defineConsts = defineConsts;
246
+ _legacyMerge.defineMarker = defineMarker;
243
247
  _legacyMerge.defineVars = defineVars;
244
248
  _legacyMerge.defaultMarker = defaultMarker;
245
249
  _legacyMerge.firstThatWorks = firstThatWorks;
@@ -255,6 +259,7 @@ exports.create = create;
255
259
  exports.createTheme = createTheme;
256
260
  exports.defaultMarker = defaultMarker;
257
261
  exports.defineConsts = defineConsts;
262
+ exports.defineMarker = defineMarker;
258
263
  exports.defineVars = defineVars;
259
264
  exports.firstThatWorks = firstThatWorks;
260
265
  exports.keyframes = keyframes;
@@ -27,6 +27,9 @@ import type {
27
27
  VarGroup,
28
28
  PositionTry,
29
29
  ViewTransitionClass,
30
+ StyleX$When,
31
+ MapNamespace,
32
+ StyleX$DefineMarker,
30
33
  } from './types/StyleXTypes';
31
34
  import type { ValueWithDefault } from './types/StyleXUtils';
32
35
  import * as Types from './types/VarTypes';
@@ -57,6 +60,8 @@ declare export const defineConsts: StyleX$DefineConsts;
57
60
 
58
61
  declare export const defineVars: StyleX$DefineVars;
59
62
 
63
+ declare export const defineMarker: StyleX$DefineMarker;
64
+
60
65
  declare export const firstThatWorks: <T: string | number>(
61
66
  ..._styles: $ReadOnlyArray<T>
62
67
  ) => $ReadOnlyArray<T>;
@@ -82,15 +87,13 @@ declare export const viewTransitionClass: (
82
87
  _viewTransitionClass: ViewTransitionClass,
83
88
  ) => string;
84
89
 
85
- declare export const defaultMarker: () => StaticStyles<>;
90
+ declare export const defaultMarker: () => MapNamespace<
91
+ $ReadOnly<{
92
+ marker: 'default-marker',
93
+ }>,
94
+ >;
86
95
 
87
- declare export const when: {
88
- ancestor: (_pseudo?: string) => string,
89
- descendant: (_pseudo?: string) => string,
90
- siblingBefore: (_pseudo?: string) => string,
91
- siblingAfter: (_pseudo?: string) => string,
92
- anySibling: (_pseudo?: string) => string,
93
- };
96
+ declare export const when: StyleX$When;
94
97
 
95
98
  declare export const types: {
96
99
  angle: <T: string | 0 = string | 0>(
@@ -132,7 +135,12 @@ type IStyleX = {
132
135
  createTheme: StyleX$CreateTheme,
133
136
  defineConsts: StyleX$DefineConsts,
134
137
  defineVars: StyleX$DefineVars,
135
- defaultMarker: () => StaticStyles<>,
138
+ defaultMarker: () => MapNamespace<
139
+ $ReadOnly<{
140
+ marker: 'default-marker',
141
+ }>,
142
+ >,
143
+ defineMarker: StyleX$DefineMarker,
136
144
  firstThatWorks: <T: string | number>(
137
145
  ...v: $ReadOnlyArray<T>
138
146
  ) => $ReadOnlyArray<T>,
@@ -153,7 +153,7 @@ type ComplexStyleValueType<T> =
153
153
  ? U extends CSSType<infer V>
154
154
  ? V
155
155
  : U
156
- : T extends string | number | null
156
+ : T extends string | number | null | symbol
157
157
  ? T
158
158
  : T extends ReadonlyArray<infer U>
159
159
  ? ComplexStyleValueType<U>
@@ -199,12 +199,13 @@ export type InlineStyles = {
199
199
 
200
200
  type _GenStylePropType<CSS extends UserAuthoredStyles> = Readonly<{
201
201
  [Key in keyof CSS]: StyleXClassNameFor<Key, Readonly<CSS[Key]>>;
202
- }>;
202
+ }> &
203
+ Partial<{
204
+ [Key in Exclude<keyof CSSPropertiesWithExtras, keyof CSS>]: never;
205
+ }>;
206
+
203
207
  type GenStylePropType<CSS extends UserAuthoredStyles> = Readonly<
204
- _GenStylePropType<CSS> &
205
- Partial<{
206
- [Key in Exclude<keyof CSSPropertiesWithExtras, keyof CSS>]: never;
207
- }>
208
+ _GenStylePropType<CSS>
208
209
  >;
209
210
 
210
211
  // Replace `XStyle` with this.
@@ -301,3 +302,47 @@ export type StyleX$CreateTheme = <
301
302
  baseTokens: TVars,
302
303
  overrides: OverridesForTokenType<TokensFromVarGroup<TVars>>,
303
304
  ) => Theme<TVars, ThemeID>;
305
+
306
+ export type StyleX$DefineMarker = () => MapNamespace<{
307
+ readonly marker: unique symbol;
308
+ }>;
309
+
310
+ export type StyleX$When = {
311
+ ancestor: <const Pseudo extends string, MarkerSymbol extends symbol = symbol>(
312
+ _pseudo?: Pseudo,
313
+ _customMarker?: MapNamespace<{ readonly marker: MarkerSymbol }>,
314
+ // @ts-expect-error - Trying to use a symbol in a string is not normally allowed
315
+ ) => `:where-ancestor(${Pseudo}, ${MarkerSymbol})`;
316
+ descendant: <
317
+ const Pseudo extends string,
318
+ MarkerSymbol extends symbol = symbol,
319
+ >(
320
+ _pseudo?: Pseudo,
321
+ _customMarker?: MapNamespace<{ readonly marker: MarkerSymbol }>,
322
+ // @ts-expect-error - Trying to use a symbol in a string is not normally allowed
323
+ ) => `:where-descendant(${Pseudo}, ${MarkerSymbol})`;
324
+ siblingBefore: <
325
+ const Pseudo extends string,
326
+ MarkerSymbol extends symbol = symbol,
327
+ >(
328
+ _pseudo?: Pseudo,
329
+ _customMarker?: MapNamespace<{ readonly marker: MarkerSymbol }>,
330
+ // @ts-expect-error - Trying to use a symbol in a string is not normally allowed
331
+ ) => `:where-sibling-before(${Pseudo}, ${MarkerSymbol})`;
332
+ siblingAfter: <
333
+ const Pseudo extends string,
334
+ MarkerSymbol extends symbol = symbol,
335
+ >(
336
+ _pseudo?: Pseudo,
337
+ _customMarker?: MapNamespace<{ readonly marker: MarkerSymbol }>,
338
+ // @ts-expect-error - Trying to use a symbol in a string is not normally allowed
339
+ ) => `:where-sibling-after(${Pseudo}, ${MarkerSymbol})`;
340
+ anySibling: <
341
+ const Pseudo extends string,
342
+ MarkerSymbol extends symbol = symbol,
343
+ >(
344
+ _pseudo?: Pseudo,
345
+ _customMarker?: MapNamespace<{ readonly marker: MarkerSymbol }>,
346
+ // @ts-expect-error - Trying to use a symbol in a string is not normally allowed
347
+ ) => `:where-any-sibling(${Pseudo}, ${MarkerSymbol})`;
348
+ };
@@ -143,7 +143,7 @@ export type MapNamespaces<+S: { +[string]: mixed }> = $ReadOnly<{
143
143
  ? (...args: Args) => $ReadOnly<[MapNamespace<Obj>, InlineStyles]>
144
144
  : MapNamespace<S[Key]>,
145
145
  }>;
146
- export type StyleX$Create = <S: { +[string]: { ... } }>(
146
+ export type StyleX$Create = <const S: { +[string]: { ... } }>(
147
147
  styles: S,
148
148
  ) => MapNamespaces<S>;
149
149
 
@@ -224,7 +224,7 @@ export type StyleX$DefineVars = <DefaultTokens: TTokens, ID: string = string>(
224
224
  ) => VarGroup<FlattenTokens<DefaultTokens>, ID>;
225
225
 
226
226
  export type StyleX$DefineConsts = <
227
- DefaultTokens: { +[string]: number | string },
227
+ const DefaultTokens: { +[string]: number | string },
228
228
  >(
229
229
  tokens: DefaultTokens,
230
230
  ) => DefaultTokens;
@@ -249,3 +249,30 @@ export type StyleX$CreateTheme = <
249
249
  baseTokens: BaseTokens,
250
250
  overrides: OverridesForTokenType<TokensFromVarGroup<BaseTokens>>,
251
251
  ) => Theme<BaseTokens, ID>;
252
+
253
+ export type StyleX$DefineMarker = () => MapNamespace<{
254
+ +marker: 'custom-marker',
255
+ }>;
256
+
257
+ export type StyleX$When = {
258
+ ancestor: (
259
+ _pseudo?: StringPrefix<':'>,
260
+ _customMarker?: MapNamespace<{ +marker: 'custom-marker' }>,
261
+ ) => ':where-ancestor',
262
+ descendant: (
263
+ _pseudo?: StringPrefix<':'>,
264
+ _customMarker?: MapNamespace<{ +marker: 'custom-marker' }>,
265
+ ) => ':where-descendant',
266
+ siblingBefore: (
267
+ _pseudo?: StringPrefix<':'>,
268
+ _customMarker?: MapNamespace<{ +marker: 'custom-marker' }>,
269
+ ) => ':where-sibling-before',
270
+ siblingAfter: (
271
+ _pseudo?: StringPrefix<':'>,
272
+ _customMarker?: MapNamespace<{ +marker: 'custom-marker' }>,
273
+ ) => ':where-sibling-after',
274
+ anySibling: (
275
+ _pseudo?: StringPrefix<':'>,
276
+ _customMarker?: MapNamespace<{ +marker: 'custom-marker' }>,
277
+ ) => ':where-any-sibling',
278
+ };
@@ -46,7 +46,7 @@ export declare class Image<T extends InnerValue> implements ICSSType<T> {
46
46
  readonly value: ValueWithDefault<string>;
47
47
  readonly syntax: CSSSyntaxType;
48
48
  }
49
- export declare class Integer<T extends number> implements ICSSType<T> {
49
+ export declare class Integer<T extends InnerValue> implements ICSSType<T> {
50
50
  readonly value: ValueWithDefault<string>;
51
51
  readonly syntax: CSSSyntaxType;
52
52
  }
@@ -64,7 +64,7 @@ export declare class Percentage<T extends InnerValue> implements ICSSType<T> {
64
64
  readonly value: ValueWithDefault<string>;
65
65
  readonly syntax: CSSSyntaxType;
66
66
  }
67
- export declare class Num<T extends number> implements ICSSType<T> {
67
+ export declare class Num<T extends InnerValue> implements ICSSType<T> {
68
68
  readonly value: ValueWithDefault<string>;
69
69
  readonly syntax: CSSSyntaxType;
70
70
  }
@@ -49,7 +49,7 @@ declare export class Image<+T: InnerValue> implements ICSSType<T> {
49
49
  +value: ValueWithDefault<string>;
50
50
  +syntax: CSSSyntaxType;
51
51
  }
52
- declare export class Integer<+T: number> implements ICSSType<T> {
52
+ declare export class Integer<+T: InnerValue> implements ICSSType<T> {
53
53
  +value: ValueWithDefault<string>;
54
54
  +syntax: CSSSyntaxType;
55
55
  }
@@ -65,7 +65,7 @@ declare export class Percentage<+T: InnerValue> implements ICSSType<T> {
65
65
  +value: ValueWithDefault<string>;
66
66
  +syntax: CSSSyntaxType;
67
67
  }
68
- declare export class Num<+T: number> implements ICSSType<T> {
68
+ declare export class Num<+T: InnerValue> implements ICSSType<T> {
69
69
  +value: ValueWithDefault<string>;
70
70
  +syntax: CSSSyntaxType;
71
71
  }
@@ -27,6 +27,9 @@ import type {
27
27
  VarGroup,
28
28
  PositionTry,
29
29
  ViewTransitionClass,
30
+ StyleX$When,
31
+ MapNamespace,
32
+ StyleX$DefineMarker,
30
33
  } from './types/StyleXTypes';
31
34
  import type { ValueWithDefault } from './types/StyleXUtils';
32
35
  import * as Types from './types/VarTypes';
@@ -51,6 +54,7 @@ export declare const create: StyleX$Create;
51
54
  export declare const createTheme: StyleX$CreateTheme;
52
55
  export declare const defineConsts: StyleX$DefineConsts;
53
56
  export declare const defineVars: StyleX$DefineVars;
57
+ export declare const defineMarker: StyleX$DefineMarker;
54
58
  export declare const firstThatWorks: <T extends string | number>(
55
59
  ..._styles: ReadonlyArray<T>
56
60
  ) => ReadonlyArray<T>;
@@ -73,14 +77,10 @@ export declare function props(
73
77
  export declare const viewTransitionClass: (
74
78
  _viewTransitionClass: ViewTransitionClass,
75
79
  ) => string;
76
- export declare const defaultMarker: () => StaticStyles;
77
- export declare const when: {
78
- ancestor: (_pseudo?: string) => string;
79
- descendant: (_pseudo?: string) => string;
80
- siblingBefore: (_pseudo?: string) => string;
81
- siblingAfter: (_pseudo?: string) => string;
82
- anySibling: (_pseudo?: string) => string;
83
- };
80
+ export declare const defaultMarker: () => MapNamespace<
81
+ Readonly<{ marker: 'default-marker' }>
82
+ >;
83
+ export declare const when: StyleX$When;
84
84
  export declare const types: {
85
85
  angle: <T extends string | 0 = string | 0>(
86
86
  _v: ValueWithDefault<T>,
@@ -132,7 +132,8 @@ type IStyleX = {
132
132
  createTheme: StyleX$CreateTheme;
133
133
  defineConsts: StyleX$DefineConsts;
134
134
  defineVars: StyleX$DefineVars;
135
- defaultMarker: () => StaticStyles;
135
+ defaultMarker: () => MapNamespace<Readonly<{ marker: 'default-marker' }>>;
136
+ defineMarker: StyleX$DefineMarker;
136
137
  firstThatWorks: <T extends string | number>(
137
138
  ...v: ReadonlyArray<T>
138
139
  ) => ReadonlyArray<T>;
@@ -27,6 +27,9 @@ import type {
27
27
  VarGroup,
28
28
  PositionTry,
29
29
  ViewTransitionClass,
30
+ StyleX$When,
31
+ MapNamespace,
32
+ StyleX$DefineMarker,
30
33
  } from './types/StyleXTypes';
31
34
  import type { ValueWithDefault } from './types/StyleXUtils';
32
35
  import * as Types from './types/VarTypes';
@@ -57,6 +60,8 @@ declare export const defineConsts: StyleX$DefineConsts;
57
60
 
58
61
  declare export const defineVars: StyleX$DefineVars;
59
62
 
63
+ declare export const defineMarker: StyleX$DefineMarker;
64
+
60
65
  declare export const firstThatWorks: <T: string | number>(
61
66
  ..._styles: $ReadOnlyArray<T>
62
67
  ) => $ReadOnlyArray<T>;
@@ -82,15 +87,13 @@ declare export const viewTransitionClass: (
82
87
  _viewTransitionClass: ViewTransitionClass,
83
88
  ) => string;
84
89
 
85
- declare export const defaultMarker: () => StaticStyles<>;
90
+ declare export const defaultMarker: () => MapNamespace<
91
+ $ReadOnly<{
92
+ marker: 'default-marker',
93
+ }>,
94
+ >;
86
95
 
87
- declare export const when: {
88
- ancestor: (_pseudo?: string) => string,
89
- descendant: (_pseudo?: string) => string,
90
- siblingBefore: (_pseudo?: string) => string,
91
- siblingAfter: (_pseudo?: string) => string,
92
- anySibling: (_pseudo?: string) => string,
93
- };
96
+ declare export const when: StyleX$When;
94
97
 
95
98
  declare export const types: {
96
99
  angle: <T: string | 0 = string | 0>(
@@ -132,7 +135,12 @@ type IStyleX = {
132
135
  createTheme: StyleX$CreateTheme,
133
136
  defineConsts: StyleX$DefineConsts,
134
137
  defineVars: StyleX$DefineVars,
135
- defaultMarker: () => StaticStyles<>,
138
+ defaultMarker: () => MapNamespace<
139
+ $ReadOnly<{
140
+ marker: 'default-marker',
141
+ }>,
142
+ >,
143
+ defineMarker: StyleX$DefineMarker,
136
144
  firstThatWorks: <T: string | number>(
137
145
  ...v: $ReadOnlyArray<T>
138
146
  ) => $ReadOnlyArray<T>,
package/lib/es/stylex.mjs CHANGED
@@ -144,6 +144,9 @@ const defineConsts = function stylexDefineConsts(_styles) {
144
144
  const defineVars = function stylexDefineVars(_styles) {
145
145
  throw errorForFn('defineVars');
146
146
  };
147
+ const defineMarker = () => {
148
+ throw errorForFn('defineMarker');
149
+ };
147
150
  const firstThatWorks = (..._styles) => {
148
151
  throw errorForFn('firstThatWorks');
149
152
  };
@@ -174,19 +177,19 @@ const defaultMarker = () => {
174
177
  throw errorForFn('defaultMarker');
175
178
  };
176
179
  const when = {
177
- ancestor: _pseudo => {
180
+ ancestor: _p => {
178
181
  throw errorForFn('when.ancestor');
179
182
  },
180
- descendant: _pseudo => {
183
+ descendant: _p => {
181
184
  throw errorForFn('when.descendant');
182
185
  },
183
- siblingBefore: _pseudo => {
186
+ siblingBefore: _p => {
184
187
  throw errorForFn('when.siblingBefore');
185
188
  },
186
- siblingAfter: _pseudo => {
189
+ siblingAfter: _p => {
187
190
  throw errorForFn('when.siblingAfter');
188
191
  },
189
- anySibling: _pseudo => {
192
+ anySibling: _p => {
190
193
  throw errorForFn('when.anySibling');
191
194
  }
192
195
  };
@@ -238,6 +241,7 @@ function _legacyMerge(...styles) {
238
241
  _legacyMerge.create = create;
239
242
  _legacyMerge.createTheme = createTheme;
240
243
  _legacyMerge.defineConsts = defineConsts;
244
+ _legacyMerge.defineMarker = defineMarker;
241
245
  _legacyMerge.defineVars = defineVars;
242
246
  _legacyMerge.defaultMarker = defaultMarker;
243
247
  _legacyMerge.firstThatWorks = firstThatWorks;
@@ -249,4 +253,4 @@ _legacyMerge.when = when;
249
253
  _legacyMerge.viewTransitionClass = viewTransitionClass;
250
254
  const legacyMerge = _legacyMerge;
251
255
 
252
- export { create, createTheme, defaultMarker, defineConsts, defineVars, firstThatWorks, keyframes, legacyMerge, positionTry, props, types, viewTransitionClass, when };
256
+ export { create, createTheme, defaultMarker, defineConsts, defineMarker, defineVars, firstThatWorks, keyframes, legacyMerge, positionTry, props, types, viewTransitionClass, when };
@@ -153,7 +153,7 @@ type ComplexStyleValueType<T> =
153
153
  ? U extends CSSType<infer V>
154
154
  ? V
155
155
  : U
156
- : T extends string | number | null
156
+ : T extends string | number | null | symbol
157
157
  ? T
158
158
  : T extends ReadonlyArray<infer U>
159
159
  ? ComplexStyleValueType<U>
@@ -199,12 +199,13 @@ export type InlineStyles = {
199
199
 
200
200
  type _GenStylePropType<CSS extends UserAuthoredStyles> = Readonly<{
201
201
  [Key in keyof CSS]: StyleXClassNameFor<Key, Readonly<CSS[Key]>>;
202
- }>;
202
+ }> &
203
+ Partial<{
204
+ [Key in Exclude<keyof CSSPropertiesWithExtras, keyof CSS>]: never;
205
+ }>;
206
+
203
207
  type GenStylePropType<CSS extends UserAuthoredStyles> = Readonly<
204
- _GenStylePropType<CSS> &
205
- Partial<{
206
- [Key in Exclude<keyof CSSPropertiesWithExtras, keyof CSS>]: never;
207
- }>
208
+ _GenStylePropType<CSS>
208
209
  >;
209
210
 
210
211
  // Replace `XStyle` with this.
@@ -301,3 +302,47 @@ export type StyleX$CreateTheme = <
301
302
  baseTokens: TVars,
302
303
  overrides: OverridesForTokenType<TokensFromVarGroup<TVars>>,
303
304
  ) => Theme<TVars, ThemeID>;
305
+
306
+ export type StyleX$DefineMarker = () => MapNamespace<{
307
+ readonly marker: unique symbol;
308
+ }>;
309
+
310
+ export type StyleX$When = {
311
+ ancestor: <const Pseudo extends string, MarkerSymbol extends symbol = symbol>(
312
+ _pseudo?: Pseudo,
313
+ _customMarker?: MapNamespace<{ readonly marker: MarkerSymbol }>,
314
+ // @ts-expect-error - Trying to use a symbol in a string is not normally allowed
315
+ ) => `:where-ancestor(${Pseudo}, ${MarkerSymbol})`;
316
+ descendant: <
317
+ const Pseudo extends string,
318
+ MarkerSymbol extends symbol = symbol,
319
+ >(
320
+ _pseudo?: Pseudo,
321
+ _customMarker?: MapNamespace<{ readonly marker: MarkerSymbol }>,
322
+ // @ts-expect-error - Trying to use a symbol in a string is not normally allowed
323
+ ) => `:where-descendant(${Pseudo}, ${MarkerSymbol})`;
324
+ siblingBefore: <
325
+ const Pseudo extends string,
326
+ MarkerSymbol extends symbol = symbol,
327
+ >(
328
+ _pseudo?: Pseudo,
329
+ _customMarker?: MapNamespace<{ readonly marker: MarkerSymbol }>,
330
+ // @ts-expect-error - Trying to use a symbol in a string is not normally allowed
331
+ ) => `:where-sibling-before(${Pseudo}, ${MarkerSymbol})`;
332
+ siblingAfter: <
333
+ const Pseudo extends string,
334
+ MarkerSymbol extends symbol = symbol,
335
+ >(
336
+ _pseudo?: Pseudo,
337
+ _customMarker?: MapNamespace<{ readonly marker: MarkerSymbol }>,
338
+ // @ts-expect-error - Trying to use a symbol in a string is not normally allowed
339
+ ) => `:where-sibling-after(${Pseudo}, ${MarkerSymbol})`;
340
+ anySibling: <
341
+ const Pseudo extends string,
342
+ MarkerSymbol extends symbol = symbol,
343
+ >(
344
+ _pseudo?: Pseudo,
345
+ _customMarker?: MapNamespace<{ readonly marker: MarkerSymbol }>,
346
+ // @ts-expect-error - Trying to use a symbol in a string is not normally allowed
347
+ ) => `:where-any-sibling(${Pseudo}, ${MarkerSymbol})`;
348
+ };
@@ -143,7 +143,7 @@ export type MapNamespaces<+S: { +[string]: mixed }> = $ReadOnly<{
143
143
  ? (...args: Args) => $ReadOnly<[MapNamespace<Obj>, InlineStyles]>
144
144
  : MapNamespace<S[Key]>,
145
145
  }>;
146
- export type StyleX$Create = <S: { +[string]: { ... } }>(
146
+ export type StyleX$Create = <const S: { +[string]: { ... } }>(
147
147
  styles: S,
148
148
  ) => MapNamespaces<S>;
149
149
 
@@ -224,7 +224,7 @@ export type StyleX$DefineVars = <DefaultTokens: TTokens, ID: string = string>(
224
224
  ) => VarGroup<FlattenTokens<DefaultTokens>, ID>;
225
225
 
226
226
  export type StyleX$DefineConsts = <
227
- DefaultTokens: { +[string]: number | string },
227
+ const DefaultTokens: { +[string]: number | string },
228
228
  >(
229
229
  tokens: DefaultTokens,
230
230
  ) => DefaultTokens;
@@ -249,3 +249,30 @@ export type StyleX$CreateTheme = <
249
249
  baseTokens: BaseTokens,
250
250
  overrides: OverridesForTokenType<TokensFromVarGroup<BaseTokens>>,
251
251
  ) => Theme<BaseTokens, ID>;
252
+
253
+ export type StyleX$DefineMarker = () => MapNamespace<{
254
+ +marker: 'custom-marker',
255
+ }>;
256
+
257
+ export type StyleX$When = {
258
+ ancestor: (
259
+ _pseudo?: StringPrefix<':'>,
260
+ _customMarker?: MapNamespace<{ +marker: 'custom-marker' }>,
261
+ ) => ':where-ancestor',
262
+ descendant: (
263
+ _pseudo?: StringPrefix<':'>,
264
+ _customMarker?: MapNamespace<{ +marker: 'custom-marker' }>,
265
+ ) => ':where-descendant',
266
+ siblingBefore: (
267
+ _pseudo?: StringPrefix<':'>,
268
+ _customMarker?: MapNamespace<{ +marker: 'custom-marker' }>,
269
+ ) => ':where-sibling-before',
270
+ siblingAfter: (
271
+ _pseudo?: StringPrefix<':'>,
272
+ _customMarker?: MapNamespace<{ +marker: 'custom-marker' }>,
273
+ ) => ':where-sibling-after',
274
+ anySibling: (
275
+ _pseudo?: StringPrefix<':'>,
276
+ _customMarker?: MapNamespace<{ +marker: 'custom-marker' }>,
277
+ ) => ':where-any-sibling',
278
+ };
@@ -46,7 +46,7 @@ export declare class Image<T extends InnerValue> implements ICSSType<T> {
46
46
  readonly value: ValueWithDefault<string>;
47
47
  readonly syntax: CSSSyntaxType;
48
48
  }
49
- export declare class Integer<T extends number> implements ICSSType<T> {
49
+ export declare class Integer<T extends InnerValue> implements ICSSType<T> {
50
50
  readonly value: ValueWithDefault<string>;
51
51
  readonly syntax: CSSSyntaxType;
52
52
  }
@@ -64,7 +64,7 @@ export declare class Percentage<T extends InnerValue> implements ICSSType<T> {
64
64
  readonly value: ValueWithDefault<string>;
65
65
  readonly syntax: CSSSyntaxType;
66
66
  }
67
- export declare class Num<T extends number> implements ICSSType<T> {
67
+ export declare class Num<T extends InnerValue> implements ICSSType<T> {
68
68
  readonly value: ValueWithDefault<string>;
69
69
  readonly syntax: CSSSyntaxType;
70
70
  }
@@ -49,7 +49,7 @@ declare export class Image<+T: InnerValue> implements ICSSType<T> {
49
49
  +value: ValueWithDefault<string>;
50
50
  +syntax: CSSSyntaxType;
51
51
  }
52
- declare export class Integer<+T: number> implements ICSSType<T> {
52
+ declare export class Integer<+T: InnerValue> implements ICSSType<T> {
53
53
  +value: ValueWithDefault<string>;
54
54
  +syntax: CSSSyntaxType;
55
55
  }
@@ -65,7 +65,7 @@ declare export class Percentage<+T: InnerValue> implements ICSSType<T> {
65
65
  +value: ValueWithDefault<string>;
66
66
  +syntax: CSSSyntaxType;
67
67
  }
68
- declare export class Num<+T: number> implements ICSSType<T> {
68
+ declare export class Num<+T: InnerValue> implements ICSSType<T> {
69
69
  +value: ValueWithDefault<string>;
70
70
  +syntax: CSSSyntaxType;
71
71
  }
package/package.json CHANGED
@@ -1,25 +1,25 @@
1
1
  {
2
2
  "name": "@stylexjs/stylex",
3
- "version": "0.16.3",
3
+ "version": "0.17.0",
4
4
  "description": "A library for defining styles for optimized user interfaces.",
5
5
  "main": "./lib/cjs/stylex.js",
6
6
  "module": "./lib/es/stylex.mjs",
7
7
  "types": "./lib/cjs/stylex.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
+ "types": "./lib/es/stylex.d.ts",
10
11
  "import": "./lib/es/stylex.mjs",
11
- "require": "./lib/cjs/stylex.js",
12
- "types": "./lib/es/stylex.d.ts"
12
+ "require": "./lib/cjs/stylex.js"
13
13
  },
14
14
  "./lib/stylex-inject": {
15
+ "types": "./lib/es/inject.d.ts",
15
16
  "import": "./lib/es/inject.mjs",
16
- "require": "./lib/cjs/inject.js",
17
- "types": "./lib/es/inject.d.ts"
17
+ "require": "./lib/cjs/inject.js"
18
18
  },
19
19
  "./lib/types/StyleXTypes": {
20
+ "types": "./lib/es/types/StyleXTypes.d.ts",
20
21
  "import": "./lib/es/types/StyleXTypes.mjs",
21
- "require": "./lib/cjs/types/StyleXTypes.js",
22
- "types": "./lib/es/types/StyleXTypes.d.ts"
22
+ "require": "./lib/cjs/types/StyleXTypes.js"
23
23
  },
24
24
  "./package.json": "./package.json"
25
25
  },
@@ -61,7 +61,7 @@
61
61
  "cross-env": "^7.0.3",
62
62
  "rimraf": "^5.0.10",
63
63
  "rollup": "^4.24.0",
64
- "scripts": "0.16.3"
64
+ "scripts": "0.17.0"
65
65
  },
66
66
  "files": [
67
67
  "lib/*"