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/next.cjs DELETED
@@ -1,248 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkY5D3E72P_cjs = require('./chunk-Y5D3E72P.cjs');
4
- var fs = require('fs');
5
- var path = require('path');
6
-
7
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
-
9
- var fs__default = /*#__PURE__*/_interopDefault(fs);
10
- var path__default = /*#__PURE__*/_interopDefault(path);
11
-
12
- /* tailwind-styled-v4 v4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
13
- var LOADER_PATH = chunkY5D3E72P_cjs.__require.resolve("./turbopackLoader");
14
- var WEBPACK_LOADER_PATH = chunkY5D3E72P_cjs.__require.resolve("./webpackLoader");
15
- function warnDeprecated(options, key, message) {
16
- if (options[key] !== void 0) {
17
- console.warn(`[tailwind-styled-v4] Warning: '${key}' is deprecated in v5. ${message}`);
18
- }
19
- }
20
- function withTailwindStyled(opts = {}) {
21
- return (nextConfig = {}) => {
22
- const cwd = process.cwd();
23
- const isDev = process.env.NODE_ENV !== "production";
24
- warnDeprecated(opts, "mode", "Only zero-runtime is supported in v5.");
25
- warnDeprecated(opts, "atomic", "Use @tailwind-styled/atomic package instead.");
26
- warnDeprecated(opts, "staticVariants", "Handled automatically by the engine.");
27
- warnDeprecated(opts, "deadStyleElimination", "Use engine with analyze: true instead.");
28
- warnDeprecated(opts, "incremental", "Handled internally by the engine.");
29
- warnDeprecated(opts, "styleBuckets", "Handled internally by the engine.");
30
- warnDeprecated(opts, "incrementalVerbose", "Handled internally by the engine.");
31
- const hasReactCompiler = nextConfig.reactCompiler === true || nextConfig.experimental?.reactCompiler === true;
32
- if (hasReactCompiler && isDev) {
33
- console.log("[tailwind-styled-v4] React Compiler detected \u2192 hoist disabled");
34
- }
35
- const {
36
- scanDirs = ["src"],
37
- safelistOutput = "src/app/__tw-safelist.css",
38
- addDataAttr = isDev,
39
- autoClientBoundary = true,
40
- hoist = !hasReactCompiler,
41
- routeCssDir = path__default.default.join(cwd, ".next", "static", "css", "tw"),
42
- zeroConfig = true,
43
- plugins = [],
44
- devtools = isDev
45
- } = opts;
46
- const routeCss = opts.routeCss !== void 0 ? opts.routeCss : !isDev;
47
- const devManifest = opts.devManifest !== void 0 ? opts.devManifest : isDev;
48
- const devManifestRewrites = devManifest && isDev ? [
49
- {
50
- source: "/__tw/css-manifest.json",
51
- destination: "/.next/static/css/tw/css-manifest.json"
52
- },
53
- { source: "/__tw/:path*.css", destination: "/.next/static/css/tw/:path*.css" }
54
- ] : [];
55
- if (zeroConfig) {
56
- try {
57
- const { bootstrapZeroConfig } = chunkY5D3E72P_cjs.__require("@tailwind-styled/compiler");
58
- bootstrapZeroConfig(cwd);
59
- } catch {
60
- }
61
- }
62
- const safelistAbsPath = path__default.default.isAbsolute(safelistOutput) ? safelistOutput : path__default.default.resolve(cwd, safelistOutput);
63
- if (!fs__default.default.existsSync(safelistAbsPath)) {
64
- try {
65
- fs__default.default.mkdirSync(path__default.default.dirname(safelistAbsPath), { recursive: true });
66
- fs__default.default.writeFileSync(
67
- safelistAbsPath,
68
- "/* Auto-generated by tailwind-styled-v4 \u2014 DO NOT EDIT */\n"
69
- );
70
- } catch {
71
- }
72
- }
73
- if (plugins.length > 0) {
74
- try {
75
- const { use } = chunkY5D3E72P_cjs.__require("@tailwind-styled/plugin");
76
- for (const plugin of plugins) use(plugin);
77
- console.log(
78
- `[tailwind-styled-v4] ${plugins.length} plugin(s): ${plugins.map((p) => p.name).join(", ")}`
79
- );
80
- } catch (e) {
81
- console.warn("[tailwind-styled-v4] Plugin init failed:", e);
82
- }
83
- }
84
- const loaderOpts = {
85
- addDataAttr: addDataAttr ? "true" : "false",
86
- autoClientBoundary: autoClientBoundary ? "true" : "false",
87
- hoist: hoist ? "true" : "false"
88
- };
89
- return {
90
- ...nextConfig,
91
- // Dev mode rewrites for /__tw/ manifest serving
92
- ...devManifestRewrites.length > 0 ? {
93
- async rewrites() {
94
- const existing = typeof nextConfig.rewrites === "function" ? await nextConfig.rewrites() : nextConfig.rewrites ?? [];
95
- const {
96
- beforeFiles = [],
97
- afterFiles = [],
98
- fallback = []
99
- } = Array.isArray(existing) ? { beforeFiles: existing } : existing;
100
- return { beforeFiles: [...devManifestRewrites, ...beforeFiles], afterFiles, fallback };
101
- }
102
- } : {},
103
- experimental: {
104
- ...nextConfig.experimental
105
- },
106
- // Turbopack rules
107
- turbopack: {
108
- ...nextConfig.turbopack,
109
- rules: {
110
- ...Object.fromEntries(
111
- scanDirs.flatMap((dir) => [
112
- [
113
- `{./${dir},./app,./pages,./components}/**/*.tsx`,
114
- {
115
- loaders: [{ loader: LOADER_PATH, options: loaderOpts }]
116
- }
117
- ],
118
- [
119
- `{./${dir},./app,./pages,./components}/**/*.ts`,
120
- {
121
- loaders: [{ loader: LOADER_PATH, options: loaderOpts }]
122
- }
123
- ]
124
- ])
125
- ),
126
- ...nextConfig.turbopack?.rules
127
- }
128
- },
129
- webpack(webpackConfig, webpackOpts) {
130
- const alreadyRegistered = webpackConfig.module.rules.some(
131
- (r) => r._tailwindStyledMarker === true
132
- );
133
- if (!alreadyRegistered) {
134
- webpackConfig.module.rules.push({
135
- _tailwindStyledMarker: true,
136
- test: /\.(tsx|ts|jsx|js)$/,
137
- exclude: /node_modules/,
138
- use: [
139
- {
140
- loader: WEBPACK_LOADER_PATH,
141
- options: {
142
- ...loaderOpts,
143
- addDataAttr: opts.addDataAttr ?? webpackOpts.dev
144
- }
145
- }
146
- ]
147
- });
148
- }
149
- if (devtools && webpackOpts.dev) {
150
- webpackConfig.resolve = webpackConfig.resolve ?? {};
151
- webpackConfig.resolve.alias = {
152
- ...webpackConfig.resolve.alias ?? void 0,
153
- "tailwind-styled-v4/devtools": path__default.default.resolve(__dirname, "../../devtools/src/index.tsx")
154
- };
155
- }
156
- return typeof nextConfig.webpack === "function" ? nextConfig.webpack(webpackConfig, webpackOpts) : webpackConfig;
157
- },
158
- generateBuildId: async () => {
159
- try {
160
- const { generateSafelistCss } = chunkY5D3E72P_cjs.__require("@tailwind-styled/compiler");
161
- generateSafelistCss(
162
- scanDirs.map((d) => path__default.default.resolve(cwd, d)),
163
- path__default.default.isAbsolute(safelistOutput) ? safelistOutput : path__default.default.resolve(cwd, safelistOutput)
164
- );
165
- console.log("[tailwind-styled-v4] \u2713 Safelist CSS generated");
166
- } catch (e) {
167
- console.warn("[tailwind-styled-v4] Safelist skipped:", e);
168
- }
169
- if (plugins.length > 0) {
170
- try {
171
- const { getGlobalRegistry, runBuildHooks } = chunkY5D3E72P_cjs.__require("@tailwind-styled/plugin");
172
- await runBuildHooks(getGlobalRegistry());
173
- console.log("[tailwind-styled-v4] \u2713 Plugin build hooks complete");
174
- } catch (e) {
175
- console.warn("[tailwind-styled-v4] Plugin build hooks failed:", e);
176
- }
177
- }
178
- if (routeCss) {
179
- try {
180
- const { createEngine } = chunkY5D3E72P_cjs.__require("@tailwind-styled/engine");
181
- const engine = await createEngine({
182
- root: cwd,
183
- scanner: {
184
- includeExtensions: [".tsx", ".ts", ".jsx", ".js"],
185
- ignoreDirectories: scanDirs
186
- },
187
- compileCss: true,
188
- tailwindConfigPath: zeroConfig ? void 0 : "tailwind.config.ts",
189
- plugins: []
190
- });
191
- const buildResult = await engine.build();
192
- if (buildResult.css) {
193
- const routeDir = routeCssDir;
194
- fs__default.default.mkdirSync(routeDir, { recursive: true });
195
- const indexCssPath = path__default.default.join(routeDir, "index.css");
196
- fs__default.default.writeFileSync(indexCssPath, buildResult.css);
197
- const manifest = { "/": "index.css" };
198
- const manifestPath = path__default.default.join(
199
- cwd,
200
- ".next",
201
- "static",
202
- "css",
203
- "tw",
204
- "css-manifest.json"
205
- );
206
- fs__default.default.mkdirSync(path__default.default.dirname(manifestPath), { recursive: true });
207
- fs__default.default.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
208
- const sizeKb = Buffer.byteLength(buildResult.css, "utf8") / 1024;
209
- console.log(`[tailwind-styled-v4] \u2713 Route CSS: ${sizeKb.toFixed(1)}KB`);
210
- console.log(
211
- "[tailwind-styled-v4] \u2713 Route CSS manifest \u2192 .next/static/css/tw/css-manifest.json"
212
- );
213
- }
214
- } catch (e) {
215
- console.warn("[tailwind-styled-v4] Route CSS skipped:", e);
216
- }
217
- }
218
- if (plugins.length > 0) {
219
- try {
220
- const {
221
- getGlobalRegistry,
222
- generateTokenCss,
223
- generateUtilityCss,
224
- applyCssHooks
225
- } = chunkY5D3E72P_cjs.__require("@tailwind-styled/plugin");
226
- const registry = getGlobalRegistry();
227
- let pluginCss = [generateTokenCss(registry), generateUtilityCss(registry)].filter(Boolean).join("\n\n");
228
- pluginCss = applyCssHooks(pluginCss, registry);
229
- if (pluginCss.trim()) {
230
- const outPath = path__default.default.join(cwd, "public", "__tw-plugins.css");
231
- fs__default.default.mkdirSync(path__default.default.dirname(outPath), { recursive: true });
232
- fs__default.default.writeFileSync(outPath, pluginCss);
233
- console.log("[tailwind-styled-v4] \u2713 Plugin CSS \u2192 public/__tw-plugins.css");
234
- }
235
- } catch (e) {
236
- console.warn("[tailwind-styled-v4] Plugin CSS skipped:", e);
237
- }
238
- }
239
- if (typeof nextConfig.generateBuildId === "function") return nextConfig.generateBuildId();
240
- return null;
241
- }
242
- };
243
- };
244
- }
245
-
246
- exports.withTailwindStyled = withTailwindStyled;
247
- //# sourceMappingURL=next.cjs.map
248
- //# sourceMappingURL=next.cjs.map
package/dist/next.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../next/src/withTailwindStyled.ts"],"names":["__require","path","fs"],"mappings":"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","file":"next.cjs","sourcesContent":["/**\n * tailwind-styled-v4 — withTailwindStyled v5\n *\n * Next.js plugin v5:\n * - Simplified API (removed deprecated options)\n * - Integrates with @tailwind-styled/engine for build\n * - Removed legacy code (scripts, direct compiler calls)\n * - Native-first architecture\n */\n\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport type { TwPlugin } from \"@tailwind-styled/plugin\"\nimport type { NextConfig } from \"next\"\n\nexport interface TailwindStyledNextOptions {\n /** Directories to scan for components. Default: [\"src\"] */\n scanDirs?: string[]\n /** Output path for safelist CSS. Default: \"src/app/__tw-safelist.css\" */\n safelistOutput?: string\n /** Add data-tw attributes to components. Default: true in dev */\n addDataAttr?: boolean\n /** Auto-add \"use client\" boundary for interactive components. Default: true */\n autoClientBoundary?: boolean\n /** Hoist static variants. Default: true (false with React Compiler) */\n hoist?: boolean\n /** Generate route-level CSS. Default: true in production */\n routeCss?: boolean\n /** Output directory for route CSS. Default: \".next/static/css/tw\" */\n routeCssDir?: string\n /** Serve css-manifest.json in dev mode. Default: true in dev */\n devManifest?: boolean\n /** Use Tailwind zero-config. Default: true */\n zeroConfig?: boolean\n /** Plugin array */\n plugins?: TwPlugin[]\n /** Enable DevTools overlay. Default: true in dev */\n devtools?: boolean\n\n /** @deprecated in v5 - mode is always \"zero-runtime\" */\n mode?: \"zero-runtime\" | \"runtime\"\n /** @deprecated in v5 - use @tailwind-styled/atomic package */\n atomic?: boolean\n /** @deprecated in v5 - handled by engine automatically */\n staticVariants?: boolean\n /** @deprecated in v5 - use engine with analyze: true */\n deadStyleElimination?: boolean\n /** @deprecated in v5 - handled by engine internally */\n incremental?: boolean\n /** @deprecated in v5 - handled by engine internally */\n styleBuckets?: boolean\n /** @deprecated in v5 - handled by engine internally */\n incrementalVerbose?: boolean\n}\n\nconst LOADER_PATH = require.resolve(\"./turbopackLoader\")\nconst WEBPACK_LOADER_PATH = require.resolve(\"./webpackLoader\")\n\nfunction warnDeprecated(\n options: TailwindStyledNextOptions,\n key: keyof TailwindStyledNextOptions,\n message: string\n) {\n if (options[key] !== undefined) {\n console.warn(`[tailwind-styled-v4] Warning: '${key}' is deprecated in v5. ${message}`)\n }\n}\n\nexport function withTailwindStyled(opts: TailwindStyledNextOptions = {}) {\n return (nextConfig: NextConfig = {}): NextConfig => {\n const cwd = process.cwd()\n const isDev = process.env.NODE_ENV !== \"production\"\n\n warnDeprecated(opts, \"mode\", \"Only zero-runtime is supported in v5.\")\n warnDeprecated(opts, \"atomic\", \"Use @tailwind-styled/atomic package instead.\")\n warnDeprecated(opts, \"staticVariants\", \"Handled automatically by the engine.\")\n warnDeprecated(opts, \"deadStyleElimination\", \"Use engine with analyze: true instead.\")\n warnDeprecated(opts, \"incremental\", \"Handled internally by the engine.\")\n warnDeprecated(opts, \"styleBuckets\", \"Handled internally by the engine.\")\n warnDeprecated(opts, \"incrementalVerbose\", \"Handled internally by the engine.\")\n\n const hasReactCompiler =\n (nextConfig as any).reactCompiler === true ||\n (nextConfig as any).experimental?.reactCompiler === true\n\n if (hasReactCompiler && isDev) {\n console.log(\"[tailwind-styled-v4] React Compiler detected → hoist disabled\")\n }\n\n const {\n scanDirs = [\"src\"],\n safelistOutput = \"src/app/__tw-safelist.css\",\n addDataAttr = isDev,\n autoClientBoundary = true,\n hoist = !hasReactCompiler,\n routeCssDir = path.join(cwd, \".next\", \"static\", \"css\", \"tw\"),\n zeroConfig = true,\n plugins = [],\n devtools = isDev,\n } = opts\n\n const routeCss = opts.routeCss !== undefined ? opts.routeCss : !isDev\n const devManifest = opts.devManifest !== undefined ? opts.devManifest : isDev\n const devManifestRewrites =\n devManifest && isDev\n ? [\n {\n source: \"/__tw/css-manifest.json\",\n destination: \"/.next/static/css/tw/css-manifest.json\",\n },\n { source: \"/__tw/:path*.css\", destination: \"/.next/static/css/tw/:path*.css\" },\n ]\n : []\n\n if (zeroConfig) {\n try {\n const { bootstrapZeroConfig } = require(\"@tailwind-styled/compiler\")\n bootstrapZeroConfig(cwd)\n } catch {\n /* non-critical */\n }\n }\n\n // Ensure safelist CSS exists\n const safelistAbsPath = path.isAbsolute(safelistOutput)\n ? safelistOutput\n : path.resolve(cwd, safelistOutput)\n if (!fs.existsSync(safelistAbsPath)) {\n try {\n fs.mkdirSync(path.dirname(safelistAbsPath), { recursive: true })\n fs.writeFileSync(\n safelistAbsPath,\n \"/* Auto-generated by tailwind-styled-v4 — DO NOT EDIT */\\n\"\n )\n } catch {\n /* non-critical */\n }\n }\n\n // Initialize plugins\n if (plugins.length > 0) {\n try {\n const { use } = require(\"@tailwind-styled/plugin\")\n for (const plugin of plugins) use(plugin)\n console.log(\n `[tailwind-styled-v4] ${plugins.length} plugin(s): ${plugins.map((p: TwPlugin) => p.name).join(\", \")}`\n )\n } catch (e) {\n console.warn(\"[tailwind-styled-v4] Plugin init failed:\", e)\n }\n }\n\n // Loader options - use string values for Turbopack serialization\n const loaderOpts = {\n addDataAttr: addDataAttr ? \"true\" : \"false\",\n autoClientBoundary: autoClientBoundary ? \"true\" : \"false\",\n hoist: hoist ? \"true\" : \"false\",\n }\n\n return {\n ...nextConfig,\n\n // Dev mode rewrites for /__tw/ manifest serving\n ...(devManifestRewrites.length > 0\n ? {\n async rewrites() {\n const existing =\n typeof nextConfig.rewrites === \"function\"\n ? await nextConfig.rewrites()\n : (nextConfig.rewrites ?? [])\n const {\n beforeFiles = [],\n afterFiles = [],\n fallback = [],\n } = Array.isArray(existing) ? { beforeFiles: existing as any[] } : (existing as any)\n return { beforeFiles: [...devManifestRewrites, ...beforeFiles], afterFiles, fallback }\n },\n }\n : {}),\n\n experimental: {\n ...(nextConfig.experimental as any),\n },\n\n // Turbopack rules\n turbopack: {\n ...(nextConfig as any).turbopack,\n rules: {\n ...Object.fromEntries(\n scanDirs.flatMap((dir: string) => [\n [\n `{./${dir},./app,./pages,./components}/**/*.tsx`,\n {\n loaders: [{ loader: LOADER_PATH, options: loaderOpts }],\n },\n ],\n [\n `{./${dir},./app,./pages,./components}/**/*.ts`,\n {\n loaders: [{ loader: LOADER_PATH, options: loaderOpts }],\n },\n ],\n ])\n ),\n ...(nextConfig as any).turbopack?.rules,\n },\n },\n\n webpack(webpackConfig: any, webpackOpts: any) {\n const alreadyRegistered = webpackConfig.module.rules.some(\n (r: any) => r._tailwindStyledMarker === true\n )\n if (!alreadyRegistered) {\n webpackConfig.module.rules.push({\n _tailwindStyledMarker: true,\n test: /\\.(tsx|ts|jsx|js)$/,\n exclude: /node_modules/,\n use: [\n {\n loader: WEBPACK_LOADER_PATH,\n options: {\n ...loaderOpts,\n addDataAttr: opts.addDataAttr ?? webpackOpts.dev,\n },\n },\n ],\n })\n }\n\n if (devtools && webpackOpts.dev) {\n webpackConfig.resolve = webpackConfig.resolve ?? {}\n webpackConfig.resolve.alias = {\n ...(webpackConfig.resolve.alias ?? undefined),\n \"tailwind-styled-v4/devtools\": path.resolve(__dirname, \"../../devtools/src/index.tsx\"),\n }\n }\n\n return typeof nextConfig.webpack === \"function\"\n ? nextConfig.webpack(webpackConfig, webpackOpts)\n : webpackConfig\n },\n\n generateBuildId: async () => {\n // 1. Safelist CSS - using engine via scanner\n try {\n const { generateSafelistCss } = require(\"@tailwind-styled/compiler\")\n generateSafelistCss(\n scanDirs.map((d: string) => path.resolve(cwd, d)),\n path.isAbsolute(safelistOutput) ? safelistOutput : path.resolve(cwd, safelistOutput)\n )\n console.log(\"[tailwind-styled-v4] ✓ Safelist CSS generated\")\n } catch (e) {\n console.warn(\"[tailwind-styled-v4] Safelist skipped:\", e)\n }\n\n // 2. Plugin build hooks\n if (plugins.length > 0) {\n try {\n const { getGlobalRegistry, runBuildHooks } = require(\"@tailwind-styled/plugin\")\n await runBuildHooks(getGlobalRegistry())\n console.log(\"[tailwind-styled-v4] ✓ Plugin build hooks complete\")\n } catch (e) {\n console.warn(\"[tailwind-styled-v4] Plugin build hooks failed:\", e)\n }\n }\n\n // 3. Route CSS - use engine for generation\n if (routeCss) {\n try {\n const { createEngine } = require(\"@tailwind-styled/engine\")\n\n const engine = await createEngine({\n root: cwd,\n scanner: {\n includeExtensions: [\".tsx\", \".ts\", \".jsx\", \".js\"],\n ignoreDirectories: scanDirs,\n },\n compileCss: true,\n tailwindConfigPath: zeroConfig ? undefined : \"tailwind.config.ts\",\n plugins: [],\n })\n\n const buildResult = await engine.build()\n\n // Write route CSS files\n if (buildResult.css) {\n const routeDir = routeCssDir\n fs.mkdirSync(routeDir, { recursive: true })\n\n // For now, write a single combined CSS - route splitting handled by Next.js\n const indexCssPath = path.join(routeDir, \"index.css\")\n fs.writeFileSync(indexCssPath, buildResult.css)\n\n // Generate manifest for route css middleware\n const manifest = { \"/\": \"index.css\" }\n const manifestPath = path.join(\n cwd,\n \".next\",\n \"static\",\n \"css\",\n \"tw\",\n \"css-manifest.json\"\n )\n fs.mkdirSync(path.dirname(manifestPath), { recursive: true })\n fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2))\n\n const sizeKb = Buffer.byteLength(buildResult.css, \"utf8\") / 1024\n console.log(`[tailwind-styled-v4] ✓ Route CSS: ${sizeKb.toFixed(1)}KB`)\n console.log(\n \"[tailwind-styled-v4] ✓ Route CSS manifest → .next/static/css/tw/css-manifest.json\"\n )\n }\n } catch (e) {\n console.warn(\"[tailwind-styled-v4] Route CSS skipped:\", e)\n }\n }\n\n // 4. Plugin CSS\n if (plugins.length > 0) {\n try {\n const {\n getGlobalRegistry,\n generateTokenCss,\n generateUtilityCss,\n applyCssHooks,\n } = require(\"@tailwind-styled/plugin\")\n const registry = getGlobalRegistry()\n let pluginCss = [generateTokenCss(registry), generateUtilityCss(registry)]\n .filter(Boolean)\n .join(\"\\n\\n\")\n pluginCss = applyCssHooks(pluginCss, registry)\n if (pluginCss.trim()) {\n const outPath = path.join(cwd, \"public\", \"__tw-plugins.css\")\n fs.mkdirSync(path.dirname(outPath), { recursive: true })\n fs.writeFileSync(outPath, pluginCss)\n console.log(\"[tailwind-styled-v4] ✓ Plugin CSS → public/__tw-plugins.css\")\n }\n } catch (e) {\n console.warn(\"[tailwind-styled-v4] Plugin CSS skipped:\", e)\n }\n }\n\n if (typeof nextConfig.generateBuildId === \"function\") return nextConfig.generateBuildId()\n return null\n },\n }\n }\n}\n\nexport default withTailwindStyled\n\n// Re-export route css utilities\nexport { getRouteCssLinks } from \"./routeCssMiddleware\"\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../preset/src/defaultPreset.ts"],"names":[],"mappings":"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","file":"preset.cjs","sourcesContent":["/**\n * tailwind-styled-v4 — Default Preset\n *\n * Tailwind config built-in yang dipakai ketika developer tidak punya\n * tailwind.config.ts / tailwind.config.js di project mereka.\n *\n * Developer tidak perlu setup apapun:\n * npm install tailwind-styled-v4\n * → langsung bisa tw.div`p-4 bg-blue-500`\n *\n * Preset ini juga menyediakan design tokens yang consistent\n * untuk semua project yang pakai tailwind-styled-v4.\n *\n * Override per-project:\n * // tailwind.config.ts\n * import { defaultPreset } from \"tailwind-styled-v4/preset\"\n * export default { presets: [defaultPreset], theme: { extend: {...} } }\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Content paths — auto-detect berdasarkan project structure\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst STANDARD_CONTENT_PATHS = [\n // Next.js App Router\n \"./src/**/*.{tsx,ts,jsx,js,mdx}\",\n \"./app/**/*.{tsx,ts,jsx,js,mdx}\",\n \"./pages/**/*.{tsx,ts,jsx,js,mdx}\",\n \"./components/**/*.{tsx,ts,jsx,js,mdx}\",\n // Vite / React\n \"./src/**/*.{tsx,ts,jsx,js}\",\n \"./index.html\",\n // Monorepo\n \"../../packages/**/src/**/*.{tsx,ts,jsx,js}\",\n]\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Design tokens — consistent across all tailwind-styled-v4 projects\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const designTokens = {\n colors: {\n primary: { DEFAULT: \"#3b82f6\", hover: \"#2563eb\", active: \"#1d4ed8\", foreground: \"#ffffff\" },\n secondary: { DEFAULT: \"#6366f1\", hover: \"#4f46e5\", active: \"#4338ca\", foreground: \"#ffffff\" },\n accent: { DEFAULT: \"#f59e0b\", hover: \"#d97706\", active: \"#b45309\", foreground: \"#000000\" },\n success: { DEFAULT: \"#10b981\", foreground: \"#ffffff\" },\n warning: { DEFAULT: \"#f59e0b\", foreground: \"#000000\" },\n danger: { DEFAULT: \"#ef4444\", foreground: \"#ffffff\" },\n info: { DEFAULT: \"#3b82f6\", foreground: \"#ffffff\" },\n surface: \"#18181b\",\n border: \"#27272a\",\n muted: \"#71717a\",\n subtle: \"#3f3f46\",\n },\n\n spacing: {\n 1: \"0.25rem\",\n 2: \"0.5rem\",\n 3: \"0.75rem\",\n 4: \"1rem\",\n 5: \"1.25rem\",\n 6: \"1.5rem\",\n 8: \"2rem\",\n 10: \"2.5rem\",\n 12: \"3rem\",\n 16: \"4rem\",\n },\n\n breakpoints: {\n sm: \"40rem\",\n md: \"48rem\",\n lg: \"64rem\",\n xl: \"80rem\",\n \"2xl\": \"96rem\",\n },\n\n fontWeight: {\n normal: \"400\",\n medium: \"500\",\n semibold: \"600\",\n bold: \"700\",\n },\n\n fontFamily: {\n sans: [\"InterVariable\", \"Inter\", \"system-ui\", \"sans-serif\"],\n mono: [\"JetBrains Mono\", \"Fira Code\", \"Consolas\", \"monospace\"],\n },\n\n borderRadius: {\n sm: \"0.25rem\",\n DEFAULT: \"0.5rem\",\n md: \"0.5rem\",\n lg: \"0.75rem\",\n xl: \"1rem\",\n \"2xl\": \"1.5rem\",\n full: \"9999px\",\n },\n\n animation: {\n \"fade-in\": \"fadeIn 0.2s ease-out\",\n \"fade-out\": \"fadeOut 0.2s ease-in\",\n \"slide-up\": \"slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1)\",\n \"slide-down\": \"slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1)\",\n \"scale-in\": \"scaleIn 0.2s ease-out\",\n },\n\n keyframes: {\n fadeIn: { from: { opacity: \"0\" }, to: { opacity: \"1\" } },\n fadeOut: { from: { opacity: \"1\" }, to: { opacity: \"0\" } },\n slideUp: {\n from: { transform: \"translateY(8px)\", opacity: \"0\" },\n to: { transform: \"translateY(0)\", opacity: \"1\" },\n },\n slideDown: {\n from: { transform: \"translateY(-8px)\", opacity: \"0\" },\n to: { transform: \"translateY(0)\", opacity: \"1\" },\n },\n scaleIn: {\n from: { transform: \"scale(0.95)\", opacity: \"0\" },\n to: { transform: \"scale(1)\", opacity: \"1\" },\n },\n },\n} as const\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Default Tailwind Config — dipakai sebagai fallback + preset\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const defaultPreset = {\n content: STANDARD_CONTENT_PATHS,\n\n darkMode: \"class\" as const,\n\n theme: {\n extend: {\n colors: designTokens.colors,\n fontFamily: designTokens.fontFamily,\n borderRadius: designTokens.borderRadius,\n animation: designTokens.animation,\n keyframes: designTokens.keyframes,\n },\n },\n\n plugins: [],\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Default Theme CSS — Tailwind v4 @theme block\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const defaultThemeCss = `@import \"tailwindcss\";\n\n@theme {\n /* colors */\n --color-primary: #3b82f6;\n --color-primary-hover: #2563eb;\n --color-primary-active: #1d4ed8;\n --color-primary-foreground: #ffffff;\n --color-secondary: #6366f1;\n --color-secondary-hover: #4f46e5;\n --color-secondary-active: #4338ca;\n --color-secondary-foreground: #ffffff;\n --color-accent: #f59e0b;\n --color-accent-hover: #d97706;\n --color-accent-active: #b45309;\n --color-accent-foreground: #000000;\n --color-success: #10b981;\n --color-success-foreground: #ffffff;\n --color-warning: #f59e0b;\n --color-warning-foreground: #000000;\n --color-danger: #ef4444;\n --color-danger-foreground: #ffffff;\n --color-info: #3b82f6;\n --color-info-foreground: #ffffff;\n --color-surface: #18181b;\n --color-border: #27272a;\n --color-muted: #71717a;\n --color-subtle: #3f3f46;\n\n /* fonts */\n --font-sans: InterVariable, Inter, system-ui, sans-serif;\n --font-mono: JetBrains Mono, Fira Code, Consolas, monospace;\n\n /* spacing */\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-8: 2rem;\n --spacing-10: 2.5rem;\n --spacing-12: 3rem;\n --spacing-16: 4rem;\n\n /* breakpoints */\n --breakpoint-sm: 40rem;\n --breakpoint-md: 48rem;\n --breakpoint-lg: 64rem;\n --breakpoint-xl: 80rem;\n --breakpoint-2xl: 96rem;\n\n /* border radius */\n --radius-sm: 0.25rem;\n --radius-md: 0.5rem;\n --radius-lg: 0.75rem;\n --radius-xl: 1rem;\n --radius-2xl: 1.5rem;\n --radius-full: 9999px;\n\n /* animations */\n --animate-fade-in: fadeIn 0.2s ease-out;\n --animate-fade-out: fadeOut 0.2s ease-in;\n --animate-slide-up: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-slide-down: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-scale-in: scaleIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n@keyframes fadeOut {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n@keyframes slideUp {\n from { transform: translateY(8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes slideDown {\n from { transform: translateY(-8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes scaleIn {\n from { transform: scale(0.95); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n}`\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Zero-config globals.css — tidak perlu @tailwind base dll\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const defaultGlobalCss = `@import \"tailwindcss\";\n\n@theme {\n /* colors */\n --color-primary: #3b82f6;\n --color-primary-hover: #2563eb;\n --color-primary-active: #1d4ed8;\n --color-primary-foreground: #ffffff;\n --color-secondary: #6366f1;\n --color-secondary-hover: #4f46e5;\n --color-secondary-active: #4338ca;\n --color-secondary-foreground: #ffffff;\n --color-accent: #f59e0b;\n --color-accent-hover: #d97706;\n --color-accent-active: #b45309;\n --color-accent-foreground: #000000;\n --color-success: #10b981;\n --color-success-foreground: #ffffff;\n --color-warning: #f59e0b;\n --color-warning-foreground: #000000;\n --color-danger: #ef4444;\n --color-danger-foreground: #ffffff;\n --color-info: #3b82f6;\n --color-info-foreground: #ffffff;\n --color-surface: #18181b;\n --color-border: #27272a;\n --color-muted: #71717a;\n --color-subtle: #3f3f46;\n\n /* fonts */\n --font-sans: InterVariable, Inter, system-ui, sans-serif;\n --font-mono: JetBrains Mono, Fira Code, Consolas, monospace;\n\n /* spacing */\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-8: 2rem;\n --spacing-10: 2.5rem;\n --spacing-12: 3rem;\n --spacing-16: 4rem;\n\n /* breakpoints */\n --breakpoint-sm: 40rem;\n --breakpoint-md: 48rem;\n --breakpoint-lg: 64rem;\n --breakpoint-xl: 80rem;\n --breakpoint-2xl: 96rem;\n\n /* border radius */\n --radius-sm: 0.25rem;\n --radius-md: 0.5rem;\n --radius-lg: 0.75rem;\n --radius-xl: 1rem;\n --radius-2xl: 1.5rem;\n --radius-full: 9999px;\n\n /* animations */\n --animate-fade-in: fadeIn 0.2s ease-out;\n --animate-fade-out: fadeOut 0.2s ease-in;\n --animate-slide-up: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-slide-down: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-scale-in: scaleIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n@keyframes fadeOut {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n@keyframes slideUp {\n from { transform: translateY(8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes slideDown {\n from { transform: translateY(-8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes scaleIn {\n from { transform: scale(0.95); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n}\n\n/* tailwind-styled-v4 — zero-config base styles */\n*, *::before, *::after {\n box-sizing: border-box;\n}\n\nhtml {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n}\n\nbody {\n margin: 0;\n font-family: var(--font-sans, system-ui, sans-serif);\n background: var(--color-surface, #18181b);\n color: var(--color-foreground, #fafafa);\n}\n`\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Zero-config Tailwind v4 CSS generator\n// Dipakai oleh CLI dan withTailwindStyled saat tidak ada user config\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function generateTailwindCss(contentPaths = STANDARD_CONTENT_PATHS): string {\n return `@import \"tailwindcss\";\n\n@theme {\n /* colors */\n --color-primary: #3b82f6;\n --color-primary-hover: #2563eb;\n --color-primary-active: #1d4ed8;\n --color-primary-foreground: #ffffff;\n --color-secondary: #6366f1;\n --color-secondary-hover: #4f46e5;\n --color-secondary-active: #4338ca;\n --color-secondary-foreground: #ffffff;\n --color-accent: #f59e0b;\n --color-accent-hover: #d97706;\n --color-accent-active: #b45309;\n --color-accent-foreground: #000000;\n --color-success: #10b981;\n --color-success-foreground: #ffffff;\n --color-warning: #f59e0b;\n --color-warning-foreground: #000000;\n --color-danger: #ef4444;\n --color-danger-foreground: #ffffff;\n --color-info: #3b82f6;\n --color-info-foreground: #ffffff;\n --color-surface: #18181b;\n --color-border: #27272a;\n --color-muted: #71717a;\n --color-subtle: #3f3f46;\n\n /* fonts */\n --font-sans: InterVariable, Inter, system-ui, sans-serif;\n --font-mono: JetBrains Mono, Fira Code, Consolas, monospace;\n\n /* spacing */\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-8: 2rem;\n --spacing-10: 2.5rem;\n --spacing-12: 3rem;\n --spacing-16: 4rem;\n\n /* breakpoints */\n --breakpoint-sm: 40rem;\n --breakpoint-md: 48rem;\n --breakpoint-lg: 64rem;\n --breakpoint-xl: 80rem;\n --breakpoint-2xl: 96rem;\n\n /* border radius */\n --radius-sm: 0.25rem;\n --radius-md: 0.5rem;\n --radius-lg: 0.75rem;\n --radius-xl: 1rem;\n --radius-2xl: 1.5rem;\n --radius-full: 9999px;\n\n /* animations */\n --animate-fade-in: fadeIn 0.2s ease-out;\n --animate-fade-out: fadeOut 0.2s ease-in;\n --animate-slide-up: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-slide-down: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n --animate-scale-in: scaleIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n@keyframes fadeOut {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n@keyframes slideUp {\n from { transform: translateY(8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes slideDown {\n from { transform: translateY(-8px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n@keyframes scaleIn {\n from { transform: scale(0.95); opacity: 0; }\n to { transform: scale(1); opacity: 1; }\n}\n\n@source ${contentPaths.join(\"\\n@source \")}\n`\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Zero-config tailwind.config.ts generator\n// DEPRECATED: Use generateTailwindCss for Tailwind v4 instead\n// Dipakai oleh CLI dan withTailwindStyled saat tidak ada user config\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function generateTailwindConfig(\n safelistPath = \".tailwind-styled-safelist.json\",\n contentPaths = STANDARD_CONTENT_PATHS\n): string {\n return `import type { Config } from \"tailwindcss\"\nimport { defaultPreset } from \"tailwind-styled-v4/preset\"\n\n// Auto-generated safelist dari tailwind-styled-v4 compiler\nconst safelist = (() => {\n try { return require(${JSON.stringify(safelistPath)}) as string[] }\n catch { return [] }\n})()\n\nexport default {\n presets: [defaultPreset],\n content: ${JSON.stringify(contentPaths, null, 2)},\n safelist,\n} satisfies Config\n`\n}\n"]}
@@ -1,37 +0,0 @@
1
- 'use strict';
2
-
3
- require('./chunk-Y5D3E72P.cjs');
4
- var compiler = require('@tailwind-styled/compiler');
5
-
6
- /* tailwind-styled-v4 v4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
7
- function turbopackLoader(source, options = {}) {
8
- const parseBool = (val) => {
9
- if (typeof val === "boolean") return val;
10
- if (typeof val === "string") return val === "true";
11
- return false;
12
- };
13
- const addDataAttr = parseBool(options.addDataAttr);
14
- const autoClientBoundary = parseBool(options.autoClientBoundary);
15
- const hoist = parseBool(options.hoist);
16
- const directiveMatch = source.match(/^\s*"use (client|server)"\s*;?\s*\n/);
17
- const directive = directiveMatch ? `"use ${directiveMatch[1]}";
18
- ` : "";
19
- const output = compiler.runLoaderTransform({
20
- filepath: this.resourcePath,
21
- source,
22
- options: {
23
- addDataAttr,
24
- autoClientBoundary,
25
- hoist,
26
- // Preserve cv, cx, cn, etc — only tw.* is transformed
27
- preserveImports: true
28
- }
29
- });
30
- if (!directive) return output.code;
31
- const stripped = output.code.replace(/"use (client|server)"\s*;?\s*\n?/g, "");
32
- return directive + stripped;
33
- }
34
-
35
- module.exports = turbopackLoader;
36
- //# sourceMappingURL=turbopackLoader.cjs.map
37
- //# sourceMappingURL=turbopackLoader.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../next/src/turbopackLoader.ts"],"names":["runLoaderTransform"],"mappings":";;;;;;AAWe,SAAR,eAAA,CAEL,MAAA,EACA,OAAA,GAAyB,EAAC,EAClB;AACR,EAAA,MAAM,SAAA,GAAY,CAAC,GAAA,KAA+C;AAChE,IAAA,IAAI,OAAO,GAAA,KAAQ,SAAA,EAAW,OAAO,GAAA;AACrC,IAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAO,GAAA,KAAQ,MAAA;AAC5C,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,SAAA,CAAU,OAAA,CAAQ,WAAW,CAAA;AACjD,EAAA,MAAM,kBAAA,GAAqB,SAAA,CAAU,OAAA,CAAQ,kBAAkB,CAAA;AAC/D,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,OAAA,CAAQ,KAAK,CAAA;AAErC,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,KAAA,CAAM,qCAAqC,CAAA;AACzE,EAAA,MAAM,SAAA,GAAY,cAAA,GAAiB,CAAA,KAAA,EAAQ,cAAA,CAAe,CAAC,CAAC,CAAA;AAAA,CAAA,GAAS,EAAA;AAErE,EAAA,MAAM,SAASA,2BAAA,CAAmB;AAAA,IAChC,UAAU,IAAA,CAAK,YAAA;AAAA,IACf,MAAA;AAAA,IACA,OAAA,EAAS;AAAA,MACP,WAAA;AAAA,MACA,kBAAA;AAAA,MACA,KAAA;AAAA;AAAA,MAEA,eAAA,EAAiB;AAAA;AACnB,GACD,CAAA;AAED,EAAA,IAAI,CAAC,SAAA,EAAW,OAAO,MAAA,CAAO,IAAA;AAE9B,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,qCAAqC,EAAE,CAAA;AAC5E,EAAA,OAAO,SAAA,GAAY,QAAA;AACrB","file":"turbopackLoader.cjs","sourcesContent":["/**\n * tailwind-styled-v4 - Turbopack Loader\n */\n\nimport type { LoaderOptions } from \"@tailwind-styled/compiler\"\nimport { runLoaderTransform } from \"@tailwind-styled/compiler\"\n\ninterface TurbopackContext {\n resourcePath: string\n}\n\nexport default function turbopackLoader(\n this: TurbopackContext,\n source: string,\n options: LoaderOptions = {}\n): string {\n const parseBool = (val: boolean | string | undefined): boolean => {\n if (typeof val === \"boolean\") return val\n if (typeof val === \"string\") return val === \"true\"\n return false\n }\n\n const addDataAttr = parseBool(options.addDataAttr)\n const autoClientBoundary = parseBool(options.autoClientBoundary)\n const hoist = parseBool(options.hoist)\n\n const directiveMatch = source.match(/^\\s*\"use (client|server)\"\\s*;?\\s*\\n/)\n const directive = directiveMatch ? `\"use ${directiveMatch[1]}\";\\n` : \"\"\n\n const output = runLoaderTransform({\n filepath: this.resourcePath,\n source,\n options: {\n addDataAttr,\n autoClientBoundary,\n hoist,\n // Preserve cv, cx, cn, etc — only tw.* is transformed\n preserveImports: true,\n },\n })\n\n if (!directive) return output.code\n\n const stripped = output.code.replace(/\"use (client|server)\"\\s*;?\\s*\\n?/g, \"\")\n return directive + stripped\n}\n"]}
@@ -1,12 +0,0 @@
1
- import { LoaderOptions } from '@tailwind-styled/compiler';
2
-
3
- /**
4
- * tailwind-styled-v4 - Turbopack Loader
5
- */
6
-
7
- interface TurbopackContext {
8
- resourcePath: string;
9
- }
10
- declare function turbopackLoader(this: TurbopackContext, source: string, options?: LoaderOptions): string;
11
-
12
- export { turbopackLoader as default };
@@ -1,12 +0,0 @@
1
- import { LoaderOptions } from '@tailwind-styled/compiler';
2
-
3
- /**
4
- * tailwind-styled-v4 - Turbopack Loader
5
- */
6
-
7
- interface TurbopackContext {
8
- resourcePath: string;
9
- }
10
- declare function turbopackLoader(this: TurbopackContext, source: string, options?: LoaderOptions): string;
11
-
12
- export { turbopackLoader as default };
@@ -1,35 +0,0 @@
1
- import './chunk-VZEJV27B.js';
2
- import { runLoaderTransform } from '@tailwind-styled/compiler';
3
-
4
- /* tailwind-styled-v4 v4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
5
- function turbopackLoader(source, options = {}) {
6
- const parseBool = (val) => {
7
- if (typeof val === "boolean") return val;
8
- if (typeof val === "string") return val === "true";
9
- return false;
10
- };
11
- const addDataAttr = parseBool(options.addDataAttr);
12
- const autoClientBoundary = parseBool(options.autoClientBoundary);
13
- const hoist = parseBool(options.hoist);
14
- const directiveMatch = source.match(/^\s*"use (client|server)"\s*;?\s*\n/);
15
- const directive = directiveMatch ? `"use ${directiveMatch[1]}";
16
- ` : "";
17
- const output = runLoaderTransform({
18
- filepath: this.resourcePath,
19
- source,
20
- options: {
21
- addDataAttr,
22
- autoClientBoundary,
23
- hoist,
24
- // Preserve cv, cx, cn, etc — only tw.* is transformed
25
- preserveImports: true
26
- }
27
- });
28
- if (!directive) return output.code;
29
- const stripped = output.code.replace(/"use (client|server)"\s*;?\s*\n?/g, "");
30
- return directive + stripped;
31
- }
32
-
33
- export { turbopackLoader as default };
34
- //# sourceMappingURL=turbopackLoader.js.map
35
- //# sourceMappingURL=turbopackLoader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../next/src/turbopackLoader.ts"],"names":[],"mappings":";;;;AAWe,SAAR,eAAA,CAEL,MAAA,EACA,OAAA,GAAyB,EAAC,EAClB;AACR,EAAA,MAAM,SAAA,GAAY,CAAC,GAAA,KAA+C;AAChE,IAAA,IAAI,OAAO,GAAA,KAAQ,SAAA,EAAW,OAAO,GAAA;AACrC,IAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAO,GAAA,KAAQ,MAAA;AAC5C,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,SAAA,CAAU,OAAA,CAAQ,WAAW,CAAA;AACjD,EAAA,MAAM,kBAAA,GAAqB,SAAA,CAAU,OAAA,CAAQ,kBAAkB,CAAA;AAC/D,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,OAAA,CAAQ,KAAK,CAAA;AAErC,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,KAAA,CAAM,qCAAqC,CAAA;AACzE,EAAA,MAAM,SAAA,GAAY,cAAA,GAAiB,CAAA,KAAA,EAAQ,cAAA,CAAe,CAAC,CAAC,CAAA;AAAA,CAAA,GAAS,EAAA;AAErE,EAAA,MAAM,SAAS,kBAAA,CAAmB;AAAA,IAChC,UAAU,IAAA,CAAK,YAAA;AAAA,IACf,MAAA;AAAA,IACA,OAAA,EAAS;AAAA,MACP,WAAA;AAAA,MACA,kBAAA;AAAA,MACA,KAAA;AAAA;AAAA,MAEA,eAAA,EAAiB;AAAA;AACnB,GACD,CAAA;AAED,EAAA,IAAI,CAAC,SAAA,EAAW,OAAO,MAAA,CAAO,IAAA;AAE9B,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,qCAAqC,EAAE,CAAA;AAC5E,EAAA,OAAO,SAAA,GAAY,QAAA;AACrB","file":"turbopackLoader.js","sourcesContent":["/**\n * tailwind-styled-v4 - Turbopack Loader\n */\n\nimport type { LoaderOptions } from \"@tailwind-styled/compiler\"\nimport { runLoaderTransform } from \"@tailwind-styled/compiler\"\n\ninterface TurbopackContext {\n resourcePath: string\n}\n\nexport default function turbopackLoader(\n this: TurbopackContext,\n source: string,\n options: LoaderOptions = {}\n): string {\n const parseBool = (val: boolean | string | undefined): boolean => {\n if (typeof val === \"boolean\") return val\n if (typeof val === \"string\") return val === \"true\"\n return false\n }\n\n const addDataAttr = parseBool(options.addDataAttr)\n const autoClientBoundary = parseBool(options.autoClientBoundary)\n const hoist = parseBool(options.hoist)\n\n const directiveMatch = source.match(/^\\s*\"use (client|server)\"\\s*;?\\s*\\n/)\n const directive = directiveMatch ? `\"use ${directiveMatch[1]}\";\\n` : \"\"\n\n const output = runLoaderTransform({\n filepath: this.resourcePath,\n source,\n options: {\n addDataAttr,\n autoClientBoundary,\n hoist,\n // Preserve cv, cx, cn, etc — only tw.* is transformed\n preserveImports: true,\n },\n })\n\n if (!directive) return output.code\n\n const stripped = output.code.replace(/\"use (client|server)\"\\s*;?\\s*\\n?/g, \"\")\n return directive + stripped\n}\n"]}
package/dist/vite.cjs DELETED
@@ -1,138 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- require('./chunk-Y5D3E72P.cjs');
6
- var fs = require('fs');
7
- var path = require('path');
8
- var compiler = require('@tailwind-styled/compiler');
9
- var engine = require('@tailwind-styled/engine');
10
- var scanner = require('@tailwind-styled/scanner');
11
-
12
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
-
14
- var fs__default = /*#__PURE__*/_interopDefault(fs);
15
- var path__default = /*#__PURE__*/_interopDefault(path);
16
-
17
- /* tailwind-styled-v4 v4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
18
- function warnDeprecated(options, key, message) {
19
- if (options[key] !== void 0) {
20
- console.warn(`[tailwind-styled-v4] Warning: '${key}' is deprecated in v5. ${message}`);
21
- }
22
- }
23
- function tailwindStyledPlugin(opts = {}) {
24
- warnDeprecated(opts, "mode", "Only zero-runtime is supported.");
25
- warnDeprecated(opts, "routeCss", "Use engine's analyzing capabilities.");
26
- warnDeprecated(opts, "deadStyleElimination", "Use 'analyze: true' option instead.");
27
- warnDeprecated(opts, "addDataAttr", "Handled by engine internally.");
28
- warnDeprecated(opts, "autoClientBoundary", "Handled by engine internally.");
29
- warnDeprecated(opts, "hoist", "Handled by engine internally.");
30
- warnDeprecated(opts, "incremental", "Handled by engine internally.");
31
- const {
32
- include = /\.(tsx|ts|jsx|js)$/,
33
- exclude = /node_modules/,
34
- scanDirs = ["src"],
35
- safelistOutput = ".tailwind-styled-safelist.json",
36
- scanReportOutput = ".tailwind-styled-scan-report.json",
37
- generateSafelist: doSafelist = true,
38
- useEngineBuild = true,
39
- analyze = false,
40
- strict = false
41
- } = opts;
42
- let root = process.cwd();
43
- let isDev = true;
44
- return {
45
- name: "tailwind-styled-v4",
46
- enforce: "pre",
47
- configResolved(config) {
48
- root = config.root;
49
- isDev = config.command === "serve";
50
- },
51
- transform(source, id) {
52
- const filepath = id.split("?")[0];
53
- if (!include.test(filepath)) return null;
54
- if (exclude.test(filepath)) return null;
55
- const loaderOptions = {
56
- // v5: Always zero-runtime (mode is deprecated)
57
- mode: "zero-runtime",
58
- addDataAttr: isDev,
59
- filename: filepath,
60
- // Preserve cv, cx, cn, etc — only tw.* is transformed
61
- preserveImports: true
62
- };
63
- const output = compiler.runLoaderTransform({
64
- filepath,
65
- source,
66
- options: loaderOptions,
67
- isDev
68
- });
69
- if (!output.changed) return null;
70
- return { code: output.code, map: null };
71
- },
72
- async buildEnd() {
73
- if (isDev) return;
74
- if (doSafelist) {
75
- try {
76
- compiler.generateSafelist(
77
- scanDirs.map((d) => path__default.default.resolve(root, d)),
78
- path__default.default.resolve(root, safelistOutput),
79
- root
80
- );
81
- } catch (e) {
82
- console.warn("[tailwind-styled-v4] Safelist generation failed:", e);
83
- }
84
- }
85
- try {
86
- const report = await scanner.scanWorkspaceAsync(root);
87
- const reportPath = path__default.default.resolve(root, scanReportOutput);
88
- fs__default.default.writeFileSync(
89
- reportPath,
90
- JSON.stringify(
91
- {
92
- root,
93
- totalFiles: report.totalFiles,
94
- uniqueClassCount: report.uniqueClasses.length
95
- },
96
- null,
97
- 2
98
- ) + "\n"
99
- );
100
- } catch (e) {
101
- console.warn("[tailwind-styled-v4] Scan report generation failed:", e);
102
- }
103
- if (useEngineBuild) {
104
- try {
105
- const engine$1 = await engine.createEngine({
106
- root,
107
- compileCss: true,
108
- analyze,
109
- scanner: {
110
- includeExtensions: [".tsx", ".ts", ".jsx", ".js"],
111
- ignoreDirectories: scanDirs
112
- }
113
- });
114
- await engine$1.build();
115
- console.log("[tailwind-styled-v4] \u2713 Engine build complete");
116
- } catch (e) {
117
- const msg = `[tailwind-styled-v4] Engine build step failed: ${e}`;
118
- if (strict) {
119
- throw new Error(msg);
120
- } else {
121
- console.warn(msg);
122
- }
123
- }
124
- }
125
- },
126
- handleHotUpdate({ file, server }) {
127
- if (include.test(file) && !exclude.test(file)) {
128
- server.ws.send({ type: "full-reload" });
129
- }
130
- }
131
- };
132
- }
133
- var plugin_default = tailwindStyledPlugin;
134
-
135
- exports.default = plugin_default;
136
- exports.tailwindStyledPlugin = tailwindStyledPlugin;
137
- //# sourceMappingURL=vite.cjs.map
138
- //# sourceMappingURL=vite.cjs.map
package/dist/vite.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../vite/src/plugin.ts"],"names":["runLoaderTransform","generateSafelist","path","scanWorkspaceAsync","fs","engine","createEngine"],"mappings":";;;;;;;;;;;;;;;;;AA2DA,SAAS,cAAA,CAAe,OAAA,EAA4B,GAAA,EAA8B,OAAA,EAAiB;AACjG,EAAA,IAAI,OAAA,CAAQ,GAAG,CAAA,KAAM,MAAA,EAAW;AAC9B,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,+BAAA,EAAkC,GAAG,CAAA,uBAAA,EAA0B,OAAO,CAAA,CAAE,CAAA;AAAA,EACvF;AACF;AAEO,SAAS,oBAAA,CAAqB,IAAA,GAA0B,EAAC,EAAQ;AACtE,EAAA,cAAA,CAAe,IAAA,EAAM,QAAQ,iCAAiC,CAAA;AAC9D,EAAA,cAAA,CAAe,IAAA,EAAM,YAAY,sCAAsC,CAAA;AACvE,EAAA,cAAA,CAAe,IAAA,EAAM,wBAAwB,qCAAqC,CAAA;AAClF,EAAA,cAAA,CAAe,IAAA,EAAM,eAAe,+BAA+B,CAAA;AACnE,EAAA,cAAA,CAAe,IAAA,EAAM,sBAAsB,+BAA+B,CAAA;AAC1E,EAAA,cAAA,CAAe,IAAA,EAAM,SAAS,+BAA+B,CAAA;AAC7D,EAAA,cAAA,CAAe,IAAA,EAAM,eAAe,+BAA+B,CAAA;AAEnE,EAAA,MAAM;AAAA,IACJ,OAAA,GAAU,oBAAA;AAAA,IACV,OAAA,GAAU,cAAA;AAAA,IACV,QAAA,GAAW,CAAC,KAAK,CAAA;AAAA,IACjB,cAAA,GAAiB,gCAAA;AAAA,IACjB,gBAAA,GAAmB,mCAAA;AAAA,IACnB,kBAAkB,UAAA,GAAa,IAAA;AAAA,IAC/B,cAAA,GAAiB,IAAA;AAAA,IACjB,OAAA,GAAU,KAAA;AAAA,IACV,MAAA,GAAS;AAAA,GACX,GAAI,IAAA;AAEJ,EAAA,IAAI,IAAA,GAAO,QAAQ,GAAA,EAAI;AACvB,EAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,oBAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,IAET,eAAe,MAAA,EAAa;AAC1B,MAAA,IAAA,GAAO,MAAA,CAAO,IAAA;AACd,MAAA,KAAA,GAAQ,OAAO,OAAA,KAAY,OAAA;AAAA,IAC7B,CAAA;AAAA,IAEA,SAAA,CAAU,QAAgB,EAAA,EAAY;AACpC,MAAA,MAAM,QAAA,GAAW,EAAA,CAAG,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAChC,MAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,QAAQ,GAAG,OAAO,IAAA;AACpC,MAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,QAAQ,CAAA,EAAG,OAAO,IAAA;AAEnC,MAAA,MAAM,aAAA,GAA+B;AAAA;AAAA,QAEnC,IAAA,EAAM,cAAA;AAAA,QACN,WAAA,EAAa,KAAA;AAAA,QACb,QAAA,EAAU,QAAA;AAAA;AAAA,QAEV,eAAA,EAAiB;AAAA,OACnB;AAEA,MAAA,MAAM,SAASA,2BAAA,CAAmB;AAAA,QAChC,QAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA,EAAS,aAAA;AAAA,QACT;AAAA,OACD,CAAA;AAED,MAAA,IAAI,CAAC,MAAA,CAAO,OAAA,EAAS,OAAO,IAAA;AAC5B,MAAA,OAAO,EAAE,IAAA,EAAM,MAAA,CAAO,IAAA,EAAM,KAAK,IAAA,EAAK;AAAA,IACxC,CAAA;AAAA,IAEA,MAAM,QAAA,GAAW;AACf,MAAA,IAAI,KAAA,EAAO;AAEX,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,IAAI;AACF,UAAAC,yBAAA;AAAA,YACE,QAAA,CAAS,IAAI,CAAC,CAAA,KAAMC,sBAAK,OAAA,CAAQ,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,YACzCA,qBAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,cAAc,CAAA;AAAA,YACjC;AAAA,WACF;AAAA,QACF,SAAS,CAAA,EAAG;AACV,UAAA,OAAA,CAAQ,IAAA,CAAK,oDAAoD,CAAC,CAAA;AAAA,QACpE;AAAA,MACF;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,MAAMC,0BAAA,CAAmB,IAAI,CAAA;AAC5C,QAAA,MAAM,UAAA,GAAaD,qBAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,gBAAgB,CAAA;AACtD,QAAAE,mBAAA,CAAG,aAAA;AAAA,UACD,UAAA;AAAA,UACA,IAAA,CAAK,SAAA;AAAA,YACH;AAAA,cACE,IAAA;AAAA,cACA,YAAY,MAAA,CAAO,UAAA;AAAA,cACnB,gBAAA,EAAkB,OAAO,aAAA,CAAc;AAAA,aACzC;AAAA,YACA,IAAA;AAAA,YACA;AAAA,WACF,GAAI;AAAA,SACN;AAAA,MACF,SAAS,CAAA,EAAG;AACV,QAAA,OAAA,CAAQ,IAAA,CAAK,uDAAuD,CAAC,CAAA;AAAA,MACvE;AAEA,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,IAAI;AACF,UAAA,MAAMC,QAAA,GAAS,MAAMC,mBAAA,CAAa;AAAA,YAChC,IAAA;AAAA,YACA,UAAA,EAAY,IAAA;AAAA,YACZ,OAAA;AAAA,YACA,OAAA,EAAS;AAAA,cACP,iBAAA,EAAmB,CAAC,MAAA,EAAQ,KAAA,EAAO,QAAQ,KAAK,CAAA;AAAA,cAChD,iBAAA,EAAmB;AAAA;AACrB,WACD,CAAA;AACD,UAAA,MAAMD,SAAO,KAAA,EAAM;AACnB,UAAA,OAAA,CAAQ,IAAI,mDAA8C,CAAA;AAAA,QAC5D,SAAS,CAAA,EAAG;AACV,UAAA,MAAM,GAAA,GAAM,kDAAkD,CAAC,CAAA,CAAA;AAC/D,UAAA,IAAI,MAAA,EAAQ;AACV,YAAA,MAAM,IAAI,MAAM,GAAG,CAAA;AAAA,UACrB,CAAA,MAAO;AACL,YAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IAEA,eAAA,CAAgB,EAAE,IAAA,EAAM,MAAA,EAAO,EAAQ;AACrC,MAAA,IAAI,OAAA,CAAQ,KAAK,IAAI,CAAA,IAAK,CAAC,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,EAAG;AAC7C,QAAA,MAAA,CAAO,EAAA,CAAG,IAAA,CAAK,EAAE,IAAA,EAAM,eAAe,CAAA;AAAA,MACxC;AAAA,IACF;AAAA,GACF;AACF;AAEA,IAAO,cAAA,GAAQ","file":"vite.cjs","sourcesContent":["/**\n * tailwind-styled-v4 — Vite Plugin v5\n *\n * Usage in vite.config.ts:\n * import { tailwindStyledPlugin } from \"@tailwind-styled/vite\"\n * export default defineConfig({\n * plugins: [react(), tailwindStyledPlugin()]\n * })\n *\n * v5 Changes:\n * - Simplified API (removed deprecated options)\n * - Uses @tailwind-styled/engine for build\n * - Mode always zero-runtime\n */\n\nimport fs from \"node:fs\"\nimport path from \"node:path\"\n\nimport type { LoaderOptions, TransformOptions } from \"@tailwind-styled/compiler\"\nimport { generateSafelist, runLoaderTransform } from \"@tailwind-styled/compiler\"\nimport { createEngine } from \"@tailwind-styled/engine\"\nimport { scanWorkspaceAsync } from \"@tailwind-styled/scanner\"\n\nexport interface VitePluginOptions {\n /** File patterns to include. Default: /\\.(tsx|ts|jsx|js)$/ */\n include?: RegExp\n /** File patterns to exclude. Default: /node_modules/ */\n exclude?: RegExp\n /** Directories to scan. Default: [\"src\"] */\n scanDirs?: string[]\n /** Safelist output path. Default: \".tailwind-styled-safelist.json\" */\n safelistOutput?: string\n /** Generate safelist at build end. Default: true */\n generateSafelist?: boolean\n /** Scan report output path. Default: \".tailwind-styled-scan-report.json\" */\n scanReportOutput?: string\n /** Run engine build at build end. Default: true */\n useEngineBuild?: boolean\n /** Enable analyzer for semantic reports. Default: false */\n analyze?: boolean\n /** Throw error on engine build failure. If true, error will abort Vite build (useful for CI/CD). If false (default), error only shows console.warn. Default: false */\n strict?: boolean\n\n /** @deprecated in v5 - mode is always \"zero-runtime\" */\n mode?: \"zero-runtime\" | \"runtime\"\n /** @deprecated in v5 - handled by engine */\n routeCss?: boolean\n /** @deprecated in v5 - handled by engine with analyze: true */\n deadStyleElimination?: boolean\n /** @deprecated in v5 - no longer used */\n addDataAttr?: boolean\n /** @deprecated in v5 - no longer used */\n autoClientBoundary?: boolean\n /** @deprecated in v5 - no longer used */\n hoist?: boolean\n /** @deprecated in v5 - no longer used */\n incremental?: boolean\n}\n\nfunction warnDeprecated(options: VitePluginOptions, key: keyof VitePluginOptions, message: string) {\n if (options[key] !== undefined) {\n console.warn(`[tailwind-styled-v4] Warning: '${key}' is deprecated in v5. ${message}`)\n }\n}\n\nexport function tailwindStyledPlugin(opts: VitePluginOptions = {}): any {\n warnDeprecated(opts, \"mode\", \"Only zero-runtime is supported.\")\n warnDeprecated(opts, \"routeCss\", \"Use engine's analyzing capabilities.\")\n warnDeprecated(opts, \"deadStyleElimination\", \"Use 'analyze: true' option instead.\")\n warnDeprecated(opts, \"addDataAttr\", \"Handled by engine internally.\")\n warnDeprecated(opts, \"autoClientBoundary\", \"Handled by engine internally.\")\n warnDeprecated(opts, \"hoist\", \"Handled by engine internally.\")\n warnDeprecated(opts, \"incremental\", \"Handled by engine internally.\")\n\n const {\n include = /\\.(tsx|ts|jsx|js)$/,\n exclude = /node_modules/,\n scanDirs = [\"src\"],\n safelistOutput = \".tailwind-styled-safelist.json\",\n scanReportOutput = \".tailwind-styled-scan-report.json\",\n generateSafelist: doSafelist = true,\n useEngineBuild = true,\n analyze = false,\n strict = false,\n } = opts\n\n let root = process.cwd()\n let isDev = true\n\n return {\n name: \"tailwind-styled-v4\",\n enforce: \"pre\" as const,\n\n configResolved(config: any) {\n root = config.root\n isDev = config.command === \"serve\"\n },\n\n transform(source: string, id: string) {\n const filepath = id.split(\"?\")[0]\n if (!include.test(filepath)) return null\n if (exclude.test(filepath)) return null\n\n const loaderOptions: LoaderOptions = {\n // v5: Always zero-runtime (mode is deprecated)\n mode: \"zero-runtime\",\n addDataAttr: isDev,\n filename: filepath,\n // Preserve cv, cx, cn, etc — only tw.* is transformed\n preserveImports: true,\n }\n\n const output = runLoaderTransform({\n filepath,\n source,\n options: loaderOptions,\n isDev,\n })\n\n if (!output.changed) return null\n return { code: output.code, map: null }\n },\n\n async buildEnd() {\n if (isDev) return\n\n if (doSafelist) {\n try {\n generateSafelist(\n scanDirs.map((d) => path.resolve(root, d)),\n path.resolve(root, safelistOutput),\n root\n )\n } catch (e) {\n console.warn(\"[tailwind-styled-v4] Safelist generation failed:\", e)\n }\n }\n\n try {\n const report = await scanWorkspaceAsync(root)\n const reportPath = path.resolve(root, scanReportOutput)\n fs.writeFileSync(\n reportPath,\n JSON.stringify(\n {\n root,\n totalFiles: report.totalFiles,\n uniqueClassCount: report.uniqueClasses.length,\n },\n null,\n 2\n ) + \"\\n\"\n )\n } catch (e) {\n console.warn(\"[tailwind-styled-v4] Scan report generation failed:\", e)\n }\n\n if (useEngineBuild) {\n try {\n const engine = await createEngine({\n root,\n compileCss: true,\n analyze,\n scanner: {\n includeExtensions: [\".tsx\", \".ts\", \".jsx\", \".js\"],\n ignoreDirectories: scanDirs,\n },\n })\n await engine.build()\n console.log(\"[tailwind-styled-v4] ✓ Engine build complete\")\n } catch (e) {\n const msg = `[tailwind-styled-v4] Engine build step failed: ${e}`\n if (strict) {\n throw new Error(msg)\n } else {\n console.warn(msg)\n }\n }\n }\n },\n\n handleHotUpdate({ file, server }: any) {\n if (include.test(file) && !exclude.test(file)) {\n server.ws.send({ type: \"full-reload\" })\n }\n },\n }\n}\n\nexport default tailwindStyledPlugin\n"]}