{"version":3,"sources":["../packages/domain/runtime-css/dist/batched.cjs","../packages/domain/core/src/twProxy.ts","../packages/domain/core/src/createComponent.ts","../packages/domain/core/src/native.browser.ts","../packages/domain/core/src/containerQuery.ts","../packages/domain/core/src/mergeFallback.ts","../packages/domain/core/src/merge.ts","../packages/domain/core/src/parseTemplateFallback.ts","../packages/domain/core/src/stateEngine.ts","../packages/domain/core/src/cv.ts","../packages/domain/core/src/cx.ts","../packages/domain/core/src/styledSystem.ts","../packages/domain/core/src/styled.ts","../packages/domain/core/src/twTheme.ts","../packages/domain/theme/src/liveTokenEngine.ts","../packages/domain/core/src/registry.ts"],"sourcesContent":["\"use strict\";\n\"use client\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/batchedInjector.ts\nvar batchedInjector_exports = {};\n__export(batchedInjector_exports, {\n  batchedInject: () => batchedInject,\n  flushBatchedCss: () => flushBatchedCss,\n  getBatchedCssStats: () => getBatchedCssStats,\n  isInjected: () => isInjected,\n  resetBatchedCss: () => resetBatchedCss,\n  syncInject: () => syncInject\n});\nmodule.exports = __toCommonJS(batchedInjector_exports);\nvar injected = /* @__PURE__ */ new Set();\nvar pending = [];\nvar _state = {\n  rafHandle: null,\n  styleEl: null\n};\nfunction getStyleElement() {\n  if (_state.styleEl && document.head.contains(_state.styleEl)) return _state.styleEl;\n  _state.styleEl = document.createElement(\"style\");\n  _state.styleEl.id = \"__tw-runtime-css\";\n  _state.styleEl.setAttribute(\"data-tw-batched\", \"true\");\n  document.head.appendChild(_state.styleEl);\n  return _state.styleEl;\n}\nfunction insertRuleToSheet(cssRule) {\n  const trimmed = cssRule.trim();\n  if (!trimmed) return;\n  const el = getStyleElement();\n  const sheet = el.sheet;\n  if (sheet) {\n    try {\n      sheet.insertRule(trimmed, sheet.cssRules.length);\n      return;\n    } catch {\n      if (process.env.NODE_ENV === \"development\") {\n        console.warn(\"[tw] insertRule failed, falling back to textContent append for rule:\", trimmed.slice(0, 80));\n      }\n    }\n  }\n  el.textContent = (el.textContent ?? \"\") + `\n${trimmed}`;\n}\nfunction batchedInject(cssRule) {\n  if (typeof window === \"undefined\") return;\n  if (!cssRule || injected.has(cssRule)) return;\n  injected.add(cssRule);\n  pending.push(cssRule);\n  if (_state.rafHandle === null) {\n    _state.rafHandle = requestAnimationFrame(flushBatchedCss);\n  }\n}\nfunction flushBatchedCss() {\n  _state.rafHandle = null;\n  if (pending.length === 0 || typeof document === \"undefined\") return;\n  const rules = pending.splice(0);\n  for (const rule of rules) {\n    insertRuleToSheet(rule);\n  }\n}\nfunction syncInject(cssRule) {\n  if (typeof document === \"undefined\") return;\n  if (!cssRule || injected.has(cssRule)) return;\n  injected.add(cssRule);\n  insertRuleToSheet(cssRule);\n}\nfunction isInjected(cssRule) {\n  return injected.has(cssRule);\n}\nfunction resetBatchedCss() {\n  injected.clear();\n  pending.length = 0;\n  if (_state.rafHandle !== null) {\n    cancelAnimationFrame(_state.rafHandle);\n    _state.rafHandle = null;\n  }\n  if (typeof document !== \"undefined\" && _state.styleEl && document.head.contains(_state.styleEl)) {\n    document.head.removeChild(_state.styleEl);\n    _state.styleEl = null;\n  } else {\n    _state.styleEl = null;\n  }\n}\nfunction getBatchedCssStats() {\n  return {\n    totalInjected: injected.size,\n    pendingCount: pending.length,\n    hasBatchScheduled: _state.rafHandle !== null\n  };\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  batchedInject,\n  flushBatchedCss,\n  getBatchedCssStats,\n  isInjected,\n  resetBatchedCss,\n  syncInject\n});\n","/**\n * tailwind-styled-v4 v2 — tw\n *\n * API:\n *   tw.div`p-4 bg-zinc-900`\n *   tw.button`px-4 [icon] { h-4 w-4 }`   ← sub-components inline\n *   tw.button({ base: \"px-4\", variants: { size: { sm: \"text-sm\" } } })\n *   tw(Link)`underline text-blue-400`\n *   tw.server.div`p-4`   ← server-only, compiler enforced + runtime dev warning\n */\n\nimport React from \"react\"\nimport { createComponent } from \"./createComponent\"\nimport { getNativeBinding } from \"./native\"\nimport { parseTemplateJs } from \"./parseTemplateFallback\"\nimport type {\n  ComponentConfig,\n  TwComponentFactory,\n  TwObject,\n  TwServerObject,\n  TwStyledComponent,\n  TwTagFactory,\n  TwTagFactoryAny,\n  InferSubFromConfig,\n} from \"./types\"\n\n// types.ts is single source of truth — re-export for consumers\nexport type { TwComponentFactory, TwObject, TwServerObject, TwTagFactory }\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Template parser\n// ─────────────────────────────────────────────────────────────────────────────\n\ninterface ParsedTemplate {\n  /** Base classes — tanpa sub-component blocks */\n  base: string\n  /** Sub-component map: { icon: \"h-4 w-4 ...\", badge: \"px-2 ...\" } */\n  subs: Record<string, string>\n  /** Ada sub-component atau tidak */\n  hasSubs: boolean\n}\n\n// Cache untuk parseTemplate — raw template string tidak berubah antar hot reloads\nconst _parsedTemplateCache = new Map<string, ParsedTemplate>()\n\n/**\n * parseTemplate — native-only. Selalu di-handle compiler Rust untuk static\n * template literals. Dynamic template (${...}) tetap butuh native binding\n * di server; di browser bukan valid use case.\n */\nfunction parseTemplate(strings: TemplateStringsArray, exprs: unknown[]): ParsedTemplate {\n  const raw = strings.raw.reduce((acc, str, i) => {\n    const expr = exprs[i]\n    const exprStr = typeof expr === \"function\" ? \"\" : (expr ?? \"\")\n    return acc + str + String(exprStr)\n  }, \"\")\n\n  const cached = _parsedTemplateCache.get(raw)\n  if (cached) return cached\n\n  const binding = getNativeBinding()\n  if (!binding?.parseTemplate) {\n    // Browser fallback — pure-TS parser untuk template literal\n    const fb = parseTemplateJs(raw)\n    const result: ParsedTemplate = { base: fb.base, subs: fb.subs, hasSubs: fb.hasSubs }\n    _parsedTemplateCache.set(raw, result)\n    return result\n  }\n\n  const r = binding.parseTemplate(raw)\n  const subs: Record<string, string> = r.hasSubs ? JSON.parse(r.subsJson) : {}\n  const result: ParsedTemplate = { base: r.base, subs, hasSubs: r.hasSubs }\n\n  _parsedTemplateCache.set(raw, result)\n  return result\n}\n\ntype RuntimeTagFactory = {\n  // Template literal overload\n  (strings: TemplateStringsArray, ...exprs: unknown[]): TwStyledComponent<ComponentConfig, string, Record<string, never>, any>\n  // Object config overload — properly typed dengan config object literal inference\n  <C extends ComponentConfig>(config: C): TwStyledComponent<\n    C,\n    InferSubFromConfig<C>,\n    any,\n    any\n  >\n} & TwTagFactoryAny\n\n// ─────────────────────────────────────────────────────────────────────────────\n// makeTag\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction makeTag(tag: React.ElementType): RuntimeTagFactory {\n  // Function implementation yang handle both overloads\n  const impl = ((\n    stringsOrConfig: TemplateStringsArray | ComponentConfig,\n    ...exprs: unknown[]\n  ): any => {\n    // Object config path\n    if (\n      !Array.isArray(stringsOrConfig) &&\n      typeof stringsOrConfig === \"object\" &&\n      stringsOrConfig !== null &&\n      !(\"raw\" in stringsOrConfig)\n    ) {\n      // Config object — createComponent properly infer TConfig\n      return createComponent(tag, stringsOrConfig as ComponentConfig)\n    }\n\n    // Template literal path — TypeScript now knows it's TemplateStringsArray\n    // because we eliminated the config branch above via type guard\n    const strings = stringsOrConfig as TemplateStringsArray\n    const parsed = parseTemplate(strings, exprs)\n\n    // Buat component dari base classes\n    const component = createComponent(tag, parsed.base)\n\n    // Attach sub-components sebagai React.FC dari classes yang di-extract\n    if (parsed.hasSubs) {\n      for (const [name, classes] of Object.entries(parsed.subs)) {\n        // Setiap sub-component adalah styled span/div dengan classesnya\n        const SubComp = React.forwardRef<\n          HTMLSpanElement,\n          { children?: React.ReactNode; className?: string }\n        >(({ children, className }, ref) =>\n          React.createElement(\"span\", {\n            ref,\n            className: className ? `${classes} ${className}` : classes,\n          }, children)\n        )\n        SubComp.displayName = `tw.${typeof tag === \"string\" ? tag : \"component\"}.${name}`;\n        ; (component as unknown as Record<string, unknown>)[name] = SubComp\n      }\n    }\n\n    return component\n  }) as RuntimeTagFactory\n\n  return impl\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// HTML tag list\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst HTML_TAGS = [\n  \"html\", \"head\", \"body\",\n  \"div\", \"section\", \"article\", \"aside\", \"header\", \"footer\", \"main\", \"nav\",\n  \"figure\", \"figcaption\", \"details\", \"summary\",\n  \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\",\n  \"p\", \"span\", \"strong\", \"em\", \"b\", \"i\", \"s\", \"u\", \"small\", \"mark\",\n  \"abbr\", \"cite\", \"code\", \"kbd\", \"samp\", \"var\", \"time\", \"address\",\n  \"blockquote\", \"q\", \"del\", \"ins\", \"sub\", \"sup\",\n  \"ul\", \"ol\", \"li\", \"dl\", \"dt\", \"dd\",\n  \"table\", \"thead\", \"tbody\", \"tfoot\", \"tr\", \"th\", \"td\", \"caption\",\n  \"colgroup\", \"col\",\n  \"img\", \"picture\", \"video\", \"audio\", \"source\", \"track\",\n  \"canvas\", \"svg\", \"path\", \"circle\", \"rect\", \"line\",\n  \"polyline\", \"polygon\", \"g\", \"defs\", \"use\", \"symbol\",\n  \"form\", \"input\", \"textarea\", \"select\", \"option\", \"optgroup\",\n  \"button\", \"label\", \"fieldset\", \"legend\", \"output\",\n  \"progress\", \"meter\", \"datalist\",\n  \"a\", \"area\", \"map\", \"iframe\", \"embed\", \"object\",\n  \"pre\", \"hr\", \"br\", \"wbr\", \"dialog\", \"menu\", \"template\", \"slot\",\n] as const\n\n// ─────────────────────────────────────────────────────────────────────────────\n// tw.server — server-only namespace with dev warning\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction makeServerTag(tag: React.ElementType): RuntimeTagFactory {\n  const baseFactory = makeTag(tag)\n  if (typeof window !== \"undefined\" && process.env.NODE_ENV !== \"production\") {\n    return ((\n      stringsOrConfig: TemplateStringsArray | ComponentConfig,\n      ...exprs: unknown[]\n    ): TwStyledComponent<ComponentConfig, string> => {\n      const tagName =\n        typeof tag === \"string\"\n          ? tag\n          : ((tag as { displayName?: string }).displayName ?? \"Component\")\n      console.warn(\n        `[tailwind-styled-v4] tw.server.${tagName} rendered in browser. ` +\n        `Ensure withTailwindStyled or Vite plugin is configured.`\n      )\n      // Call baseFactory dengan proper type narrowing — both overloads supported\n      return (baseFactory as any)(stringsOrConfig, ...exprs)\n    }) as RuntimeTagFactory\n  }\n  return baseFactory\n}\n\nconst serverFactories: Record<string, RuntimeTagFactory> = {}\nfor (const tag of HTML_TAGS) {\n  serverFactories[tag] = makeServerTag(tag as React.ElementType)\n}\n\nexport const server: TwServerObject = serverFactories as unknown as TwServerObject\n\n// ─────────────────────────────────────────────────────────────────────────────\n// tw — main export\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst tagFactories: Record<string, RuntimeTagFactory> = {}\nfor (const tag of HTML_TAGS) {\n  tagFactories[tag] = makeTag(tag as React.ElementType)\n}\n\nfunction twCallable(component: React.ComponentType<unknown>) {\n  return makeTag(component)\n}\n\nexport const tw: TwObject = Object.assign(twCallable, tagFactories, {\n  server,\n}) as unknown as TwObject","// AnimateOptions loaded dynamically to avoid bundling @tailwind-styled/animate\ntype AnimateOptions = { from: string; to: string; duration?: number; easing?: string; delay?: number; fill?: string; iterations?: number | \"infinite\"; direction?: string; name?: string }\nimport React from \"react\"\n\nimport { processContainer } from \"./containerQuery\"\nimport { twMerge } from \"./merge\"\nimport { getNativeBinding } from \"./native\"\nimport { parseTemplateJs } from \"./parseTemplateFallback\"\nimport { processState } from \"./stateEngine\"\nimport type { ComponentConfig, InferSubFromConfig, SubValue, TwStyledComponent } from \"./types\"\n\nconst ALWAYS_BLOCKED = new Set([\"base\", \"_ref\", \"state\", \"container\", \"containerName\"])\n\n// ── Template parse cache ──────────────────────────────────────────────────────\n// parseSubcomponentBlocksNapi + JSON.parse sebelumnya dipanggil ulang setiap\n// render (extractBaseClasses + parseSubComponentBlocks dipanggil dari render path).\n// Cache ini memastikan Rust hanya dipanggil SEKALI per unique template string.\n// Template string dari tw.div({ base: \"...\" }) tidak berubah antar render,\n// jadi cache ini practically never evicted selama app berjalan.\ninterface _ParsedTemplate {\n  baseClasses: string\n  subMap: Map<string, string>\n}\nconst _templateParseCache = new Map<string, _ParsedTemplate>()\n\n// Cache untuk statesLookup — key: JSON.stringify(statesConfig sorted)\n// Menghindari Rust pregenerateStatesNapi + JSON.parse ulang untuk config identik\ninterface _StatesLookupEntry { lookup: Record<number, string>; keys: string[] }\nconst _statesLookupCache = new Map<string, _StatesLookupEntry>()\n\n// Regex untuk detect sub-component block syntax: [name] { ... }\n// Berbeda dari arbitrary Tailwind values (word-[value]) karena tidak ada hyphen sebelum [\nconst _SUB_BLOCK_RE = /(?:^|[\\s])(\\[\\w[\\w-]*\\])\\s*\\{/\n\nfunction _getParsedTemplate(template: string): _ParsedTemplate {\n  const cached = _templateParseCache.get(template)\n  if (cached) return cached\n\n  // Fast path: tidak ada sub-component block syntax — skip native entirely.\n  // Template literal Tailwind biasa (bg-blue-500, w-[100px], dll) tidak akan match.\n  // Path ini aman di browser karena tidak butuh native.\n  if (!_SUB_BLOCK_RE.test(template)) {\n    const result: _ParsedTemplate = {\n      baseClasses: template.trim().replace(/\\s+/g, \" \"),\n      subMap: new Map(),\n    }\n    _templateParseCache.set(template, result)\n    return result\n  }\n\n  // Template punya sub-block syntax → prefer native Rust, fallback ke pure-TS\n  const native = getNativeBinding()\n  if (!native?.parseSubcomponentBlocksNapi) {\n    // Browser fallback — pure-TS parser (mirrors Rust output)\n    const fb = parseTemplateJs(template)\n    const result: _ParsedTemplate = {\n      baseClasses: fb.base,\n      subMap: new Map(Object.entries(fb.subs)),\n    }\n    _templateParseCache.set(template, result)\n    return result\n  }\n  const r = native.parseSubcomponentBlocksNapi(template, \"tw\")\n  const raw = JSON.parse(r.subMapJson) as Record<string, string>\n  const result: _ParsedTemplate = {\n    baseClasses: r.baseClasses.trim().replace(/\\s+/g, \" \"),\n    subMap: new Map(Object.entries(raw)),\n  }\n  _templateParseCache.set(template, result)\n  return result\n}\n\n/**\n * Extract sub-component blocks dari template → Map<name, classes>\n * Cache-first: Rust + JSON.parse hanya dipanggil SEKALI per template string.\n */\nfunction parseSubComponentBlocks(template: string): Map<string, string> {\n  return _getParsedTemplate(template).subMap\n}\n\n/**\n * Strip semua sub-component blocks dari template string → base class string.\n * Cache-first: Rust hanya dipanggil SEKALI per template string.\n */\nfunction extractBaseClasses(template: string): string {\n  return _getParsedTemplate(template).baseClasses\n}\n\n// Valid HTML semantic tags yang otomatis di-detect dari key name\nconst SEMANTIC_HTML_TAGS = new Set([\n  \"article\", \"aside\", \"details\", \"figcaption\", \"figure\",\n  \"footer\", \"header\", \"main\", \"mark\", \"nav\", \"section\", \"summary\", \"time\",\n  \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\",\n  \"p\", \"ul\", \"ol\", \"li\", \"dl\", \"dt\", \"dd\",\n  \"table\", \"thead\", \"tbody\", \"tfoot\", \"tr\", \"th\", \"td\",\n  \"form\", \"fieldset\", \"legend\", \"label\",\n  \"a\", \"button\", \"img\", \"span\", \"div\",\n  \"blockquote\", \"pre\", \"code\", \"em\", \"strong\", \"small\",\n])\n\n/**\n * Parse sub-component key — support dua format:\n *\n * 1. \"tag:name\"  → tag HTML explicit, nama component = name\n *    contoh: \"header:topBar\" → tag=header, componentName=topBar\n *\n * 2. \"name\"      → cek apakah nama adalah valid HTML tag\n *    contoh: \"header\" → tag=header, componentName=header\n *    contoh: \"icon\"   → tag=span (fallback), componentName=icon\n */\nfunction parseSubKey(key: string): { tag: string; componentName: string } {\n  const colonIdx = key.indexOf(\":\")\n  if (colonIdx !== -1) {\n    const tag = key.slice(0, colonIdx).trim()\n    const componentName = key.slice(colonIdx + 1).trim()\n    return { tag: tag || \"span\", componentName: componentName || tag }\n  }\n  const isSemanticTag = SEMANTIC_HTML_TAGS.has(key)\n  return { tag: isSemanticTag ? key : \"span\", componentName: key }\n}\n\n/**\n * Buat sub-component React FC dengan classes-nya sendiri.\n * Support tag override dan asChild pattern.\n *\n * @param tag - HTML tag yang dirender, default \"span\"\n * @param asChild - jika true, merge className ke direct child element\n */\nfunction createSubComponentAccessor(\n  parentDisplayName: string,\n  name: string,\n  classes: string,\n  tag: string = \"span\",\n  asChild: boolean = false\n): React.FC<{ children?: React.ReactNode; className?: string;[key: string]: unknown }> {\n  const SubComponent: React.FC<{ children?: React.ReactNode; className?: string;[key: string]: unknown }> = ({\n    children,\n    className,\n    ...rest  // tangkap semua native HTML props (href, onClick, src, alt, dll)\n  }) => {\n    const mergedClass = className ? `${classes} ${className}` : classes\n\n    // asChild: clone direct child element dan merge className + rest ke dalamnya\n    if (asChild && React.isValidElement(children)) {\n      const child = React.Children.only(children) as React.ReactElement<{ className?: string }>\n      return React.cloneElement(child, {\n        ...rest,\n        className: child.props.className\n          ? `${mergedClass} ${child.props.className}`\n          : mergedClass,\n      })\n    }\n\n    // Teruskan semua extra props ke elemen DOM (href, onClick, target, src, dll)\n    return React.createElement(tag, { ...rest, className: mergedClass }, children)\n  }\n  SubComponent.displayName = `${parentDisplayName}[${name}]`\n  return SubComponent\n}\n\n/** Register semua sub-components ke component object.\n * Sumber: (1) config.sub object — prioritas utama, TypeScript infer keys-nya.\n *         (2) parseSubComponentBlocks dari template string — fallback untuk template literal syntax.\n *\n * config.sub value bisa berupa:\n *   - string: \"font-bold text-lg\" → render sebagai <span>\n *   - SubComponentConfig: { classes: \"...\", tag: \"header\", asChild: false }\n */\nfunction registerSubComponents<P extends object>(\n  component: TwStyledComponent<P>,\n  template: string,\n  configSub?: Record<string, SubValue>\n): void {\n  const displayName = component.displayName ?? \"tw\"\n  const map = component as unknown as Record<string, unknown>\n\n  // Priority 1: config.sub object — explicit, fully typed\n  if (configSub) {\n    for (const [key, value] of Object.entries(configSub)) {\n      if (typeof value === \"string\") {\n        // String value — pakai parseSubKey untuk detect semantic tag dari key\n        const { tag, componentName } = parseSubKey(key)\n        map[componentName] = createSubComponentAccessor(\n          displayName, componentName, value.trim().replace(/\\s+/g, \" \"), tag\n        )\n      } else if (\"base\" in value || \"variants\" in value) {\n        // SubComponentConfig dengan potentially variants — direct nested component\n        // value sendiri yang adalah ComponentConfig, bukan map lagi\n        map[key] = createComponent(\"div\", value as ComponentConfig)\n      } else {\n        // Plain nested object — key adalah HTML tag, nested keys adalah component names\n        // contoh: h2: { title: \"text-xl\", subtitle: \"text-lg\" }\n        // → Card.title renders <h2>, Card.subtitle renders <h2>\n        const tag = key\n        for (const [componentName, classesOrConfig] of Object.entries(value)) {\n          if (typeof classesOrConfig === \"string\") {\n            map[componentName] = createSubComponentAccessor(\n              displayName, componentName, classesOrConfig.trim().replace(/\\s+/g, \" \"), tag\n            )\n          } else {\n            // SubComponentConfig nested di dalam nested object\n            map[componentName] = createComponent(tag as React.ElementType, classesOrConfig as ComponentConfig)\n          }\n        }\n      }\n    }\n  }\n\n  // Priority 2: template block parsing — untuk template literal syntax\n  const blocks = parseSubComponentBlocks(template)\n  for (const [name, classes] of blocks) {\n    if (!(name in map)) {\n      map[name] = createSubComponentAccessor(displayName, name, classes)\n    }\n  }\n}\n\nimport type { InferVariantProps, InferStatesProps } from \"./types\"\n\n// Props yang diterima component saat render — typed dari config user\ntype RuntimeProps<TConfig extends ComponentConfig, TTag extends React.ElementType> =\n  InferVariantProps<TConfig> &\n  InferStatesProps<TConfig> &\n  React.ComponentPropsWithoutRef<TTag> &  // All native HTML props + ARIA from React's types\n  Record<string, unknown>  // Allow any other props (forward ke DOM)\n\nfunction normalizeClassName(value: unknown): string | undefined {\n  return typeof value === \"string\" ? value : undefined\n}\n\nfunction makeFilterProps(variantKeys: Set<string>, stateKeys: Set<string> = new Set()) {\n  return function filterProps(props: Record<string, unknown>): Record<string, unknown> {\n    const out: Record<string, unknown> = {}\n    for (const key in props) {\n      if (variantKeys.has(key)) continue\n      if (stateKeys.has(key)) continue   // states dari config user — tidak diteruskan ke DOM\n      if (key.startsWith(\"$\")) continue\n      if (ALWAYS_BLOCKED.has(key)) continue\n      out[key] = props[key]\n    }\n    return out\n  }\n}\n\nfunction resolveVariants(\n  variants: Record<string, Record<string | \"true\" | \"false\", string>>,\n  props: Record<string, unknown>,\n  defaults: Record<string, string | number | boolean>\n): string {\n  // Only include declared variant keys — prevents non-variant props (e.g. `selected`, `disabled`)\n  // from leaking into the resolver and causing SSR/client hydration mismatches.\n  // The Rust binding and JS fallback must receive identical, variant-scoped props.\n  const variantKeys = Object.keys(variants)\n  const cleanProps: Record<string, string> = {}\n  for (const k of variantKeys) {\n    const v = props[k]\n    if (v !== undefined && v !== null) cleanProps[k] = String(v)\n  }\n\n  // TAMBAHKAN: pure-TS fallback untuk browser\n  const binding = getNativeBinding()\n  if (!binding?.resolveSimpleVariants) {\n    // Browser fallback: manual variant lookup\n    const classes: string[] = []\n    for (const key of Object.keys(variants)) {\n      const propValue = cleanProps[key] ?? String(defaults[key])\n      if (propValue !== undefined && variants[key]?.[propValue]) {\n        classes.push(variants[key][propValue])\n      }\n    }\n    return classes.join(\" \").trim().replace(/\\s+/g, \" \")\n  }\n  // Server path — TIDAK DIUBAH: tetap call native\n  return binding.resolveSimpleVariants(null, variants as Record<string, Record<string, string>>, defaults as Record<string, string>, cleanProps).trim().replace(/\\s+/g, \" \")\n}\n\n/**\n * Resolve states bitmask dari props → lookup class string.\n * O(1) — hitung bitmask dari boolean props, lookup di pre-generated table.\n *\n * Fallback: kalau lookup tidak tersedia, cx() runtime.\n */\nfunction resolveStates(\n  statesConfig: Record<string, string>,\n  stateKeys: string[],\n  statesLookup: Record<number, string> | null,\n  props: Record<string, unknown>\n): string {\n  // Fast path: pre-generated bitmask lookup (Rust) — O(1)\n  // Rust binary v5.0.6-canary.0.0.51+ uses join (not twMerge) so ring-2 + ring-blue-500\n  // are both preserved correctly.\n  if (statesLookup && stateKeys.length > 0) {\n    let mask = 0\n    for (let i = 0; i < stateKeys.length; i++) {\n      if (props[stateKeys[i]]) mask |= (1 << i)\n    }\n    return statesLookup[mask] ?? \"\"\n  }\n\n  // Fallback: runtime join — additive, no conflict resolution\n  const activeClasses = stateKeys\n    .filter(k => props[k])\n    .map(k => statesConfig[k])\n    .filter(Boolean)\n\n  return activeClasses.join(\" \")\n}\n\nfunction resolveCompound(\n  compounds: ReadonlyArray<{ readonly class: string; readonly [key: string]: unknown }>,\n  props: Record<string, unknown>\n): string {\n  const classes: string[] = []\n  for (const compound of compounds) {\n    const { class: compoundClass, ...conditions } = compound as {\n      class: string\n      [key: string]: unknown\n    }\n    const matches = Object.entries(conditions).every(([key, value]) => props[key] === value)\n    if (matches) {\n      classes.push(compoundClass)\n    }\n  }\n  return classes.join(\" \")\n}\n\n/** Carry over subcomponent keys from source to target (exclude internal methods) */\nfunction carryOverSubComponents<P extends object>(\n  target: TwStyledComponent<P>,\n  source: TwStyledComponent<P>\n): void {\n  const INTERNAL_KEYS = new Set([\"extend\", \"withVariants\", \"animate\", \"withSub\", \"displayName\"])\n  for (const key of Object.keys(source)) {\n    if (!INTERNAL_KEYS.has(key)) {\n      ; (target as unknown as Record<string, unknown>)[key] = (source as unknown as Record<string, unknown>)[key]\n    }\n  }\n}\n\nfunction attachExtend<TConfig extends ComponentConfig>(\n  component: TwStyledComponent<TConfig, string>,\n  originalTag: React.ElementType,\n  base: string,\n  config: ComponentConfig\n): TwStyledComponent<TConfig, string> {\n  /**\n   * Extend component dengan extra classes (template literal).\n   *\n   * @example\n   * const PrimaryBtn = Button.extend`bg-blue-500 text-white`\n   */\n  function extendWithClasses(strings: TemplateStringsArray): TwStyledComponent<TConfig, string>\n  /**\n   * Extend component dengan extra classes + variant overrides (object).\n   * Ini menyelesaikan gap desain yang disebutkan di CRITIQUE-20 #2.\n   *\n   * @example\n   * // Extend classes DAN tambah variant sekaligus\n   * const BigDangerBtn = Button.extend({\n   *   classes: \"text-lg px-8\",\n   *   variants: { loading: { true: \"opacity-50\" } },\n   *   defaultVariants: { loading: \"false\" }\n   * })\n   */\n  function extendWithClasses(extendConfig: {\n    classes?: string\n    variants?: ComponentConfig[\"variants\"]\n    defaultVariants?: ComponentConfig[\"defaultVariants\"]\n    compoundVariants?: ComponentConfig[\"compoundVariants\"]\n  }): TwStyledComponent<TConfig, string>\n  function extendWithClasses(\n    stringsOrConfig: TemplateStringsArray | {\n      classes?: string\n      variants?: ComponentConfig[\"variants\"]\n      defaultVariants?: ComponentConfig[\"defaultVariants\"]\n      compoundVariants?: ComponentConfig[\"compoundVariants\"]\n    }\n  ): TwStyledComponent<TConfig, string> {\n    // Template literal path\n    if (Array.isArray(stringsOrConfig) && \"raw\" in stringsOrConfig) {\n      const rawExtra = (stringsOrConfig as TemplateStringsArray).raw.join(\"\").trim().replace(/\\s+/g, \" \")\n      // Strip sub-blocks from both sides before merging base classes\n      const merged = twMerge(extractBaseClasses(base), extractBaseClasses(rawExtra))\n      const extended = createComponent(\n        originalTag,\n        typeof config === \"string\" ? merged : { ...config, base: merged }\n      )\n      // Carry over parent sub-components first, then apply overrides from extend template\n      carryOverSubComponents(extended as unknown as TwStyledComponent<ComponentConfig, string>, component as unknown as TwStyledComponent<ComponentConfig, string>)\n      const extendSubBlocks = parseSubComponentBlocks(rawExtra)\n      if (extendSubBlocks.size > 0) {\n        const extComp = extended as unknown as Record<string, unknown>\n        const displayName = extended.displayName ?? \"tw\"\n        for (const [subName, subClasses] of extendSubBlocks) {\n          extComp[subName] = createSubComponentAccessor(displayName, subName, subClasses)\n        }\n      }\n      return extended as unknown as TwStyledComponent<TConfig, string>\n    }\n\n    // Object config path — support extend + withVariants in one call\n    const extCfg = stringsOrConfig as {\n      classes?: string\n      variants?: ComponentConfig[\"variants\"]\n      defaultVariants?: ComponentConfig[\"defaultVariants\"]\n      compoundVariants?: ComponentConfig[\"compoundVariants\"]\n    }\n    const extraClasses = extCfg.classes ?? \"\"\n    const merged = twMerge(extractBaseClasses(base), extraClasses)\n    const existing = typeof config === \"object\" ? config : {}\n    const extended = createComponent(originalTag, {\n      ...existing,\n      base: merged,\n      variants: { ...(existing.variants ?? {}), ...(extCfg.variants ?? {}) },\n      compoundVariants: [\n        ...(existing.compoundVariants ?? []),\n        ...(extCfg.compoundVariants ?? []),\n      ],\n      defaultVariants: {\n        ...(existing.defaultVariants ?? {}),\n        ...(extCfg.defaultVariants ?? {}),\n      },\n    })\n    carryOverSubComponents(extended as unknown as TwStyledComponent<ComponentConfig, string>, component as unknown as TwStyledComponent<ComponentConfig, string>)\n    return extended as unknown as TwStyledComponent<TConfig, string>\n  }\n\n  component.extend = extendWithClasses as TwStyledComponent<TConfig, string>[\"extend\"]\n\n  component.withVariants = ((newConfig: Partial<ComponentConfig>) => {\n    const existing = typeof config === \"object\" ? config : {}\n    return createComponent(originalTag, {\n      ...existing,\n      base,\n      variants: { ...(existing.variants ?? {}), ...(newConfig.variants ?? {}) },\n      compoundVariants: [\n        ...(existing.compoundVariants ?? []),\n        ...(newConfig.compoundVariants ?? []),\n      ],\n      defaultVariants: {\n        ...(existing.defaultVariants ?? {}),\n        ...(newConfig.defaultVariants ?? {}),\n      },\n    }) as unknown as TwStyledComponent<TConfig, string>\n  }) as TwStyledComponent<TConfig, string>[\"withVariants\"]\n\n  // .animate() dipindah ke tailwind-styled-v4/animate agar tidak bundle @tailwind-styled/animate\n  // ke dalam main browser bundle (animate butuh Rust native binding → Node.js only)\n  // Note: animate functionality removed from core, use @tailwind-styled/animate package instead\n\n  // .withSub<\"icon\" | \"badge\">() — declare sub-component names untuk TypeScript\n  // Runtime: no-op, hanya untuk type inference\n  component.withSub = (() => component) as TwStyledComponent<TConfig, string>[\"withSub\"]\n\n  return component\n}\n\nexport function createComponent<TConfig extends ComponentConfig>(\n  tag: React.ElementType,\n  config: TConfig | string\n): TwStyledComponent<TConfig, InferSubFromConfig<TConfig>> {\n  const isStatic = typeof config === \"string\"\n  const base = typeof config === \"string\" ? config : (config.base ?? \"\")\n  const variants = typeof config === \"string\" ? {} : (config.variants ?? {}) as Record<string, Record<string, string>>\n  const compoundVariants = typeof config === \"string\" ? [] : (config.compoundVariants ?? [])\n  const defaultVariants = typeof config === \"string\" ? {} : (config.defaultVariants ?? {})\n  const stateConfig = typeof config === \"string\" ? undefined : config.state\n  const containerConfig = typeof config === \"string\" ? undefined : config.container\n  const containerName = typeof config === \"string\" ? undefined : config.containerName\n  const configSub = typeof config === \"string\" ? undefined : config.sub\n  const statesConfig = typeof config === \"string\" ? undefined : config.states\n\n  // Pre-generate states bitmask lookup via Rust (build time).\n  // Cache key: sorted JSON dari statesConfig — statesConfig tidak berubah antar\n  // createComponent calls dengan config yang sama (mis. HMR), jadi cache ini\n  // menghindari JSON.parse + Rust call ulang untuk config identik.\n  let statesLookup: Record<number, string> | null = null\n  let stateKeys: string[] = []\n  if (statesConfig && Object.keys(statesConfig).length > 0) {\n    stateKeys = Object.keys(statesConfig)\n    const statesCacheKey = JSON.stringify(statesConfig, Object.keys(statesConfig).sort())\n    const cachedStates = _statesLookupCache.get(statesCacheKey)\n    if (cachedStates) {\n      statesLookup = cachedStates.lookup\n      stateKeys = cachedStates.keys\n    } else {\n      try {\n        const native = getNativeBinding()\n        if (native?.pregenerateStatesNapi) {\n          const result = native.pregenerateStatesNapi(statesConfig)\n          // JSON.parse sekali — disimpan di cache, tidak pernah di-parse ulang\n          statesLookup = JSON.parse(result.lookupJson) as Record<number, string>\n          stateKeys = result.stateKeys\n          _statesLookupCache.set(statesCacheKey, { lookup: statesLookup, keys: stateKeys })\n        }\n      } catch (e) {\n        console.warn(\"[tailwind-styled-v4] states pre-generation failed, falling back to runtime cx()\", e)\n      }\n    }\n  }\n\n  const stateResult = stateConfig\n    ? processState(\n      typeof tag === \"string\" ? tag : \"component\",\n      stateConfig,\n      // Pakai pre-computed hash dari turbopackLoader (Rust inject_state_hash)\n      // kalau tersedia — skip runtime hashState() computation sepenuhnya\n      (config as { __hash?: string }).__hash\n    )\n    : null\n  const containerResult = containerConfig\n    ? processContainer(typeof tag === \"string\" ? tag : \"component\", containerConfig, containerName)\n    : null\n\n  const engineClasses = [stateResult?.stateClass, containerResult?.containerClass]\n    .filter(Boolean)\n    .join(\" \")\n\n  const filterProps = makeFilterProps(new Set(Object.keys(variants)), new Set(stateKeys))\n  const tagLabel =\n    typeof tag === \"string\" ? tag : ((tag as { displayName?: string }).displayName ?? \"Component\")\n\n  if (isStatic || Object.keys(variants).length === 0) {\n    const baseComponent = React.forwardRef<unknown, RuntimeProps<TConfig, typeof tag>>((props, ref) => {\n      const { className, ...rest } = props\n      const runtimeClassName = normalizeClassName(className)\n      const statesClasses = statesConfig\n        ? resolveStates(statesConfig, stateKeys, statesLookup, props)\n        : \"\"\n      // statesClasses appended AFTER twMerge to prevent conflict resolution\n      // from removing valid class combinations like ring-2 + ring-blue-500\n      const mergedBase = twMerge(extractBaseClasses(base), engineClasses, runtimeClassName)\n      const className2 = statesClasses ? `${mergedBase} ${statesClasses}`.trim() : mergedBase\n      return React.createElement(tag, {\n        ref,\n        ...filterProps(rest),\n        className: className2,\n      })\n    })\n\n    const component = baseComponent as unknown as TwStyledComponent<TConfig, InferSubFromConfig<TConfig>>\n    component.displayName = `tw.${tagLabel}`\n    const result = attachExtend<TConfig>(component as unknown as TwStyledComponent<TConfig, string>, tag, base, config as ComponentConfig)\n    registerSubComponents(result, base, configSub)\n    return wrapWithSubProxy(result, tagLabel)\n  }\n\n  const baseComponent = React.forwardRef<unknown, RuntimeProps<TConfig, typeof tag>>((props, ref) => {\n    const { className, ...rest } = props\n    const runtimeClassName = normalizeClassName(className)\n    const variantClasses = resolveVariants(variants, props, defaultVariants)\n    const compoundClasses = resolveCompound(compoundVariants, props)\n    const statesClasses = statesConfig\n      ? resolveStates(statesConfig, stateKeys, statesLookup, props)\n      : \"\"\n\n    // statesClasses appended AFTER twMerge — prevents conflict resolution\n    // from removing valid combinations like ring-2 + ring-blue-500\n    const mergedBase = twMerge(extractBaseClasses(base), variantClasses, compoundClasses, engineClasses, runtimeClassName)\n    const className2 = statesClasses ? `${mergedBase} ${statesClasses}`.trim() : mergedBase\n\n    return React.createElement(tag, {\n      ref,\n      ...filterProps(rest),\n      className: className2,\n    })\n  })\n\n  const component = baseComponent as unknown as TwStyledComponent<TConfig, InferSubFromConfig<TConfig>>\n  component.displayName = `tw.${tagLabel}`\n  const result = attachExtend<TConfig>(component as unknown as TwStyledComponent<TConfig, string>, tag, base, config as ComponentConfig)\n  registerSubComponents(result, base, configSub)\n  return wrapWithSubProxy(result, tagLabel)\n}\n\n// ── Sub-component fallback proxy ──────────────────────────────────────────────\n/**\n * Wrap component dengan Proxy sehingga akses ke sub-component yang tidak\n * terdefinisi (misal Button.footer) tidak mengembalikan undefined dan crash,\n * tapi fallback ke <span> passthrough yang render children-nya saja.\n */\nconst SKIP_PROXY_KEYS = new Set([\n  \"extend\", \"withVariants\", \"animate\", \"withSub\",\n  \"displayName\", \"$$typeof\", \"render\", \"prototype\",\n  \"__esModule\", \"then\",\n])\n\nfunction wrapWithSubProxy<P extends object>(\n  component: TwStyledComponent<P>,\n  tagLabel: string\n): TwStyledComponent<P> {\n  return new Proxy(component, {\n    // Forward function calls to target component\n    apply(target, thisArg, args) {\n      return Reflect.apply(target as Function, thisArg, args)\n    },\n    get(target, prop: string | symbol) {\n      const value = (target as unknown as Record<string | symbol, unknown>)[prop]\n      // Jika sudah ada (sub-component terdefinisi, method, dll) → pakai langsung\n      if (value !== undefined) return value\n      // Skip known internal / React symbols\n      if (typeof prop === \"symbol\") return value\n      if (SKIP_PROXY_KEYS.has(prop as string)) return value\n      // Fallback: buat passthrough <span> untuk sub-component yang tidak terdefinisi\n      const Fallback: React.FC<{ children?: React.ReactNode; className?: string;[key: string]: unknown }> = ({\n        children,\n        className,\n        ...rest\n      }) => React.createElement(\"span\", { ...rest, className }, children)\n      Fallback.displayName = `tw.${tagLabel}.${prop as string}(fallback)`\n      return Fallback\n    },\n  })\n}","/**\n * Browser stub untuk native binding.\n * Di browser, native Rust binding tidak tersedia — semua fungsi return null/noop.\n * Build time processing sudah selesai di server, runtime hanya butuh class lookup.\n */\n\nexport const getNativeBinding = (): null => null\nexport const resetNativeBinding = (): void => {}\nexport const isBrowser = true","/**\n * tailwind-styled-v4 — Container Query Engine\n *\n * Generates @container rules from a simple breakpoint config.\n *\n * Usage:\n *   const Card = tw.div({\n *     base: \"p-4\",\n *     container: {\n *       sm: \"flex-col\",      // @container (min-width: 320px)\n *       md: \"flex-row\",      // @container (min-width: 640px)\n *       lg: \"grid-cols-3\",   // @container (min-width: 1024px)\n *     },\n *     containerName: \"card\",\n *   })\n *\n *   // Wrap with container context:\n *   const CardWrapper = tw.div`@container`\n *\n * Named containers:\n *   const SidebarCard = tw.div({\n *     base: \"p-2\",\n *     container: { lg: \"text-sm\" },\n *     containerName: \"sidebar\",\n *   })\n *   // Generates: @container sidebar (min-width: 1024px) { ... }\n */\n\nimport type { ContainerConfig } from \"./types\"\nimport { getNativeBinding } from \"./native\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Breakpoint map — matches Tailwind defaults\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst CONTAINER_BREAKPOINTS: Record<string, string> = {\n  xs: \"240px\",\n  sm: \"320px\",\n  md: \"640px\",\n  lg: \"1024px\",\n  xl: \"1280px\",\n  \"2xl\": \"1536px\",\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Registry\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface ContainerEntry {\n  id: string\n  tag: string\n  containerName?: string\n  breakpoints: Array<{ minWidth: string; classes: string }>\n  cssInjected: boolean\n}\n\nconst containerRegistry = new Map<string, ContainerEntry>()\n\ndeclare global {\n  interface Window {\n    __TW_CONTAINER_REGISTRY__?: typeof containerRegistry\n  }\n}\n\nif (typeof window !== \"undefined\") {\n  window.__TW_CONTAINER_REGISTRY__ = containerRegistry\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Hash\n// ─────────────────────────────────────────────────────────────────────────────\n\n// Cache untuk hashContainer — container config tidak berubah antar render.\n// Sama dengan _hashStateCache di stateEngine.ts.\nconst _hashContainerCache = new Map<string, string>()\n\n/**\n * Pure-TS FNV-1a 32-bit hash — mirrors Rust fnv implementation.\n * Used as browser fallback for hashContent(\"fnv\", 6).\n */\nfunction _fnvHash6(s: string): string {\n  let h = 0x811c9dc5\n  for (let i = 0; i < s.length; i++) {\n    h ^= s.charCodeAt(i)\n    h = (Math.imul(h, 0x01000193) >>> 0)\n  }\n  return (h >>> 0).toString(16).padStart(8, \"0\").slice(0, 6)\n}\n\nfunction hashContainer(tag: string, container: ContainerConfig, name?: string): string {\n  const sortedKey = tag + (name ?? \"\") + JSON.stringify(Object.entries(container).sort())\n  const cached = _hashContainerCache.get(sortedKey)\n  if (cached) return cached\n\n  const native = getNativeBinding()\n  const id = native?.hashContent\n    ? `tw-cq-${native.hashContent(sortedKey, \"fnv\", 6)}`\n    : `tw-cq-${_fnvHash6(sortedKey)}`   // browser fallback\n\n  _hashContainerCache.set(sortedKey, id)\n  return id\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CSS generator\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Konversi layout class string → inline CSS declarations.\n * Native-only: Rust static lookup table (zero alloc) + split_whitespace.\n */\nfunction layoutClassesToCss(classes: string): string {\n  const native = getNativeBinding()\n  if (!native?.layoutClassesToCss) {\n    // Browser fallback: container CSS is injected from build-time static file.\n    // Runtime generation is not needed — return empty so buildContainerRules\n    // produces no rules (injectContainerStyles becomes a no-op).\n    return \"\"\n  }\n  return native.layoutClassesToCss(classes)\n}\n\nfunction buildContainerRules(\n  id: string,\n  container: ContainerConfig,\n  containerName?: string\n): string {\n  const rules = Object.entries(container)\n    .map(([key, value]) => {\n      const minWidth =\n        typeof value === \"string\"\n          ? (CONTAINER_BREAKPOINTS[key] ?? key)\n          : (value.minWidth ?? CONTAINER_BREAKPOINTS[key] ?? key)\n      const classes = typeof value === \"string\" ? value : value.classes\n\n      const css = layoutClassesToCss(classes)\n      if (!css) return null\n\n      const query = containerName\n        ? `@container ${containerName} (min-width: ${minWidth})`\n        : `@container (min-width: ${minWidth})`\n\n      return `${query}{.${id}{${css}}}`\n    })\n    .filter(Boolean) as string[]\n\n  return rules.join(\"\\n\")\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Batched injector — resolve sekali di module load\nlet _cqBatchedInjectFn: ((css: string) => void) | null = null\ntry {\n  // eslint-disable-next-line @typescript-eslint/no-var-requires\n  const mod = require(\"@tailwind-styled/runtime-css/batched\") as { batchedInject: (css: string) => void }\n  if (typeof mod?.batchedInject === \"function\") _cqBatchedInjectFn = mod.batchedInject\n} catch { /* runtime-css tidak terinstall */ }\n\n// Static CSS detection cache — skip injection kalau @container rule sudah ada di stylesheet\nconst _cqStaticDetected = new Set<string>()\n\n// Style injection\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction injectContainerStyles(\n  id: string,\n  container: ContainerConfig,\n  containerName?: string\n): void {\n  if (typeof document === \"undefined\") return\n  const styleId = `tw-cq-${id}`\n  if (document.getElementById(styleId)) return\n\n  // ── Static CSS guard ─────────────────────────────────────────────────────\n  // Skip injection kalau @container rule untuk ID ini sudah ada di stylesheet statis.\n  if (_cqStaticDetected.has(id)) return\n  if (typeof document.styleSheets !== \"undefined\") {\n    // Cari @container rule yang mengandung selector `.{id}` di dalamnya\n    const selectorTarget = `.${id}`\n    for (let i = 0; i < document.styleSheets.length; i++) {\n      try {\n        const rules = document.styleSheets[i].cssRules\n        for (let j = 0; j < rules.length; j++) {\n          const rule = rules[j]\n          // CSSContainerRule (instanceof CSSRule type 12) atau CSSMediaRule\n          if (rule.cssText.includes(selectorTarget)) {\n            _cqStaticDetected.add(id)\n            return\n          }\n        }\n      } catch { continue }\n    }\n  }\n\n  const css = buildContainerRules(id, container, containerName)\n  if (!css) return\n\n  // _batchedInjectFn di-resolve sekali di module level (lihat deklarasi di atas)\n  if (_cqBatchedInjectFn) {\n    for (const rule of css.split(\"\\n\").filter(Boolean)) _cqBatchedInjectFn(rule)\n    return\n  }\n\n  const style = document.createElement(\"style\")\n  style.id = styleId\n  style.setAttribute(\"data-tw-container\", id)\n  style.textContent = css\n  document.head.appendChild(style)\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Public API\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface ContainerQueryResult {\n  containerClass: string\n  hasContainer: true\n}\n\nexport function processContainer(\n  tag: string,\n  container: ContainerConfig,\n  containerName?: string\n): ContainerQueryResult {\n  const id = hashContainer(tag, container, containerName)\n\n  if (!containerRegistry.has(id)) {\n    const breakpoints = Object.entries(container).map(([key, value]) => ({\n      minWidth: CONTAINER_BREAKPOINTS[key] ?? key,\n      classes: typeof value === \"string\" ? value : value.classes,\n    }))\n    containerRegistry.set(id, {\n      id,\n      tag,\n      containerName,\n      breakpoints,\n      cssInjected: false,\n    })\n  }\n\n  injectContainerStyles(id, container, containerName)\n  containerRegistry.get(id)!.cssInjected = true\n\n  return { containerClass: id, hasContainer: true }\n}\n\n/**\n * Generate @container CSS rules dari breakpoint config.\n *\n * Native-only: Rust string building tanpa intermediate allocations.\n */\nexport function generateContainerCss(\n  tag: string,\n  container: ContainerConfig,\n  containerName?: string\n): string {\n  const id = hashContainer(tag, container, containerName)\n\n  const native = getNativeBinding()\n  if (!native?.buildContainerRules) {\n    throw new Error(\"FATAL: Native binding 'buildContainerRules' is required but not available.\")\n  }\n  const breakpoints = Object.entries(container).map(([key, value]) => ({\n    key,\n    classes: typeof value === \"string\" ? value : value.classes,\n  }))\n  return native.buildContainerRules(id, breakpoints, containerName ?? null)\n}\n\nexport function getContainerRegistry(): Map<string, ContainerEntry> {\n  return containerRegistry\n}","/**\n * tailwind-styled-v4 — pure-TS port of the native merge algorithm\n *\n * This is a MANUAL, line-for-line port of `conflict_group()` / `split_variants()`\n * / `merge_class_string()` in `native/src/application/tw_merge.rs`. It exists\n * ONLY as the browser-side fallback for `twMerge()` — a `.node` N-API addon can\n * never load inside a browser JS engine, so when `createComponent.ts` calls\n * `twMerge()` during a client-side render, there is no native binding to call.\n *\n * Deliberately NOT using the `tailwind-merge` npm package: that would mean two\n * different conflict-resolution algorithms (theirs in the browser, ours on the\n * server) that can silently drift apart and produce different className output\n * for the same input depending on where the component happens to render. This\n * file defines merge semantics with ONE algorithm — ours — at the cost of having\n * to keep it in sync BY HAND with tw_merge.rs. If you change `conflict_group()`\n * in Rust, mirror the change here too.\n *\n * Quirks preserved ON PURPOSE for parity with the compiled Rust (not \"fixed\"\n * here, since fixing only one side would make them disagree):\n * - `rounded-sm` and `rounded-s-*` collide on the same prefix check (both start\n *   with \"rounded-s\") — same ambiguity exists in tw_merge.rs.\n * - `rounded-tl-*` / `rounded-tr-*` both reduce to group \"rounded-t\" (the Rust\n *   code only looks at the first character after \"rounded-\").\n * - `ring-offset-*` always resolves to ONE group (\"ring-offset\"); a width/color\n *   split exists further down in tw_merge.rs but is unreachable dead code there\n *   (an earlier identical `if` already returns) — so it's omitted here too.\n */\n\nconst TEXT_SIZE_SUFFIXES = new Set([\n  \"xs\", \"sm\", \"base\", \"lg\", \"xl\", \"2xl\", \"3xl\", \"4xl\", \"5xl\", \"6xl\", \"7xl\", \"8xl\", \"9xl\",\n])\n\nfunction isTextSize(suffix: string): boolean {\n  if (TEXT_SIZE_SUFFIXES.has(suffix)) return true\n  if (suffix.startsWith(\"[\")) return true\n  return false\n}\n\n// Mirrors Rust's `suffix.chars().all(|c| c.is_ascii_digit())`, which is\n// vacuously `true` for an empty string — preserved for exact parity.\nfunction isAsciiDigits(s: string): boolean {\n  if (s.length === 0) return true\n  for (let i = 0; i < s.length; i++) {\n    const code = s.charCodeAt(i)\n    if (code < 48 || code > 57) return false\n  }\n  return true\n}\n\n// Mirrors `s.parse::<u32>().is_ok()` for the plain non-negative integer\n// suffixes this algorithm actually sees (border/ring widths etc.).\nfunction isU32(s: string): boolean {\n  return s.length > 0 && /^[0-9]+$/.test(s)\n}\n\nconst DISPLAY_VALUES = new Set([\n  \"block\", \"inline-block\", \"inline\", \"flex\", \"inline-flex\", \"grid\", \"inline-grid\",\n  \"table\", \"inline-table\", \"table-row\", \"table-cell\", \"table-column\", \"table-caption\",\n  \"contents\", \"list-item\", \"hidden\", \"flow-root\",\n])\nconst POSITION_VALUES = new Set([\"static\", \"relative\", \"absolute\", \"fixed\", \"sticky\"])\nconst FONT_WEIGHT_NAMES = new Set([\n  \"thin\", \"extralight\", \"light\", \"normal\", \"medium\", \"semibold\", \"bold\", \"extrabold\", \"black\",\n])\nconst TEXT_ALIGN_VALUES = new Set([\"left\", \"center\", \"right\", \"justify\", \"start\", \"end\"])\nconst BORDER_SIDE_PREFIXES = [\"t-\", \"r-\", \"b-\", \"l-\", \"x-\", \"y-\", \"s-\", \"e-\"]\nconst BORDER_STYLE_VALUES = new Set([\"solid\", \"dashed\", \"dotted\", \"double\", \"hidden\", \"none\"])\n\n/**\n * Conflict group untuk base Tailwind class (variant prefix sudah di-strip).\n * Jika `prefix` diberikan (e.g. \"tw-\"), strip dari `base` sebelum lookup.\n * `null` = class tidak pernah konflik (e.g. `sr-only`).\n *\n * Mirrors `conflict_group_with_prefix()` in tw_merge.rs — keep both in sync.\n */\nexport function conflictGroup(base: string, prefix = \"\"): string | null {\n  // Strip custom Tailwind prefix sebelum matching conflict groups.\n  // \"tw-bg-red-500\" dengan prefix \"tw-\" → base menjadi \"bg-red-500\"\n  const b = prefix && base.startsWith(prefix) ? base.slice(prefix.length) : base\n  // Arbitrary value — everything before the first `[` is the group.\n  const bracket = b.indexOf(\"[\")\n  if (bracket !== -1) {\n    const grp = b.slice(0, bracket).replace(/-+$/, \"\")\n    return grp.length > 0 ? grp : \"arbitrary\"\n  }\n\n  if (DISPLAY_VALUES.has(b)) return \"display\"\n  if (POSITION_VALUES.has(b)) return \"position\"\n\n  if (b.startsWith(\"overflow-x-\")) return \"overflow-x\"\n  if (b.startsWith(\"overflow-y-\")) return \"overflow-y\"\n  if (b.startsWith(\"overflow-\")) return \"overflow\"\n\n  if (b.startsWith(\"flex-\")) return \"flex\"\n  if (b.startsWith(\"grid-cols-\")) return \"grid-cols\"\n  if (b.startsWith(\"grid-rows-\")) return \"grid-rows\"\n  if (b.startsWith(\"grid-flow-\")) return \"grid-flow\"\n  if (b.startsWith(\"col-\")) return \"col\"\n  if (b.startsWith(\"row-\")) return \"row\"\n  if (b === \"grow\" || b.startsWith(\"grow-\")) return \"grow\"\n  if (b === \"shrink\" || b.startsWith(\"shrink-\")) return \"shrink\"\n\n  if (b.startsWith(\"gap-x-\")) return \"gap-x\"\n  if (b.startsWith(\"gap-y-\")) return \"gap-y\"\n  if (b.startsWith(\"gap-\")) return \"gap\"\n\n  if (b.startsWith(\"justify-items-\")) return \"justify-items\"\n  if (b.startsWith(\"justify-self-\")) return \"justify-self\"\n  if (b.startsWith(\"justify-\")) return \"justify\"\n  if (b.startsWith(\"items-\")) return \"items\"\n  if (b.startsWith(\"self-\")) return \"self\"\n  if (b.startsWith(\"place-content-\")) return \"place-content\"\n  if (b.startsWith(\"place-items-\")) return \"place-items\"\n  if (b.startsWith(\"place-self-\")) return \"place-self\"\n  if (b.startsWith(\"content-\")) return \"content\"\n\n  if (b.startsWith(\"px-\")) return \"px\"\n  if (b.startsWith(\"py-\")) return \"py\"\n  if (b.startsWith(\"pt-\")) return \"pt\"\n  if (b.startsWith(\"pr-\")) return \"pr\"\n  if (b.startsWith(\"pb-\")) return \"pb\"\n  if (b.startsWith(\"pl-\")) return \"pl\"\n  if (b.startsWith(\"ps-\")) return \"ps\"\n  if (b.startsWith(\"pe-\")) return \"pe\"\n  if (b.startsWith(\"p-\")) return \"p\"\n\n  if (b.startsWith(\"mx-\")) return \"mx\"\n  if (b.startsWith(\"my-\")) return \"my\"\n  if (b.startsWith(\"mt-\")) return \"mt\"\n  if (b.startsWith(\"mr-\")) return \"mr\"\n  if (b.startsWith(\"mb-\")) return \"mb\"\n  if (b.startsWith(\"ml-\")) return \"ml\"\n  if (b.startsWith(\"ms-\")) return \"ms\"\n  if (b.startsWith(\"me-\")) return \"me\"\n  if (b === \"-m\" || b.startsWith(\"m-\") || b.startsWith(\"-m-\")) return \"m\"\n\n  if (b.startsWith(\"space-x-\")) return \"space-x\"\n  if (b.startsWith(\"space-y-\")) return \"space-y\"\n\n  if (b.startsWith(\"size-\")) return \"size\"\n  if (b.startsWith(\"min-w-\")) return \"min-w\"\n  if (b.startsWith(\"max-w-\")) return \"max-w\"\n  if (b.startsWith(\"w-\")) return \"w\"\n  if (b.startsWith(\"min-h-\")) return \"min-h\"\n  if (b.startsWith(\"max-h-\")) return \"max-h\"\n  if (b.startsWith(\"h-\")) return \"h\"\n\n  if (b.startsWith(\"inset-x-\")) return \"inset-x\"\n  if (b.startsWith(\"inset-y-\")) return \"inset-y\"\n  if (b.startsWith(\"inset-\")) return \"inset\"\n  if (b.startsWith(\"top-\")) return \"top\"\n  if (b.startsWith(\"right-\") || b.startsWith(\"end-\")) return \"right\"\n  if (b.startsWith(\"bottom-\")) return \"bottom\"\n  if (b.startsWith(\"left-\") || b.startsWith(\"start-\")) return \"left\"\n\n  if (b.startsWith(\"z-\")) return \"z\"\n  if (b.startsWith(\"opacity-\")) return \"opacity\"\n\n  if (b.startsWith(\"bg-\")) {\n    if (b.startsWith(\"bg-opacity-\")) return \"bg-opacity\"\n    return \"bg\"\n  }\n  if (b.startsWith(\"from-\")) return \"from\"\n  if (b.startsWith(\"via-\")) return \"via\"\n  if (b.startsWith(\"to-\")) return \"to\"\n\n  if (b.startsWith(\"text-\")) {\n    const suffix = b.slice(\"text-\".length)\n    if (isTextSize(suffix)) return \"text-size\"\n    if (suffix.startsWith(\"opacity-\")) return \"text-opacity\"\n    if (TEXT_ALIGN_VALUES.has(suffix)) return \"text-align\"\n    return \"text-color\"\n  }\n\n  if (b.startsWith(\"font-\")) {\n    const suffix = b.slice(\"font-\".length)\n    if (FONT_WEIGHT_NAMES.has(suffix) || isAsciiDigits(suffix)) return \"font-weight\"\n    return \"font-family\"\n  }\n\n  if (b.startsWith(\"leading-\")) return \"leading\"\n  if (b.startsWith(\"tracking-\")) return \"tracking\"\n\n  if (b.startsWith(\"border-\")) {\n    const suffix = b.slice(\"border-\".length)\n    const sidePrefix = BORDER_SIDE_PREFIXES.find((p) => suffix.startsWith(p))\n    if (sidePrefix) {\n      const side = suffix.slice(0, 1)\n      const rest = suffix.slice(2)\n      if (isU32(rest) || rest.length === 0) return `border-${side}-width`\n      return `border-${side}-color`\n    }\n    if (isU32(suffix) || suffix.length === 0) return \"border-width\"\n    if (suffix.startsWith(\"opacity-\")) return \"border-opacity\"\n    if (suffix === \"collapse\" || suffix === \"separate\") return \"border-collapse\"\n    if (BORDER_STYLE_VALUES.has(suffix)) return \"border-style\"\n    return \"border-color\"\n  }\n  if (b === \"border\") return \"border-width\"\n\n  if (b.startsWith(\"outline-\")) return \"outline\"\n  if (b === \"outline\") return \"outline\"\n\n  if (\n    b.startsWith(\"rounded-t\") ||\n    b.startsWith(\"rounded-r\") ||\n    b.startsWith(\"rounded-b\") ||\n    b.startsWith(\"rounded-l\") ||\n    b.startsWith(\"rounded-s\") ||\n    b.startsWith(\"rounded-e\")\n  ) {\n    const firstChar = b.slice(\"rounded-\".length).charAt(0) || \"x\"\n    return `rounded-${firstChar}`\n  }\n  if (b === \"rounded\" || b.startsWith(\"rounded-\")) return \"rounded\"\n\n  if (b === \"shadow\" || b.startsWith(\"shadow-\")) return \"shadow\"\n\n  // See file header re: `ring-offset-*` — only one group is reachable.\n  if (b.startsWith(\"ring-offset-\")) return \"ring-offset\"\n  if (b === \"ring\") return \"ring-width\"\n  if (b.startsWith(\"ring-\")) {\n    const rest = b.slice(\"ring-\".length)\n    const isWidth =\n      rest === \"0\" || rest === \"1\" || rest === \"2\" || rest === \"4\" || rest === \"8\" ||\n      /^-?\\d+(\\.\\d+)?$/.test(rest) ||\n      (rest.startsWith(\"[\") && rest.endsWith(\"]\"))\n    if (isWidth) return \"ring-width\"\n    if (rest === \"inset\") return \"ring-inset\"\n    return \"ring-color\"\n  }\n\n  if (b.startsWith(\"rotate-\")) return \"rotate\"\n  if (b.startsWith(\"scale-x-\")) return \"scale-x\"\n  if (b.startsWith(\"scale-y-\")) return \"scale-y\"\n  if (b.startsWith(\"scale-\")) return \"scale\"\n  if (b.startsWith(\"translate-x-\")) return \"translate-x\"\n  if (b.startsWith(\"translate-y-\")) return \"translate-y\"\n  if (b.startsWith(\"skew-x-\")) return \"skew-x\"\n  if (b.startsWith(\"skew-y-\")) return \"skew-y\"\n\n  if (b === \"transition\" || b.startsWith(\"transition-\")) return \"transition\"\n  if (b.startsWith(\"duration-\")) return \"duration\"\n  if (b.startsWith(\"ease-\")) return \"ease\"\n  if (b.startsWith(\"delay-\")) return \"delay\"\n\n  if (b === \"animate\" || b.startsWith(\"animate-\")) return \"animate\"\n  if (b.startsWith(\"cursor-\")) return \"cursor\"\n  if (b.startsWith(\"pointer-events-\")) return \"pointer-events\"\n  if (b.startsWith(\"select-\")) return \"select\"\n\n  if (b === \"visible\" || b === \"invisible\" || b === \"collapse\") return \"visibility\"\n\n  if (b.startsWith(\"object-\")) return \"object\"\n  if (b.startsWith(\"aspect-\")) return \"aspect\"\n  if (b.startsWith(\"order-\")) return \"order\"\n  if (b.startsWith(\"whitespace-\")) return \"whitespace\"\n  if (b.startsWith(\"list-\")) return \"list\"\n  if (b.startsWith(\"fill-\")) return \"fill\"\n  if (b.startsWith(\"stroke-\")) return \"stroke\"\n\n  if (b.startsWith(\"backdrop-\")) {\n    const rest = b.slice(\"backdrop-\".length)\n    const seg = rest.split(\"-\")[0] || \"x\"\n    return `backdrop-${seg}`\n  }\n\n  if (b.startsWith(\"scroll-\")) return \"scroll\"\n  if (b.startsWith(\"snap-\")) return \"snap\"\n  if (b.startsWith(\"touch-\")) return \"touch\"\n  if (b.startsWith(\"decoration-\")) return \"text-decoration\"\n  if (b.startsWith(\"caret-\")) return \"caret\"\n  if (b.startsWith(\"accent-\")) return \"accent\"\n  if (b.startsWith(\"appearance-\")) return \"appearance\"\n\n  if (b === \"isolate\" || b === \"isolation-auto\") return \"isolation\"\n\n  if (b.startsWith(\"mix-blend-\")) return \"mix-blend\"\n  if (b.startsWith(\"bg-blend-\")) return \"bg-blend\"\n\n  if (b.startsWith(\"float-\")) return \"float\"\n  if (b.startsWith(\"clear-\")) return \"clear\"\n  if (b.startsWith(\"break-\")) return \"break\"\n  if (b.startsWith(\"columns-\")) return \"columns\"\n\n  // No known conflict group → class is always kept as-is.\n  return null\n}\n\n/**\n * Splits `hover:dark:bg-red-500` into `[\"hover:dark:\", \"bg-red-500\"]`.\n * Tracks `[...]` bracket depth so a `:` inside an arbitrary value (e.g.\n * `[mask-type:luminance]`) isn't mistaken for a variant separator.\n *\n * Mirrors `split_variants()` in tw_merge.rs — keep both in sync.\n */\nexport function splitVariants(klass: string): [variants: string, base: string] {\n  let depth = 0\n  let lastColon = 0 // index AFTER the last top-level ':'; 0 = none found\n  for (let i = 0; i < klass.length; i++) {\n    const ch = klass.charCodeAt(i)\n    if (ch === 91 /* [ */) depth++\n    else if (ch === 93 /* ] */) depth = depth > 0 ? depth - 1 : 0\n    else if (ch === 58 /* : */ && depth === 0) lastColon = i + 1\n  }\n  if (lastColon === 0) return [\"\", klass]\n  return [klass.slice(0, lastColon), klass.slice(lastColon)]\n}\n\n/**\n * Conflict-aware merge of a single space-separated class string — last class\n * wins per `{variants}::{conflictGroup}` key, original order otherwise kept.\n *\n * Mirrors `merge_class_string_with_prefix()` in tw_merge.rs — keep both in sync.\n */\nexport function mergeClassStringJs(input: string, prefix = \"\"): string {\n  const tokens = input.split(/\\s+/).filter(Boolean)\n  if (tokens.length === 0) return \"\"\n  if (tokens.length === 1) return tokens[0]\n\n  const groupOwner = new Map<string, number>()\n  const slots: Array<string | null> = []\n\n  for (const token of tokens) {\n    const [variants, base] = splitVariants(token)\n    const group = conflictGroup(base, prefix)\n    if (group !== null) {\n      const key = `${variants}::${group}`\n      const prevIdx = groupOwner.get(key)\n      if (prevIdx !== undefined) slots[prevIdx] = null\n      groupOwner.set(key, slots.length)\n      slots.push(token)\n    } else {\n      slots.push(token)\n    }\n  }\n\n  return slots.filter((s): s is string => s !== null).join(\" \")\n}\n\n/**\n * Browser-side equivalent of the native `twMergeRaw` / `twMergeRawWithOptions` NAPI export.\n * Mirrors `tw_merge_raw_with_options()` in tw_merge.rs — keep both in sync.\n */\nexport function twMergeRawJs(classLists: string[], prefix = \"\"): string {\n  const joined = classLists\n    .map((s) => s.trim())\n    .filter((s) => s.length > 0)\n    .join(\" \")\n  if (joined.length === 0) return \"\"\n  return mergeClassStringJs(joined, prefix)\n}","/**\n * tailwind-styled-v4 — createTwMerge()\n *\n * Native Rust binding (twMergeRaw) is used when available (Node.js, build\n * time, SSR) for maximum performance/parity with the rest of the pipeline.\n *\n * Browser fallback (Bug C — \"Uncaught Error: Native binding 'twMergeRaw' is\n * required but not available.\" crashing in the browser):\n *\n * createComponent.ts calls twMerge() unconditionally inside the React render\n * function for EVERY tw.* component, on EVERY render — including the very\n * first client-side render of any component that runs/re-renders in the\n * browser. A `.node` native addon can never load inside a browser JS engine,\n * so this isn't a rare edge case, it's unconditional: any tw.* component\n * rendering client-side needs a working fallback path.\n *\n * getNativeBinding() returns `null` (not a throw) when running in the\n * browser — see native.ts. When that happens we use mergeFallback.ts, a\n * hand-written pure-TS port of the SAME algorithm as `tw_merge_raw` in\n * tw_merge.rs (conflict_group / split_variants / merge_class_string),\n * instead of the third-party `tailwind-merge` package. This keeps merge\n * behavior defined by one algorithm — ours — rather than risking the\n * browser and the server silently disagreeing on merged className output\n * because two different implementations drifted apart. The cost: when\n * tw_merge.rs's conflict_group() changes, mergeFallback.ts must be updated\n * by hand to match (see comments there).\n */\n\nimport { getNativeBinding } from \"./native\"\nimport { twMergeRawJs } from \"./mergeFallback\"\nimport type { ThemeConfig } from \"./themeReader\"\n\nexport interface MergeOptions {\n  /**\n   * NOTE: not currently applied — matches the native path, which calls\n   * `native.twMergeRaw(inputs)` without ever forwarding a prefix either.\n   * Kept on the type for API stability; wire it through conflictGroup()\n   * in mergeFallback.ts (and tw_merge_raw on the Rust side) together if a\n   * custom Tailwind prefix needs to be supported correctly end-to-end.\n   */\n  prefix?: string\n  separator?: string\n  theme?: ThemeConfig\n}\n\nlet warnedFallback = false\nfunction warnFallbackOnce(): void {\n  if (warnedFallback) return\n  warnedFallback = true\n  if (typeof console !== \"undefined\") {\n    console.warn(\n      \"[tailwind-styled-v4] Native binding 'twMergeRaw' tidak tersedia \" +\n      \"(normal di browser) — pakai pure-TS port dari algoritma Rust-nya. \" +\n      \"Hasil className tetap benar; ini cuma informasi, bukan error.\"\n    )\n  }\n}\n\nexport function createTwMerge(options: MergeOptions = {}) {\n  const prefix = options.prefix ?? \"\"\n  return function twMerge(...classLists: Array<string | undefined | null | false>): string {\n    const inputs: string[] = []\n    for (let i = 0; i < classLists.length; i++) {\n      const v = classLists[i]\n      if (v) inputs.push(String(v))\n    }\n    if (inputs.length === 0) return \"\"\n\n    const native = getNativeBinding()\n    if (native) {\n      // Gunakan twMergeRawWithOptions jika prefix tersedia, twMergeRaw jika tidak\n      if (prefix && native.twMergeRawWithOptions) {\n        return native.twMergeRawWithOptions(inputs, { prefix })\n      }\n      if (native.twMergeRaw) {\n        return native.twMergeRaw(inputs)\n      }\n    }\n\n    warnFallbackOnce()\n    return twMergeRawJs(inputs, prefix)\n  }\n}\n\nexport const twMerge = createTwMerge()\n\nexport function mergeWithRules(\n  rules: Record<string, (classes: string[]) => string>,\n  ...classLists: string[]\n): string {\n  const base = twMerge(...classLists)\n  const classes = Object.values(rules).reduce(\n    (acc, rule) => twMerge(rule(acc)).split(/\\s+/).filter(Boolean),\n    base.split(/\\s+/).filter(Boolean)\n  )\n  return classes.join(\" \")\n}","/**\n * parseTemplateFallback — pure-TS fallback for parseSubcomponentBlocksNapi.\n *\n * Used in browser when native binding is unavailable.\n * Parses sub-component block syntax from template strings:\n *   \"[icon] { h-4 w-4 }\" or \"icon { h-4 w-4 }\"\n *\n * Mirrors the Rust implementation in parseSubcomponentBlocksNapi.\n * Must be kept in sync if block syntax changes.\n */\n\n// Matches: [name] { ... } or name { ... } (no hyphen before bracket = sub-block)\nconst SUB_RE = /(?:\\[([a-zA-Z][a-zA-Z0-9_-]*)\\]|([a-zA-Z][a-zA-Z0-9_-]*))\\s*\\{([^}]*)\\}/g\nconst COMMENT_RE = /\\/\\/[^\\n]*/g\n\nfunction collapseSpaces(s: string): string {\n  return s.replace(/\\s+/g, \" \").trim()\n}\n\nfunction cleanBlock(raw: string): string {\n  const noComments = raw.replace(COMMENT_RE, \"\")\n  const lines = noComments.split(\"\\n\").map((l) => l.trim()).filter((l) => l.length > 0)\n  return collapseSpaces(lines.join(\" \"))\n}\n\nexport interface ParsedTemplateFallback {\n  base: string\n  subs: Record<string, string>\n  hasSubs: boolean\n}\n\nexport function parseTemplateJs(raw: string): ParsedTemplateFallback {\n  const subs: Record<string, string> = {}\n  let base = raw\n\n  for (const match of raw.matchAll(SUB_RE)) {\n    const fullMatch = match[0]\n    const name = match[1] ?? match[2] ?? \"\"\n    const innerRaw = match[3] ?? \"\"\n    if (name) {\n      subs[name] = cleanBlock(innerRaw)\n    }\n    base = base.replace(fullMatch, \"\")\n  }\n\n  return {\n    base: collapseSpaces(base),\n    subs,\n    hasSubs: Object.keys(subs).length > 0,\n  }\n}\n","/**\n * tailwind-styled-v4 — Reactive State Engine\n *\n * Zero-JS CSS state management via data attributes.\n * No React re-render needed for style changes.\n *\n * How it works:\n *   1. tw.button({ state: { active: \"bg-blue-500\", loading: \"opacity-70\" } })\n *   2. State engine generates a unique class + injects CSS:\n *      .tw-s-abc123[data-active=\"true\"] { @apply bg-blue-500; }\n *      .tw-s-abc123[data-loading=\"true\"] { @apply opacity-70; }\n *   3. Component renders with the state class\n *   4. User sets data-active=\"true\" directly — no state needed\n *\n * Devtools integration:\n *   All components register to __TW_STATE_REGISTRY__ for devtools inspection.\n */\n\nimport type { StateConfig } from \"./types\"\nimport { getNativeBinding } from \"./native\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Registry — tracks all state-enabled components\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface StateComponentEntry {\n  id: string\n  tag: string\n  states: string[]\n  cssInjected: boolean\n}\n\nconst stateRegistry = new Map<string, StateComponentEntry>()\n\ndeclare global {\n  interface Window {\n    __TW_STATE_REGISTRY__?: typeof stateRegistry\n  }\n}\n\nif (typeof window !== \"undefined\") {\n  window.__TW_STATE_REGISTRY__ = stateRegistry\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Deterministic hash — same config → same class (no re-injection on HMR)\n// ─────────────────────────────────────────────────────────────────────────────\n\n// Cache untuk hashState — state config tidak berubah antar render,\n// hash hanya perlu dihitung sekali per (tag, state) kombinasi.\nconst _hashStateCache = new Map<string, string>()\n\n/**\n * Pure-TS FNV-1a 32-bit hash — mirrors Rust fnv implementation.\n * Used as browser fallback for hashContent(\"fnv\", 6).\n */\nfunction _fnvHash6(s: string): string {\n  let h = 0x811c9dc5\n  for (let i = 0; i < s.length; i++) {\n    h ^= s.charCodeAt(i)\n    h = (Math.imul(h, 0x01000193) >>> 0)\n  }\n  return (h >>> 0).toString(16).padStart(8, \"0\").slice(0, 6)\n}\n\nfunction hashState(tag: string, state: StateConfig): string {\n  const sortedKey = tag + JSON.stringify(Object.entries(state).sort())\n  const cached = _hashStateCache.get(sortedKey)\n  if (cached) return cached\n\n  const native = getNativeBinding()\n  const id = native?.hashContent\n    ? `tw-s-${native.hashContent(sortedKey, \"fnv\", 6)}`\n    : `tw-s-${_fnvHash6(sortedKey)}`   // browser fallback\n\n  _hashStateCache.set(sortedKey, id)\n  return id\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CSS generator — state config → CSS rules via Rust, satu call (required)\n// ─────────────────────────────────────────────────────────────────────────────\n//\n// generateRuntimeStateCss() menggantikan twClassesToCss() yang dulu dipanggil\n// per state entry (N × NAPI calls per injectStateStyles/generateStateCss).\n// Sekarang seluruh state map di-resolve dalam satu Rust call. Lihat doc comment\n// generate_runtime_state_css() di state_css.rs untuk detail kontrak.\n\nfunction generateStateRules(id: string, state: StateConfig): string[] {\n  const native = getNativeBinding()\n  if (!native?.generateRuntimeStateCss) {\n    // Browser fallback: state CSS is pre-generated at build time into\n    // _tw-state-static.css via withTailwindStyled. Runtime generation\n    // is not needed in the browser — return empty so injectStateStyles\n    // detects the static CSS and skips injection.\n    return []\n  }\n  return native.generateRuntimeStateCss(id, JSON.stringify(state), null).map((rule) => rule.cssRule)\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Static CSS detection cache — per component ID\n// ─────────────────────────────────────────────────────────────────────────────\n// Kalau ID sudah ketemu di stylesheet statis, simpan ke Set ini supaya\n// iterasi `document.styleSheets` hanya terjadi SEKALI per component ID,\n// bukan setiap kali komponen mount.\nconst _staticCssDetected = new Set<string>()\n// require() di-cache hasilnya di sini supaya tidak ada module resolution overhead\n// setiap kali ada state change di browser.\nlet _batchedInjectFn: ((css: string) => void) | null = null\ntry {\n  // eslint-disable-next-line @typescript-eslint/no-var-requires\n  const mod = require(\"@tailwind-styled/runtime-css/batched\") as { batchedInject: (css: string) => void }\n  if (typeof mod?.batchedInject === \"function\") _batchedInjectFn = mod.batchedInject\n} catch {\n  // runtime-css tidak terinstall — fallback ke per-element style tag\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Style injection — batched for performance (FIX CSS Rule Batching)\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction injectStateStyles(id: string, state: StateConfig): void {\n  if (typeof document === \"undefined\") return\n\n  const styleId = `tw-state-${id}`\n  if (document.getElementById(styleId)) return // already injected\n\n  // ── Static CSS check ──────────────────────────────────────────────────────\n  // Cek apakah CSS untuk component ini sudah ada dari static file\n  // (di-generate oleh staticStateExtractor.ts saat build time).\n  //\n  // Cara detect: cari selector `.{id}[data-` di semua stylesheets yang ada.\n  // Kalau ketemu, berarti static pre-generation sudah cover component ini\n  // → skip runtime injection sepenuhnya (zero batchedInject call).\n  //\n  // `_staticCssDetected` cache: iterasi styleSheets hanya sekali per ID.\n  if (_staticCssDetected.has(id)) return\n\n  if (typeof document.styleSheets !== \"undefined\") {\n    const selectorPrefix = `.${id}[data-`\n    for (let i = 0; i < document.styleSheets.length; i++) {\n      try {\n        const sheet = document.styleSheets[i]\n        // sheet.cssRules bisa throw SecurityError untuk cross-origin sheets\n        const rules = sheet.cssRules\n        for (let j = 0; j < rules.length; j++) {\n          const rule = rules[j]\n          if (rule instanceof CSSStyleRule && rule.selectorText.startsWith(selectorPrefix)) {\n            // Static CSS sudah mencakup component ini — tidak perlu inject\n            _staticCssDetected.add(id)\n            return\n          }\n        }\n      } catch {\n        // Cross-origin atau CSSOM tidak accessible — skip sheet ini\n        continue\n      }\n    }\n  }\n\n  const rules = generateStateRules(id, state)\n\n  if (rules.length === 0) return\n\n  // Try batched injector first (available when runtime-css is installed).\n  // _batchedInjectFn di-resolve sekali di module level — hindari require() dinamis\n  // (dynamic require = module resolution + file I/O) setiap kali ada state change.\n  if (_batchedInjectFn) {\n    for (const rule of rules) _batchedInjectFn(rule)\n    return\n  }\n\n  const style = document.createElement(\"style\")\n  style.id = styleId\n  style.setAttribute(\"data-tw-state\", id)\n  style.textContent = rules.join(\"\\n\")\n  document.head.appendChild(style)\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Public API\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface StateEngineResult {\n  /** CSS class to add to the component */\n  stateClass: string\n  /** Whether this component uses state (for SSR data attributes) */\n  hasState: true\n  /** List of state names (for devtools) */\n  stateNames: string[]\n}\n\n/**\n * Process a StateConfig for a component.\n * Returns the state class and injects CSS (client-side only).\n *\n * @param tag HTML tag name\n * @param state State config object\n * @param precomputedHash Optional pre-computed hash dari `inject_state_hash()` Rust transform.\n *   Kalau ada, skip runtime `hashState()` sepenuhnya → zero hashing overhead.\n */\nexport function processState(\n  tag: string,\n  state: StateConfig,\n  precomputedHash?: string\n): StateEngineResult {\n  // Pakai pre-computed hash kalau tersedia (di-inject oleh turbopackLoader via Rust)\n  // Format: 6-char FNV-1a hex — identik dengan output hashState()\n  const id = precomputedHash\n    ? `tw-s-${precomputedHash}`\n    : hashState(tag, state)\n  const stateNames = Object.keys(state)\n\n  // Register for devtools\n  if (!stateRegistry.has(id)) {\n    stateRegistry.set(id, {\n      id,\n      tag,\n      states: stateNames,\n      cssInjected: false,\n    })\n  }\n\n  // Inject CSS (client only)\n  injectStateStyles(id, state)\n\n  // Mark as injected\n  const entry = stateRegistry.get(id)!\n  entry.cssInjected = true\n\n  return { stateClass: id, hasState: true, stateNames }\n}\n\n/**\n * Generate SSR-safe CSS string for a state config.\n * Used by SSR to inject styles into <head>.\n */\nexport function generateStateCss(tag: string, state: StateConfig): string {\n  const id = hashState(tag, state)\n  return generateStateRules(id, state).join(\"\\n\")\n}\n\n/**\n * Get the state registry (for devtools).\n */\nexport function getStateRegistry(): Map<string, StateComponentEntry> {\n  return stateRegistry\n}","/**\n * tailwind-styled-v4 — cv()\n *\n * Runtime: native-first with fallback to generated variant tables.\n *\n * Dua mode:\n * 1. GENERATED (optimal) — import dari variants.generated.ts hasil `npx tw compile-variants`\n *    → O(1) lookup, static, zero runtime computation\n * 2. RUNTIME (fallback) — compute on-the-fly via native binding\n *    → Requires native Rust binding for variant resolution\n */\n\nimport { twMerge } from \"./merge\"\nimport type { ComponentConfig, CvFn, InferVariantProps } from \"./types\"\nimport { getNativeBinding } from \"./native\"\n\n// Registry untuk generated lookup tables\n// Diisi oleh cv.register() dari generated file\nconst __generatedRegistry: Record<string, Record<string, string>> = {}\n\n/**\n * Register pre-computed variant table dari generated file.\n * Dipanggil otomatis saat import variants.generated.ts\n */\nexport function registerVariantTable(\n  componentId: string,\n  table: Record<string, string>\n): void {\n  __generatedRegistry[componentId] = table\n}\n\n// Cache untuk sorted variant keys per componentId — sort() hanya dilakukan sekali\n// per componentId karena variantKeys tidak berubah selama runtime\nconst _sortedVariantKeysCache = new Map<string, string[]>()\n\nfunction lookupGenerated(\n  componentId: string,\n  props: Record<string, unknown>,\n  defaultVariants?: Record<string, string>,\n  variantKeys?: string[]\n): string | undefined {\n  const table = __generatedRegistry[componentId]\n  if (!table) return undefined\n\n  const merged = { ...defaultVariants, ...props }\n\n  // Cached sorted keys — sort() hanya dilakukan sekali per componentId\n  let sortedKeys = _sortedVariantKeysCache.get(componentId)\n  if (!sortedKeys) {\n    const keysToUse = variantKeys\n      ? variantKeys\n      : Object.keys(merged).filter((k) => k !== \"className\")\n    sortedKeys = [...keysToUse].sort()\n    _sortedVariantKeysCache.set(componentId, sortedKeys)\n  }\n\n  // buildVariantLookupKey di Rust — satu NAPI call, eliminasi JS string concat loop\n  const binding = getNativeBinding()\n  if (!binding?.buildVariantLookupKey) {\n    // JS fallback: build lookup key secara manual (format identik dengan Rust output)\n    const parts: string[] = []\n    for (const k of sortedKeys) {\n      const v =\n        (props as Record<string, unknown>)[k] ??\n        defaultVariants?.[k]\n      if (v != null) parts.push(`${k}:${String(v)}`)\n    }\n    const key = parts.join(\"|\")\n    return table[key]\n  }\n  const relevantDefaults: Record<string, string> = {}\n  const relevantProps: Record<string, string> = {}\n  for (const k of sortedKeys) {\n    const dv = defaultVariants?.[k]\n    if (dv !== undefined) relevantDefaults[k] = String(dv)\n    const pv = (props as Record<string, unknown>)[k]\n    if (pv !== undefined && pv !== null) relevantProps[k] = String(pv)\n  }\n  const key = binding.buildVariantLookupKey(\n    JSON.stringify(relevantDefaults),\n    JSON.stringify(relevantProps)\n  )\n  return table[key]\n}\n\n// Cache config JSON per config object reference — menghindari JSON.stringify ulang\n// untuk config yang sama. WeakMap dipakai agar GC bisa collect config jika\n// komponen di-unmount (tidak ada strong reference leak).\nconst _configJsonCache = new WeakMap<object, string>()\n\nfunction _getConfigJson(config: object): string {\n  let json = _configJsonCache.get(config)\n  if (!json) {\n    // Convert TypeScript camelCase field names to Rust snake_case\n    const cfgObj = (config as unknown as Record<string, unknown>)\n    const cfgStr = JSON.stringify(cfgObj)\n    const parsed = JSON.parse(cfgStr) as Record<string, unknown>\n\n    // Rename defaultVariants to default_variants for Rust compatibility\n    if ('defaultVariants' in parsed && !('default_variants' in parsed)) {\n      parsed.default_variants = parsed.defaultVariants\n      delete parsed.defaultVariants\n    }\n\n    // Rename compoundVariants to compound_variants. The Rust VariantConfig has\n    // no serde alias for this field (unlike default_variants), so without the\n    // rename Rust silently falls back to an empty vec and drops every compound.\n    if ('compoundVariants' in parsed && !('compound_variants' in parsed)) {\n      parsed.compound_variants = parsed.compoundVariants\n      delete parsed.compoundVariants\n    }\n\n    // Rust requires a `variants` field (it is not #[serde(default)]); a base-only\n    // or compound-only config omits it, which makes deserialization fail.\n    if (!('variants' in parsed) || parsed.variants == null) {\n      parsed.variants = {}\n    }\n\n    json = JSON.stringify(parsed)\n    _configJsonCache.set(config, json)\n  }\n  return json\n}\n\n// Native Rust variant resolution — dengan JS fallback untuk browser\nfunction resolveVariantsNative<C extends ComponentConfig>(\n  config: C,\n  props: InferVariantProps<C> & { className?: string } & Readonly<Record<string, unknown>>\n): string {\n  const { variants = {}, defaultVariants = {} } = config\n\n  const binding = getNativeBinding()\n\n  // Browser / no-native fallback: resolve variants secara JS murni\n  // Ini dipakai saat native binding tidak tersedia (browser bundle, test env, dll).\n  // Output identik dengan Rust resolver — defaults di-override oleh props.\n  if (!binding?.resolveVariants) {\n    const variantKeys = Object.keys(variants as Record<string, Record<string, string>>)\n    const classes: string[] = []\n\n    // Base classes sudah di-handle di createComponent — tidak diulang di sini\n\n    // Resolve setiap variant: pakai props kalau ada, fallback ke defaultVariants\n    for (const key of variantKeys) {\n      const value =\n        (props as Record<string, unknown>)[key] ??\n        (defaultVariants as Record<string, string>)[key]\n      if (value != null) {\n        const variantClass = (variants as Record<string, Record<string, string>>)[key]?.[String(value)]\n        if (variantClass) classes.push(variantClass)\n      }\n    }\n\n    // Compound variants\n    if (config.compoundVariants) {\n      for (const compound of config.compoundVariants) {\n        const { class: compoundClass, ...conditions } = compound as { class: string;[key: string]: string }\n        const resolved: Record<string, string> = {}\n        for (const key of variantKeys) {\n          resolved[key] = String(\n            (props as Record<string, unknown>)[key] ??\n            (defaultVariants as Record<string, string>)[key] ?? \"\"\n          )\n        }\n        const matches = Object.entries(conditions).every(\n          ([k, v]) => resolved[k] === v\n        )\n        if (matches) classes.push(compoundClass)\n      }\n    }\n\n    return classes.join(\" \")\n  }\n\n  const variantKeys = Object.keys(variants as Record<string, Record<string, string>>)\n  const configJson = _getConfigJson(config as object)\n  const cleanProps: Record<string, string> = {}\n  for (const k of variantKeys) {\n    const dv = (defaultVariants as Record<string, string>)[k]\n    if (dv !== undefined && dv !== null) cleanProps[k] = String(dv)\n  }\n  for (const k of variantKeys) {\n    const v = (props as Record<string, unknown>)[k]\n    if (v !== undefined && v !== null) cleanProps[k] = String(v)\n  }\n  const propsJson = JSON.stringify(cleanProps)\n  const result = binding.resolveVariants(configJson, propsJson)\n  // NAPI returns VariantResult object with .classes property\n  return (result as unknown as { classes: string }).classes\n}\n\nexport function cv<C extends ComponentConfig>(config: C, componentId?: string): CvFn<C> {\n  if (process.env.NODE_ENV !== \"production\") {\n    const { variants = {}, defaultVariants = {} } = config\n    for (const dk of Object.keys(defaultVariants)) {\n      if (!(dk in variants)) {\n        console.warn(`[tailwind-styled] defaultVariants[\"${dk}\"] not in variants`)\n      }\n    }\n  }\n\n  // Convert boolean values to strings for internal use\n  const stringifiedDefaults: Record<string, string> = {}\n  if (config.defaultVariants) {\n    for (const [k, v] of Object.entries(config.defaultVariants)) {\n      stringifiedDefaults[k] = String(v)\n    }\n  }\n\n  return ((\n    props: InferVariantProps<C> & { className?: string } & Readonly<Record<string, unknown>> = {} as never\n  ): string => {\n    let result: string\n    const variantKeys = Object.keys(config.variants ?? {})\n\n    // Mode 1: generated lookup table (O(1), hasil compile-variants)\n    if (componentId) {\n      const generated = lookupGenerated(\n        componentId,\n        props as Record<string, unknown>,\n        stringifiedDefaults,\n        variantKeys\n      )\n      result = generated ?? resolveVariantsNative(config, props)\n    } else {\n      // Mode 2: runtime resolution via native binding\n      result = resolveVariantsNative(config, props)\n    }\n\n    return props.className ? twMerge(result, props.className) : result\n  }) as CvFn<C>\n}\n\nexport interface VariantValidationError {\n  type: \"unknown_key\" | \"unknown_value\" | \"missing_default\" | \"compound_condition_missing\"\n  key: string\n  value?: string\n  message: string\n}\n\nexport interface VariantValidationResult {\n  valid: boolean\n  errors: VariantValidationError[]\n  warnings: string[]\n}\n\nexport function validateVariantConfig(config: ComponentConfig): VariantValidationResult {\n  const native = getNativeBinding()\n  if (!native?.validateVariantConfig) {\n    throw new Error(\"FATAL: Native binding 'validateVariantConfig' is required but not available.\")\n  }\n\n  const result = native.validateVariantConfig(JSON.stringify(config))\n\n  // Native mengembalikan `errorType` (snake_case asal Rust di-camelCase oleh napi-rs).\n  // Public API cv.ts pakai `type` — di-map di sini agar contract lama tidak berubah\n  // untuk consumer yang sudah destructure `.errors[i].type`.\n  return {\n    valid: result.valid,\n    errors: result.errors.map((e) => ({\n      type: e.errorType as VariantValidationError[\"type\"],\n      key: e.key,\n      value: e.value,\n      message: e.message,\n    })),\n    warnings: result.warnings,\n  }\n}","/**\n * tailwind-styled-v4 v2 — cx / cn\n *\n * Native Rust binding dipakai di Node.js/SSR untuk performa maksimal.\n *\n * Browser fallback (Bug 2 — \"Native binding 'resolveClassNames' is required\n * but not available.\" crash di browser):\n *\n * getNativeBinding() return `null` di browser (bukan throw). Ketika itu terjadi\n * kita gunakan pure-TS fallback yang semantiknya identik dengan implementasi Rust:\n * - cn(): filter falsy + join spasi (identik dengan resolve_class_names di Rust)\n * - cx(): conflict-aware merge via twMergeRawJs (port dari tw_merge.rs)\n * - cxn(): flatten nested array + filter falsy + join spasi\n *\n * Server path TIDAK DIUBAH: throw Error tetap dijalankan jika native null di\n * Node.js (menandakan miskonfigurasi). Fallback hanya aktif saat isBrowser=true.\n */\n\nimport { getNativeBinding } from \"./native\"\nimport { twMergeRawJs } from \"./mergeFallback\"\n\ntype ClassValue = string | undefined | null | false | 0\n\n/**\n * cn — simple class name joiner (no conflict resolution).\n * Node.js: delegates ke Rust `resolve_class_names`.\n * Browser: pure-TS fallback — filter falsy + join spasi.\n *\n * @example cn(\"p-4\", isActive && \"opacity-100\") → \"p-4 opacity-100\"\n */\nexport function cn(...inputs: (ClassValue | ClassValue[])[]): string {\n  const strings: string[] = []\n  for (const item of inputs) {\n    if (Array.isArray(item)) {\n      for (const v of item) { if (v) strings.push(String(v)) }\n    } else if (item) {\n      strings.push(String(item))\n    }\n  }\n  if (strings.length === 0) return \"\"\n\n  const native = getNativeBinding()\n  if (native?.resolveClassNames) {\n    // Server/Node.js path — gunakan native Rust binding\n    return native.resolveClassNames(strings)\n  }\n  if (native !== null) {\n    // Native tersedia tapi resolveClassNames tidak — Node.js miskonfigurasi\n    throw new Error(\"Native binding 'resolveClassNames' is required but not available.\")\n  }\n  // Browser fallback — native = null (expected di browser)\n  // Semantik identik: filter falsy values + join dengan spasi\n  return strings.filter(Boolean).join(\" \")\n}\n\n/**\n * cx — conflict-aware class merger.\n * Node.js: delegates ke Rust `tw_merge_many`.\n * Browser: pure-TS fallback via twMergeRawJs (port algoritma Rust).\n *\n * @example cx(\"p-4 p-8\")                        → \"p-8\"\n * @example cx(\"bg-red-500\", \"bg-blue-500\")       → \"bg-blue-500\"\n * @example cx([\"flex\", \"items-center\"], \"px-4\")  → \"flex items-center px-4\"\n */\nexport function cx(...inputs: (ClassValue | ClassValue[])[]): string {\n  const filtered = (inputs as unknown[]).flat().filter(Boolean) as string[]\n  if (filtered.length === 0) return \"\"\n\n  const native = getNativeBinding()\n  if (native?.twMergeMany) {\n    // Server/Node.js path — gunakan native Rust binding\n    return native.twMergeMany(filtered)\n  }\n  if (native !== null) {\n    // Native tersedia tapi twMergeMany tidak — Node.js miskonfigurasi\n    throw new Error(\"Native binding 'twMergeMany' is required but not available.\")\n  }\n  // Browser fallback — native = null (expected di browser)\n  // Gunakan twMergeRawJs: port pure-TS dari algoritma tw_merge.rs\n  return twMergeRawJs(filtered)\n}\n\n/** @deprecated Use cx() instead. */\nexport const cxm = cx\n\n/**\n * cxn — cx() dengan nested array support.\n * Node.js: delegates ke Rust `flatten_and_resolve`.\n * Browser: pure-TS fallback — flatten nested array + filter falsy + join spasi.\n *\n * @example cxn([\"p-4\", [\"flex\", isActive && \"gap-2\"], null]) → \"p-4 flex gap-2\"\n */\nexport function cxn(inputs: unknown[]): string {\n  if (inputs.length === 0) return \"\"\n\n  const native = getNativeBinding()\n  if (native?.flattenAndResolve) {\n    // Server/Node.js path — gunakan native Rust binding\n    return native.flattenAndResolve(JSON.stringify(inputs))\n  }\n  if (native !== null) {\n    // Native tersedia tapi flattenAndResolve tidak — Node.js miskonfigurasi\n    throw new Error(\"Native binding 'flattenAndResolve' is required but not available.\")\n  }\n  // Browser fallback — native = null (expected di browser)\n  // Flatten nested array secara rekursif, filter falsy, join dengan spasi\n  function flattenDeep(arr: unknown[]): string[] {\n    const result: string[] = []\n    for (const item of arr) {\n      if (Array.isArray(item)) {\n        const nested = flattenDeep(item)\n        for (const v of nested) result.push(v)\n      } else if (item) {\n        result.push(String(item))\n      }\n    }\n    return result\n  }\n  return flattenDeep(inputs).join(\" \")\n}","/**\n * tailwind-styled-v4 — createStyledSystem()\n *\n * Design System Factory — Mode 3 API.\n *\n * Level 1 — utility:      tw.div`p-4`\n * Level 2 — styled:       tw(Button)`px-4`\n * Level 3 — design system: ui.button({ variant: \"primary\" })\n *\n * Usage:\n *   const ui = createStyledSystem({\n *     tokens: {\n *       colors: { primary: \"#6366f1\", muted: \"#71717a\" },\n *       radius: { base: \"0.5rem\", full: \"9999px\" },\n *     },\n *     components: {\n *       button: {\n *         base: \"inline-flex items-center font-medium transition-colors\",\n *         variants: {\n *           variant: {\n *             primary: \"bg-[var(--sys-color-primary)] text-white\",\n *             ghost:   \"bg-transparent border border-current\",\n *             danger:  \"bg-red-500 text-white\",\n *           },\n *           size: {\n *             sm: \"h-8 px-3 text-sm\",\n *             md: \"h-10 px-4 text-base\",\n *             lg: \"h-12 px-6 text-lg\",\n *           },\n *         },\n *         defaultVariants: { variant: \"primary\", size: \"md\" },\n *       },\n *     },\n *   })\n *\n *   const Button = ui.button()\n *   // → <Button variant=\"primary\" size=\"lg\" />\n *\n *   // Token access\n *   ui.token(\"colors.primary\")       // → \"var(--sys-color-primary)\"\n *   ui.cssVar(\"colors.primary\")      // → \"#6366f1\"\n */\n\nimport type React from \"react\"\n\nimport { createComponent } from \"./createComponent\"\nimport { getNativeBinding } from \"./native\"\nimport type { ComponentConfig, TwStyledComponent } from \"./types\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// System token types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type SystemTokenMap = Record<string, Record<string, string>>\n\nexport interface SystemComponentConfig extends ComponentConfig {\n  /** Extra class applied only when used from the system (e.g. system-level resets) */\n  systemBase?: string\n  /** HTML tag for the component */\n  tag?: string\n}\n\nexport interface StyledSystemConfig<\n  T extends SystemTokenMap = SystemTokenMap,\n  C extends Record<string, SystemComponentConfig> = Record<string, SystemComponentConfig>,\n> {\n  /** Design tokens — injected as CSS custom properties under --sys-{group}-{name} */\n  tokens?: T\n  /** Component presets */\n  components?: C\n  /** CSS variable prefix. Default: \"sys\" → --sys-color-primary */\n  prefix?: string\n  /** If true, auto-inject token CSS vars into :root on init. Default: true */\n  injectTokens?: boolean\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Token → CSS var helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction tokenVarName(prefix: string, group: string, name: string): string {\n  return `--${prefix}-${group}-${name}`\n}\n\nfunction tokenVarRef(prefix: string, group: string, name: string): string {\n  return `var(${tokenVarName(prefix, group, name)})`\n}\n\nfunction resolveTokenRef(tokens: SystemTokenMap, prefix: string, value: string): string {\n  // If value is \"token:colors.primary\" → resolve to var(--sys-colors-primary)\n  if (value.startsWith(\"token:\")) {\n    const path = value.slice(6)\n    const [group, name] = path.split(\".\")\n    if (group && name && tokens[group]?.[name] !== undefined) {\n      return tokenVarRef(prefix, group, name)\n    }\n  }\n  return value\n}\n\nfunction injectTokensToRoot(tokens: SystemTokenMap, prefix: string): void {\n  if (typeof document === \"undefined\") return\n\n  const styleId = `__tw-sys-tokens-${prefix}`\n  if (document.getElementById(styleId)) return\n\n  const style = document.createElement(\"style\")\n  style.id = styleId\n  style.textContent = _buildTokenCss(tokens, prefix)\n  document.head.appendChild(style)\n}\n\n/**\n * Build `:root { --prefix-group-name: value; ... }` CSS string.\n *\n * Fast path: generateSystemTokenCss() di Rust — eliminasi nested JS loop.\n * Fallback: JS string building (identik dengan implementasi sebelumnya).\n *\n * Dipakai oleh `injectTokensToRoot()` (init) dan `setTokens()` (runtime update).\n */\nfunction _buildTokenCss(tokens: SystemTokenMap, prefix: string): string {\n  const binding = getNativeBinding()\n  if (binding?.generateSystemTokenCss) {\n    return binding.generateSystemTokenCss(JSON.stringify(tokens), prefix)\n  }\n  // Browser fallback — native binding tidak tersedia di client.\n  // Output identik dengan generate_system_token_css() di native/src/domain/theme.rs\n  // (sorted groups, sorted names per group, deterministic).\n  return _buildTokenCssJs(tokens, prefix)\n}\n\nfunction _buildTokenCssJs(tokens: SystemTokenMap, prefix: string): string {\n  const groupKeys = Object.keys(tokens)\n  if (groupKeys.length === 0) return \":root {}\\n\"\n\n  const lines: string[] = [\":root {\"]\n  for (const group of groupKeys.slice().sort()) {\n    const map = tokens[group]\n    if (!map || typeof map !== \"object\" || Object.keys(map).length === 0) continue\n    for (const name of Object.keys(map).sort()) {\n      const value = map[name]\n      if (typeof value !== \"string\") continue\n      lines.push(`  --${prefix}-${group}-${name}: ${value};`)\n    }\n  }\n  lines.push(\"}\")\n  return lines.join(\"\\n\") + \"\\n\"\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Variant class resolver — replaces \"token:*\" references inside variant values\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction resolveComponentConfig(\n  config: SystemComponentConfig,\n  tokens: SystemTokenMap,\n  prefix: string\n): ComponentConfig {\n  const resolveStr = (s: string) => resolveTokenRef(tokens, prefix, s)\n\n  const base = resolveStr(config.base ?? \"\")\n  const systemBase = resolveStr(config.systemBase ?? \"\")\n  const mergedBase = [systemBase, base].filter(Boolean).join(\" \")\n\n  const variants: Record<string, Record<string, string>> = {}\n  for (const [variantKey, variantMap] of Object.entries(config.variants ?? {})) {\n    variants[variantKey] = {}\n    for (const [optKey, classes] of Object.entries(variantMap)) {\n      variants[variantKey][optKey] = classes.split(\" \").map(resolveStr).join(\" \")\n    }\n  }\n\n  const compoundVariants = (config.compoundVariants ?? []).map((cv) => {\n    const { class: cls, ...rest } = cv\n    return { class: resolveStr(cls), ...rest }\n  })\n\n  return {\n    base: mergedBase,\n    variants,\n    compoundVariants,\n    defaultVariants: config.defaultVariants ?? {},\n    state: config.state,\n    container: config.container,\n    containerName: config.containerName,\n  }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// StyledSystem instance type\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type SystemComponentFactory<C extends SystemComponentConfig> = (\n  overrides?: Partial<C>\n) => TwStyledComponent<ComponentConfig, string>\n\nexport type StyledSystemInstance<\n  T extends SystemTokenMap,\n  C extends Record<string, SystemComponentConfig>,\n> = {\n  [K in keyof C]: SystemComponentFactory<C[K]>\n} & {\n  /**\n   * Get the CSS variable reference for a token.\n   * @example ui.token(\"colors.primary\") → \"var(--sys-colors-primary)\"\n   */\n  token(path: string): string\n  /**\n   * Get the raw value of a token.\n   * @example ui.rawToken(\"colors.primary\") → \"#6366f1\"\n   */\n  rawToken(path: string): string | undefined\n  /**\n   * Update token values at runtime (re-injects into :root).\n   */\n  setTokens(updates: Partial<{ [G in keyof T]: Partial<T[G]> }>): void\n  /**\n   * Access the resolved component config for a registered component.\n   */\n  getConfig(name: keyof C): ComponentConfig | undefined\n  /**\n   * The tokens object (for reference).\n   */\n  tokens: T\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// createStyledSystem\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function createStyledSystem<\n  T extends SystemTokenMap = SystemTokenMap,\n  C extends Record<string, SystemComponentConfig> = Record<string, SystemComponentConfig>,\n>(config: StyledSystemConfig<T, C>): StyledSystemInstance<T, C> {\n  const prefix = config.prefix ?? \"sys\"\n  const tokens = (config.tokens ?? {}) as T\n  const componentDefs = config.components ?? ({} as C)\n  const shouldInject = config.injectTokens !== false\n\n  // Inject tokens into :root on first call (client only)\n  if (shouldInject && typeof window !== \"undefined\") {\n    injectTokensToRoot(tokens as SystemTokenMap, prefix)\n  }\n\n  // Cache resolved component configs\n  const resolvedConfigs = new Map<string, ComponentConfig>()\n\n  for (const [name, compCfg] of Object.entries(componentDefs)) {\n    resolvedConfigs.set(\n      name,\n      resolveComponentConfig(compCfg, tokens as SystemTokenMap, prefix)\n    )\n  }\n\n  // Build component factories\n  const factories: Record<string, SystemComponentFactory<SystemComponentConfig>> = {}\n\n  for (const [name, compCfg] of Object.entries(componentDefs)) {\n    const tag = compCfg.tag ?? \"div\"\n\n    factories[name] = (overrides?: Partial<SystemComponentConfig>) => {\n      const baseResolved = resolvedConfigs.get(name)!\n      const runtimeTag = tag as React.ElementType\n\n      if (!overrides || Object.keys(overrides).length === 0) {\n        return createComponent(runtimeTag, baseResolved) as unknown as TwStyledComponent<ComponentConfig, string>\n      }\n\n      // Merge overrides into resolved config\n      const overrideResolved = resolveComponentConfig(\n        overrides as SystemComponentConfig,\n        tokens as SystemTokenMap,\n        prefix\n      )\n\n      const merged: ComponentConfig = {\n        base: [baseResolved.base, overrideResolved.base].filter(Boolean).join(\" \"),\n        variants: {\n          ...(baseResolved.variants ?? undefined),\n          ...(overrideResolved.variants ?? undefined),\n        },\n        compoundVariants: [\n          ...(baseResolved.compoundVariants ?? []),\n          ...(overrideResolved.compoundVariants ?? []),\n        ],\n        defaultVariants: {\n          ...(baseResolved.defaultVariants ?? undefined),\n          ...(overrideResolved.defaultVariants ?? undefined),\n        },\n        state: overrideResolved.state ?? baseResolved.state,\n        container: overrideResolved.container ?? baseResolved.container,\n        containerName: overrideResolved.containerName ?? baseResolved.containerName,\n      }\n\n      return createComponent(runtimeTag, merged) as unknown as TwStyledComponent<ComponentConfig, string>\n    }\n  }\n\n  // Token utilities\n  function token(path: string): string {\n    const [group, name] = path.split(\".\")\n    if (!group || !name) return path\n    return tokenVarRef(prefix, group, name)\n  }\n\n  function rawToken(path: string): string | undefined {\n    const [group, name] = path.split(\".\")\n    if (!group || !name) return undefined\n    return (tokens as SystemTokenMap)[group]?.[name]\n  }\n\n  function setTokens(updates: Partial<{ [G in keyof T]: Partial<T[G]> }>): void {\n    if (typeof document === \"undefined\") return\n\n    // Find or create the :root style element\n    const styleId = `__tw-sys-tokens-${prefix}`\n    const style =\n      (document.getElementById(styleId) as HTMLStyleElement | null) ??\n      (() => {\n        const el = document.createElement(\"style\")\n        el.id = styleId\n        document.head.appendChild(el)\n        return el\n      })()\n\n    // Merge updates into tokens and re-generate\n    for (const [group, map] of Object.entries(updates)) {\n      if (!tokens[group as keyof T]) continue\n      for (const [name, value] of Object.entries(map as Record<string, string>)) {\n        ;(tokens as SystemTokenMap)[group][name] = value\n      }\n    }\n\n    style.textContent = _buildTokenCss(tokens as SystemTokenMap, prefix)\n  }\n\n  function getConfig(name: keyof C): ComponentConfig | undefined {\n    return resolvedConfigs.get(name as string)\n  }\n\n  return Object.assign(factories, {\n    token,\n    rawToken,\n    setTokens,\n    getConfig,\n    tokens,\n  }) as StyledSystemInstance<T, C>\n}","import { twMerge } from \"./merge\"\n\nexport interface StyledOptions {\n  base?: string\n  variants?: Record<string, Record<string, string>>\n  defaultVariants?: Record<string, string>\n  compoundVariants?: Array<{\n    variants: Record<string, string>\n    className: string\n  }>\n}\n\nexport type StyledProps = {\n  className?: string\n} & Record<string, string | number | boolean | undefined>\n\nfunction resolveVariantClass(options: StyledOptions, props: StyledProps): string[] {\n  const out: string[] = []\n  const variants = options.variants ?? {}\n  const defaults = options.defaultVariants ?? {}\n\n  for (const [variantName, valueMap] of Object.entries(variants)) {\n    const value = props[variantName] ?? defaults[variantName]\n    if (value === undefined) continue\n\n    const key = String(value)\n    const cls = valueMap[key]\n    if (cls) out.push(cls)\n  }\n\n  for (const compound of options.compoundVariants ?? []) {\n    const matches = Object.entries(compound.variants).every(([k, expected]) => {\n      const current = props[k] ?? defaults[k]\n      return String(current) === expected\n    })\n\n    if (matches) out.push(compound.className)\n  }\n\n  return out\n}\n\nexport function resolveStyledClassName(options: StyledOptions, props: StyledProps = {}): string {\n  const parts = [options.base ?? \"\", ...resolveVariantClass(options, props), props.className ?? \"\"]\n  return twMerge(...parts)\n}\n\nexport function styled(options: StyledOptions) {\n  return function getClassName(props: StyledProps = {}): string {\n    return resolveStyledClassName(options, props)\n  }\n}\n","/**\n * tailwind-styled-v4 v2 — twTheme\n *\n * UPGRADE #1: Tailwind v4 CSS Variables integration.\n *\n * Tailwind v4 uses @theme inline to expose design tokens as CSS custom properties:\n *   @theme inline {\n *     --color-background: var(--background);\n *     --color-foreground: var(--foreground);\n *     --font-sans: var(--font-geist-sans);\n *   }\n *\n * This module bridges tw() syntax with those CSS variables — zero config,\n * full IDE support, type-safe design tokens.\n *\n * @example\n * // Without twTheme (verbose, error-prone)\n * const Box = tw.div`bg-[var(--color-background)] text-[var(--color-foreground)]`\n *\n * // With twTheme (clean, type-safe)\n * const Box = tw.div`${t.bg(\"color-background\")} ${t.text(\"color-foreground\")}`\n *\n * // Or with createTheme for full project-level token map\n * const theme = createTheme({\n *   colors: { bg: \"color-background\", fg: \"color-foreground\", primary: \"color-primary\" },\n *   fonts:  { sans: \"font-sans\", mono: \"font-mono\" },\n * })\n * const Box = tw.div`bg-${theme.colors.bg} text-${theme.colors.fg}`\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Core helper — CSS variable reference\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Reference a CSS custom property in Tailwind v4 arbitrary value syntax.\n *\n * @example\n * cssVar(\"color-background\")         → \"var(--color-background)\"\n * cssVar(\"color-primary\", \"#3b82f6\") → \"var(--color-primary, #3b82f6)\"\n */\nexport function cssVar(varName: string, fallback?: string): string {\n  const name = varName.startsWith(\"--\") ? varName : `--${varName}`\n  return fallback ? `var(${name}, ${fallback})` : `var(${name})`\n}\n\n/**\n * Generate a Tailwind v4 arbitrary value that references a CSS variable.\n *\n * @example\n * twVar(\"bg\", \"color-background\")   → \"bg-[var(--color-background)]\"\n * twVar(\"text\", \"color-foreground\") → \"text-[var(--color-foreground)]\"\n * twVar(\"border\", \"color-border\", \"#e5e7eb\") → \"border-[var(--color-border,#e5e7eb)]\"\n */\nexport function twVar(property: string, varName: string, fallback?: string): string {\n  const ref = fallback ? `var(--${varName},${fallback})` : `var(--${varName})`\n  return `${property}-[${ref}]`\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Convenience shorthand builders\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const t = {\n  /** Background color from CSS variable: t.bg(\"color-primary\") → \"bg-[var(--color-primary)]\" */\n  bg: (v: string, fb?: string) => twVar(\"bg\", v, fb),\n  /** Text color from CSS variable */\n  text: (v: string, fb?: string) => twVar(\"text\", v, fb),\n  /** Border color from CSS variable */\n  border: (v: string, fb?: string) => twVar(\"border\", v, fb),\n  /** Ring color from CSS variable */\n  ring: (v: string, fb?: string) => twVar(\"ring\", v, fb),\n  /** Outline color from CSS variable */\n  outline: (v: string, fb?: string) => twVar(\"outline\", v, fb),\n  /** Fill color from CSS variable (SVG) */\n  fill: (v: string, fb?: string) => twVar(\"fill\", v, fb),\n  /** Stroke color from CSS variable (SVG) */\n  stroke: (v: string, fb?: string) => twVar(\"stroke\", v, fb),\n  /** Font family from CSS variable */\n  font: (v: string, fb?: string) => twVar(\"font\", v, fb),\n  /** Shadow from CSS variable */\n  shadow: (v: string, fb?: string) => twVar(\"shadow\", v, fb),\n  /** Any arbitrary property from CSS variable */\n  var: (property: string, v: string, fb?: string) => twVar(property, v, fb),\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// createTheme — project-level design token map\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface ThemeTokenMap {\n  colors?: Record<string, string>\n  fonts?: Record<string, string>\n  spacing?: Record<string, string>\n  [key: string]: Record<string, string> | undefined\n}\n\nexport type ResolvedThemeTokens<T extends ThemeTokenMap> = {\n  [Group in keyof T]: T[Group] extends Record<string, string>\n    ? {\n        [Token in keyof T[Group]]: string\n      }\n    : never\n}\n\n/**\n * Create a typed theme token map from your CSS variable names.\n * Returns helper functions that generate Tailwind v4 arbitrary values.\n *\n * @example\n * // Define your tokens (match your globals.css @theme block)\n * const theme = createTheme({\n *   colors: {\n *     bg:       \"color-background\",\n *     fg:       \"color-foreground\",\n *     primary:  \"color-primary\",\n *     muted:    \"color-muted\",\n *   },\n *   fonts: {\n *     sans: \"font-sans\",\n *     mono: \"font-mono\",\n *   },\n * })\n *\n * // Use in tw components\n * const Card = tw.div`\n *   bg-${theme.colors.bg}\n *   text-${theme.colors.fg}\n *   font-${theme.fonts.sans}\n * `\n * // → tw.div`bg-[var(--color-background)] text-[var(--color-foreground)] font-[var(--font-sans)]`\n *\n * // Use in cv()\n * const button = cv({\n *   base: `px-4 py-2 ${theme.colors.bg} ${theme.colors.fg}`,\n *   variants: { ... }\n * })\n */\nexport function createTheme<T extends ThemeTokenMap>(tokenMap: T): ResolvedThemeTokens<T> {\n  const resolved: Record<string, Record<string, string>> = {}\n\n  for (const group in tokenMap) {\n    resolved[group] = {}\n    const tokens = tokenMap[group]!\n    for (const name in tokens) {\n      const varName = tokens[name]\n      const prefix = getGroupPrefix(group)\n      resolved[group][name] = prefix ? twVar(prefix, varName) : cssVar(varName)\n    }\n  }\n\n  return resolved as ResolvedThemeTokens<T>\n}\n\nfunction getGroupPrefix(group: string): string {\n  const map: Record<string, string> = {\n    colors: \"bg\", // default to bg; user can use t.text() for text colors\n    fonts: \"font\",\n    spacing: \"p\",\n    shadows: \"shadow\",\n  }\n  return map[group] ?? \"\"\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Standard Tailwind v4 tokens\n//\n// Pre-built token references for the default next-app globals.css setup.\n// These match what Tailwind v4's @theme inline generates.\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Pre-built references for standard Tailwind v4 CSS variable tokens.\n * Works out of the box with next-app-standar-config globals.css.\n *\n * @example\n * import { v4Tokens } from \"tailwind-styled-v4\"\n *\n * const Page = tw.div`${v4Tokens.bg} ${v4Tokens.text}`\n * // → tw.div`bg-[var(--color-background)] text-[var(--color-foreground)]`\n */\nexport const v4Tokens = {\n  /** bg-[var(--color-background)] */\n  bg: twVar(\"bg\", \"color-background\"),\n  /** text-[var(--color-foreground)] */\n  text: twVar(\"text\", \"color-foreground\"),\n  /** font-[var(--font-sans)] */\n  fontSans: twVar(\"font\", \"font-sans\"),\n  /** font-[var(--font-mono)] */\n  fontMono: twVar(\"font\", \"font-mono\"),\n} as const\n","\"use client\"\n\nimport React from \"react\"\n\nimport type { TokenMap } from '@tailwind-styled/shared'\nexport type { TokenMap }\n\nexport type TokenSubscriber = (tokens: TokenMap) => void\n\nexport interface LiveTokenSet {\n  vars: Record<string, string>\n  get(name: string): string | undefined\n  set(name: string, value: string): void\n  setAll(tokens: TokenMap): void\n  snapshot(): TokenMap\n}\n\nexport interface LiveTokenEngineBridge {\n  getToken(name: string): string | undefined\n  getTokens(): TokenMap\n  setToken(name: string, value: string): void\n  setTokens(tokens: TokenMap): void\n  applyTokenSet(tokens: TokenMap): void\n  subscribeTokens(fn: TokenSubscriber): () => void\n  subscribe?(fn: TokenSubscriber): () => void\n}\n\ninterface LiveTokenEngineRuntime {\n  liveToken(tokens: TokenMap): LiveTokenSet\n  getToken(name: string): string | undefined\n  getTokens(): TokenMap\n  setToken(name: string, value: string): void\n  setTokens(tokens: TokenMap): void\n  applyTokenSet(tokens: TokenMap): void\n  generateTokenCssString(): string\n  subscribe(fn: TokenSubscriber): () => void\n  markHydrated(): void\n}\n\nconst TOKEN_ENGINE_KEY = \"__TW_TOKEN_ENGINE__\"\n\nexport function tokenVar(name: string): string {\n  const normalized = name.replace(/[^a-zA-Z0-9-]/g, \"-\").toLowerCase()\n  return `--tw-token-${normalized}`\n}\n\nexport function tokenRef(name: string): string {\n  return `var(${tokenVar(name)})`\n}\n\nconst buildRootCss = (tokens: TokenMap): string => {\n  const vars = Object.entries(tokens)\n    .map(([name, value]) => `  ${tokenVar(name)}: ${value};`)\n    .join(\"\\n\")\n  return `:root {\\n${vars}\\n}`\n}\n\nconst createLiveTokenEngine = (): LiveTokenEngineRuntime => {\n  const state = {\n    currentTokens: {} as TokenMap,\n    styleEl: null as HTMLStyleElement | null,\n    // Belum boleh nyentuh live DOM sampai komponen pertama selesai mount.\n    // Ini yang nyegah hydration mismatch: tanpa flag ini, liveToken() yang\n    // dipanggil di module top-level akan langsung document.documentElement\n    // .style.setProperty(...) saat bundle client di-evaluasi — JAUH sebelum\n    // React selesai hydrate — sehingga <html> versi live DOM beda dengan\n    // <html> yang di-render server (yang gak pernah nyentuh `document`).\n    hydrated: false,\n  }\n  const subscribers = new Set<TokenSubscriber>()\n\n  const syncStyleEl = (): void => {\n    if (!state.hydrated || typeof document === \"undefined\") return\n\n    if (!state.styleEl) {\n      const styleEl = document.createElement(\"style\")\n      styleEl.id = \"tw-live-tokens\"\n      styleEl.setAttribute(\"data-tw-tokens\", \"true\")\n      document.head.appendChild(styleEl)\n      state.styleEl = styleEl\n    }\n\n    state.styleEl.textContent = buildRootCss(state.currentTokens)\n  }\n\n  const notifySubscribers = (): void => {\n    const snapshot = { ...state.currentTokens }\n    for (const subscriber of subscribers) {\n      try {\n        subscriber(snapshot)\n      } catch {\n        // Intentionally ignore subscriber errors.\n      }\n    }\n  }\n\n  const setToken = (name: string, value: string): void => {\n    state.currentTokens = { ...state.currentTokens, [name]: value }\n    if (state.hydrated && typeof document !== \"undefined\") {\n      document.documentElement.style.setProperty(tokenVar(name), value)\n    }\n    syncStyleEl()\n    notifySubscribers()\n  }\n\n  const setTokens = (tokens: TokenMap): void => {\n    state.currentTokens = { ...state.currentTokens, ...tokens }\n    if (state.hydrated && typeof document !== \"undefined\") {\n      const root = document.documentElement\n      for (const [name, value] of Object.entries(tokens)) {\n        root.style.setProperty(tokenVar(name), value)\n      }\n    }\n    syncStyleEl()\n    notifySubscribers()\n  }\n\n  const applyTokenSet = (tokens: TokenMap): void => {\n    if (state.hydrated && typeof document !== \"undefined\") {\n      const root = document.documentElement\n      for (const name of Object.keys(state.currentTokens)) {\n        if (!(name in tokens)) {\n          root.style.removeProperty(tokenVar(name))\n        }\n      }\n      for (const [name, value] of Object.entries(tokens)) {\n        root.style.setProperty(tokenVar(name), value)\n      }\n    }\n\n    state.currentTokens = { ...tokens }\n    syncStyleEl()\n    notifySubscribers()\n  }\n\n  // Dipanggil sekali setelah mount pertama, EKSKLUSIF lewat useTokens()'s\n  // useEffect. Setelah ini true, semua write di atas balik sinkron langsung\n  // seperti semula.\n  //\n  // KENAPA TIDAK ADA FALLBACK rAF/timer DI SINI (root cause bug sebelumnya):\n  // Versi lama nyoba nge-flush via `requestAnimationFrame(() =>\n  // requestAnimationFrame(markHydrated))` sebagai fallback buat consumer\n  // imperative-only. Itu SALAH karena rAF terikat ke jadwal repaint browser,\n  // BUKAN ke commit React. Untuk tree client component yang besar/berat\n  // (banyak demo widget sekaligus) atau saat dev server lagi lambat\n  // (Turbopack first compile, Fast Refresh instrumentation), React bisa\n  // belum kelar nge-hydrate <html> di titik rAF itu nembak — begitu rAF\n  // nulis ke document.documentElement.style DI TENGAH proses hydrate, React\n  // lapor mismatch tepat di <html> (root element-nya), persis seperti yang\n  // dilaporkan: `<html style={{--tw-token-primary:...}}>` padahal\n  // layout.tsx gak pernah nulis style itu di JSX-nya.\n  // Dikonfirmasi via repro React + jsdom: nulis ke documentElement.style\n  // SEBELUM hydrateRoot() menghasilkan warning yang identik byte-per-byte\n  // dengan yang dilaporkan; begitu write yang sama dipindah ke dalam\n  // useEffect (jalan persis setelah commit), warning-nya hilang total.\n  // useEffect dijamin React baru jalan SETELAH seluruh tree (termasuk\n  // <html>) selesai di-commit/di-hydrate — gak ada race seperti rAF.\n  // Konsekuensinya: consumer yang cuma pakai liveToken().set() imperatif\n  // tanpa pernah render komponen yang panggil useTokens() (hook dari\n  // createUseTokens()) gak akan ke-flush ke DOM. Itu trade-off yang\n  // disengaja — render satu komponen yang pakai useTokens() di mana aja\n  // dalam tree buat \"bootstrap\" hydration-nya.\n  const markHydrated = (): void => {\n    if (state.hydrated || typeof document === \"undefined\") return\n    state.hydrated = true\n    const root = document.documentElement\n    for (const [name, value] of Object.entries(state.currentTokens)) {\n      root.style.setProperty(tokenVar(name), value)\n    }\n    syncStyleEl()\n  }\n\n  return {\n    markHydrated,\n    liveToken(tokens: TokenMap): LiveTokenSet {\n      setTokens(tokens)\n\n      const vars: Record<string, string> = {}\n      for (const name of Object.keys(tokens)) {\n        vars[name] = tokenRef(name)\n      }\n\n      return {\n        vars,\n        get(name: string) {\n          return state.currentTokens[name]\n        },\n        set(name: string, value: string) {\n          setToken(name, value)\n        },\n        setAll(nextTokens: TokenMap) {\n          setTokens(nextTokens)\n        },\n        snapshot() {\n          return { ...state.currentTokens }\n        },\n      }\n    },\n    getToken(name: string): string | undefined {\n      return state.currentTokens[name]\n    },\n    getTokens(): TokenMap {\n      return { ...state.currentTokens }\n    },\n    setToken,\n    setTokens,\n    applyTokenSet,\n    generateTokenCssString(): string {\n      return buildRootCss(state.currentTokens)\n    },\n    subscribe(fn: TokenSubscriber): () => void {\n      subscribers.add(fn)\n      return () => {\n        subscribers.delete(fn)\n      }\n    },\n  }\n}\n\nconst engine = createLiveTokenEngine()\n\nexport function liveToken(tokens: TokenMap): LiveTokenSet {\n  return engine.liveToken(tokens)\n}\n\nexport function setToken(name: string, value: string): void {\n  engine.setToken(name, value)\n}\n\nexport function setTokens(tokens: TokenMap): void {\n  engine.setTokens(tokens)\n}\n\nexport function applyTokenSet(tokens: TokenMap): void {\n  engine.applyTokenSet(tokens)\n}\n\nexport function getToken(name: string): string | undefined {\n  return engine.getToken(name)\n}\n\nexport function getTokens(): TokenMap {\n  return engine.getTokens()\n}\n\nexport function subscribeTokens(fn: TokenSubscriber): () => void {\n  return engine.subscribe(fn)\n}\n\nexport function generateTokenCssString(): string {\n  return engine.generateTokenCssString()\n}\n\nexport function createUseTokens() {\n  return function useTokens(): TokenMap {\n    // useSyncExternalStore untuk konsistensi SSR/client:\n    // - getServerSnapshot() return empty object → SSR render tanpa tokens\n    // - getSnapshot() return live tokens di client setelah hydration\n    // Ini menghilangkan hydration mismatch karena server dan client\n    // initial render keduanya return {} (empty), lalu useEffect update\n    // ke nilai aktual via subscriber.\n    const [tokens, setTokensState] = React.useState<TokenMap>({})\n\n    React.useEffect(() => {\n      // Baru sekarang aman nyentuh document.documentElement — hydration\n      // udah pasti selesai di titik ini. markHydrated() flush token yang\n      // sempat ditunda dari liveToken() init call (lihat createLiveTokenEngine).\n      engine.markHydrated()\n      // Set ke nilai aktual setelah mount (client-only)\n      setTokensState(engine.getTokens())\n      return engine.subscribe((nextTokens) => setTokensState(nextTokens))\n    }, [])\n\n    return tokens\n  }\n}\n\nexport const liveTokenEngine: LiveTokenEngineBridge = {\n  getToken: engine.getToken,\n  getTokens: engine.getTokens,\n  setToken: engine.setToken,\n  setTokens: engine.setTokens,\n  applyTokenSet: engine.applyTokenSet,\n  subscribeTokens: engine.subscribe,\n  subscribe: engine.subscribe,\n}\n\ndeclare global {\n  interface Window {\n    __TW_TOKEN_ENGINE__?: LiveTokenEngineBridge\n  }\n}\n\nconst globalTokenEngine = globalThis as typeof globalThis & {\n  [TOKEN_ENGINE_KEY]?: LiveTokenEngineBridge\n}\n\nglobalTokenEngine[TOKEN_ENGINE_KEY] = liveTokenEngine\nif (typeof window !== \"undefined\") {\n  window.__TW_TOKEN_ENGINE__ = liveTokenEngine\n}","import React from \"react\"\n\nexport interface SubComponentProps {\n  children?: React.ReactNode\n  className?: string\n}\n\nexport interface SubComponentEntry {\n  name: string\n  component: React.FC<SubComponentProps>\n  defaultClasses?: string\n}\n\nconst subComponentRegistry = new Map<string, SubComponentEntry>()\n\nexport function registerSubComponent(entry: SubComponentEntry): void {\n  subComponentRegistry.set(entry.name, entry)\n}\n\nexport function getSubComponent(name: string): SubComponentEntry | undefined {\n  return subComponentRegistry.get(name)\n}\n\nexport function getAllSubComponents(): SubComponentEntry[] {\n  return Array.from(subComponentRegistry.values())\n}\n\nexport function withSubComponents<T extends object>(\n  Component: T,\n  subComponentNames: string[]\n): T & Record<string, React.FC<SubComponentProps>> {\n  const result = { ...Component } as Record<string, unknown>\n  for (const name of subComponentNames) {\n    const entry = getSubComponent(name)\n    if (entry) result[name] = entry.component\n  }\n  return result as T & Record<string, React.FC<SubComponentProps>>\n}\n\nregisterSubComponent({\n  name: \"icon\",\n  component: ({ children, className }) => React.createElement(\"span\", { className }, children),\n  defaultClasses: \"\",\n})\n\nregisterSubComponent({\n  name: \"text\",\n  component: ({ children, className }) => React.createElement(\"span\", { className }, children),\n  defaultClasses: \"\",\n})\n\nregisterSubComponent({\n  name: \"badge\",\n  component: ({ children, className }) =>\n    React.createElement(\n      \"span\",\n      {\n        className: `ml-2 px-2 py-0.5 text-xs rounded-full bg-red-500 text-white ${className || \"\"}`,\n      },\n      children\n    ),\n  defaultClasses: \"ml-2 px-2 py-0.5 text-xs rounded-full bg-red-500 text-white\",\n})\n\nregisterSubComponent({\n  name: \"header\",\n  component: ({ children, className }) =>\n    React.createElement(\"header\", { className: `font-bold text-lg ${className || \"\"}` }, children),\n  defaultClasses: \"font-bold text-lg\",\n})\n\nregisterSubComponent({\n  name: \"body\",\n  component: ({ children, className }) =>\n    React.createElement(\"div\", { className: `flex-1 ${className || \"\"}` }, children),\n  defaultClasses: \"flex-1\",\n})\n\nregisterSubComponent({\n  name: \"footer\",\n  component: ({ children, className }) =>\n    React.createElement(\"footer\", { className: `border-t pt-4 ${className || \"\"}` }, children),\n  defaultClasses: \"border-t pt-4\",\n})\n\nregisterSubComponent({\n  name: \"content\",\n  component: ({ children, className }) => React.createElement(\"div\", { className }, children),\n  defaultClasses: \"\",\n})\n\nregisterSubComponent({\n  name: \"title\",\n  component: ({ children, className }) =>\n    React.createElement(\"div\", { className: `font-semibold ${className || \"\"}` }, children),\n  defaultClasses: \"font-semibold\",\n})\n\nregisterSubComponent({\n  name: \"message\",\n  component: ({ children, className }) =>\n    React.createElement(\"div\", { className: `text-sm ${className || \"\"}` }, children),\n  defaultClasses: \"text-sm\",\n})\n\nregisterSubComponent({\n  name: \"close\",\n  component: ({ children, className }) =>\n    React.createElement(\"span\", { className: `cursor-pointer ${className || \"\"}` }, children),\n  defaultClasses: \"cursor-pointer\",\n})\n\nregisterSubComponent({\n  name: \"image\",\n  component: ({ className }) => React.createElement(\"img\", { className }),\n  defaultClasses: \"\",\n})\n"],"mappings":"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","names":["__getOwnPropNames","React","twMerge","_fnvHash6","rules","result","merged","extended","baseComponent","component","result","React","key","variantKeys","cv","setTokens","React","setToken","setTokens","applyTokenSet","React"]}