tailwind-styled-v4 5.1.8 โ 5.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analyzer.js +1 -1
- package/dist/analyzer.js.map +1 -1
- package/dist/analyzer.mjs +1 -1
- package/dist/analyzer.mjs.map +1 -1
- package/dist/animate.js +1 -1
- package/dist/animate.js.map +1 -1
- package/dist/animate.mjs +1 -1
- package/dist/animate.mjs.map +1 -1
- package/dist/atomic.js +1 -1
- package/dist/atomic.js.map +1 -1
- package/dist/atomic.mjs +1 -1
- package/dist/atomic.mjs.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/cli.mjs.map +1 -1
- package/dist/compiler.js +1 -1
- package/dist/compiler.js.map +1 -1
- package/dist/compiler.mjs +1 -1
- package/dist/compiler.mjs.map +1 -1
- package/dist/dashboard.js +1 -1
- package/dist/dashboard.js.map +1 -1
- package/dist/dashboard.mjs +1 -2
- package/dist/dashboard.mjs.map +1 -1
- package/dist/devtools.js +1 -1
- package/dist/devtools.js.map +1 -1
- package/dist/devtools.mjs +1 -1
- package/dist/devtools.mjs.map +1 -1
- package/dist/engine.js +1 -1
- package/dist/engine.js.map +1 -1
- package/dist/engine.mjs +1 -1
- package/dist/engine.mjs.map +1 -1
- package/dist/index.browser.mjs +1 -1
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -1
- package/dist/index.mjs.map +1 -1
- package/dist/next.js +1 -1
- package/dist/next.js.map +1 -1
- package/dist/next.mjs +1 -1
- package/dist/next.mjs.map +1 -1
- package/dist/plugin-api.js +1 -1
- package/dist/plugin-api.js.map +1 -1
- package/dist/plugin-api.mjs +1 -2
- package/dist/plugin-api.mjs.map +1 -1
- package/dist/plugin-registry.js +1 -1
- package/dist/plugin-registry.js.map +1 -1
- package/dist/plugin-registry.mjs +1 -1
- package/dist/plugin-registry.mjs.map +1 -1
- package/dist/plugin.js +1 -1
- package/dist/plugin.js.map +1 -1
- package/dist/plugin.mjs +1 -2
- package/dist/plugin.mjs.map +1 -1
- package/dist/preset.js +1 -1
- package/dist/preset.js.map +1 -1
- package/dist/preset.mjs +1 -2
- package/dist/preset.mjs.map +1 -1
- package/dist/rspack.js +1 -1
- package/dist/rspack.js.map +1 -1
- package/dist/rspack.mjs +1 -1
- package/dist/rspack.mjs.map +1 -1
- package/dist/runtime-css.js +3 -1
- package/dist/runtime-css.js.map +1 -1
- package/dist/runtime-css.mjs +2 -1
- package/dist/runtime-css.mjs.map +1 -1
- package/dist/runtime.js +3 -1
- package/dist/runtime.js.map +1 -1
- package/dist/runtime.mjs +2 -1
- package/dist/runtime.mjs.map +1 -1
- package/dist/scanner.js +1 -1
- package/dist/scanner.js.map +1 -1
- package/dist/scanner.mjs +1 -1
- package/dist/scanner.mjs.map +1 -1
- package/dist/shared.js +1 -1
- package/dist/shared.js.map +1 -1
- package/dist/shared.mjs +1 -1
- package/dist/shared.mjs.map +1 -1
- package/dist/storybook-addon.js +1 -1
- package/dist/storybook-addon.js.map +1 -1
- package/dist/storybook-addon.mjs +1 -2
- package/dist/storybook-addon.mjs.map +1 -1
- package/dist/svelte.js +1 -1
- package/dist/svelte.js.map +1 -1
- package/dist/svelte.mjs +1 -1
- package/dist/svelte.mjs.map +1 -1
- package/dist/syntax.js +1 -1
- package/dist/syntax.js.map +1 -1
- package/dist/syntax.mjs +1 -2
- package/dist/syntax.mjs.map +1 -1
- package/dist/testing.js +1 -1
- package/dist/testing.js.map +1 -1
- package/dist/testing.mjs +1 -2
- package/dist/testing.mjs.map +1 -1
- package/dist/theme.js +3 -1
- package/dist/theme.js.map +1 -1
- package/dist/theme.mjs +3 -1
- package/dist/theme.mjs.map +1 -1
- package/dist/turbopackLoader.js +1 -1
- package/dist/turbopackLoader.js.map +1 -1
- package/dist/turbopackLoader.mjs +1 -1
- package/dist/turbopackLoader.mjs.map +1 -1
- package/dist/tw.js +1 -1
- package/dist/tw.js.map +1 -1
- package/dist/tw.mjs +1 -1
- package/dist/tw.mjs.map +1 -1
- package/dist/vite.js +1 -1
- package/dist/vite.js.map +1 -1
- package/dist/vite.mjs +1 -1
- package/dist/vite.mjs.map +1 -1
- package/dist/vue.js +1 -1
- package/dist/vue.js.map +1 -1
- package/dist/vue.mjs +1 -1
- package/dist/vue.mjs.map +1 -1
- package/dist/webpackLoader.js +1 -1
- package/dist/webpackLoader.js.map +1 -1
- package/dist/webpackLoader.mjs +1 -1
- package/dist/webpackLoader.mjs.map +1 -1
- package/package.json +8 -7
package/dist/devtools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/tsup/assets/cjs_shims.js","../packages/domain/shared/src/trace.ts","../packages/domain/shared/src/index.ts","../src/umbrella/devtools.ts","../packages/infrastructure/devtools/src/index.tsx","../packages/infrastructure/devtools/src/classInspector.ts"],"sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","/**\n * Shared trace utilities for CLI, devtools, and dashboard\n * \n * Provides reusable trace snapshot handling, formatting, and analysis\n * across the tailwind-styled-v4 ecosystem without introducing coupling.\n */\n\nexport interface TraceSnapshot {\n generatedAt: string\n buildMs: number | null\n scanMs: number | null\n analyzeMs: number | null\n compileMs: number | null\n memoryMb: { rss: number; heapUsed: number; heapTotal: number } | null\n classCount: number | null\n fileCount: number | null\n cssBytes: number | null\n mode: string | null\n eventsReceived?: number\n eventsProcessed?: number\n batchesProcessed?: number\n incrementalUpdates?: number\n fullRescans?: number\n}\n\nexport interface TraceSummary {\n workspace: {\n totalPackages: number\n totalFiles: number\n totalClasses: number\n lastScanDurationMs: number\n lastBuildDurationMs: number\n }\n cache: {\n hitRate: number\n totalEntries: number\n memoryUsageMb: number\n }\n pipeline: {\n scanDurationMs: number\n analyzeDurationMs: number\n compileDurationMs: number\n totalDurationMs: number\n }\n health: {\n status: \"healthy\" | \"degraded\" | \"unhealthy\"\n issues: Array<{ severity: string; message: string }>\n }\n}\n\n/**\n * Get health status color for UI rendering\n */\nexport function getHealthColor(status?: string): string {\n switch (status) {\n case \"healthy\":\n return \"#34d399\"\n case \"degraded\":\n return \"#fbbf24\"\n case \"unhealthy\":\n return \"#f87171\"\n default:\n return \"#52525b\"\n }\n}\n\n/**\n * Get mode color for UI rendering\n */\nexport function getModeColor(mode?: string | null): string {\n switch (mode) {\n case \"build\":\n return \"#fbbf24\"\n case \"watch\":\n return \"#34d399\"\n case \"jit\":\n return \"#60a5fa\"\n case \"error\":\n return \"#f87171\"\n case \"idle\":\n return \"#71717a\"\n default:\n return \"#52525b\"\n }\n}\n\n/**\n * Format memory in human-readable format\n */\nexport function formatMemory(bytes: number): string {\n if (bytes < 1024) return `${Math.round(bytes)}B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`\n return `${(bytes / (1024 * 1024)).toFixed(1)}MB`\n}\n\n/**\n * Format duration in human-readable format\n */\nexport function formatDuration(ms: number | null): string {\n if (ms === null) return \"โ\"\n if (ms < 1000) return `${ms}ms`\n return `${(ms / 1000).toFixed(1)}s`\n}\n\n/**\n * Calculate health status from metrics\n */\nexport function calculateHealth(\n metrics: TraceSnapshot,\n summary?: TraceSummary\n): \"healthy\" | \"degraded\" | \"unhealthy\" {\n if (summary?.health?.status) return summary.health.status\n\n // Fallback to simple heuristics\n if (metrics.mode === \"error\") return \"unhealthy\"\n if ((metrics.buildMs ?? 0) > 5000) return \"degraded\"\n if (metrics.memoryMb && metrics.memoryMb.heapUsed > 500) return \"degraded\"\n return \"healthy\"\n}\n\n/**\n * Get color for build time indicator\n */\nexport function getBuildTimeColor(ms: number | null): string {\n if (ms === null) return \"#52525b\"\n if (ms > 1000) return \"#f87171\" // red - very slow\n if (ms > 500) return \"#fbbf24\" // amber - acceptable\n return \"#34d399\" // green - fast\n}\n\n/**\n * Get color for memory usage indicator\n */\nexport function getMemoryColor(mb: number): string {\n if (mb > 500) return \"#f87171\" // red - high\n if (mb > 250) return \"#fbbf24\" // amber - moderate\n return \"#34d399\" // green - low\n}\n\n/**\n * Create trace snapshot from dashboard data\n */\nexport function createTraceSnapshot(data: Record<string, unknown>): TraceSnapshot {\n return {\n generatedAt: (data.generatedAt as string) || new Date().toISOString(),\n buildMs: (data.buildMs as number) ?? null,\n scanMs: (data.scanMs as number) ?? null,\n analyzeMs: (data.analyzeMs as number) ?? null,\n compileMs: (data.compileMs as number) ?? null,\n memoryMb: (data.memoryMb as { rss: number; heapUsed: number; heapTotal: number } | null) ?? null,\n classCount: (data.classCount as number) ?? null,\n fileCount: (data.fileCount as number) ?? null,\n cssBytes: (data.cssBytes as number) ?? null,\n mode: (data.mode as string) ?? null,\n eventsReceived: (data.eventsReceived as number | undefined) ?? undefined,\n eventsProcessed: (data.eventsProcessed as number | undefined) ?? undefined,\n batchesProcessed: (data.batchesProcessed as number | undefined) ?? undefined,\n incrementalUpdates: (data.incrementalUpdates as number | undefined) ?? undefined,\n fullRescans: (data.fullRescans as number | undefined) ?? undefined,\n }\n}\n\n/**\n * Calculate pipeline time distribution\n */\nexport function getPipelinePercentages(metrics: TraceSnapshot): {\n scanPct: number\n analyzePct: number\n compilePct: number\n} {\n const scan = metrics.scanMs ?? 0\n const analyze = metrics.analyzeMs ?? 0\n const compile = metrics.compileMs ?? 0\n const total = scan + analyze + compile\n\n if (total === 0) {\n return { scanPct: 0, analyzePct: 0, compilePct: 0 }\n }\n\n return {\n scanPct: (scan / total) * 100,\n analyzePct: (analyze / total) * 100,\n compilePct: (compile / total) * 100,\n }\n}\n","import { createHash } from \"node:crypto\"\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\nimport { createRequire } from \"node:module\"\n\n// Native-only: Node.js is always available. No browser fallback.\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Types\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport type TokenMap = Record<string, string>\n\nexport type VariantValue = string | number | boolean | undefined\n\nexport type VariantProps = Record<string, VariantValue>\n\nexport type HtmlTagName = keyof HTMLElementTagNameMap\n\nexport type CompoundCondition = Record<string, string | number | boolean>\n\nexport type VariantMatrix = Record<string, Array<string | number | boolean>>\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Logging\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport interface Logger {\n warn(...args: unknown[]): void\n debug(...args: unknown[]): void\n error(...args: unknown[]): void\n log(...args: unknown[]): void\n}\n\nexport function createLogger(namespace: string): Logger {\n const prefix = `[${namespace}]`\n return {\n warn(...args: unknown[]) {\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\n },\n debug(...args: unknown[]) {\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\n },\n error(...args: unknown[]) {\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\n },\n log(...args: unknown[]) {\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\n },\n }\n}\n\nexport function createDebugLogger(namespace: string, label?: string): (msg: string) => void {\n const prefix = label ? `[${namespace}:${label}]` : `[${namespace}]`\n return (msg: string) => {\n if (process.env.DEBUG?.includes(namespace) || process.env.TW_DEBUG) {\n console.debug(prefix, msg)\n }\n }\n}\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Error handling\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport type ErrorSource = \"rust\" | \"validation\" | \"compile\" | \"io\" | \"config\" | \"unknown\"\n\ntype ZodLikeIssue = {\n path?: readonly PropertyKey[]\n message?: string\n}\n\nfunction formatIssuePath(path?: readonly PropertyKey[]): string {\n if (!path || path.length === 0) return \"(root)\"\n return path\n .map((segment) =>\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\n )\n .join(\".\")\n}\n\nexport class TwError extends Error {\n /** @deprecated Gunakan source */\n public readonly domain: string\n public readonly source: ErrorSource\n public readonly code: string\n public readonly originalCause?: unknown\n\n constructor(domainOrSource: string, code: string, message: string, cause?: unknown) {\n super(message)\n this.name = \"TwError\"\n this.domain = domainOrSource\n this.source = domainOrSource as ErrorSource\n this.code = code\n this.originalCause = cause\n if (Error.captureStackTrace) Error.captureStackTrace(this, TwError)\n }\n\n static fromIo(code: string, message: string): TwError {\n return new TwError(\"io\", code, message)\n }\n\n static fromCompile(code: string, message: string): TwError {\n return new TwError(\"compile\", code, message)\n }\n\n static fromRust(err: { code?: string; message?: string } | Error | unknown): TwError {\n if (err instanceof TwError) return err\n if (err instanceof Error) return new TwError(\"rust\", \"RUST_ERROR\", err.message, err)\n if (err && typeof err === \"object\") {\n const e = err as { code?: string; message?: string }\n return new TwError(\"rust\", e.code ?? \"RUST_ERROR\", e.message ?? String(err), err)\n }\n return new TwError(\"rust\", \"RUST_ERROR\", String(err), err)\n }\n\n /** Buat TwError dari ZodError โ dukung shape Zod v3 (`errors`) dan v4 (`issues`). */\n static fromZod(err: { issues?: ZodLikeIssue[]; errors?: ZodLikeIssue[] }): TwError {\n const first = err.issues?.[0] ?? err.errors?.[0]\n const path = formatIssuePath(first?.path)\n const message = first ? `${path}: ${first.message}` : \"Schema validation failed\"\n return new TwError(\"validation\", \"SCHEMA_VALIDATION_FAILED\", message, err)\n }\n\n static wrap(source: string, code: string, err: unknown): TwError {\n if (err instanceof TwError) return err\n if (err instanceof Error) return new TwError(source, code, err.message, err)\n return new TwError(source, code, String(err), err)\n }\n\n override toString(): string {\n return `TwError [${this.source}:${this.code}] ${this.message}`\n }\n\n toJSON(): { name: string; source: string; code: string; message: string } {\n return { name: this.name, source: this.source, code: this.code, message: this.message }\n }\n\n toCliMessage(): string {\n return `[${this.source.toUpperCase()}:${this.code}] ${this.message}`\n }\n}\n\nexport function wrapUnknownError(domain: string, code: string, error: unknown): TwError {\n return TwError.wrap(domain, code, error)\n}\n\nexport function isTwError(err: unknown): err is TwError {\n return err instanceof TwError\n}\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Native binding resolution\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport interface LoadNativeBindingOptions<T> {\n runtimeDir: string\n candidates: string[]\n isValid: (module: unknown) => module is T\n invalidExportMessage: string\n}\n\nexport interface LoadNativeBindingResult<T> {\n binding: T | null\n loadErrors: Array<{ path: string; message: string }>\n loadedPath?: string\n}\n\nexport function loadNativeBinding<T>(options: LoadNativeBindingOptions<T>): LoadNativeBindingResult<T> {\n const { runtimeDir, candidates, isValid } = options\n const loadErrors: Array<{ path: string; message: string }> = []\n\n for (const candidate of candidates) {\n const candidatePath = path.resolve(runtimeDir, candidate)\n try {\n if (!fs.existsSync(candidatePath) && !fs.existsSync(candidatePath + \".node\")) {\n continue\n }\n const mod = requireNativeModule(candidatePath)\n if (mod && isValid(mod)) {\n return { binding: mod, loadErrors, loadedPath: candidatePath }\n }\n loadErrors.push({ path: candidatePath, message: options.invalidExportMessage })\n } catch (e) {\n loadErrors.push({ path: candidatePath, message: e instanceof Error ? e.message : String(e) })\n }\n }\n\n return { binding: null, loadErrors }\n}\n\nconst _require = createRequire(\n typeof __filename !== \"undefined\"\n ? `file://${__filename}`\n : (import.meta.url ?? \"file://unknown\")\n)\n\nfunction requireNativeModule(p: string): unknown {\n return _require(p)\n}\n\nexport interface ResolveCandidatesOptions {\n runtimeDir?: string\n envVarNames?: string[]\n includeDefaultCandidates?: boolean\n enforceNodeExtensionForEnvPath?: boolean\n /** @deprecated โ ignored, kept for backward compat */\n packageName?: string\n}\n\nexport function resolveNativeBindingCandidates(options: ResolveCandidatesOptions): string[] {\n const {\n envVarNames = [\"TW_NATIVE_PATH\", \"TWS_NATIVE_PATH\"],\n includeDefaultCandidates = true,\n enforceNodeExtensionForEnvPath = false,\n } = options\n // Default ke cwd kalau runtimeDir tidak disediakan\n const runtimeDir = options.runtimeDir || process.cwd()\n const candidates: string[] = []\n\n for (const envVar of envVarNames) {\n const envPath = process.env[envVar]\n if (envPath) {\n candidates.push(enforceNodeExtensionForEnvPath && !envPath.endsWith(\".node\") ? envPath + \".node\" : envPath)\n }\n }\n\n if (!includeDefaultCandidates) return candidates\n\n if (fs.existsSync(runtimeDir)) {\n try {\n for (const entry of fs.readdirSync(runtimeDir)) {\n if (entry.endsWith(\".node\")) candidates.push(entry)\n }\n } catch { /* ignore read errors */ }\n }\n\n const BINARY_NAMES = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\n const napiPlatform = process.platform === \"linux\" && process.arch === \"x64\" ? \"linux-x64-gnu\"\n : process.platform === \"linux\" && process.arch === \"arm64\" ? \"linux-arm64-gnu\"\n : `${process.platform}-${process.arch}`\n\n for (const bin of BINARY_NAMES) {\n candidates.push(path.resolve(runtimeDir, `${bin}.node`))\n candidates.push(path.resolve(runtimeDir, `${bin}.${napiPlatform}.node`))\n // 1 level: dist/ โ package-root/native/ (published npm package)\n candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.node`))\n candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.${napiPlatform}.node`))\n // cwd fallback (user project root)\n candidates.push(path.resolve(process.cwd(), \"native\", `${bin}.node`))\n candidates.push(path.resolve(process.cwd(), \"native\", `${bin}.${napiPlatform}.node`))\n // 4 level: dist/ โ package/ โ domain/ โ packages/ โ repo-root/ (monorepo dev)\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `${bin}.node`))\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `${bin}.${napiPlatform}.node`))\n // 3 level fallback\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", `${bin}.node`))\n }\n\n return Array.from(new Set(candidates))\n}\n\nexport function resolveRuntimeDir(dir: string | undefined, importMetaUrl: string): string {\n if (dir) return path.resolve(dir)\n try {\n return path.dirname(fileURLToPath(importMetaUrl))\n } catch {\n return process.cwd()\n }\n}\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Hashing\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport function hashContent(content: string, algorithm: string = \"md5\", length?: number): string {\n const hash = createHash(algorithm).update(content).digest(\"hex\")\n return length ? hash.slice(0, length) : hash\n}\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Error formatting\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport function formatErrorMessage(error: unknown): string {\n if (error instanceof TwError) return error.toString()\n if (error instanceof Error) return error.message\n return String(error)\n}\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// LRU Cache\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport class LRUCache<K, V> {\n private capacity: number\n private cache: Map<K, V>\n\n constructor(capacity: number) {\n this.capacity = capacity\n this.cache = new Map()\n }\n\n get(key: K): V | undefined {\n if (!this.cache.has(key)) return undefined\n const value = this.cache.get(key)!\n this.cache.delete(key)\n this.cache.set(key, value)\n return value\n }\n\n set(key: K, value: V): void {\n if (this.cache.has(key)) {\n this.cache.delete(key)\n } else if (this.cache.size >= this.capacity) {\n const firstKey = this.cache.keys().next().value\n if (firstKey !== undefined) {\n this.cache.delete(firstKey)\n }\n }\n this.cache.set(key, value)\n }\n\n delete(key: K): boolean {\n return this.cache.delete(key)\n }\n\n has(key: K): boolean {\n return this.cache.has(key)\n }\n\n clear(): void {\n this.cache.clear()\n }\n\n entries(): IterableIterator<[K, V]> {\n return this.cache.entries()\n }\n\n get size(): number {\n return this.cache.size\n }\n}\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Trace Utilities\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport type { TraceSnapshot, TraceSummary } from \"./trace\"\nexport {\n getHealthColor,\n getModeColor,\n formatMemory,\n formatDuration,\n calculateHealth,\n getBuildTimeColor,\n getMemoryColor,\n createTraceSnapshot,\n getPipelinePercentages,\n} from \"./trace\"\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Performance Telemetry\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Error Codes\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport type { ErrorCode } from \"./error-codes\"\nexport { ERROR_CODES, getSuggestion, formatErrorCode } from \"./error-codes\"\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Tailwind Compatibility\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport type { TailwindInfo } from \"./compatibility\"\nexport { detectTailwind, assertTailwindV4, getTailwindVersion, isTailwindV4 } from \"./compatibility\"\n\n// โโ Native binding schemas (Zod boundary validation)\nexport {\n NativeScanFileSchema, NativeScanResultSchema,\n NativeAnalyzerReportSchema, NativeTransformResultSchema,\n NativeCssCompileResultSchema, NativeWatchResultSchema,\n NativeCacheEntrySchema, NativeCacheReadResultSchema,\n safeParseNative, parseNative,\n} from './native-schemas'\n\n// โโ ESM-safe runtime helpers โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n createEsmRequire,\n getDirname,\n getFilename,\n resolveFromRoot,\n tryRequire,\n resolveNativeNodePath,\n} from \"./esmHelpers\"\n\n// โโ Performance telemetry โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n TelemetryCollector,\n getGlobalTelemetry,\n resetGlobalTelemetry,\n createBuildTimer,\n type BuildTelemetry,\n type TelemetrySummary,\n type BuildPhases,\n} from \"./telemetry\"\n\n// โโ Config/JSON schema validation โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n ScanCacheSchema,\n ScanCacheClassEntrySchema,\n TailwindConfigSchema,\n RegistryPluginEntrySchema,\n RegistryFileSchema,\n PackageJsonSchema,\n parseJsonWithSchema,\n parseJsonFileWithSchema,\n type ScanCache,\n type ScanCacheClassEntry,\n type TailwindConfig,\n type RegistryPluginEntry,\n type RegistryFile,\n type PackageJson,\n} from \"./configSchemas\"\n\n// โโ Worker/bootstrap path resolution โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n resolveWorkerPath,\n resolveLoaderPath,\n type WorkerPathOptions,\n type WorkerPathResult,\n} from \"./workerResolver\"\n\n// โโ Codegen helpers โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n generateComponentCode,\n generateStorybookStory,\n generateClassRenameCodemod,\n generateBarrelFile,\n type ComponentCodegenOptions,\n} from \"./codegen\"\n\n// โโ Native binary resolution (QA #1) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n resolveNativeBinary,\n formatNativeNotFoundError,\n type NativeResolutionResult,\n} from \"./native-resolution\"\n\n// โโ Shared observability contract โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n createObservabilityClient,\n type ClassInspection,\n type ClassProperty,\n type ClassUsageLocation,\n type BuildTrace,\n type BuildPhaseTrace,\n type DashboardMetrics,\n type DashboardSummary,\n type ObservabilityClient,\n} from \"./observability\"\n\nexport {\n TW_STATE_STATIC_FILENAME,\n extractStaticStateCss,\n appendStaticStateCssToSafelist,\n type TwStateConfigEntry,\n type StaticStateCssInput,\n type GeneratedStateRule,\n type StaticStateExtractionResult,\n} from \"./staticStateExtractor\"\nexport { setGlobalLogFile } from \"./logger\"","export * from \"@tailwind-styled/devtools\"\n","/**\n * tailwind-styled-v4 โ DevTools v4\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 * ๐ฌ Trace โ build timeline, pipeline events, memory profile\n *\n * Keyboard shortcuts:\n * Ctrl+Shift+D โ toggle devtools\n * Escape โ close\n * 1-6 โ switch panels\n */\n\n\"use client\"\n\nimport React, { useCallback, useEffect, useRef, useState } from \"react\"\nimport {\n formatMemory,\n formatDuration,\n getBuildTimeColor,\n getModeColor,\n getHealthColor,\n getMemoryColor,\n getPipelinePercentages,\n type TraceSnapshot,\n type TraceSummary,\n} from \"@tailwind-styled/shared\"\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\" | \"trace\"\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 const cur = { el: el as HTMLElement | null }\n while (cur.el) {\n if (cur.el.dataset?.tw) return cur.el\n cur.el = cur.el.parentElement\n }\n return null\n}\n\nfunction getAtomicMap(classes: string[]): Record<string, string> {\n const registry = window.__TW_REGISTRY__\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.__TW_STATE_REGISTRY__ as Map<string, { states: string[] }> | 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.__TW_CONTAINER_REGISTRY__ as Map<string, { breakpoints: Array<{ minWidth: string }> }> | undefined\n if (!registry) return []\n for (const [id, entry] of registry) {\n if (el.classList.contains(id)) {\n return entry.breakpoints.map((bp) => 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.__TW_STATE_REGISTRY__\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.__TW_CONTAINER_REGISTRY__\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(\n (bp: { minWidth: string; classes: string; label?: string }, 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.__TW_TOKEN_ENGINE__\n if (!engine) return\n\n setTokens_(engine.getTokens())\n if (!engine.subscribe) return\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.__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.__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\", {\n signal: AbortSignal.timeout(2000),\n })\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.__TW_STATE_REGISTRY__\n const containerReg = window.__TW_CONTAINER_REGISTRY__\n const tokenEngine = window.__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: {\n color: \"#71717a\",\n fontSize: \"11px\",\n lineHeight: 1.6,\n marginBottom: \"6px\",\n },\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// Panel: Trace โ build timeline, pipeline events, memory profile\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nconst DASHBOARD_BASE = \"http://localhost:3000\"\n\nfunction TracePanel() {\n const [metrics, setMetrics] = useState<TraceSnapshot | null>(null)\n const [history, setHistory] = useState<TraceSnapshot[]>([])\n const [summary, setSummary] = useState<TraceSummary | null>(null)\n const [error, setError] = useState<string | null>(null)\n const [fetching, setFetching] = useState(false)\n const [autoRefresh, setAutoRefresh] = useState(false)\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null)\n\n const fetchAll = useCallback(async () => {\n setFetching(true)\n setError(null)\n try {\n const [mRes, hRes, sRes] = await Promise.all([\n fetch(`${DASHBOARD_BASE}/metrics`, { signal: AbortSignal.timeout(2000) }),\n fetch(`${DASHBOARD_BASE}/history`, { signal: AbortSignal.timeout(2000) }),\n fetch(`${DASHBOARD_BASE}/summary`, { signal: AbortSignal.timeout(2000) }),\n ])\n if (!mRes.ok) throw new Error(`metrics: HTTP ${mRes.status}`)\n if (!hRes.ok) throw new Error(`history: HTTP ${hRes.status}`)\n if (!sRes.ok) throw new Error(`summary: HTTP ${sRes.status}`)\n\n const m = await mRes.json()\n const h = await hRes.json()\n const s = await sRes.json()\n\n setMetrics(m)\n setHistory(Array.isArray(h) ? h : [])\n setSummary(s)\n } catch (e: unknown) {\n const msg = e instanceof Error ? e.message : String(e)\n setError(\n msg.includes(\"Failed to fetch\") || msg.includes(\"NetworkError\")\n ? \"Dashboard tidak berjalan. Jalankan: tw dashboard\"\n : msg\n )\n } finally {\n setFetching(false)\n }\n }, [])\n\n // Auto-refresh effect\n useEffect(() => {\n if (autoRefresh) {\n fetchAll()\n intervalRef.current = setInterval(fetchAll, 3000)\n } else if (intervalRef.current) {\n clearInterval(intervalRef.current)\n intervalRef.current = null\n }\n return () => {\n if (intervalRef.current) clearInterval(intervalRef.current)\n }\n }, [autoRefresh, fetchAll])\n\n // Render bar chart for build time history\n const renderHistoryChart = () => {\n const vals = history.map((h) => h.buildMs ?? 0).filter((v) => v > 0)\n if (vals.length === 0) {\n return React.createElement(\n \"div\",\n {\n style: {\n color: \"#52525b\",\n fontSize: \"11px\",\n textAlign: \"center\" as const,\n padding: \"12px\",\n },\n },\n \"No build history available\"\n )\n }\n const max = Math.max(...vals)\n const chartWidth = 296\n const barWidth = Math.max(3, Math.floor(chartWidth / vals.length) - 1)\n\n return React.createElement(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"flex-end\" as const,\n gap: \"1px\",\n height: \"60px\",\n padding: \"0 2px\",\n },\n },\n vals.map((v, i) => {\n const h = max > 0 ? Math.max(3, Math.round((v / max) * 56)) : 3\n return React.createElement(\"div\", {\n key: i,\n style: {\n width: `${barWidth}px`,\n height: `${h}px`,\n background: getBuildTimeColor(v),\n borderRadius: \"2px 2px 0 0\",\n opacity: i === vals.length - 1 ? 1 : 0.5,\n flexShrink: 0,\n },\n title: `${v}ms`,\n })\n })\n )\n }\n\n // Render pipeline breakdown bar\n const renderPipelineBar = () => {\n if (!metrics) return null\n const { scanPct, analyzePct, compilePct } = getPipelinePercentages(metrics)\n const scan = metrics.scanMs ?? 0\n const analyze = metrics.analyzeMs ?? 0\n const compile = metrics.compileMs ?? 0\n\n if (scanPct === 0 && analyzePct === 0 && compilePct === 0) return null\n\n return React.createElement(\n \"div\",\n null,\n React.createElement(\n \"div\",\n { style: { ...S.sectionTitle, marginBottom: \"6px\" } },\n \"Pipeline Breakdown\"\n ),\n React.createElement(\n \"div\",\n {\n style: {\n display: \"flex\",\n height: \"12px\",\n borderRadius: \"4px\",\n overflow: \"hidden\",\n marginBottom: \"6px\",\n },\n },\n scanPct > 0 &&\n React.createElement(\"div\", {\n style: { width: `${scanPct}%`, background: \"#60a5fa\", minWidth: \"2px\" },\n title: `Scan: ${scan}ms`,\n }),\n analyzePct > 0 &&\n React.createElement(\"div\", {\n style: { width: `${analyzePct}%`, background: \"#818cf8\", minWidth: \"2px\" },\n title: `Analyze: ${analyze}ms`,\n }),\n compilePct > 0 &&\n React.createElement(\"div\", {\n style: { width: `${compilePct}%`, background: \"#34d399\", minWidth: \"2px\" },\n title: `Compile: ${compile}ms`,\n })\n ),\n React.createElement(\n \"div\",\n { style: { display: \"flex\", gap: \"12px\", fontSize: \"10px\" } },\n React.createElement(\"span\", { style: { color: \"#60a5fa\" } }, `Scan ${scan}ms`),\n React.createElement(\"span\", { style: { color: \"#818cf8\" } }, `Analyze ${analyze}ms`),\n React.createElement(\"span\", { style: { color: \"#34d399\" } }, `Compile ${compile}ms`)\n )\n )\n }\n\n // Error state\n if (error && !metrics) {\n return React.createElement(\n \"div\",\n { style: S.scrollArea },\n React.createElement(\n \"div\",\n { style: { padding: \"12px\" } },\n React.createElement(\n \"div\",\n { style: { color: \"#f87171\", fontSize: \"11px\", marginBottom: \"8px\" } },\n error\n ),\n React.createElement(\n \"button\",\n {\n style: { ...S.copyBtn, borderTop: \"none\", color: \"#34d399\", fontWeight: \"600\" },\n onClick: fetchAll,\n disabled: fetching,\n },\n fetching ? \"Connecting...\" : \"โก Load from Dashboard\"\n )\n )\n )\n }\n\n // Initial load state\n if (!metrics) {\n return React.createElement(\n \"div\",\n { style: S.scrollArea },\n React.createElement(\n \"div\",\n { style: { padding: \"12px\" } },\n React.createElement(\n \"div\",\n {\n style: {\n color: \"#71717a\",\n fontSize: \"11px\",\n lineHeight: 1.6,\n marginBottom: \"8px\",\n },\n },\n \"Build timeline dan pipeline events dari engine.\",\n React.createElement(\"br\", null),\n React.createElement(\n \"code\",\n { style: { color: \"#52525b\", fontSize: \"10px\" } },\n \"tw dashboard\"\n )\n ),\n React.createElement(\n \"button\",\n {\n style: { ...S.copyBtn, borderTop: \"none\", color: \"#34d399\", fontWeight: \"600\" },\n onClick: fetchAll,\n disabled: fetching,\n },\n fetching ? \"Connecting...\" : \"โก Load from Dashboard\"\n )\n )\n )\n }\n\n return React.createElement(\n \"div\",\n { style: S.scrollArea },\n\n // โโ Mode & Health โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n React.createElement(\n \"div\",\n { style: { padding: \"10px 12px 6px\" } },\n React.createElement(\n \"div\",\n {\n style: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: \"8px\",\n },\n },\n React.createElement(\n \"div\",\n { style: { display: \"flex\", alignItems: \"center\", gap: \"8px\" } },\n React.createElement(\"div\", {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: getModeColor(metrics.mode),\n boxShadow: `0 0 6px ${getModeColor(metrics.mode)}`,\n },\n }),\n React.createElement(\n \"span\",\n {\n style: {\n color: getModeColor(metrics.mode),\n fontWeight: \"600\",\n fontSize: \"12px\",\n textTransform: \"uppercase\" as const,\n },\n },\n metrics.mode ?? \"unknown\"\n )\n ),\n React.createElement(\n \"div\",\n { style: { display: \"flex\", gap: \"4px\" } },\n React.createElement(\n \"button\",\n {\n style: {\n background: autoRefresh ? \"#1e3a5f\" : \"none\",\n border: `1px solid ${autoRefresh ? \"#3b82f6\" : \"#27272a\"}`,\n borderRadius: \"4px\",\n color: autoRefresh ? \"#60a5fa\" : \"#52525b\",\n cursor: \"pointer\",\n fontSize: \"10px\",\n padding: \"2px 6px\",\n fontFamily: \"inherit\",\n pointerEvents: \"all\" as const,\n },\n onClick: () => setAutoRefresh(!autoRefresh),\n title: autoRefresh ? \"Stop auto-refresh\" : \"Auto-refresh every 3s\",\n },\n autoRefresh ? \"โ Live\" : \"โ Live\"\n ),\n React.createElement(\n \"button\",\n {\n style: {\n background: \"none\",\n border: \"1px solid #27272a\",\n borderRadius: \"4px\",\n color: \"#52525b\",\n cursor: \"pointer\",\n fontSize: \"10px\",\n padding: \"2px 6px\",\n fontFamily: \"inherit\",\n pointerEvents: \"all\" as const,\n },\n onClick: fetchAll,\n disabled: fetching,\n title: \"Refresh now\",\n },\n \"โป\"\n )\n )\n )\n ),\n\n // โโ Health Status โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n summary &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\"div\", { style: { ...S.sectionTitle, marginBottom: \"6px\" } }, \"Health\"),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Status\"),\n React.createElement(\n \"span\",\n { style: { color: getHealthColor(summary.health?.status), fontWeight: \"600\" } },\n summary.health?.status ?? \"unknown\"\n )\n ),\n summary.health?.issues &&\n summary.health.issues.length > 0 &&\n React.createElement(\n \"div\",\n { style: { marginTop: \"4px\" } },\n summary.health.issues.map((issue, i) =>\n React.createElement(\n \"div\",\n {\n key: i,\n style: {\n fontSize: \"10px\",\n color:\n issue.severity === \"high\"\n ? \"#f87171\"\n : issue.severity === \"medium\"\n ? \"#fbbf24\"\n : \"#71717a\",\n marginBottom: \"2px\",\n },\n },\n `โข ${issue.message}`\n )\n )\n )\n ),\n\n // โโ Build Metrics โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\n \"div\",\n { style: { ...S.sectionTitle, marginBottom: \"6px\" } },\n \"Build Metrics\"\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Build\"),\n React.createElement(\n \"span\",\n {\n style: {\n ...S.varValue,\n color: getBuildTimeColor(metrics.buildMs),\n },\n },\n metrics.buildMs !== null ? `${metrics.buildMs}ms` : \"โ\"\n )\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Classes\"),\n React.createElement(\"span\", { style: S.varValue }, String(metrics.classCount ?? \"โ\"))\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Files\"),\n React.createElement(\"span\", { style: S.varValue }, String(metrics.fileCount ?? \"โ\"))\n ),\n metrics.cssBytes !== null &&\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"CSS\"),\n React.createElement(\n \"span\",\n { style: { ...S.varValue, color: \"#818cf8\" } },\n formatMemory(metrics.cssBytes)\n )\n )\n ),\n\n // โโ Pipeline Breakdown โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n React.createElement(\"div\", { style: S.section }, renderPipelineBar()),\n\n // โโ Pipeline Events โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n (metrics.eventsReceived !== undefined || metrics.batchesProcessed !== undefined) &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\n \"div\",\n { style: { ...S.sectionTitle, marginBottom: \"6px\" } },\n \"Pipeline Events\"\n ),\n metrics.eventsReceived !== undefined &&\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Events received\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(metrics.eventsReceived)\n )\n ),\n metrics.eventsProcessed !== undefined &&\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Events processed\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(metrics.eventsProcessed)\n )\n ),\n metrics.batchesProcessed !== undefined &&\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Batches\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(metrics.batchesProcessed)\n )\n ),\n metrics.incrementalUpdates !== undefined &&\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Incremental\"),\n React.createElement(\n \"span\",\n { style: { color: \"#34d399\", fontSize: \"11px\" } },\n String(metrics.incrementalUpdates)\n )\n ),\n metrics.fullRescans !== undefined &&\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Full rescans\"),\n React.createElement(\n \"span\",\n { style: { color: \"#fbbf24\", fontSize: \"11px\" } },\n String(metrics.fullRescans)\n )\n )\n ),\n\n // โโ Memory โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n metrics.memoryMb &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\"div\", { style: { ...S.sectionTitle, marginBottom: \"6px\" } }, \"Memory\"),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Heap used\"),\n React.createElement(\n \"span\",\n {\n style: {\n color: getMemoryColor(metrics.memoryMb.heapUsed),\n fontWeight: \"600\",\n },\n },\n `${metrics.memoryMb.heapUsed.toFixed(1)}MB`\n )\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Heap total\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n `${metrics.memoryMb.heapTotal.toFixed(1)}MB`\n )\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"RSS\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n `${metrics.memoryMb.rss.toFixed(1)}MB`\n )\n )\n ),\n\n // โโ Workspace Summary โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n summary &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\n \"div\",\n { style: { ...S.sectionTitle, marginBottom: \"6px\" } },\n \"Workspace\"\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Packages\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(summary.workspace?.totalPackages ?? \"โ\")\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: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(summary.workspace?.totalFiles ?? \"โ\")\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: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(summary.workspace?.totalClasses ?? \"โ\")\n )\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Cache hit rate\"),\n React.createElement(\n \"span\",\n {\n style: {\n color: (summary.cache?.hitRate ?? 0) > 0.8 ? \"#34d399\" : \"#fbbf24\",\n fontSize: \"11px\",\n },\n },\n summary.cache ? `${(summary.cache.hitRate * 100).toFixed(0)}%` : \"โ\"\n )\n )\n ),\n\n // โโ Build Time History โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\n \"div\",\n { style: { ...S.sectionTitle, marginBottom: \"6px\" } },\n `Build History (${history.length} snapshots)`\n ),\n renderHistoryChart()\n ),\n\n // โโ Timestamp โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n metrics.generatedAt &&\n React.createElement(\n \"div\",\n {\n style: {\n padding: \"6px 12px\",\n color: \"#3f3f46\",\n fontSize: \"10px\",\n textAlign: \"center\" as const,\n },\n },\n `Last update: ${new Date(metrics.generatedAt).toLocaleTimeString()}`\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 if (e.key === \"6\") setState((s) => (s.open ? { ...s, panel: \"trace\" } : 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 { id: \"trace\", label: \"Trace\", 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 state.panel === \"trace\" && React.createElement(TracePanel, 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-6 switch panel ยท Esc close\"\n : \"Ctrl+Shift+D close ยท 1-6 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\n// Export shared trace utilities for reuse across CLI, dashboard, and devtools\nexport type { TraceSnapshot, TraceSummary } from \"@tailwind-styled/shared\"\nexport {\n getHealthColor,\n getModeColor,\n formatMemory,\n formatDuration,\n getBuildTimeColor,\n getMemoryColor,\n getPipelinePercentages,\n}\n\n// โโ Class Inspector โ reusable surface (execution-log requirement) โโโโโโโโโโ\nexport {\n fetchClassInspection,\n formatClassInspectionCli,\n formatClassInspectionJson,\n type ClassInspectResult,\n type InspectorFetchOptions,\n} from \"./classInspector\"\n","/**\n * Class Inspector โ reusable surface inspection untuk DevTools.\n * Menggunakan inspectClass() dari @tailwind-styled/engine.\n *\n * Dipakai oleh:\n * - DevTools TracePanel โ class detail panel\n * - CLI `tw why <class>` โ terminal output\n * - Dashboard `/inspect?class=` endpoint\n *\n * Surface ini reusable sesuai requirement dari execution-log.\n */\n\nexport interface ClassInspectResult {\n className: string\n css: string\n properties: Array<{ property: string; value: string }>\n conflicts: string[]\n usedIn: string[]\n risk: \"low\" | \"medium\" | \"high\"\n bundleBytes: number\n fetchedAt: number\n}\n\nexport interface InspectorFetchOptions {\n /** Dashboard base URL (default: http://localhost:7421) */\n baseUrl?: string\n /** Timeout ms (default: 3000) */\n timeoutMs?: number\n}\n\n/**\n * Fetch inspection data untuk sebuah class dari dashboard server.\n * Dashboard server pakai inspectClass() dari engine secara internal.\n *\n * @example\n * // Di DevTools panel:\n * const result = await fetchClassInspection(\"flex\")\n * console.log(result.properties) // [{ property: \"display\", value: \"flex\" }]\n * console.log(result.usedIn) // [\"src/Button.tsx\"]\n */\nexport async function fetchClassInspection(\n className: string,\n opts: InspectorFetchOptions = {}\n): Promise<ClassInspectResult | null> {\n const { baseUrl = \"http://localhost:7421\", timeoutMs = 3000 } = opts\n\n const url = `${baseUrl}/inspect?class=${encodeURIComponent(className)}`\n\n try {\n const res = await fetch(url, { signal: AbortSignal.timeout(timeoutMs) })\n if (!res.ok) return null\n const data = await res.json()\n return {\n className,\n css: data.css ?? \"\",\n properties: data.properties ?? [],\n conflicts: data.conflicts ?? [],\n usedIn: data.usedIn ?? [],\n risk: data.risk ?? \"low\",\n bundleBytes: data.bundleBytes ?? 0,\n fetchedAt: Date.now(),\n }\n } catch {\n return null\n }\n}\n\n/** Format inspection result untuk CLI terminal output */\nexport function formatClassInspectionCli(result: ClassInspectResult): string {\n const lines: string[] = [\n `\\n Class: .${result.className}`,\n ` Risk: ${result.risk}`,\n ``,\n ]\n\n if (result.properties.length > 0) {\n lines.push(` CSS Properties:`)\n for (const p of result.properties) {\n lines.push(` ${p.property}: ${p.value}`)\n }\n lines.push(``)\n }\n\n if (result.usedIn.length > 0) {\n lines.push(` Used in ${result.usedIn.length} file(s):`)\n for (const f of result.usedIn.slice(0, 5)) {\n lines.push(` ${f}`)\n }\n if (result.usedIn.length > 5) {\n lines.push(` ... and ${result.usedIn.length - 5} more`)\n }\n lines.push(``)\n } else {\n lines.push(` โ ๏ธ Not found in workspace scan (dead code?)`)\n lines.push(``)\n }\n\n if (result.bundleBytes > 0) {\n lines.push(` Bundle contribution: ~${result.bundleBytes}B`)\n }\n\n if (result.conflicts.length > 0) {\n lines.push(` Conflicts: ${result.conflicts.join(\", \")}`)\n }\n\n return lines.join(\"\\n\")\n}\n\n/** Format for JSON output (CLI --json flag) */\nexport function formatClassInspectionJson(result: ClassInspectResult): string {\n return JSON.stringify(result, null, 2)\n}\n"],"mappings":"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","names":["React"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/tsup/assets/cjs_shims.js","../packages/domain/shared/src/trace.ts","../packages/domain/shared/src/index.ts","../src/umbrella/devtools.ts","../packages/infrastructure/devtools/src/index.tsx","../packages/infrastructure/devtools/src/classInspector.ts"],"sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","/**\n * Shared trace utilities for CLI, devtools, and dashboard\n * \n * Provides reusable trace snapshot handling, formatting, and analysis\n * across the tailwind-styled-v4 ecosystem without introducing coupling.\n */\n\nexport interface TraceSnapshot {\n generatedAt: string\n buildMs: number | null\n scanMs: number | null\n analyzeMs: number | null\n compileMs: number | null\n memoryMb: { rss: number; heapUsed: number; heapTotal: number } | null\n classCount: number | null\n fileCount: number | null\n cssBytes: number | null\n mode: string | null\n eventsReceived?: number\n eventsProcessed?: number\n batchesProcessed?: number\n incrementalUpdates?: number\n fullRescans?: number\n}\n\nexport interface TraceSummary {\n workspace: {\n totalPackages: number\n totalFiles: number\n totalClasses: number\n lastScanDurationMs: number\n lastBuildDurationMs: number\n }\n cache: {\n hitRate: number\n totalEntries: number\n memoryUsageMb: number\n }\n pipeline: {\n scanDurationMs: number\n analyzeDurationMs: number\n compileDurationMs: number\n totalDurationMs: number\n }\n health: {\n status: \"healthy\" | \"degraded\" | \"unhealthy\"\n issues: Array<{ severity: string; message: string }>\n }\n}\n\n/**\n * Get health status color for UI rendering\n */\nexport function getHealthColor(status?: string): string {\n switch (status) {\n case \"healthy\":\n return \"#34d399\"\n case \"degraded\":\n return \"#fbbf24\"\n case \"unhealthy\":\n return \"#f87171\"\n default:\n return \"#52525b\"\n }\n}\n\n/**\n * Get mode color for UI rendering\n */\nexport function getModeColor(mode?: string | null): string {\n switch (mode) {\n case \"build\":\n return \"#fbbf24\"\n case \"watch\":\n return \"#34d399\"\n case \"jit\":\n return \"#60a5fa\"\n case \"error\":\n return \"#f87171\"\n case \"idle\":\n return \"#71717a\"\n default:\n return \"#52525b\"\n }\n}\n\n/**\n * Format memory in human-readable format\n */\nexport function formatMemory(bytes: number): string {\n if (bytes < 1024) return `${Math.round(bytes)}B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`\n return `${(bytes / (1024 * 1024)).toFixed(1)}MB`\n}\n\n/**\n * Format duration in human-readable format\n */\nexport function formatDuration(ms: number | null): string {\n if (ms === null) return \"โ\"\n if (ms < 1000) return `${ms}ms`\n return `${(ms / 1000).toFixed(1)}s`\n}\n\n/**\n * Calculate health status from metrics\n */\nexport function calculateHealth(\n metrics: TraceSnapshot,\n summary?: TraceSummary\n): \"healthy\" | \"degraded\" | \"unhealthy\" {\n if (summary?.health?.status) return summary.health.status\n\n // Fallback to simple heuristics\n if (metrics.mode === \"error\") return \"unhealthy\"\n if ((metrics.buildMs ?? 0) > 5000) return \"degraded\"\n if (metrics.memoryMb && metrics.memoryMb.heapUsed > 500) return \"degraded\"\n return \"healthy\"\n}\n\n/**\n * Get color for build time indicator\n */\nexport function getBuildTimeColor(ms: number | null): string {\n if (ms === null) return \"#52525b\"\n if (ms > 1000) return \"#f87171\" // red - very slow\n if (ms > 500) return \"#fbbf24\" // amber - acceptable\n return \"#34d399\" // green - fast\n}\n\n/**\n * Get color for memory usage indicator\n */\nexport function getMemoryColor(mb: number): string {\n if (mb > 500) return \"#f87171\" // red - high\n if (mb > 250) return \"#fbbf24\" // amber - moderate\n return \"#34d399\" // green - low\n}\n\n/**\n * Create trace snapshot from dashboard data\n */\nexport function createTraceSnapshot(data: Record<string, unknown>): TraceSnapshot {\n return {\n generatedAt: (data.generatedAt as string) || new Date().toISOString(),\n buildMs: (data.buildMs as number) ?? null,\n scanMs: (data.scanMs as number) ?? null,\n analyzeMs: (data.analyzeMs as number) ?? null,\n compileMs: (data.compileMs as number) ?? null,\n memoryMb: (data.memoryMb as { rss: number; heapUsed: number; heapTotal: number } | null) ?? null,\n classCount: (data.classCount as number) ?? null,\n fileCount: (data.fileCount as number) ?? null,\n cssBytes: (data.cssBytes as number) ?? null,\n mode: (data.mode as string) ?? null,\n eventsReceived: (data.eventsReceived as number | undefined) ?? undefined,\n eventsProcessed: (data.eventsProcessed as number | undefined) ?? undefined,\n batchesProcessed: (data.batchesProcessed as number | undefined) ?? undefined,\n incrementalUpdates: (data.incrementalUpdates as number | undefined) ?? undefined,\n fullRescans: (data.fullRescans as number | undefined) ?? undefined,\n }\n}\n\n/**\n * Calculate pipeline time distribution\n */\nexport function getPipelinePercentages(metrics: TraceSnapshot): {\n scanPct: number\n analyzePct: number\n compilePct: number\n} {\n const scan = metrics.scanMs ?? 0\n const analyze = metrics.analyzeMs ?? 0\n const compile = metrics.compileMs ?? 0\n const total = scan + analyze + compile\n\n if (total === 0) {\n return { scanPct: 0, analyzePct: 0, compilePct: 0 }\n }\n\n return {\n scanPct: (scan / total) * 100,\n analyzePct: (analyze / total) * 100,\n compilePct: (compile / total) * 100,\n }\n}\n","import { createHash } from \"node:crypto\"\nimport fs from \"node:fs\"\nimport path from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\nimport { createRequire } from \"node:module\"\n\n// Native-only: Node.js is always available. No browser fallback.\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Types\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport type TokenMap = Record<string, string>\n\nexport type VariantValue = string | number | boolean | undefined\n\nexport type VariantProps = Record<string, VariantValue>\n\nexport type HtmlTagName = keyof HTMLElementTagNameMap\n\nexport type CompoundCondition = Record<string, string | number | boolean>\n\nexport type VariantMatrix = Record<string, Array<string | number | boolean>>\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Logging\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport interface Logger {\n warn(...args: unknown[]): void\n debug(...args: unknown[]): void\n error(...args: unknown[]): void\n log(...args: unknown[]): void\n}\n\nexport function createLogger(namespace: string): Logger {\n const prefix = `[${namespace}]`\n return {\n warn(...args: unknown[]) {\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\n },\n debug(...args: unknown[]) {\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\n },\n error(...args: unknown[]) {\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\n },\n log(...args: unknown[]) {\n process.stderr.write(`${prefix} ${args.map(a => typeof a === \"string\" ? a : String(a)).join(\" \")}\\n`)\n },\n }\n}\n\nexport function createDebugLogger(namespace: string, label?: string): (msg: string) => void {\n const prefix = label ? `[${namespace}:${label}]` : `[${namespace}]`\n return (msg: string) => {\n if (process.env.DEBUG?.includes(namespace) || process.env.TW_DEBUG) {\n console.debug(prefix, msg)\n }\n }\n}\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Error handling\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport type ErrorSource = \"rust\" | \"validation\" | \"compile\" | \"io\" | \"config\" | \"unknown\"\n\ntype ZodLikeIssue = {\n path?: readonly PropertyKey[]\n message?: string\n}\n\nfunction formatIssuePath(path?: readonly PropertyKey[]): string {\n if (!path || path.length === 0) return \"(root)\"\n return path\n .map((segment) =>\n typeof segment === \"symbol\" ? segment.description ?? segment.toString() : String(segment)\n )\n .join(\".\")\n}\n\nexport class TwError extends Error {\n /** @deprecated Gunakan source */\n public readonly domain: string\n public readonly source: ErrorSource\n public readonly code: string\n public readonly originalCause?: unknown\n\n constructor(domainOrSource: string, code: string, message: string, cause?: unknown) {\n super(message)\n this.name = \"TwError\"\n this.domain = domainOrSource\n this.source = domainOrSource as ErrorSource\n this.code = code\n this.originalCause = cause\n if (Error.captureStackTrace) Error.captureStackTrace(this, TwError)\n }\n\n static fromIo(code: string, message: string): TwError {\n return new TwError(\"io\", code, message)\n }\n\n static fromCompile(code: string, message: string): TwError {\n return new TwError(\"compile\", code, message)\n }\n\n static fromRust(err: { code?: string; message?: string } | Error | unknown): TwError {\n if (err instanceof TwError) return err\n if (err instanceof Error) return new TwError(\"rust\", \"RUST_ERROR\", err.message, err)\n if (err && typeof err === \"object\") {\n const e = err as { code?: string; message?: string }\n return new TwError(\"rust\", e.code ?? \"RUST_ERROR\", e.message ?? String(err), err)\n }\n return new TwError(\"rust\", \"RUST_ERROR\", String(err), err)\n }\n\n /** Buat TwError dari ZodError โ dukung shape Zod v3 (`errors`) dan v4 (`issues`). */\n static fromZod(err: { issues?: ZodLikeIssue[]; errors?: ZodLikeIssue[] }): TwError {\n const first = err.issues?.[0] ?? err.errors?.[0]\n const path = formatIssuePath(first?.path)\n const message = first ? `${path}: ${first.message}` : \"Schema validation failed\"\n return new TwError(\"validation\", \"SCHEMA_VALIDATION_FAILED\", message, err)\n }\n\n static wrap(source: string, code: string, err: unknown): TwError {\n if (err instanceof TwError) return err\n if (err instanceof Error) return new TwError(source, code, err.message, err)\n return new TwError(source, code, String(err), err)\n }\n\n override toString(): string {\n return `TwError [${this.source}:${this.code}] ${this.message}`\n }\n\n toJSON(): { name: string; source: string; code: string; message: string } {\n return { name: this.name, source: this.source, code: this.code, message: this.message }\n }\n\n toCliMessage(): string {\n return `[${this.source.toUpperCase()}:${this.code}] ${this.message}`\n }\n}\n\nexport function wrapUnknownError(domain: string, code: string, error: unknown): TwError {\n return TwError.wrap(domain, code, error)\n}\n\nexport function isTwError(err: unknown): err is TwError {\n return err instanceof TwError\n}\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Native binding resolution\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport interface LoadNativeBindingOptions<T> {\n runtimeDir: string\n candidates: string[]\n isValid: (module: unknown) => module is T\n invalidExportMessage: string\n}\n\nexport interface LoadNativeBindingResult<T> {\n binding: T | null\n loadErrors: Array<{ path: string; message: string }>\n loadedPath?: string\n}\n\nexport function loadNativeBinding<T>(options: LoadNativeBindingOptions<T>): LoadNativeBindingResult<T> {\n const { runtimeDir, candidates, isValid } = options\n const loadErrors: Array<{ path: string; message: string }> = []\n\n for (const candidate of candidates) {\n const candidatePath = path.resolve(runtimeDir, candidate)\n try {\n if (!fs.existsSync(candidatePath) && !fs.existsSync(candidatePath + \".node\")) {\n continue\n }\n const mod = requireNativeModule(candidatePath)\n if (mod && isValid(mod)) {\n return { binding: mod, loadErrors, loadedPath: candidatePath }\n }\n loadErrors.push({ path: candidatePath, message: options.invalidExportMessage })\n } catch (e) {\n loadErrors.push({ path: candidatePath, message: e instanceof Error ? e.message : String(e) })\n }\n }\n\n return { binding: null, loadErrors }\n}\n\nconst _require = createRequire(\n typeof __filename !== \"undefined\"\n ? `file://${__filename}`\n : (import.meta.url ?? \"file://unknown\")\n)\n\nfunction requireNativeModule(p: string): unknown {\n return _require(p)\n}\n\nexport interface ResolveCandidatesOptions {\n runtimeDir?: string\n envVarNames?: string[]\n includeDefaultCandidates?: boolean\n enforceNodeExtensionForEnvPath?: boolean\n /** @deprecated โ ignored, kept for backward compat */\n packageName?: string\n}\n\nexport function resolveNativeBindingCandidates(options: ResolveCandidatesOptions): string[] {\n const {\n envVarNames = [\"TW_NATIVE_PATH\", \"TWS_NATIVE_PATH\"],\n includeDefaultCandidates = true,\n enforceNodeExtensionForEnvPath = false,\n } = options\n // Default ke cwd kalau runtimeDir tidak disediakan\n const runtimeDir = options.runtimeDir || process.cwd()\n const candidates: string[] = []\n\n for (const envVar of envVarNames) {\n const envPath = process.env[envVar]\n if (envPath) {\n candidates.push(enforceNodeExtensionForEnvPath && !envPath.endsWith(\".node\") ? envPath + \".node\" : envPath)\n }\n }\n\n if (!includeDefaultCandidates) return candidates\n\n if (fs.existsSync(runtimeDir)) {\n try {\n for (const entry of fs.readdirSync(runtimeDir)) {\n if (entry.endsWith(\".node\")) candidates.push(entry)\n }\n } catch { /* ignore read errors */ }\n }\n\n const BINARY_NAMES = [\"tailwind-styled-native\", \"tailwind_styled_parser\"]\n const napiPlatform = process.platform === \"linux\" && process.arch === \"x64\" ? \"linux-x64-gnu\"\n : process.platform === \"linux\" && process.arch === \"arm64\" ? \"linux-arm64-gnu\"\n : `${process.platform}-${process.arch}`\n\n for (const bin of BINARY_NAMES) {\n candidates.push(path.resolve(runtimeDir, `${bin}.node`))\n candidates.push(path.resolve(runtimeDir, `${bin}.${napiPlatform}.node`))\n // 1 level: dist/ โ package-root/native/ (published npm package)\n candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.node`))\n candidates.push(path.resolve(runtimeDir, \"..\", \"native\", `${bin}.${napiPlatform}.node`))\n // cwd fallback (user project root)\n candidates.push(path.resolve(process.cwd(), \"native\", `${bin}.node`))\n candidates.push(path.resolve(process.cwd(), \"native\", `${bin}.${napiPlatform}.node`))\n // 4 level: dist/ โ package/ โ domain/ โ packages/ โ repo-root/ (monorepo dev)\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `${bin}.node`))\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"..\", \"native\", `${bin}.${napiPlatform}.node`))\n // 3 level fallback\n candidates.push(path.resolve(runtimeDir, \"..\", \"..\", \"..\", \"native\", `${bin}.node`))\n }\n\n return Array.from(new Set(candidates))\n}\n\nexport function resolveRuntimeDir(dir: string | undefined, importMetaUrl: string): string {\n if (dir) return path.resolve(dir)\n try {\n return path.dirname(fileURLToPath(importMetaUrl))\n } catch {\n return process.cwd()\n }\n}\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Hashing\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport function hashContent(content: string, algorithm: string = \"md5\", length?: number): string {\n const hash = createHash(algorithm).update(content).digest(\"hex\")\n return length ? hash.slice(0, length) : hash\n}\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Error formatting\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport function formatErrorMessage(error: unknown): string {\n if (error instanceof TwError) return error.toString()\n if (error instanceof Error) return error.message\n return String(error)\n}\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// LRU Cache\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport class LRUCache<K, V> {\n private capacity: number\n private cache: Map<K, V>\n\n constructor(capacity: number) {\n this.capacity = capacity\n this.cache = new Map()\n }\n\n get(key: K): V | undefined {\n if (!this.cache.has(key)) return undefined\n const value = this.cache.get(key)!\n this.cache.delete(key)\n this.cache.set(key, value)\n return value\n }\n\n set(key: K, value: V): void {\n if (this.cache.has(key)) {\n this.cache.delete(key)\n } else if (this.cache.size >= this.capacity) {\n const firstKey = this.cache.keys().next().value\n if (firstKey !== undefined) {\n this.cache.delete(firstKey)\n }\n }\n this.cache.set(key, value)\n }\n\n delete(key: K): boolean {\n return this.cache.delete(key)\n }\n\n has(key: K): boolean {\n return this.cache.has(key)\n }\n\n clear(): void {\n this.cache.clear()\n }\n\n entries(): IterableIterator<[K, V]> {\n return this.cache.entries()\n }\n\n get size(): number {\n return this.cache.size\n }\n}\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Trace Utilities\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport type { TraceSnapshot, TraceSummary } from \"./trace\"\nexport {\n getHealthColor,\n getModeColor,\n formatMemory,\n formatDuration,\n calculateHealth,\n getBuildTimeColor,\n getMemoryColor,\n createTraceSnapshot,\n getPipelinePercentages,\n} from \"./trace\"\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Performance Telemetry\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\n\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Error Codes\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport type { ErrorCode } from \"./error-codes\"\nexport { ERROR_CODES, getSuggestion, formatErrorCode } from \"./error-codes\"\n\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n// Tailwind Compatibility\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nexport type { TailwindInfo } from \"./compatibility\"\nexport { detectTailwind, assertTailwindV4, getTailwindVersion, isTailwindV4 } from \"./compatibility\"\n\n// โโ Native binding schemas (Zod boundary validation)\nexport {\n NativeScanFileSchema, NativeScanResultSchema,\n NativeAnalyzerReportSchema, NativeTransformResultSchema,\n NativeCssCompileResultSchema, NativeWatchResultSchema,\n NativeCacheEntrySchema, NativeCacheReadResultSchema,\n safeParseNative, parseNative,\n} from './native-schemas'\n\n// โโ ESM-safe runtime helpers โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n createEsmRequire,\n getDirname,\n getFilename,\n resolveFromRoot,\n tryRequire,\n resolveNativeNodePath,\n} from \"./esmHelpers\"\n\n// โโ Performance telemetry โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n TelemetryCollector,\n getGlobalTelemetry,\n resetGlobalTelemetry,\n createBuildTimer,\n type BuildTelemetry,\n type TelemetrySummary,\n type BuildPhases,\n} from \"./telemetry\"\n\n// โโ Config/JSON schema validation โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n ScanCacheSchema,\n ScanCacheClassEntrySchema,\n TailwindConfigSchema,\n RegistryPluginEntrySchema,\n RegistryFileSchema,\n PackageJsonSchema,\n parseJsonWithSchema,\n parseJsonFileWithSchema,\n type ScanCache,\n type ScanCacheClassEntry,\n type TailwindConfig,\n type RegistryPluginEntry,\n type RegistryFile,\n type PackageJson,\n} from \"./configSchemas\"\n\n// โโ Worker/bootstrap path resolution โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n resolveWorkerPath,\n resolveLoaderPath,\n type WorkerPathOptions,\n type WorkerPathResult,\n} from \"./workerResolver\"\n\n// โโ Codegen helpers โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n generateComponentCode,\n generateStorybookStory,\n generateClassRenameCodemod,\n generateBarrelFile,\n type ComponentCodegenOptions,\n} from \"./codegen\"\n\n// โโ Native binary resolution (QA #1) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n resolveNativeBinary,\n formatNativeNotFoundError,\n type NativeResolutionResult,\n} from \"./native-resolution\"\n\n// โโ Shared observability contract โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\nexport {\n createObservabilityClient,\n type ClassInspection,\n type ClassProperty,\n type ClassUsageLocation,\n type BuildTrace,\n type BuildPhaseTrace,\n type DashboardMetrics,\n type DashboardSummary,\n type ObservabilityClient,\n} from \"./observability\"\n\nexport {\n TW_STATE_STATIC_FILENAME,\n extractStaticStateCss,\n appendStaticStateCssToSafelist,\n type TwStateConfigEntry,\n type StaticStateCssInput,\n type GeneratedStateRule,\n type StaticStateExtractionResult,\n} from \"./staticStateExtractor\"\nexport { setGlobalLogFile } from \"./logger\"","export * from \"@tailwind-styled/devtools\"\n","/**\n * tailwind-styled-v4 โ DevTools v4\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 * ๐ฌ Trace โ build timeline, pipeline events, memory profile\n *\n * Keyboard shortcuts:\n * Ctrl+Shift+D โ toggle devtools\n * Escape โ close\n * 1-6 โ switch panels\n */\n\n\"use client\"\n\nimport React, { useCallback, useEffect, useRef, useState } from \"react\"\nimport {\n formatMemory,\n formatDuration,\n getBuildTimeColor,\n getModeColor,\n getHealthColor,\n getMemoryColor,\n getPipelinePercentages,\n type TraceSnapshot,\n type TraceSummary,\n} from \"@tailwind-styled/shared\"\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\" | \"trace\"\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 const cur = { el: el as HTMLElement | null }\n while (cur.el) {\n if (cur.el.dataset?.tw) return cur.el\n cur.el = cur.el.parentElement\n }\n return null\n}\n\nfunction getAtomicMap(classes: string[]): Record<string, string> {\n const registry = window.__TW_REGISTRY__\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.__TW_STATE_REGISTRY__ as Map<string, { states: string[] }> | 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.__TW_CONTAINER_REGISTRY__ as Map<string, { breakpoints: Array<{ minWidth: string }> }> | undefined\n if (!registry) return []\n for (const [id, entry] of registry) {\n if (el.classList.contains(id)) {\n return entry.breakpoints.map((bp) => 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.__TW_STATE_REGISTRY__\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.__TW_CONTAINER_REGISTRY__\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(\n (bp: { minWidth: string; classes: string; label?: string }, 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.__TW_TOKEN_ENGINE__\n if (!engine) return\n\n setTokens_(engine.getTokens())\n if (!engine.subscribe) return\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.__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.__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\", {\n signal: AbortSignal.timeout(2000),\n })\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.__TW_STATE_REGISTRY__\n const containerReg = window.__TW_CONTAINER_REGISTRY__\n const tokenEngine = window.__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: {\n color: \"#71717a\",\n fontSize: \"11px\",\n lineHeight: 1.6,\n marginBottom: \"6px\",\n },\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// Panel: Trace โ build timeline, pipeline events, memory profile\n// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n\nconst DASHBOARD_BASE = \"http://localhost:3000\"\n\nfunction TracePanel() {\n const [metrics, setMetrics] = useState<TraceSnapshot | null>(null)\n const [history, setHistory] = useState<TraceSnapshot[]>([])\n const [summary, setSummary] = useState<TraceSummary | null>(null)\n const [error, setError] = useState<string | null>(null)\n const [fetching, setFetching] = useState(false)\n const [autoRefresh, setAutoRefresh] = useState(false)\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null)\n\n const fetchAll = useCallback(async () => {\n setFetching(true)\n setError(null)\n try {\n const [mRes, hRes, sRes] = await Promise.all([\n fetch(`${DASHBOARD_BASE}/metrics`, { signal: AbortSignal.timeout(2000) }),\n fetch(`${DASHBOARD_BASE}/history`, { signal: AbortSignal.timeout(2000) }),\n fetch(`${DASHBOARD_BASE}/summary`, { signal: AbortSignal.timeout(2000) }),\n ])\n if (!mRes.ok) throw new Error(`metrics: HTTP ${mRes.status}`)\n if (!hRes.ok) throw new Error(`history: HTTP ${hRes.status}`)\n if (!sRes.ok) throw new Error(`summary: HTTP ${sRes.status}`)\n\n const m = await mRes.json()\n const h = await hRes.json()\n const s = await sRes.json()\n\n setMetrics(m)\n setHistory(Array.isArray(h) ? h : [])\n setSummary(s)\n } catch (e: unknown) {\n const msg = e instanceof Error ? e.message : String(e)\n setError(\n msg.includes(\"Failed to fetch\") || msg.includes(\"NetworkError\")\n ? \"Dashboard tidak berjalan. Jalankan: tw dashboard\"\n : msg\n )\n } finally {\n setFetching(false)\n }\n }, [])\n\n // Auto-refresh effect\n useEffect(() => {\n if (autoRefresh) {\n fetchAll()\n intervalRef.current = setInterval(fetchAll, 3000)\n } else if (intervalRef.current) {\n clearInterval(intervalRef.current)\n intervalRef.current = null\n }\n return () => {\n if (intervalRef.current) clearInterval(intervalRef.current)\n }\n }, [autoRefresh, fetchAll])\n\n // Render bar chart for build time history\n const renderHistoryChart = () => {\n const vals = history.map((h) => h.buildMs ?? 0).filter((v) => v > 0)\n if (vals.length === 0) {\n return React.createElement(\n \"div\",\n {\n style: {\n color: \"#52525b\",\n fontSize: \"11px\",\n textAlign: \"center\" as const,\n padding: \"12px\",\n },\n },\n \"No build history available\"\n )\n }\n const max = Math.max(...vals)\n const chartWidth = 296\n const barWidth = Math.max(3, Math.floor(chartWidth / vals.length) - 1)\n\n return React.createElement(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"flex-end\" as const,\n gap: \"1px\",\n height: \"60px\",\n padding: \"0 2px\",\n },\n },\n vals.map((v, i) => {\n const h = max > 0 ? Math.max(3, Math.round((v / max) * 56)) : 3\n return React.createElement(\"div\", {\n key: i,\n style: {\n width: `${barWidth}px`,\n height: `${h}px`,\n background: getBuildTimeColor(v),\n borderRadius: \"2px 2px 0 0\",\n opacity: i === vals.length - 1 ? 1 : 0.5,\n flexShrink: 0,\n },\n title: `${v}ms`,\n })\n })\n )\n }\n\n // Render pipeline breakdown bar\n const renderPipelineBar = () => {\n if (!metrics) return null\n const { scanPct, analyzePct, compilePct } = getPipelinePercentages(metrics)\n const scan = metrics.scanMs ?? 0\n const analyze = metrics.analyzeMs ?? 0\n const compile = metrics.compileMs ?? 0\n\n if (scanPct === 0 && analyzePct === 0 && compilePct === 0) return null\n\n return React.createElement(\n \"div\",\n null,\n React.createElement(\n \"div\",\n { style: { ...S.sectionTitle, marginBottom: \"6px\" } },\n \"Pipeline Breakdown\"\n ),\n React.createElement(\n \"div\",\n {\n style: {\n display: \"flex\",\n height: \"12px\",\n borderRadius: \"4px\",\n overflow: \"hidden\",\n marginBottom: \"6px\",\n },\n },\n scanPct > 0 &&\n React.createElement(\"div\", {\n style: { width: `${scanPct}%`, background: \"#60a5fa\", minWidth: \"2px\" },\n title: `Scan: ${scan}ms`,\n }),\n analyzePct > 0 &&\n React.createElement(\"div\", {\n style: { width: `${analyzePct}%`, background: \"#818cf8\", minWidth: \"2px\" },\n title: `Analyze: ${analyze}ms`,\n }),\n compilePct > 0 &&\n React.createElement(\"div\", {\n style: { width: `${compilePct}%`, background: \"#34d399\", minWidth: \"2px\" },\n title: `Compile: ${compile}ms`,\n })\n ),\n React.createElement(\n \"div\",\n { style: { display: \"flex\", gap: \"12px\", fontSize: \"10px\" } },\n React.createElement(\"span\", { style: { color: \"#60a5fa\" } }, `Scan ${scan}ms`),\n React.createElement(\"span\", { style: { color: \"#818cf8\" } }, `Analyze ${analyze}ms`),\n React.createElement(\"span\", { style: { color: \"#34d399\" } }, `Compile ${compile}ms`)\n )\n )\n }\n\n // Error state\n if (error && !metrics) {\n return React.createElement(\n \"div\",\n { style: S.scrollArea },\n React.createElement(\n \"div\",\n { style: { padding: \"12px\" } },\n React.createElement(\n \"div\",\n { style: { color: \"#f87171\", fontSize: \"11px\", marginBottom: \"8px\" } },\n error\n ),\n React.createElement(\n \"button\",\n {\n style: { ...S.copyBtn, borderTop: \"none\", color: \"#34d399\", fontWeight: \"600\" },\n onClick: fetchAll,\n disabled: fetching,\n },\n fetching ? \"Connecting...\" : \"โก Load from Dashboard\"\n )\n )\n )\n }\n\n // Initial load state\n if (!metrics) {\n return React.createElement(\n \"div\",\n { style: S.scrollArea },\n React.createElement(\n \"div\",\n { style: { padding: \"12px\" } },\n React.createElement(\n \"div\",\n {\n style: {\n color: \"#71717a\",\n fontSize: \"11px\",\n lineHeight: 1.6,\n marginBottom: \"8px\",\n },\n },\n \"Build timeline dan pipeline events dari engine.\",\n React.createElement(\"br\", null),\n React.createElement(\n \"code\",\n { style: { color: \"#52525b\", fontSize: \"10px\" } },\n \"tw dashboard\"\n )\n ),\n React.createElement(\n \"button\",\n {\n style: { ...S.copyBtn, borderTop: \"none\", color: \"#34d399\", fontWeight: \"600\" },\n onClick: fetchAll,\n disabled: fetching,\n },\n fetching ? \"Connecting...\" : \"โก Load from Dashboard\"\n )\n )\n )\n }\n\n return React.createElement(\n \"div\",\n { style: S.scrollArea },\n\n // โโ Mode & Health โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n React.createElement(\n \"div\",\n { style: { padding: \"10px 12px 6px\" } },\n React.createElement(\n \"div\",\n {\n style: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: \"8px\",\n },\n },\n React.createElement(\n \"div\",\n { style: { display: \"flex\", alignItems: \"center\", gap: \"8px\" } },\n React.createElement(\"div\", {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: getModeColor(metrics.mode),\n boxShadow: `0 0 6px ${getModeColor(metrics.mode)}`,\n },\n }),\n React.createElement(\n \"span\",\n {\n style: {\n color: getModeColor(metrics.mode),\n fontWeight: \"600\",\n fontSize: \"12px\",\n textTransform: \"uppercase\" as const,\n },\n },\n metrics.mode ?? \"unknown\"\n )\n ),\n React.createElement(\n \"div\",\n { style: { display: \"flex\", gap: \"4px\" } },\n React.createElement(\n \"button\",\n {\n style: {\n background: autoRefresh ? \"#1e3a5f\" : \"none\",\n border: `1px solid ${autoRefresh ? \"#3b82f6\" : \"#27272a\"}`,\n borderRadius: \"4px\",\n color: autoRefresh ? \"#60a5fa\" : \"#52525b\",\n cursor: \"pointer\",\n fontSize: \"10px\",\n padding: \"2px 6px\",\n fontFamily: \"inherit\",\n pointerEvents: \"all\" as const,\n },\n onClick: () => setAutoRefresh(!autoRefresh),\n title: autoRefresh ? \"Stop auto-refresh\" : \"Auto-refresh every 3s\",\n },\n autoRefresh ? \"โ Live\" : \"โ Live\"\n ),\n React.createElement(\n \"button\",\n {\n style: {\n background: \"none\",\n border: \"1px solid #27272a\",\n borderRadius: \"4px\",\n color: \"#52525b\",\n cursor: \"pointer\",\n fontSize: \"10px\",\n padding: \"2px 6px\",\n fontFamily: \"inherit\",\n pointerEvents: \"all\" as const,\n },\n onClick: fetchAll,\n disabled: fetching,\n title: \"Refresh now\",\n },\n \"โป\"\n )\n )\n )\n ),\n\n // โโ Health Status โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n summary &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\"div\", { style: { ...S.sectionTitle, marginBottom: \"6px\" } }, \"Health\"),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Status\"),\n React.createElement(\n \"span\",\n { style: { color: getHealthColor(summary.health?.status), fontWeight: \"600\" } },\n summary.health?.status ?? \"unknown\"\n )\n ),\n summary.health?.issues &&\n summary.health.issues.length > 0 &&\n React.createElement(\n \"div\",\n { style: { marginTop: \"4px\" } },\n summary.health.issues.map((issue, i) =>\n React.createElement(\n \"div\",\n {\n key: i,\n style: {\n fontSize: \"10px\",\n color:\n issue.severity === \"high\"\n ? \"#f87171\"\n : issue.severity === \"medium\"\n ? \"#fbbf24\"\n : \"#71717a\",\n marginBottom: \"2px\",\n },\n },\n `โข ${issue.message}`\n )\n )\n )\n ),\n\n // โโ Build Metrics โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\n \"div\",\n { style: { ...S.sectionTitle, marginBottom: \"6px\" } },\n \"Build Metrics\"\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Build\"),\n React.createElement(\n \"span\",\n {\n style: {\n ...S.varValue,\n color: getBuildTimeColor(metrics.buildMs),\n },\n },\n metrics.buildMs !== null ? `${metrics.buildMs}ms` : \"โ\"\n )\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Classes\"),\n React.createElement(\"span\", { style: S.varValue }, String(metrics.classCount ?? \"โ\"))\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Files\"),\n React.createElement(\"span\", { style: S.varValue }, String(metrics.fileCount ?? \"โ\"))\n ),\n metrics.cssBytes !== null &&\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"CSS\"),\n React.createElement(\n \"span\",\n { style: { ...S.varValue, color: \"#818cf8\" } },\n formatMemory(metrics.cssBytes)\n )\n )\n ),\n\n // โโ Pipeline Breakdown โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n React.createElement(\"div\", { style: S.section }, renderPipelineBar()),\n\n // โโ Pipeline Events โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n (metrics.eventsReceived !== undefined || metrics.batchesProcessed !== undefined) &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\n \"div\",\n { style: { ...S.sectionTitle, marginBottom: \"6px\" } },\n \"Pipeline Events\"\n ),\n metrics.eventsReceived !== undefined &&\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Events received\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(metrics.eventsReceived)\n )\n ),\n metrics.eventsProcessed !== undefined &&\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Events processed\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(metrics.eventsProcessed)\n )\n ),\n metrics.batchesProcessed !== undefined &&\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Batches\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(metrics.batchesProcessed)\n )\n ),\n metrics.incrementalUpdates !== undefined &&\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Incremental\"),\n React.createElement(\n \"span\",\n { style: { color: \"#34d399\", fontSize: \"11px\" } },\n String(metrics.incrementalUpdates)\n )\n ),\n metrics.fullRescans !== undefined &&\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Full rescans\"),\n React.createElement(\n \"span\",\n { style: { color: \"#fbbf24\", fontSize: \"11px\" } },\n String(metrics.fullRescans)\n )\n )\n ),\n\n // โโ Memory โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n metrics.memoryMb &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\"div\", { style: { ...S.sectionTitle, marginBottom: \"6px\" } }, \"Memory\"),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Heap used\"),\n React.createElement(\n \"span\",\n {\n style: {\n color: getMemoryColor(metrics.memoryMb.heapUsed),\n fontWeight: \"600\",\n },\n },\n `${metrics.memoryMb.heapUsed.toFixed(1)}MB`\n )\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Heap total\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n `${metrics.memoryMb.heapTotal.toFixed(1)}MB`\n )\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"RSS\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n `${metrics.memoryMb.rss.toFixed(1)}MB`\n )\n )\n ),\n\n // โโ Workspace Summary โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n summary &&\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\n \"div\",\n { style: { ...S.sectionTitle, marginBottom: \"6px\" } },\n \"Workspace\"\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Packages\"),\n React.createElement(\n \"span\",\n { style: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(summary.workspace?.totalPackages ?? \"โ\")\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: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(summary.workspace?.totalFiles ?? \"โ\")\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: { color: \"#a1a1aa\", fontSize: \"11px\" } },\n String(summary.workspace?.totalClasses ?? \"โ\")\n )\n ),\n React.createElement(\n \"div\",\n { style: S.row },\n React.createElement(\"span\", { style: S.varKey }, \"Cache hit rate\"),\n React.createElement(\n \"span\",\n {\n style: {\n color: (summary.cache?.hitRate ?? 0) > 0.8 ? \"#34d399\" : \"#fbbf24\",\n fontSize: \"11px\",\n },\n },\n summary.cache ? `${(summary.cache.hitRate * 100).toFixed(0)}%` : \"โ\"\n )\n )\n ),\n\n // โโ Build Time History โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n React.createElement(\n \"div\",\n { style: S.section },\n React.createElement(\n \"div\",\n { style: { ...S.sectionTitle, marginBottom: \"6px\" } },\n `Build History (${history.length} snapshots)`\n ),\n renderHistoryChart()\n ),\n\n // โโ Timestamp โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n metrics.generatedAt &&\n React.createElement(\n \"div\",\n {\n style: {\n padding: \"6px 12px\",\n color: \"#3f3f46\",\n fontSize: \"10px\",\n textAlign: \"center\" as const,\n },\n },\n `Last update: ${new Date(metrics.generatedAt).toLocaleTimeString()}`\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 if (e.key === \"6\") setState((s) => (s.open ? { ...s, panel: \"trace\" } : 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 { id: \"trace\", label: \"Trace\", 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 state.panel === \"trace\" && React.createElement(TracePanel, 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-6 switch panel ยท Esc close\"\n : \"Ctrl+Shift+D close ยท 1-6 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\n// Export shared trace utilities for reuse across CLI, dashboard, and devtools\nexport type { TraceSnapshot, TraceSummary } from \"@tailwind-styled/shared\"\nexport {\n getHealthColor,\n getModeColor,\n formatMemory,\n formatDuration,\n getBuildTimeColor,\n getMemoryColor,\n getPipelinePercentages,\n}\n\n// โโ Class Inspector โ reusable surface (execution-log requirement) โโโโโโโโโโ\nexport {\n fetchClassInspection,\n formatClassInspectionCli,\n formatClassInspectionJson,\n type ClassInspectResult,\n type InspectorFetchOptions,\n} from \"./classInspector\"\n","/**\n * Class Inspector โ reusable surface inspection untuk DevTools.\n * Menggunakan inspectClass() dari @tailwind-styled/engine.\n *\n * Dipakai oleh:\n * - DevTools TracePanel โ class detail panel\n * - CLI `tw why <class>` โ terminal output\n * - Dashboard `/inspect?class=` endpoint\n *\n * Surface ini reusable sesuai requirement dari execution-log.\n */\n\nexport interface ClassInspectResult {\n className: string\n css: string\n properties: Array<{ property: string; value: string }>\n conflicts: string[]\n usedIn: string[]\n risk: \"low\" | \"medium\" | \"high\"\n bundleBytes: number\n fetchedAt: number\n}\n\nexport interface InspectorFetchOptions {\n /** Dashboard base URL (default: http://localhost:7421) */\n baseUrl?: string\n /** Timeout ms (default: 3000) */\n timeoutMs?: number\n}\n\n/**\n * Fetch inspection data untuk sebuah class dari dashboard server.\n * Dashboard server pakai inspectClass() dari engine secara internal.\n *\n * @example\n * // Di DevTools panel:\n * const result = await fetchClassInspection(\"flex\")\n * console.log(result.properties) // [{ property: \"display\", value: \"flex\" }]\n * console.log(result.usedIn) // [\"src/Button.tsx\"]\n */\nexport async function fetchClassInspection(\n className: string,\n opts: InspectorFetchOptions = {}\n): Promise<ClassInspectResult | null> {\n const { baseUrl = \"http://localhost:7421\", timeoutMs = 3000 } = opts\n\n const url = `${baseUrl}/inspect?class=${encodeURIComponent(className)}`\n\n try {\n const res = await fetch(url, { signal: AbortSignal.timeout(timeoutMs) })\n if (!res.ok) return null\n const data = await res.json()\n return {\n className,\n css: data.css ?? \"\",\n properties: data.properties ?? [],\n conflicts: data.conflicts ?? [],\n usedIn: data.usedIn ?? [],\n risk: data.risk ?? \"low\",\n bundleBytes: data.bundleBytes ?? 0,\n fetchedAt: Date.now(),\n }\n } catch {\n return null\n }\n}\n\n/** Format inspection result untuk CLI terminal output */\nexport function formatClassInspectionCli(result: ClassInspectResult): string {\n const lines: string[] = [\n `\\n Class: .${result.className}`,\n ` Risk: ${result.risk}`,\n ``,\n ]\n\n if (result.properties.length > 0) {\n lines.push(` CSS Properties:`)\n for (const p of result.properties) {\n lines.push(` ${p.property}: ${p.value}`)\n }\n lines.push(``)\n }\n\n if (result.usedIn.length > 0) {\n lines.push(` Used in ${result.usedIn.length} file(s):`)\n for (const f of result.usedIn.slice(0, 5)) {\n lines.push(` ${f}`)\n }\n if (result.usedIn.length > 5) {\n lines.push(` ... and ${result.usedIn.length - 5} more`)\n }\n lines.push(``)\n } else {\n lines.push(` โ ๏ธ Not found in workspace scan (dead code?)`)\n lines.push(``)\n }\n\n if (result.bundleBytes > 0) {\n lines.push(` Bundle contribution: ~${result.bundleBytes}B`)\n }\n\n if (result.conflicts.length > 0) {\n lines.push(` Conflicts: ${result.conflicts.join(\", \")}`)\n }\n\n return lines.join(\"\\n\")\n}\n\n/** Format for JSON output (CLI --json flag) */\nexport function formatClassInspectionJson(result: ClassInspectResult): string {\n return JSON.stringify(result, null, 2)\n}\n"],"mappings":"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","names":["React"]}
|