@praxisjs/css 0.3.3 → 0.3.5

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.
Files changed (146) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/builder/css-builder.d.ts.map +1 -1
  3. package/dist/builder/css-builder.js +68 -74
  4. package/dist/builder/css-builder.js.map +1 -1
  5. package/dist/builder/keyframes.d.ts +5 -0
  6. package/dist/builder/keyframes.d.ts.map +1 -1
  7. package/dist/builder/keyframes.js +12 -14
  8. package/dist/builder/keyframes.js.map +1 -1
  9. package/dist/cx.d.ts.map +1 -1
  10. package/dist/cx.js +23 -18
  11. package/dist/cx.js.map +1 -1
  12. package/dist/decorators/param.d.ts +1 -2
  13. package/dist/decorators/param.d.ts.map +1 -1
  14. package/dist/decorators/param.js +9 -17
  15. package/dist/decorators/param.js.map +1 -1
  16. package/dist/decorators/style.d.ts.map +1 -1
  17. package/dist/decorators/style.js +61 -33
  18. package/dist/decorators/style.js.map +1 -1
  19. package/dist/decorators/styled.d.ts.map +1 -1
  20. package/dist/decorators/styled.js +112 -95
  21. package/dist/decorators/styled.js.map +1 -1
  22. package/dist/extract.d.ts.map +1 -1
  23. package/dist/extract.js +19 -35
  24. package/dist/extract.js.map +1 -1
  25. package/dist/global.d.ts +3 -0
  26. package/dist/global.d.ts.map +1 -1
  27. package/dist/global.js +9 -4
  28. package/dist/global.js.map +1 -1
  29. package/dist/internal/kebab.d.ts +5 -0
  30. package/dist/internal/kebab.d.ts.map +1 -0
  31. package/dist/internal/kebab.js +23 -0
  32. package/dist/internal/kebab.js.map +1 -0
  33. package/dist/internal/lifecycle.d.ts +15 -0
  34. package/dist/internal/lifecycle.d.ts.map +1 -0
  35. package/dist/internal/lifecycle.js +16 -0
  36. package/dist/internal/lifecycle.js.map +1 -0
  37. package/dist/internal/registry.d.ts +5 -1
  38. package/dist/internal/registry.d.ts.map +1 -1
  39. package/dist/internal/registry.js +9 -23
  40. package/dist/internal/registry.js.map +1 -1
  41. package/dist/internal/sheet.d.ts +20 -0
  42. package/dist/internal/sheet.d.ts.map +1 -0
  43. package/dist/internal/sheet.js +56 -0
  44. package/dist/internal/sheet.js.map +1 -0
  45. package/dist/internal/static-mode.d.ts +2 -0
  46. package/dist/internal/static-mode.d.ts.map +1 -0
  47. package/dist/internal/static-mode.js +2 -0
  48. package/dist/internal/static-mode.js.map +1 -0
  49. package/dist/preflight.d.ts +3 -1
  50. package/dist/preflight.d.ts.map +1 -1
  51. package/dist/preflight.js +7 -3
  52. package/dist/preflight.js.map +1 -1
  53. package/dist/tokens/decorators.d.ts.map +1 -1
  54. package/dist/tokens/decorators.js +13 -4
  55. package/dist/tokens/decorators.js.map +1 -1
  56. package/dist/tokens/theme-instance.d.ts +5 -0
  57. package/dist/tokens/theme-instance.d.ts.map +1 -1
  58. package/dist/tokens/theme-instance.js +25 -17
  59. package/dist/tokens/theme-instance.js.map +1 -1
  60. package/dist/tokens/token-sheet.d.ts.map +1 -1
  61. package/dist/tokens/token-sheet.js +12 -9
  62. package/dist/tokens/token-sheet.js.map +1 -1
  63. package/package.json +13 -5
  64. package/src/builder/css-builder.ts +79 -83
  65. package/src/builder/keyframes.ts +12 -20
  66. package/src/cx.ts +20 -13
  67. package/src/decorators/param.ts +12 -16
  68. package/src/decorators/style.ts +79 -35
  69. package/src/decorators/styled.ts +127 -111
  70. package/src/extract.ts +18 -34
  71. package/src/global.ts +10 -9
  72. package/src/internal/kebab.ts +23 -0
  73. package/src/internal/lifecycle.ts +21 -0
  74. package/src/internal/registry.ts +9 -35
  75. package/src/internal/sheet.ts +71 -0
  76. package/src/internal/static-mode.ts +6 -0
  77. package/src/preflight.ts +8 -3
  78. package/src/tokens/decorators.ts +15 -3
  79. package/src/tokens/theme-instance.ts +26 -16
  80. package/src/tokens/token-sheet.ts +12 -12
  81. package/dist/__tests__/css-builder.test.d.ts +0 -2
  82. package/dist/__tests__/css-builder.test.d.ts.map +0 -1
  83. package/dist/__tests__/css-builder.test.js +0 -198
  84. package/dist/__tests__/css-builder.test.js.map +0 -1
  85. package/dist/__tests__/cx.test.d.ts +0 -2
  86. package/dist/__tests__/cx.test.d.ts.map +0 -1
  87. package/dist/__tests__/cx.test.js +0 -47
  88. package/dist/__tests__/cx.test.js.map +0 -1
  89. package/dist/__tests__/decorators.test.d.ts +0 -2
  90. package/dist/__tests__/decorators.test.d.ts.map +0 -1
  91. package/dist/__tests__/decorators.test.js +0 -264
  92. package/dist/__tests__/decorators.test.js.map +0 -1
  93. package/dist/__tests__/extract.test.d.ts +0 -2
  94. package/dist/__tests__/extract.test.d.ts.map +0 -1
  95. package/dist/__tests__/extract.test.js +0 -416
  96. package/dist/__tests__/extract.test.js.map +0 -1
  97. package/dist/__tests__/global.test.d.ts +0 -2
  98. package/dist/__tests__/global.test.d.ts.map +0 -1
  99. package/dist/__tests__/global.test.js +0 -136
  100. package/dist/__tests__/global.test.js.map +0 -1
  101. package/dist/__tests__/keyframes.test.d.ts +0 -2
  102. package/dist/__tests__/keyframes.test.d.ts.map +0 -1
  103. package/dist/__tests__/keyframes.test.js +0 -90
  104. package/dist/__tests__/keyframes.test.js.map +0 -1
  105. package/dist/__tests__/preflight.test.d.ts +0 -2
  106. package/dist/__tests__/preflight.test.d.ts.map +0 -1
  107. package/dist/__tests__/preflight.test.js +0 -74
  108. package/dist/__tests__/preflight.test.js.map +0 -1
  109. package/dist/__tests__/registry.test.d.ts +0 -2
  110. package/dist/__tests__/registry.test.d.ts.map +0 -1
  111. package/dist/__tests__/registry.test.js +0 -132
  112. package/dist/__tests__/registry.test.js.map +0 -1
  113. package/dist/__tests__/style.test.d.ts +0 -2
  114. package/dist/__tests__/style.test.d.ts.map +0 -1
  115. package/dist/__tests__/style.test.js +0 -281
  116. package/dist/__tests__/style.test.js.map +0 -1
  117. package/dist/__tests__/styled.test.d.ts +0 -2
  118. package/dist/__tests__/styled.test.d.ts.map +0 -1
  119. package/dist/__tests__/styled.test.js +0 -904
  120. package/dist/__tests__/styled.test.js.map +0 -1
  121. package/dist/__tests__/theme-instance.test.d.ts +0 -2
  122. package/dist/__tests__/theme-instance.test.d.ts.map +0 -1
  123. package/dist/__tests__/theme-instance.test.js +0 -309
  124. package/dist/__tests__/theme-instance.test.js.map +0 -1
  125. package/dist/__tests__/theme-uninit.test.d.ts +0 -2
  126. package/dist/__tests__/theme-uninit.test.d.ts.map +0 -1
  127. package/dist/__tests__/theme-uninit.test.js +0 -10
  128. package/dist/__tests__/theme-uninit.test.js.map +0 -1
  129. package/dist/__tests__/token-sheet.test.d.ts +0 -2
  130. package/dist/__tests__/token-sheet.test.d.ts.map +0 -1
  131. package/dist/__tests__/token-sheet.test.js +0 -74
  132. package/dist/__tests__/token-sheet.test.js.map +0 -1
  133. package/src/__tests__/css-builder.test.ts +0 -230
  134. package/src/__tests__/cx.test.ts +0 -63
  135. package/src/__tests__/decorators.test.ts +0 -127
  136. package/src/__tests__/extract.test.ts +0 -459
  137. package/src/__tests__/global.test.ts +0 -163
  138. package/src/__tests__/keyframes.test.ts +0 -103
  139. package/src/__tests__/preflight.test.ts +0 -85
  140. package/src/__tests__/registry.test.ts +0 -151
  141. package/src/__tests__/style.test.ts +0 -170
  142. package/src/__tests__/styled.test.ts +0 -443
  143. package/src/__tests__/theme-instance.test.ts +0 -374
  144. package/src/__tests__/theme-uninit.test.ts +0 -12
  145. package/src/__tests__/token-sheet.test.ts +0 -87
  146. package/tsconfig.json +0 -8
@@ -1,416 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { extractionModule } from "../extract";
3
- import { Stylesheet, ReactiveStylesheet } from "../base/stylesheet";
4
- import { createCSSBuilder } from "../builder/css-builder";
5
- function makeCollector() {
6
- const emitted = [];
7
- const mod = extractionModule((css, prepend) => emitted.push({ css, prepend }));
8
- return { mod, emitted };
9
- }
10
- // ─── API shape ────────────────────────────────────────────────────────────────
11
- describe("extractionModule() — API shape", () => {
12
- it("returns an object with __esModule: true", () => {
13
- const mod = extractionModule(() => { });
14
- expect(mod.__esModule).toBe(true);
15
- });
16
- it("Stylesheet is the real base class — subclasses can use this.css()", () => {
17
- const { mod } = makeCollector();
18
- const S = mod.Stylesheet;
19
- expect(S).toBe(Stylesheet);
20
- class BtnStyles extends S {
21
- $base = this.css({ display: "flex" });
22
- }
23
- expect(new BtnStyles()).toBeInstanceOf(S);
24
- });
25
- it("ReactiveStylesheet is the real base class", () => {
26
- const { mod } = makeCollector();
27
- const RS = mod.ReactiveStylesheet;
28
- expect(RS).toBe(ReactiveStylesheet);
29
- });
30
- it("createCSSBuilder is the real function", () => {
31
- const { mod } = makeCollector();
32
- expect(mod.createCSSBuilder).toBe(createCSSBuilder);
33
- });
34
- it("cx() returns an empty string", () => {
35
- const { mod } = makeCollector();
36
- expect(mod.cx()).toBe("");
37
- });
38
- it("Param() returns a decorator function", () => {
39
- const { mod } = makeCollector();
40
- const result = mod.Param();
41
- expect(typeof result).toBe("function");
42
- });
43
- it("Style() returns a decorator function", () => {
44
- const { mod } = makeCollector();
45
- const result = mod.Style();
46
- expect(typeof result).toBe("function");
47
- });
48
- it("Theme() returns a decorator function", () => {
49
- const { mod } = makeCollector();
50
- const result = mod.Theme();
51
- expect(typeof result).toBe("function");
52
- });
53
- it("tokenVars() returns its argument unchanged", () => {
54
- const { mod } = makeCollector();
55
- const cls = class {
56
- };
57
- expect(mod.tokenVars(cls)).toBe(cls);
58
- });
59
- it("TokenSheet is a class (can be instantiated)", () => {
60
- const { mod } = makeCollector();
61
- const TS = mod.TokenSheet;
62
- expect(new TS()).toBeDefined();
63
- });
64
- it("TokenSheet is the real Proxy — static access on a subclass resolves to var(--kebab-case)", () => {
65
- const { mod } = makeCollector();
66
- const TS = mod.TokenSheet;
67
- class AppTokens extends TS {
68
- colorPrimary;
69
- }
70
- expect(AppTokens.colorPrimary).toBe("var(--color-primary)");
71
- });
72
- it("tokenVars() combined with a TokenSheet subclass resolves real CSS var references", () => {
73
- const { mod } = makeCollector();
74
- const TS = mod.TokenSheet;
75
- class AppTokens extends TS {
76
- radius;
77
- }
78
- const t = mod.tokenVars(AppTokens);
79
- expect(t.radius).toBe("var(--radius)");
80
- });
81
- });
82
- // ─── Styled() ─────────────────────────────────────────────────────────────────
83
- describe("extractionModule() — Styled()", () => {
84
- it("collects scoped CSS for each $-prefixed field", () => {
85
- const { mod, emitted } = makeCollector();
86
- const S = mod.Stylesheet;
87
- const Styled = mod.Styled;
88
- class CardStyles extends S {
89
- $root = this.css({ display: "flex", gap: "8px" });
90
- $title = this.css({ fontSize: "1rem", fontWeight: 600 });
91
- }
92
- Styled(CardStyles);
93
- expect(emitted).toHaveLength(1);
94
- expect(emitted[0].css).toContain(".prx-root-");
95
- expect(emitted[0].css).toContain(".prx-title-");
96
- expect(emitted[0].css).toContain("display: flex");
97
- expect(emitted[0].css).toContain("font-size: 1rem");
98
- });
99
- it("returns a decorator function", () => {
100
- const { mod } = makeCollector();
101
- const result = mod.Styled(class {
102
- });
103
- expect(typeof result).toBe("function");
104
- });
105
- it("deduplicates identical sheets — emits only once", () => {
106
- const { mod, emitted } = makeCollector();
107
- const S = mod.Stylesheet;
108
- const Styled = mod.Styled;
109
- class BtnStyles extends S {
110
- $base = this.css({ display: "flex" });
111
- }
112
- Styled(BtnStyles);
113
- Styled(BtnStyles);
114
- expect(emitted).toHaveLength(1);
115
- });
116
- it("ignores fields that don't start with '$'", () => {
117
- const { mod, emitted } = makeCollector();
118
- const S = mod.Stylesheet;
119
- const Styled = mod.Styled;
120
- class MixedStyles extends S {
121
- hidden = "ignored";
122
- $visible = this.css({ color: "red" });
123
- }
124
- Styled(MixedStyles);
125
- expect(emitted[0].css).not.toContain("ignored");
126
- expect(emitted[0].css).toContain("color: red");
127
- });
128
- it("ignores $-prefixed fields that are neither strings nor builders", () => {
129
- const { mod, emitted } = makeCollector();
130
- const S = mod.Stylesheet;
131
- const Styled = mod.Styled;
132
- class WeirdStyles extends S {
133
- $valid = this.css({ display: "flex" });
134
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
- $invalid = 42;
136
- }
137
- Styled(WeirdStyles);
138
- expect(emitted[0].css).not.toContain("42");
139
- expect(emitted[0].css).toContain("display: flex");
140
- });
141
- it("handles $-prefixed string fields (raw CSS string)", () => {
142
- const { mod, emitted } = makeCollector();
143
- const S = mod.Stylesheet;
144
- const Styled = mod.Styled;
145
- class RawStyles extends S {
146
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
147
- $custom = "color: red; font-size: 14px;";
148
- }
149
- Styled(RawStyles);
150
- expect(emitted[0].css).toContain("color: red");
151
- });
152
- it("emits nothing if the sheet has no $-prefixed fields", () => {
153
- const { mod, emitted } = makeCollector();
154
- const S = mod.Stylesheet;
155
- const Styled = mod.Styled;
156
- class EmptyStyles extends S {
157
- }
158
- Styled(EmptyStyles);
159
- expect(emitted).toHaveLength(0);
160
- });
161
- it("collects CSS for a sheet whose values are derived from tokenVars()", () => {
162
- const { mod, emitted } = makeCollector();
163
- const S = mod.Stylesheet;
164
- const TS = mod.TokenSheet;
165
- const Styled = mod.Styled;
166
- class AppTokens extends TS {
167
- radius;
168
- primary;
169
- }
170
- const t = mod.tokenVars(AppTokens);
171
- class ButtonStyles extends S {
172
- $root = this.css({ borderRadius: `calc(${t.radius} - 2px)`, backgroundColor: t.primary });
173
- }
174
- Styled(ButtonStyles);
175
- expect(emitted).toHaveLength(1);
176
- expect(emitted[0].css).toContain("calc(var(--radius) - 2px)");
177
- expect(emitted[0].css).toContain("background-color: var(--primary)");
178
- });
179
- it("silently skips sheets whose constructor throws", () => {
180
- const { mod, emitted } = makeCollector();
181
- const Styled = mod.Styled;
182
- class BadStyles {
183
- constructor() { throw new Error("oops"); }
184
- }
185
- expect(() => Styled(BadStyles)).not.toThrow();
186
- expect(emitted).toHaveLength(0);
187
- });
188
- });
189
- // ─── keyframes() ─────────────────────────────────────────────────────────────
190
- describe("extractionModule() — keyframes()", () => {
191
- it("calls emit with an @keyframes block", () => {
192
- const { mod, emitted } = makeCollector();
193
- const kf = mod.keyframes;
194
- kf("pulse", { from: { opacity: 1 }, to: { opacity: 0.4 } });
195
- expect(emitted).toHaveLength(1);
196
- expect(emitted[0].css).toContain("@keyframes prx-pulse-");
197
- expect(emitted[0].css).toContain("opacity: 1;");
198
- expect(emitted[0].css).toContain("opacity: 0.4;");
199
- });
200
- it("returns the scoped animation name", () => {
201
- const { mod } = makeCollector();
202
- const kf = mod.keyframes;
203
- const name = kf("spin", { from: { transform: "rotate(0deg)" }, to: { transform: "rotate(360deg)" } });
204
- expect(name).toMatch(/^prx-spin-/);
205
- });
206
- it("deduplicates identical keyframes", () => {
207
- const { mod, emitted } = makeCollector();
208
- const kf = mod.keyframes;
209
- const stops = { from: { opacity: 0 }, to: { opacity: 1 } };
210
- kf("fade", stops);
211
- kf("fade", stops);
212
- expect(emitted).toHaveLength(1);
213
- });
214
- it("converts camelCase properties to kebab-case", () => {
215
- const { mod, emitted } = makeCollector();
216
- const kf = mod.keyframes;
217
- kf("move", { from: { marginTop: "0px" }, to: { marginTop: "20px" } });
218
- expect(emitted[0].css).toContain("margin-top:");
219
- });
220
- });
221
- // ─── globalStyle() ───────────────────────────────────────────────────────────
222
- describe("extractionModule() — globalStyle()", () => {
223
- it("calls emit with the CSS returned by the factory", () => {
224
- const { mod, emitted } = makeCollector();
225
- mod.globalStyle(_css => "body { margin: 0; }");
226
- expect(emitted).toHaveLength(1);
227
- expect(emitted[0].css).toBe("body { margin: 0; }");
228
- });
229
- it("deduplicates when factory produces the same CSS twice", () => {
230
- const { mod, emitted } = makeCollector();
231
- const gs = mod.globalStyle;
232
- gs(_css => "body { margin: 0; }");
233
- gs(_css => "body { margin: 0; }");
234
- expect(emitted).toHaveLength(1);
235
- });
236
- it("does not set prepend for globalStyle", () => {
237
- const { mod, emitted } = makeCollector();
238
- mod.globalStyle(_css => "html { box-sizing: border-box; }");
239
- expect(emitted[0].prepend).toBeFalsy();
240
- });
241
- it("factory can use the builder to produce CSS via .on()", () => {
242
- const { mod, emitted } = makeCollector();
243
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
244
- mod.globalStyle(css => css({}).on("body", { margin: 0 }));
245
- expect(emitted[0].css).toContain("body");
246
- expect(emitted[0].css).toContain("margin: 0");
247
- });
248
- });
249
- // ─── Themed() ────────────────────────────────────────────────────────────────
250
- describe("extractionModule() — Themed()", () => {
251
- it("emits :root vars for the default theme", () => {
252
- const { mod, emitted } = makeCollector();
253
- const Themed = mod.Themed;
254
- class MyTheme {
255
- colorBrand = "#3b82f6";
256
- spaceMd = "16px";
257
- }
258
- Themed(null, MyTheme);
259
- expect(emitted).toHaveLength(1);
260
- expect(emitted[0].css).toContain(":root");
261
- expect(emitted[0].css).toContain("--color-brand: #3b82f6");
262
- expect(emitted[0].css).toContain("--space-md: 16px");
263
- });
264
- it("passes prepend=true so :root vars appear before class rules", () => {
265
- const { mod, emitted } = makeCollector();
266
- const Themed = mod.Themed;
267
- Themed(null, class {
268
- colorBrand = "#fff";
269
- });
270
- expect(emitted[0].prepend).toBe(true);
271
- });
272
- it("returns a function that passes through the decorated class", () => {
273
- const { mod } = makeCollector();
274
- const Themed = mod.Themed;
275
- const result = Themed(null, class {
276
- });
277
- expect(typeof result).toBe("function");
278
- const cls = class {
279
- };
280
- expect(result(cls)).toBe(cls);
281
- });
282
- it("skips non-string and non-number theme properties", () => {
283
- const { mod, emitted } = makeCollector();
284
- const Themed = mod.Themed;
285
- class MyTheme {
286
- colorText = "#111";
287
- nested = { x: 1 };
288
- fn = () => { };
289
- }
290
- Themed(null, MyTheme);
291
- expect(emitted[0].css).toContain("--color-text: #111");
292
- expect(emitted[0].css).not.toContain("--nested");
293
- expect(emitted[0].css).not.toContain("--fn");
294
- });
295
- it("emits nothing when theme constructor throws", () => {
296
- const { mod, emitted } = makeCollector();
297
- const Themed = mod.Themed;
298
- class BadTheme {
299
- constructor() { throw new Error("oops"); }
300
- }
301
- expect(() => Themed(null, BadTheme)).not.toThrow();
302
- expect(emitted).toHaveLength(0);
303
- });
304
- it("deduplicates identical themes", () => {
305
- const { mod, emitted } = makeCollector();
306
- const Themed = mod.Themed;
307
- class MyTheme {
308
- colorBrand = "#3b82f6";
309
- }
310
- Themed(null, MyTheme);
311
- Themed(null, MyTheme);
312
- expect(emitted).toHaveLength(1);
313
- });
314
- });
315
- // ─── ThemeInstance ────────────────────────────────────────────────────────────
316
- describe("extractionModule() — ThemeInstance", () => {
317
- it("constructor emits :root vars for the default theme", () => {
318
- const { mod, emitted } = makeCollector();
319
- const TI = mod.ThemeInstance;
320
- class LightTheme {
321
- colorBrand = "#3b82f6";
322
- }
323
- new TI(LightTheme);
324
- expect(emitted[0].css).toContain(":root");
325
- expect(emitted[0].css).toContain("--color-brand: #3b82f6");
326
- expect(emitted[0].prepend).toBe(true);
327
- });
328
- it("deduplicates with Themed() — same theme only emitted once", () => {
329
- const { mod, emitted } = makeCollector();
330
- const TI = mod.ThemeInstance;
331
- const Themed = mod.Themed;
332
- class MyTheme {
333
- colorBrand = "#3b82f6";
334
- }
335
- Themed(null, MyTheme);
336
- new TI(MyTheme);
337
- expect(emitted).toHaveLength(1);
338
- });
339
- it("current getter returns an empty object", () => {
340
- const { mod } = makeCollector();
341
- const TI = mod.ThemeInstance;
342
- const inst = new TI(class {
343
- });
344
- expect(inst.current).toEqual({});
345
- });
346
- it("createThemeInstance returns a ThemeInstance-like object", () => {
347
- const { mod, emitted } = makeCollector();
348
- const cti = mod.createThemeInstance;
349
- class MyTheme {
350
- colorBrand = "#111";
351
- }
352
- cti(MyTheme);
353
- expect(emitted[0].css).toContain("--color-brand: #111");
354
- });
355
- });
356
- // ─── Dedup across APIs ────────────────────────────────────────────────────────
357
- describe("extractionModule() — cross-API deduplication", () => {
358
- it("Themed() and ThemeInstance share the same seen set", () => {
359
- const { mod, emitted } = makeCollector();
360
- const Themed = mod.Themed;
361
- const TI = mod.ThemeInstance;
362
- class SharedTheme {
363
- colorBrand = "#f00";
364
- }
365
- Themed(null, SharedTheme);
366
- new TI(SharedTheme);
367
- // Same CSS hash — should only appear once
368
- expect(emitted.filter(e => e.css.includes("--color-brand")).length).toBe(1);
369
- });
370
- });
371
- // ─── Additional coverage ──────────────────────────────────────────────────────
372
- describe("extractionModule() — additional coverage", () => {
373
- it("the decorator returned by Styled() is callable", () => {
374
- const { mod } = makeCollector();
375
- const S = mod.Stylesheet;
376
- class TestStyles extends S {
377
- $x = this.css({ color: "red" });
378
- }
379
- const Styled = mod.Styled;
380
- const dec = Styled(TestStyles);
381
- expect(() => dec(class {
382
- })).not.toThrow();
383
- });
384
- it("theme() returns an ExtractionThemeInstance", () => {
385
- const { mod } = makeCollector();
386
- const t = mod.theme();
387
- expect(t).toBeDefined();
388
- expect(t.current).toEqual({});
389
- });
390
- it("ExtractionThemeInstance.switch() and destroy() are no-ops", () => {
391
- const { mod } = makeCollector();
392
- const TI = mod.ThemeInstance;
393
- const inst = new TI(class {
394
- });
395
- expect(() => inst.switch(class {
396
- })).not.toThrow();
397
- expect(() => inst.destroy()).not.toThrow();
398
- });
399
- it("themeToRootCSS returns null for a theme with no valid properties", () => {
400
- const { mod, emitted } = makeCollector();
401
- const Themed = mod.Themed;
402
- class EmptyTheme {
403
- nested = { x: 1 };
404
- }
405
- Themed(null, EmptyTheme);
406
- expect(emitted).toHaveLength(0);
407
- });
408
- it("the inner decorator functions returned by Param/Style/Theme are callable no-ops", () => {
409
- const { mod } = makeCollector();
410
- const callInner = (fn) => { const dec = fn(); expect(() => dec()).not.toThrow(); };
411
- callInner(mod.Param);
412
- callInner(mod.Style);
413
- callInner(mod.Theme);
414
- });
415
- });
416
- //# sourceMappingURL=extract.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract.test.js","sourceRoot":"","sources":["../../src/__tests__/extract.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=global.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"global.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/global.test.ts"],"names":[],"mappings":""}
@@ -1,136 +0,0 @@
1
- // @vitest-environment jsdom
2
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
3
- import { globalStyle } from "../global";
4
- import { createCollector, setCollector } from "../internal/collector";
5
- let seed = 0;
6
- // Injects a unique comment so the content hash differs per test call.
7
- function unique(css) {
8
- return css.replace("{", `/* t${++seed} */ {`);
9
- }
10
- beforeEach(() => {
11
- document.head.querySelectorAll("style[data-praxis-global]").forEach((el) => el.remove());
12
- setCollector(null);
13
- });
14
- afterEach(() => {
15
- document.head.querySelectorAll("style[data-praxis-global]").forEach((el) => el.remove());
16
- setCollector(null);
17
- });
18
- describe("globalStyle()", () => {
19
- it("injects an unscoped style element into document.head", () => {
20
- globalStyle(_css => unique("body { margin: 0; }"));
21
- const el = document.head.querySelector("style[data-praxis-global]");
22
- expect(el).not.toBeNull();
23
- expect(el?.textContent).toContain("margin: 0;");
24
- });
25
- it("is idempotent — injects the same CSS only once", () => {
26
- const css = unique("*, *::before, *::after { box-sizing: border-box; }");
27
- globalStyle(_css => css);
28
- globalStyle(_css => css);
29
- expect(document.head.querySelectorAll("style[data-praxis-global]").length).toBe(1);
30
- });
31
- it("injects separate elements for distinct CSS strings", () => {
32
- globalStyle(_css => unique("body { margin: 0; }"));
33
- globalStyle(_css => unique("html { font-size: 16px; }"));
34
- expect(document.head.querySelectorAll("style[data-praxis-global]").length).toBe(2);
35
- });
36
- it("routes to the collector when one is active", () => {
37
- const col = createCollector();
38
- setCollector(col);
39
- globalStyle(_css => unique("body { margin: 0; }"));
40
- expect(document.head.querySelector("style[data-praxis-global]")).toBeNull();
41
- expect(col.getCSS()).toContain("margin: 0;");
42
- });
43
- it("deduplicates in the collector", () => {
44
- const col = createCollector();
45
- setCollector(col);
46
- const css = unique("*, *::before, *::after { box-sizing: border-box; }");
47
- globalStyle(_css => css);
48
- globalStyle(_css => css);
49
- expect(col.getCSS().split("box-sizing").length - 1).toBe(1);
50
- });
51
- });
52
- // ─── Factory — builder form ───────────────────────────────────────────────────
53
- describe("globalStyle() — factory with builder", () => {
54
- it("factory receives css (= createCSSBuilder) and uses the fluent builder", () => {
55
- globalStyle(css => css({})
56
- .on(unique("body { }").replace(" { }", ""), { margin: 0, fontFamily: "system-ui" }));
57
- const content = document.head.querySelector("style[data-praxis-global]")?.textContent ?? "";
58
- expect(content).toContain("font-family: system-ui");
59
- expect(content).toContain("margin: 0");
60
- });
61
- it("chains multiple .on() calls to produce multiple selectors in one injection", () => {
62
- // Use unique values inside properties so the overall CSS hash is unique per test
63
- const lh = `1.${seed + 1}`;
64
- globalStyle(css => css({})
65
- .on(unique("* { }").replace(" { }", ""), { boxSizing: "border-box" })
66
- .on("html", { lineHeight: lh }));
67
- const content = document.head.querySelector("style[data-praxis-global]")?.textContent ?? "";
68
- expect(content).toContain("box-sizing: border-box");
69
- expect(content).toContain("line-height:");
70
- });
71
- it("factory returning a raw string is accepted", () => {
72
- const css = unique("button { cursor: pointer; }");
73
- globalStyle(_css => css);
74
- expect(document.head.querySelector("style[data-praxis-global]")?.textContent).toContain("cursor: pointer");
75
- });
76
- it("deduplicates when factory produces the same CSS twice", () => {
77
- const css = unique("a { color: inherit; }");
78
- globalStyle(_css => css);
79
- globalStyle(_css => css);
80
- expect(document.head.querySelectorAll("style[data-praxis-global]").length).toBe(1);
81
- });
82
- it("routes through the collector when one is active", () => {
83
- const col = createCollector();
84
- setCollector(col);
85
- globalStyle(_css => unique("a { text-decoration: none; }"));
86
- expect(document.head.querySelector("style[data-praxis-global]")).toBeNull();
87
- expect(col.getCSS()).toContain("text-decoration: none");
88
- });
89
- });
90
- // ─── layer option ─────────────────────────────────────────────────────────────
91
- describe("globalStyle() — layer option", () => {
92
- it("injects un-layered CSS by default", () => {
93
- globalStyle(_css => unique("body { margin: 0; }"));
94
- const content = document.head.querySelector("style[data-praxis-global]")?.textContent ?? "";
95
- expect(content).not.toContain("@layer");
96
- });
97
- it("wraps the CSS in a named @layer when provided", () => {
98
- globalStyle(_css => unique("body { margin: 0; }"), { layer: "base" });
99
- const content = document.head.querySelector("style[data-praxis-global]")?.textContent ?? "";
100
- expect(content).toContain("@layer base {");
101
- expect(content).toContain("margin: 0;");
102
- });
103
- it("does not wrap in a layer when layer: false", () => {
104
- globalStyle(_css => unique("body { margin: 0; }"), { layer: false });
105
- const content = document.head.querySelector("style[data-praxis-global]")?.textContent ?? "";
106
- expect(content).not.toContain("@layer");
107
- });
108
- });
109
- // ─── STATIC_MODE ──────────────────────────────────────────────────────────────
110
- describe("globalStyle() — static mode (__PRAXIS_CSS_STATIC__)", () => {
111
- afterEach(() => {
112
- vi.unstubAllGlobals();
113
- vi.resetModules();
114
- });
115
- it("skips DOM injection when __PRAXIS_CSS_STATIC__ is true", async () => {
116
- vi.stubGlobal("__PRAXIS_CSS_STATIC__", true);
117
- vi.resetModules();
118
- const { globalStyle: staticGS } = await import("../global");
119
- staticGS(_css => unique("body { margin: 0; }"));
120
- expect(document.head.querySelector("style[data-praxis-global]")).toBeNull();
121
- });
122
- });
123
- // ─── SSR (document === undefined) ────────────────────────────────────────────
124
- describe("globalStyle() — SSR (document undefined)", () => {
125
- afterEach(() => {
126
- vi.unstubAllGlobals();
127
- vi.resetModules();
128
- });
129
- it("does not throw when document is undefined", async () => {
130
- vi.stubGlobal("document", undefined);
131
- vi.resetModules();
132
- const { globalStyle: ssrGS } = await import("../global");
133
- expect(() => ssrGS(_css => unique("p { color: red; }"))).not.toThrow();
134
- });
135
- });
136
- //# sourceMappingURL=global.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"global.test.js","sourceRoot":"","sources":["../../src/__tests__/global.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=keyframes.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyframes.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/keyframes.test.ts"],"names":[],"mappings":""}