tailwind-styled-v4 5.0.24 → 5.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/next.js CHANGED
@@ -1065,21 +1065,6 @@ var init_compiler = __esm({
1065
1065
  });
1066
1066
 
1067
1067
  // packages/domain/compiler/src/parser/index.ts
1068
- var parser_exports = {};
1069
- __export(parser_exports, {
1070
- astExtractClasses: () => astExtractClasses,
1071
- batchExtractClasses: () => batchExtractClasses,
1072
- checkAgainstSafelist: () => checkAgainstSafelist,
1073
- diffClassLists: () => diffClassLists,
1074
- extractAllClasses: () => extractAllClasses,
1075
- extractClassesFromSource: () => extractClassesFromSource,
1076
- extractComponentUsage: () => extractComponentUsage,
1077
- mergeClassesStatic: () => mergeClassesStatic,
1078
- normalizeAndDedupClasses: () => normalizeAndDedupClasses,
1079
- normalizeClasses: () => normalizeClasses,
1080
- parseClass: () => parseClass,
1081
- parseClasses: () => parseClasses
1082
- });
1083
1068
  var parseClasses, parseClass, extractAllClasses, extractClassesFromSource, astExtractClasses, normalizeClasses, mergeClassesStatic, normalizeAndDedupClasses, extractComponentUsage, batchExtractClasses, checkAgainstSafelist, diffClassLists;
1084
1069
  var init_parser = __esm({
1085
1070
  "packages/domain/compiler/src/parser/index.ts"() {
@@ -2264,7 +2249,7 @@ function extractContainerCssFromSource(source) {
2264
2249
  }
2265
2250
  return rules.join("\n");
2266
2251
  }
2267
- var transformSource, hasTwUsage, isAlreadyTransformed, shouldProcess, compileCssFromClasses, buildStyleTag, generateCssForClasses, eliminateDeadCss, findDeadVariants, runElimination, scanProjectUsage, generateSafelist, loadSafelist, loadTailwindConfig, getContentPaths, _CONTAINER_BREAKPOINTS, runLoaderTransform, shouldSkipFile, fileToRoute, getAllRoutes, getRouteClasses, registerFileClasses, registerGlobalClasses, _incrementalEngineInstance, getIncrementalEngine, resetIncrementalEngine, IncrementalEngine, getBucketEngine, resetBucketEngine, BucketEngine, classifyNode, detectConflicts, bucketSort, analyzeFile, analyzeVariantUsage, injectClientDirective, injectServerOnlyComment, analyzeClasses, extractTwStateConfigs, generateStaticStateCss, extractAndGenerateStateCss;
2252
+ var _require2, transformSource, hasTwUsage, isAlreadyTransformed, shouldProcess, compileCssFromClasses, buildStyleTag, generateCssForClasses, eliminateDeadCss, findDeadVariants, runElimination, scanProjectUsage, generateSafelist, loadSafelist, loadTailwindConfig, getContentPaths, _CONTAINER_BREAKPOINTS, runLoaderTransform, shouldSkipFile, fileToRoute, getAllRoutes, getRouteClasses, registerFileClasses, registerGlobalClasses, _incrementalEngineInstance, getIncrementalEngine, resetIncrementalEngine, IncrementalEngine, getBucketEngine, resetBucketEngine, BucketEngine, classifyNode, detectConflicts, bucketSort, analyzeFile, analyzeVariantUsage, injectClientDirective, injectServerOnlyComment, analyzeClasses, extractTwStateConfigs, generateStaticStateCss, extractAndGenerateStateCss;
2268
2253
  var init_src = __esm({
2269
2254
  "packages/domain/compiler/src/index.ts"() {
2270
2255
  init_nativeBridge();
@@ -2274,6 +2259,7 @@ var init_src = __esm({
2274
2259
  init_cache();
2275
2260
  init_redis();
2276
2261
  init_watch();
2262
+ _require2 = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('next.js', document.baseURI).href)));
2277
2263
  transformSource = (source, opts) => {
2278
2264
  const native = getNativeBridge();
2279
2265
  if (!native?.transformSource) {
@@ -2363,7 +2349,7 @@ var init_src = __esm({
2363
2349
  return eliminateDeadCss(css, new Set(dead.deadInCss ?? []));
2364
2350
  };
2365
2351
  scanProjectUsage = (dirs, cwd) => {
2366
- const { batchExtractClasses: batchExtractClasses2 } = (init_parser(), __toCommonJS(parser_exports));
2352
+ const { batchExtractClasses: batchExtractClasses2 } = _require2("./parser");
2367
2353
  const files = dirs.map((dir) => path10__namespace.default.resolve(cwd, dir));
2368
2354
  const results = batchExtractClasses2(files) || [];
2369
2355
  const combined = {};
@@ -3002,14 +2988,23 @@ function extractStaticStateCss(srcDir, options = {}) {
3002
2988
  }
3003
2989
  }
3004
2990
  const allRules = native.generateStaticStateCss(uniqueConfigs, options.resolvedCss ?? null);
3005
- const rulesSkipped = uniqueConfigs.reduce((total, cfg) => {
3006
- try {
3007
- const stateMap = JSON.parse(cfg.statesJson);
3008
- return total + Object.keys(stateMap).length;
3009
- } catch {
3010
- return total;
3011
- }
3012
- }, 0) - allRules.length;
2991
+ const rulesSkipped = allRules.filter((r) => {
2992
+ const decl = r.declarations.trim();
2993
+ return decl.length === 0 || !decl.includes(":");
2994
+ }).length;
2995
+ function sanitizeCssRule(cssRule, declarations) {
2996
+ const segments = declarations.split(/[;\n]/).map((s) => s.trim()).filter(Boolean);
2997
+ const validSegs = segments.filter((s) => s.includes(":"));
2998
+ const invalidSegs = segments.filter((s) => !s.includes(":"));
2999
+ if (invalidSegs.length === 0) return cssRule;
3000
+ if (validSegs.length === 0) return null;
3001
+ const braceIdx = cssRule.indexOf("{");
3002
+ if (braceIdx === -1) return null;
3003
+ const selector = cssRule.slice(0, braceIdx).trim();
3004
+ return `${selector} {
3005
+ ${validSegs.join(";\n ")};
3006
+ }`;
3007
+ }
3013
3008
  const byComponent = /* @__PURE__ */ new Map();
3014
3009
  for (const rule of allRules) {
3015
3010
  const existing = byComponent.get(rule.componentName) ?? [];
@@ -3021,11 +3016,18 @@ function extractStaticStateCss(srcDir, options = {}) {
3021
3016
  cssBlocks.push(`/* ${componentName} */`);
3022
3017
  for (const rule of rules) {
3023
3018
  cssBlocks.push(`/* state: ${rule.stateName} */`);
3024
- const isUnresolved = rule.declarations.trim().length > 0 && !rule.declarations.includes(":");
3025
- if (isUnresolved) {
3026
- cssBlocks.push(`/* SKIPPED (unresolved): ${rule.declarations} \u2014 akan di-inject runtime */`);
3019
+ const isFullyUnresolved = rule.declarations.trim().length > 0 && !rule.declarations.includes(":");
3020
+ if (isFullyUnresolved) {
3021
+ const encoded = rule.declarations.replace(/([\w-]+)/g, "[$1]");
3022
+ cssBlocks.push(`/* SKIP [unresolved]: ${encoded} */`);
3027
3023
  } else {
3028
- cssBlocks.push(rule.cssRule);
3024
+ const sanitized = sanitizeCssRule(rule.cssRule, rule.declarations);
3025
+ if (sanitized !== null) {
3026
+ cssBlocks.push(sanitized);
3027
+ } else {
3028
+ const encoded = rule.declarations.replace(/([\w-]+)/g, "[$1]");
3029
+ cssBlocks.push(`/* SKIP [sanitized-empty]: ${encoded} */`);
3030
+ }
3029
3031
  }
3030
3032
  }
3031
3033
  cssBlocks.push("");
@@ -3035,7 +3037,7 @@ function extractStaticStateCss(srcDir, options = {}) {
3035
3037
  filesWithStates,
3036
3038
  componentsFound: allConfigs.length,
3037
3039
  rulesGenerated: allRules.length,
3038
- rulesSkipped: Math.max(0, rulesSkipped),
3040
+ rulesSkipped,
3039
3041
  generatedCss: cssBlocks.join("\n"),
3040
3042
  rules: allRules
3041
3043
  };
@@ -3199,7 +3201,7 @@ function loadNativeBinding(options) {
3199
3201
  return { binding: null, loadErrors };
3200
3202
  }
3201
3203
  function requireNativeModule(p) {
3202
- return _require2(p);
3204
+ return _require3(p);
3203
3205
  }
3204
3206
  function resolveNativeBindingCandidates(options) {
3205
3207
  const {
@@ -3246,7 +3248,7 @@ function resolveRuntimeDir(dir, importMetaUrl) {
3246
3248
  return process.cwd();
3247
3249
  }
3248
3250
  }
3249
- var TwError, _require2;
3251
+ var TwError, _require3;
3250
3252
  var init_src2 = __esm({
3251
3253
  "packages/domain/shared/src/index.ts"() {
3252
3254
  init_workerResolver();
@@ -3305,7 +3307,7 @@ var init_src2 = __esm({
3305
3307
  return `[${this.source.toUpperCase()}:${this.code}] ${this.message}`;
3306
3308
  }
3307
3309
  };
3308
- _require2 = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('next.js', document.baseURI).href)));
3310
+ _require3 = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('next.js', document.baseURI).href)));
3309
3311
  }
3310
3312
  });
3311
3313
 
@@ -4309,12 +4311,13 @@ function withTailwindStyled(options = {}) {
4309
4311
  "utf-8"
4310
4312
  );
4311
4313
  const stateStaticPath = path10__namespace.default.join(twClassesDir, TW_STATE_STATIC_FILENAME);
4312
- if (!fs9__namespace.default.existsSync(stateStaticPath)) {
4314
+ try {
4313
4315
  fs9__namespace.default.writeFileSync(
4314
4316
  stateStaticPath,
4315
4317
  "/* tw-state-static.css \u2014 placeholder, akan di-generate setelah scan */\n",
4316
4318
  "utf-8"
4317
4319
  );
4320
+ } catch {
4318
4321
  }
4319
4322
  try {
4320
4323
  const CSS_CANDIDATES = [