tailwind-styled-v4 5.0.0 → 5.0.1

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 (177) hide show
  1. package/CHANGELOG.md +398 -0
  2. package/LICENSE +21 -0
  3. package/README.md +532 -0
  4. package/dist/analyzer.d.mts +114 -0
  5. package/dist/analyzer.d.ts +114 -0
  6. package/dist/analyzer.js +1555 -0
  7. package/dist/analyzer.js.map +1 -0
  8. package/dist/analyzer.mjs +1544 -0
  9. package/dist/analyzer.mjs.map +1 -0
  10. package/dist/{animate.d.cts → animate.d.mts} +3 -30
  11. package/dist/animate.d.ts +3 -30
  12. package/dist/animate.js +149 -99
  13. package/dist/animate.js.map +1 -1
  14. package/dist/{animate.cjs → animate.mjs} +130 -119
  15. package/dist/animate.mjs.map +1 -0
  16. package/dist/atomic.d.mts +18 -0
  17. package/dist/atomic.d.ts +18 -0
  18. package/dist/atomic.js +191 -0
  19. package/dist/atomic.js.map +1 -0
  20. package/dist/atomic.mjs +185 -0
  21. package/dist/atomic.mjs.map +1 -0
  22. package/dist/cli.d.mts +1 -0
  23. package/dist/cli.d.ts +1 -0
  24. package/dist/cli.js +6063 -0
  25. package/dist/cli.js.map +1 -0
  26. package/dist/cli.mjs +6053 -0
  27. package/dist/cli.mjs.map +1 -0
  28. package/dist/compiler.d.mts +1009 -0
  29. package/dist/compiler.d.ts +1009 -0
  30. package/dist/compiler.js +4518 -0
  31. package/dist/compiler.js.map +1 -0
  32. package/dist/compiler.mjs +4443 -0
  33. package/dist/compiler.mjs.map +1 -0
  34. package/dist/dashboard.d.mts +272 -0
  35. package/dist/dashboard.d.ts +272 -0
  36. package/dist/dashboard.js +249 -0
  37. package/dist/dashboard.js.map +1 -0
  38. package/dist/dashboard.mjs +239 -0
  39. package/dist/dashboard.mjs.map +1 -0
  40. package/dist/devtools.js +170 -157
  41. package/dist/devtools.js.map +1 -1
  42. package/dist/{devtools.cjs → devtools.mjs} +165 -166
  43. package/dist/devtools.mjs.map +1 -0
  44. package/dist/engine.d.mts +84 -0
  45. package/dist/engine.d.ts +84 -0
  46. package/dist/engine.js +3014 -0
  47. package/dist/engine.js.map +1 -0
  48. package/dist/engine.mjs +3005 -0
  49. package/dist/engine.mjs.map +1 -0
  50. package/dist/{index.d.cts → index.d.mts} +2 -2
  51. package/dist/index.d.ts +2 -2
  52. package/dist/index.js +945 -36
  53. package/dist/index.js.map +1 -1
  54. package/dist/{index.cjs → index.mjs} +899 -90
  55. package/dist/index.mjs.map +1 -0
  56. package/dist/liveTokenEngine-DYN3Zale.d.mts +34 -0
  57. package/dist/liveTokenEngine-DYN3Zale.d.ts +34 -0
  58. package/dist/{next.d.cts → next.d.mts} +2 -1
  59. package/dist/next.d.ts +2 -1
  60. package/dist/next.js +6853 -35
  61. package/dist/next.js.map +1 -1
  62. package/dist/next.mjs +7050 -0
  63. package/dist/next.mjs.map +1 -0
  64. package/dist/plugin.d.mts +90 -0
  65. package/dist/plugin.d.ts +90 -0
  66. package/dist/plugin.js +185 -0
  67. package/dist/plugin.js.map +1 -0
  68. package/dist/plugin.mjs +174 -0
  69. package/dist/plugin.mjs.map +1 -0
  70. package/dist/pluginRegistry.d.mts +83 -0
  71. package/dist/pluginRegistry.d.ts +83 -0
  72. package/dist/pluginRegistry.js +303 -0
  73. package/dist/pluginRegistry.js.map +1 -0
  74. package/dist/pluginRegistry.mjs +298 -0
  75. package/dist/pluginRegistry.mjs.map +1 -0
  76. package/dist/preset.js +9 -4
  77. package/dist/preset.js.map +1 -1
  78. package/dist/{preset.cjs → preset.mjs} +5 -14
  79. package/dist/preset.mjs.map +1 -0
  80. package/dist/rspack.d.mts +33 -0
  81. package/dist/rspack.d.ts +33 -0
  82. package/dist/rspack.js +55 -0
  83. package/dist/rspack.js.map +1 -0
  84. package/dist/rspack.mjs +45 -0
  85. package/dist/rspack.mjs.map +1 -0
  86. package/dist/runtime.d.mts +62 -0
  87. package/dist/runtime.d.ts +62 -0
  88. package/dist/runtime.js +207 -0
  89. package/dist/runtime.js.map +1 -0
  90. package/dist/runtime.mjs +188 -0
  91. package/dist/runtime.mjs.map +1 -0
  92. package/dist/runtimeCss.d.mts +65 -0
  93. package/dist/runtimeCss.d.ts +65 -0
  94. package/dist/{css.cjs → runtimeCss.js} +71 -4
  95. package/dist/runtimeCss.js.map +1 -0
  96. package/dist/{css.js → runtimeCss.mjs} +66 -5
  97. package/dist/runtimeCss.mjs.map +1 -0
  98. package/dist/scanner.d.mts +25 -0
  99. package/dist/scanner.d.ts +25 -0
  100. package/dist/scanner.js +717 -0
  101. package/dist/scanner.js.map +1 -0
  102. package/dist/scanner.mjs +703 -0
  103. package/dist/scanner.mjs.map +1 -0
  104. package/dist/shared.d.mts +85 -0
  105. package/dist/shared.d.ts +85 -0
  106. package/dist/shared.js +255 -0
  107. package/dist/shared.js.map +1 -0
  108. package/dist/shared.mjs +233 -0
  109. package/dist/shared.mjs.map +1 -0
  110. package/dist/storybookAddon.d.mts +108 -0
  111. package/dist/storybookAddon.d.ts +108 -0
  112. package/dist/storybookAddon.js +95 -0
  113. package/dist/storybookAddon.js.map +1 -0
  114. package/dist/storybookAddon.mjs +88 -0
  115. package/dist/storybookAddon.mjs.map +1 -0
  116. package/dist/svelte.d.mts +114 -0
  117. package/dist/svelte.d.ts +114 -0
  118. package/dist/svelte.js +67 -0
  119. package/dist/svelte.js.map +1 -0
  120. package/dist/svelte.mjs +59 -0
  121. package/dist/svelte.mjs.map +1 -0
  122. package/dist/testing.d.mts +185 -0
  123. package/dist/testing.d.ts +185 -0
  124. package/dist/testing.js +173 -0
  125. package/dist/testing.js.map +1 -0
  126. package/dist/testing.mjs +158 -0
  127. package/dist/testing.mjs.map +1 -0
  128. package/dist/theme.d.mts +188 -0
  129. package/dist/theme.d.ts +188 -0
  130. package/dist/theme.js +334 -0
  131. package/dist/theme.js.map +1 -0
  132. package/dist/theme.mjs +311 -0
  133. package/dist/theme.mjs.map +1 -0
  134. package/dist/types-DXr2PmGP.d.mts +31 -0
  135. package/dist/types-DXr2PmGP.d.ts +31 -0
  136. package/dist/vite.js +4181 -16
  137. package/dist/vite.js.map +1 -1
  138. package/dist/vite.mjs +4281 -0
  139. package/dist/vite.mjs.map +1 -0
  140. package/dist/vue.d.mts +89 -0
  141. package/dist/vue.d.ts +89 -0
  142. package/dist/vue.js +104 -0
  143. package/dist/vue.js.map +1 -0
  144. package/dist/vue.mjs +96 -0
  145. package/dist/vue.mjs.map +1 -0
  146. package/package.json +168 -65
  147. package/dist/animate.cjs.map +0 -1
  148. package/dist/chunk-VZEJV27B.js +0 -11
  149. package/dist/chunk-VZEJV27B.js.map +0 -1
  150. package/dist/chunk-Y5D3E72P.cjs +0 -13
  151. package/dist/chunk-Y5D3E72P.cjs.map +0 -1
  152. package/dist/css.cjs.map +0 -1
  153. package/dist/css.d.cts +0 -30
  154. package/dist/css.d.ts +0 -30
  155. package/dist/css.js.map +0 -1
  156. package/dist/devtools.cjs.map +0 -1
  157. package/dist/index.cjs.map +0 -1
  158. package/dist/next.cjs +0 -248
  159. package/dist/next.cjs.map +0 -1
  160. package/dist/preset.cjs.map +0 -1
  161. package/dist/turbopackLoader.cjs +0 -37
  162. package/dist/turbopackLoader.cjs.map +0 -1
  163. package/dist/turbopackLoader.d.cts +0 -12
  164. package/dist/turbopackLoader.d.ts +0 -12
  165. package/dist/turbopackLoader.js +0 -35
  166. package/dist/turbopackLoader.js.map +0 -1
  167. package/dist/vite.cjs +0 -138
  168. package/dist/vite.cjs.map +0 -1
  169. package/dist/webpackLoader.cjs +0 -51
  170. package/dist/webpackLoader.cjs.map +0 -1
  171. package/dist/webpackLoader.d.cts +0 -17
  172. package/dist/webpackLoader.d.ts +0 -17
  173. package/dist/webpackLoader.js +0 -49
  174. package/dist/webpackLoader.js.map +0 -1
  175. /package/dist/{devtools.d.cts → devtools.d.mts} +0 -0
  176. /package/dist/{preset.d.cts → preset.d.mts} +0 -0
  177. /package/dist/{vite.d.cts → vite.d.mts} +0 -0
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"]}
@@ -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