tailwind-styled-v4 1.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/CHANGELOG.md +75 -0
- package/LICENSE +21 -0
- package/README.md +330 -0
- package/dist/compiler/index.d.mts +214 -0
- package/dist/compiler/index.d.ts +214 -0
- package/dist/compiler/index.js +546 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/index.mjs +504 -0
- package/dist/compiler/index.mjs.map +1 -0
- package/dist/index.d.mts +1086 -0
- package/dist/index.d.ts +1086 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +9 -0
- package/dist/index.mjs.map +1 -0
- package/dist/turbopack-loader.js +232 -0
- package/dist/webpack-loader.js +213 -0
- package/package.json +121 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';var B=require('styled-components'),tailwindMerge=require('tailwind-merge'),de=require('react');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var B__default=/*#__PURE__*/_interopDefault(B);var de__default=/*#__PURE__*/_interopDefault(de);/* tailwind-styled-v4 | MIT | https://github.com/your-org/tailwind-styled-v4 */
|
|
2
|
+
var re=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});function V(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var ne=["sm","md","lg","xl","2xl"];function n(e,r){if(!V(r))return `${e}-${r}`;let t=[],o=r;o.base!==void 0&&t.push(`${e}-${o.base}`);for(let i of ne)o[i]!==void 0&&t.push(`${i}:${e}-${o[i]}`);return t.join(" ")}var N={p:e=>n("p",e),px:e=>n("px",e),py:e=>n("py",e),pt:e=>n("pt",e),pb:e=>n("pb",e),pl:e=>n("pl",e),pr:e=>n("pr",e),m:e=>n("m",e),mx:e=>n("mx",e),my:e=>n("my",e),mt:e=>n("mt",e),mb:e=>n("mb",e),ml:e=>n("ml",e),mr:e=>n("mr",e),gap:e=>n("gap",e),gapX:e=>n("gap-x",e),gapY:e=>n("gap-y",e),spaceX:e=>n("space-x",e),spaceY:e=>n("space-y",e),w:e=>n("w",e),h:e=>n("h",e),size:e=>n("size",e),minW:e=>n("min-w",e),maxW:e=>n("max-w",e),minH:e=>n("min-h",e),maxH:e=>n("max-h",e),bg:e=>n("bg",e),text:e=>n("text",e),border:e=>e===true?"border":n("border",e),ring:e=>e===true?"ring":n("ring",e),ringColor:e=>n("ring",e),fill:e=>n("fill",e),stroke:e=>n("stroke",e),accent:e=>n("accent",e),caret:e=>n("caret",e),divide:e=>n("divide",e),font:e=>n("font",e),fontSize:e=>n("text",e),leading:e=>n("leading",e),tracking:e=>n("tracking",e),align:e=>`text-${e}`,whitespace:e=>`whitespace-${e}`,truncate:e=>e===true?"truncate":"",lineClamp:e=>`line-clamp-${e}`,flex:e=>e===true?"flex":e===false?"":n("flex",e),flexDir:e=>`flex-${e}`,flexRow:e=>e===true?"flex-row":"flex-col",flexCol:e=>e===true?"flex-col":"flex-row",items:e=>n("items",e),justify:e=>n("justify",e),content:e=>n("content",e),wrap:e=>e===true?"flex-wrap":e===false?"flex-nowrap":`flex-${e}`,grow:e=>e===true?"grow":e===false?"grow-0":`grow-${e}`,shrink:e=>e===true?"shrink":e===false?"shrink-0":`shrink-${e}`,basis:e=>n("basis",e),self:e=>n("self",e),place:e=>n("place-items",e),cols:e=>n("grid-cols",e),rows:e=>n("grid-rows",e),colSpan:e=>n("col-span",e),rowSpan:e=>n("row-span",e),colStart:e=>`col-start-${e}`,colEnd:e=>`col-end-${e}`,rowStart:e=>`row-start-${e}`,rowEnd:e=>`row-end-${e}`,display:e=>`${e}`,overflow:e=>n("overflow",e),overflowX:e=>`overflow-x-${e}`,overflowY:e=>`overflow-y-${e}`,pos:e=>`${e}`,position:e=>`${e}`,z:e=>n("z",e),top:e=>n("top",e),right:e=>n("right",e),bottom:e=>n("bottom",e),left:e=>n("left",e),inset:e=>n("inset",e),insetX:e=>n("inset-x",e),insetY:e=>n("inset-y",e),rounded:e=>e===true?"rounded":n("rounded",e),roundedT:e=>n("rounded-t",e),roundedB:e=>n("rounded-b",e),roundedL:e=>n("rounded-l",e),roundedR:e=>n("rounded-r",e),borderWidth:e=>n("border",e),borderStyle:e=>`border-${e}`,outline:e=>e==="none"?"outline-none":`outline-${e}`,outlineColor:e=>`outline-${e}`,opacity:e=>n("opacity",e),shadow:e=>e===true?"shadow":n("shadow",e),shadowColor:e=>`shadow-${e}`,blur:e=>e===true?"blur":n("blur",e),brightness:e=>n("brightness",e),contrast:e=>n("contrast",e),saturate:e=>n("saturate",e),grayscale:e=>e===true?"grayscale":"",invert:e=>e===true?"invert":"",backdrop:e=>n("backdrop-blur",e),transition:e=>e===true?"transition":`transition-${e}`,duration:e=>n("duration",e),ease:e=>`ease-${e}`,delay:e=>n("delay",e),animate:e=>`animate-${e}`,cursor:e=>`cursor-${e}`,select:e=>`select-${e}`,pointer:e=>e===true?"pointer-events-auto":"pointer-events-none",touch:e=>`touch-${e}`,sr:e=>e===true?"sr-only":"not-sr-only",hidden:e=>e===true?"hidden":"",visible:e=>e===true?"visible":"invisible",aspect:e=>`aspect-${e}`,object:e=>`object-${e}`,scroll:e=>`scroll-${e}`,container:e=>e===true?"container":""},y=new Set(Object.keys(N));function te(e,r){N[e]=r,y.add(e);}function x(e){let r=[];for(let t in e){let o=N[t];if(!o)continue;let i=e[t];if(i==null)continue;let s=o(i);s&&r.push(s);}return r.join(" ").trim()}function h(e,r,t){if(!e)return "";let o=[];for(let i in e){let s=r[i]??t?.[i];if(s==null)continue;let u=e[i][String(s)];u&&o.push(u);}return o.join(" ").trim()}function b(e,r){if(!e||e.length===0)return "";let t=[];for(let o of e){let i=true;for(let s in o)if(!(s==="class"||s==="className")&&r[s]!==o[s]){i=false;break}if(i){let s=o.class??o.className;s&&t.push(s);}}return t.join(" ").trim()}var T=new Map;function M(e){T.has(e.name)&&console.warn(`[tailwind-styled-v4] Plugin "${e.name}" already registered \u2014 overwriting`),T.set(e.name,e),e.onRegister?.();}function oe(e){return T.get(e)}function ie(){return Array.from(T.keys())}function w(e){let r=[];for(let t of T.values())for(let o in t.props)if(e[o]!==void 0){let i=t.props[o](e[o]);i&&r.push(i);}return r.join(" ").trim()}function _(e){if(e==null||e===false)return "";if(typeof e=="string")return e;if(typeof e=="number")return String(e);if(Array.isArray(e))return e.map(_).filter(Boolean).join(" ");if(typeof e=="object"){let r=e;return Object.keys(r).filter(t=>r[t]).join(" ")}return ""}function R(e,r){let t="";for(let o=0;o<e.length;o++)if(t+=e[o],o<r.length){let i=_(r[o]);i&&(t+=" "+i);}return t.split(`
|
|
3
|
+
`).map(o=>o.trim()).filter(Boolean).join(" ").replace(/\s{2,}/g," ").trim()}function se(e,...r){return R(e,r)}var ae=new Set(["variant","size","intent","color","shape","tone"]);function le(e){return !(ae.has(e)||y.has(e))}function v(e,r){let t=typeof r=="string",o=t?r:r.base??"",i=t?{}:r.variants??{},s=t?[]:r.compoundVariants??[],m=t?{}:r.defaultVariants??{},u=B__default.default(e).withConfig({shouldForwardProp:le})``,l=B__default.default(u).attrs(a=>{let c=x(a),d=h(i,a,m),g=b(s,a),k=w(a);return {className:tailwindMerge.twMerge(o,d,g,c,k,a.className)}})``;return l.extend=(a,...c)=>{let d=R(a,c);return v(l,{...t?{}:r,base:tailwindMerge.twMerge(o,d)})},l.withVariants=a=>v(e,{base:o,variants:{...i,...a.variants??{}},compoundVariants:[...s,...a.compoundVariants??[]],defaultVariants:{...m,...a.defaultVariants??{}}}),l}function O(e){return function(r,...t){if(!Array.isArray(r)&&typeof r=="object"&&r!==null)return v(e,r);let o=R(r,t);return v(e,o)}}var ce=new Proxy(function(e){return O(e)},{get(e,r){return O(r)}});function ue(e){let{base:r="",variants:t={},compoundVariants:o=[],defaultVariants:i={}}=e;return function(s){let m={...i,...s??{}},u=h(t,m),l=b(o,m);return tailwindMerge.twMerge(r,u,l,s?.className)}}function D(e,r=""){let t=typeof r=="string"?r:r.base??"",o=typeof r=="object"?r.displayName??`withTw(${e.displayName??e.name??"Component"})`:`withTw(${e.displayName??e.name??"Component"})`,i=de.forwardRef((s,m)=>{let u={},l={};for(let g in s)y.has(g)?u[g]=s[g]:l[g]=s[g];let a=x(u),c=w(u),d=tailwindMerge.twMerge(t,a,c,s.className);return de__default.default.createElement(e,{...l,ref:m,className:d})});return i.displayName=o,i}function ge(e,r=""){return D(e,r)}function p(e){if(!e.name||typeof e.name!="string")throw new Error("[tailwind-styled-v4] Plugin must have a non-empty string name");if(!e.props||typeof e.props!="object")throw new Error(`[tailwind-styled-v4] Plugin "${e.name}" must define a props object`);M(e);}function ye(){p({name:"animation",props:{animate:e=>`animate-${e}`,duration:e=>`duration-${e}`,delay:e=>`delay-${e}`,ease:e=>`ease-${e}`}}),p({name:"grid",props:{grid:e=>e===true?"grid":`grid-cols-${e}`,gridCols:e=>`grid-cols-${e}`,gridRows:e=>`grid-rows-${e}`,autoRows:e=>`auto-rows-${e}`,autoCols:e=>`auto-cols-${e}`}}),p({name:"backdrop",props:{backdropBlur:e=>`backdrop-blur-${e}`,backdropBrightness:e=>`backdrop-brightness-${e}`,backdropContrast:e=>`backdrop-contrast-${e}`,backdropSaturate:e=>`backdrop-saturate-${e}`}}),p({name:"gradient",props:{gradientFrom:e=>`from-${e}`,gradientVia:e=>`via-${e}`,gradientTo:e=>`to-${e}`,gradient:e=>`bg-gradient-to-${e}`}}),p({name:"scroll",props:{scrollSmooth:e=>e===true?"scroll-smooth":"",scrollAuto:e=>e===true?"scroll-auto":"",snapAlign:e=>`snap-${e}`,snapType:e=>`snap-${e}`}}),p({name:"print",props:{printHidden:e=>e===true?"print:hidden":"",printBlock:e=>e===true?"print:block":""}});}function he(e,r){let{base:t,variants:o={},compoundVariants:i=[],defaultVariants:s={}}=e,m=x(r),u=h(o,r,s),l=b(i,r),a=w(r);return tailwindMerge.twMerge(t,u,l,m,a,r.className)}var f={},$=new Set;function C(e){for(let r in e){let t=e[r];t&&(f[r]={...f[r]??{},...t});}$.forEach(r=>r(f));}function be(e){f={...e},$.forEach(r=>r(f));}function we(){return {...f}}function ve(e){return {...f[e]??{}}}function Te(){f={},$.forEach(e=>e(f));}function Re(e){return $.add(e),()=>$.delete(e)}function E(e,r){let t=f[e];return t?t[r]??r:r}function $e(e,r){return !!f[e]?.[r]}function P(e,r){return E(e,r)}function Ce(e){return P("colors",e)}function Pe(e){return typeof e=="number"?String(e):P("spacing",e)}function Se(e){return P("radius",e)}function ke(){C({colors:{primary:"blue-600","primary-hover":"blue-700","primary-light":"blue-100",secondary:"violet-600","secondary-hover":"violet-700",success:"emerald-500",warning:"amber-500",danger:"red-500",info:"sky-500",foreground:"white",background:"zinc-950",surface:"zinc-900","surface-2":"zinc-800","surface-3":"zinc-700",muted:"zinc-500",subtle:"zinc-400",border:"zinc-700","border-light":"zinc-200","text-primary":"zinc-50","text-secondary":"zinc-400","text-muted":"zinc-600",link:"blue-400","link-hover":"blue-300"},spacing:{xs:"2",sm:"4",md:"6",lg:"8",xl:"12","2xl":"16","3xl":"24",section:"16",page:"24"},radius:{none:"none",xs:"sm",sm:"md",md:"lg",lg:"xl",xl:"2xl",card:"2xl",button:"lg",badge:"full",pill:"full",input:"md"},shadow:{xs:"sm",sm:"md",md:"lg",lg:"xl",xl:"2xl",card:"xl",modal:"2xl",none:"none"},font:{sans:"sans",mono:"mono",serif:"serif"},fontSize:{caption:"xs",small:"sm",body:"base",lead:"lg",title:"xl",heading:"2xl",display:"4xl"},duration:{fast:"150",normal:"200",slow:"300",slower:"500"},opacity:{disabled:"50",muted:"70",subtle:"40"}});}function Ve(){C({colors:{primary:"blue-500",secondary:"indigo-500",accent:"cyan-400",background:"zinc-950",surface:"zinc-900","surface-2":"zinc-800",foreground:"zinc-50",muted:"zinc-500",border:"zinc-800",success:"emerald-400",warning:"amber-400",danger:"red-400"},radius:{card:"xl",button:"lg",badge:"full",input:"md"}});}function I(e){let r=5381;for(let t=0;t<e.length;t++)r=(r<<5)+r^e.charCodeAt(t),r=r>>>0;return r}function F(e){return "tw-"+I(e).toString(16).slice(0,5).padStart(5,"0")}function Ne(e){return I(e)}function j(e,r){let t=F(`${e}:${r}`);return `Tw${e.charAt(0).toUpperCase()+e.slice(1)}-${t.replace("tw-","")}`}var z=new Set(["variant","size","intent","color","shape","tone","weight","hierarchy","emphasis","status","appearance","base","as","_ref"]);function L(e){return e.startsWith("$")?true:!(z.has(e)||y.has(e))}function je(e){z.add(e);}function ze(e){z.delete(e),y.delete(e);}function Ae(e,r=""){let t=B__default.default(e).withConfig({shouldForwardProp:L});if(process.env.NODE_ENV!=="production"&&typeof e=="string"&&r){let o=j(e,r);t.displayName=o;}return t}function _e(...e){return tailwindMerge.twMerge(...e.filter(Boolean))}function S(e){return Array.from(new Set(e.split(/\s+/).map(r=>r.trim()).filter(Boolean)))}function Be(e){return S(e).sort().join(" ")}function We(e){let r=S(e),t=[],o=[];for(let i of r)i.includes(":")?o.push(i):t.push(i);return {base:t,modifiers:o}}function Oe(e){return /^!?[-a-z0-9]+(?:[:/[\]().#,]+[-a-z0-9_]+)*$/.test(e)}function K(e){let r=e.indexOf(":");return r>-1?e.slice(0,r):null}function Y(e){let r=e.indexOf(":");return r>-1?e.slice(r+1):e}function De(e){let r=S(e),t={};for(let o of r){let i=K(o)??"",s=Y(o);t[i]||(t[i]=[]),t[i].push(s);}return t}function A(...e){let r=[];return X(e,r),r.join(" ")}function X(e,r){for(let t of e)if(t){if(typeof t=="string"){r.push(t);continue}if(typeof t=="number"){r.push(String(t));continue}if(Array.isArray(t)){X(t,r);continue}if(typeof t=="object")for(let o in t)t[o]&&r.push(o);}}function Ie(...e){try{let{twMerge:r}=re("tailwind-merge");return r(A(...e))}catch{return A(...e)}}var H=typeof process<"u"&&process.env.NODE_ENV!=="production",q=new Set(["base","sm","md","lg","xl","2xl"]),Fe=new Set(["p","px","py","pt","pb","pl","pr","m","mx","my","mt","mb","ml","mr","gap","gapX","gapY","spaceX","spaceY","w","h","size","minW","maxW","minH","maxH","bg","text","border","ring","fill","stroke","accent","caret","divide","font","fontSize","leading","tracking","align","truncate","lineClamp","flex","flexDir","items","justify","wrap","grow","shrink","basis","self","place","cols","rows","colSpan","rowSpan","colStart","colEnd","rowStart","rowEnd","display","overflow","overflowX","overflowY","pos","z","top","right","bottom","left","inset","rounded","roundedT","roundedB","roundedL","roundedR","borderWidth","borderStyle","outline","opacity","shadow","blur","brightness","contrast","saturate","grayscale","invert","backdrop","transition","duration","ease","delay","animate","cursor","select","pointer","touch","sr","hidden","visible","aspect","object","scroll","container","flex","grid","block","inline","hidden","truncate","underline","italic"]);function Le(e,r){if(!H)return {valid:true,errors:[],warnings:[]};let t=[],o=[],{tag:i,variants:s={},customValidators:m={}}=r;for(let[l,a]of Object.entries(s)){let c=e[l];if(c==null)continue;let d=String(c),g=Object.keys(a);g.includes(d)||t.push(`[tw-error] Invalid prop "${l}"="${d}" on <${i}>
|
|
4
|
+
Expected one of: ${g.map(k=>`"${k}"`).join(" | ")}
|
|
5
|
+
Got: "${d}"
|
|
6
|
+
Hint: Add "${d}" to the variants config, or fix the typo.`);}for(let[l,a]of Object.entries(m)){let c=a(e[l]);c&&t.push(`[tw-error] ${c}`);}let u=new Set(["p","px","py","pt","pb","pl","pr","m","mx","my","mt","mb","ml","mr","gap"]);for(let l of u){let a=e[l];typeof a=="number"&&a>96&&o.push(`[tw-warn] Prop "${l}"=${a} exceeds Tailwind spacing scale max (96).
|
|
7
|
+
Use arbitrary values: ${l}="[${a}px]" for custom sizes.`);}for(let[l,a]of Object.entries(e)){if(typeof a!="object"||!a||Array.isArray(a))continue;let c=Object.keys(a).filter(d=>!q.has(d));c.length>0&&o.push(`[tw-warn] Unknown screen(s) in "${l}" responsive object: ${c.map(d=>`"${d}"`).join(", ")}
|
|
8
|
+
Valid screens: "base" | "sm" | "md" | "lg" | "xl" | "2xl"`);}return H&&(t.forEach(l=>console.error(l)),o.forEach(l=>console.warn(l))),{valid:t.length===0,errors:t,warnings:o}}function Ke(e,r={}){return {tag:e,variants:r}}function U(){p({name:"typography",props:{prose:e=>e===true||e==="base"||e===""?"prose":typeof e=="string"?`prose prose-${e}`:"prose",proseColor:e=>`prose-${e}`,proseDark:e=>e===true?"dark:prose-invert":"",proseMaxW:e=>e===false?"max-w-none":"",proseLeading:e=>`leading-${e}`}});}function G(){p({name:"forms",props:{formInput:e=>e?"form-input":"",formSelect:e=>e?"form-select":"",formTextarea:e=>e?"form-textarea":"",formCheckbox:e=>e?"form-checkbox":"",formRadio:e=>e?"form-radio":"",formRange:e=>e?"form-range":"",form:e=>({input:"form-input",select:"form-select",textarea:"form-textarea",checkbox:"form-checkbox",radio:"form-radio",range:"form-range"})[e]??`form-${e}`}});}function J(){p({name:"aspect",props:{aspectRatio:e=>{let r={video:"aspect-video",square:"aspect-square",auto:"aspect-auto","4/3":"aspect-[4/3]","3/2":"aspect-[3/2]","1/1":"aspect-square"};return typeof e=="number"?Math.abs(e-16/9)<.01?"aspect-video":Math.abs(e-1)<.01?"aspect-square":`aspect-[${e}]`:r[e]??`aspect-${e}`}}});}function Q(){p({name:"container-queries",props:{container:e=>e===true?"@container":`@container/${e}`,containerName:e=>`@container/${e}`,cq:e=>e?`@${e}:block`:""}});}function Z(){p({name:"animations-v4",props:{enterAnim:e=>({fade:"animate-in fade-in","fade-up":"animate-in fade-in slide-in-from-bottom-4","fade-down":"animate-in fade-in slide-in-from-top-4","fade-left":"animate-in fade-in slide-in-from-right-4","fade-right":"animate-in fade-in slide-in-from-left-4",zoom:"animate-in zoom-in-95","slide-up":"animate-in slide-in-from-bottom-4","slide-down":"animate-in slide-in-from-top-4","spin-in":"animate-in spin-in-180"})[e]??`animate-in ${e}`,exitAnim:e=>({fade:"animate-out fade-out","fade-up":"animate-out fade-out slide-out-to-top-4","fade-down":"animate-out fade-out slide-out-to-bottom-4",zoom:"animate-out zoom-out-95","slide-up":"animate-out slide-out-to-top-4","slide-down":"animate-out slide-out-to-bottom-4"})[e]??`animate-out ${e}`,animFill:e=>`fill-mode-${e}`,animDuration:e=>`duration-${e}`,animDelay:e=>`delay-${e}`,animRepeat:e=>e==="infinite"?"repeat-infinite":`repeat-${e}`,animDirection:e=>`direction-${e}`}});}function ee(){p({name:"interactivity",props:{hoverBg:e=>`hover:bg-${e}`,hoverText:e=>`hover:text-${e}`,hoverBorder:e=>`hover:border-${e}`,hoverShadow:e=>`hover:shadow-${e}`,hoverOpacity:e=>`hover:opacity-${e}`,hoverScale:e=>e===true?"hover:scale-105":`hover:scale-${e}`,focusRing:e=>e===true?"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2":`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-${e} focus-visible:ring-offset-2`,focusBg:e=>`focus:bg-${e}`,activeScale:e=>e===true?"active:scale-95":`active:scale-${e}`,activeBg:e=>`active:bg-${e}`,activeOpacity:e=>`active:opacity-${e}`,groupHoverBg:e=>`group-hover:bg-${e}`,groupHoverText:e=>`group-hover:text-${e}`,groupHoverScale:e=>`group-hover:scale-${e}`,peerCheckedBg:e=>`peer-checked:bg-${e}`}});}function Ye(){U(),G(),J(),Q(),Z(),ee();}exports.KNOWN_TW_PROPS=Fe;exports.TW_PROP_KEYS=y;exports.VALID_SCREENS=q;exports.allowProp=ze;exports.attachTw=ge;exports.blockProp=je;exports.buildSchema=Ke;exports.cls=se;exports.componentName=j;exports.createComponent=v;exports.cv=ue;exports.cx=A;exports.cxm=Ie;exports.getModifier=K;exports.getPlugin=oe;exports.getTheme=we;exports.getThemeNamespace=ve;exports.groupByModifier=De;exports.hashClass=F;exports.hashNumber=Ne;exports.isObject=V;exports.isThemeToken=$e;exports.isValidClass=Oe;exports.listPlugins=ie;exports.loadAllV4Plugins=Ye;exports.loadAnimationPlugin=Z;exports.loadAspectPlugin=J;exports.loadBuiltinPlugins=ye;exports.loadContainerQueryPlugin=Q;exports.loadDarkTheme=Ve;exports.loadDefaultTheme=ke;exports.loadFormsPlugin=G;exports.loadInteractivityPlugin=ee;exports.loadTypographyPlugin=U;exports.mergeClasses=_e;exports.normalizeClasses=Be;exports.onThemeChange=Re;exports.parseClassString=S;exports.registerPlugin=p;exports.registerProp=te;exports.replaceTheme=be;exports.resetTheme=Te;exports.resolveClasses=he;exports.resolveColor=Ce;exports.resolveCompound=b;exports.resolveProps=x;exports.resolveRadius=Se;exports.resolveResponsive=n;exports.resolveSpacing=Pe;exports.resolveThemeToken=E;exports.resolveToken=P;exports.resolveVariants=h;exports.setTheme=C;exports.shouldForwardProp=L;exports.splitModifiers=We;exports.stripModifier=Y;exports.styledFactory=Ae;exports.tw=ce;exports.validateVariantProps=Le;exports.withTw=D;//# sourceMappingURL=index.js.map
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/createComponent.ts","../src/utils/isObject.ts","../src/runtime/responsiveEngine.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/themeStore.ts","../src/theme/tokenResolver.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","resolveResponsive","key","classes","v","screen","propMap","TW_PROP_KEYS","registerProp","resolver","resolveProps","props","cls","resolveVariants","variants","defaultVariants","style","resolveCompound","compounds","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","tw","component","_target","cv","merged","withTw","baseOrOpts","displayName","WrappedComponent","forwardRef","ref","twProps","restProps","mergedClassName","React","attachTw","registerPlugin","loadBuiltinPlugins","resolveClasses","currentTheme","listeners","setTheme","newTheme","namespace","incoming","fn","replaceTheme","theme","getTheme","getThemeNamespace","resetTheme","onThemeChange","listener","resolveThemeToken","ns","isThemeToken","resolveToken","resolveColor","resolveSpacing","resolveRadius","loadDefaultTheme","loadDarkTheme","djb2","str","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","IS_DEV","VALID_SCREENS","KNOWN_TW_PROPS","validateVariantProps","schema","errors","warnings","customValidators","map","valid","msg","SPACING_PROPS","unknownScreens","s","e","w","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 *\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\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\nexport function resolveResponsive(\n key: string,\n value: ResponsiveValue\n): string {\n if (!isObject(value)) {\n return `${key}-${value}`\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}-${v.base}`)\n }\n\n for (const screen of SCREENS) {\n if (v[screen] !== undefined) {\n classes.push(`${screen}:${key}-${v[screen]}`)\n }\n }\n\n return classes.join(\" \")\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 */\n\nimport { resolveResponsive } from \"./responsiveEngine\"\n\ntype PropResolver = (value: any) => string\n\nconst propMap: Record<string, PropResolver> = {\n\n // ── Padding ───────────────────────────────────────────\n p: v => resolveResponsive(\"p\", v),\n px: v => resolveResponsive(\"px\", v),\n py: v => resolveResponsive(\"py\", v),\n pt: v => resolveResponsive(\"pt\", v),\n pb: v => resolveResponsive(\"pb\", v),\n pl: v => resolveResponsive(\"pl\", v),\n pr: v => resolveResponsive(\"pr\", v),\n\n // ── Margin ────────────────────────────────────────────\n m: v => resolveResponsive(\"m\", v),\n mx: v => resolveResponsive(\"mx\", v),\n my: v => resolveResponsive(\"my\", v),\n mt: v => resolveResponsive(\"mt\", v),\n mb: v => resolveResponsive(\"mb\", v),\n ml: v => resolveResponsive(\"ml\", v),\n mr: v => resolveResponsive(\"mr\", v),\n\n // ── Gap / Space ───────────────────────────────────────\n gap: v => resolveResponsive(\"gap\", v),\n gapX: v => resolveResponsive(\"gap-x\", v),\n gapY: v => resolveResponsive(\"gap-y\", v),\n spaceX: v => resolveResponsive(\"space-x\", v),\n spaceY: v => resolveResponsive(\"space-y\", v),\n\n // ── Sizing ────────────────────────────────────────────\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 bg: v => resolveResponsive(\"bg\", v),\n text: v => resolveResponsive(\"text\", v),\n border: v => v === true ? \"border\" : resolveResponsive(\"border\", v),\n ring: v => v === true ? \"ring\" : resolveResponsive(\"ring\", v),\n ringColor: v => resolveResponsive(\"ring\", v),\n fill: v => resolveResponsive(\"fill\", v),\n stroke: v => resolveResponsive(\"stroke\", v),\n accent: v => resolveResponsive(\"accent\", v),\n caret: v => resolveResponsive(\"caret\", v),\n divide: v => resolveResponsive(\"divide\", v),\n\n // ── Typography ────────────────────────────────────────\n font: v => resolveResponsive(\"font\", v),\n fontSize: v => resolveResponsive(\"text\", v),\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 & Outline ──────────────────────────────────\n rounded: v => v === true ? \"rounded\" : resolveResponsive(\"rounded\", v),\n roundedT: v => resolveResponsive(\"rounded-t\", v),\n roundedB: v => resolveResponsive(\"rounded-b\", v),\n roundedL: v => resolveResponsive(\"rounded-l\", v),\n roundedR: v => resolveResponsive(\"rounded-r\", v),\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: v => resolveResponsive(\"opacity\", v),\n shadow: v => v === true ? \"shadow\" : resolveResponsive(\"shadow\", v),\n shadowColor: v => `shadow-${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 transition: v => v === true ? \"transition\" : `transition-${v}`,\n duration: v => resolveResponsive(\"duration\", v),\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) continue\n\n const cls = resolver(value)\n if (cls) classes.push(cls)\n }\n\n return classes.join(\" \").trim()\n}\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): string {\n if (!compounds || compounds.length === 0) return \"\"\n\n const classes: string[] = []\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 (props[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 — tw Proxy (PRO)\n *\n * The main entry point. Returns a Proxy that intercepts HTML tag access\n * and supports two syntaxes:\n *\n * ① Template literal (simple):\n * const Box = tw.div`p-4 bg-zinc-900 rounded-xl`\n *\n * ② Object config (full control):\n * const Button = tw.button({\n * base: \"px-4 py-2 rounded-lg font-medium\",\n * variants: {\n * variant: { primary: \"bg-blue-500 text-white\", ghost: \"bg-transparent\" },\n * size: { sm: \"h-8 text-sm\", lg: \"h-12 text-base\" }\n * },\n * compoundVariants: [\n * { variant: \"primary\", size: \"lg\", class: \"shadow-lg shadow-blue-500/40\" }\n * ],\n * defaultVariants: { variant: \"primary\", size: \"sm\" }\n * })\n *\n * ③ Extend existing components:\n * const Card = tw.div`p-6 rounded-2xl bg-zinc-900`\n * const HeroCard = Card.extend`border border-zinc-700 shadow-xl`\n *\n * ④ Wrap existing styled / React components:\n * const StyledLink = tw(Link)`underline text-blue-400`\n */\n\nimport { createComponent } from \"./createComponent\"\nimport { templateParser } from \"./templateParser\"\nimport type { ComponentConfig } from \"../types/component\"\n\ntype TemplateLiteralCall = (strings: TemplateStringsArray, ...expr: any[]) => any\ntype ConfigCall = (config: ComponentConfig) => any\ntype TwTag = TemplateLiteralCall & ConfigCall\n\n// ─────────────────────────────────────────────────────────────────────────────\n// tw proxy\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction makeTag(tag: any): TwTag {\n return function (\n stringsOrConfig: TemplateStringsArray | ComponentConfig,\n ...expr: any[]\n ): any {\n // Object config API\n if (\n !Array.isArray(stringsOrConfig) &&\n typeof stringsOrConfig === \"object\" &&\n stringsOrConfig !== null\n ) {\n return createComponent(tag, stringsOrConfig as ComponentConfig)\n }\n\n // Template literal API\n const base = templateParser(\n stringsOrConfig as TemplateStringsArray,\n expr\n )\n return createComponent(tag, base)\n } as TwTag\n}\n\nexport const tw = new Proxy(\n // Also callable as tw(Component)`classes` to wrap any component\n function (component: any) {\n return makeTag(component)\n } as any,\n {\n get(_target, tag: string) {\n return makeTag(tag)\n },\n }\n) as Record<string, TwTag> & ((component: any) => TwTag)\n","/**\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\nexport function loadBuiltinPlugins(): void {\n\n // ── Animation ───────────────────────────────────────────────────\n registerPlugin({\n name: \"animation\",\n props: {\n animate: v => `animate-${v}`,\n duration: v => `duration-${v}`,\n delay: v => `delay-${v}`,\n ease: v => `ease-${v}`,\n }\n })\n\n // ── Grid Helpers ─────────────────────────────────────────────────\n registerPlugin({\n name: \"grid\",\n props: {\n grid: v => v === true ? \"grid\" : `grid-cols-${v}`,\n gridCols: v => `grid-cols-${v}`,\n gridRows: v => `grid-rows-${v}`,\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 // ── Text 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\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 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 twMerge(\n base,\n variantClasses,\n compoundClasses,\n propClasses,\n pluginClasses,\n props.className\n )\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 — 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\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 = new Set([\n \"p\",\"px\",\"py\",\"pt\",\"pb\",\"pl\",\"pr\",\n \"m\",\"mx\",\"my\",\"mt\",\"mb\",\"ml\",\"mr\",\n \"gap\",\"gapX\",\"gapY\",\"spaceX\",\"spaceY\",\n \"w\",\"h\",\"size\",\"minW\",\"maxW\",\"minH\",\"maxH\",\n \"bg\",\"text\",\"border\",\"ring\",\"fill\",\"stroke\",\"accent\",\"caret\",\"divide\",\n \"font\",\"fontSize\",\"leading\",\"tracking\",\"align\",\"truncate\",\"lineClamp\",\n \"flex\",\"flexDir\",\"items\",\"justify\",\"wrap\",\"grow\",\"shrink\",\"basis\",\"self\",\"place\",\n \"cols\",\"rows\",\"colSpan\",\"rowSpan\",\"colStart\",\"colEnd\",\"rowStart\",\"rowEnd\",\n \"display\",\"overflow\",\"overflowX\",\"overflowY\",\"pos\",\"z\",\n \"top\",\"right\",\"bottom\",\"left\",\"inset\",\n \"rounded\",\"roundedT\",\"roundedB\",\"roundedL\",\"roundedR\",\n \"borderWidth\",\"borderStyle\",\"outline\",\n \"opacity\",\"shadow\",\"blur\",\"brightness\",\"contrast\",\n \"saturate\",\"grayscale\",\"invert\",\"backdrop\",\n \"transition\",\"duration\",\"ease\",\"delay\",\"animate\",\n \"cursor\",\"select\",\"pointer\",\"touch\",\n \"sr\",\"hidden\",\"visible\",\"aspect\",\"object\",\"scroll\",\"container\",\n // Boolean convenience\n \"flex\",\"grid\",\"block\",\"inline\",\"hidden\",\"truncate\",\"underline\",\"italic\",\n])\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\"\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-${v}`,\n hoverText: (v: any) => `hover:text-${v}`,\n hoverBorder: (v: any) => `hover:border-${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-${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"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import B from'styled-components';import {twMerge}from'tailwind-merge';import de,{forwardRef}from'react';/* tailwind-styled-v4 | MIT | https://github.com/your-org/tailwind-styled-v4 */
|
|
2
|
+
var re=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});function V(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var ne=["sm","md","lg","xl","2xl"];function n(e,r){if(!V(r))return `${e}-${r}`;let t=[],o=r;o.base!==void 0&&t.push(`${e}-${o.base}`);for(let i of ne)o[i]!==void 0&&t.push(`${i}:${e}-${o[i]}`);return t.join(" ")}var N={p:e=>n("p",e),px:e=>n("px",e),py:e=>n("py",e),pt:e=>n("pt",e),pb:e=>n("pb",e),pl:e=>n("pl",e),pr:e=>n("pr",e),m:e=>n("m",e),mx:e=>n("mx",e),my:e=>n("my",e),mt:e=>n("mt",e),mb:e=>n("mb",e),ml:e=>n("ml",e),mr:e=>n("mr",e),gap:e=>n("gap",e),gapX:e=>n("gap-x",e),gapY:e=>n("gap-y",e),spaceX:e=>n("space-x",e),spaceY:e=>n("space-y",e),w:e=>n("w",e),h:e=>n("h",e),size:e=>n("size",e),minW:e=>n("min-w",e),maxW:e=>n("max-w",e),minH:e=>n("min-h",e),maxH:e=>n("max-h",e),bg:e=>n("bg",e),text:e=>n("text",e),border:e=>e===true?"border":n("border",e),ring:e=>e===true?"ring":n("ring",e),ringColor:e=>n("ring",e),fill:e=>n("fill",e),stroke:e=>n("stroke",e),accent:e=>n("accent",e),caret:e=>n("caret",e),divide:e=>n("divide",e),font:e=>n("font",e),fontSize:e=>n("text",e),leading:e=>n("leading",e),tracking:e=>n("tracking",e),align:e=>`text-${e}`,whitespace:e=>`whitespace-${e}`,truncate:e=>e===true?"truncate":"",lineClamp:e=>`line-clamp-${e}`,flex:e=>e===true?"flex":e===false?"":n("flex",e),flexDir:e=>`flex-${e}`,flexRow:e=>e===true?"flex-row":"flex-col",flexCol:e=>e===true?"flex-col":"flex-row",items:e=>n("items",e),justify:e=>n("justify",e),content:e=>n("content",e),wrap:e=>e===true?"flex-wrap":e===false?"flex-nowrap":`flex-${e}`,grow:e=>e===true?"grow":e===false?"grow-0":`grow-${e}`,shrink:e=>e===true?"shrink":e===false?"shrink-0":`shrink-${e}`,basis:e=>n("basis",e),self:e=>n("self",e),place:e=>n("place-items",e),cols:e=>n("grid-cols",e),rows:e=>n("grid-rows",e),colSpan:e=>n("col-span",e),rowSpan:e=>n("row-span",e),colStart:e=>`col-start-${e}`,colEnd:e=>`col-end-${e}`,rowStart:e=>`row-start-${e}`,rowEnd:e=>`row-end-${e}`,display:e=>`${e}`,overflow:e=>n("overflow",e),overflowX:e=>`overflow-x-${e}`,overflowY:e=>`overflow-y-${e}`,pos:e=>`${e}`,position:e=>`${e}`,z:e=>n("z",e),top:e=>n("top",e),right:e=>n("right",e),bottom:e=>n("bottom",e),left:e=>n("left",e),inset:e=>n("inset",e),insetX:e=>n("inset-x",e),insetY:e=>n("inset-y",e),rounded:e=>e===true?"rounded":n("rounded",e),roundedT:e=>n("rounded-t",e),roundedB:e=>n("rounded-b",e),roundedL:e=>n("rounded-l",e),roundedR:e=>n("rounded-r",e),borderWidth:e=>n("border",e),borderStyle:e=>`border-${e}`,outline:e=>e==="none"?"outline-none":`outline-${e}`,outlineColor:e=>`outline-${e}`,opacity:e=>n("opacity",e),shadow:e=>e===true?"shadow":n("shadow",e),shadowColor:e=>`shadow-${e}`,blur:e=>e===true?"blur":n("blur",e),brightness:e=>n("brightness",e),contrast:e=>n("contrast",e),saturate:e=>n("saturate",e),grayscale:e=>e===true?"grayscale":"",invert:e=>e===true?"invert":"",backdrop:e=>n("backdrop-blur",e),transition:e=>e===true?"transition":`transition-${e}`,duration:e=>n("duration",e),ease:e=>`ease-${e}`,delay:e=>n("delay",e),animate:e=>`animate-${e}`,cursor:e=>`cursor-${e}`,select:e=>`select-${e}`,pointer:e=>e===true?"pointer-events-auto":"pointer-events-none",touch:e=>`touch-${e}`,sr:e=>e===true?"sr-only":"not-sr-only",hidden:e=>e===true?"hidden":"",visible:e=>e===true?"visible":"invisible",aspect:e=>`aspect-${e}`,object:e=>`object-${e}`,scroll:e=>`scroll-${e}`,container:e=>e===true?"container":""},y=new Set(Object.keys(N));function te(e,r){N[e]=r,y.add(e);}function x(e){let r=[];for(let t in e){let o=N[t];if(!o)continue;let i=e[t];if(i==null)continue;let s=o(i);s&&r.push(s);}return r.join(" ").trim()}function h(e,r,t){if(!e)return "";let o=[];for(let i in e){let s=r[i]??t?.[i];if(s==null)continue;let u=e[i][String(s)];u&&o.push(u);}return o.join(" ").trim()}function b(e,r){if(!e||e.length===0)return "";let t=[];for(let o of e){let i=true;for(let s in o)if(!(s==="class"||s==="className")&&r[s]!==o[s]){i=false;break}if(i){let s=o.class??o.className;s&&t.push(s);}}return t.join(" ").trim()}var T=new Map;function M(e){T.has(e.name)&&console.warn(`[tailwind-styled-v4] Plugin "${e.name}" already registered \u2014 overwriting`),T.set(e.name,e),e.onRegister?.();}function oe(e){return T.get(e)}function ie(){return Array.from(T.keys())}function w(e){let r=[];for(let t of T.values())for(let o in t.props)if(e[o]!==void 0){let i=t.props[o](e[o]);i&&r.push(i);}return r.join(" ").trim()}function _(e){if(e==null||e===false)return "";if(typeof e=="string")return e;if(typeof e=="number")return String(e);if(Array.isArray(e))return e.map(_).filter(Boolean).join(" ");if(typeof e=="object"){let r=e;return Object.keys(r).filter(t=>r[t]).join(" ")}return ""}function R(e,r){let t="";for(let o=0;o<e.length;o++)if(t+=e[o],o<r.length){let i=_(r[o]);i&&(t+=" "+i);}return t.split(`
|
|
3
|
+
`).map(o=>o.trim()).filter(Boolean).join(" ").replace(/\s{2,}/g," ").trim()}function se(e,...r){return R(e,r)}var ae=new Set(["variant","size","intent","color","shape","tone"]);function le(e){return !(ae.has(e)||y.has(e))}function v(e,r){let t=typeof r=="string",o=t?r:r.base??"",i=t?{}:r.variants??{},s=t?[]:r.compoundVariants??[],m=t?{}:r.defaultVariants??{},u=B(e).withConfig({shouldForwardProp:le})``,l=B(u).attrs(a=>{let c=x(a),d=h(i,a,m),g=b(s,a),k=w(a);return {className:twMerge(o,d,g,c,k,a.className)}})``;return l.extend=(a,...c)=>{let d=R(a,c);return v(l,{...t?{}:r,base:twMerge(o,d)})},l.withVariants=a=>v(e,{base:o,variants:{...i,...a.variants??{}},compoundVariants:[...s,...a.compoundVariants??[]],defaultVariants:{...m,...a.defaultVariants??{}}}),l}function O(e){return function(r,...t){if(!Array.isArray(r)&&typeof r=="object"&&r!==null)return v(e,r);let o=R(r,t);return v(e,o)}}var ce=new Proxy(function(e){return O(e)},{get(e,r){return O(r)}});function ue(e){let{base:r="",variants:t={},compoundVariants:o=[],defaultVariants:i={}}=e;return function(s){let m={...i,...s??{}},u=h(t,m),l=b(o,m);return twMerge(r,u,l,s?.className)}}function D(e,r=""){let t=typeof r=="string"?r:r.base??"",o=typeof r=="object"?r.displayName??`withTw(${e.displayName??e.name??"Component"})`:`withTw(${e.displayName??e.name??"Component"})`,i=forwardRef((s,m)=>{let u={},l={};for(let g in s)y.has(g)?u[g]=s[g]:l[g]=s[g];let a=x(u),c=w(u),d=twMerge(t,a,c,s.className);return de.createElement(e,{...l,ref:m,className:d})});return i.displayName=o,i}function ge(e,r=""){return D(e,r)}function p(e){if(!e.name||typeof e.name!="string")throw new Error("[tailwind-styled-v4] Plugin must have a non-empty string name");if(!e.props||typeof e.props!="object")throw new Error(`[tailwind-styled-v4] Plugin "${e.name}" must define a props object`);M(e);}function ye(){p({name:"animation",props:{animate:e=>`animate-${e}`,duration:e=>`duration-${e}`,delay:e=>`delay-${e}`,ease:e=>`ease-${e}`}}),p({name:"grid",props:{grid:e=>e===true?"grid":`grid-cols-${e}`,gridCols:e=>`grid-cols-${e}`,gridRows:e=>`grid-rows-${e}`,autoRows:e=>`auto-rows-${e}`,autoCols:e=>`auto-cols-${e}`}}),p({name:"backdrop",props:{backdropBlur:e=>`backdrop-blur-${e}`,backdropBrightness:e=>`backdrop-brightness-${e}`,backdropContrast:e=>`backdrop-contrast-${e}`,backdropSaturate:e=>`backdrop-saturate-${e}`}}),p({name:"gradient",props:{gradientFrom:e=>`from-${e}`,gradientVia:e=>`via-${e}`,gradientTo:e=>`to-${e}`,gradient:e=>`bg-gradient-to-${e}`}}),p({name:"scroll",props:{scrollSmooth:e=>e===true?"scroll-smooth":"",scrollAuto:e=>e===true?"scroll-auto":"",snapAlign:e=>`snap-${e}`,snapType:e=>`snap-${e}`}}),p({name:"print",props:{printHidden:e=>e===true?"print:hidden":"",printBlock:e=>e===true?"print:block":""}});}function he(e,r){let{base:t,variants:o={},compoundVariants:i=[],defaultVariants:s={}}=e,m=x(r),u=h(o,r,s),l=b(i,r),a=w(r);return twMerge(t,u,l,m,a,r.className)}var f={},$=new Set;function C(e){for(let r in e){let t=e[r];t&&(f[r]={...f[r]??{},...t});}$.forEach(r=>r(f));}function be(e){f={...e},$.forEach(r=>r(f));}function we(){return {...f}}function ve(e){return {...f[e]??{}}}function Te(){f={},$.forEach(e=>e(f));}function Re(e){return $.add(e),()=>$.delete(e)}function E(e,r){let t=f[e];return t?t[r]??r:r}function $e(e,r){return !!f[e]?.[r]}function P(e,r){return E(e,r)}function Ce(e){return P("colors",e)}function Pe(e){return typeof e=="number"?String(e):P("spacing",e)}function Se(e){return P("radius",e)}function ke(){C({colors:{primary:"blue-600","primary-hover":"blue-700","primary-light":"blue-100",secondary:"violet-600","secondary-hover":"violet-700",success:"emerald-500",warning:"amber-500",danger:"red-500",info:"sky-500",foreground:"white",background:"zinc-950",surface:"zinc-900","surface-2":"zinc-800","surface-3":"zinc-700",muted:"zinc-500",subtle:"zinc-400",border:"zinc-700","border-light":"zinc-200","text-primary":"zinc-50","text-secondary":"zinc-400","text-muted":"zinc-600",link:"blue-400","link-hover":"blue-300"},spacing:{xs:"2",sm:"4",md:"6",lg:"8",xl:"12","2xl":"16","3xl":"24",section:"16",page:"24"},radius:{none:"none",xs:"sm",sm:"md",md:"lg",lg:"xl",xl:"2xl",card:"2xl",button:"lg",badge:"full",pill:"full",input:"md"},shadow:{xs:"sm",sm:"md",md:"lg",lg:"xl",xl:"2xl",card:"xl",modal:"2xl",none:"none"},font:{sans:"sans",mono:"mono",serif:"serif"},fontSize:{caption:"xs",small:"sm",body:"base",lead:"lg",title:"xl",heading:"2xl",display:"4xl"},duration:{fast:"150",normal:"200",slow:"300",slower:"500"},opacity:{disabled:"50",muted:"70",subtle:"40"}});}function Ve(){C({colors:{primary:"blue-500",secondary:"indigo-500",accent:"cyan-400",background:"zinc-950",surface:"zinc-900","surface-2":"zinc-800",foreground:"zinc-50",muted:"zinc-500",border:"zinc-800",success:"emerald-400",warning:"amber-400",danger:"red-400"},radius:{card:"xl",button:"lg",badge:"full",input:"md"}});}function I(e){let r=5381;for(let t=0;t<e.length;t++)r=(r<<5)+r^e.charCodeAt(t),r=r>>>0;return r}function F(e){return "tw-"+I(e).toString(16).slice(0,5).padStart(5,"0")}function Ne(e){return I(e)}function j(e,r){let t=F(`${e}:${r}`);return `Tw${e.charAt(0).toUpperCase()+e.slice(1)}-${t.replace("tw-","")}`}var z=new Set(["variant","size","intent","color","shape","tone","weight","hierarchy","emphasis","status","appearance","base","as","_ref"]);function L(e){return e.startsWith("$")?true:!(z.has(e)||y.has(e))}function je(e){z.add(e);}function ze(e){z.delete(e),y.delete(e);}function Ae(e,r=""){let t=B(e).withConfig({shouldForwardProp:L});if(process.env.NODE_ENV!=="production"&&typeof e=="string"&&r){let o=j(e,r);t.displayName=o;}return t}function _e(...e){return twMerge(...e.filter(Boolean))}function S(e){return Array.from(new Set(e.split(/\s+/).map(r=>r.trim()).filter(Boolean)))}function Be(e){return S(e).sort().join(" ")}function We(e){let r=S(e),t=[],o=[];for(let i of r)i.includes(":")?o.push(i):t.push(i);return {base:t,modifiers:o}}function Oe(e){return /^!?[-a-z0-9]+(?:[:/[\]().#,]+[-a-z0-9_]+)*$/.test(e)}function K(e){let r=e.indexOf(":");return r>-1?e.slice(0,r):null}function Y(e){let r=e.indexOf(":");return r>-1?e.slice(r+1):e}function De(e){let r=S(e),t={};for(let o of r){let i=K(o)??"",s=Y(o);t[i]||(t[i]=[]),t[i].push(s);}return t}function A(...e){let r=[];return X(e,r),r.join(" ")}function X(e,r){for(let t of e)if(t){if(typeof t=="string"){r.push(t);continue}if(typeof t=="number"){r.push(String(t));continue}if(Array.isArray(t)){X(t,r);continue}if(typeof t=="object")for(let o in t)t[o]&&r.push(o);}}function Ie(...e){try{let{twMerge:r}=re("tailwind-merge");return r(A(...e))}catch{return A(...e)}}var H=typeof process<"u"&&process.env.NODE_ENV!=="production",q=new Set(["base","sm","md","lg","xl","2xl"]),Fe=new Set(["p","px","py","pt","pb","pl","pr","m","mx","my","mt","mb","ml","mr","gap","gapX","gapY","spaceX","spaceY","w","h","size","minW","maxW","minH","maxH","bg","text","border","ring","fill","stroke","accent","caret","divide","font","fontSize","leading","tracking","align","truncate","lineClamp","flex","flexDir","items","justify","wrap","grow","shrink","basis","self","place","cols","rows","colSpan","rowSpan","colStart","colEnd","rowStart","rowEnd","display","overflow","overflowX","overflowY","pos","z","top","right","bottom","left","inset","rounded","roundedT","roundedB","roundedL","roundedR","borderWidth","borderStyle","outline","opacity","shadow","blur","brightness","contrast","saturate","grayscale","invert","backdrop","transition","duration","ease","delay","animate","cursor","select","pointer","touch","sr","hidden","visible","aspect","object","scroll","container","flex","grid","block","inline","hidden","truncate","underline","italic"]);function Le(e,r){if(!H)return {valid:true,errors:[],warnings:[]};let t=[],o=[],{tag:i,variants:s={},customValidators:m={}}=r;for(let[l,a]of Object.entries(s)){let c=e[l];if(c==null)continue;let d=String(c),g=Object.keys(a);g.includes(d)||t.push(`[tw-error] Invalid prop "${l}"="${d}" on <${i}>
|
|
4
|
+
Expected one of: ${g.map(k=>`"${k}"`).join(" | ")}
|
|
5
|
+
Got: "${d}"
|
|
6
|
+
Hint: Add "${d}" to the variants config, or fix the typo.`);}for(let[l,a]of Object.entries(m)){let c=a(e[l]);c&&t.push(`[tw-error] ${c}`);}let u=new Set(["p","px","py","pt","pb","pl","pr","m","mx","my","mt","mb","ml","mr","gap"]);for(let l of u){let a=e[l];typeof a=="number"&&a>96&&o.push(`[tw-warn] Prop "${l}"=${a} exceeds Tailwind spacing scale max (96).
|
|
7
|
+
Use arbitrary values: ${l}="[${a}px]" for custom sizes.`);}for(let[l,a]of Object.entries(e)){if(typeof a!="object"||!a||Array.isArray(a))continue;let c=Object.keys(a).filter(d=>!q.has(d));c.length>0&&o.push(`[tw-warn] Unknown screen(s) in "${l}" responsive object: ${c.map(d=>`"${d}"`).join(", ")}
|
|
8
|
+
Valid screens: "base" | "sm" | "md" | "lg" | "xl" | "2xl"`);}return H&&(t.forEach(l=>console.error(l)),o.forEach(l=>console.warn(l))),{valid:t.length===0,errors:t,warnings:o}}function Ke(e,r={}){return {tag:e,variants:r}}function U(){p({name:"typography",props:{prose:e=>e===true||e==="base"||e===""?"prose":typeof e=="string"?`prose prose-${e}`:"prose",proseColor:e=>`prose-${e}`,proseDark:e=>e===true?"dark:prose-invert":"",proseMaxW:e=>e===false?"max-w-none":"",proseLeading:e=>`leading-${e}`}});}function G(){p({name:"forms",props:{formInput:e=>e?"form-input":"",formSelect:e=>e?"form-select":"",formTextarea:e=>e?"form-textarea":"",formCheckbox:e=>e?"form-checkbox":"",formRadio:e=>e?"form-radio":"",formRange:e=>e?"form-range":"",form:e=>({input:"form-input",select:"form-select",textarea:"form-textarea",checkbox:"form-checkbox",radio:"form-radio",range:"form-range"})[e]??`form-${e}`}});}function J(){p({name:"aspect",props:{aspectRatio:e=>{let r={video:"aspect-video",square:"aspect-square",auto:"aspect-auto","4/3":"aspect-[4/3]","3/2":"aspect-[3/2]","1/1":"aspect-square"};return typeof e=="number"?Math.abs(e-16/9)<.01?"aspect-video":Math.abs(e-1)<.01?"aspect-square":`aspect-[${e}]`:r[e]??`aspect-${e}`}}});}function Q(){p({name:"container-queries",props:{container:e=>e===true?"@container":`@container/${e}`,containerName:e=>`@container/${e}`,cq:e=>e?`@${e}:block`:""}});}function Z(){p({name:"animations-v4",props:{enterAnim:e=>({fade:"animate-in fade-in","fade-up":"animate-in fade-in slide-in-from-bottom-4","fade-down":"animate-in fade-in slide-in-from-top-4","fade-left":"animate-in fade-in slide-in-from-right-4","fade-right":"animate-in fade-in slide-in-from-left-4",zoom:"animate-in zoom-in-95","slide-up":"animate-in slide-in-from-bottom-4","slide-down":"animate-in slide-in-from-top-4","spin-in":"animate-in spin-in-180"})[e]??`animate-in ${e}`,exitAnim:e=>({fade:"animate-out fade-out","fade-up":"animate-out fade-out slide-out-to-top-4","fade-down":"animate-out fade-out slide-out-to-bottom-4",zoom:"animate-out zoom-out-95","slide-up":"animate-out slide-out-to-top-4","slide-down":"animate-out slide-out-to-bottom-4"})[e]??`animate-out ${e}`,animFill:e=>`fill-mode-${e}`,animDuration:e=>`duration-${e}`,animDelay:e=>`delay-${e}`,animRepeat:e=>e==="infinite"?"repeat-infinite":`repeat-${e}`,animDirection:e=>`direction-${e}`}});}function ee(){p({name:"interactivity",props:{hoverBg:e=>`hover:bg-${e}`,hoverText:e=>`hover:text-${e}`,hoverBorder:e=>`hover:border-${e}`,hoverShadow:e=>`hover:shadow-${e}`,hoverOpacity:e=>`hover:opacity-${e}`,hoverScale:e=>e===true?"hover:scale-105":`hover:scale-${e}`,focusRing:e=>e===true?"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2":`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-${e} focus-visible:ring-offset-2`,focusBg:e=>`focus:bg-${e}`,activeScale:e=>e===true?"active:scale-95":`active:scale-${e}`,activeBg:e=>`active:bg-${e}`,activeOpacity:e=>`active:opacity-${e}`,groupHoverBg:e=>`group-hover:bg-${e}`,groupHoverText:e=>`group-hover:text-${e}`,groupHoverScale:e=>`group-hover:scale-${e}`,peerCheckedBg:e=>`peer-checked:bg-${e}`}});}function Ye(){U(),G(),J(),Q(),Z(),ee();}export{Fe as KNOWN_TW_PROPS,y as TW_PROP_KEYS,q as VALID_SCREENS,ze as allowProp,ge as attachTw,je as blockProp,Ke as buildSchema,se as cls,j as componentName,v as createComponent,ue as cv,A as cx,Ie as cxm,K as getModifier,oe as getPlugin,we as getTheme,ve as getThemeNamespace,De as groupByModifier,F as hashClass,Ne as hashNumber,V as isObject,$e as isThemeToken,Oe as isValidClass,ie as listPlugins,Ye as loadAllV4Plugins,Z as loadAnimationPlugin,J as loadAspectPlugin,ye as loadBuiltinPlugins,Q as loadContainerQueryPlugin,Ve as loadDarkTheme,ke as loadDefaultTheme,G as loadFormsPlugin,ee as loadInteractivityPlugin,U as loadTypographyPlugin,_e as mergeClasses,Be as normalizeClasses,Re as onThemeChange,S as parseClassString,p as registerPlugin,te as registerProp,be as replaceTheme,Te as resetTheme,he as resolveClasses,Ce as resolveColor,b as resolveCompound,x as resolveProps,Se as resolveRadius,n as resolveResponsive,Pe as resolveSpacing,E as resolveThemeToken,P as resolveToken,h as resolveVariants,C as setTheme,L as shouldForwardProp,We as splitModifiers,Y as stripModifier,Ae as styledFactory,ce as tw,Le as validateVariantProps,D as withTw};//# sourceMappingURL=index.mjs.map
|
|
9
|
+
//# sourceMappingURL=index.mjs.map
|