@arbor-css/postcss 0.0.60 → 0.0.62

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 +1 @@
1
- {"version":3,"file":"colorSystemProps.d.ts","sourceRoot":"","sources":["../src/colorSystemProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC9B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,MAAM,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,uFAAuF;QACvF,KAAK,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,WAAW,GACjB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAyChC"}
1
+ {"version":3,"file":"colorSystemProps.d.ts","sourceRoot":"","sources":["../src/colorSystemProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC9B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,MAAM,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,uFAAuF;QACvF,KAAK,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,WAAW,GACjB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA0ChC"}
@@ -3,44 +3,46 @@
3
3
  * Mirrors the behavior of the `classes` package color rules.
4
4
  */
5
5
  export function getColorPropEntries(preset) {
6
+ if (!preset.$?.system)
7
+ return {};
6
8
  const systemProps = preset.$.system;
7
9
  return {
8
10
  color: {
9
- applied: systemProps.fg.applied.name,
10
- final: systemProps.fg.$root.name,
11
- opacity: systemProps.fg.opacity.name,
11
+ applied: systemProps.ref.fg.applied.name,
12
+ final: systemProps.ref.fg.$root.name,
13
+ opacity: systemProps.ref.fg.opacity.name,
12
14
  },
13
15
  'background-color': {
14
- applied: systemProps.bg.applied.name,
15
- final: systemProps.bg.$root.name,
16
- opacity: systemProps.bg.opacity.name,
17
- extras: [{ prop: systemProps.bg.contrast.name, value: 'applied' }],
16
+ applied: systemProps.ref.bg.applied.name,
17
+ final: systemProps.ref.bg.$root.name,
18
+ opacity: systemProps.ref.bg.opacity.name,
19
+ extras: [{ prop: systemProps.ref.bg.contrast.name, value: 'applied' }],
18
20
  },
19
21
  background: {
20
- applied: systemProps.bg.applied.name,
21
- final: systemProps.bg.$root.name,
22
- opacity: systemProps.bg.opacity.name,
23
- extras: [{ prop: systemProps.bg.contrast.name, value: 'applied' }],
22
+ applied: systemProps.ref.bg.applied.name,
23
+ final: systemProps.ref.bg.$root.name,
24
+ opacity: systemProps.ref.bg.opacity.name,
25
+ extras: [{ prop: systemProps.ref.bg.contrast.name, value: 'applied' }],
24
26
  },
25
27
  'border-color': {
26
- applied: systemProps.borderColor[''].applied.name,
27
- final: systemProps.borderColor[''].$root.name,
28
- opacity: systemProps.borderColor[''].opacity.name,
28
+ applied: systemProps.ref.borderColor[''].applied.name,
29
+ final: systemProps.ref.borderColor[''].$root.name,
30
+ opacity: systemProps.ref.borderColor[''].opacity.name,
29
31
  },
30
32
  fill: {
31
- applied: systemProps.fill.applied.name,
32
- final: systemProps.fill.$root.name,
33
- opacity: systemProps.fill.opacity.name,
33
+ applied: systemProps.ref.fill.applied.name,
34
+ final: systemProps.ref.fill.$root.name,
35
+ opacity: systemProps.ref.fill.opacity.name,
34
36
  },
35
37
  stroke: {
36
- applied: systemProps.stroke.applied.name,
37
- final: systemProps.stroke.$root.name,
38
- opacity: systemProps.stroke.opacity.name,
38
+ applied: systemProps.ref.stroke.applied.name,
39
+ final: systemProps.ref.stroke.$root.name,
40
+ opacity: systemProps.ref.stroke.opacity.name,
39
41
  },
40
42
  'accent-color': {
41
- applied: systemProps.accent.applied.name,
42
- final: systemProps.accent.$root.name,
43
- opacity: systemProps.accent.opacity.name,
43
+ applied: systemProps.ref.accent.applied.name,
44
+ final: systemProps.ref.accent.$root.name,
45
+ opacity: systemProps.ref.accent.opacity.name,
44
46
  },
45
47
  };
46
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"colorSystemProps.js","sourceRoot":"","sources":["../src/colorSystemProps.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAClC,MAAmB;IAEnB,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO;QACN,KAAK,EAAE;YACN,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;YACpC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;YAChC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;SACpC;QACD,kBAAkB,EAAE;YACnB,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;YACpC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;YAChC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;YACpC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAClE;QACD,UAAU,EAAE;YACX,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;YACpC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;YAChC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;YACpC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAClE;QACD,cAAc,EAAE;YACf,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;YACjD,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;YAC7C,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;SACjD;QACD,IAAI,EAAE;YACL,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;YACtC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;YAClC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;SACtC;QACD,MAAM,EAAE;YACP,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;YACxC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;YACpC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;SACxC;QACD,cAAc,EAAE;YACf,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;YACxC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;YACpC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;SACxC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"colorSystemProps.js","sourceRoot":"","sources":["../src/colorSystemProps.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAClC,MAAmB;IAEnB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO;QACN,KAAK,EAAE;YACN,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;YACxC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;YACpC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;SACxC;QACD,kBAAkB,EAAE;YACnB,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;YACxC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;YACpC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;YACxC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SACtE;QACD,UAAU,EAAE;YACX,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;YACxC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;YACpC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;YACxC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SACtE;QACD,cAAc,EAAE;YACf,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;YACrD,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;YACjD,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;SACrD;QACD,IAAI,EAAE;YACL,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;YAC1C,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;YACtC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;SAC1C;QACD,MAAM,EAAE;YACP,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;YAC5C,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;YACxC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;SAC5C;QACD,cAAc,EAAE;YACf,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;YAC5C,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;YACxC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;SAC5C;KACD,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAI1C,MAAM,WAAW,kBAAkB;IAClC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAUD,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CA+GpE;yBA/Ge,WAAW;;;AAmH3B,eAAO,MAAM,QAAQ,oBAAc,CAAC;AAEpC,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAI1C,MAAM,WAAW,kBAAkB;IAClC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAUD,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CA4NpE;yBA5Ne,WAAW;;;AAoO3B,eAAO,MAAM,QAAQ,oBAAc,CAAC;AAEpC,eAAe,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,6 @@
1
+ import { printEquation } from '@arbor-css/calc';
1
2
  import { generateStylesheet } from '@arbor-css/core';
3
+ import { isFunction, isFunctionParamWithMeta, isMixin, } from '@arbor-css/functions';
2
4
  import { stat } from 'node:fs/promises';
3
5
  import postcss from 'postcss';
4
6
  import { getColorPropEntries } from './colorSystemProps.js';
@@ -29,11 +31,18 @@ export function ArborPlugin(options = {}) {
29
31
  }
30
32
  return null;
31
33
  }
32
- const currentStats = await stat(loaded.configPath);
34
+ let mtimeMs = 0;
35
+ try {
36
+ const currentStats = await stat(loaded.configPath);
37
+ mtimeMs = currentStats.mtimeMs;
38
+ }
39
+ catch {
40
+ // config path may be virtual (e.g. in tests); skip mtime caching
41
+ }
33
42
  cachedConfig = {
34
43
  configPath: loaded.configPath,
35
44
  preset: loaded.preset,
36
- mtimeMs: currentStats.mtimeMs,
45
+ mtimeMs,
37
46
  };
38
47
  return cachedConfig;
39
48
  }
@@ -54,7 +63,9 @@ export function ArborPlugin(options = {}) {
54
63
  root.walkComments((comment) => {
55
64
  if (comment.text.trim() === 'inline-arbor-base') {
56
65
  const generatedCss = generateStylesheet(config.preset);
57
- const generatedRoot = postcss.parse(generatedCss);
66
+ const generatedRoot = postcss.parse(generatedCss, {
67
+ from: config.configPath,
68
+ });
58
69
  comment.replaceWith(...generatedRoot.nodes);
59
70
  }
60
71
  });
@@ -64,9 +75,52 @@ export function ArborPlugin(options = {}) {
64
75
  if (!config) {
65
76
  return;
66
77
  }
78
+ const functionNamePrefix = config.preset.context.tokenPrefixes.functionNamePrefix;
79
+ // Inline custom function calls: --fn-name(arg1, arg2, ...)
80
+ if (decl.value.includes(functionNamePrefix)) {
81
+ const fnCallRegex = new RegExp(`(${escapeRegExp(functionNamePrefix)}[\\w-]+)\\(((?:[^()]|\\([^()]*\\))*)\\)`, 'g');
82
+ decl.value = decl.value.replace(fnCallRegex, (match, fnName, argsStr) => {
83
+ const fn = Object.values(config.preset.functions ?? {}).find((f) => isFunction(f) && f.name === fnName);
84
+ if (!fn) {
85
+ helper.result.warn(`[arbor-css] Unknown function: ${fnName}`, {
86
+ plugin: PLUGIN_NAME,
87
+ node: decl,
88
+ });
89
+ return match;
90
+ }
91
+ const args = argsStr
92
+ .split(',')
93
+ .map((a) => a.trim())
94
+ .filter(Boolean);
95
+ const paramValues = {};
96
+ let invalid = false;
97
+ fn.parameters.forEach((param, i) => {
98
+ const paramName = isFunctionParamWithMeta(param) ? param.name : param;
99
+ const required = !isFunctionParamWithMeta(param) || param.fallback === undefined;
100
+ if (i >= args.length && required) {
101
+ invalid = true;
102
+ helper.result.warn(`[arbor-css] Missing argument for parameter "${paramName}" in function call: ${match}`, {
103
+ plugin: PLUGIN_NAME,
104
+ node: decl,
105
+ });
106
+ return;
107
+ }
108
+ paramValues[paramName] = args[i] ?? '';
109
+ });
110
+ console.log(`[arbor-css] Inlining function call: ${match} with values`, paramValues);
111
+ if (invalid) {
112
+ return '/* Invalid function call */';
113
+ }
114
+ return fn.compute(paramValues);
115
+ });
116
+ }
67
117
  const colorPropEntries = getColorPropEntries(config.preset);
68
118
  const systemAssignmentEntry = colorPropEntries[decl.prop];
69
119
  if (systemAssignmentEntry) {
120
+ // Make sure we haven't already processed this assignment
121
+ if (decl.value.toString().includes(`var(${systemAssignmentEntry.final})`)) {
122
+ return;
123
+ }
70
124
  // Inject system color props before this declaration
71
125
  decl.cloneBefore({
72
126
  prop: systemAssignmentEntry.applied,
@@ -96,8 +150,35 @@ export function ArborPlugin(options = {}) {
96
150
  decl.value = `var(${systemAssignmentEntry.final})`;
97
151
  }
98
152
  },
153
+ async AtRule(atRule, helper) {
154
+ if (atRule.name !== 'apply')
155
+ return;
156
+ const config = await getConfig(helper);
157
+ if (!config)
158
+ return;
159
+ const mixinName = atRule.params.trim();
160
+ const mixinNamePrefix = config.preset.context.tokenPrefixes.mixinNamePrefix;
161
+ if (!mixinName.startsWith(mixinNamePrefix))
162
+ return;
163
+ const mixin = Object.values(config.preset.mixins ?? {}).find((m) => isMixin(m) && m.name === mixinName);
164
+ if (!mixin) {
165
+ helper.result.warn(`[arbor-css] Unknown mixin: ${mixinName}`, {
166
+ plugin: PLUGIN_NAME,
167
+ node: atRule,
168
+ });
169
+ return;
170
+ }
171
+ const declarations = mixin.inline();
172
+ for (const decl of declarations) {
173
+ atRule.cloneBefore(postcss.decl({ prop: decl.prop, value: printEquation(decl.value) }));
174
+ }
175
+ atRule.remove();
176
+ },
99
177
  };
100
178
  }
179
+ function escapeRegExp(s) {
180
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
181
+ }
101
182
  ArborPlugin.postcss = true;
102
183
  export const arborCss = ArborPlugin;
103
184
  export default ArborPlugin;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plugin.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.test.d.ts","sourceRoot":"","sources":["../src/plugin.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,147 @@
1
+ import { createMixinFactory } from '@arbor-css/functions';
2
+ import { createTokenFactory } from '@arbor-css/tokens';
3
+ import postcss from 'postcss';
4
+ import { beforeEach, expect, it, vi } from 'vitest';
5
+ import { createFunctionFactory } from '../../functions/dist/functions.js';
6
+ import { ArborPlugin } from './index.js';
7
+ import * as loadConfigModule from './loadConfig.js';
8
+ // Mock loadConfig so tests don't need jiti file I/O
9
+ vi.mock('./loadConfig.js', () => ({
10
+ loadConfig: vi.fn(),
11
+ }));
12
+ const mockLoadConfig = vi.mocked(loadConfigModule.loadConfig);
13
+ beforeEach(() => {
14
+ mockLoadConfig.mockReset();
15
+ });
16
+ function makeConfigResult(preset) {
17
+ return {
18
+ configPath: '/fake/arbor.config.ts',
19
+ preset: {
20
+ context: {
21
+ tokenPrefixes: {
22
+ modeTokenPrefix: '--m-',
23
+ primitiveTokenPrefix: '--p-',
24
+ metaTokenPrefix: '--_-',
25
+ refTokenPrefix: '--ref-',
26
+ functionNamePrefix: '--fn-',
27
+ mixinNamePrefix: '--mx-',
28
+ mixinTokenPrefix: '--mx-',
29
+ },
30
+ },
31
+ ...preset,
32
+ },
33
+ };
34
+ }
35
+ it('inlines @apply for an Arbor mixin', async () => {
36
+ const createToken = createTokenFactory({ tokenPrefix: '--mx-' });
37
+ const createMixin = createMixinFactory({ namePrefix: '--mx-', createToken });
38
+ const shadow = createMixin('shadow', {
39
+ description: 'Stacked shadow setup',
40
+ definition: (css) => [
41
+ {
42
+ prop: '--_-system-shadow',
43
+ value: css `
44
+ ${'0 0 0 0 transparent'}
45
+ `,
46
+ },
47
+ {
48
+ prop: '--_-system-ring',
49
+ value: css `
50
+ ${'0 0 0 0 transparent'}
51
+ `,
52
+ },
53
+ {
54
+ prop: 'box-shadow',
55
+ value: css `
56
+ ${'var(--_-system-ring), var(--_-system-shadow)'}
57
+ `,
58
+ },
59
+ ],
60
+ });
61
+ // Fake stat so cache check passes
62
+ mockLoadConfig.mockResolvedValue(makeConfigResult({ functions: {}, mixins: { shadow }, $: undefined }));
63
+ const plugin = ArborPlugin({ cwd: '/fake' });
64
+ const result = await postcss([plugin]).process(`.btn { @apply --mx-shadow; color: red; }`, { from: undefined });
65
+ const output = result.css;
66
+ expect(output).toContain('--_-system-shadow: 0 0 0 0 transparent');
67
+ expect(output).toContain('--_-system-ring: 0 0 0 0 transparent');
68
+ expect(output).toContain('box-shadow: var(--_-system-ring), var(--_-system-shadow)');
69
+ expect(output).not.toContain('@apply');
70
+ });
71
+ it('warns when @apply references an unknown mixin', async () => {
72
+ mockLoadConfig.mockResolvedValue(makeConfigResult({
73
+ context: {
74
+ tokenPrefixes: {
75
+ modeTokenPrefix: '--m-',
76
+ primitiveTokenPrefix: '--p-',
77
+ metaTokenPrefix: '--_-',
78
+ refTokenPrefix: '--ref-',
79
+ functionNamePrefix: '--fn-',
80
+ mixinNamePrefix: '--mx-',
81
+ mixinTokenPrefix: '--mx-',
82
+ },
83
+ },
84
+ functions: {},
85
+ mixins: {},
86
+ $: undefined,
87
+ }));
88
+ const plugin = ArborPlugin({ cwd: '/fake' });
89
+ const result = await postcss([plugin]).process(`.btn { @apply --mx-unknown; }`, { from: undefined });
90
+ const warnings = result.messages
91
+ .filter((m) => m.type === 'warning')
92
+ .map((m) => m.text);
93
+ expect(warnings.some((w) => w.includes('--mx-unknown'))).toBe(true);
94
+ // The unresolved @apply should remain in the output
95
+ expect(result.css).toContain('@apply --mx-unknown');
96
+ });
97
+ it('does not touch @apply rules without the Arbor mixin prefix', async () => {
98
+ mockLoadConfig.mockResolvedValue(makeConfigResult({
99
+ context: {
100
+ tokenPrefixes: {
101
+ modeTokenPrefix: '--m-',
102
+ primitiveTokenPrefix: '--p-',
103
+ metaTokenPrefix: '--_-',
104
+ refTokenPrefix: '--ref-',
105
+ functionNamePrefix: '--fn-',
106
+ mixinNamePrefix: '--mx-',
107
+ mixinTokenPrefix: '--mx-',
108
+ },
109
+ },
110
+ functions: {},
111
+ mixins: {},
112
+ $: undefined,
113
+ }));
114
+ const plugin = ArborPlugin({ cwd: '/fake' });
115
+ const result = await postcss([plugin]).process(`.btn { @apply some-tailwind-class; }`, { from: undefined });
116
+ expect(result.css).toContain('@apply some-tailwind-class');
117
+ });
118
+ it('inlines function calls in declaration values', async () => {
119
+ const createFunction = createFunctionFactory({ namePrefix: '--fn-' });
120
+ const double = createFunction('double', {
121
+ description: 'Doubles a number',
122
+ parameters: ['--value'],
123
+ definition: ($, value) => $ `${value}`,
124
+ });
125
+ mockLoadConfig.mockResolvedValue(makeConfigResult({
126
+ context: {
127
+ tokenPrefixes: {
128
+ modeTokenPrefix: '--m-',
129
+ primitiveTokenPrefix: '--p-',
130
+ metaTokenPrefix: '--_-',
131
+ refTokenPrefix: '--ref-',
132
+ functionNamePrefix: '--fn-',
133
+ mixinNamePrefix: '--mx-',
134
+ mixinTokenPrefix: '--mx-',
135
+ },
136
+ },
137
+ functions: { double },
138
+ mixins: {},
139
+ $: undefined,
140
+ }));
141
+ const plugin = ArborPlugin({ cwd: '/fake' });
142
+ const result = await postcss([plugin]).process(`.btn { font-size: --fn-double(4); }`, { from: undefined });
143
+ // The function call should be replaced with the computed value
144
+ expect(result.css).not.toContain('--fn-double(');
145
+ expect(result.css).toContain('4');
146
+ });
147
+ //# sourceMappingURL=plugin.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.test.js","sourceRoot":"","sources":["../src/plugin.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbor-css/postcss",
3
- "version": "0.0.60",
3
+ "version": "0.0.62",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -23,9 +23,11 @@
23
23
  "dependencies": {
24
24
  "jiti": "^2.4.2",
25
25
  "postcss": "^8.5.4",
26
- "@arbor-css/core": "0.0.60",
27
- "@arbor-css/globals": "0.0.60",
28
- "@arbor-css/tokens": "0.0.60"
26
+ "@arbor-css/calc": "0.0.62",
27
+ "@arbor-css/core": "0.0.62",
28
+ "@arbor-css/functions": "0.0.62",
29
+ "@arbor-css/tokens": "0.0.62",
30
+ "@arbor-css/globals": "0.0.62"
29
31
  },
30
32
  "devDependencies": {
31
33
  "typescript": "^6.0.3",