tailwind-styled-v4 5.0.0 → 5.0.2
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 +398 -0
- package/LICENSE +21 -0
- package/README.md +532 -0
- package/dist/analyzer.d.mts +114 -0
- package/dist/analyzer.d.ts +114 -0
- package/dist/analyzer.js +6808 -0
- package/dist/analyzer.js.map +1 -0
- package/dist/analyzer.mjs +6798 -0
- package/dist/analyzer.mjs.map +1 -0
- package/dist/{animate.d.cts → animate.d.mts} +3 -30
- package/dist/animate.d.ts +3 -30
- package/dist/animate.js +7096 -352
- package/dist/animate.js.map +1 -1
- package/dist/animate.mjs +7482 -0
- package/dist/animate.mjs.map +1 -0
- package/dist/atomic.d.mts +18 -0
- package/dist/atomic.d.ts +18 -0
- package/dist/atomic.js +191 -0
- package/dist/atomic.js.map +1 -0
- package/dist/atomic.mjs +185 -0
- package/dist/atomic.mjs.map +1 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +45008 -0
- package/dist/cli.js.map +1 -0
- package/dist/cli.mjs +44980 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/compiler.d.mts +1009 -0
- package/dist/compiler.d.ts +1009 -0
- package/dist/compiler.js +4937 -0
- package/dist/compiler.js.map +1 -0
- package/dist/compiler.mjs +4862 -0
- package/dist/compiler.mjs.map +1 -0
- package/dist/dashboard.d.mts +272 -0
- package/dist/dashboard.d.ts +272 -0
- package/dist/dashboard.js +249 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/dashboard.mjs +239 -0
- package/dist/dashboard.mjs.map +1 -0
- package/dist/devtools.js +171 -158
- package/dist/devtools.js.map +1 -1
- package/dist/{devtools.cjs → devtools.mjs} +166 -167
- package/dist/devtools.mjs.map +1 -0
- package/dist/engine.d.mts +398 -0
- package/dist/engine.d.ts +398 -0
- package/dist/engine.js +19264 -0
- package/dist/engine.js.map +1 -0
- package/dist/engine.mjs +19227 -0
- package/dist/engine.mjs.map +1 -0
- package/dist/{index.d.cts → index.d.mts} +12 -5
- package/dist/index.d.ts +12 -5
- package/dist/index.js +7178 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8408 -0
- package/dist/index.mjs.map +1 -0
- package/dist/liveTokenEngine-DYN3Zale.d.mts +34 -0
- package/dist/liveTokenEngine-DYN3Zale.d.ts +34 -0
- package/dist/{next.d.cts → next.d.mts} +2 -1
- package/dist/next.d.ts +2 -1
- package/dist/next.js +24027 -28
- package/dist/next.js.map +1 -1
- package/dist/next.mjs +24232 -0
- package/dist/next.mjs.map +1 -0
- package/dist/plugin.d.mts +90 -0
- package/dist/plugin.d.ts +90 -0
- package/dist/plugin.js +185 -0
- package/dist/plugin.js.map +1 -0
- package/dist/plugin.mjs +174 -0
- package/dist/plugin.mjs.map +1 -0
- package/dist/pluginRegistry.d.mts +83 -0
- package/dist/pluginRegistry.d.ts +83 -0
- package/dist/pluginRegistry.js +303 -0
- package/dist/pluginRegistry.js.map +1 -0
- package/dist/pluginRegistry.mjs +298 -0
- package/dist/pluginRegistry.mjs.map +1 -0
- package/dist/preset.js +9 -4
- package/dist/preset.js.map +1 -1
- package/dist/{preset.cjs → preset.mjs} +5 -14
- package/dist/preset.mjs.map +1 -0
- package/dist/rspack.d.mts +33 -0
- package/dist/rspack.d.ts +33 -0
- package/dist/rspack.js +66 -0
- package/dist/rspack.js.map +1 -0
- package/dist/rspack.mjs +55 -0
- package/dist/rspack.mjs.map +1 -0
- package/dist/runtime.d.mts +62 -0
- package/dist/runtime.d.ts +62 -0
- package/dist/runtime.js +455 -0
- package/dist/runtime.js.map +1 -0
- package/dist/runtime.mjs +436 -0
- package/dist/runtime.mjs.map +1 -0
- package/dist/runtimeCss.d.mts +65 -0
- package/dist/runtimeCss.d.ts +65 -0
- package/dist/{css.cjs → runtimeCss.js} +71 -4
- package/dist/runtimeCss.js.map +1 -0
- package/dist/{css.js → runtimeCss.mjs} +66 -5
- package/dist/runtimeCss.mjs.map +1 -0
- package/dist/scanner.d.mts +25 -0
- package/dist/scanner.d.ts +25 -0
- package/dist/scanner.js +5774 -0
- package/dist/scanner.js.map +1 -0
- package/dist/scanner.mjs +5760 -0
- package/dist/scanner.mjs.map +1 -0
- package/dist/shared.d.mts +85 -0
- package/dist/shared.d.ts +85 -0
- package/dist/shared.js +255 -0
- package/dist/shared.js.map +1 -0
- package/dist/shared.mjs +233 -0
- package/dist/shared.mjs.map +1 -0
- package/dist/storybookAddon.d.mts +108 -0
- package/dist/storybookAddon.d.ts +108 -0
- package/dist/storybookAddon.js +95 -0
- package/dist/storybookAddon.js.map +1 -0
- package/dist/storybookAddon.mjs +88 -0
- package/dist/storybookAddon.mjs.map +1 -0
- package/dist/svelte.d.mts +114 -0
- package/dist/svelte.d.ts +114 -0
- package/dist/svelte.js +67 -0
- package/dist/svelte.js.map +1 -0
- package/dist/svelte.mjs +59 -0
- package/dist/svelte.mjs.map +1 -0
- package/dist/testing.d.mts +185 -0
- package/dist/testing.d.ts +185 -0
- package/dist/testing.js +173 -0
- package/dist/testing.js.map +1 -0
- package/dist/testing.mjs +158 -0
- package/dist/testing.mjs.map +1 -0
- package/dist/theme.d.mts +188 -0
- package/dist/theme.d.ts +188 -0
- package/dist/theme.js +334 -0
- package/dist/theme.js.map +1 -0
- package/dist/theme.mjs +311 -0
- package/dist/theme.mjs.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types-DXr2PmGP.d.mts +31 -0
- package/dist/types-DXr2PmGP.d.ts +31 -0
- package/dist/vite.js +29611 -17
- package/dist/vite.js.map +1 -1
- package/dist/vite.mjs +29712 -0
- package/dist/vite.mjs.map +1 -0
- package/dist/vue.d.mts +89 -0
- package/dist/vue.d.ts +89 -0
- package/dist/vue.js +104 -0
- package/dist/vue.js.map +1 -0
- package/dist/vue.mjs +96 -0
- package/dist/vue.mjs.map +1 -0
- package/package.json +170 -64
- package/dist/animate.cjs +0 -771
- package/dist/animate.cjs.map +0 -1
- package/dist/chunk-VZEJV27B.js +0 -11
- package/dist/chunk-VZEJV27B.js.map +0 -1
- package/dist/chunk-Y5D3E72P.cjs +0 -13
- package/dist/chunk-Y5D3E72P.cjs.map +0 -1
- package/dist/css.cjs.map +0 -1
- package/dist/css.d.cts +0 -30
- package/dist/css.d.ts +0 -30
- package/dist/css.js.map +0 -1
- package/dist/devtools.cjs.map +0 -1
- package/dist/index.cjs +0 -1353
- package/dist/index.cjs.map +0 -1
- package/dist/next.cjs +0 -248
- package/dist/next.cjs.map +0 -1
- package/dist/preset.cjs.map +0 -1
- package/dist/turbopackLoader.cjs +0 -37
- package/dist/turbopackLoader.cjs.map +0 -1
- package/dist/turbopackLoader.d.cts +0 -12
- package/dist/turbopackLoader.d.ts +0 -12
- package/dist/turbopackLoader.js +0 -35
- package/dist/turbopackLoader.js.map +0 -1
- package/dist/vite.cjs +0 -138
- package/dist/vite.cjs.map +0 -1
- package/dist/webpackLoader.cjs +0 -51
- package/dist/webpackLoader.cjs.map +0 -1
- package/dist/webpackLoader.d.cts +0 -17
- package/dist/webpackLoader.d.ts +0 -17
- package/dist/webpackLoader.js +0 -49
- package/dist/webpackLoader.js.map +0 -1
- /package/dist/{devtools.d.cts → devtools.d.mts} +0 -0
- /package/dist/{preset.d.cts → preset.d.mts} +0 -0
- /package/dist/{vite.d.cts → vite.d.mts} +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface AtomicRule {
|
|
2
|
+
twClass: string;
|
|
3
|
+
atomicName: string;
|
|
4
|
+
property: string;
|
|
5
|
+
value: string;
|
|
6
|
+
modifier?: string;
|
|
7
|
+
}
|
|
8
|
+
declare function parseAtomicClass(twClass: string): AtomicRule | null;
|
|
9
|
+
declare function generateAtomicCss(rules: AtomicRule[]): string;
|
|
10
|
+
declare function toAtomicClasses(twClasses: string): {
|
|
11
|
+
atomicClasses: string;
|
|
12
|
+
rules: AtomicRule[];
|
|
13
|
+
unknownClasses: string[];
|
|
14
|
+
};
|
|
15
|
+
declare function getAtomicRegistry(): Map<string, AtomicRule>;
|
|
16
|
+
declare function clearAtomicRegistry(): void;
|
|
17
|
+
|
|
18
|
+
export { type AtomicRule, clearAtomicRegistry, generateAtomicCss, getAtomicRegistry, parseAtomicClass, toAtomicClasses };
|
package/dist/atomic.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface AtomicRule {
|
|
2
|
+
twClass: string;
|
|
3
|
+
atomicName: string;
|
|
4
|
+
property: string;
|
|
5
|
+
value: string;
|
|
6
|
+
modifier?: string;
|
|
7
|
+
}
|
|
8
|
+
declare function parseAtomicClass(twClass: string): AtomicRule | null;
|
|
9
|
+
declare function generateAtomicCss(rules: AtomicRule[]): string;
|
|
10
|
+
declare function toAtomicClasses(twClasses: string): {
|
|
11
|
+
atomicClasses: string;
|
|
12
|
+
rules: AtomicRule[];
|
|
13
|
+
unknownClasses: string[];
|
|
14
|
+
};
|
|
15
|
+
declare function getAtomicRegistry(): Map<string, AtomicRule>;
|
|
16
|
+
declare function clearAtomicRegistry(): void;
|
|
17
|
+
|
|
18
|
+
export { type AtomicRule, clearAtomicRegistry, generateAtomicCss, getAtomicRegistry, parseAtomicClass, toAtomicClasses };
|
package/dist/atomic.js
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/* tailwind-styled-v4 v5.0.1 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
|
|
4
|
+
|
|
5
|
+
// packages/atomic/src/index.ts
|
|
6
|
+
var REGISTRY = /* @__PURE__ */ new Map();
|
|
7
|
+
var TW_PROPERTY_MAP = {
|
|
8
|
+
p: { prop: "padding", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
9
|
+
px: { prop: "padding-inline", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
10
|
+
py: { prop: "padding-block", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
11
|
+
pt: { prop: "padding-top", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
12
|
+
pb: { prop: "padding-bottom", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
13
|
+
pl: { prop: "padding-left", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
14
|
+
pr: { prop: "padding-right", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
15
|
+
m: { prop: "margin", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
16
|
+
mx: { prop: "margin-inline", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
17
|
+
my: { prop: "margin-block", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
18
|
+
mt: { prop: "margin-top", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
19
|
+
mb: { prop: "margin-bottom", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
20
|
+
ml: { prop: "margin-left", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
21
|
+
mr: { prop: "margin-right", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
22
|
+
gap: { prop: "gap", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
23
|
+
w: { prop: "width", transform: sizeValue },
|
|
24
|
+
h: { prop: "height", transform: sizeValue },
|
|
25
|
+
text: { prop: "font-size", transform: textSize },
|
|
26
|
+
font: { prop: "font-weight", transform: fontWeight },
|
|
27
|
+
leading: { prop: "line-height", transform: leadingValue },
|
|
28
|
+
opacity: { prop: "opacity", transform: (v) => String(Number(v) / 100) },
|
|
29
|
+
z: { prop: "z-index" },
|
|
30
|
+
rounded: { prop: "border-radius", transform: (v) => roundedValue(v) }
|
|
31
|
+
};
|
|
32
|
+
function sizeValue(v) {
|
|
33
|
+
const num = Number(v);
|
|
34
|
+
if (!Number.isNaN(num)) return `${num * 0.25}rem`;
|
|
35
|
+
const special = {
|
|
36
|
+
full: "100%",
|
|
37
|
+
screen: "100vw",
|
|
38
|
+
auto: "auto",
|
|
39
|
+
min: "min-content",
|
|
40
|
+
max: "max-content",
|
|
41
|
+
fit: "fit-content",
|
|
42
|
+
svw: "100svw",
|
|
43
|
+
svh: "100svh"
|
|
44
|
+
};
|
|
45
|
+
return special[v] ?? v;
|
|
46
|
+
}
|
|
47
|
+
function textSize(v) {
|
|
48
|
+
const map = {
|
|
49
|
+
xs: "0.75rem",
|
|
50
|
+
sm: "0.875rem",
|
|
51
|
+
base: "1rem",
|
|
52
|
+
lg: "1.125rem",
|
|
53
|
+
xl: "1.25rem",
|
|
54
|
+
"2xl": "1.5rem",
|
|
55
|
+
"3xl": "1.875rem",
|
|
56
|
+
"4xl": "2.25rem",
|
|
57
|
+
"5xl": "3rem",
|
|
58
|
+
"6xl": "3.75rem",
|
|
59
|
+
"7xl": "4.5rem",
|
|
60
|
+
"8xl": "6rem",
|
|
61
|
+
"9xl": "8rem"
|
|
62
|
+
};
|
|
63
|
+
return map[v] ?? v;
|
|
64
|
+
}
|
|
65
|
+
function fontWeight(v) {
|
|
66
|
+
const map = {
|
|
67
|
+
thin: "100",
|
|
68
|
+
extralight: "200",
|
|
69
|
+
light: "300",
|
|
70
|
+
normal: "400",
|
|
71
|
+
medium: "500",
|
|
72
|
+
semibold: "600",
|
|
73
|
+
bold: "700",
|
|
74
|
+
extrabold: "800",
|
|
75
|
+
black: "900"
|
|
76
|
+
};
|
|
77
|
+
return map[v] ?? v;
|
|
78
|
+
}
|
|
79
|
+
function leadingValue(v) {
|
|
80
|
+
const map = {
|
|
81
|
+
none: "1",
|
|
82
|
+
tight: "1.25",
|
|
83
|
+
snug: "1.375",
|
|
84
|
+
normal: "1.5",
|
|
85
|
+
relaxed: "1.625",
|
|
86
|
+
loose: "2"
|
|
87
|
+
};
|
|
88
|
+
return map[v] ?? v;
|
|
89
|
+
}
|
|
90
|
+
function roundedValue(v) {
|
|
91
|
+
const map = {
|
|
92
|
+
"": "0.25rem",
|
|
93
|
+
sm: "0.125rem",
|
|
94
|
+
md: "0.375rem",
|
|
95
|
+
lg: "0.5rem",
|
|
96
|
+
xl: "0.75rem",
|
|
97
|
+
"2xl": "1rem",
|
|
98
|
+
"3xl": "1.5rem",
|
|
99
|
+
full: "9999px",
|
|
100
|
+
none: "0"
|
|
101
|
+
};
|
|
102
|
+
return map[v] ?? `${v}rem`;
|
|
103
|
+
}
|
|
104
|
+
function sanitizeClassName(cls) {
|
|
105
|
+
return cls.replace(/[/:[\].!%]/g, "_");
|
|
106
|
+
}
|
|
107
|
+
function parseAtomicClass(twClass) {
|
|
108
|
+
if (REGISTRY.has(twClass)) return REGISTRY.get(twClass);
|
|
109
|
+
const colonIdx = twClass.lastIndexOf(":");
|
|
110
|
+
const modifier = colonIdx > -1 ? twClass.slice(0, colonIdx) : void 0;
|
|
111
|
+
const base = colonIdx > -1 ? twClass.slice(colonIdx + 1) : twClass;
|
|
112
|
+
const dashIdx = base.indexOf("-");
|
|
113
|
+
if (dashIdx === -1) return null;
|
|
114
|
+
const prefix = base.slice(0, dashIdx);
|
|
115
|
+
const value = base.slice(dashIdx + 1);
|
|
116
|
+
const mapping = TW_PROPERTY_MAP[prefix];
|
|
117
|
+
if (!mapping) return null;
|
|
118
|
+
const cssValue = mapping.transform ? mapping.transform(value) : value;
|
|
119
|
+
const atomicName = `_tw_${sanitizeClassName(twClass)}`;
|
|
120
|
+
const rule = {
|
|
121
|
+
twClass,
|
|
122
|
+
atomicName,
|
|
123
|
+
property: mapping.prop,
|
|
124
|
+
value: cssValue,
|
|
125
|
+
modifier
|
|
126
|
+
};
|
|
127
|
+
REGISTRY.set(twClass, rule);
|
|
128
|
+
return rule;
|
|
129
|
+
}
|
|
130
|
+
function generateAtomicCss(rules) {
|
|
131
|
+
const lines = [];
|
|
132
|
+
for (const rule of rules) {
|
|
133
|
+
const selector = `.${rule.atomicName}`;
|
|
134
|
+
if (rule.modifier) {
|
|
135
|
+
const breakpoints = {
|
|
136
|
+
sm: "640px",
|
|
137
|
+
md: "768px",
|
|
138
|
+
lg: "1024px",
|
|
139
|
+
xl: "1280px",
|
|
140
|
+
"2xl": "1536px"
|
|
141
|
+
};
|
|
142
|
+
if (breakpoints[rule.modifier]) {
|
|
143
|
+
lines.push(
|
|
144
|
+
`@media (min-width: ${breakpoints[rule.modifier]}) {`,
|
|
145
|
+
` ${selector} { ${rule.property}: ${rule.value}; }`,
|
|
146
|
+
`}`
|
|
147
|
+
);
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
lines.push(`${selector}:${rule.modifier} { ${rule.property}: ${rule.value}; }`);
|
|
151
|
+
} else {
|
|
152
|
+
lines.push(`${selector} { ${rule.property}: ${rule.value}; }`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return lines.join("\n");
|
|
156
|
+
}
|
|
157
|
+
function toAtomicClasses(twClasses) {
|
|
158
|
+
const parts = twClasses.split(/\s+/).filter(Boolean);
|
|
159
|
+
const atomicNames = [];
|
|
160
|
+
const rules = [];
|
|
161
|
+
const unknownClasses = [];
|
|
162
|
+
for (const cls of parts) {
|
|
163
|
+
const rule = parseAtomicClass(cls);
|
|
164
|
+
if (rule) {
|
|
165
|
+
atomicNames.push(rule.atomicName);
|
|
166
|
+
rules.push(rule);
|
|
167
|
+
} else {
|
|
168
|
+
unknownClasses.push(cls);
|
|
169
|
+
atomicNames.push(cls);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return {
|
|
173
|
+
atomicClasses: atomicNames.join(" "),
|
|
174
|
+
rules,
|
|
175
|
+
unknownClasses
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
function getAtomicRegistry() {
|
|
179
|
+
return REGISTRY;
|
|
180
|
+
}
|
|
181
|
+
function clearAtomicRegistry() {
|
|
182
|
+
REGISTRY.clear();
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
exports.clearAtomicRegistry = clearAtomicRegistry;
|
|
186
|
+
exports.generateAtomicCss = generateAtomicCss;
|
|
187
|
+
exports.getAtomicRegistry = getAtomicRegistry;
|
|
188
|
+
exports.parseAtomicClass = parseAtomicClass;
|
|
189
|
+
exports.toAtomicClasses = toAtomicClasses;
|
|
190
|
+
//# sourceMappingURL=atomic.js.map
|
|
191
|
+
//# sourceMappingURL=atomic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../packages/atomic/src/index.ts"],"names":[],"mappings":"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","file":"atomic.js","sourcesContent":["const REGISTRY = new Map<string, AtomicRule>()\n\nexport interface AtomicRule {\n twClass: string\n atomicName: string\n property: string\n value: string\n modifier?: string\n}\n\nconst TW_PROPERTY_MAP: Record<string, { prop: string; transform?: (val: string) => string }> = {\n p: { prop: \"padding\", transform: (v) => `${Number(v) * 0.25}rem` },\n px: { prop: \"padding-inline\", transform: (v) => `${Number(v) * 0.25}rem` },\n py: { prop: \"padding-block\", transform: (v) => `${Number(v) * 0.25}rem` },\n pt: { prop: \"padding-top\", transform: (v) => `${Number(v) * 0.25}rem` },\n pb: { prop: \"padding-bottom\", transform: (v) => `${Number(v) * 0.25}rem` },\n pl: { prop: \"padding-left\", transform: (v) => `${Number(v) * 0.25}rem` },\n pr: { prop: \"padding-right\", transform: (v) => `${Number(v) * 0.25}rem` },\n m: { prop: \"margin\", transform: (v) => `${Number(v) * 0.25}rem` },\n mx: { prop: \"margin-inline\", transform: (v) => `${Number(v) * 0.25}rem` },\n my: { prop: \"margin-block\", transform: (v) => `${Number(v) * 0.25}rem` },\n mt: { prop: \"margin-top\", transform: (v) => `${Number(v) * 0.25}rem` },\n mb: { prop: \"margin-bottom\", transform: (v) => `${Number(v) * 0.25}rem` },\n ml: { prop: \"margin-left\", transform: (v) => `${Number(v) * 0.25}rem` },\n mr: { prop: \"margin-right\", transform: (v) => `${Number(v) * 0.25}rem` },\n gap: { prop: \"gap\", transform: (v) => `${Number(v) * 0.25}rem` },\n w: { prop: \"width\", transform: sizeValue },\n h: { prop: \"height\", transform: sizeValue },\n text: { prop: \"font-size\", transform: textSize },\n font: { prop: \"font-weight\", transform: fontWeight },\n leading: { prop: \"line-height\", transform: leadingValue },\n opacity: { prop: \"opacity\", transform: (v) => String(Number(v) / 100) },\n z: { prop: \"z-index\" },\n rounded: { prop: \"border-radius\", transform: (v) => roundedValue(v) },\n}\n\nfunction sizeValue(v: string): string {\n const num = Number(v)\n if (!Number.isNaN(num)) return `${num * 0.25}rem`\n const special: Record<string, string> = {\n full: \"100%\",\n screen: \"100vw\",\n auto: \"auto\",\n min: \"min-content\",\n max: \"max-content\",\n fit: \"fit-content\",\n svw: \"100svw\",\n svh: \"100svh\",\n }\n return special[v] ?? v\n}\n\nfunction textSize(v: string): string {\n const map: Record<string, string> = {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n }\n return map[v] ?? v\n}\n\nfunction fontWeight(v: string): string {\n const map: Record<string, string> = {\n thin: \"100\",\n extralight: \"200\",\n light: \"300\",\n normal: \"400\",\n medium: \"500\",\n semibold: \"600\",\n bold: \"700\",\n extrabold: \"800\",\n black: \"900\",\n }\n return map[v] ?? v\n}\n\nfunction leadingValue(v: string): string {\n const map: Record<string, string> = {\n none: \"1\",\n tight: \"1.25\",\n snug: \"1.375\",\n normal: \"1.5\",\n relaxed: \"1.625\",\n loose: \"2\",\n }\n return map[v] ?? v\n}\n\nfunction roundedValue(v: string): string {\n const map: Record<string, string> = {\n \"\": \"0.25rem\",\n sm: \"0.125rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n \"2xl\": \"1rem\",\n \"3xl\": \"1.5rem\",\n full: \"9999px\",\n none: \"0\",\n }\n return map[v] ?? `${v}rem`\n}\n\nfunction sanitizeClassName(cls: string): string {\n return cls.replace(/[/:[\\].!%]/g, \"_\")\n}\n\nexport function parseAtomicClass(twClass: string): AtomicRule | null {\n if (REGISTRY.has(twClass)) return REGISTRY.get(twClass)!\n\n const colonIdx = twClass.lastIndexOf(\":\")\n const modifier = colonIdx > -1 ? twClass.slice(0, colonIdx) : undefined\n const base = colonIdx > -1 ? twClass.slice(colonIdx + 1) : twClass\n\n const dashIdx = base.indexOf(\"-\")\n if (dashIdx === -1) return null\n\n const prefix = base.slice(0, dashIdx)\n const value = base.slice(dashIdx + 1)\n\n const mapping = TW_PROPERTY_MAP[prefix]\n if (!mapping) return null\n\n const cssValue = mapping.transform ? mapping.transform(value) : value\n const atomicName = `_tw_${sanitizeClassName(twClass)}`\n\n const rule: AtomicRule = {\n twClass,\n atomicName,\n property: mapping.prop,\n value: cssValue,\n modifier,\n }\n\n REGISTRY.set(twClass, rule)\n return rule\n}\n\nexport function generateAtomicCss(rules: AtomicRule[]): string {\n const lines: string[] = []\n\n for (const rule of rules) {\n const selector = `.${rule.atomicName}`\n\n if (rule.modifier) {\n const breakpoints: Record<string, string> = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n }\n if (breakpoints[rule.modifier]) {\n lines.push(\n `@media (min-width: ${breakpoints[rule.modifier]}) {`,\n ` ${selector} { ${rule.property}: ${rule.value}; }`,\n `}`\n )\n continue\n }\n lines.push(`${selector}:${rule.modifier} { ${rule.property}: ${rule.value}; }`)\n } else {\n lines.push(`${selector} { ${rule.property}: ${rule.value}; }`)\n }\n }\n\n return lines.join(\"\\n\")\n}\n\nexport function toAtomicClasses(twClasses: string): {\n atomicClasses: string\n rules: AtomicRule[]\n unknownClasses: string[]\n} {\n const parts = twClasses.split(/\\s+/).filter(Boolean)\n const atomicNames: string[] = []\n const rules: AtomicRule[] = []\n const unknownClasses: string[] = []\n\n for (const cls of parts) {\n const rule = parseAtomicClass(cls)\n if (rule) {\n atomicNames.push(rule.atomicName)\n rules.push(rule)\n } else {\n unknownClasses.push(cls)\n atomicNames.push(cls)\n }\n }\n\n return {\n atomicClasses: atomicNames.join(\" \"),\n rules,\n unknownClasses,\n }\n}\n\nexport function getAtomicRegistry(): Map<string, AtomicRule> {\n return REGISTRY\n}\n\nexport function clearAtomicRegistry(): void {\n REGISTRY.clear()\n}\n"]}
|
package/dist/atomic.mjs
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/* tailwind-styled-v4 v5.0.1 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
|
|
2
|
+
|
|
3
|
+
// packages/atomic/src/index.ts
|
|
4
|
+
var REGISTRY = /* @__PURE__ */ new Map();
|
|
5
|
+
var TW_PROPERTY_MAP = {
|
|
6
|
+
p: { prop: "padding", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
7
|
+
px: { prop: "padding-inline", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
8
|
+
py: { prop: "padding-block", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
9
|
+
pt: { prop: "padding-top", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
10
|
+
pb: { prop: "padding-bottom", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
11
|
+
pl: { prop: "padding-left", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
12
|
+
pr: { prop: "padding-right", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
13
|
+
m: { prop: "margin", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
14
|
+
mx: { prop: "margin-inline", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
15
|
+
my: { prop: "margin-block", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
16
|
+
mt: { prop: "margin-top", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
17
|
+
mb: { prop: "margin-bottom", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
18
|
+
ml: { prop: "margin-left", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
19
|
+
mr: { prop: "margin-right", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
20
|
+
gap: { prop: "gap", transform: (v) => `${Number(v) * 0.25}rem` },
|
|
21
|
+
w: { prop: "width", transform: sizeValue },
|
|
22
|
+
h: { prop: "height", transform: sizeValue },
|
|
23
|
+
text: { prop: "font-size", transform: textSize },
|
|
24
|
+
font: { prop: "font-weight", transform: fontWeight },
|
|
25
|
+
leading: { prop: "line-height", transform: leadingValue },
|
|
26
|
+
opacity: { prop: "opacity", transform: (v) => String(Number(v) / 100) },
|
|
27
|
+
z: { prop: "z-index" },
|
|
28
|
+
rounded: { prop: "border-radius", transform: (v) => roundedValue(v) }
|
|
29
|
+
};
|
|
30
|
+
function sizeValue(v) {
|
|
31
|
+
const num = Number(v);
|
|
32
|
+
if (!Number.isNaN(num)) return `${num * 0.25}rem`;
|
|
33
|
+
const special = {
|
|
34
|
+
full: "100%",
|
|
35
|
+
screen: "100vw",
|
|
36
|
+
auto: "auto",
|
|
37
|
+
min: "min-content",
|
|
38
|
+
max: "max-content",
|
|
39
|
+
fit: "fit-content",
|
|
40
|
+
svw: "100svw",
|
|
41
|
+
svh: "100svh"
|
|
42
|
+
};
|
|
43
|
+
return special[v] ?? v;
|
|
44
|
+
}
|
|
45
|
+
function textSize(v) {
|
|
46
|
+
const map = {
|
|
47
|
+
xs: "0.75rem",
|
|
48
|
+
sm: "0.875rem",
|
|
49
|
+
base: "1rem",
|
|
50
|
+
lg: "1.125rem",
|
|
51
|
+
xl: "1.25rem",
|
|
52
|
+
"2xl": "1.5rem",
|
|
53
|
+
"3xl": "1.875rem",
|
|
54
|
+
"4xl": "2.25rem",
|
|
55
|
+
"5xl": "3rem",
|
|
56
|
+
"6xl": "3.75rem",
|
|
57
|
+
"7xl": "4.5rem",
|
|
58
|
+
"8xl": "6rem",
|
|
59
|
+
"9xl": "8rem"
|
|
60
|
+
};
|
|
61
|
+
return map[v] ?? v;
|
|
62
|
+
}
|
|
63
|
+
function fontWeight(v) {
|
|
64
|
+
const map = {
|
|
65
|
+
thin: "100",
|
|
66
|
+
extralight: "200",
|
|
67
|
+
light: "300",
|
|
68
|
+
normal: "400",
|
|
69
|
+
medium: "500",
|
|
70
|
+
semibold: "600",
|
|
71
|
+
bold: "700",
|
|
72
|
+
extrabold: "800",
|
|
73
|
+
black: "900"
|
|
74
|
+
};
|
|
75
|
+
return map[v] ?? v;
|
|
76
|
+
}
|
|
77
|
+
function leadingValue(v) {
|
|
78
|
+
const map = {
|
|
79
|
+
none: "1",
|
|
80
|
+
tight: "1.25",
|
|
81
|
+
snug: "1.375",
|
|
82
|
+
normal: "1.5",
|
|
83
|
+
relaxed: "1.625",
|
|
84
|
+
loose: "2"
|
|
85
|
+
};
|
|
86
|
+
return map[v] ?? v;
|
|
87
|
+
}
|
|
88
|
+
function roundedValue(v) {
|
|
89
|
+
const map = {
|
|
90
|
+
"": "0.25rem",
|
|
91
|
+
sm: "0.125rem",
|
|
92
|
+
md: "0.375rem",
|
|
93
|
+
lg: "0.5rem",
|
|
94
|
+
xl: "0.75rem",
|
|
95
|
+
"2xl": "1rem",
|
|
96
|
+
"3xl": "1.5rem",
|
|
97
|
+
full: "9999px",
|
|
98
|
+
none: "0"
|
|
99
|
+
};
|
|
100
|
+
return map[v] ?? `${v}rem`;
|
|
101
|
+
}
|
|
102
|
+
function sanitizeClassName(cls) {
|
|
103
|
+
return cls.replace(/[/:[\].!%]/g, "_");
|
|
104
|
+
}
|
|
105
|
+
function parseAtomicClass(twClass) {
|
|
106
|
+
if (REGISTRY.has(twClass)) return REGISTRY.get(twClass);
|
|
107
|
+
const colonIdx = twClass.lastIndexOf(":");
|
|
108
|
+
const modifier = colonIdx > -1 ? twClass.slice(0, colonIdx) : void 0;
|
|
109
|
+
const base = colonIdx > -1 ? twClass.slice(colonIdx + 1) : twClass;
|
|
110
|
+
const dashIdx = base.indexOf("-");
|
|
111
|
+
if (dashIdx === -1) return null;
|
|
112
|
+
const prefix = base.slice(0, dashIdx);
|
|
113
|
+
const value = base.slice(dashIdx + 1);
|
|
114
|
+
const mapping = TW_PROPERTY_MAP[prefix];
|
|
115
|
+
if (!mapping) return null;
|
|
116
|
+
const cssValue = mapping.transform ? mapping.transform(value) : value;
|
|
117
|
+
const atomicName = `_tw_${sanitizeClassName(twClass)}`;
|
|
118
|
+
const rule = {
|
|
119
|
+
twClass,
|
|
120
|
+
atomicName,
|
|
121
|
+
property: mapping.prop,
|
|
122
|
+
value: cssValue,
|
|
123
|
+
modifier
|
|
124
|
+
};
|
|
125
|
+
REGISTRY.set(twClass, rule);
|
|
126
|
+
return rule;
|
|
127
|
+
}
|
|
128
|
+
function generateAtomicCss(rules) {
|
|
129
|
+
const lines = [];
|
|
130
|
+
for (const rule of rules) {
|
|
131
|
+
const selector = `.${rule.atomicName}`;
|
|
132
|
+
if (rule.modifier) {
|
|
133
|
+
const breakpoints = {
|
|
134
|
+
sm: "640px",
|
|
135
|
+
md: "768px",
|
|
136
|
+
lg: "1024px",
|
|
137
|
+
xl: "1280px",
|
|
138
|
+
"2xl": "1536px"
|
|
139
|
+
};
|
|
140
|
+
if (breakpoints[rule.modifier]) {
|
|
141
|
+
lines.push(
|
|
142
|
+
`@media (min-width: ${breakpoints[rule.modifier]}) {`,
|
|
143
|
+
` ${selector} { ${rule.property}: ${rule.value}; }`,
|
|
144
|
+
`}`
|
|
145
|
+
);
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
lines.push(`${selector}:${rule.modifier} { ${rule.property}: ${rule.value}; }`);
|
|
149
|
+
} else {
|
|
150
|
+
lines.push(`${selector} { ${rule.property}: ${rule.value}; }`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return lines.join("\n");
|
|
154
|
+
}
|
|
155
|
+
function toAtomicClasses(twClasses) {
|
|
156
|
+
const parts = twClasses.split(/\s+/).filter(Boolean);
|
|
157
|
+
const atomicNames = [];
|
|
158
|
+
const rules = [];
|
|
159
|
+
const unknownClasses = [];
|
|
160
|
+
for (const cls of parts) {
|
|
161
|
+
const rule = parseAtomicClass(cls);
|
|
162
|
+
if (rule) {
|
|
163
|
+
atomicNames.push(rule.atomicName);
|
|
164
|
+
rules.push(rule);
|
|
165
|
+
} else {
|
|
166
|
+
unknownClasses.push(cls);
|
|
167
|
+
atomicNames.push(cls);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
atomicClasses: atomicNames.join(" "),
|
|
172
|
+
rules,
|
|
173
|
+
unknownClasses
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
function getAtomicRegistry() {
|
|
177
|
+
return REGISTRY;
|
|
178
|
+
}
|
|
179
|
+
function clearAtomicRegistry() {
|
|
180
|
+
REGISTRY.clear();
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export { clearAtomicRegistry, generateAtomicCss, getAtomicRegistry, parseAtomicClass, toAtomicClasses };
|
|
184
|
+
//# sourceMappingURL=atomic.mjs.map
|
|
185
|
+
//# sourceMappingURL=atomic.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../packages/atomic/src/index.ts"],"names":[],"mappings":"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","file":"atomic.mjs","sourcesContent":["const REGISTRY = new Map<string, AtomicRule>()\n\nexport interface AtomicRule {\n twClass: string\n atomicName: string\n property: string\n value: string\n modifier?: string\n}\n\nconst TW_PROPERTY_MAP: Record<string, { prop: string; transform?: (val: string) => string }> = {\n p: { prop: \"padding\", transform: (v) => `${Number(v) * 0.25}rem` },\n px: { prop: \"padding-inline\", transform: (v) => `${Number(v) * 0.25}rem` },\n py: { prop: \"padding-block\", transform: (v) => `${Number(v) * 0.25}rem` },\n pt: { prop: \"padding-top\", transform: (v) => `${Number(v) * 0.25}rem` },\n pb: { prop: \"padding-bottom\", transform: (v) => `${Number(v) * 0.25}rem` },\n pl: { prop: \"padding-left\", transform: (v) => `${Number(v) * 0.25}rem` },\n pr: { prop: \"padding-right\", transform: (v) => `${Number(v) * 0.25}rem` },\n m: { prop: \"margin\", transform: (v) => `${Number(v) * 0.25}rem` },\n mx: { prop: \"margin-inline\", transform: (v) => `${Number(v) * 0.25}rem` },\n my: { prop: \"margin-block\", transform: (v) => `${Number(v) * 0.25}rem` },\n mt: { prop: \"margin-top\", transform: (v) => `${Number(v) * 0.25}rem` },\n mb: { prop: \"margin-bottom\", transform: (v) => `${Number(v) * 0.25}rem` },\n ml: { prop: \"margin-left\", transform: (v) => `${Number(v) * 0.25}rem` },\n mr: { prop: \"margin-right\", transform: (v) => `${Number(v) * 0.25}rem` },\n gap: { prop: \"gap\", transform: (v) => `${Number(v) * 0.25}rem` },\n w: { prop: \"width\", transform: sizeValue },\n h: { prop: \"height\", transform: sizeValue },\n text: { prop: \"font-size\", transform: textSize },\n font: { prop: \"font-weight\", transform: fontWeight },\n leading: { prop: \"line-height\", transform: leadingValue },\n opacity: { prop: \"opacity\", transform: (v) => String(Number(v) / 100) },\n z: { prop: \"z-index\" },\n rounded: { prop: \"border-radius\", transform: (v) => roundedValue(v) },\n}\n\nfunction sizeValue(v: string): string {\n const num = Number(v)\n if (!Number.isNaN(num)) return `${num * 0.25}rem`\n const special: Record<string, string> = {\n full: \"100%\",\n screen: \"100vw\",\n auto: \"auto\",\n min: \"min-content\",\n max: \"max-content\",\n fit: \"fit-content\",\n svw: \"100svw\",\n svh: \"100svh\",\n }\n return special[v] ?? v\n}\n\nfunction textSize(v: string): string {\n const map: Record<string, string> = {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n }\n return map[v] ?? v\n}\n\nfunction fontWeight(v: string): string {\n const map: Record<string, string> = {\n thin: \"100\",\n extralight: \"200\",\n light: \"300\",\n normal: \"400\",\n medium: \"500\",\n semibold: \"600\",\n bold: \"700\",\n extrabold: \"800\",\n black: \"900\",\n }\n return map[v] ?? v\n}\n\nfunction leadingValue(v: string): string {\n const map: Record<string, string> = {\n none: \"1\",\n tight: \"1.25\",\n snug: \"1.375\",\n normal: \"1.5\",\n relaxed: \"1.625\",\n loose: \"2\",\n }\n return map[v] ?? v\n}\n\nfunction roundedValue(v: string): string {\n const map: Record<string, string> = {\n \"\": \"0.25rem\",\n sm: \"0.125rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n \"2xl\": \"1rem\",\n \"3xl\": \"1.5rem\",\n full: \"9999px\",\n none: \"0\",\n }\n return map[v] ?? `${v}rem`\n}\n\nfunction sanitizeClassName(cls: string): string {\n return cls.replace(/[/:[\\].!%]/g, \"_\")\n}\n\nexport function parseAtomicClass(twClass: string): AtomicRule | null {\n if (REGISTRY.has(twClass)) return REGISTRY.get(twClass)!\n\n const colonIdx = twClass.lastIndexOf(\":\")\n const modifier = colonIdx > -1 ? twClass.slice(0, colonIdx) : undefined\n const base = colonIdx > -1 ? twClass.slice(colonIdx + 1) : twClass\n\n const dashIdx = base.indexOf(\"-\")\n if (dashIdx === -1) return null\n\n const prefix = base.slice(0, dashIdx)\n const value = base.slice(dashIdx + 1)\n\n const mapping = TW_PROPERTY_MAP[prefix]\n if (!mapping) return null\n\n const cssValue = mapping.transform ? mapping.transform(value) : value\n const atomicName = `_tw_${sanitizeClassName(twClass)}`\n\n const rule: AtomicRule = {\n twClass,\n atomicName,\n property: mapping.prop,\n value: cssValue,\n modifier,\n }\n\n REGISTRY.set(twClass, rule)\n return rule\n}\n\nexport function generateAtomicCss(rules: AtomicRule[]): string {\n const lines: string[] = []\n\n for (const rule of rules) {\n const selector = `.${rule.atomicName}`\n\n if (rule.modifier) {\n const breakpoints: Record<string, string> = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n }\n if (breakpoints[rule.modifier]) {\n lines.push(\n `@media (min-width: ${breakpoints[rule.modifier]}) {`,\n ` ${selector} { ${rule.property}: ${rule.value}; }`,\n `}`\n )\n continue\n }\n lines.push(`${selector}:${rule.modifier} { ${rule.property}: ${rule.value}; }`)\n } else {\n lines.push(`${selector} { ${rule.property}: ${rule.value}; }`)\n }\n }\n\n return lines.join(\"\\n\")\n}\n\nexport function toAtomicClasses(twClasses: string): {\n atomicClasses: string\n rules: AtomicRule[]\n unknownClasses: string[]\n} {\n const parts = twClasses.split(/\\s+/).filter(Boolean)\n const atomicNames: string[] = []\n const rules: AtomicRule[] = []\n const unknownClasses: string[] = []\n\n for (const cls of parts) {\n const rule = parseAtomicClass(cls)\n if (rule) {\n atomicNames.push(rule.atomicName)\n rules.push(rule)\n } else {\n unknownClasses.push(cls)\n atomicNames.push(cls)\n }\n }\n\n return {\n atomicClasses: atomicNames.join(\" \"),\n rules,\n unknownClasses,\n }\n}\n\nexport function getAtomicRegistry(): Map<string, AtomicRule> {\n return REGISTRY\n}\n\nexport function clearAtomicRegistry(): void {\n REGISTRY.clear()\n}\n"]}
|
package/dist/cli.d.mts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#!/usr/bin/env node
|