@praxisjs/css 0.1.7 → 0.2.0
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.
- package/CHANGELOG.md +6 -0
- package/dist/__tests__/preflight.test.js +19 -0
- package/dist/__tests__/preflight.test.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/preflight.d.ts +10 -1
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +6 -2
- package/dist/preflight.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/preflight.test.ts +22 -0
- package/src/index.ts +1 -1
- package/src/preflight.ts +17 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @praxisjs/css
|
|
2
2
|
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- ffc4aec: `preflight()` now wraps its reset in `@layer reset` by default so it can be ordered against other layered CSS (e.g. Tailwind utilities) instead of always winning the cascade regardless of specificity. Pass `preflight({ layer: 'custom-name' })` to rename the layer, or `preflight({ layer: false })` to opt back into un-layered CSS.
|
|
8
|
+
|
|
3
9
|
## 0.1.7
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -51,5 +51,24 @@ describe("preflight()", () => {
|
|
|
51
51
|
expect(document.head.querySelector("style[data-praxis-global]")).toBeNull();
|
|
52
52
|
expect(col.getCSS()).toContain("box-sizing: border-box");
|
|
53
53
|
});
|
|
54
|
+
it("wraps the reset in `@layer reset` by default", async () => {
|
|
55
|
+
const { preflight } = await import("../preflight.js");
|
|
56
|
+
preflight();
|
|
57
|
+
const css = document.head.querySelector("style[data-praxis-global]")?.textContent ?? "";
|
|
58
|
+
expect(css).toContain("@layer reset {");
|
|
59
|
+
expect(css).toContain("box-sizing: border-box");
|
|
60
|
+
});
|
|
61
|
+
it("wraps the reset in a custom named layer", async () => {
|
|
62
|
+
const { preflight } = await import("../preflight.js");
|
|
63
|
+
preflight({ layer: "tailwind-base" });
|
|
64
|
+
const css = document.head.querySelector("style[data-praxis-global]")?.textContent ?? "";
|
|
65
|
+
expect(css).toContain("@layer tailwind-base {");
|
|
66
|
+
});
|
|
67
|
+
it("injects un-layered CSS when layer: false", async () => {
|
|
68
|
+
const { preflight } = await import("../preflight.js");
|
|
69
|
+
preflight({ layer: false });
|
|
70
|
+
const css = document.head.querySelector("style[data-praxis-global]")?.textContent ?? "";
|
|
71
|
+
expect(css).not.toContain("@layer");
|
|
72
|
+
});
|
|
54
73
|
});
|
|
55
74
|
//# sourceMappingURL=preflight.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.test.js","sourceRoot":"","sources":["../../src/__tests__/preflight.test.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzE,kFAAkF;AAClF,uFAAuF;AAEvF,SAAS,OAAO;IACd,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED,UAAU,CAAC,GAAG,EAAE;IACd,EAAE,CAAC,YAAY,EAAE,CAAC;IAClB,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,OAAO,EAAE,CAAC;IACV,EAAE,CAAC,YAAY,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtD,SAAS,EAAE,CAAC;QACZ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtD,SAAS,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;QACxF,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtD,SAAS,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;QACxF,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtD,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QACnF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,SAAS,EAAE,CAAC;QACZ,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5E,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"preflight.test.js","sourceRoot":"","sources":["../../src/__tests__/preflight.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { cx, type ClassValue } from "./cx.js";
|
|
2
|
-
export { preflight } from "./preflight.js";
|
|
2
|
+
export { preflight, type PreflightOptions } from "./preflight.js";
|
|
3
3
|
export { globalStyle, type GlobalStyleFactory } from "./global.js";
|
|
4
4
|
export { type CSSBuilder, type CSSProperties } from "./builder/css-builder.js";
|
|
5
5
|
export { keyframes } from "./builder/keyframes.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAmB,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAmB,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAyB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,WAAW,EAA2B,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAqB,MAAM,mBAAmB,CAAC"}
|
package/dist/preflight.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
export interface PreflightOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Names the CSS `@layer` the reset is wrapped in, so it can be ordered
|
|
4
|
+
* against other layered CSS (e.g. Tailwind's `@layer utilities`) instead
|
|
5
|
+
* of always winning the cascade. Defaults to `"reset"`. Pass `false` to
|
|
6
|
+
* inject un-layered CSS instead.
|
|
7
|
+
*/
|
|
8
|
+
layer?: string | false;
|
|
9
|
+
}
|
|
1
10
|
/**
|
|
2
11
|
* Injects an opinionated browser reset into `document.head` exactly once.
|
|
3
12
|
*
|
|
@@ -14,5 +23,5 @@
|
|
|
14
23
|
* import { preflight } from '@praxisjs/css'
|
|
15
24
|
* preflight()
|
|
16
25
|
*/
|
|
17
|
-
export declare function preflight(): void;
|
|
26
|
+
export declare function preflight({ layer }?: PreflightOptions): void;
|
|
18
27
|
//# sourceMappingURL=preflight.d.ts.map
|
package/dist/preflight.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AA6KA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AA6KA,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACxB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAe,EAAE,GAAE,gBAAqB,GAAG,IAAI,CAO1E"}
|
package/dist/preflight.js
CHANGED
|
@@ -185,7 +185,11 @@ input:where([type='button'], [type='reset'], [type='submit']),
|
|
|
185
185
|
* import { preflight } from '@praxisjs/css'
|
|
186
186
|
* preflight()
|
|
187
187
|
*/
|
|
188
|
-
export function preflight() {
|
|
189
|
-
|
|
188
|
+
export function preflight({ layer = "reset" } = {}) {
|
|
189
|
+
if (!layer) {
|
|
190
|
+
globalStyle(_css => PREFLIGHT);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
globalStyle(_css => `@layer ${layer} {\n${PREFLIGHT}\n}`);
|
|
190
194
|
}
|
|
191
195
|
//# sourceMappingURL=preflight.js.map
|
package/dist/preflight.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,oHAAoH;AACpH,yEAAyE;AACzE,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuKjB,CAAC;
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,oHAAoH;AACpH,yEAAyE;AACzE,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuKjB,CAAC;AAYF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,GAAG,OAAO,KAAuB,EAAE;IAClE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,OAAO,SAAS,KAAK,CAAC,CAAC;AAC5D,CAAC"}
|
package/package.json
CHANGED
|
@@ -60,4 +60,26 @@ describe("preflight()", () => {
|
|
|
60
60
|
expect(document.head.querySelector("style[data-praxis-global]")).toBeNull();
|
|
61
61
|
expect(col.getCSS()).toContain("box-sizing: border-box");
|
|
62
62
|
});
|
|
63
|
+
|
|
64
|
+
it("wraps the reset in `@layer reset` by default", async () => {
|
|
65
|
+
const { preflight } = await import("../preflight.js");
|
|
66
|
+
preflight();
|
|
67
|
+
const css = document.head.querySelector("style[data-praxis-global]")?.textContent ?? "";
|
|
68
|
+
expect(css).toContain("@layer reset {");
|
|
69
|
+
expect(css).toContain("box-sizing: border-box");
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it("wraps the reset in a custom named layer", async () => {
|
|
73
|
+
const { preflight } = await import("../preflight.js");
|
|
74
|
+
preflight({ layer: "tailwind-base" });
|
|
75
|
+
const css = document.head.querySelector("style[data-praxis-global]")?.textContent ?? "";
|
|
76
|
+
expect(css).toContain("@layer tailwind-base {");
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("injects un-layered CSS when layer: false", async () => {
|
|
80
|
+
const { preflight } = await import("../preflight.js");
|
|
81
|
+
preflight({ layer: false });
|
|
82
|
+
const css = document.head.querySelector("style[data-praxis-global]")?.textContent ?? "";
|
|
83
|
+
expect(css).not.toContain("@layer");
|
|
84
|
+
});
|
|
63
85
|
});
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { cx, type ClassValue } from "./cx.js";
|
|
2
|
-
export { preflight } from "./preflight.js";
|
|
2
|
+
export { preflight, type PreflightOptions } from "./preflight.js";
|
|
3
3
|
export { globalStyle, type GlobalStyleFactory } from "./global.js";
|
|
4
4
|
export { type CSSBuilder, type CSSProperties } from "./builder/css-builder.js";
|
|
5
5
|
export { keyframes } from "./builder/keyframes.js";
|
package/src/preflight.ts
CHANGED
|
@@ -171,6 +171,16 @@ input:where([type='button'], [type='reset'], [type='submit']),
|
|
|
171
171
|
}
|
|
172
172
|
`;
|
|
173
173
|
|
|
174
|
+
export interface PreflightOptions {
|
|
175
|
+
/**
|
|
176
|
+
* Names the CSS `@layer` the reset is wrapped in, so it can be ordered
|
|
177
|
+
* against other layered CSS (e.g. Tailwind's `@layer utilities`) instead
|
|
178
|
+
* of always winning the cascade. Defaults to `"reset"`. Pass `false` to
|
|
179
|
+
* inject un-layered CSS instead.
|
|
180
|
+
*/
|
|
181
|
+
layer?: string | false;
|
|
182
|
+
}
|
|
183
|
+
|
|
174
184
|
/**
|
|
175
185
|
* Injects an opinionated browser reset into `document.head` exactly once.
|
|
176
186
|
*
|
|
@@ -187,6 +197,11 @@ input:where([type='button'], [type='reset'], [type='submit']),
|
|
|
187
197
|
* import { preflight } from '@praxisjs/css'
|
|
188
198
|
* preflight()
|
|
189
199
|
*/
|
|
190
|
-
export function preflight(): void {
|
|
191
|
-
|
|
200
|
+
export function preflight({ layer = "reset" }: PreflightOptions = {}): void {
|
|
201
|
+
if (!layer) {
|
|
202
|
+
globalStyle(_css => PREFLIGHT);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
globalStyle(_css => `@layer ${layer} {\n${PREFLIGHT}\n}`);
|
|
192
207
|
}
|