tailwind-styled-v4 1.0.1 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animate.cjs +252 -0
- package/dist/animate.cjs.map +1 -0
- package/dist/animate.d.cts +117 -0
- package/dist/animate.d.ts +117 -0
- package/dist/animate.js +245 -0
- package/dist/animate.js.map +1 -0
- package/dist/astTransform-ua-eapqs.d.cts +41 -0
- package/dist/astTransform-ua-eapqs.d.ts +41 -0
- package/dist/compiler.cjs +3594 -0
- package/dist/compiler.cjs.map +1 -0
- package/dist/compiler.d.cts +716 -0
- package/dist/compiler.d.ts +716 -0
- package/dist/compiler.js +3535 -0
- package/dist/compiler.js.map +1 -0
- package/dist/css.cjs +71 -0
- package/dist/css.cjs.map +1 -0
- package/dist/css.d.cts +45 -0
- package/dist/css.d.ts +45 -0
- package/dist/css.js +62 -0
- package/dist/css.js.map +1 -0
- package/dist/devtools.cjs +959 -0
- package/dist/devtools.cjs.map +1 -0
- package/dist/devtools.d.cts +22 -0
- package/dist/devtools.d.ts +22 -0
- package/dist/devtools.js +952 -0
- package/dist/devtools.js.map +1 -0
- package/dist/index.cjs +1058 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +584 -0
- package/dist/index.d.ts +449 -980
- package/dist/index.js +1021 -3
- package/dist/index.js.map +1 -1
- package/dist/next.cjs +268 -0
- package/dist/next.cjs.map +1 -0
- package/dist/next.d.cts +45 -0
- package/dist/next.d.ts +45 -0
- package/dist/next.js +261 -0
- package/dist/next.js.map +1 -0
- package/dist/plugins.cjs +396 -0
- package/dist/plugins.cjs.map +1 -0
- package/dist/plugins.d.cts +231 -0
- package/dist/plugins.d.ts +231 -0
- package/dist/plugins.js +381 -0
- package/dist/plugins.js.map +1 -0
- package/dist/preset.cjs +129 -0
- package/dist/preset.cjs.map +1 -0
- package/dist/preset.d.cts +249 -0
- package/dist/preset.d.ts +249 -0
- package/dist/preset.js +124 -0
- package/dist/preset.js.map +1 -0
- package/dist/theme.cjs +154 -0
- package/dist/theme.cjs.map +1 -0
- package/dist/theme.d.cts +181 -0
- package/dist/theme.d.ts +181 -0
- package/dist/theme.js +148 -0
- package/dist/theme.js.map +1 -0
- package/dist/turbopackLoader.cjs +2689 -0
- package/dist/turbopackLoader.cjs.map +1 -0
- package/dist/turbopackLoader.d.cts +22 -0
- package/dist/turbopackLoader.d.ts +22 -0
- package/dist/turbopackLoader.js +2681 -0
- package/dist/turbopackLoader.js.map +1 -0
- package/dist/vite.cjs +105 -0
- package/dist/vite.cjs.map +1 -0
- package/dist/vite.d.cts +22 -0
- package/dist/vite.d.ts +22 -0
- package/dist/vite.js +96 -0
- package/dist/vite.js.map +1 -0
- package/dist/webpackLoader.cjs +2670 -0
- package/dist/webpackLoader.cjs.map +1 -0
- package/dist/webpackLoader.d.cts +24 -0
- package/dist/webpackLoader.d.ts +24 -0
- package/dist/webpackLoader.js +2662 -0
- package/dist/webpackLoader.js.map +1 -0
- package/package.json +62 -32
- package/CHANGELOG.md +0 -75
- package/LICENSE +0 -21
- package/README.md +0 -608
- package/dist/cli/init.js +0 -208
- package/dist/compiler/index.d.mts +0 -214
- package/dist/compiler/index.d.ts +0 -214
- package/dist/compiler/index.js +0 -546
- package/dist/compiler/index.js.map +0 -1
- package/dist/compiler/index.mjs +0 -504
- package/dist/compiler/index.mjs.map +0 -1
- package/dist/index.d.mts +0 -1115
- package/dist/index.mjs +0 -4
- package/dist/index.mjs.map +0 -1
- package/dist/turbopack-loader.js +0 -232
- package/dist/webpack-loader.js +0 -213
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/createComponent.ts","../src/utils/isObject.ts","../src/runtime/responsiveEngine.ts","../src/theme/themeStore.ts","../src/theme/tokenResolver.ts","../src/runtime/propEngine.ts","../src/runtime/variantEngine.ts","../src/runtime/compoundVariant.ts","../src/plugins/pluginEngine.ts","../src/core/templateParser.ts","../src/core/twProxy.ts","../src/core/cv.ts","../src/core/withTw.ts","../src/plugins/registerPlugin.ts","../src/plugins/builtinPlugins.ts","../src/runtime/classResolver.ts","../src/theme/defaultTheme.ts","../src/utils/hash.ts","../src/core/styledFactory.ts","../src/utils/merge.ts","../src/utils/classParser.ts","../src/utils/cx.ts","../src/validation/propValidator.ts","../src/plugins/tailwindV4Plugins.ts"],"names":["isObject","value","SCREENS","applyToken","raw","tokenFn","str","resolveResponsive","key","tokenResolver","classes","v","screen","currentTheme","listeners","setTheme","newTheme","namespace","incoming","fn","replaceTheme","theme","getTheme","getThemeNamespace","resetTheme","onThemeChange","listener","resolveThemeToken","ns","isThemeToken","resolveToken","resolveColor","resolveSpacing","resolveRadius","propMap","s","TW_PROP_KEYS","registerProp","resolver","resolveProps","props","cls","resolveVariants","variants","defaultVariants","style","resolveCompound","compounds","merged","compound","match","plugins","addPlugin","plugin","getPlugin","name","listPlugins","resolvePluginProps","resolveValue","obj","k","templateParser","strings","values","result","i","resolved","line","EXTRA_FILTER","shouldForwardProp","prop","createComponent","tag","config","isString","base","compoundVariants","BaseStyled","styled","Component","propClasses","variantClasses","compoundClasses","pluginClasses","twMerge","expr","extra","newConfig","makeTag","stringsOrConfig","exprs","HTML_TAGS","tagFactories","twCallable","component","tw","cv","withTw","baseOrOpts","displayName","WrappedComponent","forwardRef","ref","twProps","restProps","mergedClassName","React","attachTw","registerPlugin","_loaded","loadBuiltinPlugins","resolveClasses","mergedProps","loadDefaultTheme","loadDarkTheme","djb2","hash","hashClass","input","hashNumber","componentName","EXTRA_BLOCKED","blockProp","allowProp","styledFactory","mergeClasses","parseClassString","c","normalizeClasses","splitModifiers","modifiers","isValidClass","getModifier","idx","stripModifier","groupByModifier","groups","mod","cx","inputs","parts","flatten","out","cxm","VALID_SCREENS","KNOWN_TW_PROPS","validateVariantProps","schema","buildSchema","loadTypographyPlugin","loadFormsPlugin","loadAspectPlugin","PRESETS","loadContainerQueryPlugin","loadAnimationPlugin","loadInteractivityPlugin","loadAllV4Plugins"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * tailwind-styled-v4 — createComponent (PRO Engine)\n *\n * Core factory that wires together:\n * - styled-components (theming, SSR, SC ecosystem)\n * - propEngine (inline prop → class)\n * - variantEngine (CVA-style variants)\n * - compoundVariant engine\n * - pluginEngine (extensible via registerPlugin)\n * - tailwind-merge (conflict-free class resolution)\n * - shouldForwardProp (no tw props leaking to DOM)\n *\n * Supports two call signatures:\n * createComponent(\"div\", \"p-4 bg-zinc-900\")\n * createComponent(\"button\", { base, variants, compoundVariants, defaultVariants })\n *\n * Returns a component with .extend() for chaining.\n */\n\nimport styled from \"styled-components\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { resolveProps, TW_PROP_KEYS } from \"../runtime/propEngine\"\nimport { resolveVariants } from \"../runtime/variantEngine\"\nimport { resolveCompound } from \"../runtime/compoundVariant\"\nimport { resolvePluginProps } from \"../plugins/pluginEngine\"\nimport { templateParser } from \"./templateParser\"\nimport type { ComponentConfig } from \"../types/component\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// shouldForwardProp — keep tw-specific props out of the DOM\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Extra non-tw props that must also be filtered */\nconst EXTRA_FILTER = new Set([\n \"variant\", \"size\", \"intent\", \"color\", \"shape\", \"tone\",\n])\n\nfunction shouldForwardProp(prop: string): boolean {\n if (EXTRA_FILTER.has(prop)) return false\n if (TW_PROP_KEYS.has(prop)) return false\n return true\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// createComponent\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function createComponent(\n tag: any,\n config: string | ComponentConfig\n): any {\n const isString = typeof config === \"string\"\n\n const base = isString ? (config as string) : (config.base ?? \"\")\n const variants = isString ? {} : (config.variants ?? {})\n const compoundVariants = isString ? [] : (config.compoundVariants ?? [])\n const defaultVariants = isString ? {} : (config.defaultVariants ?? {})\n\n // ── styled-components shell with shouldForwardProp ──────────────────────\n const BaseStyled = styled(tag).withConfig({\n shouldForwardProp,\n })<any>``\n\n // ── attrs() to merge all tw classes into className ───────────────────────\n const Component = styled(BaseStyled).attrs(\n (props: Record<string, any>) => {\n const propClasses = resolveProps(props)\n const variantClasses = resolveVariants(variants, props, defaultVariants)\n const compoundClasses = resolveCompound(compoundVariants, props)\n const pluginClasses = resolvePluginProps(props)\n\n return {\n className: twMerge(\n base,\n variantClasses,\n compoundClasses,\n propClasses,\n pluginClasses,\n props.className\n ),\n }\n }\n )``\n\n // ── .extend() — chain extra classes onto a component ────────────────────\n ;(Component as any).extend = (\n strings: TemplateStringsArray,\n ...expr: any[]\n ) => {\n const extra = templateParser(strings, expr)\n return createComponent(Component, {\n // Carry over existing config (non-string branch)\n ...(isString ? {} : (config as ComponentConfig)),\n base: twMerge(base, extra),\n })\n }\n\n // ── .withVariants() — attach/merge new variants without re-typing ────────\n ;(Component as any).withVariants = (\n newConfig: Pick<ComponentConfig, \"variants\" | \"compoundVariants\" | \"defaultVariants\">\n ) => {\n return createComponent(tag, {\n base,\n variants: { ...variants, ...(newConfig.variants ?? {}) },\n compoundVariants: [ ...compoundVariants, ...(newConfig.compoundVariants ?? []) ],\n defaultVariants: { ...defaultVariants, ...(newConfig.defaultVariants ?? {}) },\n })\n }\n\n return Component\n}\n","/**\n * Check if value is a plain object\n */\nexport function isObject(value: any): value is Record<string, any> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value)\n}","/**\n * tailwind-styled-v4 — Responsive Engine\n *\n * Converts a value or responsive object into Tailwind prefix classes.\n * Optionally resolves design token aliases before interpolation.\n *\n * @example\n * resolveResponsive(\"p\", 4) → \"p-4\"\n * resolveResponsive(\"p\", { sm:2, lg:8 }) → \"sm:p-2 lg:p-8\"\n * resolveResponsive(\"p\", { base:1, md:4 })→ \"p-1 md:p-4\"\n *\n * // With token resolver:\n * resolveResponsive(\"bg\", \"brand\", resolveColor) → \"bg-blue-600\"\n * resolveResponsive(\"bg\", { base:\"brand\", md:\"primary\" }, resolveColor)\n * → \"bg-blue-600 md:bg-blue-600\"\n */\n\nimport { isObject } from \"../utils/isObject\"\n\nconst SCREENS = [\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"] as const\ntype Screen = (typeof SCREENS)[number]\n\ntype ResponsiveValue<T = string | number> =\n | T\n | ({ base?: T } & Partial<Record<Screen, T>>)\n\n/**\n * Normalise a raw prop value to a string, then run it through an\n * optional token resolver (e.g. resolveColor, resolveRadius).\n */\nfunction applyToken(raw: any, tokenFn?: (v: string) => string): string {\n const str = String(raw)\n return tokenFn ? tokenFn(str) : str\n}\n\nexport function resolveResponsive(\n key: string,\n value: ResponsiveValue,\n /** Optional design-token resolver — called on every scalar value */\n tokenResolver?: (v: string) => string\n): string {\n if (!isObject(value)) {\n return `${key}-${applyToken(value, tokenResolver)}`\n }\n\n const classes: string[] = []\n const v = value as Record<string, any>\n\n // base (no screen prefix)\n if (v.base !== undefined) {\n classes.push(`${key}-${applyToken(v.base, tokenResolver)}`)\n }\n\n for (const screen of SCREENS) {\n if (v[screen] !== undefined) {\n classes.push(`${screen}:${key}-${applyToken(v[screen], tokenResolver)}`)\n }\n }\n\n return classes.join(\" \")\n}\n","/**\n * tailwind-styled-v4 — Theme Store\n *\n * Global theme store that bridges tw token aliases to actual Tailwind classes.\n * Supports deep merging, change subscriptions, and SSR-safe usage.\n *\n * @example\n * setTheme({\n * colors: { brand: \"blue-600\", muted: \"zinc-500\" },\n * radius: { button: \"lg\", card: \"2xl\" },\n * spacing: { section: \"16\", page: \"24\" }\n * })\n *\n * // In propEngine, bg=\"brand\" → resolves to bg-blue-600\n */\n\nexport interface TailwindTheme {\n colors?: Record<string, string>\n spacing?: Record<string, string>\n radius?: Record<string, string>\n shadow?: Record<string, string>\n font?: Record<string, string>\n fontSize?: Record<string, string>\n opacity?: Record<string, string>\n duration?: Record<string, string>\n /** Arbitrary custom token namespace */\n [key: string]: Record<string, string> | undefined\n}\n\nexport type ThemeListener = (theme: TailwindTheme) => void\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Internal state\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet currentTheme: TailwindTheme = {}\nconst listeners: Set<ThemeListener> = new Set()\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Core API\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Merge new theme tokens into the global theme.\n * Notifies all subscribers after update.\n */\nexport function setTheme(newTheme: TailwindTheme): void {\n // Deep merge per namespace\n for (const namespace in newTheme) {\n const incoming = newTheme[namespace]\n if (!incoming) continue\n\n currentTheme[namespace] = {\n ...(currentTheme[namespace] ?? {}),\n ...incoming,\n }\n }\n\n listeners.forEach(fn => fn(currentTheme))\n}\n\n/**\n * Replace the entire theme (non-merging).\n */\nexport function replaceTheme(theme: TailwindTheme): void {\n currentTheme = { ...theme }\n listeners.forEach(fn => fn(currentTheme))\n}\n\n/**\n * Get current theme state (shallow copy to prevent mutation).\n */\nexport function getTheme(): TailwindTheme {\n return { ...currentTheme }\n}\n\n/**\n * Get a specific namespace from the theme.\n */\nexport function getThemeNamespace(\n namespace: keyof TailwindTheme\n): Record<string, string> {\n return { ...(currentTheme[namespace] ?? {}) }\n}\n\n/**\n * Reset theme to empty state. Useful in tests.\n */\nexport function resetTheme(): void {\n currentTheme = {}\n listeners.forEach(fn => fn(currentTheme))\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Subscription API\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Subscribe to theme changes.\n * Returns an unsubscribe function.\n *\n * @example\n * const unsub = onThemeChange(theme => {\n * console.log(\"Theme changed:\", theme)\n * })\n * unsub() // cleanup\n */\nexport function onThemeChange(listener: ThemeListener): () => void {\n listeners.add(listener)\n return () => listeners.delete(listener)\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Token access helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Resolve a token alias to its theme value.\n * Returns the original value unchanged if no token matches.\n *\n * @example\n * // theme.colors = { brand: \"blue-600\" }\n * resolveThemeToken(\"colors\", \"brand\") → \"blue-600\"\n * resolveThemeToken(\"colors\", \"zinc-500\") → \"zinc-500\" (passthrough)\n */\nexport function resolveThemeToken(\n namespace: string,\n value: string\n): string {\n const ns = currentTheme[namespace]\n if (!ns) return value\n return ns[value] ?? value\n}\n\n/**\n * Check if a value is a registered theme token.\n */\nexport function isThemeToken(namespace: string, value: string): boolean {\n return !!(currentTheme[namespace]?.[value])\n}\n","/**\n * tailwind-styled-v4 — Token Resolver\n *\n * Resolves design token aliases → Tailwind class segments.\n * Used by propEngine to support semantic color names, spacing aliases, etc.\n *\n * @example\n * // theme: { colors: { brand: \"blue-600\", danger: \"red-500\" } }\n * resolveToken(\"colors\", \"brand\") → \"blue-600\"\n * resolveToken(\"colors\", \"danger\") → \"red-500\"\n * resolveToken(\"colors\", \"zinc-900\") → \"zinc-900\" (passthrough)\n *\n * resolveToken(\"radius\", \"card\") → \"2xl\" (if themed)\n * resolveToken(\"radius\", \"md\") → \"md\" (passthrough)\n */\n\nimport { resolveThemeToken } from \"./themeStore\"\n\nexport type TokenNamespace =\n | \"colors\"\n | \"spacing\"\n | \"radius\"\n | \"shadow\"\n | \"font\"\n | \"fontSize\"\n | \"opacity\"\n | \"duration\"\n | (string & {})\n\n/**\n * Resolve a value through the token system.\n * Multi-level: first checks theme tokens, then returns raw value.\n */\nexport function resolveToken(namespace: TokenNamespace, value: string): string {\n return resolveThemeToken(namespace, value)\n}\n\n/**\n * Resolve a color token → Tailwind color class segment.\n * Supports:\n * \"brand\" → theme.colors.brand → \"blue-600\"\n * \"blue-600\" → passthrough\n * \"white\"/\"black\" → passthrough\n *\n * @example\n * resolveColor(\"brand\") → \"blue-600\"\n * resolveColor(\"zinc-500\") → \"zinc-500\"\n */\nexport function resolveColor(value: string): string {\n return resolveToken(\"colors\", value)\n}\n\n/**\n * Resolve a spacing token.\n *\n * @example\n * resolveSpacing(\"section\") → \"16\" (if theme.spacing.section = \"16\")\n * resolveSpacing(\"4\") → \"4\" (passthrough)\n */\nexport function resolveSpacing(value: string | number): string {\n if (typeof value === \"number\") return String(value)\n return resolveToken(\"spacing\", value)\n}\n\n/**\n * Resolve a border-radius token.\n *\n * @example\n * resolveRadius(\"card\") → \"2xl\" (if themed)\n * resolveRadius(\"lg\") → \"lg\" (passthrough)\n */\nexport function resolveRadius(value: string): string {\n return resolveToken(\"radius\", value)\n}\n\n/**\n * Resolve multiple tokens at once.\n * Returns a Record of resolved values.\n *\n * @example\n * resolveTokens(\"colors\", [\"brand\", \"muted\", \"zinc-900\"])\n * → { brand: \"blue-600\", muted: \"zinc-500\", \"zinc-900\": \"zinc-900\" }\n */\nexport function resolveTokens(\n namespace: TokenNamespace,\n values: string[]\n): Record<string, string> {\n const result: Record<string, string> = {}\n for (const v of values) {\n result[v] = resolveToken(namespace, v)\n }\n return result\n}\n","/**\n * tailwind-styled-v4 — PRO Prop Engine\n *\n * Converts React props → Tailwind class strings.\n * Supports responsive objects: p={{ sm: 2, md: 4, lg: 8 }}\n * Supports theme tokens: bg=\"brand\" → bg-blue-600\n */\n\nimport { resolveResponsive } from \"./responsiveEngine\"\nimport {\n resolveColor,\n resolveSpacing,\n resolveRadius,\n resolveToken,\n} from \"../theme/tokenResolver\"\n\ntype PropResolver = (value: any) => string\n\nconst propMap: Record<string, PropResolver> = {\n\n // ── Padding ───────────────────────────────────────────\n // Spacing tokens: p=\"section\" → p-16 (if theme.spacing.section = \"16\")\n p: v => resolveResponsive(\"p\", v, resolveSpacing),\n px: v => resolveResponsive(\"px\", v, resolveSpacing),\n py: v => resolveResponsive(\"py\", v, resolveSpacing),\n pt: v => resolveResponsive(\"pt\", v, resolveSpacing),\n pb: v => resolveResponsive(\"pb\", v, resolveSpacing),\n pl: v => resolveResponsive(\"pl\", v, resolveSpacing),\n pr: v => resolveResponsive(\"pr\", v, resolveSpacing),\n\n // ── Margin ────────────────────────────────────────────\n m: v => resolveResponsive(\"m\", v, resolveSpacing),\n mx: v => resolveResponsive(\"mx\", v, resolveSpacing),\n my: v => resolveResponsive(\"my\", v, resolveSpacing),\n mt: v => resolveResponsive(\"mt\", v, resolveSpacing),\n mb: v => resolveResponsive(\"mb\", v, resolveSpacing),\n ml: v => resolveResponsive(\"ml\", v, resolveSpacing),\n mr: v => resolveResponsive(\"mr\", v, resolveSpacing),\n\n // ── Gap / Space ───────────────────────────────────────\n gap: v => resolveResponsive(\"gap\", v, resolveSpacing),\n gapX: v => resolveResponsive(\"gap-x\", v, resolveSpacing),\n gapY: v => resolveResponsive(\"gap-y\", v, resolveSpacing),\n spaceX: v => resolveResponsive(\"space-x\", v, resolveSpacing),\n spaceY: v => resolveResponsive(\"space-y\", v, resolveSpacing),\n\n // ── Sizing ────────────────────────────────────────────\n // No token namespace for sizing — passthrough\n w: v => resolveResponsive(\"w\", v),\n h: v => resolveResponsive(\"h\", v),\n size: v => resolveResponsive(\"size\", v),\n minW: v => resolveResponsive(\"min-w\", v),\n maxW: v => resolveResponsive(\"max-w\", v),\n minH: v => resolveResponsive(\"min-h\", v),\n maxH: v => resolveResponsive(\"max-h\", v),\n\n // ── Colors ────────────────────────────────────────────\n // Color tokens: bg=\"brand\" → bg-blue-600\n bg: v => resolveResponsive(\"bg\", v, resolveColor),\n text: v => resolveResponsive(\"text\", v, resolveColor),\n border: v => v === true ? \"border\" : resolveResponsive(\"border\", v, resolveColor),\n ring: v => v === true ? \"ring\" : resolveResponsive(\"ring\", v, resolveColor),\n ringColor: v => resolveResponsive(\"ring\", v, resolveColor),\n fill: v => resolveResponsive(\"fill\", v, resolveColor),\n stroke: v => resolveResponsive(\"stroke\", v, resolveColor),\n accent: v => resolveResponsive(\"accent\", v, resolveColor),\n caret: v => resolveResponsive(\"caret\", v, resolveColor),\n divide: v => resolveResponsive(\"divide\", v, resolveColor),\n\n // ── Typography ────────────────────────────────────────\n // fontSize tokens: fontSize=\"heading\" → text-2xl\n font: v => resolveResponsive(\"font\", v, s => resolveToken(\"font\", s)),\n fontSize: v => resolveResponsive(\"text\", v, s => resolveToken(\"fontSize\", s)),\n leading: v => resolveResponsive(\"leading\", v),\n tracking: v => resolveResponsive(\"tracking\", v),\n align: v => `text-${v}`,\n whitespace: v => `whitespace-${v}`,\n truncate: v => v === true ? \"truncate\" : \"\",\n lineClamp: v => `line-clamp-${v}`,\n\n // ── Flexbox ───────────────────────────────────────────\n flex: v => v === true ? \"flex\" : v === false ? \"\" : resolveResponsive(\"flex\", v),\n flexDir: v => `flex-${v}`,\n flexRow: v => v === true ? \"flex-row\" : \"flex-col\",\n flexCol: v => v === true ? \"flex-col\" : \"flex-row\",\n items: v => resolveResponsive(\"items\", v),\n justify: v => resolveResponsive(\"justify\", v),\n content: v => resolveResponsive(\"content\", v),\n wrap: v => v === true ? \"flex-wrap\" : v === false ? \"flex-nowrap\" : `flex-${v}`,\n grow: v => v === true ? \"grow\" : v === false ? \"grow-0\" : `grow-${v}`,\n shrink: v => v === true ? \"shrink\" : v === false ? \"shrink-0\" : `shrink-${v}`,\n basis: v => resolveResponsive(\"basis\", v),\n self: v => resolveResponsive(\"self\", v),\n place: v => resolveResponsive(\"place-items\", v),\n\n // ── Grid ──────────────────────────────────────────────\n cols: v => resolveResponsive(\"grid-cols\", v),\n rows: v => resolveResponsive(\"grid-rows\", v),\n colSpan: v => resolveResponsive(\"col-span\", v),\n rowSpan: v => resolveResponsive(\"row-span\", v),\n colStart: v => `col-start-${v}`,\n colEnd: v => `col-end-${v}`,\n rowStart: v => `row-start-${v}`,\n rowEnd: v => `row-end-${v}`,\n\n // ── Layout ────────────────────────────────────────────\n display: v => `${v}`,\n overflow: v => resolveResponsive(\"overflow\", v),\n overflowX: v => `overflow-x-${v}`,\n overflowY: v => `overflow-y-${v}`,\n pos: v => `${v}`,\n position: v => `${v}`,\n z: v => resolveResponsive(\"z\", v),\n top: v => resolveResponsive(\"top\", v),\n right: v => resolveResponsive(\"right\", v),\n bottom: v => resolveResponsive(\"bottom\", v),\n left: v => resolveResponsive(\"left\", v),\n inset: v => resolveResponsive(\"inset\", v),\n insetX: v => resolveResponsive(\"inset-x\", v),\n insetY: v => resolveResponsive(\"inset-y\", v),\n\n // ── Border & Radius ───────────────────────────────────\n // Radius tokens: rounded=\"card\" → rounded-2xl\n rounded: v => v === true ? \"rounded\" : resolveResponsive(\"rounded\", v, resolveRadius),\n roundedT: v => resolveResponsive(\"rounded-t\", v, resolveRadius),\n roundedB: v => resolveResponsive(\"rounded-b\", v, resolveRadius),\n roundedL: v => resolveResponsive(\"rounded-l\", v, resolveRadius),\n roundedR: v => resolveResponsive(\"rounded-r\", v, resolveRadius),\n borderWidth: v => resolveResponsive(\"border\", v),\n borderStyle: v => `border-${v}`,\n outline: v => v === \"none\" ? \"outline-none\" : `outline-${v}`,\n outlineColor: v => `outline-${v}`,\n\n // ── Visual Effects ────────────────────────────────────\n // Opacity tokens: opacity=\"disabled\" → opacity-50\n opacity: v => resolveResponsive(\"opacity\", v, s => resolveToken(\"opacity\", s)),\n // Shadow tokens: shadow=\"card\" → shadow-xl\n shadow: v => v === true ? \"shadow\" : resolveResponsive(\"shadow\", v, s => resolveToken(\"shadow\", s)),\n shadowColor: v => `shadow-${resolveColor(String(v))}`,\n blur: v => v === true ? \"blur\" : resolveResponsive(\"blur\", v),\n brightness: v => resolveResponsive(\"brightness\", v),\n contrast: v => resolveResponsive(\"contrast\", v),\n saturate: v => resolveResponsive(\"saturate\", v),\n grayscale: v => v === true ? \"grayscale\" : \"\",\n invert: v => v === true ? \"invert\" : \"\",\n backdrop: v => resolveResponsive(\"backdrop-blur\", v),\n\n // ── Transition & Animation ────────────────────────────\n // Duration tokens: duration=\"fast\" → duration-150\n transition: v => v === true ? \"transition\" : `transition-${v}`,\n duration: v => resolveResponsive(\"duration\", v, s => resolveToken(\"duration\", s)),\n ease: v => `ease-${v}`,\n delay: v => resolveResponsive(\"delay\", v),\n animate: v => `animate-${v}`,\n\n // ── Interaction ───────────────────────────────────────\n cursor: v => `cursor-${v}`,\n select: v => `select-${v}`,\n pointer: v => v === true ? \"pointer-events-auto\" : \"pointer-events-none\",\n touch: v => `touch-${v}`,\n\n // ── Accessibility ─────────────────────────────────────\n sr: v => v === true ? \"sr-only\" : \"not-sr-only\",\n hidden: v => v === true ? \"hidden\" : \"\",\n visible: v => v === true ? \"visible\" : \"invisible\",\n\n // ── Misc ─────────────────────────────────────────────\n aspect: v => `aspect-${v}`,\n object: v => `object-${v}`,\n scroll: v => `scroll-${v}`,\n container: v => v === true ? \"container\" : \"\",\n}\n\n// All tw prop keys — used by shouldForwardProp to avoid leaking to DOM\nexport const TW_PROP_KEYS: ReadonlySet<string> = new Set(Object.keys(propMap))\n\n/**\n * Extend the prop map at runtime (for plugins)\n */\nexport function registerProp(key: string, resolver: PropResolver): void {\n (propMap as Record<string, PropResolver>)[key] = resolver\n ;(TW_PROP_KEYS as Set<string>).add(key)\n}\n\n/**\n * Resolve all tw props from a component props object → class string\n */\nexport function resolveProps(props: Record<string, any>): string {\n const classes: string[] = []\n\n for (const key in props) {\n const resolver = propMap[key]\n if (!resolver) continue\n\n const value = props[key]\n if (value === undefined || value === null || value === false) continue\n\n const cls = resolver(value)\n if (cls) classes.push(cls)\n }\n\n return classes.join(\" \").trim()\n}","/**\n * tailwind-styled-v4 — Variant Engine\n *\n * Resolves variant props → Tailwind classes.\n * Supports defaultVariants and boolean variants.\n *\n * @example\n * const variants = {\n * variant: { primary: \"bg-blue-500\", ghost: \"bg-transparent\" },\n * size: { sm: \"h-8 px-3\", lg: \"h-12 px-6\" }\n * }\n * resolveVariants(variants, { variant:\"primary\", size:\"lg\" }, { size:\"sm\" })\n * → \"bg-blue-500 h-12 px-6\"\n */\n\nimport type { VariantMap } from \"../types/variants\"\n\nexport function resolveVariants(\n variants: VariantMap,\n props: Record<string, any>,\n defaultVariants?: Record<string, string>\n): string {\n if (!variants) return \"\"\n\n const classes: string[] = []\n\n for (const key in variants) {\n // Prop value takes priority over defaultVariant\n const value = props[key] ?? defaultVariants?.[key]\n if (value === undefined || value === null) continue\n\n const variantMap = variants[key]\n const style = variantMap[String(value)]\n\n if (style) classes.push(style)\n }\n\n return classes.join(\" \").trim()\n}\n","/**\n * tailwind-styled-v4 — Compound Variant Engine\n *\n * Applies extra classes when multiple variant conditions are met simultaneously.\n *\n * @example\n * compoundVariants: [\n * { variant: \"primary\", size: \"lg\", class: \"shadow-lg shadow-blue-500/40\" },\n * { variant: \"ghost\", size: \"sm\", class: \"opacity-70\" }\n * ]\n */\n\nimport type { CompoundVariant } from \"../types/variants\"\n\nexport function resolveCompound(\n compounds: CompoundVariant[],\n props: Record<string, any>,\n defaultVariants?: Record<string, any>\n): string {\n if (!compounds || compounds.length === 0) return \"\"\n\n const classes: string[] = []\n // Merge defaultVariants so compound conditions fire correctly\n // even when the user doesn't pass explicit variant props.\n const merged = defaultVariants ? { ...defaultVariants, ...props } : props\n\n for (const compound of compounds) {\n let match = true\n\n for (const key in compound) {\n // \"class\" and \"className\" are output keys, not condition keys\n if (key === \"class\" || key === \"className\") continue\n\n if (merged[key] !== compound[key]) {\n match = false\n break\n }\n }\n\n if (match) {\n const cls = compound.class ?? compound.className\n if (cls) classes.push(cls)\n }\n }\n\n return classes.join(\" \").trim()\n}\n","/**\n * tailwind-styled-v4 — Plugin Engine\n *\n * Allows extending the prop system with custom prop resolvers.\n *\n * @example\n * registerPlugin({\n * name: \"motion\",\n * props: {\n * animate: v => `animate-${v}`,\n * motion: v => `motion-${v}`,\n * }\n * })\n */\n\ntype PluginResolver = (value: any) => string\n\nexport type TailwindPlugin = {\n name: string\n props: Record<string, PluginResolver>\n /** Optional: called once when plugin registers */\n onRegister?: () => void\n}\n\nconst plugins: Map<string, TailwindPlugin> = new Map()\n\nexport function addPlugin(plugin: TailwindPlugin): void {\n if (plugins.has(plugin.name)) {\n console.warn(`[tailwind-styled-v4] Plugin \"${plugin.name}\" already registered — overwriting`)\n }\n plugins.set(plugin.name, plugin)\n plugin.onRegister?.()\n}\n\nexport function getPlugin(name: string): TailwindPlugin | undefined {\n return plugins.get(name)\n}\n\nexport function listPlugins(): string[] {\n return Array.from(plugins.keys())\n}\n\nexport function resolvePluginProps(props: Record<string, any>): string {\n const classes: string[] = []\n\n for (const plugin of plugins.values()) {\n for (const key in plugin.props) {\n if (props[key] !== undefined) {\n const cls = plugin.props[key](props[key])\n if (cls) classes.push(cls)\n }\n }\n }\n\n return classes.join(\" \").trim()\n}\n","/**\n * tailwind-styled-v4 — Template Parser\n *\n * Processes tagged template literals for the tw proxy.\n * Handles strings, arrays, conditionals, and nested tw values.\n *\n * @example\n * templateParser([\"p-4 \", \" bg-zinc-900\"], [\"rounded-xl\"])\n * → \"p-4 rounded-xl bg-zinc-900\"\n *\n * // Conditional interpolation\n * const isActive = true\n * tw.div`p-4 ${isActive && \"bg-blue-500\"} rounded-xl`\n * → \"p-4 bg-blue-500 rounded-xl\"\n *\n * // Array interpolation\n * tw.div`p-4 ${[\"bg-zinc-900\", \"rounded-xl\"]}`\n * → \"p-4 bg-zinc-900 rounded-xl\"\n */\n\n/**\n * Resolve a single interpolated value to a string.\n * Handles: string, number, boolean, array, null/undefined.\n */\nfunction resolveValue(value: unknown): string {\n if (value === null || value === undefined || value === false) return \"\"\n if (typeof value === \"string\") return value\n if (typeof value === \"number\") return String(value)\n if (Array.isArray(value)) return value.map(resolveValue).filter(Boolean).join(\" \")\n if (typeof value === \"object\") {\n // Handle object form: { \"bg-blue-500\": true, \"bg-red-500\": false }\n const obj = value as Record<string, unknown>\n return Object.keys(obj).filter(k => obj[k]).join(\" \")\n }\n return \"\"\n}\n\n/**\n * Parse a tagged template literal into a normalized Tailwind class string.\n */\nexport function templateParser(\n strings: TemplateStringsArray | readonly string[],\n values: unknown[]\n): string {\n let result = \"\"\n\n for (let i = 0; i < strings.length; i++) {\n result += strings[i]\n\n if (i < values.length) {\n const resolved = resolveValue(values[i])\n if (resolved) result += \" \" + resolved\n }\n }\n\n return result\n .split(\"\\n\")\n .map(line => line.trim())\n .filter(Boolean)\n .join(\" \")\n .replace(/\\s{2,}/g, \" \")\n .trim()\n}\n\n/**\n * Simple tagged template literal for static class strings.\n * Can be used standalone without tw proxy.\n *\n * @example\n * const classes = cls`p-4 bg-zinc-900 rounded-xl`\n * // → \"p-4 bg-zinc-900 rounded-xl\"\n */\nexport function cls(\n strings: TemplateStringsArray,\n ...values: unknown[]\n): string {\n return templateParser(strings, values)\n}\n","/**\n * tailwind-styled-v4 v2 — tw\n *\n * ── Changelog v2 ──────────────────────────────────────────────────────────────\n *\n * FIX 1 — import { tw } undefined in Next.js / Vite\n * BEFORE: export const tw = new Proxy(fn, { get })\n * tsup splitting:true + Proxy = tw resolves undefined after chunk split\n * AFTER: Object.assign(callable, { div, button, ... })\n * Plain object, pre-built at module load, transparent to all bundlers\n *\n * FIX 2 — tw.div<Props>`${({ $isHover }) => ...}` TypeScript generic\n * BEFORE: TwTagFactory not generic → \"Binding element '$isHover' implicitly has 'any' type\"\n * AFTER: TwTagFactory<P> is a generic function → full type inference on template interpolations\n *\n * API (unchanged, backward compatible):\n * tw.div`p-4 bg-zinc-900`\n * tw.div<BadgeProps>`${({ $isHover }) => $isHover ? \"opacity-100\" : \"opacity-0\"}`\n * tw.button({ base, variants, compoundVariants, defaultVariants })\n * tw.div`...`.extend`extra`\n * tw(Link)`underline text-blue-400`\n * tw(Button)({ base, variants })\n */\n\nimport { createComponent } from \"./createComponent\"\nimport { templateParser } from \"./templateParser\"\nimport type { ComponentConfig } from \"../types/component\"\nimport type React from \"react\"\nimport type { JSX } from \"react\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Interpolation types (mirror styled-components API)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Valid values inside a tw template literal interpolation */\ntype Interpolation<P extends object> =\n | string\n | number\n | boolean\n | null\n | undefined\n | ((props: P) => string | number | boolean | null | undefined | Interpolation<P>)\n | Interpolation<P>[]\n\n// ─────────────────────────────────────────────────────────────────────────────\n// TwStyledComponent — result of every tw call\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface TwStyledComponent<P extends object = Record<string, any>>\n extends React.ForwardRefExoticComponent<P & Record<string, any>> {\n /** Chain extra classes: Card.extend`shadow-2xl ring-1` */\n extend<EP extends object = P>(\n strings: TemplateStringsArray,\n ...exprs: Interpolation<EP>[]\n ): TwStyledComponent<EP>\n\n /** Merge new variants onto existing component */\n withVariants(\n config: Pick<ComponentConfig, \"variants\" | \"compoundVariants\" | \"defaultVariants\">\n ): TwStyledComponent<P>\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// TwTagFactory — the function bound to each HTML tag\n// P = extra props (transient $props + custom typed interpolations)\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface TwTagFactory<E extends keyof JSX.IntrinsicElements = \"div\"> {\n // ① Template literal — no props typing\n (strings: TemplateStringsArray, ...exprs: Interpolation<JSX.IntrinsicElements[E]>[]): TwStyledComponent<JSX.IntrinsicElements[E]>\n\n // ① Template literal — WITH generic props: tw.div<BadgeProps>`...`\n <P extends object>(strings: TemplateStringsArray, ...exprs: Interpolation<JSX.IntrinsicElements[E] & P>[]): TwStyledComponent<JSX.IntrinsicElements[E] & P>\n\n // ② Object config — tw.button({ base, variants })\n (config: ComponentConfig): TwStyledComponent<JSX.IntrinsicElements[E]>\n\n // ② Object config WITH generic: tw.button<ButtonProps>({ base, variants })\n <P extends object>(config: ComponentConfig): TwStyledComponent<JSX.IntrinsicElements[E] & P>\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// TwObject — full tw type (all tags + callable for wrapping components)\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type TwObject = {\n [K in keyof JSX.IntrinsicElements]: TwTagFactory<K>\n} & {\n // tw(AnyComponent)`classes` — wrap any component\n <C extends React.ComponentType<any>>(component: C): TwComponentFactory<C>\n}\n\n/** Factory for wrapped React components — preserves original component's prop types */\nexport interface TwComponentFactory<C extends React.ComponentType<any>> {\n (strings: TemplateStringsArray, ...exprs: Interpolation<React.ComponentPropsWithRef<C>>[]): TwStyledComponent<React.ComponentPropsWithRef<C>>\n <P extends object>(strings: TemplateStringsArray, ...exprs: Interpolation<React.ComponentPropsWithRef<C> & P>[]): TwStyledComponent<React.ComponentPropsWithRef<C> & P>\n (config: ComponentConfig): TwStyledComponent<React.ComponentPropsWithRef<C>>\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// makeTag — factory for one tag / component\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction makeTag(tag: any): TwTagFactory<any> {\n return function (\n stringsOrConfig: TemplateStringsArray | ComponentConfig,\n ...exprs: any[]\n ): TwStyledComponent<any> {\n // Object config path: tw.button({ base, variants, ... })\n if (\n !Array.isArray(stringsOrConfig) &&\n typeof stringsOrConfig === \"object\" &&\n stringsOrConfig !== null\n ) {\n return createComponent(tag, stringsOrConfig as ComponentConfig) as any\n }\n // Template literal path: tw.div`p-4 bg-zinc-900`\n return createComponent(\n tag,\n templateParser(stringsOrConfig as TemplateStringsArray, exprs)\n ) as any\n } as TwTagFactory<any>\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// HTML tags — all tags pre-built at module load (no Proxy)\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst HTML_TAGS = [\n // Block\n \"div\", \"section\", \"article\", \"aside\", \"header\", \"footer\", \"main\", \"nav\",\n \"figure\", \"figcaption\", \"details\", \"summary\",\n // Headings\n \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\",\n // Text\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 // Lists\n \"ul\", \"ol\", \"li\", \"dl\", \"dt\", \"dd\",\n // Table\n \"table\", \"thead\", \"tbody\", \"tfoot\", \"tr\", \"th\", \"td\", \"caption\",\n \"colgroup\", \"col\",\n // Media\n \"img\", \"picture\", \"video\", \"audio\", \"source\", \"track\", \"canvas\",\n \"svg\", \"path\", \"circle\", \"rect\", \"line\", \"polyline\", \"polygon\",\n \"g\", \"defs\", \"use\", \"symbol\",\n // Form\n \"form\", \"input\", \"textarea\", \"select\", \"option\", \"optgroup\",\n \"button\", \"label\", \"fieldset\", \"legend\", \"output\", \"progress\",\n \"meter\", \"datalist\",\n // Interactive\n \"a\", \"area\", \"map\",\n // Embedded\n \"iframe\", \"embed\", \"object\",\n // Structural\n \"pre\", \"hr\", \"br\", \"wbr\",\n // Misc\n \"dialog\", \"menu\", \"template\", \"slot\",\n] as const\n\nconst tagFactories = {} as Record<string, TwTagFactory<any>>\nfor (const tag of HTML_TAGS) {\n tagFactories[tag] = makeTag(tag)\n}\n\n// tw is callable for wrapping components AND has all tag properties\n// Object.assign is fully transparent to bundlers (unlike Proxy)\nconst twCallable = function <C extends React.ComponentType<any>>(\n component: C\n): TwComponentFactory<C> {\n return makeTag(component) as any\n}\n\nexport const tw: TwObject = Object.assign(twCallable, tagFactories) as unknown as TwObject","/**\n * tailwind-styled-v4 — cv() (Class Variants)\n *\n * A standalone CVA-compatible function that works without styled-components.\n * Perfect for headless UI, shadcn/ui, or any className-based component.\n *\n * @example\n * const buttonCv = cv({\n * base: \"inline-flex items-center rounded-lg font-medium transition\",\n * variants: {\n * variant: {\n * primary: \"bg-blue-500 text-white hover:bg-blue-600\",\n * ghost: \"bg-transparent border hover:bg-zinc-800\",\n * },\n * size: {\n * sm: \"h-8 px-3 text-sm\",\n * md: \"h-10 px-4 text-sm\",\n * lg: \"h-12 px-6 text-base\",\n * }\n * },\n * compoundVariants: [\n * { variant: \"primary\", size: \"lg\", class: \"shadow-lg shadow-blue-500/30\" }\n * ],\n * defaultVariants: { variant: \"primary\", size: \"md\" }\n * })\n *\n * // Usage in a component:\n * buttonCv({ variant: \"ghost\", size: \"sm\" })\n * // → \"inline-flex items-center ... bg-transparent border hover:bg-zinc-800 h-8 px-3 text-sm\"\n */\n\nimport { twMerge } from \"tailwind-merge\"\n\nimport { resolveVariants } from \"../runtime/variantEngine\"\nimport { resolveCompound } from \"../runtime/compoundVariant\"\n\ntype CvProps<V extends Record<string, Record<string, string>>> = {\n [K in keyof V]?: keyof V[K]\n} & { className?: string }\n\nexport function cv<V extends Record<string, Record<string, string>>>(\n config: {\n base?: string\n variants?: V\n compoundVariants?: Array<{ class?: string; className?: string; [key: string]: any }>\n defaultVariants?: { [K in keyof V]?: keyof V[K] }\n }\n) {\n const {\n base = \"\",\n variants = {} as V,\n compoundVariants = [],\n defaultVariants = {} as any,\n } = config\n\n return function (props?: CvProps<V>): string {\n const merged = { ...(defaultVariants as any), ...(props ?? {}) }\n\n const variantClasses = resolveVariants(variants as any, merged)\n const compoundClasses = resolveCompound(compoundVariants, merged)\n\n return twMerge(base, variantClasses, compoundClasses, props?.className)\n }\n}\n","/**\n * tailwind-styled-v4 — withTw() HOC\n *\n * Higher-order component that injects tw prop support into ANY existing\n * React component — without requiring it to be rebuilt with tw.tag.\n *\n * Useful for:\n * - Third-party components (e.g. shadcn/ui, Radix UI primitives)\n * - Legacy components you don't own\n * - Any component that already accepts className\n *\n * @example\n * import { Button } from \"@/components/ui/button\" // shadcn Button\n * import { withTw } from \"tailwind-styled-v4\"\n *\n * const TwButton = withTw(Button)\n *\n * // Now supports all tw props:\n * <TwButton p={4} rounded=\"xl\" variant=\"primary\" size=\"lg\" />\n * // → <Button className=\"p-4 rounded-xl\" variant=\"primary\" size=\"lg\" />\n *\n * // Or as tagged template:\n * const StyledButton = withTw(Button, \"px-4 py-2 bg-blue-500\")\n */\n\nimport React, { forwardRef } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nimport { resolveProps, TW_PROP_KEYS } from \"../runtime/propEngine\"\nimport { resolvePluginProps } from \"../plugins/pluginEngine\"\n\nexport interface WithTwOptions {\n /** Extra base classes always applied */\n base?: string\n /** Forward ref to underlying component */\n forwardRef?: boolean\n /** Display name for DevTools */\n displayName?: string\n}\n\n/**\n * Wrap any component with tw prop support.\n * The wrapped component will accept all tw props (p, m, bg, text, etc.)\n * and merge them into className before forwarding to the inner component.\n */\nexport function withTw<T extends { className?: string; ref?: any }>(\n Component: React.ComponentType<T>,\n baseOrOpts: string | WithTwOptions = \"\"\n): React.ComponentType<T & Record<string, any>> {\n const base = typeof baseOrOpts === \"string\"\n ? baseOrOpts\n : (baseOrOpts.base ?? \"\")\n\n const displayName = typeof baseOrOpts === \"object\"\n ? (baseOrOpts.displayName ?? `withTw(${Component.displayName ?? Component.name ?? \"Component\"})`)\n : `withTw(${Component.displayName ?? Component.name ?? \"Component\"})`\n\n const WrappedComponent = forwardRef<any, T & Record<string, any>>(\n (props, ref) => {\n const twProps: Record<string, any> = {}\n const restProps: Record<string, any> = {}\n\n // Split tw props from rest\n for (const key in props) {\n if (TW_PROP_KEYS.has(key)) {\n twProps[key] = (props as any)[key]\n } else {\n restProps[key] = (props as any)[key]\n }\n }\n\n const propClasses = resolveProps(twProps)\n const pluginClasses = resolvePluginProps(twProps)\n\n const mergedClassName = twMerge(\n base,\n propClasses,\n pluginClasses,\n props.className\n )\n\n return React.createElement(Component, {\n ...restProps,\n ref,\n className: mergedClassName,\n } as any)\n }\n )\n\n WrappedComponent.displayName = displayName\n\n return WrappedComponent as any\n}\n\n/**\n * Attach tw prop support directly to a component (mutation-based, lighter weight).\n * Returns the same component reference with extended className logic.\n * Prefer withTw() for purity; use attachTw() when ref identity matters.\n */\nexport function attachTw<T extends { className?: string }>(\n Component: React.ComponentType<T>,\n base = \"\"\n): React.ComponentType<T & Record<string, any>> {\n return withTw(Component, base)\n}\n","/**\n * tailwind-styled-v4 — registerPlugin\n *\n * Public API for adding custom prop resolvers.\n */\n\nimport { addPlugin } from \"./pluginEngine\"\nimport type { TailwindPlugin } from \"./pluginEngine\"\n\nexport function registerPlugin(plugin: TailwindPlugin): void {\n if (!plugin.name || typeof plugin.name !== \"string\") {\n throw new Error(\"[tailwind-styled-v4] Plugin must have a non-empty string name\")\n }\n if (!plugin.props || typeof plugin.props !== \"object\") {\n throw new Error(`[tailwind-styled-v4] Plugin \"${plugin.name}\" must define a props object`)\n }\n addPlugin(plugin)\n}\n","/**\n * tailwind-styled-v4 — Built-in Plugins\n *\n * Optional curated plugins. Call loadBuiltinPlugins() in your app entry point.\n *\n * @example\n * // _app.tsx or layout.tsx\n * import { loadBuiltinPlugins } from \"tailwind-styled-v4\"\n * loadBuiltinPlugins()\n */\n\nimport { registerPlugin } from \"./registerPlugin\"\n\n// Guard: prevent re-registering on every hot-reload / multiple calls\nlet _loaded = false\n\nexport function loadBuiltinPlugins(): void {\n if (_loaded) return\n _loaded = true\n\n // ── Animation ───────────────────────────────────────────────────────────\n // NOTE: animate/duration/delay/ease sudah ada di propEngine's propMap.\n // Mendaftarkannya di sini juga akan menyebabkan double-resolution:\n // resolveProps DAN resolvePluginProps keduanya akan fire → duplikat kelas.\n // Plugin animation hanya menambahkan props yang belum ada di propEngine.\n registerPlugin({\n name: \"animation\",\n props: {\n motionSafe: v => v === true ? \"motion-safe:transition-all\" : \"\",\n motionReduce: v => v === true ? \"motion-reduce:transition-none\" : \"\",\n willChange: v => `will-change-${v}`,\n }\n })\n\n // ── Grid Helpers ─────────────────────────────────────────────────────────\n // NOTE: cols/rows/gridCols/gridRows sudah ada di propEngine.\n // Hanya tambahkan helpers yang genuinely missing.\n registerPlugin({\n name: \"grid\",\n props: {\n autoRows: v => `auto-rows-${v}`,\n autoCols: v => `auto-cols-${v}`,\n }\n })\n\n // ── Backdrop ─────────────────────────────────────────────────────────────\n registerPlugin({\n name: \"backdrop\",\n props: {\n backdropBlur: v => `backdrop-blur-${v}`,\n backdropBrightness: v => `backdrop-brightness-${v}`,\n backdropContrast: v => `backdrop-contrast-${v}`,\n backdropSaturate: v => `backdrop-saturate-${v}`,\n }\n })\n\n // ── Gradient ────────────────────────────────────────────────────────────\n registerPlugin({\n name: \"gradient\",\n props: {\n gradientFrom: v => `from-${v}`,\n gradientVia: v => `via-${v}`,\n gradientTo: v => `to-${v}`,\n gradient: v => `bg-gradient-to-${v}`,\n }\n })\n\n // ── Scroll Behavior ──────────────────────────────────────────────────────\n registerPlugin({\n name: \"scroll\",\n props: {\n scrollSmooth: v => v === true ? \"scroll-smooth\" : \"\",\n scrollAuto: v => v === true ? \"scroll-auto\" : \"\",\n snapAlign: v => `snap-${v}`,\n snapType: v => `snap-${v}`,\n }\n })\n\n // ── Print ────────────────────────────────────────────────────────────────\n registerPlugin({\n name: \"print\",\n props: {\n printHidden: v => v === true ? \"print:hidden\" : \"\",\n printBlock: v => v === true ? \"print:block\" : \"\",\n }\n })\n}\n","/**\n * tailwind-styled-v4 — Class Resolver\n *\n * Central resolver that combines all engines into a final className string.\n * Uses tailwind-merge to resolve class conflicts correctly.\n *\n * This is the canonical single-call API used externally (e.g. headless\n * components, server-side rendering, testing). createComponent() uses the\n * same engines directly for performance — keep the two in sync.\n */\n\nimport { twMerge } from \"tailwind-merge\"\n\nimport { resolveProps } from \"./propEngine\"\nimport { resolveVariants } from \"./variantEngine\"\nimport { resolveCompound } from \"./compoundVariant\"\nimport { resolvePluginProps } from \"../plugins/pluginEngine\"\nimport type { VariantMap, CompoundVariant } from \"../types/variants\"\n\nexport interface ResolveConfig {\n base: string\n variants?: VariantMap\n compoundVariants?: CompoundVariant[]\n defaultVariants?: Record<string, string>\n}\n\nexport function resolveClasses(\n config: ResolveConfig,\n props: Record<string, any>\n): string {\n const {\n base,\n variants = {},\n compoundVariants = [],\n defaultVariants = {}\n } = config\n\n // Merge defaultVariants so compound conditions fire correctly\n // when user doesn't pass explicit variant props — same logic as createComponent\n const mergedProps = { ...defaultVariants, ...props }\n\n const variantClasses = resolveVariants(variants, mergedProps, defaultVariants)\n const compoundClasses = resolveCompound(compoundVariants, mergedProps)\n const propClasses = resolveProps(props)\n const pluginClasses = resolvePluginProps(props)\n\n return twMerge(\n base,\n variantClasses,\n compoundClasses,\n propClasses,\n pluginClasses,\n props.className\n )\n}\n","/**\n * tailwind-styled-v4 — Default Theme\n *\n * Ready-to-use semantic token system.\n * Call loadDefaultTheme() once in your app entry point (_app.tsx / layout.tsx).\n *\n * @example\n * // app/layout.tsx\n * import { loadDefaultTheme } from \"tailwind-styled-v4\"\n * loadDefaultTheme()\n *\n * // Now you can use semantic tokens:\n * <Box bg=\"primary\" text=\"foreground\" rounded=\"card\" />\n * // → bg-blue-600 text-white rounded-2xl\n */\n\nimport { setTheme } from \"./themeStore\"\n\nexport function loadDefaultTheme(): void {\n setTheme({\n // ── Colors ─────────────────────────────────────────────────────────────\n colors: {\n // Brand\n primary: \"blue-600\",\n \"primary-hover\": \"blue-700\",\n \"primary-light\": \"blue-100\",\n\n secondary: \"violet-600\",\n \"secondary-hover\": \"violet-700\",\n\n // Semantic\n success: \"emerald-500\",\n warning: \"amber-500\",\n danger: \"red-500\",\n info: \"sky-500\",\n\n // Neutral\n foreground: \"white\",\n background: \"zinc-950\",\n surface: \"zinc-900\",\n \"surface-2\": \"zinc-800\",\n \"surface-3\": \"zinc-700\",\n\n muted: \"zinc-500\",\n subtle: \"zinc-400\",\n border: \"zinc-700\",\n \"border-light\": \"zinc-200\",\n\n // Text\n \"text-primary\": \"zinc-50\",\n \"text-secondary\": \"zinc-400\",\n \"text-muted\": \"zinc-600\",\n\n // Interactive\n link: \"blue-400\",\n \"link-hover\": \"blue-300\",\n },\n\n // ── Spacing ────────────────────────────────────────────────────────────\n spacing: {\n xs: \"2\",\n sm: \"4\",\n md: \"6\",\n lg: \"8\",\n xl: \"12\",\n \"2xl\": \"16\",\n \"3xl\": \"24\",\n section: \"16\",\n page: \"24\",\n },\n\n // ── Border Radius ──────────────────────────────────────────────────────\n radius: {\n none: \"none\",\n xs: \"sm\",\n sm: \"md\",\n md: \"lg\",\n lg: \"xl\",\n xl: \"2xl\",\n card: \"2xl\",\n button: \"lg\",\n badge: \"full\",\n pill: \"full\",\n input: \"md\",\n },\n\n // ── Shadows ────────────────────────────────────────────────────────────\n shadow: {\n xs: \"sm\",\n sm: \"md\",\n md: \"lg\",\n lg: \"xl\",\n xl: \"2xl\",\n card: \"xl\",\n modal: \"2xl\",\n none: \"none\",\n },\n\n // ── Typography ─────────────────────────────────────────────────────────\n font: {\n sans: \"sans\",\n mono: \"mono\",\n serif: \"serif\",\n },\n\n fontSize: {\n caption: \"xs\",\n small: \"sm\",\n body: \"base\",\n lead: \"lg\",\n title: \"xl\",\n heading: \"2xl\",\n display: \"4xl\",\n },\n\n // ── Transitions ────────────────────────────────────────────────────────\n duration: {\n fast: \"150\",\n normal: \"200\",\n slow: \"300\",\n slower: \"500\",\n },\n\n // ── Opacity ────────────────────────────────────────────────────────────\n opacity: {\n disabled: \"50\",\n muted: \"70\",\n subtle: \"40\",\n },\n })\n}\n\n/**\n * Load a minimal dark theme for fintech/crypto/Web3 UIs.\n * Matches aanragil.design token conventions.\n */\nexport function loadDarkTheme(): void {\n setTheme({\n colors: {\n primary: \"blue-500\",\n secondary: \"indigo-500\",\n accent: \"cyan-400\",\n background: \"zinc-950\",\n surface: \"zinc-900\",\n \"surface-2\": \"zinc-800\",\n foreground: \"zinc-50\",\n muted: \"zinc-500\",\n border: \"zinc-800\",\n success: \"emerald-400\",\n warning: \"amber-400\",\n danger: \"red-400\",\n },\n radius: {\n card: \"xl\",\n button: \"lg\",\n badge: \"full\",\n input: \"md\",\n },\n })\n}\n","/**\n * tailwind-styled-v4 — Deterministic Hash Utility\n *\n * Generates a short stable hash from a string.\n * Used for:\n * - data-tw attribute values in dev tools\n * - CSS @layer naming\n * - Component deduplication\n *\n * Algorithm: djb2 — fast, collision-resistant enough for our use case.\n *\n * @example\n * hashClass(\"div:p-4 bg-zinc-900\") → \"tw-3f2a1b\"\n */\n\n/**\n * djb2 hash — produces a 32-bit signed integer\n */\nfunction djb2(str: string): number {\n let hash = 5381\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) + hash) ^ str.charCodeAt(i)\n hash = hash >>> 0 // convert to unsigned 32-bit\n }\n return hash\n}\n\n/**\n * Returns a short hex hash string prefixed with \"tw-\".\n * Output is always 8 characters (tw- + 5 hex chars).\n *\n * @example\n * hashClass(\"div:p-4\") → \"tw-3f2a1\"\n * hashClass(\"button:bg-blue\") → \"tw-8c4d2\"\n */\nexport function hashClass(input: string): string {\n const n = djb2(input)\n return \"tw-\" + n.toString(16).slice(0, 5).padStart(5, \"0\")\n}\n\n/**\n * Returns a numeric hash — useful for CSS layer ordering.\n */\nexport function hashNumber(input: string): number {\n return djb2(input)\n}\n\n/**\n * Generates a stable component display name from tag + classes.\n * Used as the styled-components displayName for better DevTools experience.\n *\n * @example\n * componentName(\"div\", \"p-4 bg-zinc-900\") → \"Tw-div-3f2a1\"\n */\nexport function componentName(tag: string, classes: string): string {\n const hash = hashClass(`${tag}:${classes}`)\n const tagCap = tag.charAt(0).toUpperCase() + tag.slice(1)\n return `Tw${tagCap}-${hash.replace(\"tw-\", \"\")}`\n}\n","/**\n * tailwind-styled-v4 — Styled Factory\n *\n * Thin wrapper around styled-components that adds:\n * - Automatic shouldForwardProp for tw props\n * - Display name injection for React DevTools\n * - SSR-compatible class generation\n *\n * Abstracts over styled-components internals so we can swap\n * the underlying CSS-in-JS library in future versions.\n */\n\nimport styled, { ThemeContext } from \"styled-components\"\nimport type { JSX } from \"react\"\nimport { TW_PROP_KEYS } from \"../runtime/propEngine\"\nimport { componentName } from \"../utils/hash\"\n\n// Re-export for internal use\nexport { ThemeContext }\n\n// ─────────────────────────────────────────────────────────────────────────────\n// shouldForwardProp registry\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Extra prop names that are variant/config keys, not DOM attributes.\n * These get filtered out by shouldForwardProp.\n */\nconst EXTRA_BLOCKED = new Set([\n // Common variant prop names developers use\n \"variant\", \"size\", \"intent\", \"color\", \"shape\", \"tone\", \"weight\",\n \"hierarchy\", \"emphasis\", \"status\", \"appearance\",\n // Internal tw keys\n \"base\", \"as\", \"_ref\",\n])\n\n/**\n * Determine if a prop should be forwarded to the DOM.\n * Blocks tw utility props and common variant props from leaking as HTML attributes.\n */\nexport function shouldForwardProp(prop: string): boolean {\n if (prop.startsWith(\"$\")) return true // $ prefix = always forward (styled-components convention)\n if (EXTRA_BLOCKED.has(prop)) return false\n if (TW_PROP_KEYS.has(prop)) return false\n return true\n}\n\n/**\n * Add a custom prop name to the block list.\n * Useful for custom variant props not already in the list.\n *\n * @example\n * blockProp(\"hierarchy\") // <Button hierarchy=\"primary\" /> won't pollute DOM\n */\nexport function blockProp(prop: string): void {\n EXTRA_BLOCKED.add(prop)\n}\n\n/**\n * Remove a prop from the block list (allow forwarding).\n */\nexport function allowProp(prop: string): void {\n EXTRA_BLOCKED.delete(prop)\n ;(TW_PROP_KEYS as Set<string>).delete(prop)\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Factory\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Create a styled-components base with tw-aware shouldForwardProp.\n *\n * @param tag - HTML tag string or React component\n * @param classes - Optional base class string for display name generation\n */\nexport function styledFactory(tag: any, classes = \"\"): any {\n const base = styled(tag).withConfig({ shouldForwardProp })\n\n if (process.env.NODE_ENV !== \"production\" && typeof tag === \"string\" && classes) {\n // Inject display name for React DevTools\n const name = componentName(tag, classes)\n ;(base as any).displayName = name\n }\n\n return base\n}\n\n/**\n * Type-safe version for known HTML elements.\n */\nexport function styledElement<Tag extends keyof JSX.IntrinsicElements>(\n tag: Tag,\n classes = \"\"\n): ReturnType<typeof styled.div> {\n return styledFactory(tag, classes) as ReturnType<typeof styled.div>\n}\n","import { twMerge } from \"tailwind-merge\"\n\n/**\n * Merge Tailwind classes safely\n */\nexport function mergeClasses(...classes: (string | undefined)[]) {\n return twMerge(...classes.filter(Boolean))\n}","/**\n * tailwind-styled-v4 — Class Parser Utilities\n */\n\n/**\n * Parse a Tailwind class string into a deduplicated sorted array.\n *\n * @example\n * parseClassString(\"p-4 bg-zinc-900 p-4\") → [\"bg-zinc-900\", \"p-4\"]\n */\nexport function parseClassString(cls: string): string[] {\n return Array.from(\n new Set(\n cls\n .split(/\\s+/)\n .map(c => c.trim())\n .filter(Boolean)\n )\n )\n}\n\n/**\n * Normalize a class string: trim, deduplicate, sort, collapse whitespace.\n *\n * @example\n * normalizeClasses(\" p-4 bg-zinc-900 p-4 \") → \"bg-zinc-900 p-4\"\n */\nexport function normalizeClasses(cls: string): string {\n return parseClassString(cls).sort().join(\" \")\n}\n\n/**\n * Split a class string into groups: base classes vs modifier classes.\n *\n * @example\n * splitModifiers(\"p-4 hover:bg-blue-500 md:p-8\")\n * → { base: [\"p-4\"], modifiers: [\"hover:bg-blue-500\", \"md:p-8\"] }\n */\nexport function splitModifiers(cls: string): {\n base: string[]\n modifiers: string[]\n} {\n const classes = parseClassString(cls)\n const base: string[] = []\n const modifiers: string[] = []\n\n for (const c of classes) {\n if (c.includes(\":\")) modifiers.push(c)\n else base.push(c)\n }\n\n return { base, modifiers }\n}\n\n/**\n * Check if a string looks like a valid Tailwind class token.\n *\n * @example\n * isValidClass(\"bg-blue-500\") → true\n * isValidClass(\"not a class\") → false\n */\nexport function isValidClass(cls: string): boolean {\n return /^!?[-a-z0-9]+(?:[:/[\\]().#,]+[-a-z0-9_]+)*$/.test(cls)\n}\n\n/**\n * Extract modifier prefix from a class.\n *\n * @example\n * getModifier(\"hover:bg-blue-500\") → \"hover\"\n * getModifier(\"md:p-4\") → \"md\"\n * getModifier(\"p-4\") → null\n */\nexport function getModifier(cls: string): string | null {\n const idx = cls.indexOf(\":\")\n return idx > -1 ? cls.slice(0, idx) : null\n}\n\n/**\n * Strip modifier prefix from a class.\n *\n * @example\n * stripModifier(\"hover:bg-blue-500\") → \"bg-blue-500\"\n * stripModifier(\"p-4\") → \"p-4\"\n */\nexport function stripModifier(cls: string): string {\n const idx = cls.indexOf(\":\")\n return idx > -1 ? cls.slice(idx + 1) : cls\n}\n\n/**\n * Group classes by their modifier prefix.\n *\n * @example\n * groupByModifier(\"p-4 hover:bg-blue-500 hover:text-white md:p-8\")\n * → { \"\": [\"p-4\"], hover: [\"bg-blue-500\", \"text-white\"], md: [\"p-8\"] }\n */\nexport function groupByModifier(cls: string): Record<string, string[]> {\n const classes = parseClassString(cls)\n const groups: Record<string, string[]> = {}\n\n for (const c of classes) {\n const mod = getModifier(c) ?? \"\"\n const base = stripModifier(c)\n if (!groups[mod]) groups[mod] = []\n groups[mod].push(base)\n }\n\n return groups\n}\n","/**\n * tailwind-styled-v4 — cx() utility\n *\n * Ultra-lightweight class joiner (~100 bytes minified).\n * Drop-in replacement for clsx in runtime-critical paths.\n *\n * Supports:\n * - Strings\n * - Arrays (nested)\n * - Objects { \"class\": boolean }\n * - Falsy values (ignored)\n *\n * @example\n * cx(\"p-4\", \"bg-zinc-900\") → \"p-4 bg-zinc-900\"\n * cx(\"p-4\", isActive && \"bg-blue-500\") → \"p-4 bg-blue-500\"\n * cx([\"p-4\", \"m-2\"], { hidden: false, flex: true }) → \"p-4 m-2 flex\"\n * cx(\"p-4\", undefined, null, false, 0) → \"p-4\"\n */\n\ntype CxInput =\n | string\n | number\n | boolean\n | null\n | undefined\n | CxInput[]\n | Record<string, boolean | undefined | null>\n\nexport function cx(...inputs: CxInput[]): string {\n const parts: string[] = []\n flatten(inputs, parts)\n return parts.join(\" \")\n}\n\nfunction flatten(inputs: CxInput[], out: string[]): void {\n for (const input of inputs) {\n if (!input) continue\n\n if (typeof input === \"string\") {\n out.push(input)\n continue\n }\n\n if (typeof input === \"number\") {\n out.push(String(input))\n continue\n }\n\n if (Array.isArray(input)) {\n flatten(input, out)\n continue\n }\n\n if (typeof input === \"object\") {\n for (const key in input) {\n if (input[key]) out.push(key)\n }\n }\n }\n}\n\n/**\n * cx with tailwind-merge deduplication.\n * Use this when you need conflict resolution (e.g. p-4 overriding p-2).\n * Slightly heavier than cx() — import separately.\n */\nexport function cxm(...inputs: CxInput[]): string {\n // Lazy import tailwind-merge to keep cx() itself zero-dep\n try {\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n const { twMerge } = require(\"tailwind-merge\") as typeof import(\"tailwind-merge\")\n return twMerge(cx(...inputs))\n } catch {\n return cx(...inputs)\n }\n}\n","/**\n * tailwind-styled-v4 — Prop Validator\n *\n * Runtime validation untuk variant props.\n * Memberikan error messages yang jelas ketika value tidak valid.\n *\n * Aktif di development saja (process.env.NODE_ENV !== 'production').\n * Di production = no-op, zero overhead.\n *\n * @example\n * // Dev: error langsung di konsol dengan hint yang jelas\n * <Button variant=\"invalid\" />\n * // [tw-error] Invalid prop \"variant\"=\"invalid\" on <button>\n * // Expected one of: \"primary\" | \"ghost\" | \"danger\"\n * // Got: \"invalid\"\n */\n\nimport { TW_PROP_KEYS } from \"../runtime/propEngine\"\n\nconst IS_DEV =\n typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface ValidationSchema {\n tag: string\n variants?: Record<string, Record<string, string>>\n customValidators?: Record<string, (v: unknown) => string | null>\n}\n\nexport interface ValidationResult {\n valid: boolean\n errors: string[]\n warnings: string[]\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Variant prop validator\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst VALID_SCREENS = new Set([\"base\", \"sm\", \"md\", \"lg\", \"xl\", \"2xl\"])\n\nconst KNOWN_TW_PROPS: ReadonlySet<string> = TW_PROP_KEYS\n\n/**\n * Validate variant props against a schema.\n * Pure no-op in production.\n */\nexport function validateVariantProps(\n props: Record<string, unknown>,\n schema: ValidationSchema\n): ValidationResult {\n if (!IS_DEV) return { valid: true, errors: [], warnings: [] }\n\n const errors: string[] = []\n const warnings: string[] = []\n const { tag, variants = {}, customValidators = {} } = schema\n\n // ── Variant key validation ─────────────────────────────────────────────────\n for (const [key, map] of Object.entries(variants)) {\n const value = props[key]\n if (value === undefined || value === null) continue\n\n const str = String(value)\n const valid = Object.keys(map)\n\n if (!valid.includes(str)) {\n errors.push(\n `[tw-error] Invalid prop \"${key}\"=\"${str}\" on <${tag}>\\n` +\n ` Expected one of: ${valid.map(v => `\"${v}\"`).join(\" | \")}\\n` +\n ` Got: \"${str}\"\\n` +\n ` Hint: Add \"${str}\" to the variants config, or fix the typo.`\n )\n }\n }\n\n // ── Custom validators ─────────────────────────────────────────────────────\n for (const [key, fn] of Object.entries(customValidators)) {\n const msg = fn(props[key])\n if (msg) errors.push(`[tw-error] ${msg}`)\n }\n\n // ── Suspicious spacing values ─────────────────────────────────────────────\n const SPACING_PROPS = new Set([\"p\",\"px\",\"py\",\"pt\",\"pb\",\"pl\",\"pr\",\"m\",\"mx\",\"my\",\"mt\",\"mb\",\"ml\",\"mr\",\"gap\"])\n for (const key of SPACING_PROPS) {\n const v = props[key]\n if (typeof v === \"number\" && v > 96) {\n warnings.push(\n `[tw-warn] Prop \"${key}\"=${v} exceeds Tailwind spacing scale max (96).\\n` +\n ` Use arbitrary values: ${key}=\"[${v}px]\" for custom sizes.`\n )\n }\n }\n\n // ── Responsive object screen names ────────────────────────────────────────\n for (const [key, value] of Object.entries(props)) {\n if (typeof value !== \"object\" || !value || Array.isArray(value)) continue\n const unknownScreens = Object.keys(value as object).filter(s => !VALID_SCREENS.has(s))\n if (unknownScreens.length > 0) {\n warnings.push(\n `[tw-warn] Unknown screen(s) in \"${key}\" responsive object: ${unknownScreens.map(s=>`\"${s}\"`).join(\", \")}\\n` +\n ` Valid screens: \"base\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\"`\n )\n }\n }\n\n if (IS_DEV) {\n errors.forEach(e => console.error(e))\n warnings.forEach(w => console.warn(w))\n }\n\n return { valid: errors.length === 0, errors, warnings }\n}\n\n/**\n * Build reusable validation schema from component config.\n */\nexport function buildSchema(\n tag: string,\n variants: Record<string, Record<string, string>> = {}\n): ValidationSchema {\n return { tag, variants }\n}\n\nexport { KNOWN_TW_PROPS, VALID_SCREENS }\n","/**\n * tailwind-styled-v4 — Tailwind v4 Plugin Helpers\n *\n * Tailwind v4 mengubah cara plugin bekerja (CSS-first, bukan JS config).\n * File ini menyediakan tw prop equivalents untuk plugin populer:\n * - @tailwindcss/typography\n * - @tailwindcss/forms\n * - @tailwindcss/aspect-ratio\n * - @tailwindcss/container-queries\n *\n * Usage:\n * import { loadTypographyPlugin, loadFormsPlugin } from \"tailwind-styled-v4\"\n * loadTypographyPlugin()\n * loadFormsPlugin()\n *\n * Lalu pakai props:\n * <div prose=\"lg\" /> → prose prose-lg\n * <input formInput=\"text\" /> → form-input (dari @tailwindcss/forms)\n * <div aspect=\"video\" /> → aspect-video (built-in v4)\n * <div cq=\"sm\" /> → @sm (container query)\n */\n\nimport { registerPlugin } from \"./registerPlugin\"\nimport { resolveColor } from \"../theme/tokenResolver\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// @tailwindcss/typography\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Load typography plugin props.\n * Requires @tailwindcss/typography installed.\n *\n * @example\n * loadTypographyPlugin()\n *\n * <article prose>...</article>\n * // → class=\"prose\"\n *\n * <article prose=\"lg\" proseDark>...</article>\n * // → class=\"prose prose-lg dark:prose-invert\"\n *\n * <article prose=\"xl\" proseColor=\"slate\">...</article>\n * // → class=\"prose prose-xl prose-slate\"\n */\nexport function loadTypographyPlugin(): void {\n registerPlugin({\n name: \"typography\",\n props: {\n // prose=\"lg\" | prose={true} | prose=\"sm\"|\"base\"|\"lg\"|\"xl\"|\"2xl\"\n prose: (v: any) => {\n if (v === true || v === \"base\" || v === \"\") return \"prose\"\n if (typeof v === \"string\") return `prose prose-${v}`\n return \"prose\"\n },\n\n // Prose color: proseColor=\"slate\" → prose-slate\n proseColor: (v: any) => `prose-${v}`,\n\n // Dark mode invert: proseDark={true} → dark:prose-invert\n proseDark: (v: any) => v === true ? \"dark:prose-invert\" : \"\",\n\n // Max width override: proseMaxW={false} → max-w-none\n proseMaxW: (v: any) => v === false ? \"max-w-none\" : \"\",\n\n // Lead size: proseLead=\"relaxed\" → prose-lead:leading-relaxed (custom)\n proseLeading: (v: any) => `leading-${v}`,\n }\n })\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// @tailwindcss/forms\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Load forms plugin props.\n * Requires @tailwindcss/forms installed.\n *\n * @example\n * loadFormsPlugin()\n *\n * <input formInput /> → form-input\n * <select formSelect /> → form-select\n * <textarea formTextarea /> → form-textarea\n * <input type=\"checkbox\" formCheckbox /> → form-checkbox\n * <input type=\"radio\" formRadio /> → form-radio\n * <input formInput=\"text\" /> → form-input (explicit)\n */\nexport function loadFormsPlugin(): void {\n registerPlugin({\n name: \"forms\",\n props: {\n formInput: (v: any) => v ? \"form-input\" : \"\",\n formSelect: (v: any) => v ? \"form-select\" : \"\",\n formTextarea: (v: any) => v ? \"form-textarea\" : \"\",\n formCheckbox: (v: any) => v ? \"form-checkbox\" : \"\",\n formRadio: (v: any) => v ? \"form-radio\" : \"\",\n formRange: (v: any) => v ? \"form-range\" : \"\",\n // Alias\n form: (v: any) => {\n const map: Record<string, string> = {\n input: \"form-input\", select: \"form-select\",\n textarea: \"form-textarea\", checkbox: \"form-checkbox\",\n radio: \"form-radio\", range: \"form-range\",\n }\n return map[v] ?? `form-${v}`\n },\n }\n })\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Aspect Ratio (built-in Tailwind v4)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Load aspect-ratio convenience props.\n * aspect-ratio is built into Tailwind v4 (no plugin needed).\n *\n * @example\n * loadAspectPlugin()\n *\n * <div aspectRatio=\"video\" /> → aspect-video\n * <div aspectRatio=\"square\" /> → aspect-square\n * <div aspectRatio=\"4/3\" /> → aspect-[4/3]\n * <div aspectRatio={16/9} /> → aspect-video (auto-detect)\n */\nexport function loadAspectPlugin(): void {\n registerPlugin({\n name: \"aspect\",\n props: {\n aspectRatio: (v: any) => {\n const PRESETS: Record<string, string> = {\n video: \"aspect-video\", // 16/9\n square: \"aspect-square\", // 1/1\n auto: \"aspect-auto\",\n \"4/3\": \"aspect-[4/3]\",\n \"3/2\": \"aspect-[3/2]\",\n \"1/1\": \"aspect-square\",\n }\n if (typeof v === \"number\") {\n // Auto-detect common ratios\n if (Math.abs(v - 16/9) < 0.01) return \"aspect-video\"\n if (Math.abs(v - 1) < 0.01) return \"aspect-square\"\n return `aspect-[${v}]`\n }\n return PRESETS[v] ?? `aspect-${v}`\n },\n }\n })\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Container Queries (@tailwindcss/container-queries / Tailwind v4 built-in)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Load container query props.\n * Built into Tailwind v4.\n *\n * @example\n * loadContainerQueryPlugin()\n *\n * <div container>...</div> → @container\n * <div cq=\"sm\">...</div> → @sm:... (mark as container query target)\n * <div containerName=\"main\"> → @container/main\n */\nexport function loadContainerQueryPlugin(): void {\n registerPlugin({\n name: \"container-queries\",\n props: {\n container: (v: any) => v === true ? \"@container\" : `@container/${v}`,\n containerName: (v: any) => `@container/${v}`,\n cq: (v: any) => v ? `@${v}:block` : \"\",\n }\n })\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Enhanced Animations (Tailwind v4 built-in)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Load enhanced animation props for Tailwind v4.\n *\n * @example\n * loadAnimationPlugin()\n *\n * <div enterAnim=\"fade-up\" /> → animate-in fade-in slide-in-from-bottom-4\n * <div exitAnim=\"fade-down\" /> → animate-out fade-out slide-out-to-bottom-4\n * <div animDuration={300} /> → duration-300\n */\nexport function loadAnimationPlugin(): void {\n registerPlugin({\n name: \"animations-v4\",\n props: {\n // Enter animations (Tailwind v4 animate-in API)\n enterAnim: (v: any) => {\n const map: Record<string, string> = {\n \"fade\": \"animate-in fade-in\",\n \"fade-up\": \"animate-in fade-in slide-in-from-bottom-4\",\n \"fade-down\": \"animate-in fade-in slide-in-from-top-4\",\n \"fade-left\": \"animate-in fade-in slide-in-from-right-4\",\n \"fade-right\": \"animate-in fade-in slide-in-from-left-4\",\n \"zoom\": \"animate-in zoom-in-95\",\n \"slide-up\": \"animate-in slide-in-from-bottom-4\",\n \"slide-down\": \"animate-in slide-in-from-top-4\",\n \"spin-in\": \"animate-in spin-in-180\",\n }\n return map[v] ?? `animate-in ${v}`\n },\n\n // Exit animations\n exitAnim: (v: any) => {\n const map: Record<string, string> = {\n \"fade\": \"animate-out fade-out\",\n \"fade-up\": \"animate-out fade-out slide-out-to-top-4\",\n \"fade-down\": \"animate-out fade-out slide-out-to-bottom-4\",\n \"zoom\": \"animate-out zoom-out-95\",\n \"slide-up\": \"animate-out slide-out-to-top-4\",\n \"slide-down\": \"animate-out slide-out-to-bottom-4\",\n }\n return map[v] ?? `animate-out ${v}`\n },\n\n // Animation fill mode\n animFill: (v: any) => `fill-mode-${v}`,\n animDuration: (v: any) => `duration-${v}`,\n animDelay: (v: any) => `delay-${v}`,\n animRepeat: (v: any) => v === \"infinite\" ? \"repeat-infinite\" : `repeat-${v}`,\n animDirection:(v: any) => `direction-${v}`,\n }\n })\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Interactivity (hover, focus, active state utilities)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Load interactivity plugin.\n * Shorthand props untuk common hover/focus/active patterns.\n *\n * @example\n * loadInteractivityPlugin()\n *\n * <div hoverBg=\"zinc-800\" /> → hover:bg-zinc-800\n * <div focusRing=\"blue-500\" /> → focus-visible:ring-2 focus-visible:ring-blue-500\n * <div activeScale /> → active:scale-95\n */\nexport function loadInteractivityPlugin(): void {\n registerPlugin({\n name: \"interactivity\",\n props: {\n hoverBg: (v: any) => `hover:bg-${resolveColor(String(v))}`,\n hoverText: (v: any) => `hover:text-${resolveColor(String(v))}`,\n hoverBorder: (v: any) => `hover:border-${resolveColor(String(v))}`,\n hoverShadow: (v: any) => `hover:shadow-${v}`,\n hoverOpacity:(v: any) => `hover:opacity-${v}`,\n hoverScale: (v: any) => v === true ? \"hover:scale-105\" : `hover:scale-${v}`,\n\n focusRing: (v: any) => v === true\n ? \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2\"\n : `focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-${v} focus-visible:ring-offset-2`,\n focusBg: (v: any) => `focus:bg-${v}`,\n\n activeScale: (v: any) => v === true ? \"active:scale-95\" : `active:scale-${v}`,\n activeBg: (v: any) => `active:bg-${v}`,\n activeOpacity:(v: any) => `active:opacity-${v}`,\n\n groupHoverBg: (v: any) => `group-hover:bg-${resolveColor(String(v))}`,\n groupHoverText: (v: any) => `group-hover:text-${v}`,\n groupHoverScale:(v: any) => `group-hover:scale-${v}`,\n peerCheckedBg: (v: any) => `peer-checked:bg-${v}`,\n }\n })\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Load all v4-compatible plugins at once\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Load all Tailwind v4 plugin helpers at once.\n *\n * @example\n * import { loadAllV4Plugins } from \"tailwind-styled-v4\"\n * loadAllV4Plugins()\n */\nexport function loadAllV4Plugins(): void {\n loadTypographyPlugin()\n loadFormsPlugin()\n loadAspectPlugin()\n loadContainerQueryPlugin()\n loadAnimationPlugin()\n loadInteractivityPlugin()\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/containerQuery.ts","../src/stateEngine.ts","../src/createComponent.ts","../src/cv.ts","../src/cx.ts","../src/liveTokenEngine.ts","../src/styledSystem.ts","../src/twProxy.ts","../src/twTheme.ts"],"names":["Component","_a","twMerge","t","cv","_b","_c","_d","setTokens"],"mappings":"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","file":"index.js","sourcesContent":["/**\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\"\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\nif (typeof window !== \"undefined\") {\n ;(window as any).__TW_CONTAINER_REGISTRY__ = containerRegistry\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Hash\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction hashContainer(tag: string, container: ContainerConfig, name?: string): string {\n const key = tag + (name ?? \"\") + JSON.stringify(Object.entries(container).sort())\n let hash = 5381\n for (let i = 0; i < key.length; i++) {\n hash = ((hash << 5) + hash) ^ key.charCodeAt(i)\n }\n return `tw-cq-${Math.abs(hash).toString(36).slice(0, 6)}`\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CSS generator\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Minimal Tailwind → CSS for container query contexts */\nconst LAYOUT_MAP: Record<string, string> = {\n \"flex-col\": \"flex-direction:column\",\n \"flex-row\": \"flex-direction:row\",\n \"flex-wrap\": \"flex-wrap:wrap\",\n \"flex-nowrap\": \"flex-wrap:nowrap\",\n \"flex-1\": \"flex:1 1 0%\",\n hidden: \"display:none\",\n block: \"display:block\",\n flex: \"display:flex\",\n grid: \"display:grid\",\n \"grid-cols-1\": \"grid-template-columns:repeat(1,minmax(0,1fr))\",\n \"grid-cols-2\": \"grid-template-columns:repeat(2,minmax(0,1fr))\",\n \"grid-cols-3\": \"grid-template-columns:repeat(3,minmax(0,1fr))\",\n \"grid-cols-4\": \"grid-template-columns:repeat(4,minmax(0,1fr))\",\n \"grid-cols-6\": \"grid-template-columns:repeat(6,minmax(0,1fr))\",\n \"grid-cols-12\": \"grid-template-columns:repeat(12,minmax(0,1fr))\",\n \"text-sm\": \"font-size:0.875rem;line-height:1.25rem\",\n \"text-base\": \"font-size:1rem;line-height:1.5rem\",\n \"text-lg\": \"font-size:1.125rem;line-height:1.75rem\",\n \"text-xl\": \"font-size:1.25rem;line-height:1.75rem\",\n \"text-2xl\": \"font-size:1.5rem;line-height:2rem\",\n \"text-xs\": \"font-size:0.75rem;line-height:1rem\",\n \"p-2\": \"padding:0.5rem\",\n \"p-4\": \"padding:1rem\",\n \"p-6\": \"padding:1.5rem\",\n \"p-8\": \"padding:2rem\",\n \"px-2\": \"padding-left:0.5rem;padding-right:0.5rem\",\n \"px-4\": \"padding-left:1rem;padding-right:1rem\",\n \"px-6\": \"padding-left:1.5rem;padding-right:1.5rem\",\n \"py-2\": \"padding-top:0.5rem;padding-bottom:0.5rem\",\n \"py-4\": \"padding-top:1rem;padding-bottom:1rem\",\n \"gap-2\": \"gap:0.5rem\",\n \"gap-4\": \"gap:1rem\",\n \"gap-6\": \"gap:1.5rem\",\n \"gap-8\": \"gap:2rem\",\n \"w-full\": \"width:100%\",\n \"w-1/2\": \"width:50%\",\n \"w-1/3\": \"width:33.333333%\",\n \"w-2/3\": \"width:66.666667%\",\n \"max-w-sm\": \"max-width:24rem\",\n \"max-w-md\": \"max-width:28rem\",\n \"max-w-lg\": \"max-width:32rem\",\n \"max-w-xl\": \"max-width:36rem\",\n \"items-center\": \"align-items:center\",\n \"items-start\": \"align-items:flex-start\",\n \"items-end\": \"align-items:flex-end\",\n \"justify-center\": \"justify-content:center\",\n \"justify-between\": \"justify-content:space-between\",\n \"justify-start\": \"justify-content:flex-start\",\n \"justify-end\": \"justify-content:flex-end\",\n}\n\nfunction layoutClassesToCss(classes: string): string {\n const decls: string[] = []\n for (const cls of classes.trim().split(/\\s+/)) {\n if (LAYOUT_MAP[cls]) decls.push(LAYOUT_MAP[cls])\n else if (cls.startsWith(\"w-[\")) {\n const val = cls.match(/\\[(.+)\\]/)?.[1]\n if (val) decls.push(`width:${val}`)\n } else if (cls.startsWith(\"max-w-[\")) {\n const val = cls.match(/\\[(.+)\\]/)?.[1]\n if (val) decls.push(`max-width:${val}`)\n }\n }\n return decls.join(\";\")\n}\n\nfunction buildContainerRules(\n id: string,\n container: ContainerConfig,\n containerName?: string\n): string {\n const rules: string[] = []\n\n for (const [key, value] of Object.entries(container)) {\n let minWidth: string\n let classes: string\n\n if (typeof value === \"string\") {\n minWidth = CONTAINER_BREAKPOINTS[key] ?? key\n classes = value\n } else {\n minWidth = value.minWidth ?? CONTAINER_BREAKPOINTS[key] ?? key\n classes = value.classes\n }\n\n const css = layoutClassesToCss(classes)\n if (!css) continue\n\n const query = containerName\n ? `@container ${containerName} (min-width: ${minWidth})`\n : `@container (min-width: ${minWidth})`\n\n rules.push(`${query}{.${id}{${css}}}`)\n }\n\n return rules.join(\"\\n\")\n}\n\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 const css = buildContainerRules(id, container, containerName)\n if (!css) return\n\n // Try batched injector first (available when runtime-css is installed)\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { batchedInject } = require(\"@tailwind-styled/runtime-css/batched\") as {\n batchedInject: (css: string) => void\n }\n for (const rule of css.split(\"\\n\").filter(Boolean)) batchedInject(rule)\n return\n } catch {\n // Fallback: per-element style tag\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\nexport function generateContainerCss(\n tag: string,\n container: ContainerConfig,\n containerName?: string\n): string {\n const id = hashContainer(tag, container, containerName)\n return buildContainerRules(id, container, containerName)\n}\n\nexport function getContainerRegistry(): Map<string, ContainerEntry> {\n return containerRegistry\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\"\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\nif (typeof window !== \"undefined\") {\n ;(window as any).__TW_STATE_REGISTRY__ = stateRegistry\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Deterministic hash — same config → same class (no re-injection on HMR)\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction hashState(tag: string, state: StateConfig): string {\n const key = tag + JSON.stringify(Object.entries(state).sort())\n let hash = 5381\n for (let i = 0; i < key.length; i++) {\n hash = ((hash << 5) + hash) ^ key.charCodeAt(i)\n }\n return `tw-s-${Math.abs(hash).toString(36).slice(0, 6)}`\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CSS generator — Tailwind class → plain CSS via CSSOM\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Map Tailwind utility classes to inline CSS declarations.\n * Subset covers all common state-driven utilities.\n * For full coverage the compiler strips this and uses the real Tailwind engine.\n */\nconst TW_MAP: Record<string, string> = {\n // Display\n hidden: \"display:none\",\n block: \"display:block\",\n flex: \"display:flex\",\n inline: \"display:inline\",\n \"inline-flex\": \"display:inline-flex\",\n grid: \"display:grid\",\n // Opacity\n \"opacity-0\": \"opacity:0\",\n \"opacity-5\": \"opacity:0.05\",\n \"opacity-10\": \"opacity:0.1\",\n \"opacity-20\": \"opacity:0.2\",\n \"opacity-25\": \"opacity:0.25\",\n \"opacity-30\": \"opacity:0.3\",\n \"opacity-40\": \"opacity:0.4\",\n \"opacity-50\": \"opacity:0.5\",\n \"opacity-60\": \"opacity:0.6\",\n \"opacity-70\": \"opacity:0.7\",\n \"opacity-75\": \"opacity:0.75\",\n \"opacity-80\": \"opacity:0.8\",\n \"opacity-90\": \"opacity:0.9\",\n \"opacity-95\": \"opacity:0.95\",\n \"opacity-100\": \"opacity:1\",\n // Cursor\n \"cursor-pointer\": \"cursor:pointer\",\n \"cursor-not-allowed\": \"cursor:not-allowed\",\n \"cursor-default\": \"cursor:default\",\n \"cursor-wait\": \"cursor:wait\",\n \"cursor-move\": \"cursor:move\",\n \"cursor-grab\": \"cursor:grab\",\n \"cursor-grabbing\": \"cursor:grabbing\",\n // Pointer events\n \"pointer-events-none\": \"pointer-events:none\",\n \"pointer-events-auto\": \"pointer-events:auto\",\n // Scale\n \"scale-90\": \"transform:scale(0.9)\",\n \"scale-95\": \"transform:scale(0.95)\",\n \"scale-100\": \"transform:scale(1)\",\n \"scale-105\": \"transform:scale(1.05)\",\n \"scale-110\": \"transform:scale(1.1)\",\n // Translate\n \"translate-x-0\": \"transform:translateX(0)\",\n \"translate-y-0\": \"transform:translateY(0)\",\n \"-translate-x-1\": \"transform:translateX(-0.25rem)\",\n \"-translate-y-1\": \"transform:translateY(-0.25rem)\",\n \"translate-x-1\": \"transform:translateX(0.25rem)\",\n \"translate-y-1\": \"transform:translateY(0.25rem)\",\n // Ring\n ring: \"box-shadow:0 0 0 3px rgba(59,130,246,0.5)\",\n \"ring-2\": \"box-shadow:0 0 0 2px rgba(59,130,246,0.5)\",\n \"ring-4\": \"box-shadow:0 0 0 4px rgba(59,130,246,0.5)\",\n \"ring-inset\": \"box-shadow:inset 0 0 0 3px rgba(59,130,246,0.5)\",\n // Border\n border: \"border-width:1px\",\n \"border-2\": \"border-width:2px\",\n \"border-transparent\": \"border-color:transparent\",\n // Outline\n \"outline-none\": \"outline:2px solid transparent;outline-offset:2px\",\n outline: \"outline:2px solid currentColor\",\n // Overflow\n \"overflow-hidden\": \"overflow:hidden\",\n \"overflow-auto\": \"overflow:auto\",\n \"overflow-scroll\": \"overflow:scroll\",\n // Text decoration\n underline: \"text-decoration-line:underline\",\n \"no-underline\": \"text-decoration-line:none\",\n \"line-through\": \"text-decoration-line:line-through\",\n // Font weight\n \"font-bold\": \"font-weight:700\",\n \"font-semibold\": \"font-weight:600\",\n \"font-medium\": \"font-weight:500\",\n \"font-normal\": \"font-weight:400\",\n // Background colors (common)\n \"bg-transparent\": \"background-color:transparent\",\n \"bg-white\": \"background-color:#fff\",\n \"bg-black\": \"background-color:#000\",\n \"bg-blue-500\": \"background-color:rgb(59,130,246)\",\n \"bg-blue-600\": \"background-color:rgb(37,99,235)\",\n \"bg-red-500\": \"background-color:rgb(239,68,68)\",\n \"bg-green-500\": \"background-color:rgb(34,197,94)\",\n \"bg-yellow-500\": \"background-color:rgb(234,179,8)\",\n \"bg-zinc-900\": \"background-color:rgb(24,24,27)\",\n \"bg-zinc-800\": \"background-color:rgb(39,39,42)\",\n // Text colors\n \"text-white\": \"color:#fff\",\n \"text-black\": \"color:#000\",\n \"text-blue-500\": \"color:rgb(59,130,246)\",\n \"text-red-500\": \"color:rgb(239,68,68)\",\n \"text-zinc-400\": \"color:rgb(161,161,170)\",\n \"text-zinc-500\": \"color:rgb(113,113,122)\",\n}\n\nfunction twClassesToCss(classes: string): string {\n const decls: string[] = []\n for (const cls of classes.trim().split(/\\s+/)) {\n if (TW_MAP[cls]) decls.push(TW_MAP[cls])\n // Arbitrary values: bg-[#f00] color-[red]\n else if (cls.includes(\"[\") && cls.includes(\"]\")) {\n const val = cls.match(/\\[(.+)\\]/)?.[1]\n if (!val) continue\n if (cls.startsWith(\"bg-[\")) decls.push(`background-color:${val}`)\n else if (cls.startsWith(\"text-[\")) decls.push(`color:${val}`)\n else if (cls.startsWith(\"w-[\")) decls.push(`width:${val}`)\n else if (cls.startsWith(\"h-[\")) decls.push(`height:${val}`)\n else if (cls.startsWith(\"opacity-[\")) decls.push(`opacity:${val}`)\n }\n }\n return decls.join(\";\")\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 const rules: string[] = []\n\n for (const [stateName, classes] of Object.entries(state)) {\n const css = twClassesToCss(classes)\n if (css) {\n rules.push(`.${id}[data-${stateName}=\"true\"]{${css}}`)\n }\n }\n\n if (rules.length === 0) return\n\n // Try batched injector first (available when runtime-css is installed)\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { batchedInject } = require(\"@tailwind-styled/runtime-css/batched\") as {\n batchedInject: (css: string) => void\n }\n for (const rule of rules) batchedInject(rule)\n return\n } catch {\n // Fallback: per-element style tag (original behavior)\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 */\nexport function processState(tag: string, state: StateConfig): StateEngineResult {\n const id = 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 const rules: string[] = []\n\n for (const [stateName, classes] of Object.entries(state)) {\n const css = twClassesToCss(classes)\n if (css) {\n rules.push(`.${id}[data-${stateName}=\"true\"]{${css}}`)\n }\n }\n\n return rules.join(\"\\n\")\n}\n\n/**\n * Get the state registry (for devtools).\n */\nexport function getStateRegistry(): Map<string, StateComponentEntry> {\n return stateRegistry\n}\n","/**\n * tailwind-styled-v4 v3 — createComponent\n *\n * v3 additions:\n * - StateEngine integration: state key → data-attr CSS\n * - ContainerQuery integration: container key → @container CSS\n *\n * Fixes from v2:\n * #03 — filterProps: dynamic based on actual variant keys\n * #07 — extend(): always use originalTag, not previous forwardRef wrapper\n */\n\nimport React from \"react\"\nimport { twMerge } from \"tailwind-merge\"\nimport { processContainer } from \"./containerQuery\"\nimport { processState } from \"./stateEngine\"\nimport type { ComponentConfig, TwStyledComponent } from \"./types\"\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Prop filter — FIX #03: dynamic based on actual variant keys\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst ALWAYS_BLOCKED = new Set([\"base\", \"_ref\", \"state\", \"container\", \"containerName\"])\n\nfunction makeFilterProps(variantKeys: Set<string>) {\n return function filterProps(props: Record<string, any>): Record<string, any> {\n const out: Record<string, any> = {}\n for (const key in props) {\n if (variantKeys.has(key)) continue\n if (key.startsWith(\"$\")) continue\n if (ALWAYS_BLOCKED.has(key)) continue\n out[key] = props[key]\n }\n return out\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Variant resolver\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction resolveVariants(\n variants: Record<string, Record<string, string>>,\n props: Record<string, any>,\n defaults: Record<string, string>\n): string {\n const classes: string[] = []\n for (const key in variants) {\n const val = props[key] ?? defaults[key]\n if (val !== undefined && variants[key][String(val)]) {\n classes.push(variants[key][String(val)])\n }\n }\n return classes.join(\" \")\n}\n\nfunction resolveCompound(\n compounds: Array<{ class: string; [key: string]: any }>,\n props: Record<string, any>\n): string {\n const classes: string[] = []\n for (const compound of compounds) {\n const { class: cls, ...conditions } = compound\n const match = Object.entries(conditions).every(([k, v]) => props[k] === v)\n if (match) classes.push(cls)\n }\n return classes.join(\" \")\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// createComponent\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function createComponent<P extends object = Record<string, any>>(\n tag: any,\n config: string | ComponentConfig\n): TwStyledComponent<P> {\n const isStatic = typeof config === \"string\"\n\n const base = isStatic ? (config as string) : (config.base ?? \"\")\n const variants = isStatic ? {} : (config.variants ?? {})\n const compoundVariants = isStatic ? [] : (config.compoundVariants ?? [])\n const defaultVariants = isStatic ? {} : (config.defaultVariants ?? {})\n const stateConfig = isStatic ? undefined : config.state\n const containerConfig = isStatic ? undefined : config.container\n const containerName = isStatic ? undefined : config.containerName\n\n // Process state and container (injects CSS client-side)\n const stateResult = stateConfig\n ? processState(typeof tag === \"string\" ? tag : \"component\", stateConfig)\n : null\n const containerResult = containerConfig\n ? processContainer(typeof tag === \"string\" ? tag : \"component\", containerConfig, containerName)\n : null\n\n // Extra classes from state + container engines\n const engineClasses = [stateResult?.stateClass, containerResult?.containerClass]\n .filter(Boolean)\n .join(\" \")\n\n // FIX #03: build dynamic filter based on actual variant keys\n const variantKeySet = new Set(Object.keys(variants))\n const filterProps = makeFilterProps(variantKeySet)\n\n const tagStr = typeof tag === \"string\" ? tag : (tag.displayName ?? \"Component\")\n\n // ── static shortcut ───────────────────────────────────────────────────\n if (isStatic || Object.keys(variants).length === 0) {\n const Component = React.forwardRef<any, any>((props, ref) => {\n const { className, ...rest } = props\n return React.createElement(tag, {\n ref,\n ...filterProps(rest),\n className: twMerge(base, engineClasses, className),\n })\n })\n\n Component.displayName = `tw.${tagStr}`\n attachExtend(Component, tag, base, config)\n return Component as unknown as TwStyledComponent<P>\n }\n\n // ── variant path ──────────────────────────────────────────────────────\n const Component = React.forwardRef<any, any>((props, ref) => {\n const { className } = props\n const variantClasses = resolveVariants(variants, props, defaultVariants)\n const compoundClasses = resolveCompound(compoundVariants, props)\n\n return React.createElement(tag, {\n ref,\n ...filterProps(props),\n className: twMerge(base, variantClasses, compoundClasses, engineClasses, className),\n })\n })\n\n Component.displayName = `tw.${tagStr}`\n attachExtend(Component, tag, base, config)\n return Component as unknown as TwStyledComponent<P>\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// attachExtend — FIX #07\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction attachExtend(\n Component: any,\n originalTag: any,\n base: string,\n config: string | ComponentConfig\n) {\n Component.extend = (strings: TemplateStringsArray, ..._exprs: any[]) => {\n const extra = strings.raw.join(\"\").trim().replace(/\\s+/g, \" \")\n const merged = twMerge(base, extra)\n return createComponent(\n originalTag,\n typeof config === \"string\" ? merged : { ...(config as ComponentConfig), base: merged }\n )\n }\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 })\n }\n\n // .animate() — integrates with @tailwind-styled/animate\n // Lazy require so animate package is optional\n Component.animate = (opts: any) => {\n try {\n const { animate: animateFn } =\n require(\"@tailwind-styled/animate\") as typeof import(\"@tailwind-styled/animate\")\n const animClass = animateFn(opts)\n const merged = twMerge(base, animClass)\n return createComponent(\n originalTag,\n typeof config === \"string\" ? merged : { ...(config as ComponentConfig), base: merged }\n )\n } catch {\n console.warn(\"[tailwind-styled-v4] .animate() requires @tailwind-styled/animate\")\n return Component\n }\n }\n}\n","/**\n * tailwind-styled-v4 v2 — cv()\n *\n * UPGRADE #3: cv() now infers exact variant values from config.\n *\n * Standalone class variant function — no React needed.\n * Compatible with shadcn/ui, Radix, Headless UI.\n *\n * @example\n * const button = cv({\n * base: \"px-4 py-2 rounded-lg\",\n * variants: { size: { sm: \"text-sm\", lg: \"text-lg\" } },\n * defaultVariants: { size: \"sm\" }\n * })\n *\n * // BEFORE: button({ size: \"xl\" }) — no error (size was string)\n * // AFTER: button({ size: \"xl\" }) — TypeScript ERROR: \"xl\" not in \"sm\" | \"lg\" ✓\n *\n * button({ size: \"lg\" }) → \"px-4 py-2 rounded-lg text-lg\"\n */\n\nimport { twMerge } from \"tailwind-merge\"\nimport type { ComponentConfig, CvFn, InferVariantProps } from \"./types\"\n\nexport function cv<C extends ComponentConfig>(config: C): CvFn<C> {\n const { base = \"\", variants = {}, compoundVariants = [], defaultVariants = {} } = config\n\n return (\n props: InferVariantProps<C> & { className?: string } & Record<string, any> = {} as any\n ): string => {\n const classes: string[] = [base]\n\n for (const key in variants) {\n const val = (props as any)[key] ?? defaultVariants[key]\n if (val !== undefined && (variants as any)[key][String(val)]) {\n classes.push((variants as any)[key][String(val)])\n }\n }\n\n for (const compound of compoundVariants) {\n const { class: cls, ...conditions } = compound\n const match = Object.entries(conditions).every(([k, v]) => (props as any)[k] === v)\n if (match) classes.push(cls)\n }\n\n if (props.className) classes.push(props.className)\n\n return twMerge(...classes)\n }\n}\n","/**\n * tailwind-styled-v4 v2 — cx / cn\n *\n * FIX #09: Rename for clarity — behavior was confusing with two near-identical utils.\n *\n * BEFORE:\n * cx() → simple join, no conflict resolution → cx(\"p-4\", \"p-8\") = \"p-4 p-8\" (WRONG)\n * cxm() → twMerge, correct — but obscure name\n *\n * AFTER:\n * cn() → simple join (for cases where you know there's no conflict)\n * cx() → twMerge-powered, conflict-aware (recommended for most use cases)\n * cxm() → kept as alias for cx() for backward compat\n */\n\nimport { twMerge } from \"tailwind-merge\"\n\ntype ClassValue = string | undefined | null | false | 0\n\n/**\n * cn — simple class name joiner (no conflict resolution).\n * Use when you know classes don't conflict.\n *\n * FIX #09: Previously named `cx`. Renamed to `cn` for clarity.\n *\n * @example cn(\"p-4\", isActive && \"opacity-100\") → \"p-4 opacity-100\"\n */\nexport function cn(...inputs: ClassValue[]): string {\n return inputs.filter(Boolean).join(\" \").replace(/\\s+/g, \" \").trim()\n}\n\n/**\n * cx — conflict-aware class merger using tailwind-merge.\n * Recommended for combining Tailwind classes where conflicts are possible.\n *\n * FIX #09: Previously named `cxm`. Renamed to `cx` as the primary utility.\n *\n * @example cx(\"p-4 p-8\") → \"p-8\" (conflict resolved, last wins)\n * @example cx(\"bg-red-500\", \"bg-blue-500\") → \"bg-blue-500\"\n */\nexport function cx(...inputs: ClassValue[]): string {\n return twMerge(...(inputs.filter(Boolean) as string[]))\n}\n\n/**\n * cxm — alias for cx(), kept for backward compatibility.\n * @deprecated Use cx() instead.\n */\nexport const cxm = cx\n","/**\n * tailwind-styled-v4 — Live Token Engine\n *\n * Runtime design token management via CSS custom properties.\n * Theme changes propagate instantly — no rebuild, no re-render.\n *\n * Usage:\n * import { liveToken, setToken, setTokens, subscribeTokens } from \"tailwind-styled-v4\"\n *\n * // Define tokens (injected as CSS vars on first call)\n * const theme = liveToken({\n * primary: \"#3b82f6\",\n * secondary: \"#6366f1\",\n * accent: \"#f59e0b\",\n * surface: \"#18181b\",\n * \"text-base\": \"#e4e4e7\",\n * })\n *\n * // Use in components\n * const Button = tw.button`\n * bg-[var(--tw-token-primary)]\n * text-[var(--tw-token-text-base)]\n * `\n *\n * // Update at runtime (instant, no rebuild)\n * setToken(\"primary\", \"#ef4444\") // single token\n * setTokens({ primary: \"#ef4444\", secondary: \"#ec4899\" }) // batch\n *\n * // Switch themes\n * applyTokenSet(darkTheme)\n *\n * // Subscribe to changes\n * const unsub = subscribeTokens((tokens) => {\n * console.log(\"theme changed\", tokens)\n * })\n *\n * Token CSS variable naming:\n * token(\"primary\") → var(--tw-token-primary)\n * token(\"text-base\") → var(--tw-token-text-base)\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type TokenMap = Record<string, string>\n\nexport interface LiveTokenSet {\n /** Token name → CSS variable name mapping */\n vars: Record<string, string>\n /** Get current value of a token */\n get(name: string): string | undefined\n /** Update a single token */\n set(name: string, value: string): void\n /** Update multiple tokens at once */\n setAll(tokens: TokenMap): void\n /** Snapshot of current values */\n snapshot(): TokenMap\n}\n\nexport type TokenSubscriber = (tokens: TokenMap) => void\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Internal state\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet _currentTokens: TokenMap = {}\nconst _subscribers = new Set<TokenSubscriber>()\nlet _styleEl: HTMLStyleElement | null = null\n\n// Devtools integration\nif (typeof window !== \"undefined\") {\n ;(window as any).__TW_TOKEN_ENGINE__ = {\n getTokens: () => _currentTokens,\n setToken: (name: string, value: string) => setToken(name, value),\n subscribe: (fn: TokenSubscriber) => subscribeTokens(fn),\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CSS variable name\n// ─────────────────────────────────────────────────────────────────────────────\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\n// ─────────────────────────────────────────────────────────────────────────────\n// Style injection\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction 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\nfunction syncStyleEl(): void {\n if (typeof document === \"undefined\") return\n\n if (!_styleEl) {\n _styleEl = document.createElement(\"style\")\n _styleEl.id = \"tw-live-tokens\"\n _styleEl.setAttribute(\"data-tw-tokens\", \"true\")\n document.head.appendChild(_styleEl)\n }\n\n _styleEl.textContent = buildRootCss(_currentTokens)\n}\n\nfunction notifySubscribers(): void {\n const snapshot = { ..._currentTokens }\n for (const sub of _subscribers) {\n try {\n sub(snapshot)\n } catch (_e) {\n /* silent */\n }\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Core API\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Define a set of live tokens and inject them as CSS variables.\n * Returns a LiveTokenSet for programmatic control.\n *\n * @example\n * const theme = liveToken({ primary: \"#3b82f6\" })\n * theme.set(\"primary\", \"#ef4444\") // instant update\n */\nexport function liveToken(tokens: TokenMap): LiveTokenSet {\n // Merge into current token map\n _currentTokens = { ..._currentTokens, ...tokens }\n syncStyleEl()\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) {\n return _currentTokens[name]\n },\n set(name, value) {\n setToken(name, value)\n },\n setAll(newTokens) {\n setTokens(newTokens)\n },\n snapshot() {\n return { ..._currentTokens }\n },\n }\n}\n\n/**\n * Update a single design token at runtime.\n * CSS variable is updated immediately — no rebuild needed.\n */\nexport function setToken(name: string, value: string): void {\n _currentTokens = { ..._currentTokens, [name]: value }\n\n // Fast path: update CSSOM directly if possible\n if (typeof document !== \"undefined\") {\n document.documentElement.style.setProperty(tokenVar(name), value)\n }\n\n notifySubscribers()\n}\n\n/**\n * Update multiple tokens in one batch (single DOM update).\n */\nexport function setTokens(tokens: TokenMap): void {\n _currentTokens = { ..._currentTokens, ...tokens }\n\n if (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\n notifySubscribers()\n}\n\n/**\n * Replace all tokens with a new token set (theme switch).\n */\nexport function applyTokenSet(tokens: TokenMap): void {\n // Remove old vars\n if (typeof document !== \"undefined\") {\n const root = document.documentElement\n for (const name of Object.keys(_currentTokens)) {\n if (!(name in tokens)) {\n root.style.removeProperty(tokenVar(name))\n }\n }\n }\n\n _currentTokens = { ...tokens }\n syncStyleEl()\n notifySubscribers()\n}\n\n/**\n * Get current value of a token.\n */\nexport function getToken(name: string): string | undefined {\n return _currentTokens[name]\n}\n\n/**\n * Get snapshot of all current tokens.\n */\nexport function getTokens(): TokenMap {\n return { ..._currentTokens }\n}\n\n/**\n * Subscribe to token changes.\n * Returns unsubscribe function.\n *\n * @example\n * const unsub = subscribeTokens((tokens) => {\n * document.documentElement.classList.toggle(\"dark\", tokens.surface === \"#000\")\n * })\n * // Later:\n * unsub()\n */\nexport function subscribeTokens(fn: TokenSubscriber): () => void {\n _subscribers.add(fn)\n return () => {\n _subscribers.delete(fn)\n }\n}\n\n/**\n * Generate SSR-safe CSS string for current tokens.\n */\nexport function generateTokenCssString(): string {\n return buildRootCss(_currentTokens)\n}\n\n/**\n * React hook for reading live tokens (re-renders on change).\n * Import from tailwind-styled-v4/react.\n */\nexport function createUseTokens() {\n // Lazy import React to avoid issues in non-React environments\n let useState: any, useEffect: any\n try {\n const react = require(\"react\")\n useState = react.useState\n useEffect = react.useEffect\n } catch {\n return null\n }\n\n return function useTokens(): TokenMap {\n const [tokens, setTokens_] = (useState as <S>(init: S) => [S, (v: S) => void])<TokenMap>({\n ..._currentTokens,\n })\n\n useEffect(() => {\n // Sync on mount\n setTokens_({ ..._currentTokens })\n const unsub = subscribeTokens((t) => setTokens_({ ...t }))\n return unsub\n }, [])\n\n return tokens\n }\n}\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 { createComponent } from \"./createComponent\"\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}\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 lines: string[] = [\":root {\"]\n for (const [group, map] of Object.entries(tokens)) {\n for (const [name, value] of Object.entries(map)) {\n lines.push(` ${tokenVarName(prefix, group, name)}: ${value};`)\n }\n }\n lines.push(\"}\")\n\n const style = document.createElement(\"style\")\n style.id = styleId\n style.textContent = lines.join(\"\\n\")\n document.head.appendChild(style)\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<any>\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 unknown 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 unknown 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 unknown as SystemTokenMap, prefix)\n )\n }\n\n // Build component factories\n const factories: Record<string, SystemComponentFactory<any>> = {}\n\n for (const [name, compCfg] of Object.entries(componentDefs)) {\n const tag = (compCfg as any).tag ?? \"div\"\n\n factories[name] = (overrides?: Partial<SystemComponentConfig>) => {\n const baseResolved = resolvedConfigs.get(name)!\n\n if (!overrides || Object.keys(overrides).length === 0) {\n return createComponent(tag, baseResolved)\n }\n\n // Merge overrides into resolved config\n const overrideResolved = resolveComponentConfig(\n overrides as SystemComponentConfig,\n tokens as unknown as SystemTokenMap,\n prefix\n )\n\n const merged: ComponentConfig = {\n base: [baseResolved.base, overrideResolved.base].filter(Boolean).join(\" \"),\n variants: {\n ...(baseResolved.variants ?? {}),\n ...(overrideResolved.variants ?? {}),\n },\n compoundVariants: [\n ...(baseResolved.compoundVariants ?? []),\n ...(overrideResolved.compoundVariants ?? []),\n ],\n defaultVariants: {\n ...(baseResolved.defaultVariants ?? {}),\n ...(overrideResolved.defaultVariants ?? {}),\n },\n state: overrideResolved.state ?? baseResolved.state,\n container: overrideResolved.container ?? baseResolved.container,\n containerName: overrideResolved.containerName ?? baseResolved.containerName,\n }\n\n return createComponent(tag, merged)\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 unknown 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 let style = document.getElementById(styleId) as HTMLStyleElement | null\n if (!style) {\n style = document.createElement(\"style\")\n style.id = styleId\n document.head.appendChild(style)\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 unknown as SystemTokenMap)[group][name] = value\n }\n }\n\n const lines: string[] = [\":root {\"]\n for (const [group, map] of Object.entries(tokens as unknown as SystemTokenMap)) {\n for (const [name, value] of Object.entries(map)) {\n lines.push(` ${tokenVarName(prefix, group, name)}: ${value};`)\n }\n }\n lines.push(\"}\")\n style.textContent = lines.join(\"\\n\")\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 unknown as StyledSystemInstance<T, C>\n}\n","/**\n * tailwind-styled-v4 v2 — tw\n *\n * API:\n * tw.div`p-4 bg-zinc-900`\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 type React from \"react\"\nimport { createComponent } from \"./createComponent\"\nimport type {\n ComponentConfig,\n TwComponentFactory,\n TwObject,\n TwServerObject,\n TwStyledComponent,\n TwTagFactory,\n} from \"./types\"\n\n// types.ts is single source of truth — re-export for consumers\nexport type { TwTagFactory, TwComponentFactory, TwObject, TwServerObject }\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Template parser\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction parseTemplate(strings: TemplateStringsArray, exprs: any[]): string {\n return strings.raw\n .reduce((acc, str, i) => {\n const expr = exprs[i]\n const exprStr = typeof expr === \"function\" ? \"\" : (expr ?? \"\")\n return acc + str + String(exprStr)\n }, \"\")\n .split(\"\\n\")\n .map((l) => l.trim())\n .filter(Boolean)\n .join(\" \")\n .replace(/\\s+/g, \" \")\n .trim()\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// makeTag\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction makeTag(tag: any): TwTagFactory<any> {\n return ((\n stringsOrConfig: TemplateStringsArray | ComponentConfig,\n ...exprs: any[]\n ): TwStyledComponent<any> => {\n if (\n !Array.isArray(stringsOrConfig) &&\n typeof stringsOrConfig === \"object\" &&\n stringsOrConfig !== null &&\n !(\"raw\" in stringsOrConfig)\n ) {\n return createComponent(tag, stringsOrConfig as ComponentConfig)\n }\n const classes = parseTemplate(stringsOrConfig as TemplateStringsArray, exprs)\n return createComponent(tag, classes)\n }) as TwTagFactory<any>\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// HTML tag list\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst HTML_TAGS = [\n \"div\",\n \"section\",\n \"article\",\n \"aside\",\n \"header\",\n \"footer\",\n \"main\",\n \"nav\",\n \"figure\",\n \"figcaption\",\n \"details\",\n \"summary\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"p\",\n \"span\",\n \"strong\",\n \"em\",\n \"b\",\n \"i\",\n \"s\",\n \"u\",\n \"small\",\n \"mark\",\n \"abbr\",\n \"cite\",\n \"code\",\n \"kbd\",\n \"samp\",\n \"var\",\n \"time\",\n \"address\",\n \"blockquote\",\n \"q\",\n \"del\",\n \"ins\",\n \"sub\",\n \"sup\",\n \"ul\",\n \"ol\",\n \"li\",\n \"dl\",\n \"dt\",\n \"dd\",\n \"table\",\n \"thead\",\n \"tbody\",\n \"tfoot\",\n \"tr\",\n \"th\",\n \"td\",\n \"caption\",\n \"colgroup\",\n \"col\",\n \"img\",\n \"picture\",\n \"video\",\n \"audio\",\n \"source\",\n \"track\",\n \"canvas\",\n \"svg\",\n \"path\",\n \"circle\",\n \"rect\",\n \"line\",\n \"polyline\",\n \"polygon\",\n \"g\",\n \"defs\",\n \"use\",\n \"symbol\",\n \"form\",\n \"input\",\n \"textarea\",\n \"select\",\n \"option\",\n \"optgroup\",\n \"button\",\n \"label\",\n \"fieldset\",\n \"legend\",\n \"output\",\n \"progress\",\n \"meter\",\n \"datalist\",\n \"a\",\n \"area\",\n \"map\",\n \"iframe\",\n \"embed\",\n \"object\",\n \"pre\",\n \"hr\",\n \"br\",\n \"wbr\",\n \"dialog\",\n \"menu\",\n \"template\",\n \"slot\",\n] as const\n\n// ─────────────────────────────────────────────────────────────────────────────\n// tw.server — server-only namespace with dev warning\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction makeServerTag(tag: any): TwTagFactory<any> {\n const baseFactory = makeTag(tag)\n if (typeof window !== \"undefined\" && process.env.NODE_ENV !== \"production\") {\n return ((...args: any[]): TwStyledComponent<any> => {\n const tagName = typeof tag === \"string\" ? tag : (tag.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 return (baseFactory as any)(...args)\n }) as TwTagFactory<any>\n }\n return baseFactory\n}\n\n// Build server namespace — explicit type annotation so DTS bundler doesn't\n// flatten it to Readonly<{}> (which happens with Object.freeze)\nconst serverFactories: { [K: string]: TwTagFactory<any> } = {}\nfor (const tag of HTML_TAGS) {\n serverFactories[tag] = makeServerTag(tag)\n}\n\nexport const server: TwServerObject = serverFactories as unknown as TwServerObject\n\n// ─────────────────────────────────────────────────────────────────────────────\n// tw — main export\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst tagFactories: { [K: string]: TwTagFactory<any> } = {}\nfor (const tag of HTML_TAGS) {\n tagFactories[tag] = makeTag(tag)\n}\n\nfunction twCallable<C extends React.ComponentType<any>>(component: C): TwComponentFactory<C> {\n return makeTag(component) as any\n}\n\n// Explicit type annotation — TypeScript uses TwObject, DTS bundler inlines it correctly\nexport const tw: TwObject = Object.assign(twCallable as any, tagFactories, {\n server,\n}) as unknown as TwObject\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 = {} as any\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 // Determine Tailwind property prefix based on group 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"]}
|