tailwind-styled-v4 4.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/animate.cjs +754 -235
  2. package/dist/animate.cjs.map +1 -1
  3. package/dist/animate.d.cts +55 -99
  4. package/dist/animate.d.ts +55 -99
  5. package/dist/animate.js +742 -235
  6. package/dist/animate.js.map +1 -1
  7. package/dist/chunk-VZEJV27B.js +11 -0
  8. package/dist/chunk-VZEJV27B.js.map +1 -0
  9. package/dist/chunk-Y5D3E72P.cjs +13 -0
  10. package/dist/chunk-Y5D3E72P.cjs.map +1 -0
  11. package/dist/css.cjs +61 -11
  12. package/dist/css.cjs.map +1 -1
  13. package/dist/css.d.cts +3 -18
  14. package/dist/css.d.ts +3 -18
  15. package/dist/css.js +61 -11
  16. package/dist/css.js.map +1 -1
  17. package/dist/devtools.cjs +200 -88
  18. package/dist/devtools.cjs.map +1 -1
  19. package/dist/devtools.js +200 -88
  20. package/dist/devtools.js.map +1 -1
  21. package/dist/index.cjs +430 -135
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +74 -3
  24. package/dist/index.d.ts +74 -3
  25. package/dist/index.js +415 -132
  26. package/dist/index.js.map +1 -1
  27. package/dist/next.cjs +118 -138
  28. package/dist/next.cjs.map +1 -1
  29. package/dist/next.d.cts +28 -19
  30. package/dist/next.d.ts +28 -19
  31. package/dist/next.js +111 -131
  32. package/dist/next.js.map +1 -1
  33. package/dist/preset.cjs +312 -18
  34. package/dist/preset.cjs.map +1 -1
  35. package/dist/preset.d.cts +29 -2
  36. package/dist/preset.d.ts +29 -2
  37. package/dist/preset.js +311 -19
  38. package/dist/preset.js.map +1 -1
  39. package/dist/turbopackLoader.cjs +24 -2676
  40. package/dist/turbopackLoader.cjs.map +1 -1
  41. package/dist/turbopackLoader.d.cts +3 -13
  42. package/dist/turbopackLoader.d.ts +3 -13
  43. package/dist/turbopackLoader.js +24 -2670
  44. package/dist/turbopackLoader.js.map +1 -1
  45. package/dist/vite.cjs +90 -57
  46. package/dist/vite.cjs.map +1 -1
  47. package/dist/vite.d.cts +35 -6
  48. package/dist/vite.d.ts +35 -6
  49. package/dist/vite.js +90 -58
  50. package/dist/vite.js.map +1 -1
  51. package/dist/webpackLoader.cjs +27 -2646
  52. package/dist/webpackLoader.cjs.map +1 -1
  53. package/dist/webpackLoader.d.cts +3 -10
  54. package/dist/webpackLoader.d.ts +3 -10
  55. package/dist/webpackLoader.js +27 -2640
  56. package/dist/webpackLoader.js.map +1 -1
  57. package/package.json +31 -28
  58. package/dist/astTransform-ua-eapqs.d.cts +0 -41
  59. package/dist/astTransform-ua-eapqs.d.ts +0 -41
  60. package/dist/compiler.cjs +0 -3594
  61. package/dist/compiler.cjs.map +0 -1
  62. package/dist/compiler.d.cts +0 -716
  63. package/dist/compiler.d.ts +0 -716
  64. package/dist/compiler.js +0 -3535
  65. package/dist/compiler.js.map +0 -1
  66. package/dist/plugins.cjs +0 -396
  67. package/dist/plugins.cjs.map +0 -1
  68. package/dist/plugins.d.cts +0 -231
  69. package/dist/plugins.d.ts +0 -231
  70. package/dist/plugins.js +0 -381
  71. package/dist/plugins.js.map +0 -1
  72. package/dist/theme.cjs +0 -154
  73. package/dist/theme.cjs.map +0 -1
  74. package/dist/theme.d.cts +0 -181
  75. package/dist/theme.d.ts +0 -181
  76. package/dist/theme.js +0 -148
  77. package/dist/theme.js.map +0 -1
package/dist/next.js CHANGED
@@ -1,62 +1,55 @@
1
+ import { __require } from './chunk-VZEJV27B.js';
1
2
  import fs from 'fs';
2
3
  import path from 'path';
3
4
 
4
5
  /* tailwind-styled-v4 v4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
5
- var __defProp = Object.defineProperty;
6
- var __defProps = Object.defineProperties;
7
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
8
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {}))
14
- if (__hasOwnProp.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- if (__propIsEnum.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- }
21
- return a;
22
- };
23
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
25
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
26
- }) : x)(function(x) {
27
- if (typeof require !== "undefined") return require.apply(this, arguments);
28
- throw Error('Dynamic require of "' + x + '" is not supported');
29
- });
30
6
  var LOADER_PATH = __require.resolve("./turbopackLoader");
31
7
  var WEBPACK_LOADER_PATH = __require.resolve("./webpackLoader");
8
+ function warnDeprecated(options, key, message) {
9
+ if (options[key] !== void 0) {
10
+ console.warn(`[tailwind-styled-v4] Warning: '${key}' is deprecated in v5. ${message}`);
11
+ }
12
+ }
32
13
  function withTailwindStyled(opts = {}) {
33
14
  return (nextConfig = {}) => {
34
- var _a, _b, _c;
35
15
  const cwd = process.cwd();
36
16
  const isDev = process.env.NODE_ENV !== "production";
37
- const hasReactCompiler = nextConfig.reactCompiler === true || ((_a = nextConfig.experimental) == null ? void 0 : _a.reactCompiler) === true;
17
+ warnDeprecated(opts, "mode", "Only zero-runtime is supported in v5.");
18
+ warnDeprecated(opts, "atomic", "Use @tailwind-styled/atomic package instead.");
19
+ warnDeprecated(opts, "staticVariants", "Handled automatically by the engine.");
20
+ warnDeprecated(opts, "deadStyleElimination", "Use engine with analyze: true instead.");
21
+ warnDeprecated(opts, "incremental", "Handled internally by the engine.");
22
+ warnDeprecated(opts, "styleBuckets", "Handled internally by the engine.");
23
+ warnDeprecated(opts, "incrementalVerbose", "Handled internally by the engine.");
24
+ const hasReactCompiler = nextConfig.reactCompiler === true || nextConfig.experimental?.reactCompiler === true;
38
25
  if (hasReactCompiler && isDev) {
39
26
  console.log("[tailwind-styled-v4] React Compiler detected \u2192 hoist disabled");
40
27
  }
41
28
  const {
42
29
  scanDirs = ["src"],
43
30
  safelistOutput = "src/app/__tw-safelist.css",
31
+ addDataAttr = isDev,
44
32
  autoClientBoundary = true,
45
33
  hoist = !hasReactCompiler,
46
- atomic = false,
47
34
  routeCssDir = path.join(cwd, ".next", "static", "css", "tw"),
48
35
  zeroConfig = true,
49
36
  plugins = [],
50
- devtools = isDev,
51
- staticVariants = !isDev,
52
- deadStyleElimination = !isDev
37
+ devtools = isDev
53
38
  } = opts;
54
39
  const routeCss = opts.routeCss !== void 0 ? opts.routeCss : !isDev;
40
+ const devManifest = opts.devManifest !== void 0 ? opts.devManifest : isDev;
41
+ const devManifestRewrites = devManifest && isDev ? [
42
+ {
43
+ source: "/__tw/css-manifest.json",
44
+ destination: "/.next/static/css/tw/css-manifest.json"
45
+ },
46
+ { source: "/__tw/:path*.css", destination: "/.next/static/css/tw/:path*.css" }
47
+ ] : [];
55
48
  if (zeroConfig) {
56
49
  try {
57
50
  const { bootstrapZeroConfig } = __require("@tailwind-styled/compiler");
58
51
  bootstrapZeroConfig(cwd);
59
- } catch (e) {
52
+ } catch {
60
53
  }
61
54
  }
62
55
  const safelistAbsPath = path.isAbsolute(safelistOutput) ? safelistOutput : path.resolve(cwd, safelistOutput);
@@ -67,7 +60,7 @@ function withTailwindStyled(opts = {}) {
67
60
  safelistAbsPath,
68
61
  "/* Auto-generated by tailwind-styled-v4 \u2014 DO NOT EDIT */\n"
69
62
  );
70
- } catch (e) {
63
+ } catch {
71
64
  }
72
65
  }
73
66
  if (plugins.length > 0) {
@@ -82,41 +75,51 @@ function withTailwindStyled(opts = {}) {
82
75
  }
83
76
  }
84
77
  const loaderOpts = {
85
- mode: opts.mode,
86
- addDataAttr: (_b = opts.addDataAttr) != null ? _b : isDev,
87
- autoClientBoundary,
88
- hoist,
89
- atomic,
90
- routeCss,
91
- staticVariants
78
+ addDataAttr: addDataAttr ? "true" : "false",
79
+ autoClientBoundary: autoClientBoundary ? "true" : "false",
80
+ hoist: hoist ? "true" : "false"
92
81
  };
93
- return __spreadProps(__spreadValues({}, nextConfig), {
94
- experimental: __spreadValues({}, nextConfig.experimental),
95
- // Next.js 16+: turbopack moved to top-level
96
- // FIX TURBOPACK: pattern "*.{tsx,ts,jsx,js}" terlalu lebar — ikut match
97
- // node_modules/next/dist/client/*.js.tsx dan trigger "Missing module type".
98
- // Solusi: scope pattern ke scanDirs saja, jangan catch-all.
99
- // `as` field dihapus — tidak perlu karena loader output tetap TSX-compatible.
100
- turbopack: __spreadProps(__spreadValues({}, nextConfig.turbopack), {
101
- rules: __spreadValues(__spreadValues({}, Object.fromEntries(
102
- scanDirs.flatMap((dir) => [
103
- [
104
- `{./${dir},./src,./app,./pages,./components}/**/*.tsx`,
105
- {
106
- loaders: [{ loader: LOADER_PATH, options: loaderOpts }]
107
- }
108
- ],
109
- [
110
- `{./${dir},./src,./app,./pages,./components}/**/*.ts`,
111
- {
112
- loaders: [{ loader: LOADER_PATH, options: loaderOpts }]
113
- }
114
- ]
115
- ])
116
- )), (_c = nextConfig.turbopack) == null ? void 0 : _c.rules)
117
- }),
82
+ return {
83
+ ...nextConfig,
84
+ // Dev mode rewrites for /__tw/ manifest serving
85
+ ...devManifestRewrites.length > 0 ? {
86
+ async rewrites() {
87
+ const existing = typeof nextConfig.rewrites === "function" ? await nextConfig.rewrites() : nextConfig.rewrites ?? [];
88
+ const {
89
+ beforeFiles = [],
90
+ afterFiles = [],
91
+ fallback = []
92
+ } = Array.isArray(existing) ? { beforeFiles: existing } : existing;
93
+ return { beforeFiles: [...devManifestRewrites, ...beforeFiles], afterFiles, fallback };
94
+ }
95
+ } : {},
96
+ experimental: {
97
+ ...nextConfig.experimental
98
+ },
99
+ // Turbopack rules
100
+ turbopack: {
101
+ ...nextConfig.turbopack,
102
+ rules: {
103
+ ...Object.fromEntries(
104
+ scanDirs.flatMap((dir) => [
105
+ [
106
+ `{./${dir},./app,./pages,./components}/**/*.tsx`,
107
+ {
108
+ loaders: [{ loader: LOADER_PATH, options: loaderOpts }]
109
+ }
110
+ ],
111
+ [
112
+ `{./${dir},./app,./pages,./components}/**/*.ts`,
113
+ {
114
+ loaders: [{ loader: LOADER_PATH, options: loaderOpts }]
115
+ }
116
+ ]
117
+ ])
118
+ ),
119
+ ...nextConfig.turbopack?.rules
120
+ }
121
+ },
118
122
  webpack(webpackConfig, webpackOpts) {
119
- var _a2, _b2, _c2, _d;
120
123
  const alreadyRegistered = webpackConfig.module.rules.some(
121
124
  (r) => r._tailwindStyledMarker === true
122
125
  );
@@ -128,19 +131,20 @@ function withTailwindStyled(opts = {}) {
128
131
  use: [
129
132
  {
130
133
  loader: WEBPACK_LOADER_PATH,
131
- options: __spreadProps(__spreadValues({}, loaderOpts), {
132
- mode: (_a2 = opts.mode) != null ? _a2 : webpackOpts.dev ? "runtime" : "zero-runtime",
133
- addDataAttr: (_b2 = opts.addDataAttr) != null ? _b2 : webpackOpts.dev
134
- })
134
+ options: {
135
+ ...loaderOpts,
136
+ addDataAttr: opts.addDataAttr ?? webpackOpts.dev
137
+ }
135
138
  }
136
139
  ]
137
140
  });
138
141
  }
139
142
  if (devtools && webpackOpts.dev) {
140
- webpackConfig.resolve = (_c2 = webpackConfig.resolve) != null ? _c2 : {};
141
- webpackConfig.resolve.alias = __spreadProps(__spreadValues({}, (_d = webpackConfig.resolve.alias) != null ? _d : {}), {
143
+ webpackConfig.resolve = webpackConfig.resolve ?? {};
144
+ webpackConfig.resolve.alias = {
145
+ ...webpackConfig.resolve.alias ?? void 0,
142
146
  "tailwind-styled-v4/devtools": path.resolve(__dirname, "../../devtools/src/index.tsx")
143
- });
147
+ };
144
148
  }
145
149
  return typeof nextConfig.webpack === "function" ? nextConfig.webpack(webpackConfig, webpackOpts) : webpackConfig;
146
150
  },
@@ -166,37 +170,40 @@ function withTailwindStyled(opts = {}) {
166
170
  }
167
171
  if (routeCss) {
168
172
  try {
169
- const {
170
- generateAllRouteCss,
171
- getCollectorSummary,
172
- runElimination
173
- } = __require("@tailwind-styled/compiler");
174
- const results = await generateAllRouteCss({ cwd, outputDir: routeCssDir, minify: true });
175
- console.log(getCollectorSummary());
176
- if (deadStyleElimination) {
177
- let totalSaved = 0;
178
- for (const result of results) {
179
- const routeFile = path.join(
180
- routeCssDir,
181
- result.route === "/" ? "index.css" : `${result.route.replace(/\//g, "_")}.css`
182
- );
183
- if (fs.existsSync(routeFile)) {
184
- const inputCss = fs.readFileSync(routeFile, "utf-8");
185
- const { css, report } = runElimination({ dirs: scanDirs, cwd, inputCss });
186
- fs.writeFileSync(routeFile, css);
187
- totalSaved += report.bytesSaved;
188
- }
189
- }
190
- if (totalSaved > 0) {
191
- console.log(
192
- `[tailwind-styled-v4] \u2713 Dead styles eliminated: ~${(totalSaved / 1024).toFixed(1)}KB saved`
193
- );
194
- }
173
+ const { createEngine } = __require("@tailwind-styled/engine");
174
+ const engine = await createEngine({
175
+ root: cwd,
176
+ scanner: {
177
+ includeExtensions: [".tsx", ".ts", ".jsx", ".js"],
178
+ ignoreDirectories: scanDirs
179
+ },
180
+ compileCss: true,
181
+ tailwindConfigPath: zeroConfig ? void 0 : "tailwind.config.ts",
182
+ plugins: []
183
+ });
184
+ const buildResult = await engine.build();
185
+ if (buildResult.css) {
186
+ const routeDir = routeCssDir;
187
+ fs.mkdirSync(routeDir, { recursive: true });
188
+ const indexCssPath = path.join(routeDir, "index.css");
189
+ fs.writeFileSync(indexCssPath, buildResult.css);
190
+ const manifest = { "/": "index.css" };
191
+ const manifestPath = path.join(
192
+ cwd,
193
+ ".next",
194
+ "static",
195
+ "css",
196
+ "tw",
197
+ "css-manifest.json"
198
+ );
199
+ fs.mkdirSync(path.dirname(manifestPath), { recursive: true });
200
+ fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
201
+ const sizeKb = Buffer.byteLength(buildResult.css, "utf8") / 1024;
202
+ console.log(`[tailwind-styled-v4] \u2713 Route CSS: ${sizeKb.toFixed(1)}KB`);
203
+ console.log(
204
+ "[tailwind-styled-v4] \u2713 Route CSS manifest \u2192 .next/static/css/tw/css-manifest.json"
205
+ );
195
206
  }
196
- const totalKb = results.reduce((s, r) => s + r.sizeBytes, 0) / 1024;
197
- console.log(
198
- `[tailwind-styled-v4] \u2713 Route CSS: ${results.length} routes, ${totalKb.toFixed(1)}KB`
199
- );
200
207
  } catch (e) {
201
208
  console.warn("[tailwind-styled-v4] Route CSS skipped:", e);
202
209
  }
@@ -222,37 +229,10 @@ function withTailwindStyled(opts = {}) {
222
229
  console.warn("[tailwind-styled-v4] Plugin CSS skipped:", e);
223
230
  }
224
231
  }
225
- const { incremental = true, styleBuckets = true, incrementalVerbose = false } = opts;
226
- if (incremental) {
227
- try {
228
- const { getIncrementalEngine, getBucketEngine } = __require("@tailwind-styled/compiler");
229
- const engine = getIncrementalEngine({ verbose: incrementalVerbose });
230
- engine.buildEndSync();
231
- const stats = engine.getStats();
232
- console.log(
233
- `[tailwind-styled-v4] \u2713 Incremental: ${stats.changedFiles}/${stats.totalFiles} files changed | +${stats.addedRules} -${stats.removedRules} rules | ${stats.buildTimeMs}ms`
234
- );
235
- if (styleBuckets) {
236
- const buckets = getBucketEngine();
237
- const allNodes = engine.getAllNodes();
238
- for (const node of allNodes) buckets.add(node);
239
- const css = buckets.emit();
240
- const outPath = path.join(cwd, "public", "__tw-atomic.css");
241
- fs.mkdirSync(path.dirname(outPath), { recursive: true });
242
- fs.writeFileSync(outPath, css);
243
- const bStats = buckets.stats();
244
- console.log(
245
- `[tailwind-styled-v4] \u2713 Bucket CSS \u2192 public/__tw-atomic.css | ${bStats.totalNodes} rules`
246
- );
247
- }
248
- } catch (e) {
249
- console.warn("[tailwind-styled-v4] Incremental engine flush skipped:", e);
250
- }
251
- }
252
232
  if (typeof nextConfig.generateBuildId === "function") return nextConfig.generateBuildId();
253
233
  return null;
254
234
  }
255
- });
235
+ };
256
236
  };
257
237
  }
258
238
 
package/dist/next.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../next/src/withTailwindStyled.ts"],"names":["_a","_b","_c"],"mappings":"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","file":"next.js","sourcesContent":["/**\n * tailwind-styled-v4 — withTailwindStyled v3\n *\n * Next.js plugin dengan full v3 integration:\n * - Plugin system\n * - DevTools overlay\n * - Static variant compilation\n * - Dead style elimination\n * - Route CSS bundling\n * - React Compiler compat\n * - Idempotency guard\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 mode?: \"zero-runtime\" | \"runtime\"\n addDataAttr?: boolean\n scanDirs?: string[]\n safelistOutput?: string\n autoClientBoundary?: boolean\n hoist?: boolean\n routeCss?: boolean\n routeCssDir?: string\n atomic?: boolean\n zeroConfig?: boolean\n /** v3: plugins array */\n plugins?: TwPlugin[]\n /** v3: DevTools overlay. Default: true in dev */\n devtools?: boolean\n /** v3: pre-compile all variant combos. Default: true in prod */\n staticVariants?: boolean\n /** v3: remove unused variant CSS at build. Default: true in prod */\n deadStyleElimination?: boolean\n /** v4: incremental CSS compiler — only recompile changed files. Default: true */\n incremental?: boolean\n /** v4: style bucket system — deterministic CSS ordering. Default: true */\n styleBuckets?: boolean\n /** v4: verbose logging untuk incremental engine. Default: false */\n incrementalVerbose?: boolean\n}\n\nconst LOADER_PATH = require.resolve(\"./turbopackLoader\")\nconst WEBPACK_LOADER_PATH = require.resolve(\"./webpackLoader\")\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 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 autoClientBoundary = true,\n hoist = !hasReactCompiler,\n atomic = false,\n routeCssDir = path.join(cwd, \".next\", \"static\", \"css\", \"tw\"),\n zeroConfig = true,\n plugins = [],\n devtools = isDev,\n staticVariants = !isDev,\n deadStyleElimination = !isDev,\n } = opts\n\n const routeCss = opts.routeCss !== undefined ? opts.routeCss : !isDev\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 (even empty) so @import in globals.css doesn't fail\n // on first run before generateBuildId has been called.\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 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 const loaderOpts = {\n mode: opts.mode,\n addDataAttr: opts.addDataAttr ?? isDev,\n autoClientBoundary,\n hoist,\n atomic,\n routeCss,\n staticVariants,\n }\n\n return {\n ...nextConfig,\n\n experimental: {\n ...(nextConfig.experimental as any),\n },\n\n // Next.js 16+: turbopack moved to top-level\n // FIX TURBOPACK: pattern \"*.{tsx,ts,jsx,js}\" terlalu lebar — ikut match\n // node_modules/next/dist/client/*.js.tsx dan trigger \"Missing module type\".\n // Solusi: scope pattern ke scanDirs saja, jangan catch-all.\n // `as` field dihapus — tidak perlu karena loader output tetap TSX-compatible.\n turbopack: {\n ...(nextConfig as any).turbopack,\n rules: {\n ...Object.fromEntries(\n scanDirs.flatMap((dir: string) => [\n [\n `{./${dir},./src,./app,./pages,./components}/**/*.tsx`,\n {\n loaders: [{ loader: LOADER_PATH, options: loaderOpts }],\n },\n ],\n [\n `{./${dir},./src,./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 // FIX #08: idempotency\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 mode: opts.mode ?? (webpackOpts.dev ? \"runtime\" : \"zero-runtime\"),\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 ?? {}),\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 — Tailwind v4: output @source inline() CSS (not JSON)\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 + dead style elimination\n if (routeCss) {\n try {\n const {\n generateAllRouteCss,\n getCollectorSummary,\n runElimination,\n } = require(\"@tailwind-styled/compiler\")\n\n const results = await generateAllRouteCss({ cwd, outputDir: routeCssDir, minify: true })\n console.log(getCollectorSummary())\n\n if (deadStyleElimination) {\n let totalSaved = 0\n for (const result of results) {\n const routeFile = path.join(\n routeCssDir,\n result.route === \"/\" ? \"index.css\" : `${result.route.replace(/\\//g, \"_\")}.css`\n )\n if (fs.existsSync(routeFile)) {\n const inputCss = fs.readFileSync(routeFile, \"utf-8\")\n const { css, report } = runElimination({ dirs: scanDirs, cwd, inputCss })\n fs.writeFileSync(routeFile, css)\n totalSaved += report.bytesSaved\n }\n }\n if (totalSaved > 0) {\n console.log(\n `[tailwind-styled-v4] ✓ Dead styles eliminated: ~${(totalSaved / 1024).toFixed(1)}KB saved`\n )\n }\n }\n\n const totalKb = results.reduce((s: number, r: any) => s + r.sizeBytes, 0) / 1024\n console.log(\n `[tailwind-styled-v4] ✓ Route CSS: ${results.length} routes, ${totalKb.toFixed(1)}KB`\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 // 5. Incremental engine + bucket system flush\n const { incremental = true, styleBuckets = true, incrementalVerbose = false } = opts\n if (incremental) {\n try {\n const { getIncrementalEngine, getBucketEngine } = require(\"@tailwind-styled/compiler\")\n\n const engine = getIncrementalEngine({ verbose: incrementalVerbose })\n engine.buildEndSync()\n\n const stats = engine.getStats()\n console.log(\n `[tailwind-styled-v4] ✓ Incremental: ${stats.changedFiles}/${stats.totalFiles} files changed | ` +\n `+${stats.addedRules} -${stats.removedRules} rules | ${stats.buildTimeMs}ms`\n )\n\n if (styleBuckets) {\n const buckets = getBucketEngine()\n const allNodes = engine.getAllNodes()\n for (const node of allNodes) buckets.add(node)\n const css = buckets.emit()\n const outPath = path.join(cwd, \"public\", \"__tw-atomic.css\")\n fs.mkdirSync(path.dirname(outPath), { recursive: true })\n fs.writeFileSync(outPath, css)\n const bStats = buckets.stats()\n console.log(\n `[tailwind-styled-v4] ✓ Bucket CSS → public/__tw-atomic.css | ` +\n `${bStats.totalNodes} rules`\n )\n }\n } catch (e) {\n console.warn(\"[tailwind-styled-v4] Incremental engine flush 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"]}
1
+ {"version":3,"sources":["../../next/src/withTailwindStyled.ts"],"names":[],"mappings":";;;;;AAuDA,IAAM,WAAA,GAAc,SAAA,CAAQ,OAAA,CAAQ,mBAAmB,CAAA;AACvD,IAAM,mBAAA,GAAsB,SAAA,CAAQ,OAAA,CAAQ,iBAAiB,CAAA;AAE7D,SAAS,cAAA,CACP,OAAA,EACA,GAAA,EACA,OAAA,EACA;AACA,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,kBAAA,CAAmB,IAAA,GAAkC,EAAC,EAAG;AACvE,EAAA,OAAO,CAAC,UAAA,GAAyB,EAAC,KAAkB;AAClD,IAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,EAAI;AACxB,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA;AAEvC,IAAA,cAAA,CAAe,IAAA,EAAM,QAAQ,uCAAuC,CAAA;AACpE,IAAA,cAAA,CAAe,IAAA,EAAM,UAAU,8CAA8C,CAAA;AAC7E,IAAA,cAAA,CAAe,IAAA,EAAM,kBAAkB,sCAAsC,CAAA;AAC7E,IAAA,cAAA,CAAe,IAAA,EAAM,wBAAwB,wCAAwC,CAAA;AACrF,IAAA,cAAA,CAAe,IAAA,EAAM,eAAe,mCAAmC,CAAA;AACvE,IAAA,cAAA,CAAe,IAAA,EAAM,gBAAgB,mCAAmC,CAAA;AACxE,IAAA,cAAA,CAAe,IAAA,EAAM,sBAAsB,mCAAmC,CAAA;AAE9E,IAAA,MAAM,mBACH,UAAA,CAAmB,aAAA,KAAkB,IAAA,IACrC,UAAA,CAAmB,cAAc,aAAA,KAAkB,IAAA;AAEtD,IAAA,IAAI,oBAAoB,KAAA,EAAO;AAC7B,MAAA,OAAA,CAAQ,IAAI,oEAA+D,CAAA;AAAA,IAC7E;AAEA,IAAA,MAAM;AAAA,MACJ,QAAA,GAAW,CAAC,KAAK,CAAA;AAAA,MACjB,cAAA,GAAiB,2BAAA;AAAA,MACjB,WAAA,GAAc,KAAA;AAAA,MACd,kBAAA,GAAqB,IAAA;AAAA,MACrB,QAAQ,CAAC,gBAAA;AAAA,MACT,cAAc,IAAA,CAAK,IAAA,CAAK,KAAK,OAAA,EAAS,QAAA,EAAU,OAAO,IAAI,CAAA;AAAA,MAC3D,UAAA,GAAa,IAAA;AAAA,MACb,UAAU,EAAC;AAAA,MACX,QAAA,GAAW;AAAA,KACb,GAAI,IAAA;AAEJ,IAAA,MAAM,WAAW,IAAA,CAAK,QAAA,KAAa,MAAA,GAAY,IAAA,CAAK,WAAW,CAAC,KAAA;AAChE,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,WAAA,KAAgB,MAAA,GAAY,KAAK,WAAA,GAAc,KAAA;AACxE,IAAA,MAAM,mBAAA,GACJ,eAAe,KAAA,GACX;AAAA,MACE;AAAA,QACE,MAAA,EAAQ,yBAAA;AAAA,QACR,WAAA,EAAa;AAAA,OACf;AAAA,MACA,EAAE,MAAA,EAAQ,kBAAA,EAAoB,WAAA,EAAa,iCAAA;AAAkC,QAE/E,EAAC;AAEP,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,IAAI;AACF,QAAA,MAAM,EAAE,mBAAA,EAAoB,GAAI,SAAA,CAAQ,2BAA2B,CAAA;AACnE,QAAA,mBAAA,CAAoB,GAAG,CAAA;AAAA,MACzB,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF;AAGA,IAAA,MAAM,eAAA,GAAkB,KAAK,UAAA,CAAW,cAAc,IAClD,cAAA,GACA,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAK,cAAc,CAAA;AACpC,IAAA,IAAI,CAAC,EAAA,CAAG,UAAA,CAAW,eAAe,CAAA,EAAG;AACnC,MAAA,IAAI;AACF,QAAA,EAAA,CAAG,SAAA,CAAU,KAAK,OAAA,CAAQ,eAAe,GAAG,EAAE,SAAA,EAAW,MAAM,CAAA;AAC/D,QAAA,EAAA,CAAG,aAAA;AAAA,UACD,eAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF;AAGA,IAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,MAAA,IAAI;AACF,QAAA,MAAM,EAAE,GAAA,EAAI,GAAI,SAAA,CAAQ,yBAAyB,CAAA;AACjD,QAAA,KAAA,MAAW,MAAA,IAAU,OAAA,EAAS,GAAA,CAAI,MAAM,CAAA;AACxC,QAAA,OAAA,CAAQ,GAAA;AAAA,UACN,CAAA,qBAAA,EAAwB,OAAA,CAAQ,MAAM,CAAA,YAAA,EAAe,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAgB,CAAA,CAAE,IAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,SACtG;AAAA,MACF,SAAS,CAAA,EAAG;AACV,QAAA,OAAA,CAAQ,IAAA,CAAK,4CAA4C,CAAC,CAAA;AAAA,MAC5D;AAAA,IACF;AAGA,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,WAAA,EAAa,cAAc,MAAA,GAAS,OAAA;AAAA,MACpC,kBAAA,EAAoB,qBAAqB,MAAA,GAAS,OAAA;AAAA,MAClD,KAAA,EAAO,QAAQ,MAAA,GAAS;AAAA,KAC1B;AAEA,IAAA,OAAO;AAAA,MACL,GAAG,UAAA;AAAA;AAAA,MAGH,GAAI,mBAAA,CAAoB,MAAA,GAAS,CAAA,GAC7B;AAAA,QACE,MAAM,QAAA,GAAW;AACf,UAAA,MAAM,QAAA,GACJ,OAAO,UAAA,CAAW,QAAA,KAAa,UAAA,GAC3B,MAAM,UAAA,CAAW,QAAA,EAAS,GACzB,UAAA,CAAW,QAAA,IAAY,EAAC;AAC/B,UAAA,MAAM;AAAA,YACJ,cAAc,EAAC;AAAA,YACf,aAAa,EAAC;AAAA,YACd,WAAW;AAAC,WACd,GAAI,MAAM,OAAA,CAAQ,QAAQ,IAAI,EAAE,WAAA,EAAa,UAAkB,GAAK,QAAA;AACpE,UAAA,OAAO,EAAE,aAAa,CAAC,GAAG,qBAAqB,GAAG,WAAW,CAAA,EAAG,UAAA,EAAY,QAAA,EAAS;AAAA,QACvF;AAAA,UAEF,EAAC;AAAA,MAEL,YAAA,EAAc;AAAA,QACZ,GAAI,UAAA,CAAW;AAAA,OACjB;AAAA;AAAA,MAGA,SAAA,EAAW;AAAA,QACT,GAAI,UAAA,CAAmB,SAAA;AAAA,QACvB,KAAA,EAAO;AAAA,UACL,GAAG,MAAA,CAAO,WAAA;AAAA,YACR,QAAA,CAAS,OAAA,CAAQ,CAAC,GAAA,KAAgB;AAAA,cAChC;AAAA,gBACE,MAAM,GAAG,CAAA,qCAAA,CAAA;AAAA,gBACT;AAAA,kBACE,SAAS,CAAC,EAAE,QAAQ,WAAA,EAAa,OAAA,EAAS,YAAY;AAAA;AACxD,eACF;AAAA,cACA;AAAA,gBACE,MAAM,GAAG,CAAA,oCAAA,CAAA;AAAA,gBACT;AAAA,kBACE,SAAS,CAAC,EAAE,QAAQ,WAAA,EAAa,OAAA,EAAS,YAAY;AAAA;AACxD;AACF,aACD;AAAA,WACH;AAAA,UACA,GAAI,WAAmB,SAAA,EAAW;AAAA;AACpC,OACF;AAAA,MAEA,OAAA,CAAQ,eAAoB,WAAA,EAAkB;AAC5C,QAAA,MAAM,iBAAA,GAAoB,aAAA,CAAc,MAAA,CAAO,KAAA,CAAM,IAAA;AAAA,UACnD,CAAC,CAAA,KAAW,CAAA,CAAE,qBAAA,KAA0B;AAAA,SAC1C;AACA,QAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,UAAA,aAAA,CAAc,MAAA,CAAO,MAAM,IAAA,CAAK;AAAA,YAC9B,qBAAA,EAAuB,IAAA;AAAA,YACvB,IAAA,EAAM,oBAAA;AAAA,YACN,OAAA,EAAS,cAAA;AAAA,YACT,GAAA,EAAK;AAAA,cACH;AAAA,gBACE,MAAA,EAAQ,mBAAA;AAAA,gBACR,OAAA,EAAS;AAAA,kBACP,GAAG,UAAA;AAAA,kBACH,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,WAAA,CAAY;AAAA;AAC/C;AACF;AACF,WACD,CAAA;AAAA,QACH;AAEA,QAAA,IAAI,QAAA,IAAY,YAAY,GAAA,EAAK;AAC/B,UAAA,aAAA,CAAc,OAAA,GAAU,aAAA,CAAc,OAAA,IAAW,EAAC;AAClD,UAAA,aAAA,CAAc,QAAQ,KAAA,GAAQ;AAAA,YAC5B,GAAI,aAAA,CAAc,OAAA,CAAQ,KAAA,IAAS,MAAA;AAAA,YACnC,6BAAA,EAA+B,IAAA,CAAK,OAAA,CAAQ,SAAA,EAAW,8BAA8B;AAAA,WACvF;AAAA,QACF;AAEA,QAAA,OAAO,OAAO,WAAW,OAAA,KAAY,UAAA,GACjC,WAAW,OAAA,CAAQ,aAAA,EAAe,WAAW,CAAA,GAC7C,aAAA;AAAA,MACN,CAAA;AAAA,MAEA,iBAAiB,YAAY;AAE3B,QAAA,IAAI;AACF,UAAA,MAAM,EAAE,mBAAA,EAAoB,GAAI,SAAA,CAAQ,2BAA2B,CAAA;AACnE,UAAA,mBAAA;AAAA,YACE,QAAA,CAAS,IAAI,CAAC,CAAA,KAAc,KAAK,OAAA,CAAQ,GAAA,EAAK,CAAC,CAAC,CAAA;AAAA,YAChD,IAAA,CAAK,WAAW,cAAc,CAAA,GAAI,iBAAiB,IAAA,CAAK,OAAA,CAAQ,KAAK,cAAc;AAAA,WACrF;AACA,UAAA,OAAA,CAAQ,IAAI,oDAA+C,CAAA;AAAA,QAC7D,SAAS,CAAA,EAAG;AACV,UAAA,OAAA,CAAQ,IAAA,CAAK,0CAA0C,CAAC,CAAA;AAAA,QAC1D;AAGA,QAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,UAAA,IAAI;AACF,YAAA,MAAM,EAAE,iBAAA,EAAmB,aAAA,EAAc,GAAI,UAAQ,yBAAyB,CAAA;AAC9E,YAAA,MAAM,aAAA,CAAc,mBAAmB,CAAA;AACvC,YAAA,OAAA,CAAQ,IAAI,yDAAoD,CAAA;AAAA,UAClE,SAAS,CAAA,EAAG;AACV,YAAA,OAAA,CAAQ,IAAA,CAAK,mDAAmD,CAAC,CAAA;AAAA,UACnE;AAAA,QACF;AAGA,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,IAAI;AACF,YAAA,MAAM,EAAE,YAAA,EAAa,GAAI,SAAA,CAAQ,yBAAyB,CAAA;AAE1D,YAAA,MAAM,MAAA,GAAS,MAAM,YAAA,CAAa;AAAA,cAChC,IAAA,EAAM,GAAA;AAAA,cACN,OAAA,EAAS;AAAA,gBACP,iBAAA,EAAmB,CAAC,MAAA,EAAQ,KAAA,EAAO,QAAQ,KAAK,CAAA;AAAA,gBAChD,iBAAA,EAAmB;AAAA,eACrB;AAAA,cACA,UAAA,EAAY,IAAA;AAAA,cACZ,kBAAA,EAAoB,aAAa,KAAA,CAAA,GAAY,oBAAA;AAAA,cAC7C,SAAS;AAAC,aACX,CAAA;AAED,YAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,KAAA,EAAM;AAGvC,YAAA,IAAI,YAAY,GAAA,EAAK;AACnB,cAAA,MAAM,QAAA,GAAW,WAAA;AACjB,cAAA,EAAA,CAAG,SAAA,CAAU,QAAA,EAAU,EAAE,SAAA,EAAW,MAAM,CAAA;AAG1C,cAAA,MAAM,YAAA,GAAe,IAAA,CAAK,IAAA,CAAK,QAAA,EAAU,WAAW,CAAA;AACpD,cAAA,EAAA,CAAG,aAAA,CAAc,YAAA,EAAc,WAAA,CAAY,GAAG,CAAA;AAG9C,cAAA,MAAM,QAAA,GAAW,EAAE,GAAA,EAAK,WAAA,EAAY;AACpC,cAAA,MAAM,eAAe,IAAA,CAAK,IAAA;AAAA,gBACxB,GAAA;AAAA,gBACA,OAAA;AAAA,gBACA,QAAA;AAAA,gBACA,KAAA;AAAA,gBACA,IAAA;AAAA,gBACA;AAAA,eACF;AACA,cAAA,EAAA,CAAG,SAAA,CAAU,KAAK,OAAA,CAAQ,YAAY,GAAG,EAAE,SAAA,EAAW,MAAM,CAAA;AAC5D,cAAA,EAAA,CAAG,cAAc,YAAA,EAAc,IAAA,CAAK,UAAU,QAAA,EAAU,IAAA,EAAM,CAAC,CAAC,CAAA;AAEhE,cAAA,MAAM,SAAS,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,GAAA,EAAK,MAAM,CAAA,GAAI,IAAA;AAC5D,cAAA,OAAA,CAAQ,IAAI,CAAA,uCAAA,EAAqC,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAI,CAAA;AACtE,cAAA,OAAA,CAAQ,GAAA;AAAA,gBACN;AAAA,eACF;AAAA,YACF;AAAA,UACF,SAAS,CAAA,EAAG;AACV,YAAA,OAAA,CAAQ,IAAA,CAAK,2CAA2C,CAAC,CAAA;AAAA,UAC3D;AAAA,QACF;AAGA,QAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,UAAA,IAAI;AACF,YAAA,MAAM;AAAA,cACJ,iBAAA;AAAA,cACA,gBAAA;AAAA,cACA,kBAAA;AAAA,cACA;AAAA,aACF,GAAI,UAAQ,yBAAyB,CAAA;AACrC,YAAA,MAAM,WAAW,iBAAA,EAAkB;AACnC,YAAA,IAAI,SAAA,GAAY,CAAC,gBAAA,CAAiB,QAAQ,CAAA,EAAG,kBAAA,CAAmB,QAAQ,CAAC,CAAA,CACtE,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,MAAM,CAAA;AACd,YAAA,SAAA,GAAY,aAAA,CAAc,WAAW,QAAQ,CAAA;AAC7C,YAAA,IAAI,SAAA,CAAU,MAAK,EAAG;AACpB,cAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,UAAU,kBAAkB,CAAA;AAC3D,cAAA,EAAA,CAAG,SAAA,CAAU,KAAK,OAAA,CAAQ,OAAO,GAAG,EAAE,SAAA,EAAW,MAAM,CAAA;AACvD,cAAA,EAAA,CAAG,aAAA,CAAc,SAAS,SAAS,CAAA;AACnC,cAAA,OAAA,CAAQ,IAAI,uEAA6D,CAAA;AAAA,YAC3E;AAAA,UACF,SAAS,CAAA,EAAG;AACV,YAAA,OAAA,CAAQ,IAAA,CAAK,4CAA4C,CAAC,CAAA;AAAA,UAC5D;AAAA,QACF;AAEA,QAAA,IAAI,OAAO,UAAA,CAAW,eAAA,KAAoB,UAAA,EAAY,OAAO,WAAW,eAAA,EAAgB;AACxF,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACF;AAAA,EACF,CAAA;AACF","file":"next.js","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"]}