tailwind-styled-v4 5.0.0 → 5.0.2
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/CHANGELOG.md +398 -0
- package/LICENSE +21 -0
- package/README.md +532 -0
- package/dist/analyzer.d.mts +114 -0
- package/dist/analyzer.d.ts +114 -0
- package/dist/analyzer.js +6808 -0
- package/dist/analyzer.js.map +1 -0
- package/dist/analyzer.mjs +6798 -0
- package/dist/analyzer.mjs.map +1 -0
- package/dist/{animate.d.cts → animate.d.mts} +3 -30
- package/dist/animate.d.ts +3 -30
- package/dist/animate.js +7096 -352
- package/dist/animate.js.map +1 -1
- package/dist/animate.mjs +7482 -0
- package/dist/animate.mjs.map +1 -0
- package/dist/atomic.d.mts +18 -0
- package/dist/atomic.d.ts +18 -0
- package/dist/atomic.js +191 -0
- package/dist/atomic.js.map +1 -0
- package/dist/atomic.mjs +185 -0
- package/dist/atomic.mjs.map +1 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +45008 -0
- package/dist/cli.js.map +1 -0
- package/dist/cli.mjs +44980 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/compiler.d.mts +1009 -0
- package/dist/compiler.d.ts +1009 -0
- package/dist/compiler.js +4937 -0
- package/dist/compiler.js.map +1 -0
- package/dist/compiler.mjs +4862 -0
- package/dist/compiler.mjs.map +1 -0
- package/dist/dashboard.d.mts +272 -0
- package/dist/dashboard.d.ts +272 -0
- package/dist/dashboard.js +249 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/dashboard.mjs +239 -0
- package/dist/dashboard.mjs.map +1 -0
- package/dist/devtools.js +171 -158
- package/dist/devtools.js.map +1 -1
- package/dist/{devtools.cjs → devtools.mjs} +166 -167
- package/dist/devtools.mjs.map +1 -0
- package/dist/engine.d.mts +398 -0
- package/dist/engine.d.ts +398 -0
- package/dist/engine.js +19264 -0
- package/dist/engine.js.map +1 -0
- package/dist/engine.mjs +19227 -0
- package/dist/engine.mjs.map +1 -0
- package/dist/{index.d.cts → index.d.mts} +12 -5
- package/dist/index.d.ts +12 -5
- package/dist/index.js +7178 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8408 -0
- package/dist/index.mjs.map +1 -0
- package/dist/liveTokenEngine-DYN3Zale.d.mts +34 -0
- package/dist/liveTokenEngine-DYN3Zale.d.ts +34 -0
- package/dist/{next.d.cts → next.d.mts} +2 -1
- package/dist/next.d.ts +2 -1
- package/dist/next.js +24027 -28
- package/dist/next.js.map +1 -1
- package/dist/next.mjs +24232 -0
- package/dist/next.mjs.map +1 -0
- package/dist/plugin.d.mts +90 -0
- package/dist/plugin.d.ts +90 -0
- package/dist/plugin.js +185 -0
- package/dist/plugin.js.map +1 -0
- package/dist/plugin.mjs +174 -0
- package/dist/plugin.mjs.map +1 -0
- package/dist/pluginRegistry.d.mts +83 -0
- package/dist/pluginRegistry.d.ts +83 -0
- package/dist/pluginRegistry.js +303 -0
- package/dist/pluginRegistry.js.map +1 -0
- package/dist/pluginRegistry.mjs +298 -0
- package/dist/pluginRegistry.mjs.map +1 -0
- package/dist/preset.js +9 -4
- package/dist/preset.js.map +1 -1
- package/dist/{preset.cjs → preset.mjs} +5 -14
- package/dist/preset.mjs.map +1 -0
- package/dist/rspack.d.mts +33 -0
- package/dist/rspack.d.ts +33 -0
- package/dist/rspack.js +66 -0
- package/dist/rspack.js.map +1 -0
- package/dist/rspack.mjs +55 -0
- package/dist/rspack.mjs.map +1 -0
- package/dist/runtime.d.mts +62 -0
- package/dist/runtime.d.ts +62 -0
- package/dist/runtime.js +455 -0
- package/dist/runtime.js.map +1 -0
- package/dist/runtime.mjs +436 -0
- package/dist/runtime.mjs.map +1 -0
- package/dist/runtimeCss.d.mts +65 -0
- package/dist/runtimeCss.d.ts +65 -0
- package/dist/{css.cjs → runtimeCss.js} +71 -4
- package/dist/runtimeCss.js.map +1 -0
- package/dist/{css.js → runtimeCss.mjs} +66 -5
- package/dist/runtimeCss.mjs.map +1 -0
- package/dist/scanner.d.mts +25 -0
- package/dist/scanner.d.ts +25 -0
- package/dist/scanner.js +5774 -0
- package/dist/scanner.js.map +1 -0
- package/dist/scanner.mjs +5760 -0
- package/dist/scanner.mjs.map +1 -0
- package/dist/shared.d.mts +85 -0
- package/dist/shared.d.ts +85 -0
- package/dist/shared.js +255 -0
- package/dist/shared.js.map +1 -0
- package/dist/shared.mjs +233 -0
- package/dist/shared.mjs.map +1 -0
- package/dist/storybookAddon.d.mts +108 -0
- package/dist/storybookAddon.d.ts +108 -0
- package/dist/storybookAddon.js +95 -0
- package/dist/storybookAddon.js.map +1 -0
- package/dist/storybookAddon.mjs +88 -0
- package/dist/storybookAddon.mjs.map +1 -0
- package/dist/svelte.d.mts +114 -0
- package/dist/svelte.d.ts +114 -0
- package/dist/svelte.js +67 -0
- package/dist/svelte.js.map +1 -0
- package/dist/svelte.mjs +59 -0
- package/dist/svelte.mjs.map +1 -0
- package/dist/testing.d.mts +185 -0
- package/dist/testing.d.ts +185 -0
- package/dist/testing.js +173 -0
- package/dist/testing.js.map +1 -0
- package/dist/testing.mjs +158 -0
- package/dist/testing.mjs.map +1 -0
- package/dist/theme.d.mts +188 -0
- package/dist/theme.d.ts +188 -0
- package/dist/theme.js +334 -0
- package/dist/theme.js.map +1 -0
- package/dist/theme.mjs +311 -0
- package/dist/theme.mjs.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types-DXr2PmGP.d.mts +31 -0
- package/dist/types-DXr2PmGP.d.ts +31 -0
- package/dist/vite.js +29611 -17
- package/dist/vite.js.map +1 -1
- package/dist/vite.mjs +29712 -0
- package/dist/vite.mjs.map +1 -0
- package/dist/vue.d.mts +89 -0
- package/dist/vue.d.ts +89 -0
- package/dist/vue.js +104 -0
- package/dist/vue.js.map +1 -0
- package/dist/vue.mjs +96 -0
- package/dist/vue.mjs.map +1 -0
- package/package.json +170 -64
- package/dist/animate.cjs +0 -771
- package/dist/animate.cjs.map +0 -1
- package/dist/chunk-VZEJV27B.js +0 -11
- package/dist/chunk-VZEJV27B.js.map +0 -1
- package/dist/chunk-Y5D3E72P.cjs +0 -13
- package/dist/chunk-Y5D3E72P.cjs.map +0 -1
- package/dist/css.cjs.map +0 -1
- package/dist/css.d.cts +0 -30
- package/dist/css.d.ts +0 -30
- package/dist/css.js.map +0 -1
- package/dist/devtools.cjs.map +0 -1
- package/dist/index.cjs +0 -1353
- package/dist/index.cjs.map +0 -1
- package/dist/next.cjs +0 -248
- package/dist/next.cjs.map +0 -1
- package/dist/preset.cjs.map +0 -1
- package/dist/turbopackLoader.cjs +0 -37
- package/dist/turbopackLoader.cjs.map +0 -1
- package/dist/turbopackLoader.d.cts +0 -12
- package/dist/turbopackLoader.d.ts +0 -12
- package/dist/turbopackLoader.js +0 -35
- package/dist/turbopackLoader.js.map +0 -1
- package/dist/vite.cjs +0 -138
- package/dist/vite.cjs.map +0 -1
- package/dist/webpackLoader.cjs +0 -51
- package/dist/webpackLoader.cjs.map +0 -1
- package/dist/webpackLoader.d.cts +0 -17
- package/dist/webpackLoader.d.ts +0 -17
- package/dist/webpackLoader.js +0 -49
- package/dist/webpackLoader.js.map +0 -1
- /package/dist/{devtools.d.cts → devtools.d.mts} +0 -0
- /package/dist/{preset.d.cts → preset.d.mts} +0 -0
- /package/dist/{vite.d.cts → vite.d.mts} +0 -0
package/dist/animate.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../shared/dist/index.js","../../animate/src/binding.ts","../../animate/src/preset.ts","../../analyzer/dist/index.js","../../animate/src/registry.ts","../../animate/src/index.ts"],"names":["path","fileURLToPath","createRequire","fs","DEBUG_NAMESPACE","formatErrorMessage","debugLog","initAnimate"],"mappings":"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","file":"animate.cjs","sourcesContent":["// src/cache.ts\nvar LRUCache = class {\n constructor(max = 256, ttlMs = null) {\n this.map = /* @__PURE__ */ new Map();\n this.max = max;\n this.ttlMs = ttlMs;\n }\n get(key) {\n const entry = this.map.get(key);\n if (!entry) return void 0;\n if (this.ttlMs !== null && Date.now() - entry.ts > this.ttlMs) {\n this.map.delete(key);\n return void 0;\n }\n this.map.delete(key);\n this.map.set(key, entry);\n return entry.value;\n }\n set(key, value) {\n if (this.map.has(key)) this.map.delete(key);\n else if (this.map.size >= this.max) {\n this.map.delete(this.map.keys().next().value);\n }\n this.map.set(key, { value, ts: Date.now() });\n }\n has(key) {\n return this.get(key) !== void 0;\n }\n delete(key) {\n this.map.delete(key);\n }\n clear() {\n this.map.clear();\n }\n get size() {\n return this.map.size;\n }\n keys() {\n return this.map.keys();\n }\n *values() {\n for (const entry of this.map.values()) {\n yield entry.value;\n }\n }\n *entries() {\n for (const [key, entry] of this.map.entries()) {\n yield [key, entry.value];\n }\n }\n};\n\n// src/nativeBinding.ts\nimport fs from \"fs\";\nimport { createRequire } from \"module\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nfunction formatErrorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\nfunction resolveRuntimeDir(dirnameValue, moduleImportUrl) {\n if (typeof dirnameValue === \"string\" && dirnameValue.length > 0) return dirnameValue;\n return path.dirname(fileURLToPath(moduleImportUrl));\n}\nfunction resolveNativeBindingCandidates(options) {\n const out = [];\n const envVarNames = options.envVarNames ?? [];\n for (const envVarName of envVarNames) {\n const raw = process.env[envVarName]?.trim();\n if (!raw) continue;\n const resolved = path.resolve(raw);\n if (options.enforceNodeExtensionForEnvPath) {\n if (path.extname(resolved).toLowerCase() !== \".node\") {\n throw new Error(\n `Invalid native binding path from ${envVarName}=\"${raw}\". Expected a .node file.`\n );\n }\n }\n out.push(resolved);\n }\n if (options.includeDefaultCandidates !== false) {\n out.push(path.resolve(process.cwd(), \"native\", \"tailwind_styled_parser.node\"));\n out.push(path.resolve(options.runtimeDir, \"..\", \"..\", \"..\", \"native\", \"tailwind_styled_parser.node\"));\n }\n return Array.from(new Set(out));\n}\nfunction parseDebugToken(namespace, token) {\n if (token === \"*\" || token === namespace || token === \"tailwind-styled:*\") return true;\n return token.endsWith(\"*\") && namespace.startsWith(token.slice(0, -1));\n}\nfunction isDebugNamespaceEnabled(namespace) {\n if (process.env.TWS_DEBUG === \"1\" || process.env.TAILWIND_STYLED_DEBUG === \"1\") return true;\n const raw = process.env.DEBUG;\n if (!raw) return false;\n return raw.split(\",\").map((token) => token.trim()).some((token) => parseDebugToken(namespace, token));\n}\nfunction createDebugLogger(namespace, label = namespace) {\n const debugEnabled = isDebugNamespaceEnabled(namespace);\n return (message) => {\n if (!debugEnabled) return;\n console.debug(`[${label}] ${message}`);\n };\n}\nfunction loadNativeBinding(options) {\n const req = createRequire(path.join(options.runtimeDir, \"noop.cjs\"));\n const loadErrors = [];\n for (const candidate of options.candidates) {\n if (!fs.existsSync(candidate)) continue;\n try {\n const mod = req(candidate);\n if (options.isValid(mod)) {\n return {\n binding: mod,\n loadedPath: candidate,\n loadErrors\n };\n }\n loadErrors.push({\n path: candidate,\n message: options.invalidExportMessage\n });\n } catch (error) {\n loadErrors.push({\n path: candidate,\n message: formatErrorMessage(error)\n });\n }\n }\n return {\n binding: null,\n loadedPath: null,\n loadErrors\n };\n}\n\n// src/logger.ts\nvar LEVELS = { silent: 0, error: 1, warn: 2, info: 3, debug: 4 };\nfunction getEnvLevel() {\n const env = process.env.TWS_LOG_LEVEL?.toLowerCase();\n if (env && env in LEVELS) return env;\n return process.env.TWS_DEBUG_SCANNER === \"1\" ? \"debug\" : \"info\";\n}\nfunction createLogger(prefix, level) {\n let currentLevel = level ?? getEnvLevel();\n const log = (msgLevel, stream, args) => {\n if (LEVELS[msgLevel] > LEVELS[currentLevel]) return;\n const line = `[${prefix}] ${args.map(String).join(\" \")}\n`;\n process[stream].write(line);\n };\n return {\n error: (...a) => log(\"error\", \"stderr\", a),\n warn: (...a) => log(\"warn\", \"stderr\", a),\n info: (...a) => log(\"info\", \"stdout\", a),\n debug: (...a) => log(\"debug\", \"stderr\", a),\n setLevel: (l) => {\n currentLevel = l;\n }\n };\n}\nvar logger = createLogger(\"tailwind-styled\");\n\n// src/hash.ts\nimport { createHash } from \"crypto\";\nimport fs2 from \"fs\";\nfunction hashContent(content, algorithm = \"md5\", length = 8) {\n return createHash(algorithm).update(content).digest(\"hex\").slice(0, length);\n}\nfunction hashFile(filePath, algorithm = \"md5\", length = 8) {\n try {\n const content = fs2.readFileSync(filePath, \"utf8\");\n return hashContent(content, algorithm, length);\n } catch {\n return \"00000000\";\n }\n}\n\n// src/timing.ts\nfunction debounce(fn, ms) {\n let timer = null;\n return ((...args) => {\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => {\n timer = null;\n fn(...args);\n }, ms);\n });\n}\nfunction throttle(fn, ms) {\n let last = 0;\n return ((...args) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n fn(...args);\n }\n });\n}\n\n// src/version.ts\nfunction parseVersion(v) {\n const parts = v.replace(/^v/, \"\").split(\".\").map((p) => {\n const n = Number(p);\n return Number.isNaN(n) ? 0 : n;\n });\n const [major = 0, minor = 0, patch = 0] = parts;\n return { major, minor, patch };\n}\nfunction satisfiesMinVersion(version, minVersion) {\n const v = parseVersion(version);\n const min = parseVersion(minVersion);\n if (v.major !== min.major) return v.major > min.major;\n if (v.minor !== min.minor) return v.minor > min.minor;\n return v.patch >= min.patch;\n}\nexport {\n LRUCache,\n createDebugLogger,\n createLogger,\n debounce,\n formatErrorMessage,\n hashContent,\n hashFile,\n isDebugNamespaceEnabled,\n loadNativeBinding,\n logger,\n parseVersion,\n resolveNativeBindingCandidates,\n resolveRuntimeDir,\n satisfiesMinVersion,\n throttle\n};\n","import {\n createDebugLogger,\n loadNativeBinding,\n resolveNativeBindingCandidates,\n resolveRuntimeDir,\n} from \"@tailwind-styled/shared\"\n\nimport type { NativeAnimateBinding } from \"./types\"\n\nlet bindingPromise: Promise<NativeAnimateBinding> | null = null\nconst DEBUG_NAMESPACE = \"tailwind-styled:animate\"\nconst debugLog = createDebugLogger(DEBUG_NAMESPACE, \"tailwind-styled/animate\")\n\nfunction isAnimateModule(module: unknown): module is NativeAnimateBinding {\n const candidate = module as Partial<NativeAnimateBinding> | null | undefined\n return (\n typeof candidate?.compileAnimation === \"function\" &&\n typeof candidate?.compileKeyframes === \"function\"\n )\n}\n\nfunction resolveBindingCandidates(runtimeDir: string): string[] {\n return resolveNativeBindingCandidates({\n runtimeDir,\n envVarNames: [\"TWS_ANIMATE_NATIVE_PATH\", \"TWS_NATIVE_PATH\"],\n enforceNodeExtensionForEnvPath: true,\n })\n}\n\nfunction loadAnimateBinding(): NativeAnimateBinding {\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n throw new Error(\"Native animate backend is required in v5. TWS_NO_NATIVE/TWS_NO_RUST is not supported.\")\n }\n\n const runtimeDir = resolveRuntimeDir(\n typeof __dirname === \"string\" ? __dirname : undefined,\n import.meta.url\n )\n const candidates = resolveBindingCandidates(runtimeDir)\n const { binding, loadErrors, loadedPath } = loadNativeBinding<NativeAnimateBinding>({\n runtimeDir,\n candidates,\n isValid: isAnimateModule,\n invalidExportMessage: \"Module loaded but missing compileAnimation/compileKeyframes exports.\",\n })\n\n if (binding) {\n debugLog(`native animate binding loaded from: ${loadedPath}`)\n return binding\n }\n\n if (loadErrors.length > 0) {\n debugLog(\n `native animate binding load failed for ${loadErrors.length} candidate(s): ${loadErrors\n .map((entry) => `${entry.path} (${entry.message})`)\n .join(\"; \")}`\n )\n } else {\n debugLog(\"native animate binding not found in any candidate path\")\n }\n\n const lines = [\n \"Native animate backend not found. Ensure `tailwind_styled_parser.node` is built.\",\n \"Checked paths:\",\n ...candidates.map((candidate) => `- ${candidate}`),\n ]\n if (loadErrors.length > 0) {\n lines.push(\"Load errors:\")\n for (const error of loadErrors) lines.push(`- ${error.path}: ${error.message}`)\n }\n throw new Error(lines.join(\"\\n\"))\n}\n\nexport async function getAnimateBinding(): Promise<NativeAnimateBinding> {\n if (!bindingPromise) {\n bindingPromise = Promise.resolve().then(loadAnimateBinding)\n }\n return bindingPromise\n}\n\nexport async function initAnimate(): Promise<void> {\n await getAnimateBinding()\n}\n","import { LRUCache } from \"@tailwind-styled/shared\"\n\nimport type { AnimationRegistry } from \"./registry\"\n\nconst DEFAULT_PRESET_CACHE_LIMIT = 32\n\nexport function createAnimationPresets(registry: AnimationRegistry) {\n const cache = new LRUCache<string, Promise<string>>(DEFAULT_PRESET_CACHE_LIMIT)\n\n const withCache = (\n cacheKey: string,\n factory: () => Promise<string>\n ): (() => Promise<string>) => async () => {\n const cached = cache.get(cacheKey)\n if (cached) {\n const className = await cached\n if (registry.has(className)) return className\n cache.delete(cacheKey)\n }\n\n const pending = factory()\n cache.set(cacheKey, pending)\n try {\n return await pending\n } catch (error) {\n cache.delete(cacheKey)\n throw error\n }\n }\n\n return {\n fadeIn: withCache(\n \"fadeIn\",\n async () =>\n (await registry.compileAnimation({ from: \"opacity-0\", to: \"opacity-100\", duration: 200 }))\n .className\n ),\n fadeOut: withCache(\n \"fadeOut\",\n async () =>\n (await registry.compileAnimation({ from: \"opacity-100\", to: \"opacity-0\", duration: 200 }))\n .className\n ),\n slideUp: withCache(\n \"slideUp\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 translate-y-4\",\n to: \"opacity-100 translate-y-0\",\n duration: 300,\n })\n ).className\n ),\n slideDown: withCache(\n \"slideDown\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 -translate-y-4\",\n to: \"opacity-100 translate-y-0\",\n duration: 300,\n })\n ).className\n ),\n slideLeft: withCache(\n \"slideLeft\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 translate-x-4\",\n to: \"opacity-100 translate-x-0\",\n duration: 300,\n })\n ).className\n ),\n slideRight: withCache(\n \"slideRight\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 -translate-x-4\",\n to: \"opacity-100 translate-x-0\",\n duration: 300,\n })\n ).className\n ),\n scaleIn: withCache(\n \"scaleIn\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 scale-95\",\n to: \"opacity-100 scale-100\",\n duration: 200,\n easing: \"cubic-bezier(0.16,1,0.3,1)\",\n })\n ).className\n ),\n scaleOut: withCache(\n \"scaleOut\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-100 scale-100\",\n to: \"opacity-0 scale-95\",\n duration: 150,\n })\n ).className\n ),\n blurIn: withCache(\n \"blurIn\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 blur-sm\",\n to: \"opacity-100 blur-none\",\n duration: 300,\n })\n ).className\n ),\n bounceIn: withCache(\n \"bounceIn\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 scale-50\",\n to: \"opacity-100 scale-100\",\n duration: 400,\n easing: \"cubic-bezier(0.34,1.56,0.64,1)\",\n })\n ).className\n ),\n spinIn: withCache(\n \"spinIn\",\n async () =>\n (\n await registry.compileAnimation({\n from: \"opacity-0 rotate-180 scale-50\",\n to: \"opacity-100 rotate-0 scale-100\",\n duration: 400,\n easing: \"cubic-bezier(0.16,1,0.3,1)\",\n })\n ).className\n ),\n } as const\n}\n","// src/analyzeWorkspace.ts\nimport path2 from \"path\";\nimport { scanWorkspaceAsync } from \"@tailwind-styled/scanner\";\n\n// src/binding.ts\nimport {\n loadNativeBinding,\n resolveNativeBindingCandidates,\n resolveRuntimeDir\n} from \"@tailwind-styled/shared\";\n\n// src/utils.ts\nimport fs from \"fs\";\nimport { createDebugLogger } from \"@tailwind-styled/shared\";\nvar DEFAULT_TOP_LIMIT = 10;\nvar DEFAULT_FREQUENT_THRESHOLD = 2;\nvar DEBUG_NAMESPACE = \"tailwind-styled:analyzer\";\nfunction formatErrorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\nfunction isRecord(value) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\nasync function pathExists(filePath) {\n try {\n await fs.promises.access(filePath, fs.constants.F_OK);\n return true;\n } catch {\n return false;\n }\n}\nvar debugLog = createDebugLogger(DEBUG_NAMESPACE, \"tailwind-styled/analyzer\");\nfunction sanitizeTopLimit(value) {\n if (!Number.isFinite(value)) return DEFAULT_TOP_LIMIT;\n return Math.max(1, Math.trunc(value));\n}\nfunction sanitizeFrequentThreshold(value) {\n if (!Number.isFinite(value)) return DEFAULT_FREQUENT_THRESHOLD;\n return Math.max(1, Math.trunc(value));\n}\n\n// src/binding.ts\nvar bindingCache;\nvar bindingCandidateCache = [];\nvar bindingLoadErrorsCache = [];\nvar loadedBindingPathCache = null;\nfunction isAnalyzerModule(module) {\n const candidate = module;\n return typeof candidate?.analyzeClasses === \"function\";\n}\nfunction getNativeBinding() {\n if (bindingCache !== void 0) return bindingCache;\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n bindingCandidateCache = [];\n bindingLoadErrorsCache = [];\n loadedBindingPathCache = null;\n debugLog(\"native binding disabled by TWS_NO_NATIVE/TWS_NO_RUST\");\n bindingCache = null;\n return bindingCache;\n }\n const runtimeDir = resolveRuntimeDir(\n typeof __dirname === \"string\" ? __dirname : void 0,\n import.meta.url\n );\n const candidates = resolveNativeBindingCandidates({\n runtimeDir,\n envVarNames: [\"TWS_NATIVE_PATH\"]\n });\n const { binding, loadErrors, loadedPath } = loadNativeBinding({\n runtimeDir,\n candidates,\n isValid: isAnalyzerModule,\n invalidExportMessage: \"Module loaded but missing `analyzeClasses` export.\"\n });\n bindingCandidateCache = candidates;\n bindingLoadErrorsCache = loadErrors;\n loadedBindingPathCache = loadedPath;\n if (binding) {\n debugLog(`native binding loaded from: ${loadedPath}`);\n bindingCache = binding;\n return bindingCache;\n }\n if (bindingLoadErrorsCache.length > 0) {\n debugLog(\n `native binding load failed for ${bindingLoadErrorsCache.length} candidate(s): ${bindingLoadErrorsCache.map((entry) => `${entry.path} (${entry.message})`).join(\"; \")}`\n );\n } else {\n debugLog(\"native binding not found in any candidate path\");\n }\n bindingCache = null;\n return bindingCache;\n}\nfunction requireNativeBinding() {\n const binding = getNativeBinding();\n if (binding?.analyzeClasses) return binding;\n const lines = [\n \"Native analyzer binding not found. Ensure `tailwind_styled_parser.node` is built.\"\n ];\n if (process.env.TWS_NO_NATIVE === \"1\" || process.env.TWS_NO_RUST === \"1\") {\n lines.push(\"Native loading is disabled by TWS_NO_NATIVE/TWS_NO_RUST.\");\n } else {\n lines.push(\"Checked paths:\");\n for (const candidate of bindingCandidateCache) lines.push(`- ${candidate}`);\n if (bindingLoadErrorsCache.length > 0) {\n lines.push(\"Load errors:\");\n for (const failure of bindingLoadErrorsCache) {\n lines.push(`- ${failure.path}: ${failure.message}`);\n }\n }\n }\n throw new Error(lines.join(\"\\n\"));\n}\nfunction requireNativeCssCompiler() {\n const binding = requireNativeBinding();\n if (typeof binding.compileCss === \"function\") return binding;\n const loadedPathText = loadedBindingPathCache ? ` (${loadedBindingPathCache})` : \"\";\n throw new Error(`Native analyzer compileCss binding is missing in v5${loadedPathText}.`);\n}\n\n// src/semantic.ts\nimport fs2 from \"fs\";\nimport path from \"path\";\nimport { pathToFileURL } from \"url\";\nvar SUPPORTED_TAILWIND_CONFIG_EXTENSIONS = /* @__PURE__ */ new Set([\".ts\", \".js\", \".cjs\", \".mjs\"]);\nvar KNOWN_UTILITY_PREFIXES = /* @__PURE__ */ new Set([\n \"absolute\",\n \"align\",\n \"animate\",\n \"arbitrary\",\n \"aspect\",\n \"backdrop\",\n \"basis\",\n \"bg\",\n \"block\",\n \"border\",\n \"bottom\",\n \"col\",\n \"container\",\n \"contents\",\n \"cursor\",\n \"dark\",\n \"display\",\n \"divide\",\n \"fill\",\n \"fixed\",\n \"flex\",\n \"float\",\n \"font\",\n \"from\",\n \"gap\",\n \"grid\",\n \"grow\",\n \"h\",\n \"hidden\",\n \"inset\",\n \"inline\",\n \"isolate\",\n \"items\",\n \"justify\",\n \"left\",\n \"leading\",\n \"line\",\n \"list\",\n \"m\",\n \"max-h\",\n \"max-w\",\n \"mb\",\n \"min-h\",\n \"min-w\",\n \"ml\",\n \"mr\",\n \"mt\",\n \"mx\",\n \"my\",\n \"object\",\n \"opacity\",\n \"order\",\n \"origin\",\n \"outline\",\n \"overflow\",\n \"overscroll\",\n \"p\",\n \"pb\",\n \"pe\",\n \"perspective\",\n \"place\",\n \"pl\",\n \"pointer\",\n \"position\",\n \"pr\",\n \"ps\",\n \"pt\",\n \"px\",\n \"py\",\n \"relative\",\n \"right\",\n \"ring\",\n \"rotate\",\n \"rounded\",\n \"row\",\n \"scale\",\n \"shadow\",\n \"shrink\",\n \"size\",\n \"skew\",\n \"snap\",\n \"space-x\",\n \"space-y\",\n \"sr\",\n \"start\",\n \"static\",\n \"sticky\",\n \"stroke\",\n \"table\",\n \"text\",\n \"to\",\n \"top\",\n \"touch\",\n \"tracking\",\n \"transform\",\n \"transition\",\n \"translate\",\n \"truncate\",\n \"underline\",\n \"via\",\n \"visible\",\n \"w\",\n \"whitespace\",\n \"z\"\n]);\nvar tailwindConfigCache = /* @__PURE__ */ new Map();\nfunction splitVariantAndBase(className) {\n const parts = className.split(\":\");\n if (parts.length <= 1) return { variantKey: \"\", base: className };\n const base = parts.pop() ?? className;\n return { variantKey: parts.join(\":\"), base };\n}\nfunction isArbitraryUtility(baseClass) {\n return baseClass.includes(\"[\") && baseClass.includes(\"]\");\n}\nfunction resolveConflictGroup(base) {\n if (isArbitraryUtility(base)) return null;\n if ([\"block\", \"inline\", \"inline-block\", \"inline-flex\", \"flex\", \"grid\", \"hidden\"].includes(base))\n return \"display\";\n if (base.startsWith(\"bg-\")) return \"bg\";\n if (base.startsWith(\"text-\")) return \"text\";\n if (base.startsWith(\"font-\")) return \"font\";\n if (base.startsWith(\"rounded\")) return \"rounded\";\n if (base.startsWith(\"shadow\")) return \"shadow\";\n if (base.startsWith(\"border-\")) return \"border\";\n if (base.startsWith(\"opacity-\")) return \"opacity\";\n if (base.startsWith(\"w-\") || base.startsWith(\"min-w-\") || base.startsWith(\"max-w-\")) return \"width\";\n if (base.startsWith(\"h-\") || base.startsWith(\"min-h-\") || base.startsWith(\"max-h-\")) return \"height\";\n if (base.startsWith(\"p-\") || base.startsWith(\"px-\") || base.startsWith(\"py-\")) return \"padding\";\n if (base.startsWith(\"m-\") || base.startsWith(\"mx-\") || base.startsWith(\"my-\")) return \"margin\";\n return null;\n}\nfunction detectConflicts(usages) {\n const buckets = /* @__PURE__ */ new Map();\n for (const usage of usages) {\n const { variantKey, base } = splitVariantAndBase(usage.name);\n const group = resolveConflictGroup(base);\n if (!group) continue;\n const key = `${variantKey}::${group}`;\n const bucket = buckets.get(key) ?? {\n variantKey,\n group,\n classes: /* @__PURE__ */ new Set()\n };\n bucket.classes.add(usage.name);\n buckets.set(key, bucket);\n }\n const conflicts = [];\n const conflictedClassNames = /* @__PURE__ */ new Set();\n for (const bucket of buckets.values()) {\n if (bucket.classes.size <= 1) continue;\n const classes = Array.from(bucket.classes).sort();\n for (const className of classes) conflictedClassNames.add(className);\n const variantLabel = bucket.variantKey.length > 0 ? bucket.variantKey : \"base\";\n conflicts.push({\n className: bucket.group,\n variants: bucket.variantKey.length > 0 ? bucket.variantKey.split(\":\") : [],\n classes,\n message: `Multiple ${bucket.group} utilities detected for \"${variantLabel}\".`\n });\n }\n conflicts.sort((left, right) => {\n if (right.classes.length !== left.classes.length) return right.classes.length - left.classes.length;\n return left.className.localeCompare(right.className);\n });\n return { conflicts, conflictedClassNames };\n}\nfunction isSupportedTailwindConfigPath(configPath) {\n return SUPPORTED_TAILWIND_CONFIG_EXTENSIONS.has(path.extname(configPath).toLowerCase());\n}\nasync function resolveTailwindConfigPath(root, explicitPath) {\n if (explicitPath) {\n const resolved = path.resolve(root, explicitPath);\n if (!await pathExists(resolved)) return null;\n return resolved;\n }\n const candidates = [\n \"tailwind.config.ts\",\n \"tailwind.config.js\",\n \"tailwind.config.cjs\",\n \"tailwind.config.mjs\"\n ];\n for (const candidate of candidates) {\n const fullPath = path.resolve(root, candidate);\n if (await pathExists(fullPath)) return fullPath;\n }\n return null;\n}\nfunction collectSafelistFromConfig(config) {\n const raw = config.safelist;\n if (!Array.isArray(raw)) return [];\n const out = /* @__PURE__ */ new Set();\n for (const entry of raw) {\n if (typeof entry === \"string\" && entry.length > 0) {\n out.add(entry);\n continue;\n }\n if (!entry || typeof entry !== \"object\") continue;\n const pattern = entry.pattern;\n if (typeof pattern === \"string\" && pattern.length > 0) {\n out.add(pattern);\n }\n }\n return Array.from(out);\n}\nfunction collectCustomUtilities(config) {\n const out = /* @__PURE__ */ new Set();\n const theme = config.theme;\n if (!theme || typeof theme !== \"object\") return out;\n const extend = theme.extend;\n if (!extend || typeof extend !== \"object\") return out;\n for (const [section, value] of Object.entries(extend)) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) continue;\n for (const key of Object.keys(value)) {\n out.add(`${section}-${key}`);\n if (section === \"colors\") {\n out.add(`bg-${key}`);\n out.add(`text-${key}`);\n out.add(`border-${key}`);\n } else if (section === \"spacing\") {\n out.add(`p-${key}`);\n out.add(`m-${key}`);\n out.add(`gap-${key}`);\n out.add(`w-${key}`);\n out.add(`h-${key}`);\n } else if (section === \"fontSize\") {\n out.add(`text-${key}`);\n } else if (section === \"borderRadius\") {\n out.add(`rounded-${key}`);\n } else if (section === \"boxShadow\") {\n out.add(`shadow-${key}`);\n }\n }\n }\n return out;\n}\nasync function collectSafelistFromSource(configPath) {\n const source = await fs2.promises.readFile(configPath, \"utf8\");\n const safelistBlock = source.match(/safelist\\s*:\\s*\\[([\\s\\S]*?)\\]/m)?.[1];\n if (!safelistBlock) return [];\n const out = /* @__PURE__ */ new Set();\n const tokenRegex = /[\"'`]([^\"'`]+)[\"'`]/g;\n let token = tokenRegex.exec(safelistBlock);\n while (token) {\n const value = token[1].trim();\n if (value.length > 0) out.add(value);\n token = tokenRegex.exec(safelistBlock);\n }\n return Array.from(out);\n}\nasync function loadTailwindConfig(root, semanticOption) {\n const startMs = Date.now();\n const configPath = await resolveTailwindConfigPath(root, semanticOption?.tailwindConfigPath);\n if (!configPath) return null;\n if (!isSupportedTailwindConfigPath(configPath)) {\n return {\n path: configPath,\n loaded: false,\n warning: `Unsupported Tailwind config extension at \"${configPath}\". Supported extensions: .ts, .js, .cjs, .mjs.`,\n safelist: /* @__PURE__ */ new Set(),\n customUtilities: /* @__PURE__ */ new Set()\n };\n }\n const configStat = await fs2.promises.stat(configPath).catch(() => null);\n if (configStat) {\n const cached = tailwindConfigCache.get(configPath);\n if (cached && cached.mtimeMs === configStat.mtimeMs && cached.size === configStat.size) {\n debugLog(\n `tailwind config cache hit: ${configPath} (${cached.config.safelist.size} safelist entries)`\n );\n return cached.config;\n }\n }\n let config = null;\n let warning;\n try {\n const cacheBustToken = Math.trunc(configStat?.mtimeMs ?? Date.now());\n const imported = await import(`${pathToFileURL(configPath).href}?tws_mtime=${cacheBustToken}`);\n const candidate = imported.default ?? imported;\n if (isRecord(candidate)) {\n config = candidate;\n } else if (typeof candidate === \"function\") {\n const evaluated = candidate();\n if (isRecord(evaluated)) {\n config = evaluated;\n } else {\n warning = \"Tailwind config export function must return an object.\";\n }\n } else {\n warning = \"Tailwind config export must be an object or a function returning an object.\";\n }\n } catch (error) {\n warning = formatErrorMessage(error);\n }\n const safelist = /* @__PURE__ */ new Set();\n const customUtilities = /* @__PURE__ */ new Set();\n if (config) {\n for (const item of collectSafelistFromConfig(config)) safelist.add(item);\n for (const item of collectCustomUtilities(config)) customUtilities.add(item);\n }\n if (safelist.size === 0) {\n try {\n for (const item of await collectSafelistFromSource(configPath)) safelist.add(item);\n } catch (error) {\n debugLog(\n `failed to parse safelist from source at \"${configPath}\": ${formatErrorMessage(error)}`\n );\n }\n }\n const loaded = {\n path: configPath,\n loaded: config !== null,\n warning,\n safelist,\n customUtilities\n };\n if (configStat) {\n tailwindConfigCache.set(configPath, {\n mtimeMs: configStat.mtimeMs,\n size: configStat.size,\n config: loaded\n });\n }\n debugLog(\n `tailwind config loaded from \"${configPath}\" in ${Date.now() - startMs}ms (loaded=${loaded.loaded}, safelist=${loaded.safelist.size}, custom=${loaded.customUtilities.size})`\n );\n return loaded;\n}\nfunction utilityPrefix(baseClass) {\n const normalized = baseClass.startsWith(\"-\") ? baseClass.slice(1) : baseClass;\n if (normalized.includes(\"[\") && normalized.includes(\"]\")) return \"arbitrary\";\n if (normalized.startsWith(\"min-w-\")) return \"min-w\";\n if (normalized.startsWith(\"max-w-\")) return \"max-w\";\n if (normalized.startsWith(\"min-h-\")) return \"min-h\";\n if (normalized.startsWith(\"max-h-\")) return \"max-h\";\n if (normalized.startsWith(\"space-x-\")) return \"space-x\";\n if (normalized.startsWith(\"space-y-\")) return \"space-y\";\n if (normalized.startsWith(\"inline-\")) return \"inline\";\n if (normalized.startsWith(\"border-\")) return \"border\";\n if (normalized.startsWith(\"text-\")) return \"text\";\n if (normalized.startsWith(\"bg-\")) return \"bg\";\n if (normalized.startsWith(\"rounded\")) return \"rounded\";\n if (normalized.startsWith(\"shadow\")) return \"shadow\";\n const hyphen = normalized.indexOf(\"-\");\n if (hyphen < 0) return normalized;\n return normalized.slice(0, hyphen);\n}\nfunction isKnownTailwindClass(className, safelist, customUtilities) {\n if (safelist.has(className) || customUtilities.has(className)) return true;\n const { base } = splitVariantAndBase(className);\n if (customUtilities.has(base)) return true;\n const prefix = utilityPrefix(base);\n return KNOWN_UTILITY_PREFIXES.has(prefix);\n}\nasync function buildSemanticReport(usages, root, semanticOption) {\n const loadedConfig = await loadTailwindConfig(root, semanticOption);\n const safelist = loadedConfig?.safelist ?? /* @__PURE__ */ new Set();\n const customUtilities = loadedConfig?.customUtilities ?? /* @__PURE__ */ new Set();\n const usageNames = new Set(usages.map((usage) => usage.name));\n const unusedClasses = Array.from(safelist).filter((className) => !usageNames.has(className)).sort().map((className) => ({ name: className, count: 0, isUnused: true }));\n const unknownClasses = usages.filter((usage) => !isKnownTailwindClass(usage.name, safelist, customUtilities)).map((usage) => ({ ...usage, isUnused: true }));\n const { conflicts } = detectConflicts(usages);\n return {\n unusedClasses,\n unknownClasses,\n conflicts,\n ...loadedConfig ? {\n tailwindConfig: {\n path: loadedConfig.path,\n loaded: loadedConfig.loaded,\n safelistCount: loadedConfig.safelist.size,\n customUtilityCount: loadedConfig.customUtilities.size,\n ...loadedConfig.warning ? { warning: loadedConfig.warning } : {}\n }\n } : {}\n };\n}\n\n// src/analyzeWorkspace.ts\nfunction normalizeScan(scan, includeClass) {\n if (!includeClass) return scan;\n const filteredFiles = scan.files.map((file) => ({\n file: file.file,\n classes: file.classes.filter((className) => includeClass(className))\n }));\n const unique = /* @__PURE__ */ new Set();\n for (const file of filteredFiles) {\n for (const className of file.classes) unique.add(className);\n }\n return {\n files: filteredFiles,\n totalFiles: scan.totalFiles,\n uniqueClasses: Array.from(unique).sort()\n };\n}\nfunction collectClassCounts(scan) {\n const counts = /* @__PURE__ */ new Map();\n for (const file of scan.files) {\n for (const className of file.classes) {\n counts.set(className, (counts.get(className) ?? 0) + 1);\n }\n }\n return counts;\n}\nfunction buildClassUsage(counts) {\n return Array.from(counts.entries()).map(([name, count]) => ({ name, count })).sort((left, right) => {\n if (right.count !== left.count) return right.count - left.count;\n return left.name.localeCompare(right.name);\n });\n}\nfunction buildDistribution(usages) {\n const distribution = {\n \"1\": 0,\n \"2-3\": 0,\n \"4-7\": 0,\n \"8+\": 0\n };\n for (const usage of usages) {\n if (usage.count === 1) {\n distribution[\"1\"] += 1;\n continue;\n }\n if (usage.count <= 3) {\n distribution[\"2-3\"] += 1;\n continue;\n }\n if (usage.count <= 7) {\n distribution[\"4-7\"] += 1;\n continue;\n }\n distribution[\"8+\"] += 1;\n }\n return distribution;\n}\nasync function analyzeWorkspace(root, options = {}) {\n const startedAtMs = Date.now();\n const resolvedRoot = path2.resolve(root);\n const scanStartedAtMs = Date.now();\n let scan;\n try {\n scan = await scanWorkspaceAsync(resolvedRoot, options.scanner);\n } catch (error) {\n throw new Error(\n `Failed to scan workspace at \"${resolvedRoot}\": ${formatErrorMessage(error)}`,\n { cause: error }\n );\n }\n debugLog(`scanWorkspaceAsync processed ${scan.totalFiles} files in ${Date.now() - scanStartedAtMs}ms`);\n const normalizedScan = normalizeScan(scan, options.includeClass);\n const topLimit = sanitizeTopLimit(options.classStats?.top);\n const frequentThreshold = sanitizeFrequentThreshold(options.classStats?.frequentThreshold);\n const binding = requireNativeBinding();\n const filesJson = JSON.stringify(\n normalizedScan.files.map((file) => ({ file: file.file, classes: file.classes }))\n );\n let nativeReport = null;\n try {\n nativeReport = binding.analyzeClasses(filesJson, resolvedRoot, topLimit);\n } catch (error) {\n throw new Error(\n `Native analyzer failed for \"${resolvedRoot}\": ${formatErrorMessage(error)}`,\n { cause: error }\n );\n }\n if (!nativeReport) {\n throw new Error(`Native analyzer returned no report for \"${resolvedRoot}\".`);\n }\n const counts = collectClassCounts(normalizedScan);\n let all = buildClassUsage(counts);\n let semanticReport;\n if (options.semantic) {\n const semanticOption = typeof options.semantic === \"object\" ? options.semantic : void 0;\n const semanticStartedAtMs = Date.now();\n try {\n semanticReport = await buildSemanticReport(all, resolvedRoot, semanticOption);\n } catch (error) {\n throw new Error(\n `Failed to build semantic report for \"${resolvedRoot}\": ${formatErrorMessage(error)}`,\n { cause: error }\n );\n }\n debugLog(`semantic report built in ${Date.now() - semanticStartedAtMs}ms`);\n if (semanticReport.conflicts.length > 0) {\n const conflicted = new Set(\n semanticReport.conflicts.flatMap((conflict) => conflict.classes)\n );\n all = all.map(\n (usage) => conflicted.has(usage.name) ? { ...usage, isConflict: true } : usage\n );\n }\n }\n const top = all.slice(0, topLimit);\n const frequent = all.filter((usage) => usage.count >= frequentThreshold).slice(0, topLimit);\n const unique = all.filter((usage) => usage.count === 1);\n const totalClassOccurrences = all.reduce((sum, usage) => sum + usage.count, 0);\n debugLog(\n `analyzeWorkspace completed in ${Date.now() - startedAtMs}ms (files=${normalizedScan.totalFiles}, uniqueClasses=${all.length})`\n );\n return {\n root: nativeReport.root || resolvedRoot,\n totalFiles: nativeReport.totalFiles,\n uniqueClassCount: all.length,\n totalClassOccurrences,\n classStats: {\n all,\n top,\n frequent,\n unique,\n distribution: buildDistribution(all)\n },\n safelist: all.map((usage) => usage.name),\n ...semanticReport ? { semantic: semanticReport } : {}\n };\n}\n\n// src/classToCss.ts\nfunction normalizeClassInput(input) {\n if (typeof input === \"string\") {\n return input.split(/\\s+/).map((item) => item.trim()).filter((item) => item.length > 0);\n }\n if (!Array.isArray(input)) {\n throw new TypeError(\"classToCss input must be a string or an array of strings.\");\n }\n const out = [];\n for (const item of input) {\n if (typeof item !== \"string\") {\n throw new TypeError(\"classToCss input array must contain only strings.\");\n }\n const value = item.trim();\n if (value.length > 0) out.push(value);\n }\n return out;\n}\nfunction normalizeClassToCssOptions(options) {\n if (!options || typeof options !== \"object\" || Array.isArray(options)) {\n throw new TypeError(\"classToCss options must be an object.\");\n }\n const strict = options.strict ?? false;\n if (typeof strict !== \"boolean\") {\n throw new TypeError(\"classToCss options.strict must be a boolean when provided.\");\n }\n const prefix = options.prefix ?? null;\n if (prefix !== null && typeof prefix !== \"string\") {\n throw new TypeError(\"classToCss options.prefix must be a string or null when provided.\");\n }\n return { prefix, strict };\n}\nfunction mergeDeclarationMap(target, css) {\n const ruleRegex = /\\{([^}]*)\\}/g;\n let ruleMatch = ruleRegex.exec(css);\n while (ruleMatch) {\n const body = ruleMatch[1];\n for (const raw of body.split(\";\")) {\n const declaration = raw.trim();\n if (declaration.length === 0) continue;\n const colonIndex = declaration.indexOf(\":\");\n if (colonIndex <= 0) continue;\n const property = declaration.slice(0, colonIndex).trim();\n const value = declaration.slice(colonIndex + 1).trim();\n if (property.length === 0 || value.length === 0) continue;\n if (target.has(property)) target.delete(property);\n target.set(property, value);\n }\n ruleMatch = ruleRegex.exec(css);\n }\n}\nfunction declarationMapToString(declarationMap) {\n return Array.from(declarationMap.entries()).map(([property, value]) => `${property}: ${value}`).join(\"; \");\n}\nasync function classToCss(input, options = {}) {\n const inputClasses = normalizeClassInput(input);\n const normalizedOptions = normalizeClassToCssOptions(options);\n if (inputClasses.length === 0) {\n return {\n inputClasses: [],\n css: \"\",\n declarations: \"\",\n resolvedClasses: [],\n unknownClasses: [],\n sizeBytes: 0\n };\n }\n const binding = requireNativeCssCompiler();\n const prefix = normalizedOptions.prefix;\n const cssChunks = [];\n const resolvedClasses = [];\n const unknownClasses = [];\n let sizeBytes = 0;\n const declarationMap = /* @__PURE__ */ new Map();\n for (const className of inputClasses) {\n let compiled = null;\n try {\n compiled = binding.compileCss([className], prefix);\n } catch (error) {\n throw new Error(\n `Native analyzer failed while compiling class \"${className}\": ${formatErrorMessage(error)}`,\n { cause: error }\n );\n }\n if (!compiled) {\n throw new Error(`Native analyzer returned no result for class \"${className}\".`);\n }\n cssChunks.push(compiled.css);\n resolvedClasses.push(...compiled.resolvedClasses);\n unknownClasses.push(...compiled.unknownClasses);\n sizeBytes += compiled.sizeBytes;\n mergeDeclarationMap(declarationMap, compiled.css);\n }\n const uniqueUnknown = Array.from(new Set(unknownClasses));\n if (normalizedOptions.strict && uniqueUnknown.length > 0) {\n throw new Error(`Unknown Tailwind classes: ${uniqueUnknown.join(\", \")}`);\n }\n return {\n inputClasses,\n css: cssChunks.filter((chunk) => chunk.length > 0).join(\"\\n\"),\n declarations: declarationMapToString(declarationMap),\n resolvedClasses: Array.from(new Set(resolvedClasses)),\n unknownClasses: uniqueUnknown,\n sizeBytes\n };\n}\n\n// src/index.ts\nvar __internal = {\n normalizeClassInput,\n splitVariantAndBase,\n resolveConflictGroup,\n collectClassCounts,\n buildDistribution,\n utilityPrefix\n};\nexport {\n __internal,\n analyzeWorkspace,\n classToCss\n};\n","import { classToCss } from \"@tailwind-styled/analyzer\"\nimport { LRUCache, formatErrorMessage } from \"@tailwind-styled/shared\"\n\nimport { getAnimateBinding } from \"./binding\"\nimport type {\n AnimateOptions,\n AnimationRegistryOptions,\n CompiledAnimation,\n KeyframesDefinition,\n} from \"./types\"\n\nconst DEFAULT_DURATION = 300\nconst DEFAULT_EASING = \"ease-out\"\nconst DEFAULT_DELAY = 0\nconst DEFAULT_FILL = \"both\"\nconst DEFAULT_ITERATIONS = 1\nconst DEFAULT_DIRECTION = \"normal\"\nconst DEFAULT_CACHE_LIMIT = 512\n\nfunction normalizeNumber(value: number | undefined, fallback: number): number {\n if (!Number.isFinite(value)) return fallback\n return Math.max(0, Math.trunc(value as number))\n}\n\nfunction normalizeCacheLimit(value: number | undefined): number {\n if (!Number.isFinite(value)) return DEFAULT_CACHE_LIMIT\n return Math.max(1, Math.trunc(value as number))\n}\n\nfunction normalizeIterations(value: AnimateOptions[\"iterations\"]): string {\n if (value === \"infinite\") return \"infinite\"\n if (!Number.isFinite(value)) return String(DEFAULT_ITERATIONS)\n return String(Math.max(0, Math.trunc(value as number)))\n}\n\nfunction stableKeyframesEntries(stops: KeyframesDefinition): Array<{ offset: string; classes: string }> {\n return Object.entries(stops)\n .map(([offset, classes]) => ({ offset, classes }))\n .sort((left, right) => left.offset.localeCompare(right.offset))\n}\n\nfunction animationCacheKey(opts: AnimateOptions): string {\n const normalized = {\n from: opts.from.trim(),\n to: opts.to.trim(),\n duration: normalizeNumber(opts.duration, DEFAULT_DURATION),\n easing: (opts.easing ?? DEFAULT_EASING).trim(),\n delay: normalizeNumber(opts.delay, DEFAULT_DELAY),\n fill: opts.fill ?? DEFAULT_FILL,\n iterations: normalizeIterations(opts.iterations),\n direction: opts.direction ?? DEFAULT_DIRECTION,\n name: opts.name ?? \"\",\n }\n return JSON.stringify(normalized)\n}\n\nfunction keyframesCacheKey(name: string, stops: KeyframesDefinition): string {\n return `${name}::${JSON.stringify(stableKeyframesEntries(stops))}`\n}\n\nfunction splitClasses(classList: string): string[] {\n return classList\n .split(/\\s+/)\n .map((item) => item.trim())\n .filter((item) => item.length > 0)\n}\n\nasync function validateTailwindClasses(\n entries: Array<{ classList: string; context: string }>\n): Promise<void> {\n const binding = await getAnimateBinding()\n const unknownByContext = new Map<string, Set<string>>()\n const failures: string[] = []\n\n for (const entry of entries) {\n const classes = splitClasses(entry.classList)\n if (classes.length === 0) continue\n\n try {\n if (typeof binding.compileCss === \"function\") {\n const compiled = binding.compileCss(classes, null)\n if (!compiled) {\n failures.push(`Animation ${entry.context} failed validation: native compileCss returned no result.`)\n continue\n }\n if (compiled.unknownClasses.length > 0) {\n const bucket = unknownByContext.get(entry.context) ?? new Set<string>()\n for (const className of compiled.unknownClasses) bucket.add(className)\n unknownByContext.set(entry.context, bucket)\n }\n continue\n }\n\n const checked = await classToCss(classes, { strict: false })\n if (checked.unknownClasses.length > 0) {\n const bucket = unknownByContext.get(entry.context) ?? new Set<string>()\n for (const className of checked.unknownClasses) bucket.add(className)\n unknownByContext.set(entry.context, bucket)\n }\n } catch (error) {\n failures.push(`Animation ${entry.context} failed validation: ${formatErrorMessage(error)}`)\n }\n }\n\n const issues: string[] = []\n for (const [context, classes] of unknownByContext.entries()) {\n issues.push(`Animation ${context} contains unknown Tailwind classes: ${Array.from(classes).join(\", \")}`)\n }\n issues.push(...failures)\n\n if (issues.length > 0) {\n throw new Error(issues.join(\"\\n\"))\n }\n}\n\nexport class AnimationRegistry {\n private readonly animations: LRUCache<string, CompiledAnimation>\n private readonly animationBySignature: LRUCache<string, string>\n private readonly keyframesBySignature: LRUCache<string, string>\n\n constructor(options: AnimationRegistryOptions = {}) {\n const cacheLimit = normalizeCacheLimit(options.cacheLimit)\n this.animations = new LRUCache(cacheLimit)\n this.animationBySignature = new LRUCache(cacheLimit)\n this.keyframesBySignature = new LRUCache(cacheLimit)\n }\n\n async compileAnimation(opts: AnimateOptions): Promise<CompiledAnimation> {\n const signature = animationCacheKey(opts)\n const existingClassName = this.animationBySignature.get(signature)\n if (existingClassName) {\n const cached = this.animations.get(existingClassName)\n if (cached) return cached\n this.animationBySignature.delete(signature)\n }\n\n await validateTailwindClasses([\n { classList: opts.from, context: `\"from\" in ${opts.name ?? \"anonymous animation\"}` },\n { classList: opts.to, context: `\"to\" in ${opts.name ?? \"anonymous animation\"}` },\n ])\n\n const binding = await getAnimateBinding()\n const duration = normalizeNumber(opts.duration, DEFAULT_DURATION)\n const easing = opts.easing ?? DEFAULT_EASING\n const delay = normalizeNumber(opts.delay, DEFAULT_DELAY)\n const fill = opts.fill ?? DEFAULT_FILL\n const iterations = normalizeIterations(opts.iterations)\n const direction = opts.direction ?? DEFAULT_DIRECTION\n\n const compiled = binding.compileAnimation?.(\n opts.from,\n opts.to,\n opts.name ?? null,\n duration,\n easing,\n delay,\n fill,\n iterations,\n direction\n )\n\n if (!compiled) {\n throw new Error(\n `Native animate backend failed to compile animation \"${opts.name ?? \"anonymous animation\"}\".`\n )\n }\n\n const result: CompiledAnimation = {\n className: compiled.className,\n keyframesCss: compiled.keyframesCss,\n animationCss: compiled.animationCss,\n }\n\n this.animations.set(result.className, result)\n this.animationBySignature.set(signature, result.className)\n return result\n }\n\n async compileKeyframes(name: string, stops: KeyframesDefinition): Promise<CompiledAnimation> {\n const signature = keyframesCacheKey(name, stops)\n const existingClassName = this.keyframesBySignature.get(signature)\n if (existingClassName) {\n const cached = this.animations.get(existingClassName)\n if (cached) return cached\n this.keyframesBySignature.delete(signature)\n }\n\n await validateTailwindClasses(\n Object.entries(stops).map(([offset, classes]) => ({\n classList: classes,\n context: `\"${offset}\" stop in keyframes \"${name}\"`,\n }))\n )\n\n const binding = await getAnimateBinding()\n const stopsJson = JSON.stringify(stableKeyframesEntries(stops))\n const compiled = binding.compileKeyframes?.(name, stopsJson)\n\n if (!compiled) {\n throw new Error(`Native animate backend failed to compile keyframes \"${name}\".`)\n }\n\n const result: CompiledAnimation = {\n className: compiled.className,\n keyframesCss: compiled.keyframesCss,\n animationCss: compiled.animationCss,\n }\n\n this.animations.set(result.className, result)\n this.keyframesBySignature.set(signature, result.className)\n return result\n }\n\n extractCss(): string {\n const lines: string[] = []\n for (const [, compiled] of this.animations.entries()) {\n lines.push(compiled.keyframesCss)\n lines.push(`.${compiled.className} { ${compiled.animationCss} }`)\n }\n return lines.join(\"\\n\\n\")\n }\n\n reset(): void {\n this.animations.clear()\n this.animationBySignature.clear()\n this.keyframesBySignature.clear()\n }\n\n has(className: string): boolean {\n return this.animations.has(className)\n }\n}\n\nexport function createAnimationRegistry(options: AnimationRegistryOptions = {}): AnimationRegistry {\n return new AnimationRegistry(options)\n}\n","import { initAnimate as initAnimateBackend } from \"./binding\"\nimport { createAnimationPresets } from \"./preset\"\nimport { AnimationRegistry, createAnimationRegistry } from \"./registry\"\nimport type {\n AnimateOptions,\n AnimationRegistryOptions,\n CompiledAnimation,\n KeyframesDefinition,\n} from \"./types\"\n\nexport type {\n AnimateOptions,\n AnimationRegistryOptions,\n CompiledAnimation,\n CSSDirection,\n CSSEasing,\n CSSFillMode,\n CSSIterationCount,\n CubicBezierEasing,\n KeyframesDefinition,\n PresetEasing,\n StepsEasing,\n} from \"./types\"\n\nconst defaultRegistry = createAnimationRegistry()\n\nexport async function initAnimate(): Promise<void> {\n await initAnimateBackend()\n}\n\nexport function getDefaultAnimationRegistry(): AnimationRegistry {\n return defaultRegistry\n}\n\nexport async function compileAnimation(\n opts: AnimateOptions,\n registry: AnimationRegistry = defaultRegistry\n): Promise<CompiledAnimation> {\n return registry.compileAnimation(opts)\n}\n\nexport async function compileKeyframes(\n name: string,\n stops: KeyframesDefinition,\n registry: AnimationRegistry = defaultRegistry\n): Promise<CompiledAnimation> {\n return registry.compileKeyframes(name, stops)\n}\n\nexport async function animate(\n opts: AnimateOptions,\n registry: AnimationRegistry = defaultRegistry\n): Promise<string> {\n return (await registry.compileAnimation(opts)).className\n}\n\nexport async function keyframes(\n name: string,\n stops: KeyframesDefinition,\n registry: AnimationRegistry = defaultRegistry\n): Promise<string> {\n return (await registry.compileKeyframes(name, stops)).className\n}\n\nexport function extractAnimationCss(registry: AnimationRegistry = defaultRegistry): string {\n return registry.extractCss()\n}\n\nexport function resetAnimationRegistry(registry: AnimationRegistry = defaultRegistry): void {\n registry.reset()\n}\n\nexport interface InjectAnimationCssOptions {\n document?: Document\n styleId?: string\n silent?: boolean\n}\n\nexport function injectAnimationCss(\n registry: AnimationRegistry = defaultRegistry,\n options: InjectAnimationCssOptions = {}\n): void {\n const targetDocument = options.document ?? (typeof document !== \"undefined\" ? document : undefined)\n if (!targetDocument) {\n if (options.silent) return\n throw new Error(\"injectAnimationCss requires a browser Document.\")\n }\n\n const styleId = options.styleId ?? \"__tw_animate_styles__\"\n let styleEl = targetDocument.getElementById(styleId) as HTMLStyleElement | null\n if (!styleEl) {\n if (!targetDocument.head) {\n if (options.silent) return\n throw new Error(\"injectAnimationCss requires document.head to exist.\")\n }\n styleEl = targetDocument.createElement(\"style\")\n styleEl.id = styleId\n targetDocument.head.appendChild(styleEl)\n }\n\n styleEl.textContent = registry.extractCss()\n}\n\nexport { AnimationRegistry, createAnimationRegistry } from \"./registry\"\n\nexport const animations = createAnimationPresets(defaultRegistry)\n"]}
|
package/dist/chunk-VZEJV27B.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/* tailwind-styled-v4 v4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
|
|
2
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
3
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
4
|
-
}) : x)(function(x) {
|
|
5
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
6
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
export { __require };
|
|
10
|
-
//# sourceMappingURL=chunk-VZEJV27B.js.map
|
|
11
|
-
//# sourceMappingURL=chunk-VZEJV27B.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-VZEJV27B.js"}
|
package/dist/chunk-Y5D3E72P.cjs
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/* tailwind-styled-v4 v4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
|
|
4
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
5
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
6
|
-
}) : x)(function(x) {
|
|
7
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
8
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
exports.__require = __require;
|
|
12
|
-
//# sourceMappingURL=chunk-Y5D3E72P.cjs.map
|
|
13
|
-
//# sourceMappingURL=chunk-Y5D3E72P.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-Y5D3E72P.cjs"}
|
package/dist/css.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../runtime-css/src/CssInjector.tsx"],"names":["path","React","fs"],"mappings":"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","file":"css.cjs","sourcesContent":["\"use server\"\n\n/**\n * tailwind-styled-v5 — CSS Injector (React Server Component)\n *\n * Inject CSS yang sudah di-generate per-route langsung ke <head>.\n * Dipakai di Next.js App Router layout atau page.\n *\n * Di server component — inject inline CSS, zero client JS.\n * Streaming friendly — CSS di-emit bersamaan dengan HTML.\n *\n * Usage:\n * // app/layout.tsx\n * import { TwCssInjector } from \"tailwind-styled-v4/css\"\n * export default function Layout({ children }) {\n * return <html><head><TwCssInjector/></head><body>{children}</body></html>\n * }\n */\n\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport React from \"react\"\n\ninterface CssInjectorProps {\n /** Override CSS directory. Default: .next/static/css/tw */\n cssDir?: string\n /** Specific route to inject. Default: auto-detect dari headers */\n route?: string\n /** Inject global CSS juga. Default: true */\n includeGlobal?: boolean\n /** Minify inline CSS. Default: true */\n minify?: boolean\n /** Add <link> tag instead of inline <style> untuk cached CSS */\n asLink?: boolean\n /** Override manifest path for dev mode */\n manifestPath?: string\n}\n\nconst defaultProps: CssInjectorProps = {\n cssDir: undefined,\n route: undefined,\n includeGlobal: true,\n minify: true,\n asLink: false,\n manifestPath: undefined,\n}\n\n/**\n * Server Component — inject route-specific CSS into <head>.\n * No client JS, no hydration overhead.\n */\nexport async function TwCssInjector(props?: CssInjectorProps): Promise<React.ReactElement> {\n const { cssDir, route, includeGlobal, minify, asLink, manifestPath } = {\n ...defaultProps,\n ...props,\n }\n const resolvedDir = cssDir ?? path.join(process.cwd(), \".next\", \"static\", \"css\", \"tw\")\n\n const cssChunks: string[] = []\n\n // Try manifest-based loading first (for dev mode)\n if (manifestPath) {\n const manifestCss = loadCssFromManifest(manifestPath, route ?? \"/\")\n if (manifestCss) {\n cssChunks.push(manifestCss)\n }\n } else {\n // Fallback: legacy file-based loading with path detection\n const detectedManifest = detectManifestPath(resolvedDir)\n if (detectedManifest) {\n const manifestCss = loadCssFromManifest(detectedManifest, route ?? \"/\")\n if (manifestCss) {\n cssChunks.push(manifestCss)\n }\n }\n }\n\n // 1. Global CSS (base styles, reset)\n if (includeGlobal) {\n const globalCss = loadCssFile(path.join(resolvedDir, \"_global.css\"))\n if (globalCss) cssChunks.push(globalCss)\n }\n\n // 2. Route-specific CSS\n const targetRoute = route ?? \"/\"\n const routeFile = routeToFilename(targetRoute)\n const routeCss = loadCssFile(path.join(resolvedDir, routeFile))\n if (routeCss) cssChunks.push(routeCss)\n\n if (cssChunks.length === 0) return React.createElement(React.Fragment, null)\n\n const combined = cssChunks.join(\"\\n\")\n const final = minify ? minifyCss(combined) : combined\n\n if (asLink) {\n // Return <link> tag — CSS cached by browser\n return React.createElement(\"link\", {\n rel: \"stylesheet\",\n href: `/_next/static/css/tw/${routeFile}`,\n crossOrigin: \"anonymous\",\n })\n }\n\n // Inline <style> — zero network request, fastest FCP\n return React.createElement(\"style\", {\n dangerouslySetInnerHTML: { __html: final },\n \"data-tw-route\": targetRoute,\n })\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Hook for client components\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Lightweight hook to get current route's CSS classes.\n * Useful for dynamic class injection in client components.\n *\n * Returns empty string on server (SSR) — CSS already injected by TwCssInjector.\n */\nexport function useTwClasses(classes: string): string {\n // In client environment, return classes as-is\n // CSS is already handled by TwCssInjector at server level\n return classes\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction loadCssFile(filepath: string): string | null {\n try {\n if (fs.existsSync(filepath)) {\n return fs.readFileSync(filepath, \"utf-8\")\n }\n } catch {\n // file not found or unreadable\n }\n return null\n}\n\nfunction routeToFilename(route: string): string {\n if (route === \"/\") return \"index.css\"\n if (route === \"__global\") return \"_global.css\"\n return `${route.replace(/^\\//, \"\").replace(/\\//g, \"_\")}.css`\n}\n\nfunction detectManifestPath(cssDir: string): string | null {\n const candidates = [\n path.join(cssDir, \"css-manifest.json\"),\n path.join(process.cwd(), \"public\", \"__tw\", \"css-manifest.json\"),\n path.join(process.cwd(), \"artifacts\", \"route-css\", \"css-manifest.json\"),\n ]\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n return candidate\n }\n }\n return null\n}\n\ninterface CssManifest {\n routes?: Record<string, string>\n global?: string\n [key: string]: unknown\n}\n\nfunction loadCssFromManifest(manifestPath: string, route: string): string | null {\n try {\n if (!fs.existsSync(manifestPath)) return null\n\n const content = fs.readFileSync(manifestPath, \"utf-8\")\n const manifest: CssManifest = JSON.parse(content)\n\n // Try route-specific CSS\n if (manifest.routes?.[route]) {\n const routeCssPath = path.join(path.dirname(manifestPath), manifest.routes[route])\n return loadCssFile(routeCssPath)\n }\n\n // Fallback: global CSS\n if (manifest.global) {\n const globalCssPath = path.join(path.dirname(manifestPath), manifest.global)\n return loadCssFile(globalCssPath)\n }\n } catch {\n // manifest not found or invalid\n }\n return null\n}\n\nfunction minifyCss(css: string): string {\n return css\n .replace(/\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g, \"\")\n .replace(/\\s+/g, \" \")\n .replace(/\\s*{\\s*/g, \"{\")\n .replace(/\\s*}\\s*/g, \"}\")\n .replace(/\\s*;\\s*/g, \";\")\n .trim()\n}\n"]}
|
package/dist/css.d.cts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
interface CssInjectorProps {
|
|
4
|
-
/** Override CSS directory. Default: .next/static/css/tw */
|
|
5
|
-
cssDir?: string;
|
|
6
|
-
/** Specific route to inject. Default: auto-detect dari headers */
|
|
7
|
-
route?: string;
|
|
8
|
-
/** Inject global CSS juga. Default: true */
|
|
9
|
-
includeGlobal?: boolean;
|
|
10
|
-
/** Minify inline CSS. Default: true */
|
|
11
|
-
minify?: boolean;
|
|
12
|
-
/** Add <link> tag instead of inline <style> untuk cached CSS */
|
|
13
|
-
asLink?: boolean;
|
|
14
|
-
/** Override manifest path for dev mode */
|
|
15
|
-
manifestPath?: string;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Server Component — inject route-specific CSS into <head>.
|
|
19
|
-
* No client JS, no hydration overhead.
|
|
20
|
-
*/
|
|
21
|
-
declare function TwCssInjector(props?: CssInjectorProps): Promise<React.ReactElement>;
|
|
22
|
-
/**
|
|
23
|
-
* Lightweight hook to get current route's CSS classes.
|
|
24
|
-
* Useful for dynamic class injection in client components.
|
|
25
|
-
*
|
|
26
|
-
* Returns empty string on server (SSR) — CSS already injected by TwCssInjector.
|
|
27
|
-
*/
|
|
28
|
-
declare function useTwClasses(classes: string): string;
|
|
29
|
-
|
|
30
|
-
export { TwCssInjector, useTwClasses };
|
package/dist/css.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
interface CssInjectorProps {
|
|
4
|
-
/** Override CSS directory. Default: .next/static/css/tw */
|
|
5
|
-
cssDir?: string;
|
|
6
|
-
/** Specific route to inject. Default: auto-detect dari headers */
|
|
7
|
-
route?: string;
|
|
8
|
-
/** Inject global CSS juga. Default: true */
|
|
9
|
-
includeGlobal?: boolean;
|
|
10
|
-
/** Minify inline CSS. Default: true */
|
|
11
|
-
minify?: boolean;
|
|
12
|
-
/** Add <link> tag instead of inline <style> untuk cached CSS */
|
|
13
|
-
asLink?: boolean;
|
|
14
|
-
/** Override manifest path for dev mode */
|
|
15
|
-
manifestPath?: string;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Server Component — inject route-specific CSS into <head>.
|
|
19
|
-
* No client JS, no hydration overhead.
|
|
20
|
-
*/
|
|
21
|
-
declare function TwCssInjector(props?: CssInjectorProps): Promise<React.ReactElement>;
|
|
22
|
-
/**
|
|
23
|
-
* Lightweight hook to get current route's CSS classes.
|
|
24
|
-
* Useful for dynamic class injection in client components.
|
|
25
|
-
*
|
|
26
|
-
* Returns empty string on server (SSR) — CSS already injected by TwCssInjector.
|
|
27
|
-
*/
|
|
28
|
-
declare function useTwClasses(classes: string): string;
|
|
29
|
-
|
|
30
|
-
export { TwCssInjector, useTwClasses };
|
package/dist/css.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../runtime-css/src/CssInjector.tsx"],"names":[],"mappings":"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","file":"css.js","sourcesContent":["\"use server\"\n\n/**\n * tailwind-styled-v5 — CSS Injector (React Server Component)\n *\n * Inject CSS yang sudah di-generate per-route langsung ke <head>.\n * Dipakai di Next.js App Router layout atau page.\n *\n * Di server component — inject inline CSS, zero client JS.\n * Streaming friendly — CSS di-emit bersamaan dengan HTML.\n *\n * Usage:\n * // app/layout.tsx\n * import { TwCssInjector } from \"tailwind-styled-v4/css\"\n * export default function Layout({ children }) {\n * return <html><head><TwCssInjector/></head><body>{children}</body></html>\n * }\n */\n\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport React from \"react\"\n\ninterface CssInjectorProps {\n /** Override CSS directory. Default: .next/static/css/tw */\n cssDir?: string\n /** Specific route to inject. Default: auto-detect dari headers */\n route?: string\n /** Inject global CSS juga. Default: true */\n includeGlobal?: boolean\n /** Minify inline CSS. Default: true */\n minify?: boolean\n /** Add <link> tag instead of inline <style> untuk cached CSS */\n asLink?: boolean\n /** Override manifest path for dev mode */\n manifestPath?: string\n}\n\nconst defaultProps: CssInjectorProps = {\n cssDir: undefined,\n route: undefined,\n includeGlobal: true,\n minify: true,\n asLink: false,\n manifestPath: undefined,\n}\n\n/**\n * Server Component — inject route-specific CSS into <head>.\n * No client JS, no hydration overhead.\n */\nexport async function TwCssInjector(props?: CssInjectorProps): Promise<React.ReactElement> {\n const { cssDir, route, includeGlobal, minify, asLink, manifestPath } = {\n ...defaultProps,\n ...props,\n }\n const resolvedDir = cssDir ?? path.join(process.cwd(), \".next\", \"static\", \"css\", \"tw\")\n\n const cssChunks: string[] = []\n\n // Try manifest-based loading first (for dev mode)\n if (manifestPath) {\n const manifestCss = loadCssFromManifest(manifestPath, route ?? \"/\")\n if (manifestCss) {\n cssChunks.push(manifestCss)\n }\n } else {\n // Fallback: legacy file-based loading with path detection\n const detectedManifest = detectManifestPath(resolvedDir)\n if (detectedManifest) {\n const manifestCss = loadCssFromManifest(detectedManifest, route ?? \"/\")\n if (manifestCss) {\n cssChunks.push(manifestCss)\n }\n }\n }\n\n // 1. Global CSS (base styles, reset)\n if (includeGlobal) {\n const globalCss = loadCssFile(path.join(resolvedDir, \"_global.css\"))\n if (globalCss) cssChunks.push(globalCss)\n }\n\n // 2. Route-specific CSS\n const targetRoute = route ?? \"/\"\n const routeFile = routeToFilename(targetRoute)\n const routeCss = loadCssFile(path.join(resolvedDir, routeFile))\n if (routeCss) cssChunks.push(routeCss)\n\n if (cssChunks.length === 0) return React.createElement(React.Fragment, null)\n\n const combined = cssChunks.join(\"\\n\")\n const final = minify ? minifyCss(combined) : combined\n\n if (asLink) {\n // Return <link> tag — CSS cached by browser\n return React.createElement(\"link\", {\n rel: \"stylesheet\",\n href: `/_next/static/css/tw/${routeFile}`,\n crossOrigin: \"anonymous\",\n })\n }\n\n // Inline <style> — zero network request, fastest FCP\n return React.createElement(\"style\", {\n dangerouslySetInnerHTML: { __html: final },\n \"data-tw-route\": targetRoute,\n })\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Hook for client components\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Lightweight hook to get current route's CSS classes.\n * Useful for dynamic class injection in client components.\n *\n * Returns empty string on server (SSR) — CSS already injected by TwCssInjector.\n */\nexport function useTwClasses(classes: string): string {\n // In client environment, return classes as-is\n // CSS is already handled by TwCssInjector at server level\n return classes\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction loadCssFile(filepath: string): string | null {\n try {\n if (fs.existsSync(filepath)) {\n return fs.readFileSync(filepath, \"utf-8\")\n }\n } catch {\n // file not found or unreadable\n }\n return null\n}\n\nfunction routeToFilename(route: string): string {\n if (route === \"/\") return \"index.css\"\n if (route === \"__global\") return \"_global.css\"\n return `${route.replace(/^\\//, \"\").replace(/\\//g, \"_\")}.css`\n}\n\nfunction detectManifestPath(cssDir: string): string | null {\n const candidates = [\n path.join(cssDir, \"css-manifest.json\"),\n path.join(process.cwd(), \"public\", \"__tw\", \"css-manifest.json\"),\n path.join(process.cwd(), \"artifacts\", \"route-css\", \"css-manifest.json\"),\n ]\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n return candidate\n }\n }\n return null\n}\n\ninterface CssManifest {\n routes?: Record<string, string>\n global?: string\n [key: string]: unknown\n}\n\nfunction loadCssFromManifest(manifestPath: string, route: string): string | null {\n try {\n if (!fs.existsSync(manifestPath)) return null\n\n const content = fs.readFileSync(manifestPath, \"utf-8\")\n const manifest: CssManifest = JSON.parse(content)\n\n // Try route-specific CSS\n if (manifest.routes?.[route]) {\n const routeCssPath = path.join(path.dirname(manifestPath), manifest.routes[route])\n return loadCssFile(routeCssPath)\n }\n\n // Fallback: global CSS\n if (manifest.global) {\n const globalCssPath = path.join(path.dirname(manifestPath), manifest.global)\n return loadCssFile(globalCssPath)\n }\n } catch {\n // manifest not found or invalid\n }\n return null\n}\n\nfunction minifyCss(css: string): string {\n return css\n .replace(/\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g, \"\")\n .replace(/\\s+/g, \" \")\n .replace(/\\s*{\\s*/g, \"{\")\n .replace(/\\s*}\\s*/g, \"}\")\n .replace(/\\s*;\\s*/g, \";\")\n .trim()\n}\n"]}
|
package/dist/devtools.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../devtools/src/index.tsx"],"names":["React","useState","useEffect","useCallback","useRef"],"mappings":"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","file":"devtools.cjs","sourcesContent":["/**\n * tailwind-styled-v4 — DevTools v3\n *\n * Panels:\n * 🔍 Inspector — hover element, see classes + variants\n * ⚡ State — list all reactive state components + active states\n * 📦 Container — list container query components + active breakpoints\n * 🎨 Tokens — live token editor with instant preview\n * 📊 Analyzer — duplicate patterns + unused variants (runtime scan)\n *\n * Keyboard shortcuts:\n * Ctrl+Shift+D → toggle devtools\n * Escape → close\n * 1-5 → switch panels\n */\n\n\"use client\"\n\nimport React, { useCallback, useEffect, useRef, useState } from \"react\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\ninterface InspectedElement {\n componentName: string\n element: HTMLElement\n rect: DOMRect\n twClasses: string[]\n variantProps: Record<string, string>\n atomicMap: Record<string, string>\n rawClassName: string\n stateNames: string[]\n activeStates: Record<string, string>\n containerBps: string[]\n}\n\ntype Panel = \"inspector\" | \"state\" | \"container\" | \"tokens\" | \"analyzer\"\n\ninterface DevToolsState {\n open: boolean\n panel: Panel\n pinned: boolean\n inspected: InspectedElement | null\n position: { x: number; y: number }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction parseDataTw(dataTw: string | null): { name: string; classes: string[] } {\n if (!dataTw) return { name: \"Unknown\", classes: [] }\n const colonIdx = dataTw.indexOf(\":\")\n if (colonIdx === -1) return { name: dataTw, classes: [] }\n const name = dataTw.slice(0, colonIdx)\n const classes = dataTw\n .slice(colonIdx + 1)\n .split(/\\s+/)\n .filter(Boolean)\n return { name, classes }\n}\n\nfunction parseVariantAttr(v: string | null): Record<string, string> {\n if (!v) return {}\n try {\n return JSON.parse(v)\n } catch {\n return {}\n }\n}\n\nfunction findNearestTwElement(el: HTMLElement): HTMLElement | null {\n let cur: HTMLElement | null = el\n while (cur) {\n if (cur.dataset?.tw) return cur\n cur = cur.parentElement\n }\n return null\n}\n\nfunction getAtomicMap(classes: string[]): Record<string, string> {\n const registry = (window as any).__TW_REGISTRY__ as Record<string, string> | undefined\n if (!registry) return {}\n const map: Record<string, string> = {}\n for (const cls of classes) {\n if (registry[cls]) map[cls] = registry[cls]\n }\n return map\n}\n\nfunction getActiveStates(el: HTMLElement): Record<string, string> {\n const states: Record<string, string> = {}\n for (const attr of el.attributes) {\n if (attr.name.startsWith(\"data-\")) {\n states[attr.name.replace(\"data-\", \"\")] = attr.value\n }\n }\n return states\n}\n\nfunction getStateNames(el: HTMLElement): string[] {\n const registry = (window as any).__TW_STATE_REGISTRY__ as Map<string, any> | undefined\n if (!registry) return []\n for (const [id, entry] of registry) {\n if (el.classList.contains(id)) return entry.states\n }\n return []\n}\n\nfunction getContainerBps(el: HTMLElement): string[] {\n const registry = (window as any).__TW_CONTAINER_REGISTRY__ as Map<string, any> | undefined\n if (!registry) return []\n for (const [id, entry] of registry) {\n if (el.classList.contains(id)) {\n return entry.breakpoints.map((bp: any) => bp.minWidth)\n }\n }\n return []\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Panel: Inspector\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction InspectorPanel({\n inspected,\n position: _position,\n pinned: _pinned,\n}: {\n inspected: InspectedElement | null\n position: { x: number; y: number }\n pinned: boolean\n}) {\n if (!inspected) {\n return React.createElement(\n \"div\",\n { style: S.emptyPanel },\n React.createElement(\"span\", { style: { opacity: 0.4 } }, \"Hover an element to inspect\")\n )\n }\n\n return React.createElement(\n \"div\",\n { style: S.scrollArea },\n // Variant props\n Object.keys(inspected.variantProps).length > 0 &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\"div\", { style: S.sectionTitle }, \"Variants\"),\n Object.entries(inspected.variantProps).map(([k, v]) =>\n React.createElement(\n \"div\",\n { key: k, style: S.row },\n React.createElement(\"span\", { style: S.varKey }, k),\n React.createElement(\"span\", { style: S.varValue }, `\"${v}\"`)\n )\n )\n ),\n\n // Active states\n Object.keys(inspected.activeStates).length > 0 &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\"div\", { style: S.sectionTitle }, \"Active Data Attrs\"),\n Object.entries(inspected.activeStates).map(([k, v]) =>\n React.createElement(\n \"div\",\n { key: k, style: S.row },\n React.createElement(\"code\", { style: { ...S.varKey, color: \"#f59e0b\" } }, `data-${k}`),\n React.createElement(\"span\", { style: { ...S.varValue, color: \"#34d399\" } }, `\"${v}\"`)\n )\n )\n ),\n\n // State names\n inspected.stateNames.length > 0 &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\"div\", { style: S.sectionTitle }, \"Reactive States\"),\n React.createElement(\n \"div\",\n { style: S.classGrid },\n inspected.stateNames.map((s) =>\n React.createElement(\n \"code\",\n {\n key: s,\n style: {\n ...S.classChip,\n background: inspected.activeStates[s] === \"true\" ? \"#065f46\" : \"#18181b\",\n borderColor: inspected.activeStates[s] === \"true\" ? \"#34d399\" : \"#27272a\",\n },\n },\n s\n )\n )\n )\n ),\n\n // Container breakpoints\n inspected.containerBps.length > 0 &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\"div\", { style: S.sectionTitle }, \"Container Breakpoints\"),\n React.createElement(\n \"div\",\n { style: S.classGrid },\n inspected.containerBps.map((bp) =>\n React.createElement(\n \"code\",\n { key: bp, style: { ...S.classChip, color: \"#818cf8\" } },\n bp\n )\n )\n )\n ),\n\n // Tailwind classes\n inspected.twClasses.length > 0 &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\"div\", { style: S.sectionTitle }, \"Classes\"),\n React.createElement(\n \"div\",\n { style: S.classGrid },\n inspected.twClasses.map((cls) =>\n React.createElement(\n \"code\",\n { key: cls, style: S.classChip, title: inspected.atomicMap[cls] },\n cls\n )\n )\n )\n ),\n\n // Copy\n React.createElement(\n \"button\",\n {\n style: S.copyBtn,\n onClick: () => {\n navigator.clipboard?.writeText(\n JSON.stringify(\n {\n component: inspected.componentName,\n variants: inspected.variantProps,\n states: inspected.activeStates,\n classes: inspected.twClasses,\n },\n null,\n 2\n )\n )\n },\n },\n \"Copy to clipboard\"\n )\n )\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Panel: State Registry\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction StatePanel() {\n const [entries, setEntries] = useState<any[]>([])\n\n useEffect(() => {\n const refresh = () => {\n const reg = (window as any).__TW_STATE_REGISTRY__ as Map<string, any> | undefined\n setEntries(reg ? Array.from(reg.values()) : [])\n }\n refresh()\n const interval = setInterval(refresh, 1000)\n return () => clearInterval(interval)\n }, [])\n\n if (entries.length === 0) {\n return React.createElement(\n \"div\",\n { style: S.emptyPanel },\n React.createElement(\n \"span\",\n { style: { opacity: 0.4 } },\n \"No state-enabled components found.\"\n ),\n React.createElement(\"br\", null),\n React.createElement(\n \"span\",\n { style: { opacity: 0.3, fontSize: \"11px\" } },\n 'Use tw.button({ state: { active: \"...\" } }) to register.'\n )\n )\n }\n\n return React.createElement(\n \"div\",\n { style: S.scrollArea },\n entries.map((entry) =>\n React.createElement(\n \"div\",\n { key: entry.id, style: S.section },\n React.createElement(\n \"div\",\n { style: S.sectionTitle },\n React.createElement(\"span\", { style: { color: \"#60a5fa\" } }, entry.tag.toUpperCase()),\n React.createElement(\n \"span\",\n { style: { marginLeft: \"8px\", color: \"#52525b\", fontSize: \"10px\" } },\n entry.id\n )\n ),\n React.createElement(\n \"div\",\n { style: S.classGrid },\n entry.states.map((s: string) =>\n React.createElement(\n \"code\",\n { key: s, style: { ...S.classChip, color: \"#f59e0b\" } },\n `data-${s}`\n )\n )\n ),\n React.createElement(\n \"div\",\n { style: { ...S.row, marginTop: \"4px\" } },\n React.createElement(\n \"span\",\n {\n style: {\n ...S.sectionTitle,\n marginBottom: 0,\n color: entry.cssInjected ? \"#34d399\" : \"#ef4444\",\n },\n },\n entry.cssInjected ? \"● CSS injected\" : \"○ CSS pending\"\n )\n )\n )\n )\n )\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Panel: Container Query Registry\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction ContainerPanel() {\n const [entries, setEntries] = useState<any[]>([])\n\n useEffect(() => {\n const refresh = () => {\n const reg = (window as any).__TW_CONTAINER_REGISTRY__ as Map<string, any> | undefined\n setEntries(reg ? Array.from(reg.values()) : [])\n }\n refresh()\n const interval = setInterval(refresh, 1000)\n return () => clearInterval(interval)\n }, [])\n\n if (entries.length === 0) {\n return React.createElement(\n \"div\",\n { style: S.emptyPanel },\n React.createElement(\n \"span\",\n { style: { opacity: 0.4 } },\n \"No container query components found.\"\n ),\n React.createElement(\"br\", null),\n React.createElement(\n \"span\",\n { style: { opacity: 0.3, fontSize: \"11px\" } },\n 'Use tw.div({ container: { md: \"flex-row\" } }) to register.'\n )\n )\n }\n\n return React.createElement(\n \"div\",\n { style: S.scrollArea },\n entries.map((entry) =>\n React.createElement(\n \"div\",\n { key: entry.id, style: S.section },\n React.createElement(\n \"div\",\n { style: S.sectionTitle },\n React.createElement(\"span\", { style: { color: \"#60a5fa\" } }, entry.tag.toUpperCase()),\n entry.containerName &&\n React.createElement(\n \"span\",\n { style: { marginLeft: \"6px\", color: \"#818cf8\" } },\n `[${entry.containerName}]`\n ),\n React.createElement(\n \"span\",\n { style: { marginLeft: \"8px\", color: \"#52525b\", fontSize: \"10px\" } },\n entry.id\n )\n ),\n React.createElement(\n \"div\",\n null,\n entry.breakpoints.map((bp: any, i: number) =>\n React.createElement(\n \"div\",\n { key: i, style: { ...S.row, marginBottom: \"2px\" } },\n React.createElement(\n \"code\",\n { style: { color: \"#818cf8\", fontSize: \"11px\" } },\n `≥ ${bp.minWidth}`\n ),\n React.createElement(\n \"span\",\n { style: { color: \"#6b7280\", fontSize: \"11px\" } },\n bp.classes\n )\n )\n )\n )\n )\n )\n )\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Panel: Live Token Editor\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction TokensPanel() {\n const [tokens, setTokens_] = useState<Record<string, string>>({})\n\n useEffect(() => {\n const engine = (window as any).__TW_TOKEN_ENGINE__\n if (!engine) return\n\n setTokens_(engine.getTokens())\n const unsub = engine.subscribe((t: Record<string, string>) => setTokens_({ ...t }))\n return unsub\n }, [])\n\n const entries = Object.entries(tokens)\n\n if (entries.length === 0) {\n return React.createElement(\n \"div\",\n { style: S.emptyPanel },\n React.createElement(\"span\", { style: { opacity: 0.4 } }, \"No live tokens registered.\"),\n React.createElement(\"br\", null),\n React.createElement(\n \"span\",\n { style: { opacity: 0.3, fontSize: \"11px\" } },\n 'Use liveToken({ primary: \"#3b82f6\" }) to register tokens.'\n )\n )\n }\n\n return React.createElement(\n \"div\",\n { style: S.scrollArea },\n React.createElement(\n \"div\",\n { style: { ...S.sectionTitle, padding: \"8px 12px 4px\", color: \"#52525b\" } },\n \"Click color to edit · Changes apply instantly\"\n ),\n entries.map(([name, value]) => {\n const isColor = value.startsWith(\"#\") || value.startsWith(\"rgb\") || value.startsWith(\"hsl\")\n return React.createElement(\n \"div\",\n { key: name, style: { ...S.row, padding: \"6px 12px\", borderBottom: \"1px solid #18181b\" } },\n React.createElement(\n \"div\",\n { style: { display: \"flex\", alignItems: \"center\", gap: \"8px\" } },\n isColor &&\n React.createElement(\"div\", {\n style: {\n width: \"16px\",\n height: \"16px\",\n borderRadius: \"3px\",\n background: value,\n border: \"1px solid #27272a\",\n flexShrink: 0,\n },\n }),\n React.createElement(\"span\", { style: { color: \"#a1a1aa\", fontSize: \"12px\" } }, name)\n ),\n isColor\n ? React.createElement(\"input\", {\n type: \"color\",\n defaultValue: value.startsWith(\"#\") ? value : \"#000000\",\n style: {\n width: \"52px\",\n height: \"22px\",\n border: \"none\",\n background: \"none\",\n cursor: \"pointer\",\n },\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const engine = (window as any).__TW_TOKEN_ENGINE__\n if (engine) engine.setToken(name, e.target.value)\n },\n })\n : React.createElement(\"input\", {\n type: \"text\",\n defaultValue: value,\n style: {\n background: \"#18181b\",\n border: \"1px solid #27272a\",\n borderRadius: \"3px\",\n color: \"#e4e4e7\",\n fontSize: \"11px\",\n padding: \"2px 6px\",\n width: \"100px\",\n fontFamily: \"monospace\",\n },\n onBlur: (e: React.FocusEvent<HTMLInputElement>) => {\n const engine = (window as any).__TW_TOKEN_ENGINE__\n if (engine) engine.setToken(name, e.target.value)\n },\n })\n )\n })\n )\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Panel: Runtime Analyzer\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction AnalyzerPanel() {\n const [scanning, setScanning] = useState(false)\n const [results, setResults] = useState<{\n duplicates: Array<{ pattern: string; count: number; names: string[] }>\n stateCount: number\n containerCount: number\n tokenCount: number\n } | null>(null)\n // Engine metrics — fetched dari dashboard server (http://localhost:3000/metrics)\n const [engineMetrics, setEngineMetrics] = useState<Record<string, unknown> | null>(null)\n const [metricsFetching, setMetricsFetching] = useState(false)\n const [metricsError, setMetricsError] = useState<string | null>(null)\n\n const loadEngineMetrics = useCallback(async () => {\n setMetricsFetching(true)\n setMetricsError(null)\n try {\n const res = await fetch(\"http://localhost:3000/metrics\", { signal: AbortSignal.timeout(2000) })\n if (!res.ok) throw new Error(`HTTP ${res.status}`)\n const data = await res.json()\n setEngineMetrics(data)\n } catch (e: unknown) {\n const msg = e instanceof Error ? e.message : String(e)\n setMetricsError(\n msg.includes(\"Failed to fetch\") || msg.includes(\"NetworkError\")\n ? \"Dashboard tidak berjalan. Jalankan: tw dashboard\"\n : msg\n )\n setEngineMetrics(null)\n } finally {\n setMetricsFetching(false)\n }\n }, [])\n\n const runScan = useCallback(() => {\n setScanning(true)\n\n setTimeout(() => {\n const twEls = document.querySelectorAll(\"[data-tw]\")\n const classMap = new Map<string, string[]>()\n\n for (const el of twEls) {\n const { name, classes } = (() => {\n const dTw = (el as HTMLElement).dataset.tw ?? null\n if (!dTw) return { name: \"?\", classes: [] }\n const ci = dTw.indexOf(\":\")\n return {\n name: ci >= 0 ? dTw.slice(0, ci) : dTw,\n classes:\n ci >= 0\n ? dTw\n .slice(ci + 1)\n .split(/\\s+/)\n .filter(Boolean)\n : [],\n }\n })()\n\n const key = classes.sort().join(\" \")\n if (!classMap.has(key)) classMap.set(key, [])\n classMap.get(key)!.push(name)\n }\n\n const duplicates = Array.from(classMap.entries())\n .filter(([, names]) => names.length > 1)\n .map(([pattern, names]) => ({ pattern, count: names.length, names }))\n .sort((a, b) => b.count - a.count)\n .slice(0, 10)\n\n const stateReg = (window as any).__TW_STATE_REGISTRY__ as Map<string, any> | undefined\n const containerReg = (window as any).__TW_CONTAINER_REGISTRY__ as Map<string, any> | undefined\n const tokenEngine = (window as any).__TW_TOKEN_ENGINE__\n\n setResults({\n duplicates,\n stateCount: stateReg?.size ?? 0,\n containerCount: containerReg?.size ?? 0,\n tokenCount: Object.keys(tokenEngine?.getTokens?.() ?? {}).length,\n })\n setScanning(false)\n }, 100)\n }, [])\n\n return React.createElement(\n \"div\",\n { style: S.scrollArea },\n React.createElement(\n \"div\",\n { style: { padding: \"10px 12px\" } },\n\n // ── DOM Scan ──────────────────────────────────────────────────────────\n React.createElement(\n \"button\",\n {\n style: { ...S.copyBtn, borderTop: \"none\", color: \"#60a5fa\", fontWeight: \"600\" },\n onClick: runScan,\n disabled: scanning,\n },\n scanning ? \"Scanning DOM...\" : \"▶ Run DOM Scan\"\n ),\n\n // ── Engine Metrics (dari dashboard) ───────────────────────────────────\n React.createElement(\n \"div\",\n { style: { ...S.section, marginTop: \"8px\" } },\n React.createElement(\n \"div\",\n { style: { ...S.sectionTitle, marginBottom: \"6px\" } },\n \"⚡ Engine Metrics\"\n ),\n engineMetrics\n ? React.createElement(\n \"div\",\n null,\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Build\"),\n React.createElement(\n \"span\",\n { style: { ...S.varValue, color: \"#34d399\" } },\n engineMetrics.buildMs != null ? `${engineMetrics.buildMs}ms` : \"—\"\n )\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Classes\"),\n React.createElement(\n \"span\",\n { style: { ...S.varValue, color: \"#34d399\" } },\n String(engineMetrics.classCount ?? \"—\")\n )\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Files\"),\n React.createElement(\n \"span\",\n { style: { ...S.varValue, color: \"#34d399\" } },\n String(engineMetrics.fileCount ?? \"—\")\n )\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Mode\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(engineMetrics.mode ?? \"—\")\n )\n ),\n React.createElement(\n \"button\",\n {\n style: {\n ...S.copyBtn,\n borderTop: \"none\",\n color: \"#52525b\",\n fontSize: \"10px\",\n padding: \"4px 0\",\n },\n onClick: loadEngineMetrics,\n disabled: metricsFetching,\n },\n \"↻ Refresh\"\n )\n )\n : metricsError\n ? React.createElement(\n \"div\",\n null,\n React.createElement(\n \"div\",\n { style: { color: \"#f87171\", fontSize: \"11px\", marginBottom: \"6px\" } },\n metricsError\n ),\n React.createElement(\n \"button\",\n {\n style: { ...S.copyBtn, borderTop: \"none\", color: \"#34d399\", fontWeight: \"600\" },\n onClick: loadEngineMetrics,\n disabled: metricsFetching,\n },\n metricsFetching ? \"Connecting...\" : \"↻ Retry\"\n )\n )\n : React.createElement(\n \"div\",\n null,\n React.createElement(\n \"div\",\n {\n style: { color: \"#71717a\", fontSize: \"11px\", lineHeight: 1.6, marginBottom: \"6px\" },\n },\n \"Rust analyzer hanya tersedia via CLI atau dashboard.\",\n React.createElement(\"br\", null),\n React.createElement(\n \"code\",\n { style: { color: \"#52525b\", fontSize: \"10px\" } },\n \"tw analyze . | tw dashboard\"\n )\n ),\n React.createElement(\n \"button\",\n {\n style: { ...S.copyBtn, borderTop: \"none\", color: \"#34d399\", fontWeight: \"600\" },\n onClick: loadEngineMetrics,\n disabled: metricsFetching,\n },\n metricsFetching ? \"Connecting...\" : \"⚡ Load from Dashboard\"\n )\n )\n ),\n\n // ── DOM Scan Results ──────────────────────────────────────────────────\n results &&\n React.createElement(\n \"div\",\n null,\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\"div\", { style: S.sectionTitle }, \"Summary\"),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"State components\"),\n React.createElement(\"span\", { style: S.varValue }, String(results.stateCount))\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Container components\"),\n React.createElement(\"span\", { style: S.varValue }, String(results.containerCount))\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Live tokens\"),\n React.createElement(\"span\", { style: S.varValue }, String(results.tokenCount))\n )\n ),\n\n results.duplicates.length > 0\n ? React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\"div\", { style: S.sectionTitle }, \"Duplicate Class Sets\"),\n results.duplicates.map((d, i) =>\n React.createElement(\n \"div\",\n { key: i, style: { marginBottom: \"8px\" } },\n React.createElement(\n \"div\",\n { style: { color: \"#f59e0b\", fontSize: \"11px\", marginBottom: \"2px\" } },\n d.names.join(\", \")\n ),\n React.createElement(\n \"code\",\n {\n style: {\n color: \"#52525b\",\n fontSize: \"10px\",\n wordBreak: \"break-all\" as const,\n },\n },\n d.pattern.split(\" \").slice(0, 8).join(\" \") +\n (d.pattern.split(\" \").length > 8 ? \"...\" : \"\")\n )\n )\n )\n )\n : React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\n \"span\",\n { style: { color: \"#34d399\", fontSize: \"12px\" } },\n \"✓ No duplicate class sets in current DOM\"\n )\n )\n )\n )\n )\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Main DevTools component\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function TwDevTools(): React.ReactElement | null {\n if (process.env.NODE_ENV === \"production\") return null\n\n const [state, setState] = useState<DevToolsState>({\n open: false,\n panel: \"inspector\",\n pinned: false,\n inspected: null,\n position: { x: 0, y: 0 },\n })\n\n const overlayRef = useRef<HTMLDivElement>(null)\n const isInspecting = state.open && state.panel === \"inspector\"\n\n // Keyboard shortcuts\n useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (e.ctrlKey && e.shiftKey && e.key === \"D\") {\n e.preventDefault()\n setState((s) => ({ ...s, open: !s.open, inspected: null }))\n }\n if (e.key === \"Escape\")\n setState((s) => ({ ...s, open: false, pinned: false, inspected: null }))\n if (e.key === \"1\") setState((s) => (s.open ? { ...s, panel: \"inspector\" } : s))\n if (e.key === \"2\") setState((s) => (s.open ? { ...s, panel: \"state\" } : s))\n if (e.key === \"3\") setState((s) => (s.open ? { ...s, panel: \"container\" } : s))\n if (e.key === \"4\") setState((s) => (s.open ? { ...s, panel: \"tokens\" } : s))\n if (e.key === \"5\") setState((s) => (s.open ? { ...s, panel: \"analyzer\" } : s))\n }\n window.addEventListener(\"keydown\", onKey)\n return () => window.removeEventListener(\"keydown\", onKey)\n }, [])\n\n // Mouse move — only active on inspector panel\n const onMouseMove = useCallback(\n (e: MouseEvent) => {\n if (!isInspecting || state.pinned) return\n const twEl = findNearestTwElement(e.target as HTMLElement)\n if (!twEl) {\n setState((s) => ({ ...s, inspected: null, position: { x: e.clientX, y: e.clientY } }))\n return\n }\n const { name, classes } = parseDataTw(twEl.dataset.tw ?? null)\n setState((s) => ({\n ...s,\n position: { x: e.clientX, y: e.clientY },\n inspected: {\n componentName: name,\n element: twEl,\n rect: twEl.getBoundingClientRect(),\n twClasses: classes,\n variantProps: parseVariantAttr(twEl.dataset.twVariants ?? null),\n atomicMap: getAtomicMap(classes),\n rawClassName: twEl.className,\n stateNames: getStateNames(twEl),\n activeStates: getActiveStates(twEl),\n containerBps: getContainerBps(twEl),\n },\n }))\n },\n [isInspecting, state.pinned]\n )\n\n const onClick = useCallback(\n (e: MouseEvent) => {\n if (!isInspecting) return\n if (overlayRef.current?.contains(e.target as HTMLElement)) return\n setState((s) => ({ ...s, pinned: !s.pinned && !!s.inspected }))\n },\n [isInspecting]\n )\n\n useEffect(() => {\n if (!isInspecting) return\n window.addEventListener(\"mousemove\", onMouseMove)\n window.addEventListener(\"click\", onClick)\n return () => {\n window.removeEventListener(\"mousemove\", onMouseMove)\n window.removeEventListener(\"click\", onClick)\n }\n }, [isInspecting, onMouseMove, onClick])\n\n // Toggle button\n if (!state.open) {\n return React.createElement(\n \"button\",\n {\n onClick: () => setState((s) => ({ ...s, open: true })),\n style: S.toggleBtn,\n title: \"tailwind-styled-v4 DevTools (Ctrl+Shift+D)\",\n },\n \"🎨\"\n )\n }\n\n const PANELS: Array<{ id: Panel; label: string; icon: string }> = [\n { id: \"inspector\", label: \"Inspector\", icon: \"🔍\" },\n { id: \"state\", label: \"State\", icon: \"⚡\" },\n { id: \"container\", label: \"Container\", icon: \"📦\" },\n { id: \"tokens\", label: \"Tokens\", icon: \"🎨\" },\n { id: \"analyzer\", label: \"Analyzer\", icon: \"📊\" },\n ]\n\n return React.createElement(\n \"div\",\n { style: S.root },\n\n // ── Element highlight (inspector only) ──────────────────────────────\n isInspecting &&\n state.inspected &&\n React.createElement(\"div\", {\n style: {\n ...S.highlight,\n top: state.inspected.rect.top + window.scrollY,\n left: state.inspected.rect.left + window.scrollX,\n width: state.inspected.rect.width,\n height: state.inspected.rect.height,\n },\n }),\n\n // ── Component name label ────────────────────────────────────────────\n isInspecting &&\n state.inspected &&\n React.createElement(\n \"div\",\n {\n style: {\n position: \"absolute\" as const,\n top: state.inspected.rect.top + window.scrollY - 22,\n left: state.inspected.rect.left + window.scrollX,\n background: \"#1e3a5f\",\n color: \"#93c5fd\",\n fontSize: \"11px\",\n padding: \"2px 6px\",\n borderRadius: \"3px 3px 0 0\",\n pointerEvents: \"none\" as const,\n zIndex: 2147483646,\n fontFamily: \"monospace\",\n },\n },\n state.inspected.componentName\n ),\n\n // ── Main DevTools panel ─────────────────────────────────────────────\n React.createElement(\n \"div\",\n {\n ref: overlayRef,\n style:\n state.panel === \"inspector\" && state.inspected\n ? {\n ...S.panel,\n top: Math.min(state.position.y + 16, window.innerHeight - 460),\n left: Math.min(state.position.x + 16, window.innerWidth - 320),\n }\n : {\n ...S.panel,\n top: \"auto\",\n bottom: \"40px\",\n right: \"12px\",\n left: \"auto\",\n },\n },\n\n // Header\n React.createElement(\n \"div\",\n { style: S.header },\n React.createElement(\n \"span\",\n { style: S.componentName },\n state.inspected && state.panel === \"inspector\"\n ? state.inspected.componentName\n : \"tailwind-styled-v4\"\n ),\n React.createElement(\n \"div\",\n { style: S.headerActions },\n state.pinned && React.createElement(\"span\", { style: S.pinBadge }, \"📌\"),\n React.createElement(\n \"button\",\n {\n style: S.closeBtn,\n onClick: () =>\n setState((s) => ({ ...s, open: false, pinned: false, inspected: null })),\n },\n \"✕\"\n )\n )\n ),\n\n // Tab bar\n React.createElement(\n \"div\",\n { style: S.tabBar },\n PANELS.map((p) =>\n React.createElement(\n \"button\",\n {\n key: p.id,\n style: {\n ...S.tab,\n background: state.panel === p.id ? \"#18181b\" : \"none\",\n color: state.panel === p.id ? \"#e4e4e7\" : \"#52525b\",\n borderBottom: state.panel === p.id ? \"2px solid #3b82f6\" : \"2px solid transparent\",\n },\n onClick: () => setState((s) => ({ ...s, panel: p.id })),\n title: `${p.label} (${PANELS.findIndex((x) => x.id === p.id) + 1})`,\n },\n `${p.icon} ${p.label}`\n )\n )\n ),\n\n // Panel content\n state.panel === \"inspector\" &&\n React.createElement(InspectorPanel, {\n inspected: state.inspected,\n position: state.position,\n pinned: state.pinned,\n }),\n state.panel === \"state\" && React.createElement(StatePanel, null),\n state.panel === \"container\" && React.createElement(ContainerPanel, null),\n state.panel === \"tokens\" && React.createElement(TokensPanel, null),\n state.panel === \"analyzer\" && React.createElement(AnalyzerPanel, null)\n ),\n\n // ── Status bar ──────────────────────────────────────────────────────\n React.createElement(\n \"div\",\n { style: S.statusBar },\n React.createElement(\"span\", null, \"🎨 tailwind-styled-v4 DevTools\"),\n React.createElement(\n \"span\",\n { style: { opacity: 0.6, fontSize: \"10px\" } },\n state.pinned\n ? \"Click to unpin\"\n : isInspecting\n ? \"Hover to inspect · Click to pin · 1-5 switch panel · Esc close\"\n : \"Ctrl+Shift+D close · 1-5 switch panel\"\n )\n )\n )\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Styles\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst S = {\n root: {\n position: \"fixed\" as const,\n inset: 0,\n zIndex: 2147483647,\n pointerEvents: \"none\" as const,\n fontFamily: \"ui-monospace, 'JetBrains Mono', monospace\",\n fontSize: \"12px\",\n },\n highlight: {\n position: \"absolute\" as const,\n borderRadius: \"3px\",\n outline: \"2px solid #3b82f6\",\n outlineOffset: \"1px\",\n background: \"rgba(59,130,246,0.08)\",\n pointerEvents: \"none\" as const,\n transition: \"all 0.1s ease\",\n zIndex: 2147483646,\n },\n panel: {\n position: \"fixed\" as const,\n width: 320,\n maxHeight: 480,\n background: \"#0f0f0f\",\n border: \"1px solid #27272a\",\n borderRadius: \"10px\",\n boxShadow: \"0 8px 32px rgba(0,0,0,0.8)\",\n pointerEvents: \"all\" as const,\n zIndex: 2147483647,\n userSelect: \"text\" as const,\n display: \"flex\",\n flexDirection: \"column\" as const,\n },\n header: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"8px 12px 6px\",\n borderBottom: \"1px solid #1f1f1f\",\n flexShrink: 0,\n },\n tabBar: {\n display: \"flex\",\n borderBottom: \"1px solid #18181b\",\n flexShrink: 0,\n overflowX: \"auto\" as const,\n },\n tab: {\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: \"10px\",\n padding: \"5px 8px\",\n whiteSpace: \"nowrap\" as const,\n fontFamily: \"inherit\",\n transition: \"color 0.1s\",\n pointerEvents: \"all\" as const,\n },\n scrollArea: {\n overflowY: \"auto\" as const,\n flex: 1,\n },\n emptyPanel: {\n padding: \"24px 12px\",\n color: \"#71717a\",\n fontSize: \"12px\",\n textAlign: \"center\" as const,\n lineHeight: 1.6,\n },\n componentName: {\n color: \"#60a5fa\",\n fontWeight: \"bold\" as const,\n fontSize: \"13px\",\n },\n headerActions: {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n },\n pinBadge: { color: \"#fbbf24\", fontSize: \"10px\" },\n closeBtn: {\n background: \"none\",\n border: \"none\",\n color: \"#71717a\",\n cursor: \"pointer\",\n fontSize: \"14px\",\n lineHeight: 1,\n padding: \"2px 4px\",\n pointerEvents: \"all\" as const,\n },\n section: {\n padding: \"8px 12px\",\n borderBottom: \"1px solid #18181b\",\n },\n sectionTitle: {\n color: \"#52525b\",\n fontSize: \"10px\",\n textTransform: \"uppercase\" as const,\n letterSpacing: \"0.08em\",\n marginBottom: \"6px\",\n },\n row: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: \"3px\",\n },\n varKey: { color: \"#a1a1aa\" },\n varValue: { color: \"#34d399\", fontWeight: \"bold\" as const },\n classGrid: {\n display: \"flex\",\n flexWrap: \"wrap\" as const,\n gap: \"4px\",\n },\n classChip: {\n background: \"#18181b\",\n border: \"1px solid #27272a\",\n borderRadius: \"4px\",\n padding: \"2px 6px\",\n color: \"#e4e4e7\",\n cursor: \"default\",\n fontSize: \"11px\",\n },\n copyBtn: {\n display: \"block\",\n width: \"100%\",\n background: \"none\",\n border: \"none\",\n borderTop: \"1px solid #18181b\",\n color: \"#52525b\",\n cursor: \"pointer\",\n padding: \"8px 12px\",\n textAlign: \"left\" as const,\n fontSize: \"11px\",\n pointerEvents: \"all\" as const,\n fontFamily: \"inherit\",\n },\n statusBar: {\n position: \"fixed\" as const,\n bottom: 0,\n left: 0,\n right: 0,\n background: \"#1e3a5f\",\n color: \"#93c5fd\",\n fontSize: \"11px\",\n padding: \"4px 12px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n pointerEvents: \"all\" as const,\n zIndex: 2147483647,\n },\n toggleBtn: {\n position: \"fixed\" as const,\n bottom: 12,\n right: 12,\n width: 36,\n height: 36,\n borderRadius: \"50%\",\n background: \"#1e3a5f\",\n border: \"1px solid #3b82f6\",\n color: \"white\",\n cursor: \"pointer\",\n fontSize: \"16px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n zIndex: 2147483647,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.4)\",\n pointerEvents: \"all\" as const,\n },\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Provider\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function DevToolsProvider(): React.ReactElement | null {\n if (process.env.NODE_ENV === \"production\") return null\n return React.createElement(TwDevTools)\n}\n"]}
|