@praxisjs/css 0.1.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 +26 -0
- package/LICENSE +21 -0
- package/dist/__tests__/css-builder.test.d.ts +2 -0
- package/dist/__tests__/css-builder.test.d.ts.map +1 -0
- package/dist/__tests__/css-builder.test.js +198 -0
- package/dist/__tests__/css-builder.test.js.map +1 -0
- package/dist/__tests__/cx.test.d.ts +2 -0
- package/dist/__tests__/cx.test.d.ts.map +1 -0
- package/dist/__tests__/cx.test.js +47 -0
- package/dist/__tests__/cx.test.js.map +1 -0
- package/dist/__tests__/decorators.test.d.ts +2 -0
- package/dist/__tests__/decorators.test.d.ts.map +1 -0
- package/dist/__tests__/decorators.test.js +268 -0
- package/dist/__tests__/decorators.test.js.map +1 -0
- package/dist/__tests__/extract.test.d.ts +2 -0
- package/dist/__tests__/extract.test.d.ts.map +1 -0
- package/dist/__tests__/extract.test.js +420 -0
- package/dist/__tests__/extract.test.js.map +1 -0
- package/dist/__tests__/global.test.d.ts +2 -0
- package/dist/__tests__/global.test.d.ts.map +1 -0
- package/dist/__tests__/global.test.js +117 -0
- package/dist/__tests__/global.test.js.map +1 -0
- package/dist/__tests__/keyframes.test.d.ts +2 -0
- package/dist/__tests__/keyframes.test.d.ts.map +1 -0
- package/dist/__tests__/keyframes.test.js +90 -0
- package/dist/__tests__/keyframes.test.js.map +1 -0
- package/dist/__tests__/preflight.test.d.ts +2 -0
- package/dist/__tests__/preflight.test.d.ts.map +1 -0
- package/dist/__tests__/preflight.test.js +55 -0
- package/dist/__tests__/preflight.test.js.map +1 -0
- package/dist/__tests__/registry.test.d.ts +2 -0
- package/dist/__tests__/registry.test.d.ts.map +1 -0
- package/dist/__tests__/registry.test.js +132 -0
- package/dist/__tests__/registry.test.js.map +1 -0
- package/dist/__tests__/style.test.d.ts +2 -0
- package/dist/__tests__/style.test.d.ts.map +1 -0
- package/dist/__tests__/style.test.js +257 -0
- package/dist/__tests__/style.test.js.map +1 -0
- package/dist/__tests__/styled.test.d.ts +2 -0
- package/dist/__tests__/styled.test.d.ts.map +1 -0
- package/dist/__tests__/styled.test.js +951 -0
- package/dist/__tests__/styled.test.js.map +1 -0
- package/dist/__tests__/theme-instance.test.d.ts +2 -0
- package/dist/__tests__/theme-instance.test.d.ts.map +1 -0
- package/dist/__tests__/theme-instance.test.js +317 -0
- package/dist/__tests__/theme-instance.test.js.map +1 -0
- package/dist/__tests__/theme-uninit.test.d.ts +2 -0
- package/dist/__tests__/theme-uninit.test.d.ts.map +1 -0
- package/dist/__tests__/theme-uninit.test.js +10 -0
- package/dist/__tests__/theme-uninit.test.js.map +1 -0
- package/dist/__tests__/token-sheet.test.d.ts +2 -0
- package/dist/__tests__/token-sheet.test.d.ts.map +1 -0
- package/dist/__tests__/token-sheet.test.js +74 -0
- package/dist/__tests__/token-sheet.test.js.map +1 -0
- package/dist/base/stylesheet.d.ts +30 -0
- package/dist/base/stylesheet.d.ts.map +1 -0
- package/dist/base/stylesheet.js +29 -0
- package/dist/base/stylesheet.js.map +1 -0
- package/dist/builder/css-builder.d.ts +98 -0
- package/dist/builder/css-builder.d.ts.map +1 -0
- package/dist/builder/css-builder.js +79 -0
- package/dist/builder/css-builder.js.map +1 -0
- package/dist/builder/keyframes.d.ts +23 -0
- package/dist/builder/keyframes.d.ts.map +1 -0
- package/dist/builder/keyframes.js +54 -0
- package/dist/builder/keyframes.js.map +1 -0
- package/dist/cx.d.ts +3 -0
- package/dist/cx.d.ts.map +1 -0
- package/dist/cx.js +23 -0
- package/dist/cx.js.map +1 -0
- package/dist/decorators/param.d.ts +23 -0
- package/dist/decorators/param.d.ts.map +1 -0
- package/dist/decorators/param.js +39 -0
- package/dist/decorators/param.js.map +1 -0
- package/dist/decorators/style.d.ts +15 -0
- package/dist/decorators/style.d.ts.map +1 -0
- package/dist/decorators/style.js +53 -0
- package/dist/decorators/style.js.map +1 -0
- package/dist/decorators/styled.d.ts +37 -0
- package/dist/decorators/styled.d.ts.map +1 -0
- package/dist/decorators/styled.js +138 -0
- package/dist/decorators/styled.js.map +1 -0
- package/dist/extract.d.ts +14 -0
- package/dist/extract.d.ts.map +1 -0
- package/dist/extract.js +124 -0
- package/dist/extract.js.map +1 -0
- package/dist/global.d.ts +27 -0
- package/dist/global.d.ts.map +1 -0
- package/dist/global.js +49 -0
- package/dist/global.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/collector.d.ts +15 -0
- package/dist/internal/collector.d.ts.map +1 -0
- package/dist/internal/collector.js +33 -0
- package/dist/internal/collector.js.map +1 -0
- package/dist/internal/hash.d.ts +5 -0
- package/dist/internal/hash.d.ts.map +1 -0
- package/dist/internal/hash.js +11 -0
- package/dist/internal/hash.js.map +1 -0
- package/dist/internal/registry.d.ts +3 -0
- package/dist/internal/registry.d.ts.map +1 -0
- package/dist/internal/registry.js +41 -0
- package/dist/internal/registry.js.map +1 -0
- package/dist/preflight.d.ts +18 -0
- package/dist/preflight.d.ts.map +1 -0
- package/dist/preflight.js +191 -0
- package/dist/preflight.js.map +1 -0
- package/dist/server.d.ts +8 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +8 -0
- package/dist/server.js.map +1 -0
- package/dist/tokens/decorators.d.ts +41 -0
- package/dist/tokens/decorators.d.ts.map +1 -0
- package/dist/tokens/decorators.js +73 -0
- package/dist/tokens/decorators.js.map +1 -0
- package/dist/tokens/index.d.ts +4 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/index.js +4 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/theme-instance.d.ts +33 -0
- package/dist/tokens/theme-instance.d.ts.map +1 -0
- package/dist/tokens/theme-instance.js +130 -0
- package/dist/tokens/theme-instance.js.map +1 -0
- package/dist/tokens/token-sheet.d.ts +46 -0
- package/dist/tokens/token-sheet.d.ts.map +1 -0
- package/dist/tokens/token-sheet.js +55 -0
- package/dist/tokens/token-sheet.js.map +1 -0
- package/package.json +33 -0
- package/src/__tests__/css-builder.test.ts +230 -0
- package/src/__tests__/cx.test.ts +63 -0
- package/src/__tests__/decorators.test.ts +127 -0
- package/src/__tests__/extract.test.ts +418 -0
- package/src/__tests__/global.test.ts +140 -0
- package/src/__tests__/keyframes.test.ts +103 -0
- package/src/__tests__/preflight.test.ts +63 -0
- package/src/__tests__/registry.test.ts +151 -0
- package/src/__tests__/style.test.ts +153 -0
- package/src/__tests__/styled.test.ts +427 -0
- package/src/__tests__/theme-instance.test.ts +374 -0
- package/src/__tests__/theme-uninit.test.ts +12 -0
- package/src/__tests__/token-sheet.test.ts +87 -0
- package/src/base/stylesheet.ts +35 -0
- package/src/builder/css-builder.ts +204 -0
- package/src/builder/keyframes.ts +66 -0
- package/src/cx.ts +26 -0
- package/src/decorators/param.ts +40 -0
- package/src/decorators/style.ts +55 -0
- package/src/decorators/styled.ts +167 -0
- package/src/extract.ts +133 -0
- package/src/global.ts +60 -0
- package/src/index.ts +10 -0
- package/src/internal/collector.ts +38 -0
- package/src/internal/hash.ts +10 -0
- package/src/internal/registry.ts +51 -0
- package/src/preflight.ts +192 -0
- package/src/server.ts +12 -0
- package/src/tokens/decorators.ts +108 -0
- package/src/tokens/index.ts +3 -0
- package/src/tokens/theme-instance.ts +149 -0
- package/src/tokens/token-sheet.ts +86 -0
- package/tsconfig.json +8 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styled.js","sourceRoot":"","sources":["../../src/decorators/styled.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type EmitFn = (css: string, prepend?: boolean) => void;
|
|
2
|
+
/**
|
|
3
|
+
* Creates the `@praxisjs/css` module API surface for build-time CSS extraction.
|
|
4
|
+
*
|
|
5
|
+
* All CSS-generating calls route through `emit` instead of the DOM.
|
|
6
|
+
* Pass the returned object as the `@praxisjs/css` entry in a vm sandbox's
|
|
7
|
+
* `require()` handler.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const mod = extractionModule((css, prepend) => { ... })
|
|
11
|
+
* sandbox.require = id => id === '@praxisjs/css' ? mod : {}
|
|
12
|
+
*/
|
|
13
|
+
export declare function extractionModule(emit: EmitFn): Record<string, unknown>;
|
|
14
|
+
//# sourceMappingURL=extract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAyC9D;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0EtE"}
|
package/dist/extract.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { Stylesheet, ReactiveStylesheet } from "./base/stylesheet.js";
|
|
2
|
+
import { isCSSBuilder, createCSSBuilder } from "./builder/css-builder.js";
|
|
3
|
+
import { hashCSS } from "./internal/hash.js";
|
|
4
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
5
|
+
function camelToKebab(s) {
|
|
6
|
+
return s.replace(/([A-Z])/g, "-$1").toLowerCase();
|
|
7
|
+
}
|
|
8
|
+
function themeToRootCSS(ThemeClass) {
|
|
9
|
+
try {
|
|
10
|
+
const inst = new ThemeClass();
|
|
11
|
+
const vars = Object.entries(inst)
|
|
12
|
+
.filter(([, v]) => typeof v === "string" || typeof v === "number")
|
|
13
|
+
.map(([k, v]) => ` --${camelToKebab(k)}: ${String(v)};`)
|
|
14
|
+
.join("\n");
|
|
15
|
+
return vars ? `:root {\n${vars}\n}` : null;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function collectSheetCSS(SheetClass, emit) {
|
|
22
|
+
try {
|
|
23
|
+
const inst = new SheetClass();
|
|
24
|
+
const blocks = [];
|
|
25
|
+
for (const [k, v] of Object.entries(inst)) {
|
|
26
|
+
if (!k.startsWith("$"))
|
|
27
|
+
continue;
|
|
28
|
+
const css = typeof v === "string" ? v : (isCSSBuilder(v) ? String(v) : null);
|
|
29
|
+
if (!css)
|
|
30
|
+
continue;
|
|
31
|
+
const name = k.slice(1).replace(/[^\w-]/g, "-");
|
|
32
|
+
blocks.push(`.prx-${name}-${hashCSS(css)} { ${css.trim()} }`);
|
|
33
|
+
}
|
|
34
|
+
if (blocks.length)
|
|
35
|
+
emit(blocks.join("\n"));
|
|
36
|
+
}
|
|
37
|
+
catch { /* skip sheets that can't be instantiated at build time */ }
|
|
38
|
+
}
|
|
39
|
+
// ─── Module factory ───────────────────────────────────────────────────────────
|
|
40
|
+
/**
|
|
41
|
+
* Creates the `@praxisjs/css` module API surface for build-time CSS extraction.
|
|
42
|
+
*
|
|
43
|
+
* All CSS-generating calls route through `emit` instead of the DOM.
|
|
44
|
+
* Pass the returned object as the `@praxisjs/css` entry in a vm sandbox's
|
|
45
|
+
* `require()` handler.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* const mod = extractionModule((css, prepend) => { ... })
|
|
49
|
+
* sandbox.require = id => id === '@praxisjs/css' ? mod : {}
|
|
50
|
+
*/
|
|
51
|
+
export function extractionModule(emit) {
|
|
52
|
+
const seen = new Set();
|
|
53
|
+
const dedupEmit = (css, prepend) => {
|
|
54
|
+
const key = hashCSS(css);
|
|
55
|
+
if (seen.has(key))
|
|
56
|
+
return;
|
|
57
|
+
seen.add(key);
|
|
58
|
+
emit(css, prepend);
|
|
59
|
+
};
|
|
60
|
+
class ExtractionThemeInstance {
|
|
61
|
+
constructor(DefaultTheme) {
|
|
62
|
+
const css = themeToRootCSS(DefaultTheme);
|
|
63
|
+
if (css)
|
|
64
|
+
dedupEmit(css, true);
|
|
65
|
+
}
|
|
66
|
+
get current() { return {}; }
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
68
|
+
switch(_T) { }
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
70
|
+
destroy() { }
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
__esModule: true,
|
|
74
|
+
// Base classes — real implementations, used by user's `extends Stylesheet`
|
|
75
|
+
Stylesheet,
|
|
76
|
+
ReactiveStylesheet,
|
|
77
|
+
createCSSBuilder,
|
|
78
|
+
// Token system — extraction stubs
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
80
|
+
TokenSheet: class TokenSheet {
|
|
81
|
+
},
|
|
82
|
+
tokenVars: (cls) => cls,
|
|
83
|
+
ThemeInstance: ExtractionThemeInstance,
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
85
|
+
theme: () => new ExtractionThemeInstance(class {
|
|
86
|
+
}),
|
|
87
|
+
createThemeInstance: (T) => new ExtractionThemeInstance(T),
|
|
88
|
+
Themed: (_skeleton, DefaultTheme) => {
|
|
89
|
+
const css = themeToRootCSS(DefaultTheme);
|
|
90
|
+
if (css)
|
|
91
|
+
dedupEmit(css, true);
|
|
92
|
+
return (cls) => cls;
|
|
93
|
+
},
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
95
|
+
Theme: () => () => { },
|
|
96
|
+
// CSS API — collect instead of inject
|
|
97
|
+
Styled: (SheetClass) => {
|
|
98
|
+
collectSheetCSS(SheetClass, dedupEmit);
|
|
99
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
100
|
+
return () => { };
|
|
101
|
+
},
|
|
102
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
103
|
+
Param: () => () => { },
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
105
|
+
Style: () => () => { },
|
|
106
|
+
cx: () => "",
|
|
107
|
+
keyframes: (name, stops) => {
|
|
108
|
+
const stopToCSS = (p) => Object.entries(p)
|
|
109
|
+
.filter(([, v]) => v != null)
|
|
110
|
+
.map(([k, v]) => ` ${camelToKebab(k)}: ${String(v)};`)
|
|
111
|
+
.join("\n");
|
|
112
|
+
const body = Object.entries(stops)
|
|
113
|
+
.map(([s, p]) => ` ${s} {\n${stopToCSS(p)}\n }`)
|
|
114
|
+
.join("\n");
|
|
115
|
+
const sn = `prx-${name}-${hashCSS(body)}`;
|
|
116
|
+
dedupEmit(`@keyframes ${sn} {\n${body}\n}`);
|
|
117
|
+
return sn;
|
|
118
|
+
},
|
|
119
|
+
globalStyle: (factory) => {
|
|
120
|
+
dedupEmit(String(factory(createCSSBuilder)));
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
|
package/dist/global.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type CSSProperties, type CSSBuilder } from "./builder/css-builder.js";
|
|
2
|
+
/** Factory function that receives `css` (= `createCSSBuilder`) and returns a `CSSBuilder` or raw CSS string. */
|
|
3
|
+
export type GlobalStyleFactory = (css: (props: CSSProperties) => CSSBuilder) => CSSBuilder | string;
|
|
4
|
+
/**
|
|
5
|
+
* Injects unscoped CSS into `<head>` exactly once.
|
|
6
|
+
*
|
|
7
|
+
* Receives a factory function that is passed `css` — the same builder
|
|
8
|
+
* function as `this.css()` in a `Stylesheet` class — and returns either a
|
|
9
|
+
* {@link CSSBuilder} or a raw CSS string.
|
|
10
|
+
*
|
|
11
|
+
* Use `.on(selector, props)` to attach rules to specific elements.
|
|
12
|
+
* Chain multiple `.on()` calls to produce multiple selectors in one injection.
|
|
13
|
+
*
|
|
14
|
+
* Idempotent — duplicate content is ignored (content-hashed).
|
|
15
|
+
* Safe to call at module level. With the `praxisjsCSS()` Vite plugin the
|
|
16
|
+
* CSS is extracted at build time.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* globalStyle(css =>
|
|
20
|
+
* css({})
|
|
21
|
+
* .on('*, *::before, *::after', { boxSizing: 'border-box', margin: 0, padding: 0 })
|
|
22
|
+
* .on('body', { fontFamily: 'system-ui', lineHeight: 1.5 })
|
|
23
|
+
* .on('img, video', { display: 'block', maxWidth: '100%' })
|
|
24
|
+
* )
|
|
25
|
+
*/
|
|
26
|
+
export declare function globalStyle(factory: GlobalStyleFactory): void;
|
|
27
|
+
//# sourceMappingURL=global.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAMjG,gHAAgH;AAChH,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,UAAU,KAAK,UAAU,GAAG,MAAM,CAAC;AAYpG;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAkB7D"}
|
package/dist/global.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { createCSSBuilder } from "./builder/css-builder.js";
|
|
2
|
+
import { getCollector } from "./internal/collector.js";
|
|
3
|
+
import { hashCSS } from "./internal/hash.js";
|
|
4
|
+
const STATIC_MODE = typeof __PRAXIS_CSS_STATIC__ !== "undefined" && __PRAXIS_CSS_STATIC__;
|
|
5
|
+
const injected = new Set();
|
|
6
|
+
// ─── globalStyle ─────────────────────────────────────────────────────────────
|
|
7
|
+
/**
|
|
8
|
+
* Injects unscoped CSS into `<head>` exactly once.
|
|
9
|
+
*
|
|
10
|
+
* Receives a factory function that is passed `css` — the same builder
|
|
11
|
+
* function as `this.css()` in a `Stylesheet` class — and returns either a
|
|
12
|
+
* {@link CSSBuilder} or a raw CSS string.
|
|
13
|
+
*
|
|
14
|
+
* Use `.on(selector, props)` to attach rules to specific elements.
|
|
15
|
+
* Chain multiple `.on()` calls to produce multiple selectors in one injection.
|
|
16
|
+
*
|
|
17
|
+
* Idempotent — duplicate content is ignored (content-hashed).
|
|
18
|
+
* Safe to call at module level. With the `praxisjsCSS()` Vite plugin the
|
|
19
|
+
* CSS is extracted at build time.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* globalStyle(css =>
|
|
23
|
+
* css({})
|
|
24
|
+
* .on('*, *::before, *::after', { boxSizing: 'border-box', margin: 0, padding: 0 })
|
|
25
|
+
* .on('body', { fontFamily: 'system-ui', lineHeight: 1.5 })
|
|
26
|
+
* .on('img, video', { display: 'block', maxWidth: '100%' })
|
|
27
|
+
* )
|
|
28
|
+
*/
|
|
29
|
+
export function globalStyle(factory) {
|
|
30
|
+
const css = String(factory(createCSSBuilder));
|
|
31
|
+
const key = hashCSS(css);
|
|
32
|
+
if (injected.has(key))
|
|
33
|
+
return;
|
|
34
|
+
injected.add(key);
|
|
35
|
+
if (STATIC_MODE)
|
|
36
|
+
return;
|
|
37
|
+
const col = getCollector();
|
|
38
|
+
if (col) {
|
|
39
|
+
col.inject(key, css);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (typeof document === "undefined")
|
|
43
|
+
return;
|
|
44
|
+
const el = document.createElement("style");
|
|
45
|
+
el.setAttribute("data-praxis-global", key);
|
|
46
|
+
el.textContent = css;
|
|
47
|
+
document.head.appendChild(el);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=global.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.js","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAuC,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAU7C,MAAM,WAAW,GACf,OAAO,qBAAqB,KAAK,WAAW,IAAI,qBAAqB,CAAC;AAExE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;AAEnC,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE9C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO;IAC9B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAElB,IAAI,WAAW;QAAE,OAAO;IAExB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,IAAI,GAAG,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAE1C,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAE5C,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3C,EAAE,CAAC,YAAY,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IAC3C,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { cx, type ClassValue } from "./cx.js";
|
|
2
|
+
export { preflight } from "./preflight.js";
|
|
3
|
+
export { globalStyle, type GlobalStyleFactory } from "./global.js";
|
|
4
|
+
export { type CSSBuilder, type CSSProperties } from "./builder/css-builder.js";
|
|
5
|
+
export { keyframes } from "./builder/keyframes.js";
|
|
6
|
+
export { Param } from "./decorators/param.js";
|
|
7
|
+
export { ReactiveStylesheet, Stylesheet } from "./base/stylesheet.js";
|
|
8
|
+
export { Styled } from "./decorators/styled.js";
|
|
9
|
+
export { Style } from "./decorators/style.js";
|
|
10
|
+
export { TokenSheet, tokenVars, ThemeInstance, theme, Themed, Theme, type ThemedConfig } from "./tokens/index.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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;AAC3C,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
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { cx } from "./cx.js";
|
|
2
|
+
export { preflight } from "./preflight.js";
|
|
3
|
+
export { globalStyle } from "./global.js";
|
|
4
|
+
export { keyframes } from "./builder/keyframes.js";
|
|
5
|
+
export { Param } from "./decorators/param.js";
|
|
6
|
+
export { ReactiveStylesheet, Stylesheet } from "./base/stylesheet.js";
|
|
7
|
+
export { Styled } from "./decorators/styled.js";
|
|
8
|
+
export { Style } from "./decorators/style.js";
|
|
9
|
+
export { TokenSheet, tokenVars, ThemeInstance, theme, Themed, Theme } from "./tokens/index.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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,EAAE,MAAM,gBAAgB,CAAC;AAC3C,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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS collector — used by the Vite CSS plugin during build-time extraction.
|
|
3
|
+
* When a collector is active, `injectStyle` and `keyframes` push CSS to it
|
|
4
|
+
* instead of injecting `<style>` elements into the DOM.
|
|
5
|
+
*/
|
|
6
|
+
export interface CSSCollector {
|
|
7
|
+
inject(key: string, css: string): void;
|
|
8
|
+
addKeyframes(name: string, css: string): void;
|
|
9
|
+
getCSS(): string;
|
|
10
|
+
clear(): void;
|
|
11
|
+
}
|
|
12
|
+
export declare function setCollector(c: CSSCollector | null): void;
|
|
13
|
+
export declare function getCollector(): CSSCollector | null;
|
|
14
|
+
export declare function createCollector(): CSSCollector;
|
|
15
|
+
//# sourceMappingURL=collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/internal/collector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,MAAM,IAAI,MAAM,CAAC;IACjB,KAAK,IAAI,IAAI,CAAC;CACf;AAID,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAEzD;AAED,wBAAgB,YAAY,IAAI,YAAY,GAAG,IAAI,CAElD;AAED,wBAAgB,eAAe,IAAI,YAAY,CAc9C"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS collector — used by the Vite CSS plugin during build-time extraction.
|
|
3
|
+
* When a collector is active, `injectStyle` and `keyframes` push CSS to it
|
|
4
|
+
* instead of injecting `<style>` elements into the DOM.
|
|
5
|
+
*/
|
|
6
|
+
let _active = null;
|
|
7
|
+
export function setCollector(c) {
|
|
8
|
+
_active = c;
|
|
9
|
+
}
|
|
10
|
+
export function getCollector() {
|
|
11
|
+
return _active;
|
|
12
|
+
}
|
|
13
|
+
export function createCollector() {
|
|
14
|
+
const seen = new Set();
|
|
15
|
+
const blocks = [];
|
|
16
|
+
return {
|
|
17
|
+
inject(key, css) {
|
|
18
|
+
if (!seen.has(key)) {
|
|
19
|
+
seen.add(key);
|
|
20
|
+
blocks.push(css);
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
addKeyframes(name, css) {
|
|
24
|
+
if (!seen.has(name)) {
|
|
25
|
+
seen.add(name);
|
|
26
|
+
blocks.push(css);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
getCSS() { return blocks.join("\n"); },
|
|
30
|
+
clear() { seen.clear(); blocks.length = 0; },
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/internal/collector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,IAAI,OAAO,GAAwB,IAAI,CAAC;AAExC,MAAM,UAAU,YAAY,CAAC,CAAsB;IACjD,OAAO,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,OAAO;QACL,MAAM,CAAC,GAAG,EAAE,GAAG;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;QAC1D,CAAC;QACD,YAAY,CAAC,IAAI,EAAE,GAAG;YACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;QAC5D,CAAC;QACD,MAAM,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;KAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/internal/hash.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM3C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* djb2-variant hash of a string, returning a 6-char base-36 identifier.
|
|
3
|
+
*/
|
|
4
|
+
export function hashCSS(str) {
|
|
5
|
+
let h = 5381;
|
|
6
|
+
for (let i = 0; i < str.length; i++) {
|
|
7
|
+
h = (h * 33) ^ str.charCodeAt(i);
|
|
8
|
+
}
|
|
9
|
+
return (h >>> 0).toString(36).slice(0, 6);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/internal/hash.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,IAAI,CAAC,GAAG,IAAI,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/internal/registry.ts"],"names":[],"mappings":"AAiBA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAqB1D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAU9C"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { getCollector } from "./collector.js";
|
|
2
|
+
const STATIC_MODE = typeof __PRAXIS_CSS_STATIC__ !== "undefined" && __PRAXIS_CSS_STATIC__;
|
|
3
|
+
// ─── DOM registry ─────────────────────────────────────────────────────────────
|
|
4
|
+
// WeakRef lets the GC reclaim style elements that were removed externally
|
|
5
|
+
// without going through releaseStyle (e.g. framework teardown, test cleanup).
|
|
6
|
+
const cssRegistry = new Map();
|
|
7
|
+
export function injectStyle(key, css) {
|
|
8
|
+
if (STATIC_MODE)
|
|
9
|
+
return;
|
|
10
|
+
const col = getCollector();
|
|
11
|
+
if (col) {
|
|
12
|
+
col.inject(key, css);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (typeof document === "undefined")
|
|
16
|
+
return;
|
|
17
|
+
const existing = cssRegistry.get(key);
|
|
18
|
+
const existingEl = existing?.ref.deref();
|
|
19
|
+
if (existing && existingEl && document.head.contains(existingEl)) {
|
|
20
|
+
existing.count++;
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const el = document.createElement("style");
|
|
24
|
+
el.setAttribute("data-praxis-hash", key);
|
|
25
|
+
el.textContent = css;
|
|
26
|
+
document.head.appendChild(el);
|
|
27
|
+
cssRegistry.set(key, { ref: new WeakRef(el), count: 1 });
|
|
28
|
+
}
|
|
29
|
+
export function releaseStyle(key) {
|
|
30
|
+
if (STATIC_MODE)
|
|
31
|
+
return;
|
|
32
|
+
const entry = cssRegistry.get(key);
|
|
33
|
+
if (!entry)
|
|
34
|
+
return;
|
|
35
|
+
entry.count--;
|
|
36
|
+
if (entry.count <= 0) {
|
|
37
|
+
entry.ref.deref()?.remove();
|
|
38
|
+
cssRegistry.delete(key);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/internal/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQ9C,MAAM,WAAW,GACf,OAAO,qBAAqB,KAAK,WAAW,IAAI,qBAAqB,CAAC;AAExE,iFAAiF;AAEjF,0EAA0E;AAC1E,8EAA8E;AAC9E,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6D,CAAC;AAEzF,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,GAAW;IAClD,IAAI,WAAW;QAAE,OAAO;IAExB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,IAAI,GAAG,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAE1C,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAE5C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IAEzC,IAAI,QAAQ,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3C,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACzC,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9B,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,WAAW;QAAE,OAAO;IAExB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC;QAC5B,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Injects an opinionated browser reset into `document.head` exactly once.
|
|
3
|
+
*
|
|
4
|
+
* Inspired by the Tailwind CSS preflight reset — normalises browser defaults,
|
|
5
|
+
* removes margins and padding, resets borders, and makes replaced elements
|
|
6
|
+
* block-level. Tailwind-specific `--theme()` references are not included;
|
|
7
|
+
* font stacks use standard system defaults instead.
|
|
8
|
+
*
|
|
9
|
+
* Safe to call at module level. Idempotent — multiple calls inject the CSS
|
|
10
|
+
* only once. Works with the `praxisjsCSS()` Vite plugin for static extraction.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* // src/main.ts
|
|
14
|
+
* import { preflight } from '@praxisjs/css'
|
|
15
|
+
* preflight()
|
|
16
|
+
*/
|
|
17
|
+
export declare function preflight(): void;
|
|
18
|
+
//# sourceMappingURL=preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AA6KA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAEhC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { globalStyle } from "./global.js";
|
|
2
|
+
// Tailwind CSS preflight — https://github.com/tailwindlabs/tailwindcss/blob/main/packages/tailwindcss/preflight.css
|
|
3
|
+
// --theme() references stripped and replaced with their fallback values.
|
|
4
|
+
const PREFLIGHT = `
|
|
5
|
+
*,
|
|
6
|
+
::after,
|
|
7
|
+
::before,
|
|
8
|
+
::backdrop,
|
|
9
|
+
::file-selector-button {
|
|
10
|
+
box-sizing: border-box;
|
|
11
|
+
margin: 0;
|
|
12
|
+
padding: 0;
|
|
13
|
+
border: 0 solid;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
html,
|
|
17
|
+
:host {
|
|
18
|
+
line-height: 1.5;
|
|
19
|
+
-webkit-text-size-adjust: 100%;
|
|
20
|
+
tab-size: 4;
|
|
21
|
+
font-family: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
|
22
|
+
font-feature-settings: normal;
|
|
23
|
+
font-variation-settings: normal;
|
|
24
|
+
-webkit-tap-highlight-color: transparent;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
hr {
|
|
28
|
+
height: 0;
|
|
29
|
+
color: inherit;
|
|
30
|
+
border-top-width: 1px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
abbr:where([title]) {
|
|
34
|
+
-webkit-text-decoration: underline dotted;
|
|
35
|
+
text-decoration: underline dotted;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
h1, h2, h3, h4, h5, h6 {
|
|
39
|
+
font-size: inherit;
|
|
40
|
+
font-weight: inherit;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
a {
|
|
44
|
+
color: inherit;
|
|
45
|
+
-webkit-text-decoration: inherit;
|
|
46
|
+
text-decoration: inherit;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
b, strong {
|
|
50
|
+
font-weight: bolder;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
code, kbd, samp, pre {
|
|
54
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
|
|
55
|
+
font-feature-settings: normal;
|
|
56
|
+
font-variation-settings: normal;
|
|
57
|
+
font-size: 1em;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
small {
|
|
61
|
+
font-size: 80%;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
sub, sup {
|
|
65
|
+
font-size: 75%;
|
|
66
|
+
line-height: 0;
|
|
67
|
+
position: relative;
|
|
68
|
+
vertical-align: baseline;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
sub { bottom: -0.25em; }
|
|
72
|
+
sup { top: -0.5em; }
|
|
73
|
+
|
|
74
|
+
table {
|
|
75
|
+
text-indent: 0;
|
|
76
|
+
border-color: inherit;
|
|
77
|
+
border-collapse: collapse;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
:-moz-focusring { outline: auto; }
|
|
81
|
+
|
|
82
|
+
progress { vertical-align: baseline; }
|
|
83
|
+
|
|
84
|
+
summary { display: list-item; }
|
|
85
|
+
|
|
86
|
+
ol, ul, menu { list-style: none; }
|
|
87
|
+
|
|
88
|
+
img, svg, video, canvas, audio, iframe, embed, object {
|
|
89
|
+
display: block;
|
|
90
|
+
vertical-align: middle;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
img, video {
|
|
94
|
+
max-width: 100%;
|
|
95
|
+
height: auto;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
button,
|
|
99
|
+
input,
|
|
100
|
+
select,
|
|
101
|
+
optgroup,
|
|
102
|
+
textarea,
|
|
103
|
+
::file-selector-button {
|
|
104
|
+
font: inherit;
|
|
105
|
+
font-feature-settings: inherit;
|
|
106
|
+
font-variation-settings: inherit;
|
|
107
|
+
letter-spacing: inherit;
|
|
108
|
+
color: inherit;
|
|
109
|
+
border-radius: 0;
|
|
110
|
+
background-color: transparent;
|
|
111
|
+
opacity: 1;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
:where(select:is([multiple], [size])) optgroup { font-weight: bolder; }
|
|
115
|
+
|
|
116
|
+
:where(select:is([multiple], [size])) optgroup option { padding-inline-start: 20px; }
|
|
117
|
+
|
|
118
|
+
::file-selector-button { margin-inline-end: 4px; }
|
|
119
|
+
|
|
120
|
+
::placeholder { opacity: 1; }
|
|
121
|
+
|
|
122
|
+
@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {
|
|
123
|
+
::placeholder {
|
|
124
|
+
color: color-mix(in oklab, currentcolor 50%, transparent);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
textarea { resize: vertical; }
|
|
129
|
+
|
|
130
|
+
::-webkit-search-decoration { -webkit-appearance: none; }
|
|
131
|
+
|
|
132
|
+
::-webkit-date-and-time-value {
|
|
133
|
+
min-height: 1lh;
|
|
134
|
+
text-align: inherit;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
::-webkit-datetime-edit { display: inline-flex; }
|
|
138
|
+
|
|
139
|
+
::-webkit-datetime-edit-fields-wrapper { padding: 0; }
|
|
140
|
+
|
|
141
|
+
::-webkit-datetime-edit,
|
|
142
|
+
::-webkit-datetime-edit-year-field,
|
|
143
|
+
::-webkit-datetime-edit-month-field,
|
|
144
|
+
::-webkit-datetime-edit-day-field,
|
|
145
|
+
::-webkit-datetime-edit-hour-field,
|
|
146
|
+
::-webkit-datetime-edit-minute-field,
|
|
147
|
+
::-webkit-datetime-edit-second-field,
|
|
148
|
+
::-webkit-datetime-edit-millisecond-field,
|
|
149
|
+
::-webkit-datetime-edit-meridiem-field {
|
|
150
|
+
padding-block: 0;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
::-webkit-calendar-picker-indicator { line-height: 1; }
|
|
154
|
+
|
|
155
|
+
:-moz-ui-invalid { box-shadow: none; }
|
|
156
|
+
|
|
157
|
+
button,
|
|
158
|
+
input:where([type='button'], [type='reset'], [type='submit']),
|
|
159
|
+
::file-selector-button {
|
|
160
|
+
appearance: button;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
::-webkit-inner-spin-button,
|
|
164
|
+
::-webkit-outer-spin-button {
|
|
165
|
+
height: auto;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
[hidden]:where(:not([hidden='until-found'])) {
|
|
169
|
+
display: none !important;
|
|
170
|
+
}
|
|
171
|
+
`;
|
|
172
|
+
/**
|
|
173
|
+
* Injects an opinionated browser reset into `document.head` exactly once.
|
|
174
|
+
*
|
|
175
|
+
* Inspired by the Tailwind CSS preflight reset — normalises browser defaults,
|
|
176
|
+
* removes margins and padding, resets borders, and makes replaced elements
|
|
177
|
+
* block-level. Tailwind-specific `--theme()` references are not included;
|
|
178
|
+
* font stacks use standard system defaults instead.
|
|
179
|
+
*
|
|
180
|
+
* Safe to call at module level. Idempotent — multiple calls inject the CSS
|
|
181
|
+
* only once. Works with the `praxisjsCSS()` Vite plugin for static extraction.
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* // src/main.ts
|
|
185
|
+
* import { preflight } from '@praxisjs/css'
|
|
186
|
+
* preflight()
|
|
187
|
+
*/
|
|
188
|
+
export function preflight() {
|
|
189
|
+
globalStyle(_css => PREFLIGHT);
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=preflight.js.map
|
|
@@ -0,0 +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;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,SAAS;IACvB,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side / build-time API for the `@praxisjs/vite-plugin` CSS extractor.
|
|
3
|
+
*
|
|
4
|
+
* Import this at `@praxisjs/css/server` — it is NOT part of the browser bundle.
|
|
5
|
+
* Using it in browser code has no effect and the tree-shaker will remove it.
|
|
6
|
+
*/
|
|
7
|
+
export { setCollector, getCollector, createCollector, type CSSCollector, } from "./internal/collector.js";
|
|
8
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,KAAK,YAAY,GAClB,MAAM,yBAAyB,CAAC"}
|