@arbor-css/postcss 0.0.60 → 0.0.63

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":"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;AAG1C,MAAM,WAAW,kBAAkB;IAClC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAwID,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAsLpE;yBAtLe,WAAW;;;AA8L3B,eAAO,MAAM,QAAQ,oBAAc,CAAC;AAEpC,eAAe,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,109 @@
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
- import { getColorPropEntries } from './colorSystemProps.js';
5
6
  import { loadConfig } from './loadConfig.js';
6
7
  const PLUGIN_NAME = 'arbor-css';
8
+ function parsePrefixedCall(input, namePrefix) {
9
+ const source = input.trim();
10
+ if (!source.startsWith(namePrefix))
11
+ return null;
12
+ let nameEnd = namePrefix.length;
13
+ while (nameEnd < source.length && /[\w-]/.test(source[nameEnd])) {
14
+ nameEnd += 1;
15
+ }
16
+ if (nameEnd === namePrefix.length)
17
+ return null;
18
+ const name = source.slice(0, nameEnd);
19
+ if (nameEnd === source.length) {
20
+ return { name, args: [] };
21
+ }
22
+ if (source[nameEnd] !== '(' || source[source.length - 1] !== ')') {
23
+ return null;
24
+ }
25
+ let depth = 0;
26
+ for (let i = nameEnd; i < source.length; i += 1) {
27
+ const char = source[i];
28
+ if (char === '(')
29
+ depth += 1;
30
+ if (char === ')')
31
+ depth -= 1;
32
+ if (depth === 0 && i < source.length - 1) {
33
+ return null;
34
+ }
35
+ if (depth < 0)
36
+ return null;
37
+ }
38
+ if (depth !== 0)
39
+ return null;
40
+ return { name, args: splitCallArguments(source.slice(nameEnd + 1, -1)) };
41
+ }
42
+ function splitCallArguments(input) {
43
+ const args = [];
44
+ let depth = 0;
45
+ let current = '';
46
+ for (const char of input) {
47
+ if (char === '(') {
48
+ depth += 1;
49
+ current += char;
50
+ continue;
51
+ }
52
+ if (char === ')') {
53
+ depth -= 1;
54
+ current += char;
55
+ continue;
56
+ }
57
+ if (char === ',' && depth === 0) {
58
+ args.push(current.trim());
59
+ current = '';
60
+ continue;
61
+ }
62
+ current += char;
63
+ }
64
+ args.push(current.trim());
65
+ return args;
66
+ }
67
+ function computeFunctionCallValue({ input, config, node, helper, }) {
68
+ const functionNamePrefix = config.preset.context.tokenPrefixes.functionNamePrefix;
69
+ const parsedCall = parsePrefixedCall(input, functionNamePrefix);
70
+ if (!parsedCall)
71
+ return input;
72
+ const fn = Object.values(config.preset.functions ?? {}).find((f) => isFunction(f) && f.name === parsedCall.name);
73
+ if (!fn) {
74
+ helper.result.warn(`[arbor-css] Unknown function: ${parsedCall.name}`, {
75
+ plugin: PLUGIN_NAME,
76
+ node,
77
+ });
78
+ return input;
79
+ }
80
+ const paramValues = {};
81
+ let invalid = false;
82
+ fn.parameters.forEach((param, i) => {
83
+ const paramName = isFunctionParamWithMeta(param) ? param.name : param;
84
+ const fallback = isFunctionParamWithMeta(param) ? param.fallback?.toString() : undefined;
85
+ const required = fallback === undefined;
86
+ const providedValue = parsedCall.args[i];
87
+ const value = providedValue === undefined || providedValue === '' ?
88
+ fallback
89
+ : providedValue;
90
+ if (value === undefined && required) {
91
+ invalid = true;
92
+ helper.result.warn(`[arbor-css] Missing argument for parameter "${paramName}" in function call: ${input}`, {
93
+ plugin: PLUGIN_NAME,
94
+ node,
95
+ });
96
+ return;
97
+ }
98
+ if (value !== undefined) {
99
+ paramValues[paramName] = value;
100
+ }
101
+ });
102
+ if (invalid) {
103
+ return input;
104
+ }
105
+ return fn.compute(paramValues);
106
+ }
7
107
  export function ArborPlugin(options = {}) {
8
108
  const { configFile, cwd = process.cwd() } = options;
9
109
  let cachedConfig = null;
@@ -29,11 +129,18 @@ export function ArborPlugin(options = {}) {
29
129
  }
30
130
  return null;
31
131
  }
32
- const currentStats = await stat(loaded.configPath);
132
+ let mtimeMs = 0;
133
+ try {
134
+ const currentStats = await stat(loaded.configPath);
135
+ mtimeMs = currentStats.mtimeMs;
136
+ }
137
+ catch {
138
+ // config path may be virtual (e.g. in tests); skip mtime caching
139
+ }
33
140
  cachedConfig = {
34
141
  configPath: loaded.configPath,
35
142
  preset: loaded.preset,
36
- mtimeMs: currentStats.mtimeMs,
143
+ mtimeMs,
37
144
  };
38
145
  return cachedConfig;
39
146
  }
@@ -54,7 +161,9 @@ export function ArborPlugin(options = {}) {
54
161
  root.walkComments((comment) => {
55
162
  if (comment.text.trim() === 'inline-arbor-base') {
56
163
  const generatedCss = generateStylesheet(config.preset);
57
- const generatedRoot = postcss.parse(generatedCss);
164
+ const generatedRoot = postcss.parse(generatedCss, {
165
+ from: config.configPath,
166
+ });
58
167
  comment.replaceWith(...generatedRoot.nodes);
59
168
  }
60
169
  });
@@ -64,40 +173,86 @@ export function ArborPlugin(options = {}) {
64
173
  if (!config) {
65
174
  return;
66
175
  }
67
- const colorPropEntries = getColorPropEntries(config.preset);
68
- const systemAssignmentEntry = colorPropEntries[decl.prop];
69
- if (systemAssignmentEntry) {
70
- // Inject system color props before this declaration
71
- decl.cloneBefore({
72
- prop: systemAssignmentEntry.applied,
73
- value: decl.value,
74
- raws: {},
75
- });
76
- decl.cloneBefore({
77
- prop: systemAssignmentEntry.final,
78
- value: `var(${systemAssignmentEntry.applied})`,
79
- raws: {},
80
- });
81
- decl.cloneBefore({
82
- prop: systemAssignmentEntry.opacity,
83
- value: '1',
84
- raws: {},
176
+ const functionNamePrefix = config.preset.context.tokenPrefixes.functionNamePrefix;
177
+ // Inline custom function calls: --fn-name(arg1, arg2, ...)
178
+ if (decl.value.includes(functionNamePrefix)) {
179
+ const fnCallRegex = new RegExp(`(${escapeRegExp(functionNamePrefix)}[\\w-]+)\\(((?:[^()]|\\([^()]*\\))*)\\)`, 'g');
180
+ decl.value = decl.value.replace(fnCallRegex, (match) => computeFunctionCallValue({
181
+ input: match,
182
+ config,
183
+ node: decl,
184
+ helper,
185
+ }));
186
+ }
187
+ },
188
+ async AtRule(atRule, helper) {
189
+ if (atRule.name !== 'apply')
190
+ return;
191
+ const config = await getConfig(helper);
192
+ if (!config)
193
+ return;
194
+ const mixinApplyCall = atRule.params.trim();
195
+ const mixinNamePrefix = config.preset.context.tokenPrefixes.mixinNamePrefix;
196
+ if (!mixinApplyCall.startsWith(mixinNamePrefix))
197
+ return;
198
+ const parsedMixinCall = parsePrefixedCall(mixinApplyCall, mixinNamePrefix);
199
+ if (!parsedMixinCall)
200
+ return;
201
+ const mixinName = parsedMixinCall.name;
202
+ const mixinArgs = parsedMixinCall.args;
203
+ const mixin = Object.values(config.preset.mixins ?? {}).find((m) => isMixin(m) && m.name === mixinName);
204
+ if (!mixin) {
205
+ helper.result.warn(`[arbor-css] Unknown mixin: ${mixinName}`, {
206
+ plugin: PLUGIN_NAME,
207
+ node: atRule,
85
208
  });
86
- for (const extra of systemAssignmentEntry.extras ?? []) {
87
- decl.cloneBefore({
88
- prop: extra.prop,
89
- value: extra.value === 'applied' ?
90
- `var(${systemAssignmentEntry.applied})`
91
- : extra.value,
92
- raws: {},
209
+ return;
210
+ }
211
+ const mixinParamValues = {};
212
+ let invalidMixinCall = false;
213
+ mixin.parameters.forEach((param, i) => {
214
+ const paramName = isFunctionParamWithMeta(param) ? param.name : param;
215
+ const fallback = isFunctionParamWithMeta(param) ? param.fallback?.toString() : undefined;
216
+ const required = fallback === undefined;
217
+ const providedValue = mixinArgs[i];
218
+ const value = providedValue === undefined || providedValue === '' ?
219
+ fallback
220
+ : providedValue;
221
+ if (value === undefined && required) {
222
+ invalidMixinCall = true;
223
+ helper.result.warn(`[arbor-css] Missing argument for parameter "${paramName}" in mixin apply: @apply ${mixinApplyCall}`, {
224
+ plugin: PLUGIN_NAME,
225
+ node: atRule,
226
+ });
227
+ return;
228
+ }
229
+ if (value !== undefined) {
230
+ mixinParamValues[paramName] = computeFunctionCallValue({
231
+ input: value,
232
+ config,
233
+ node: atRule,
234
+ helper,
93
235
  });
94
236
  }
95
- // Point the actual CSS property at the system final var for runtime flexibility
96
- decl.value = `var(${systemAssignmentEntry.final})`;
237
+ });
238
+ if (invalidMixinCall) {
239
+ return;
97
240
  }
241
+ const declarations = mixin.inline();
242
+ for (const decl of declarations) {
243
+ let value = printEquation(decl.value);
244
+ for (const [paramName, paramValue] of Object.entries(mixinParamValues)) {
245
+ value = value.replaceAll(`var(${paramName})`, paramValue);
246
+ }
247
+ atRule.cloneBefore(postcss.decl({ prop: decl.prop, value }));
248
+ }
249
+ atRule.remove();
98
250
  },
99
251
  };
100
252
  }
253
+ function escapeRegExp(s) {
254
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
255
+ }
101
256
  ArborPlugin.postcss = true;
102
257
  export const arborCss = ArborPlugin;
103
258
  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,215 @@
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
+ it('does not implicitly rewrite color declarations into ref system vars', async () => {
148
+ mockLoadConfig.mockResolvedValue(makeConfigResult({
149
+ functions: {},
150
+ mixins: {},
151
+ $: undefined,
152
+ }));
153
+ const plugin = ArborPlugin({ cwd: '/fake' });
154
+ const result = await postcss([plugin]).process(`.btn { color: red; background: blue; }`, { from: undefined });
155
+ expect(result.css).toContain('color: red');
156
+ expect(result.css).toContain('background: blue');
157
+ expect(result.css).not.toContain('--ref-');
158
+ });
159
+ it('inlines @apply mixin arguments into parameterized mixin declarations', async () => {
160
+ const createToken = createTokenFactory({ tokenPrefix: '--mx-' });
161
+ const createMixin = createMixinFactory({ namePrefix: '--mx-', createToken });
162
+ const fg = createMixin('fg', {
163
+ parameters: ['--color'],
164
+ definition: (css, { parameters: [color] }) => ({
165
+ color: css `${color}`,
166
+ }),
167
+ });
168
+ mockLoadConfig.mockResolvedValue(makeConfigResult({ functions: {}, mixins: { fg }, $: undefined }));
169
+ const plugin = ArborPlugin({ cwd: '/fake' });
170
+ const result = await postcss([plugin]).process(`.btn { @apply --mx-fg(var(--m-color-main-ink)); }`, { from: undefined });
171
+ expect(result.css).toContain('color: var(--m-color-main-ink)');
172
+ expect(result.css).not.toContain('var(--color)');
173
+ expect(result.css).not.toContain('@apply');
174
+ });
175
+ it('inlines function results passed as @apply mixin arguments', async () => {
176
+ const createToken = createTokenFactory({ tokenPrefix: '--mx-' });
177
+ const createMixin = createMixinFactory({ namePrefix: '--mx-', createToken });
178
+ const createFunction = createFunctionFactory({ namePrefix: '--fn-' });
179
+ const fade = createFunction('fade', {
180
+ description: 'Writes alpha onto a color',
181
+ parameters: ['--color', '--opacity'],
182
+ definition: (css, color, opacity) => css `oklch(from ${color} l c h / ${opacity})`,
183
+ });
184
+ const fg = createMixin('fg', {
185
+ parameters: ['--color'],
186
+ definition: (css, { parameters: [color] }) => ({
187
+ color: css `${color}`,
188
+ }),
189
+ });
190
+ mockLoadConfig.mockResolvedValue(makeConfigResult({ functions: { fade }, mixins: { fg }, $: undefined }));
191
+ const plugin = ArborPlugin({ cwd: '/fake' });
192
+ const result = await postcss([plugin]).process(`.btn { @apply --mx-fg(--fn-fade(var(--m-color-main-ink), 42%)); }`, { from: undefined });
193
+ expect(result.css).toContain('color: oklch(from var(--m-color-main-ink) l c h / 42%)');
194
+ expect(result.css).not.toContain('--fn-fade(');
195
+ expect(result.css).not.toContain('@apply');
196
+ });
197
+ it('warns when @apply omits a required mixin argument', async () => {
198
+ const createToken = createTokenFactory({ tokenPrefix: '--mx-' });
199
+ const createMixin = createMixinFactory({ namePrefix: '--mx-', createToken });
200
+ const fg = createMixin('fg', {
201
+ parameters: ['--color'],
202
+ definition: (css, { parameters: [color] }) => ({
203
+ color: css `${color}`,
204
+ }),
205
+ });
206
+ mockLoadConfig.mockResolvedValue(makeConfigResult({ functions: {}, mixins: { fg }, $: undefined }));
207
+ const plugin = ArborPlugin({ cwd: '/fake' });
208
+ const result = await postcss([plugin]).process(`.btn { @apply --mx-fg; }`, { from: undefined });
209
+ const warnings = result.messages
210
+ .filter((m) => m.type === 'warning')
211
+ .map((m) => m.text);
212
+ expect(warnings.some((w) => w.includes('Missing argument'))).toBe(true);
213
+ expect(result.css).toContain('@apply --mx-fg');
214
+ });
215
+ //# 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.63",
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.63",
27
+ "@arbor-css/core": "0.0.63",
28
+ "@arbor-css/functions": "0.0.63",
29
+ "@arbor-css/tokens": "0.0.63",
30
+ "@arbor-css/globals": "0.0.63"
29
31
  },
30
32
  "devDependencies": {
31
33
  "typescript": "^6.0.3",
@@ -1,21 +0,0 @@
1
- import { ArborPreset } from '@arbor-css/core';
2
- export interface ColorPropEntry {
3
- /** CSS custom property name for the applied color */
4
- applied: string;
5
- /** CSS custom property name for the final color (used as the actual property value) */
6
- final: string;
7
- /** CSS custom property name for opacity */
8
- opacity: string;
9
- /** Extra custom properties to inject alongside the standard three */
10
- extras?: Array<{
11
- prop: string;
12
- /** 'applied' = use the resolved color value; otherwise treat as a literal CSS value */
13
- value: string;
14
- }>;
15
- }
16
- /**
17
- * Maps CSS color-related property names to the Arbor system props they should populate.
18
- * Mirrors the behavior of the `classes` package color rules.
19
- */
20
- export declare function getColorPropEntries(preset: ArborPreset): Record<string, ColorPropEntry>;
21
- //# sourceMappingURL=colorSystemProps.d.ts.map
@@ -1 +0,0 @@
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,47 +0,0 @@
1
- /**
2
- * Maps CSS color-related property names to the Arbor system props they should populate.
3
- * Mirrors the behavior of the `classes` package color rules.
4
- */
5
- export function getColorPropEntries(preset) {
6
- const systemProps = preset.$.system;
7
- return {
8
- color: {
9
- applied: systemProps.fg.applied.name,
10
- final: systemProps.fg.$root.name,
11
- opacity: systemProps.fg.opacity.name,
12
- },
13
- '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' }],
18
- },
19
- 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' }],
24
- },
25
- 'border-color': {
26
- applied: systemProps.borderColor[''].applied.name,
27
- final: systemProps.borderColor[''].$root.name,
28
- opacity: systemProps.borderColor[''].opacity.name,
29
- },
30
- fill: {
31
- applied: systemProps.fill.applied.name,
32
- final: systemProps.fill.$root.name,
33
- opacity: systemProps.fill.opacity.name,
34
- },
35
- stroke: {
36
- applied: systemProps.stroke.applied.name,
37
- final: systemProps.stroke.$root.name,
38
- opacity: systemProps.stroke.opacity.name,
39
- },
40
- 'accent-color': {
41
- applied: systemProps.accent.applied.name,
42
- final: systemProps.accent.$root.name,
43
- opacity: systemProps.accent.opacity.name,
44
- },
45
- };
46
- }
47
- //# sourceMappingURL=colorSystemProps.js.map
@@ -1 +0,0 @@
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"}