@arbor-css/modes 0.0.15 → 0.0.16

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.
@@ -6,7 +6,14 @@ export type ModeSchemaProperty = ModePropertyType | {
6
6
  fallback: string;
7
7
  };
8
8
  export type ModeSchemaLevel = {
9
- [Key: string]: ModeSchemaProperty | ModeSchemaLevel;
9
+ /**
10
+ * Special key: creates a token at the current group path without appending
11
+ * a `-$root` segment. For example, `{ colors: { main: { $root: 'color', mid: 'color' } } }`
12
+ * generates `--Ⓜ️-colors-main` (for `$root`) and `--Ⓜ️-colors-main-mid` (for `mid`).
13
+ * Optional at any level.
14
+ */
15
+ $root?: ModeSchemaProperty;
16
+ [Key: string]: ModeSchemaProperty | ModeSchemaLevel | undefined;
10
17
  };
11
18
  export type ModeSchema<TSchema extends ModeSchemaLevel = ModeSchemaLevel> = {
12
19
  definition: TSchema;
@@ -27,7 +34,7 @@ export type DeepPartial<T> = {
27
34
  export type ModeValue = string | number | Token | TrackedValue;
28
35
  export declare function isModeValue(value: any): value is ModeValue;
29
36
  export type ModeValues<T extends ModeSchemaLevel> = {
30
- [P in keyof T]: T[P] extends ModeSchemaProperty ? ModeValue : T[P] extends ModeSchemaLevel ? ModeValues<T[P]> : never;
37
+ [P in keyof T]: NonNullable<T[P]> extends ModeSchemaProperty ? ModeValue : NonNullable<T[P]> extends ModeSchemaLevel ? ModeValues<NonNullable<T[P]>> : never;
31
38
  };
32
39
  export interface ModeConfig {
33
40
  name: string;
@@ -41,7 +48,7 @@ export type PartialModeInstance<T extends ModeSchemaLevel> = Omit<ModeInstance<T
41
48
  values: DeepPartial<ModeValues<T>>;
42
49
  };
43
50
  type AsPropertyDefinitions<T> = T extends object ? {
44
- [P in keyof T]: T[P] extends string ? Token : T[P] extends object ? AsPropertyDefinitions<T[P]> : never;
51
+ [P in keyof T]: NonNullable<T[P]> extends string ? Token : NonNullable<T[P]> extends object ? AsPropertyDefinitions<NonNullable<T[P]>> : never;
45
52
  } : never;
46
53
  export declare function flattenToPropsList(obj: any): Token[];
47
54
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"createModeSchema.d.ts","sourceRoot":"","sources":["../src/createModeSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAkB,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAC5C,MAAM,MAAM,kBAAkB,GAC3B,gBAAgB,GAChB;IACA,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAChB,CAAC;AAEL,MAAM,MAAM,eAAe,GAAG;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,eAAe,CAAC;CACpD,CAAC;AACF,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,eAAe,GAAG,eAAe,IAAI;IAC3E,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACxC,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,eAAe,EAChD,SAAS,EAAE,gBAAgB,KACvB,UAAU,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AA2BF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,eAAe,EACzD,KAAK,EAAE,CAAC,EACR,EAAE,GAAU,EAAE,QAAQ,EAAE,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAChE,UAAU,CAAC,CAAC,CAAC,CAsCf;AAED,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,YAAY,CAAC;AAC/D,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,SAAS,CAO1D;AACD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,eAAe,IAAI;KAClD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,kBAAkB,GAAG,SAAS,GACzD,CAAC,CAAC,CAAC,CAAC,SAAS,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC/C,KAAK;CACP,CAAC;AAEF,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,eAAe,IAAI;IACrD,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,eAAe,IAAI,IAAI,CAChE,YAAY,CAAC,CAAC,CAAC,EACf,QAAQ,CACR,GAAG;IACH,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACnC,CAAC;AAEF,KAAK,qBAAqB,CAAC,CAAC,IAC3B,CAAC,SAAS,MAAM,GACf;KACE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,GACzC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjD,KAAK;CACP,GACA,KAAK,CAAC;AA8BT,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,EAAE,CAUpD"}
1
+ {"version":3,"file":"createModeSchema.d.ts","sourceRoot":"","sources":["../src/createModeSchema.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,13 @@ function createModeTokens(root, tag) {
67
67
  const propsLevel = {};
68
68
  for (const key in schemaLevel) {
69
69
  const value = schemaLevel[key];
70
+ if (key === '$root') {
71
+ // $root generates a token at the current group path (no segment appended)
72
+ if (isModeSchemaProperty(value)) {
73
+ propsLevel.$root = getModeSchemaPropertyAsPropertyDefinition(propPrefix, value, propPrefix);
74
+ }
75
+ continue;
76
+ }
70
77
  const currentPrefix = `${propPrefix}-${key.toLowerCase()}`;
71
78
  if (isModeSchemaProperty(value)) {
72
79
  const propertyDefinition = getModeSchemaPropertyAsPropertyDefinition(currentPrefix, value, propPrefix);
@@ -1 +1 @@
1
- {"version":3,"file":"createModeSchema.js","sourceRoot":"","sources":["../src/createModeSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createModeSchema.js","sourceRoot":"","sources":["../src/createModeSchema.ts"],"names":[],"mappings":"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"}
@@ -29,29 +29,89 @@ const underivedMode = testSchema.createPartial('underived', {
29
29
  it('prints a base mode with derived values', () => {
30
30
  const css = modeToCss(baseMode, baseMode);
31
31
  expect(css).toMatchInlineSnapshot(`
32
- "--Ⓜ️-derived-once: color-mix(in hsl, var(--Ⓜ️-value), black);
32
+ ".\\@mode-base,
33
+ [data-mode-base=""],
34
+ :where(.\\@mode-base [class^="\\@scheme-"]),
35
+ :where([data-mode-base=""] [class^="\\@scheme-"]) {
36
+ --ℹ️-mode: base;
37
+ --Ⓜ️-derived-once: color-mix(in hsl, var(--Ⓜ️-value), black);
33
38
  --Ⓜ️-derived-twice: color-mix(in hsl, var(--Ⓜ️-derived-once), transparent);
34
39
  --Ⓜ️-derived-again: color-mix(in hsl, var(--Ⓜ️-value), red);
35
40
  --Ⓜ️-value: red;
41
+
42
+ }
36
43
  "
37
44
  `);
38
45
  });
39
46
  it('prints a partial mode with derived dependencies it doesnt declare', () => {
40
47
  const css = modeToCss(partialMode, baseMode);
41
48
  expect(css).toMatchInlineSnapshot(`
42
- "--Ⓜ️-derived-once: color-mix(in hsl, var(--Ⓜ️-value), black);
49
+ ".\\@mode-partial,
50
+ [data-mode-partial=""],
51
+ :where(.\\@mode-partial [class^="\\@scheme-"]),
52
+ :where([data-mode-partial=""] [class^="\\@scheme-"]) {
53
+ --ℹ️-mode: partial;
54
+ --Ⓜ️-derived-once: color-mix(in hsl, var(--Ⓜ️-value), black);
43
55
  --Ⓜ️-derived-twice: color-mix(in hsl, var(--Ⓜ️-derived-once), transparent);
44
56
  --Ⓜ️-derived-again: color-mix(in hsl, var(--Ⓜ️-value), red);
45
57
  --Ⓜ️-value: blue;
58
+
59
+ }
46
60
  "
47
61
  `);
48
62
  });
49
63
  it('prints a partial mode which overrides derived dependencies from base and doesnt go upstream from there, but does go downstream to further derivations', () => {
50
64
  const css = modeToCss(underivedMode, baseMode);
51
65
  expect(css).toMatchInlineSnapshot(`
52
- "--Ⓜ️-derived-twice: color-mix(in hsl, var(--Ⓜ️-derived-once), transparent);
66
+ ".\\@mode-underived,
67
+ [data-mode-underived=""],
68
+ :where(.\\@mode-underived [class^="\\@scheme-"]),
69
+ :where([data-mode-underived=""] [class^="\\@scheme-"]) {
70
+ --ℹ️-mode: underived;
71
+ --Ⓜ️-derived-twice: color-mix(in hsl, var(--Ⓜ️-derived-once), transparent);
53
72
  --Ⓜ️-derived-once: green;
73
+
74
+ }
54
75
  "
55
76
  `);
56
77
  });
78
+ // $root tests
79
+ const rootSchema = createModeSchema({
80
+ colors: {
81
+ main: {
82
+ $root: 'color',
83
+ mid: 'color',
84
+ },
85
+ },
86
+ });
87
+ const rootBase = rootSchema.createBase({
88
+ colors: {
89
+ main: {
90
+ $root: 'oklch(0.5 0.1 240)',
91
+ mid: 'oklch(0.6 0.1 240)',
92
+ },
93
+ },
94
+ });
95
+ it('$root at nested level generates CSS var at group path (no -$root suffix)', () => {
96
+ const css = modeToCss(rootBase, rootBase);
97
+ expect(css).toContain('--Ⓜ️-colors-main: oklch(0.5 0.1 240)');
98
+ expect(css).not.toContain('--Ⓜ️-colors-main-$root');
99
+ });
100
+ it('$root and sibling keys coexist and both emit correctly', () => {
101
+ const css = modeToCss(rootBase, rootBase);
102
+ expect(css).toContain('--Ⓜ️-colors-main: oklch(0.5 0.1 240)');
103
+ expect(css).toContain('--Ⓜ️-colors-main-mid: oklch(0.6 0.1 240)');
104
+ });
105
+ it('partial mode override of $root maps correctly', () => {
106
+ const partial = rootSchema.createPartial('alt', {
107
+ colors: {
108
+ main: {
109
+ $root: 'oklch(0.7 0.2 30)',
110
+ },
111
+ },
112
+ });
113
+ const css = modeToCss(partial, rootBase);
114
+ expect(css).toContain('--Ⓜ️-colors-main: oklch(0.7 0.2 30)');
115
+ expect(css).not.toContain('--Ⓜ️-colors-main-mid');
116
+ });
57
117
  //# sourceMappingURL=modeToCss.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modeToCss.test.js","sourceRoot":"","sources":["../src/modeToCss.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,UAAU,GAAG,gBAAgB,CAAC;IACnC,KAAK,EAAE,OAAO;IACd,OAAO,EAAE;QACR,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;KACd;CACD,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC;IACtC,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE;QACR,IAAI,EAAE,MAAM,CAAA,qBAAqB,UAAU,CAAC,OAAO,CAAC,KAAK,UAAU;QACnE,KAAK,EAAE,MAAM,CAAA,qBAAqB,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,gBAAgB;QACjF,KAAK,EAAE,MAAM,CAAA,qBAAqB,UAAU,CAAC,OAAO,CAAC,KAAK,QAAQ;KAClE;CACD,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,SAAS,EAAE;IACvD,KAAK,EAAE,MAAM;CACb,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE;IAC3D,OAAO,EAAE;QACR,IAAI,EAAE,OAAO;KACb;CACD,CAAC,CAAC;AAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACjD,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC;;;;;;EAMjC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC5E,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC;;;;;;EAMjC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,uJAAuJ,EAAE,GAAG,EAAE;IAChK,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC;;;;EAIjC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"modeToCss.test.js","sourceRoot":"","sources":["../src/modeToCss.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,UAAU,GAAG,gBAAgB,CAAC;IACnC,KAAK,EAAE,OAAO;IACd,OAAO,EAAE;QACR,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;KACd;CACD,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC;IACtC,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE;QACR,IAAI,EAAE,MAAM,CAAA,qBAAqB,UAAU,CAAC,OAAO,CAAC,KAAK,UAAU;QACnE,KAAK,EAAE,MAAM,CAAA,qBAAqB,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,gBAAgB;QACjF,KAAK,EAAE,MAAM,CAAA,qBAAqB,UAAU,CAAC,OAAO,CAAC,KAAK,QAAQ;KAClE;CACD,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,SAAS,EAAE;IACvD,KAAK,EAAE,MAAM;CACb,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE;IAC3D,OAAO,EAAE;QACR,IAAI,EAAE,OAAO;KACb;CACD,CAAC,CAAC;AAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACjD,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;EAajC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC5E,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;EAajC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,uJAAuJ,EAAE,GAAG,EAAE;IAChK,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;EAWjC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,cAAc;AACd,MAAM,UAAU,GAAG,gBAAgB,CAAC;IACnC,MAAM,EAAE;QACP,IAAI,EAAE;YACL,KAAK,EAAE,OAAO;YACd,GAAG,EAAE,OAAO;SACZ;KACD;CACD,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC;IACtC,MAAM,EAAE;QACP,IAAI,EAAE;YACL,KAAK,EAAE,oBAAoB;YAC3B,GAAG,EAAE,oBAAoB;SACzB;KACD;CACD,CAAC,CAAC;AAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;IACnF,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;IACjE,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;IACxD,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;QAC/C,MAAM,EAAE;YACP,IAAI,EAAE;gBACL,KAAK,EAAE,mBAAmB;aAC1B;SACD;KACD,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbor-css/modes",
3
- "version": "0.0.15",
3
+ "version": "0.0.16",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -25,9 +25,9 @@
25
25
  "vitest": "^4.1.5"
26
26
  },
27
27
  "dependencies": {
28
- "@arbor-css/tokens": "0.0.15",
29
- "@arbor-css/globals": "0.0.15",
30
- "@arbor-css/util": "0.0.15"
28
+ "@arbor-css/util": "0.0.16",
29
+ "@arbor-css/tokens": "0.0.16",
30
+ "@arbor-css/globals": "0.0.16"
31
31
  },
32
32
  "scripts": {
33
33
  "build": "tsc",