@arbor-css/modes 0.0.73 → 0.0.75

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.
@@ -1,15 +1,6 @@
1
1
  import { Equation } from '@arbor-css/calc';
2
- import { CreateToken, SimpleTokenDefinition, SimpleTokensAsTokenDefinitions, SimpleTokenSchema, Token } from '@arbor-css/tokens';
2
+ import { SimpleTokenDefinition, SimpleTokenSchema, Token } from '@arbor-css/tokens';
3
3
  export type ModeSchemaProperty = SimpleTokenDefinition;
4
- export type ModeSchema<TSchema extends SimpleTokenSchema = SimpleTokenSchema> = {
5
- definition: TSchema;
6
- tag: string;
7
- $tokens: SimpleTokensAsTokenDefinitions<TSchema>;
8
- createBase: (def: ModeValues<TSchema>) => ModeInstance<TSchema>;
9
- createPartial: (name: string, def: DeepPartial<ModeValues<TSchema>>) => PartialModeInstance<TSchema>;
10
- extend: <TExtensionSchema extends SimpleTokenSchema>(extension: TExtensionSchema) => ModeSchema<TSchema & TExtensionSchema>;
11
- extraCss?: string;
12
- };
13
4
  export type DeepPartial<T> = {
14
5
  [P in keyof T]?: DeepPartial<T[P]> | undefined;
15
6
  };
@@ -18,22 +9,19 @@ export declare function isModeValue(value: any): value is ModeValue;
18
9
  export type ModeValues<T extends SimpleTokenSchema> = {
19
10
  [P in keyof T]: NonNullable<T[P]> extends ModeSchemaProperty ? ModeValue : NonNullable<T[P]> extends SimpleTokenSchema ? ModeValues<NonNullable<T[P]>> : never;
20
11
  };
21
- export type ModeTokens<T extends SimpleTokenSchema> = SimpleTokensAsTokenDefinitions<T>;
22
12
  export interface ModeConfig {
23
13
  name: string;
24
14
  }
25
15
  export type ModeInstance<T extends SimpleTokenSchema> = {
26
16
  values: ModeValues<T>;
27
- schema: ModeSchema<T>;
17
+ schema: T;
28
18
  config: ModeConfig;
29
19
  };
30
20
  export type PartialModeInstance<T extends SimpleTokenSchema> = Omit<ModeInstance<T>, 'values'> & {
31
21
  values: DeepPartial<ModeValues<T>>;
32
22
  };
33
23
  export declare function flattenToPropsList(obj: any): Token[];
34
- export declare function createModeSchema<T extends SimpleTokenSchema>(input: T, { tag, extraCss, createToken: createTokenValue, }: {
35
- tag?: string;
36
- extraCss?: string;
37
- createToken: CreateToken;
38
- }): ModeSchema<T>;
24
+ export declare function createModeSchema<T extends SimpleTokenSchema>(input: T): T;
25
+ export declare function createModeInstance<T extends SimpleTokenSchema>(schema: T, values: ModeValues<T>, config: ModeConfig): ModeInstance<T>;
26
+ export declare function createPartialModeInstance<T extends SimpleTokenSchema>(schema: T, values: DeepPartial<ModeValues<T>>, config: ModeConfig): PartialModeInstance<T>;
39
27
  //# sourceMappingURL=createModeSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createModeSchema.d.ts","sourceRoot":"","sources":["../src/createModeSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAEN,WAAW,EAEX,qBAAqB,EACrB,8BAA8B,EAC9B,iBAAiB,EACjB,KAAK,EACL,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEvD,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,iBAAiB,GAAG,iBAAiB,IAC3E;IACC,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACjD,UAAU,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC;IAChE,aAAa,EAAE,CACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KACjC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC,gBAAgB,SAAS,iBAAiB,EAClD,SAAS,EAAE,gBAAgB,KACvB,UAAU,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CAAE,CAAC;AAEhF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAC3D,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,SAAS,CAO1D;AACD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,iBAAiB,IAAI;KACpD,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,kBAAkB,GAAG,SAAS,GACtE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,iBAAiB,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC3E,KAAK;CACP,CAAC;AACF,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,iBAAiB,IACjD,8BAA8B,CAAC,CAAC,CAAC,CAAC;AAEnC,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,iBAAiB,IAAI;IACvD,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,iBAAiB,IAAI,IAAI,CAClE,YAAY,CAAC,CAAC,CAAC,EACf,QAAQ,CACR,GAAG;IACH,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACnC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,EAAE,CAUpD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,EAC3D,KAAK,EAAE,CAAC,EACR,EACC,GAAQ,EACR,QAAQ,EACR,WAAW,EAAE,gBAAgB,GAC7B,EAAE;IACF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;CACzB,GACC,UAAU,CAAC,CAAC,CAAC,CAuCf"}
1
+ {"version":3,"file":"createModeSchema.d.ts","sourceRoot":"","sources":["../src/createModeSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAEN,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,EACL,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEvD,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CAAE,CAAC;AAEhF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAC3D,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,SAAS,CAO1D;AACD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,iBAAiB,IAAI;KACpD,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,kBAAkB,GAAG,SAAS,GACtE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,iBAAiB,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC3E,KAAK;CACP,CAAC;AAEF,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,iBAAiB,IAAI;IACvD,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,UAAU,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,iBAAiB,IAAI,IAAI,CAClE,YAAY,CAAC,CAAC,CAAC,EACf,QAAQ,CACR,GAAG;IACH,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACnC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,EAAE,CAUpD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAEzE;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,iBAAiB,EAC7D,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,MAAM,EAAE,UAAU,GAChB,YAAY,CAAC,CAAC,CAAC,CAMjB;AAED,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,iBAAiB,EACpE,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAClC,MAAM,EAAE,UAAU,GAChB,mBAAmB,CAAC,CAAC,CAAC,CAMxB"}
@@ -1,5 +1,5 @@
1
1
  import { isCalcEquation } from '@arbor-css/calc';
2
- import { convertSimpleTokenSchema, isToken, } from '@arbor-css/tokens';
2
+ import { isToken, } from '@arbor-css/tokens';
3
3
  export function isModeValue(value) {
4
4
  return (isCalcEquation(value) ||
5
5
  isToken(value) ||
@@ -18,42 +18,21 @@ export function flattenToPropsList(obj) {
18
18
  }
19
19
  return propsList;
20
20
  }
21
- export function createModeSchema(input, { tag = '', extraCss, createToken: createTokenValue, }) {
22
- const PROPS = convertSimpleTokenSchema(input, tag, createTokenValue);
23
- const schema = {
24
- definition: input,
25
- tag,
26
- $tokens: PROPS,
27
- extraCss,
28
- createBase: (def) => {
29
- return {
30
- values: def,
31
- schema,
32
- config: {
33
- name: 'base',
34
- },
35
- };
36
- },
37
- createPartial: (name, def) => {
38
- return {
39
- values: def,
40
- schema,
41
- config: {
42
- name,
43
- },
44
- };
45
- },
46
- extend: (extension) => {
47
- const extendedDefinition = {
48
- ...schema.definition,
49
- ...extension,
50
- };
51
- return createModeSchema(extendedDefinition, {
52
- tag: schema.tag,
53
- createToken: createTokenValue,
54
- });
55
- },
21
+ export function createModeSchema(input) {
22
+ return input;
23
+ }
24
+ export function createModeInstance(schema, values, config) {
25
+ return {
26
+ schema,
27
+ values,
28
+ config,
29
+ };
30
+ }
31
+ export function createPartialModeInstance(schema, values, config) {
32
+ return {
33
+ schema,
34
+ values,
35
+ config,
56
36
  };
57
- return schema;
58
37
  }
59
38
  //# sourceMappingURL=createModeSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createModeSchema.js","sourceRoot":"","sources":["../src/createModeSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACN,wBAAwB,EAExB,OAAO,GAKP,MAAM,mBAAmB,CAAC;AAuB3B,MAAM,UAAU,WAAW,CAAC,KAAU;IACrC,OAAO,CACN,cAAc,CAAC,KAAK,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ,CACzB,CAAC;AACH,CAAC;AAyBD,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IAC1C,MAAM,SAAS,GAAY,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9D,SAAS,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC/B,KAAQ,EACR,EACC,GAAG,GAAG,EAAE,EACR,QAAQ,EACR,WAAW,EAAE,gBAAgB,GAK7B;IAED,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG;QACd,UAAU,EAAE,KAAK;QACjB,GAAG;QACH,OAAO,EAAE,KAAK;QACd,QAAQ;QACR,UAAU,EAAE,CAAC,GAAkB,EAAE,EAAE;YAClC,OAAO;gBACN,MAAM,EAAE,GAAG;gBACX,MAAM;gBACN,MAAM,EAAE;oBACP,IAAI,EAAE,MAAM;iBACZ;aACD,CAAC;QACH,CAAC;QACD,aAAa,EAAE,CAAC,IAAY,EAAE,GAA+B,EAAE,EAAE;YAChE,OAAO;gBACN,MAAM,EAAE,GAAG;gBACX,MAAM;gBACN,MAAM,EAAE;oBACP,IAAI;iBACJ;aACD,CAAC;QACH,CAAC;QACD,MAAM,EAAE,CACP,SAA2B,EAC1B,EAAE;YACH,MAAM,kBAAkB,GAAG;gBAC1B,GAAG,MAAM,CAAC,UAAU;gBACpB,GAAG,SAAS;aACY,CAAC;YAC1B,OAAO,gBAAgB,CAAC,kBAAkB,EAAE;gBAC3C,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,WAAW,EAAE,gBAAgB;aAC7B,CAAC,CAAC;QACJ,CAAC;KACD,CAAC;IACF,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"createModeSchema.js","sourceRoot":"","sources":["../src/createModeSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACN,OAAO,GAIP,MAAM,mBAAmB,CAAC;AAO3B,MAAM,UAAU,WAAW,CAAC,KAAU;IACrC,OAAO,CACN,cAAc,CAAC,KAAK,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ,CACzB,CAAC;AACH,CAAC;AAuBD,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IAC1C,MAAM,SAAS,GAAY,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9D,SAAS,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAA8B,KAAQ;IACrE,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CACjC,MAAS,EACT,MAAqB,EACrB,MAAkB;IAElB,OAAO;QACN,MAAM;QACN,MAAM;QACN,MAAM;KACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CACxC,MAAS,EACT,MAAkC,EAClC,MAAkB;IAElB,OAAO;QACN,MAAM;QACN,MAAM;QACN,MAAM;KACN,CAAC;AACH,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { SystemTokens } from '@arbor-css/globals';
2
- import { SimpleTokenSchema } from '@arbor-css/tokens';
2
+ import { SimpleTokensAsTokenDefinitions, SimpleTokenSchema } from '@arbor-css/tokens';
3
3
  import { ModeInstance, PartialModeInstance } from './createModeSchema.js';
4
- export declare function modeToCss<TModeShape extends SimpleTokenSchema>(mode: PartialModeInstance<TModeShape>, baseMode: ModeInstance<TModeShape>, { systemProps, }: {
4
+ export declare function modeToCss<TModeShape extends SimpleTokenSchema>(mode: PartialModeInstance<TModeShape>, baseMode: ModeInstance<TModeShape>, { systemProps, modeTokens, }: {
5
5
  systemProps: SystemTokens;
6
+ modeTokens: SimpleTokensAsTokenDefinitions<TModeShape>;
6
7
  }): string;
7
8
  //# sourceMappingURL=modeToCss.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modeToCss.d.ts","sourceRoot":"","sources":["../src/modeToCss.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAW,iBAAiB,EAAS,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EAEN,YAAY,EAEZ,mBAAmB,EACnB,MAAM,uBAAuB,CAAC;AAgD/B,wBAAgB,SAAS,CAAC,UAAU,SAAS,iBAAiB,EAC7D,IAAI,EAAE,mBAAmB,CAAC,UAAU,CAAC,EACrC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,EAClC,EACC,WAAW,GACX,EAAE;IACF,WAAW,EAAE,YAAY,CAAC;CAC1B,GACC,MAAM,CAoDR"}
1
+ {"version":3,"file":"modeToCss.d.ts","sourceRoot":"","sources":["../src/modeToCss.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAEN,8BAA8B,EAC9B,iBAAiB,EAEjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAEN,YAAY,EAEZ,mBAAmB,EACnB,MAAM,uBAAuB,CAAC;AAsD/B,wBAAgB,SAAS,CAAC,UAAU,SAAS,iBAAiB,EAC7D,IAAI,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAErC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,EAClC,EACC,WAAW,EACX,UAAU,GACV,EAAE;IACF,WAAW,EAAE,YAAY,CAAC;IAC1B,UAAU,EAAE,8BAA8B,CAAC,UAAU,CAAC,CAAC;CACvD,GACC,MAAM,CAoDR"}
package/dist/modeToCss.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { isCalcEquation, printEquation } from '@arbor-css/calc';
2
- import { isToken } from '@arbor-css/tokens';
2
+ import { isToken, } from '@arbor-css/tokens';
3
3
  import { toFlatKeys } from '@arbor-css/util';
4
4
  import { isModeValue, } from './createModeSchema.js';
5
5
  /**
@@ -10,7 +10,7 @@ import { isModeValue, } from './createModeSchema.js';
10
10
  * evaluated at declaration and won't update due to downstream changes to
11
11
  * properties they derive from.
12
12
  */
13
- function getBaseModeDependents(baseMode, token, visiting = []) {
13
+ function getBaseModeDependents(baseMode, token, modeTokens, visiting = []) {
14
14
  const cycleStart = visiting.findIndex((name) => name === token.name);
15
15
  if (cycleStart !== -1) {
16
16
  const cycleChain = [...visiting.slice(cycleStart), token.name].join(' -> ');
@@ -19,7 +19,7 @@ function getBaseModeDependents(baseMode, token, visiting = []) {
19
19
  const nextVisiting = [...visiting, token.name];
20
20
  const dependents = {};
21
21
  const flatBase = toFlatKeys(baseMode.values, isModeValue, { separator: '-' });
22
- const flatTokens = toFlatKeys(baseMode.schema.$tokens, isToken, {
22
+ const flatTokens = toFlatKeys(modeTokens, isToken, {
23
23
  separator: '-',
24
24
  });
25
25
  for (const key in flatBase) {
@@ -32,17 +32,19 @@ function getBaseModeDependents(baseMode, token, visiting = []) {
32
32
  }
33
33
  dependents[tokenForKey.name] = printEquation(value);
34
34
  // recurse to find any values that depend on this dependent as well
35
- Object.assign(dependents, getBaseModeDependents(baseMode, tokenForKey, nextVisiting));
35
+ Object.assign(dependents, getBaseModeDependents(baseMode, tokenForKey, modeTokens, nextVisiting));
36
36
  }
37
37
  }
38
38
  }
39
39
  return dependents;
40
40
  }
41
- export function modeToCss(mode, baseMode, { systemProps, }) {
41
+ export function modeToCss(mode,
42
+ // TODO: move to core, use Preset instead of these options
43
+ baseMode, { systemProps, modeTokens, }) {
42
44
  const flatValues = toFlatKeys(mode.values, isModeValue, {
43
45
  separator: '-',
44
46
  });
45
- const flatTokens = toFlatKeys(mode.schema.$tokens, isToken, {
47
+ const flatTokens = toFlatKeys(modeTokens, isToken, {
46
48
  separator: '-',
47
49
  });
48
50
  const cssVars = {};
@@ -69,7 +71,7 @@ export function modeToCss(mode, baseMode, { systemProps, }) {
69
71
  throw new Error(`Invalid value for token ${tokenVar.name}: ${value}. Must be a string, number, or $token (in mode ${mode.config.name})`);
70
72
  }
71
73
  // If this value corresponds to a token in the base mode, we need to check if any other base mode values depend on it and include them as well since CSS custom properties are eagerly evaluated.
72
- const baseDeps = getBaseModeDependents(baseMode, tokenVar);
74
+ const baseDeps = getBaseModeDependents(baseMode, tokenVar, modeTokens);
73
75
  Object.assign(lowPriorityVars, baseDeps);
74
76
  }
75
77
  const valuesCss = Object.entries({
@@ -1 +1 @@
1
- {"version":3,"file":"modeToCss.js","sourceRoot":"","sources":["../src/modeToCss.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modeToCss.js","sourceRoot":"","sources":["../src/modeToCss.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { css } from '@arbor-css/calc';
2
2
  import { createGlobalContext } from '@arbor-css/globals';
3
+ import { convertSimpleTokenSchema } from '@arbor-css/tokens';
3
4
  import { expect, it } from 'vitest';
4
- import { createModeSchema } from './createModeSchema.js';
5
+ import { createModeInstance, createModeSchema, createPartialModeInstance, } from './createModeSchema.js';
5
6
  import { modeToCss } from './modeToCss.js';
6
7
  const ctx = createGlobalContext();
7
8
  const systemProps = ctx.$systemTokens;
@@ -12,27 +13,32 @@ const testSchema = createModeSchema({
12
13
  twice: 'color',
13
14
  again: 'color',
14
15
  },
15
- }, {
16
- createToken: ctx.createToken,
17
16
  });
18
- const baseMode = testSchema.createBase({
17
+ const $mode = convertSimpleTokenSchema(testSchema, '', ctx.createModeToken);
18
+ const baseMode = createModeInstance(testSchema, {
19
19
  value: 'red',
20
20
  derived: {
21
- once: css `color-mix(in hsl, ${testSchema.$tokens.value}, black)`,
22
- twice: css `color-mix(in hsl, ${testSchema.$tokens.derived.once}, transparent)`,
23
- again: css `color-mix(in hsl, ${testSchema.$tokens.value}, red)`,
21
+ once: css `color-mix(in hsl, ${$mode.value}, black)`,
22
+ twice: css `color-mix(in hsl, ${$mode.derived.once}, transparent)`,
23
+ again: css `color-mix(in hsl, ${$mode.value}, red)`,
24
24
  },
25
+ }, {
26
+ name: 'base',
25
27
  });
26
- const partialMode = testSchema.createPartial('partial', {
28
+ const partialMode = createPartialModeInstance(testSchema, {
27
29
  value: 'blue',
30
+ }, {
31
+ name: 'partial',
28
32
  });
29
- const underivedMode = testSchema.createPartial('underived', {
33
+ const underivedMode = createPartialModeInstance(testSchema, {
30
34
  derived: {
31
35
  once: 'green',
32
36
  },
37
+ }, {
38
+ name: 'underived',
33
39
  });
34
40
  it('prints a base mode with derived values', () => {
35
- const css = modeToCss(baseMode, baseMode, { systemProps });
41
+ const css = modeToCss(baseMode, baseMode, { systemProps, modeTokens: $mode });
36
42
  expect(css).toMatchInlineSnapshot(`
37
43
  ".\\@mode-base,
38
44
  [data-mode-base=""],
@@ -49,35 +55,41 @@ it('prints a base mode with derived values', () => {
49
55
  `);
50
56
  });
51
57
  it('prints a partial mode with derived dependencies it doesnt declare', () => {
52
- const css = modeToCss(partialMode, baseMode, { systemProps });
53
- expect(css).toMatchInlineSnapshot(`
54
- ".\\@mode-partial,
55
- [data-mode-partial=""],
56
- :where(.\\@mode-partial [class^="\\@scheme-"]),
57
- :where([data-mode-partial=""] [class^="\\@scheme-"]) {
58
- --_-system-modeName: partial;
59
- --m-derived-once: color-mix(in hsl, var(--m-value), black);
60
- --m-derived-twice: color-mix(in hsl, var(--m-derived-once), transparent);
61
- --m-derived-again: color-mix(in hsl, var(--m-value), red);
62
- --m-value: blue;
63
-
64
- }
65
- "
58
+ const css = modeToCss(partialMode, baseMode, {
59
+ systemProps,
60
+ modeTokens: $mode,
61
+ });
62
+ expect(css).toMatchInlineSnapshot(`
63
+ ".\\@mode-partial,
64
+ [data-mode-partial=""],
65
+ :where(.\\@mode-partial [class^="\\@scheme-"]),
66
+ :where([data-mode-partial=""] [class^="\\@scheme-"]) {
67
+ --_-system-modeName: partial;
68
+ --m-derived-once: color-mix(in hsl, var(--m-value), black);
69
+ --m-derived-twice: color-mix(in hsl, var(--m-derived-once), transparent);
70
+ --m-derived-again: color-mix(in hsl, var(--m-value), red);
71
+ --m-value: blue;
72
+
73
+ }
74
+ "
66
75
  `);
67
76
  });
68
77
  it('prints a partial mode which overrides derived dependencies from base and doesnt go upstream from there, but does go downstream to further derivations', () => {
69
- const css = modeToCss(underivedMode, baseMode, { systemProps });
70
- expect(css).toMatchInlineSnapshot(`
71
- ".\\@mode-underived,
72
- [data-mode-underived=""],
73
- :where(.\\@mode-underived [class^="\\@scheme-"]),
74
- :where([data-mode-underived=""] [class^="\\@scheme-"]) {
75
- --_-system-modeName: underived;
76
- --m-derived-twice: color-mix(in hsl, var(--m-derived-once), transparent);
77
- --m-derived-once: green;
78
-
79
- }
80
- "
78
+ const css = modeToCss(underivedMode, baseMode, {
79
+ systemProps,
80
+ modeTokens: $mode,
81
+ });
82
+ expect(css).toMatchInlineSnapshot(`
83
+ ".\\@mode-underived,
84
+ [data-mode-underived=""],
85
+ :where(.\\@mode-underived [class^="\\@scheme-"]),
86
+ :where([data-mode-underived=""] [class^="\\@scheme-"]) {
87
+ --_-system-modeName: underived;
88
+ --m-derived-twice: color-mix(in hsl, var(--m-derived-once), transparent);
89
+ --m-derived-once: green;
90
+
91
+ }
92
+ "
81
93
  `);
82
94
  });
83
95
  // $root tests
@@ -88,36 +100,48 @@ const rootSchema = createModeSchema({
88
100
  mid: 'color',
89
101
  },
90
102
  },
91
- }, {
92
- createToken: ctx.createToken,
93
103
  });
94
- const rootBase = rootSchema.createBase({
104
+ const $rootMode = convertSimpleTokenSchema(rootSchema, '', ctx.createModeToken);
105
+ const rootBase = createModeInstance(rootSchema, {
95
106
  colors: {
96
107
  main: {
97
108
  $root: 'oklch(0.5 0.1 240)',
98
109
  mid: 'oklch(0.6 0.1 240)',
99
110
  },
100
111
  },
112
+ }, {
113
+ name: 'rootBase',
101
114
  });
102
115
  it('$root at nested level generates CSS var at group path (no -$root suffix)', () => {
103
- const css = modeToCss(rootBase, rootBase, { systemProps });
116
+ const css = modeToCss(rootBase, rootBase, {
117
+ systemProps,
118
+ modeTokens: $rootMode,
119
+ });
104
120
  expect(css).toContain('--m-colors-main: oklch(0.5 0.1 240)');
105
121
  expect(css).not.toContain('--m-colors-main-$root');
106
122
  });
107
123
  it('$root and sibling keys coexist and both emit correctly', () => {
108
- const css = modeToCss(rootBase, rootBase, { systemProps });
124
+ const css = modeToCss(rootBase, rootBase, {
125
+ systemProps,
126
+ modeTokens: $rootMode,
127
+ });
109
128
  expect(css).toContain('--m-colors-main: oklch(0.5 0.1 240)');
110
129
  expect(css).toContain('--m-colors-main-mid: oklch(0.6 0.1 240)');
111
130
  });
112
131
  it('partial mode override of $root maps correctly', () => {
113
- const partial = rootSchema.createPartial('alt', {
132
+ const partial = createPartialModeInstance(rootSchema, {
114
133
  colors: {
115
134
  main: {
116
135
  $root: 'oklch(0.7 0.2 30)',
117
136
  },
118
137
  },
138
+ }, {
139
+ name: 'partial',
140
+ });
141
+ const css = modeToCss(partial, rootBase, {
142
+ systemProps,
143
+ modeTokens: $rootMode,
119
144
  });
120
- const css = modeToCss(partial, rootBase, { systemProps });
121
145
  expect(css).toContain('--m-colors-main: oklch(0.7 0.2 30)');
122
146
  expect(css).not.toContain('--m-colors-main-mid');
123
147
  });
@@ -128,16 +152,20 @@ it('throws with full token chain for circular derived dependencies', () => {
128
152
  a: 'color',
129
153
  b: 'color',
130
154
  },
131
- }, {
132
- createToken: ctx.createToken,
133
155
  });
134
- const circularBase = circularSchema.createBase({
156
+ const $circularMode = convertSimpleTokenSchema(circularSchema, '', ctx.createModeToken);
157
+ const circularBase = createModeInstance(circularSchema, {
135
158
  value: 'red',
136
159
  derived: {
137
- a: css `color-mix(in hsl, ${circularSchema.$tokens.derived.b}, white)`,
138
- b: css `color-mix(in hsl, ${circularSchema.$tokens.derived.a}, black)`,
160
+ a: css `color-mix(in hsl, ${$circularMode.derived.b}, white)`,
161
+ b: css `color-mix(in hsl, ${$circularMode.derived.a}, black)`,
139
162
  },
163
+ }, {
164
+ name: 'circularBase',
140
165
  });
141
- expect(() => modeToCss(circularBase, circularBase, { systemProps })).toThrow(/Circular dependency detected in mode base: .*--m-derived-a.*->.*--m-derived-b.*->.*--m-derived-a/);
166
+ expect(() => modeToCss(circularBase, circularBase, {
167
+ systemProps,
168
+ modeTokens: $circularMode,
169
+ })).toThrow(/Circular dependency detected in mode circularBase: .*--m-derived-a.*->.*--m-derived-b.*->.*--m-derived-a/);
142
170
  });
143
171
  //# sourceMappingURL=modeToCss.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modeToCss.test.js","sourceRoot":"","sources":["../src/modeToCss.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modeToCss.test.js","sourceRoot":"","sources":["../src/modeToCss.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbor-css/modes",
3
- "version": "0.0.73",
3
+ "version": "0.0.75",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -25,10 +25,10 @@
25
25
  "vitest": "^4.1.7"
26
26
  },
27
27
  "dependencies": {
28
- "@arbor-css/tokens": "0.0.73",
29
- "@arbor-css/globals": "0.0.73",
30
- "@arbor-css/calc": "0.0.73",
31
- "@arbor-css/util": "0.0.73"
28
+ "@arbor-css/tokens": "0.0.75",
29
+ "@arbor-css/util": "0.0.75",
30
+ "@arbor-css/calc": "0.0.75",
31
+ "@arbor-css/globals": "0.0.75"
32
32
  },
33
33
  "scripts": {
34
34
  "build": "tsc",