tailwind-styled-v4 5.0.26 → 5.0.28

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 (89) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +575 -575
  3. package/dist/analyzer.js.map +1 -1
  4. package/dist/analyzer.mjs.map +1 -1
  5. package/dist/animate.js.map +1 -1
  6. package/dist/animate.mjs.map +1 -1
  7. package/dist/atomic.js.map +1 -1
  8. package/dist/atomic.mjs.map +1 -1
  9. package/dist/cli.js +2 -2
  10. package/dist/cli.js.map +1 -1
  11. package/dist/cli.mjs +2 -2
  12. package/dist/cli.mjs.map +1 -1
  13. package/dist/compiler.js +2 -1
  14. package/dist/compiler.js.map +1 -1
  15. package/dist/compiler.mjs +2 -1
  16. package/dist/compiler.mjs.map +1 -1
  17. package/dist/dashboard.d.mts +69 -69
  18. package/dist/dashboard.d.ts +69 -69
  19. package/dist/dashboard.js.map +1 -1
  20. package/dist/dashboard.mjs.map +1 -1
  21. package/dist/devtools.js.map +1 -1
  22. package/dist/devtools.mjs.map +1 -1
  23. package/dist/engine.js +26 -5
  24. package/dist/engine.js.map +1 -1
  25. package/dist/engine.mjs +26 -5
  26. package/dist/engine.mjs.map +1 -1
  27. package/dist/index.browser.mjs +16 -16
  28. package/dist/index.browser.mjs.map +1 -1
  29. package/dist/index.d.mts +4 -4
  30. package/dist/index.d.ts +4 -4
  31. package/dist/index.js +51 -28
  32. package/dist/index.js.map +1 -1
  33. package/dist/index.mjs +51 -28
  34. package/dist/index.mjs.map +1 -1
  35. package/dist/next.js +26 -5
  36. package/dist/next.js.map +1 -1
  37. package/dist/next.mjs +26 -5
  38. package/dist/next.mjs.map +1 -1
  39. package/dist/plugin-api.js.map +1 -1
  40. package/dist/plugin-api.mjs.map +1 -1
  41. package/dist/plugin-registry.js.map +1 -1
  42. package/dist/plugin-registry.mjs.map +1 -1
  43. package/dist/plugin.js.map +1 -1
  44. package/dist/plugin.mjs.map +1 -1
  45. package/dist/preset.js.map +1 -1
  46. package/dist/preset.mjs.map +1 -1
  47. package/dist/rspack.js.map +1 -1
  48. package/dist/rspack.mjs.map +1 -1
  49. package/dist/runtime-css.js.map +1 -1
  50. package/dist/runtime-css.mjs.map +1 -1
  51. package/dist/runtime.js.map +1 -1
  52. package/dist/runtime.mjs.map +1 -1
  53. package/dist/scanner.js.map +1 -1
  54. package/dist/scanner.mjs.map +1 -1
  55. package/dist/shared.js +26 -5
  56. package/dist/shared.js.map +1 -1
  57. package/dist/shared.mjs +26 -5
  58. package/dist/shared.mjs.map +1 -1
  59. package/dist/storybook-addon.js.map +1 -1
  60. package/dist/storybook-addon.mjs.map +1 -1
  61. package/dist/svelte.js.map +1 -1
  62. package/dist/svelte.mjs.map +1 -1
  63. package/dist/syntax.js.map +1 -1
  64. package/dist/syntax.mjs.map +1 -1
  65. package/dist/testing.js.map +1 -1
  66. package/dist/testing.mjs.map +1 -1
  67. package/dist/theme.js.map +1 -1
  68. package/dist/theme.mjs.map +1 -1
  69. package/dist/turbopackLoader.js +2 -1
  70. package/dist/turbopackLoader.js.map +1 -1
  71. package/dist/turbopackLoader.mjs +2 -1
  72. package/dist/turbopackLoader.mjs.map +1 -1
  73. package/dist/tw.js +2 -2
  74. package/dist/tw.js.map +1 -1
  75. package/dist/tw.mjs +2 -2
  76. package/dist/tw.mjs.map +1 -1
  77. package/dist/vite.js +26 -5
  78. package/dist/vite.js.map +1 -1
  79. package/dist/vite.mjs +26 -5
  80. package/dist/vite.mjs.map +1 -1
  81. package/dist/vue.js.map +1 -1
  82. package/dist/vue.mjs.map +1 -1
  83. package/dist/webpackLoader.js +2 -1
  84. package/dist/webpackLoader.js.map +1 -1
  85. package/dist/webpackLoader.mjs +2 -1
  86. package/dist/webpackLoader.mjs.map +1 -1
  87. package/native/tailwind-styled-native.node +0 -0
  88. package/package.json +296 -289
  89. package/native/tailwind-styled-native.win32-x64-msvc.node +0 -0
package/dist/index.d.mts CHANGED
@@ -139,11 +139,11 @@ type TwSubComponentAccessor = React.FC<{
139
139
  children?: React.ReactNode;
140
140
  className?: string;
141
141
  }>;
142
- type TrimLeft<S extends string> = S extends ` ${infer R}` | `
143
- ${infer R}` | ` ${infer R}` | `
142
+ type TrimLeft<S extends string> = S extends ` ${infer R}` | `
143
+ ${infer R}` | ` ${infer R}` | `
144
144
  ${infer R}` ? TrimLeft<R> : S;
145
- type TrimRight<S extends string> = S extends `${infer L} ` | `${infer L}
146
- ` | `${infer L} ` | `${infer L}
145
+ type TrimRight<S extends string> = S extends `${infer L} ` | `${infer L}
146
+ ` | `${infer L} ` | `${infer L}
147
147
  ` ? TrimRight<L> : S;
148
148
  type Trim<S extends string> = TrimLeft<TrimRight<S>>;
149
149
  type ExtractSubNames<T extends string> = T extends `${string}[${infer Name}]${string}{${string}}${infer Rest}` ? Trim<Name> | ExtractSubNames<Rest> : T extends `${string}\n${infer Name}{${string}}${infer Rest}` ? (Trim<Name> extends "" ? never : Trim<Name>) | ExtractSubNames<Rest> : never;
package/dist/index.d.ts CHANGED
@@ -139,11 +139,11 @@ type TwSubComponentAccessor = React.FC<{
139
139
  children?: React.ReactNode;
140
140
  className?: string;
141
141
  }>;
142
- type TrimLeft<S extends string> = S extends ` ${infer R}` | `
143
- ${infer R}` | ` ${infer R}` | `
142
+ type TrimLeft<S extends string> = S extends ` ${infer R}` | `
143
+ ${infer R}` | ` ${infer R}` | `
144
144
  ${infer R}` ? TrimLeft<R> : S;
145
- type TrimRight<S extends string> = S extends `${infer L} ` | `${infer L}
146
- ` | `${infer L} ` | `${infer L}
145
+ type TrimRight<S extends string> = S extends `${infer L} ` | `${infer L}
146
+ ` | `${infer L} ` | `${infer L}
147
147
  ` ? TrimRight<L> : S;
148
148
  type Trim<S extends string> = TrimLeft<TrimRight<S>>;
149
149
  type ExtractSubNames<T extends string> = T extends `${string}[${infer Name}]${string}{${string}}${infer Rest}` ? Trim<Name> | ExtractSubNames<Rest> : T extends `${string}\n${infer Name}{${string}}${infer Rest}` ? (Trim<Name> extends "" ? never : Trim<Name>) | ExtractSubNames<Rest> : never;
package/dist/index.js CHANGED
@@ -2791,7 +2791,8 @@ var init_src = __esm({
2791
2791
  if (!native?.transformSource) {
2792
2792
  throw new Error("FATAL: Native binding 'transformSource' is required but not available.");
2793
2793
  }
2794
- const result = native.transformSource(source, opts);
2794
+ const stringOpts = opts ? Object.fromEntries(Object.entries(opts).map(([k, v]) => [k, String(v)])) : void 0;
2795
+ const result = native.transformSource(source, stringOpts);
2795
2796
  if (!result) {
2796
2797
  throw new Error("FATAL: transformSource returned null");
2797
2798
  }
@@ -3513,6 +3514,19 @@ function extractStaticStateCss(srcDir, options = {}) {
3513
3514
  const decl = r.declarations.trim();
3514
3515
  return decl.length === 0 || !decl.includes(":");
3515
3516
  }).length;
3517
+ function sanitizeCssRule(cssRule, declarations) {
3518
+ const segments = declarations.split(/[;\n]/).map((s) => s.trim()).filter(Boolean);
3519
+ const validSegs = segments.filter((s) => s.includes(":"));
3520
+ const invalidSegs = segments.filter((s) => !s.includes(":"));
3521
+ if (invalidSegs.length === 0) return cssRule;
3522
+ if (validSegs.length === 0) return null;
3523
+ const braceIdx = cssRule.indexOf("{");
3524
+ if (braceIdx === -1) return null;
3525
+ const selector = cssRule.slice(0, braceIdx).trim();
3526
+ return `${selector} {
3527
+ ${validSegs.join(";\n ")};
3528
+ }`;
3529
+ }
3516
3530
  const byComponent = /* @__PURE__ */ new Map();
3517
3531
  for (const rule of allRules) {
3518
3532
  const existing = byComponent.get(rule.componentName) ?? [];
@@ -3524,11 +3538,18 @@ function extractStaticStateCss(srcDir, options = {}) {
3524
3538
  cssBlocks.push(`/* ${componentName} */`);
3525
3539
  for (const rule of rules) {
3526
3540
  cssBlocks.push(`/* state: ${rule.stateName} */`);
3527
- const isUnresolved = rule.declarations.trim().length > 0 && !rule.declarations.includes(":");
3528
- if (isUnresolved) {
3529
- cssBlocks.push(`/* SKIPPED (unresolved): ${rule.declarations} \u2014 akan di-inject runtime */`);
3541
+ const isFullyUnresolved = rule.declarations.trim().length > 0 && !rule.declarations.includes(":");
3542
+ if (isFullyUnresolved) {
3543
+ const encoded = rule.declarations.replace(/([\w-]+)/g, "[$1]");
3544
+ cssBlocks.push(`/* SKIP [unresolved]: ${encoded} */`);
3530
3545
  } else {
3531
- cssBlocks.push(rule.cssRule);
3546
+ const sanitized = sanitizeCssRule(rule.cssRule, rule.declarations);
3547
+ if (sanitized !== null) {
3548
+ cssBlocks.push(sanitized);
3549
+ } else {
3550
+ const encoded = rule.declarations.replace(/([\w-]+)/g, "[$1]");
3551
+ cssBlocks.push(`/* SKIP [sanitized-empty]: ${encoded} */`);
3552
+ }
3532
3553
  }
3533
3554
  }
3534
3555
  cssBlocks.push("");
@@ -5244,25 +5265,30 @@ function getStateRegistry() {
5244
5265
  var ALWAYS_BLOCKED = /* @__PURE__ */ new Set(["base", "_ref", "state", "container", "containerName"]);
5245
5266
  var _templateParseCache = /* @__PURE__ */ new Map();
5246
5267
  var _statesLookupCache = /* @__PURE__ */ new Map();
5268
+ var _SUB_BLOCK_RE = /(?:^|[\s])(\[\w[\w-]*\])\s*\{/;
5247
5269
  function _getParsedTemplate(template) {
5248
5270
  const cached = _templateParseCache.get(template);
5249
5271
  if (cached) return cached;
5250
- let result;
5251
- try {
5252
- const native = getNativeBinding();
5253
- if (native?.parseSubcomponentBlocksNapi) {
5254
- const r = native.parseSubcomponentBlocksNapi(template, "tw");
5255
- const raw = JSON.parse(r.subMapJson);
5256
- result = {
5257
- baseClasses: r.baseClasses.trim().replace(/\s+/g, " "),
5258
- subMap: new Map(Object.entries(raw))
5259
- };
5260
- _templateParseCache.set(template, result);
5261
- return result;
5262
- }
5263
- } catch {
5272
+ if (!_SUB_BLOCK_RE.test(template)) {
5273
+ const result2 = {
5274
+ baseClasses: template.trim().replace(/\s+/g, " "),
5275
+ subMap: /* @__PURE__ */ new Map()
5276
+ };
5277
+ _templateParseCache.set(template, result2);
5278
+ return result2;
5264
5279
  }
5265
- throw new Error("FATAL: Native binding 'parseSubcomponentBlocksNapi' is required but not available.");
5280
+ const native = getNativeBinding();
5281
+ if (!native?.parseSubcomponentBlocksNapi) {
5282
+ throw new Error("FATAL: Native binding 'parseSubcomponentBlocksNapi' is required but not available.");
5283
+ }
5284
+ const r = native.parseSubcomponentBlocksNapi(template, "tw");
5285
+ const raw = JSON.parse(r.subMapJson);
5286
+ const result = {
5287
+ baseClasses: r.baseClasses.trim().replace(/\s+/g, " "),
5288
+ subMap: new Map(Object.entries(raw))
5289
+ };
5290
+ _templateParseCache.set(template, result);
5291
+ return result;
5266
5292
  }
5267
5293
  function parseSubComponentBlocks(template) {
5268
5294
  return _getParsedTemplate(template).subMap;
@@ -5403,15 +5429,12 @@ function resolveVariants2(variants, props, defaults) {
5403
5429
  const v = props[k];
5404
5430
  if (v !== void 0 && v !== null) cleanProps[k] = String(v);
5405
5431
  }
5406
- try {
5407
- const binding = getNativeBinding();
5408
- if (binding?.resolveSimpleVariants) {
5409
- const result = binding.resolveSimpleVariants(null, variants, defaults, cleanProps);
5410
- return result.trim().replace(/\s+/g, " ");
5411
- }
5412
- } catch {
5432
+ const binding = getNativeBinding();
5433
+ if (!binding?.resolveSimpleVariants) {
5434
+ throw new Error("FATAL: Native binding 'resolveSimpleVariants' is required but not available.");
5413
5435
  }
5414
- throw new Error("FATAL: Native binding 'resolveSimpleVariants' is required but not available.");
5436
+ const result = binding.resolveSimpleVariants(null, variants, defaults, cleanProps);
5437
+ return result.trim().replace(/\s+/g, " ");
5415
5438
  }
5416
5439
  function resolveStates(statesConfig, stateKeys, statesLookup, props) {
5417
5440
  if (statesLookup && stateKeys.length > 0) {