aliveicon 1.0.13 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/index.js CHANGED
@@ -1,2 +1,3035 @@
1
- import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useAnimation as r,motion as t}from"framer-motion";import{useRef as a,useCallback as n,useEffect as s}from"react";function l(e){var o,r,t="";if("string"==typeof e||"number"==typeof e)t+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(o=0;o<a;o++)e[o]&&(r=l(e[o]))&&(t&&(t+=" "),t+=r)}else for(r in e)e[r]&&(t&&(t+=" "),t+=r);return t}const i=e=>{const o=p(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:t}=e;return{getClassGroupId:e=>{const r=e.split("-");return""===r[0]&&1!==r.length&&r.shift(),d(r,o)||m(e)},getConflictingClassGroupIds:(e,o)=>{const a=r[e]||[];return o&&t[e]?[...a,...t[e]]:a}}},d=(e,o)=>{if(0===e.length)return o.classGroupId;const r=e[0],t=o.nextPart.get(r),a=t?d(e.slice(1),t):void 0;if(a)return a;if(0===o.validators.length)return;const n=e.join("-");return o.validators.find((({validator:e})=>e(n)))?.classGroupId},c=/^\[(.+)\]$/,m=e=>{if(c.test(e)){const o=c.exec(e)[1],r=o?.substring(0,o.indexOf(":"));if(r)return"arbitrary.."+r}},p=e=>{const{theme:o,classGroups:r}=e,t={nextPart:new Map,validators:[]};for(const e in r)u(r[e],t,e,o);return t},u=(e,o,r,t)=>{e.forEach((e=>{if("string"!=typeof e){if("function"==typeof e)return b(e)?void u(e(t),o,r,t):void o.validators.push({validator:e,classGroupId:r});Object.entries(e).forEach((([e,a])=>{u(a,f(o,e),r,t)}))}else{(""===e?o:f(o,e)).classGroupId=r}}))},f=(e,o)=>{let r=e;return o.split("-").forEach((e=>{r.nextPart.has(e)||r.nextPart.set(e,{nextPart:new Map,validators:[]}),r=r.nextPart.get(e)})),r},b=e=>e.isThemeGetter,g=e=>{if(e<1)return{get:()=>{},set:()=>{}};let o=0,r=new Map,t=new Map;const a=(a,n)=>{r.set(a,n),o++,o>e&&(o=0,t=r,r=new Map)};return{get(e){let o=r.get(e);return void 0!==o?o:void 0!==(o=t.get(e))?(a(e,o),o):void 0},set(e,o){r.has(e)?r.set(e,o):a(e,o)}}},h=e=>{const{prefix:o,experimentalParseClassName:r}=e;let t=e=>{const o=[];let r,t=0,a=0,n=0;for(let s=0;s<e.length;s++){let l=e[s];if(0===t&&0===a){if(":"===l){o.push(e.slice(n,s)),n=s+1;continue}if("/"===l){r=s;continue}}"["===l?t++:"]"===l?t--:"("===l?a++:")"===l&&a--}const s=0===o.length?e:e.substring(n),l=k(s);return{modifiers:o,hasImportantModifier:l!==s,baseClassName:l,maybePostfixModifierPosition:r&&r>n?r-n:void 0}};if(o){const e=o+":",r=t;t=o=>o.startsWith(e)?r(o.substring(e.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:o,maybePostfixModifierPosition:void 0}}if(r){const e=t;t=o=>r({className:o,parseClassName:e})}return t},k=e=>e.endsWith("!")?e.substring(0,e.length-1):e.startsWith("!")?e.substring(1):e,x=e=>{const o=Object.fromEntries(e.orderSensitiveModifiers.map((e=>[e,!0])));return e=>{if(e.length<=1)return e;const r=[];let t=[];return e.forEach((e=>{"["===e[0]||o[e]?(r.push(...t.sort(),e),t=[]):t.push(e)})),r.push(...t.sort()),r}},w=/\s+/;function y(){let e,o,r=0,t="";for(;r<arguments.length;)(e=arguments[r++])&&(o=v(e))&&(t&&(t+=" "),t+=o);return t}const v=e=>{if("string"==typeof e)return e;let o,r="";for(let t=0;t<e.length;t++)e[t]&&(o=v(e[t]))&&(r&&(r+=" "),r+=o);return r};function z(e,...o){let r,t,a,n=function(l){const d=o.reduce(((e,o)=>o(e)),e());return r=(e=>({cache:g(e.cacheSize),parseClassName:h(e),sortModifiers:x(e),...i(e)}))(d),t=r.cache.get,a=r.cache.set,n=s,s(l)};function s(e){const o=t(e);if(o)return o;const n=((e,o)=>{const{parseClassName:r,getClassGroupId:t,getConflictingClassGroupIds:a,sortModifiers:n}=o,s=[],l=e.trim().split(w);let i="";for(let e=l.length-1;e>=0;e-=1){const o=l[e],{isExternal:d,modifiers:c,hasImportantModifier:m,baseClassName:p,maybePostfixModifierPosition:u}=r(o);if(d){i=o+(i.length>0?" "+i:i);continue}let f=!!u,b=t(f?p.substring(0,u):p);if(!b){if(!f){i=o+(i.length>0?" "+i:i);continue}if(b=t(p),!b){i=o+(i.length>0?" "+i:i);continue}f=!1}const g=n(c).join(":"),h=m?g+"!":g,k=h+b;if(s.includes(k))continue;s.push(k);const x=a(b,f);for(let e=0;e<x.length;++e){const o=x[e];s.push(h+o)}i=o+(i.length>0?" "+i:i)}return i})(e,r);return a(e,n),n}return function(){return n(y.apply(null,arguments))}}const M=e=>{const o=o=>o[e]||[];return o.isThemeGetter=!0,o},C=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,j=/^\((?:(\w[\w-]*):)?(.+)\)$/i,G=/^\d+\/\d+$/,N=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,I=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,P=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,E=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,O=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,$=e=>G.test(e),L=e=>!!e&&!Number.isNaN(Number(e)),W=e=>!!e&&Number.isInteger(Number(e)),S=e=>e.endsWith("%")&&L(e.slice(0,-1)),A=e=>N.test(e),q=()=>!0,H=e=>I.test(e)&&!P.test(e),T=()=>!1,_=e=>E.test(e),B=e=>O.test(e),D=e=>!J(e)&&!X(e),F=e=>ae(e,ie,T),J=e=>C.test(e),K=e=>ae(e,de,H),Q=e=>ae(e,ce,L),R=e=>ae(e,se,T),U=e=>ae(e,le,B),V=e=>ae(e,pe,_),X=e=>j.test(e),Y=e=>ne(e,de),Z=e=>ne(e,me),ee=e=>ne(e,se),oe=e=>ne(e,ie),re=e=>ne(e,le),te=e=>ne(e,pe,!0),ae=(e,o,r)=>{const t=C.exec(e);return!!t&&(t[1]?o(t[1]):r(t[2]))},ne=(e,o,r=!1)=>{const t=j.exec(e);return!!t&&(t[1]?o(t[1]):r)},se=e=>"position"===e||"percentage"===e,le=e=>"image"===e||"url"===e,ie=e=>"length"===e||"size"===e||"bg-size"===e,de=e=>"length"===e,ce=e=>"number"===e,me=e=>"family-name"===e,pe=e=>"shadow"===e,ue=z((()=>{const e=M("color"),o=M("font"),r=M("text"),t=M("font-weight"),a=M("tracking"),n=M("leading"),s=M("breakpoint"),l=M("container"),i=M("spacing"),d=M("radius"),c=M("shadow"),m=M("inset-shadow"),p=M("text-shadow"),u=M("drop-shadow"),f=M("blur"),b=M("perspective"),g=M("aspect"),h=M("ease"),k=M("animate"),x=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom",X,J],w=()=>[X,J,i],y=()=>[$,"full","auto",...w()],v=()=>[W,"none","subgrid",X,J],z=()=>["auto",{span:["full",W,X,J]},W,X,J],C=()=>[W,"auto",X,J],j=()=>["auto","min","max","fr",X,J],G=()=>["auto",...w()],N=()=>[$,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...w()],I=()=>[e,X,J],P=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom",ee,R,{position:[X,J]}],E=()=>["auto","cover","contain",oe,F,{size:[X,J]}],O=()=>[S,Y,K],H=()=>["","none","full",d,X,J],T=()=>["",L,Y,K],_=()=>[L,S,ee,R],B=()=>["","none",f,X,J],ae=()=>["none",L,X,J],ne=()=>["none",L,X,J],se=()=>[L,X,J],le=()=>[$,"full",...w()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[A],breakpoint:[A],color:[q],container:[A],"drop-shadow":[A],ease:["in","out","in-out"],font:[D],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[A],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[A],shadow:[A],spacing:["px",L],text:[A],"text-shadow":[A],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",$,J,X,g]}],container:["container"],columns:[{columns:[L,J,X,l]}],"break-after":[{"break-after":["auto","avoid","all","avoid-page","page","left","right","column"]}],"break-before":[{"break-before":["auto","avoid","all","avoid-page","page","left","right","column"]}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:x()}],overflow:[{overflow:["auto","hidden","clip","visible","scroll"]}],"overflow-x":[{"overflow-x":["auto","hidden","clip","visible","scroll"]}],"overflow-y":[{"overflow-y":["auto","hidden","clip","visible","scroll"]}],overscroll:[{overscroll:["auto","contain","none"]}],"overscroll-x":[{"overscroll-x":["auto","contain","none"]}],"overscroll-y":[{"overscroll-y":["auto","contain","none"]}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:y()}],"inset-x":[{"inset-x":y()}],"inset-y":[{"inset-y":y()}],start:[{start:y()}],end:[{end:y()}],top:[{top:y()}],right:[{right:y()}],bottom:[{bottom:y()}],left:[{left:y()}],visibility:["visible","invisible","collapse"],z:[{z:[W,"auto",X,J]}],basis:[{basis:[$,"full","auto",l,...w()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[L,$,"auto","initial","none",J]}],grow:[{grow:["",L,X,J]}],shrink:[{shrink:["",L,X,J]}],order:[{order:[W,"first","last","none",X,J]}],"grid-cols":[{"grid-cols":v()}],"col-start-end":[{col:z()}],"col-start":[{"col-start":C()}],"col-end":[{"col-end":C()}],"grid-rows":[{"grid-rows":v()}],"row-start-end":[{row:z()}],"row-start":[{"row-start":C()}],"row-end":[{"row-end":C()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":j()}],"auto-rows":[{"auto-rows":j()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe","normal"]}],"justify-items":[{"justify-items":["start","end","center","stretch","center-safe","end-safe","normal"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch","center-safe","end-safe"]}],"align-content":[{content:["normal","start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"]}],"align-items":[{items:["start","end","center","stretch","center-safe","end-safe",{baseline:["","last"]}]}],"align-self":[{self:["auto","start","end","center","stretch","center-safe","end-safe",{baseline:["","last"]}]}],"place-content":[{"place-content":["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"]}],"place-items":[{"place-items":["start","end","center","stretch","center-safe","end-safe","baseline"]}],"place-self":[{"place-self":["auto","start","end","center","stretch","center-safe","end-safe"]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:G()}],mx:[{mx:G()}],my:[{my:G()}],ms:[{ms:G()}],me:[{me:G()}],mt:[{mt:G()}],mr:[{mr:G()}],mb:[{mb:G()}],ml:[{ml:G()}],"space-x":[{"space-x":w()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":w()}],"space-y-reverse":["space-y-reverse"],size:[{size:N()}],w:[{w:[l,"screen",...N()]}],"min-w":[{"min-w":[l,"screen","none",...N()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[s]},...N()]}],h:[{h:["screen","lh",...N()]}],"min-h":[{"min-h":["screen","lh","none",...N()]}],"max-h":[{"max-h":["screen","lh",...N()]}],"font-size":[{text:["base",r,Y,K]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[t,X,Q]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",S,J]}],"font-family":[{font:[Z,J,o]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[a,X,J]}],"line-clamp":[{"line-clamp":[L,"none",X,Q]}],leading:[{leading:[n,...w()]}],"list-image":[{"list-image":["none",X,J]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",X,J]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:I()}],"text-color":[{text:I()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:["solid","dashed","dotted","double","wavy"]}],"text-decoration-thickness":[{decoration:[L,"from-font","auto",X,K]}],"text-decoration-color":[{decoration:I()}],"underline-offset":[{"underline-offset":[L,"auto",X,J]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:w()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",X,J]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",X,J]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:P()}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","space","round"]}]}],"bg-size":[{bg:E()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},W,X,J],radial:["",X,J],conic:[W,X,J]},re,U]}],"bg-color":[{bg:I()}],"gradient-from-pos":[{from:O()}],"gradient-via-pos":[{via:O()}],"gradient-to-pos":[{to:O()}],"gradient-from":[{from:I()}],"gradient-via":[{via:I()}],"gradient-to":[{to:I()}],rounded:[{rounded:H()}],"rounded-s":[{"rounded-s":H()}],"rounded-e":[{"rounded-e":H()}],"rounded-t":[{"rounded-t":H()}],"rounded-r":[{"rounded-r":H()}],"rounded-b":[{"rounded-b":H()}],"rounded-l":[{"rounded-l":H()}],"rounded-ss":[{"rounded-ss":H()}],"rounded-se":[{"rounded-se":H()}],"rounded-ee":[{"rounded-ee":H()}],"rounded-es":[{"rounded-es":H()}],"rounded-tl":[{"rounded-tl":H()}],"rounded-tr":[{"rounded-tr":H()}],"rounded-br":[{"rounded-br":H()}],"rounded-bl":[{"rounded-bl":H()}],"border-w":[{border:T()}],"border-w-x":[{"border-x":T()}],"border-w-y":[{"border-y":T()}],"border-w-s":[{"border-s":T()}],"border-w-e":[{"border-e":T()}],"border-w-t":[{"border-t":T()}],"border-w-r":[{"border-r":T()}],"border-w-b":[{"border-b":T()}],"border-w-l":[{"border-l":T()}],"divide-x":[{"divide-x":T()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":T()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:["solid","dashed","dotted","double","hidden","none"]}],"divide-style":[{divide:["solid","dashed","dotted","double","hidden","none"]}],"border-color":[{border:I()}],"border-color-x":[{"border-x":I()}],"border-color-y":[{"border-y":I()}],"border-color-s":[{"border-s":I()}],"border-color-e":[{"border-e":I()}],"border-color-t":[{"border-t":I()}],"border-color-r":[{"border-r":I()}],"border-color-b":[{"border-b":I()}],"border-color-l":[{"border-l":I()}],"divide-color":[{divide:I()}],"outline-style":[{outline:["solid","dashed","dotted","double","none","hidden"]}],"outline-offset":[{"outline-offset":[L,X,J]}],"outline-w":[{outline:["",L,Y,K]}],"outline-color":[{outline:I()}],shadow:[{shadow:["","none",c,te,V]}],"shadow-color":[{shadow:I()}],"inset-shadow":[{"inset-shadow":["none",m,te,V]}],"inset-shadow-color":[{"inset-shadow":I()}],"ring-w":[{ring:T()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:I()}],"ring-offset-w":[{"ring-offset":[L,K]}],"ring-offset-color":[{"ring-offset":I()}],"inset-ring-w":[{"inset-ring":T()}],"inset-ring-color":[{"inset-ring":I()}],"text-shadow":[{"text-shadow":["none",p,te,V]}],"text-shadow-color":[{"text-shadow":I()}],opacity:[{opacity:[L,X,J]}],"mix-blend":[{"mix-blend":["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity","plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"]}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[L]}],"mask-image-linear-from-pos":[{"mask-linear-from":_()}],"mask-image-linear-to-pos":[{"mask-linear-to":_()}],"mask-image-linear-from-color":[{"mask-linear-from":I()}],"mask-image-linear-to-color":[{"mask-linear-to":I()}],"mask-image-t-from-pos":[{"mask-t-from":_()}],"mask-image-t-to-pos":[{"mask-t-to":_()}],"mask-image-t-from-color":[{"mask-t-from":I()}],"mask-image-t-to-color":[{"mask-t-to":I()}],"mask-image-r-from-pos":[{"mask-r-from":_()}],"mask-image-r-to-pos":[{"mask-r-to":_()}],"mask-image-r-from-color":[{"mask-r-from":I()}],"mask-image-r-to-color":[{"mask-r-to":I()}],"mask-image-b-from-pos":[{"mask-b-from":_()}],"mask-image-b-to-pos":[{"mask-b-to":_()}],"mask-image-b-from-color":[{"mask-b-from":I()}],"mask-image-b-to-color":[{"mask-b-to":I()}],"mask-image-l-from-pos":[{"mask-l-from":_()}],"mask-image-l-to-pos":[{"mask-l-to":_()}],"mask-image-l-from-color":[{"mask-l-from":I()}],"mask-image-l-to-color":[{"mask-l-to":I()}],"mask-image-x-from-pos":[{"mask-x-from":_()}],"mask-image-x-to-pos":[{"mask-x-to":_()}],"mask-image-x-from-color":[{"mask-x-from":I()}],"mask-image-x-to-color":[{"mask-x-to":I()}],"mask-image-y-from-pos":[{"mask-y-from":_()}],"mask-image-y-to-pos":[{"mask-y-to":_()}],"mask-image-y-from-color":[{"mask-y-from":I()}],"mask-image-y-to-color":[{"mask-y-to":I()}],"mask-image-radial":[{"mask-radial":[X,J]}],"mask-image-radial-from-pos":[{"mask-radial-from":_()}],"mask-image-radial-to-pos":[{"mask-radial-to":_()}],"mask-image-radial-from-color":[{"mask-radial-from":I()}],"mask-image-radial-to-color":[{"mask-radial-to":I()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"]}],"mask-image-conic-pos":[{"mask-conic":[L]}],"mask-image-conic-from-pos":[{"mask-conic-from":_()}],"mask-image-conic-to-pos":[{"mask-conic-to":_()}],"mask-image-conic-from-color":[{"mask-conic-from":I()}],"mask-image-conic-to-color":[{"mask-conic-to":I()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:P()}],"mask-repeat":[{mask:["no-repeat",{repeat:["","x","y","space","round"]}]}],"mask-size":[{mask:E()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",X,J]}],filter:[{filter:["","none",X,J]}],blur:[{blur:B()}],brightness:[{brightness:[L,X,J]}],contrast:[{contrast:[L,X,J]}],"drop-shadow":[{"drop-shadow":["","none",u,te,V]}],"drop-shadow-color":[{"drop-shadow":I()}],grayscale:[{grayscale:["",L,X,J]}],"hue-rotate":[{"hue-rotate":[L,X,J]}],invert:[{invert:["",L,X,J]}],saturate:[{saturate:[L,X,J]}],sepia:[{sepia:["",L,X,J]}],"backdrop-filter":[{"backdrop-filter":["","none",X,J]}],"backdrop-blur":[{"backdrop-blur":B()}],"backdrop-brightness":[{"backdrop-brightness":[L,X,J]}],"backdrop-contrast":[{"backdrop-contrast":[L,X,J]}],"backdrop-grayscale":[{"backdrop-grayscale":["",L,X,J]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[L,X,J]}],"backdrop-invert":[{"backdrop-invert":["",L,X,J]}],"backdrop-opacity":[{"backdrop-opacity":[L,X,J]}],"backdrop-saturate":[{"backdrop-saturate":[L,X,J]}],"backdrop-sepia":[{"backdrop-sepia":["",L,X,J]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",X,J]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[L,"initial",X,J]}],ease:[{ease:["linear","initial",h,X,J]}],delay:[{delay:[L,X,J]}],animate:[{animate:["none",k,X,J]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[b,X,J]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:ae()}],"rotate-x":[{"rotate-x":ae()}],"rotate-y":[{"rotate-y":ae()}],"rotate-z":[{"rotate-z":ae()}],scale:[{scale:ne()}],"scale-x":[{"scale-x":ne()}],"scale-y":[{"scale-y":ne()}],"scale-z":[{"scale-z":ne()}],"scale-3d":["scale-3d"],skew:[{skew:se()}],"skew-x":[{"skew-x":se()}],"skew-y":[{"skew-y":se()}],transform:[{transform:[X,J,"","none","gpu","cpu"]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:le()}],"translate-x":[{"translate-x":le()}],"translate-y":[{"translate-y":le()}],"translate-z":[{"translate-z":le()}],"translate-none":["translate-none"],accent:[{accent:I()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:I()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",X,J]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",X,J]}],fill:[{fill:["none",...I()]}],"stroke-w":[{stroke:[L,Y,K,Q]}],stroke:[{stroke:["none",...I()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}}));function fe(...e){return ue(function(){for(var e,o,r=0,t="",a=arguments.length;r<a;r++)(e=arguments[r])&&(o=l(e))&&(t&&(t+=" "),t+=o);return t}(e))}const be={normal:{opacity:1,pathLength:1,pathOffset:0,transition:{duration:.4,opacity:{duration:.1}}},animate:{opacity:[0,1],pathLength:[0,1],pathOffset:[1,0],transition:{duration:.6,ease:"linear",opacity:{duration:.1}}}},ge={normal:{transition:{duration:.4}},animate:{transition:{duration:.6,ease:"easeInOut"}}};function he({size:l=28,className:i,style:d,autoAnimateOnLoad:c=!1,hoverable:m=!0,loopOnHover:p=!1,animateOnClick:u=!1,onMouseEnter:f,onMouseLeave:b,onClick:g,...h}){const k=r(),x=a(p),w=n((async()=>{await k.start("animate"),await k.start("normal"),x.current&&w()}),[k]);s((()=>{x.current=p}),[p]),s((()=>{c&&w()}),[c,w]);return e("div",{className:fe("rounded-md",i),style:{width:l,height:l,display:"inline-block",...d},onMouseEnter:e=>{m&&w(),f?.(e)},onMouseLeave:e=>{m&&k.start("normal"),b?.(e)},onClick:e=>{u&&w(),g?.(e)},...h,children:o("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",width:"100%",height:"100%",children:[e(t.rect,{width:"18",height:"18",x:"3",y:"3",rx:"2",variants:ge,animate:k,initial:"normal"}),e(t.path,{d:"M17 12h-2l-2 5-2-10-2 5H7",variants:be,animate:k,initial:"normal"})]})})}export{he as SquareActivity};
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useAnimation, motion } from 'framer-motion';
3
+ import { useRef, useCallback, useEffect } from 'react';
4
+
5
+ function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
6
+
7
+ const CLASS_PART_SEPARATOR = '-';
8
+ const createClassGroupUtils = config => {
9
+ const classMap = createClassMap(config);
10
+ const {
11
+ conflictingClassGroups,
12
+ conflictingClassGroupModifiers
13
+ } = config;
14
+ const getClassGroupId = className => {
15
+ const classParts = className.split(CLASS_PART_SEPARATOR);
16
+ // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.
17
+ if (classParts[0] === '' && classParts.length !== 1) {
18
+ classParts.shift();
19
+ }
20
+ return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
21
+ };
22
+ const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {
23
+ const conflicts = conflictingClassGroups[classGroupId] || [];
24
+ if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {
25
+ return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];
26
+ }
27
+ return conflicts;
28
+ };
29
+ return {
30
+ getClassGroupId,
31
+ getConflictingClassGroupIds
32
+ };
33
+ };
34
+ const getGroupRecursive = (classParts, classPartObject) => {
35
+ if (classParts.length === 0) {
36
+ return classPartObject.classGroupId;
37
+ }
38
+ const currentClassPart = classParts[0];
39
+ const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
40
+ const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;
41
+ if (classGroupFromNextClassPart) {
42
+ return classGroupFromNextClassPart;
43
+ }
44
+ if (classPartObject.validators.length === 0) {
45
+ return undefined;
46
+ }
47
+ const classRest = classParts.join(CLASS_PART_SEPARATOR);
48
+ return classPartObject.validators.find(({
49
+ validator
50
+ }) => validator(classRest))?.classGroupId;
51
+ };
52
+ const arbitraryPropertyRegex = /^\[(.+)\]$/;
53
+ const getGroupIdForArbitraryProperty = className => {
54
+ if (arbitraryPropertyRegex.test(className)) {
55
+ const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
56
+ const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));
57
+ if (property) {
58
+ // I use two dots here because one dot is used as prefix for class groups in plugins
59
+ return 'arbitrary..' + property;
60
+ }
61
+ }
62
+ };
63
+ /**
64
+ * Exported for testing only
65
+ */
66
+ const createClassMap = config => {
67
+ const {
68
+ theme,
69
+ classGroups
70
+ } = config;
71
+ const classMap = {
72
+ nextPart: new Map(),
73
+ validators: []
74
+ };
75
+ for (const classGroupId in classGroups) {
76
+ processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);
77
+ }
78
+ return classMap;
79
+ };
80
+ const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {
81
+ classGroup.forEach(classDefinition => {
82
+ if (typeof classDefinition === 'string') {
83
+ const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);
84
+ classPartObjectToEdit.classGroupId = classGroupId;
85
+ return;
86
+ }
87
+ if (typeof classDefinition === 'function') {
88
+ if (isThemeGetter(classDefinition)) {
89
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
90
+ return;
91
+ }
92
+ classPartObject.validators.push({
93
+ validator: classDefinition,
94
+ classGroupId
95
+ });
96
+ return;
97
+ }
98
+ Object.entries(classDefinition).forEach(([key, classGroup]) => {
99
+ processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);
100
+ });
101
+ });
102
+ };
103
+ const getPart = (classPartObject, path) => {
104
+ let currentClassPartObject = classPartObject;
105
+ path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {
106
+ if (!currentClassPartObject.nextPart.has(pathPart)) {
107
+ currentClassPartObject.nextPart.set(pathPart, {
108
+ nextPart: new Map(),
109
+ validators: []
110
+ });
111
+ }
112
+ currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
113
+ });
114
+ return currentClassPartObject;
115
+ };
116
+ const isThemeGetter = func => func.isThemeGetter;
117
+
118
+ // LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance
119
+ const createLruCache = maxCacheSize => {
120
+ if (maxCacheSize < 1) {
121
+ return {
122
+ get: () => undefined,
123
+ set: () => {}
124
+ };
125
+ }
126
+ let cacheSize = 0;
127
+ let cache = new Map();
128
+ let previousCache = new Map();
129
+ const update = (key, value) => {
130
+ cache.set(key, value);
131
+ cacheSize++;
132
+ if (cacheSize > maxCacheSize) {
133
+ cacheSize = 0;
134
+ previousCache = cache;
135
+ cache = new Map();
136
+ }
137
+ };
138
+ return {
139
+ get(key) {
140
+ let value = cache.get(key);
141
+ if (value !== undefined) {
142
+ return value;
143
+ }
144
+ if ((value = previousCache.get(key)) !== undefined) {
145
+ update(key, value);
146
+ return value;
147
+ }
148
+ },
149
+ set(key, value) {
150
+ if (cache.has(key)) {
151
+ cache.set(key, value);
152
+ } else {
153
+ update(key, value);
154
+ }
155
+ }
156
+ };
157
+ };
158
+ const IMPORTANT_MODIFIER = '!';
159
+ const MODIFIER_SEPARATOR = ':';
160
+ const MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;
161
+ const createParseClassName = config => {
162
+ const {
163
+ prefix,
164
+ experimentalParseClassName
165
+ } = config;
166
+ /**
167
+ * Parse class name into parts.
168
+ *
169
+ * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS
170
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js
171
+ */
172
+ let parseClassName = className => {
173
+ const modifiers = [];
174
+ let bracketDepth = 0;
175
+ let parenDepth = 0;
176
+ let modifierStart = 0;
177
+ let postfixModifierPosition;
178
+ for (let index = 0; index < className.length; index++) {
179
+ let currentCharacter = className[index];
180
+ if (bracketDepth === 0 && parenDepth === 0) {
181
+ if (currentCharacter === MODIFIER_SEPARATOR) {
182
+ modifiers.push(className.slice(modifierStart, index));
183
+ modifierStart = index + MODIFIER_SEPARATOR_LENGTH;
184
+ continue;
185
+ }
186
+ if (currentCharacter === '/') {
187
+ postfixModifierPosition = index;
188
+ continue;
189
+ }
190
+ }
191
+ if (currentCharacter === '[') {
192
+ bracketDepth++;
193
+ } else if (currentCharacter === ']') {
194
+ bracketDepth--;
195
+ } else if (currentCharacter === '(') {
196
+ parenDepth++;
197
+ } else if (currentCharacter === ')') {
198
+ parenDepth--;
199
+ }
200
+ }
201
+ const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);
202
+ const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);
203
+ const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;
204
+ const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;
205
+ return {
206
+ modifiers,
207
+ hasImportantModifier,
208
+ baseClassName,
209
+ maybePostfixModifierPosition
210
+ };
211
+ };
212
+ if (prefix) {
213
+ const fullPrefix = prefix + MODIFIER_SEPARATOR;
214
+ const parseClassNameOriginal = parseClassName;
215
+ parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {
216
+ isExternal: true,
217
+ modifiers: [],
218
+ hasImportantModifier: false,
219
+ baseClassName: className,
220
+ maybePostfixModifierPosition: undefined
221
+ };
222
+ }
223
+ if (experimentalParseClassName) {
224
+ const parseClassNameOriginal = parseClassName;
225
+ parseClassName = className => experimentalParseClassName({
226
+ className,
227
+ parseClassName: parseClassNameOriginal
228
+ });
229
+ }
230
+ return parseClassName;
231
+ };
232
+ const stripImportantModifier = baseClassName => {
233
+ if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {
234
+ return baseClassName.substring(0, baseClassName.length - 1);
235
+ }
236
+ /**
237
+ * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
238
+ * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
239
+ */
240
+ if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {
241
+ return baseClassName.substring(1);
242
+ }
243
+ return baseClassName;
244
+ };
245
+
246
+ /**
247
+ * Sorts modifiers according to following schema:
248
+ * - Predefined modifiers are sorted alphabetically
249
+ * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it
250
+ */
251
+ const createSortModifiers = config => {
252
+ const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));
253
+ const sortModifiers = modifiers => {
254
+ if (modifiers.length <= 1) {
255
+ return modifiers;
256
+ }
257
+ const sortedModifiers = [];
258
+ let unsortedModifiers = [];
259
+ modifiers.forEach(modifier => {
260
+ const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];
261
+ if (isPositionSensitive) {
262
+ sortedModifiers.push(...unsortedModifiers.sort(), modifier);
263
+ unsortedModifiers = [];
264
+ } else {
265
+ unsortedModifiers.push(modifier);
266
+ }
267
+ });
268
+ sortedModifiers.push(...unsortedModifiers.sort());
269
+ return sortedModifiers;
270
+ };
271
+ return sortModifiers;
272
+ };
273
+ const createConfigUtils = config => ({
274
+ cache: createLruCache(config.cacheSize),
275
+ parseClassName: createParseClassName(config),
276
+ sortModifiers: createSortModifiers(config),
277
+ ...createClassGroupUtils(config)
278
+ });
279
+ const SPLIT_CLASSES_REGEX = /\s+/;
280
+ const mergeClassList = (classList, configUtils) => {
281
+ const {
282
+ parseClassName,
283
+ getClassGroupId,
284
+ getConflictingClassGroupIds,
285
+ sortModifiers
286
+ } = configUtils;
287
+ /**
288
+ * Set of classGroupIds in following format:
289
+ * `{importantModifier}{variantModifiers}{classGroupId}`
290
+ * @example 'float'
291
+ * @example 'hover:focus:bg-color'
292
+ * @example 'md:!pr'
293
+ */
294
+ const classGroupsInConflict = [];
295
+ const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
296
+ let result = '';
297
+ for (let index = classNames.length - 1; index >= 0; index -= 1) {
298
+ const originalClassName = classNames[index];
299
+ const {
300
+ isExternal,
301
+ modifiers,
302
+ hasImportantModifier,
303
+ baseClassName,
304
+ maybePostfixModifierPosition
305
+ } = parseClassName(originalClassName);
306
+ if (isExternal) {
307
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
308
+ continue;
309
+ }
310
+ let hasPostfixModifier = !!maybePostfixModifierPosition;
311
+ let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
312
+ if (!classGroupId) {
313
+ if (!hasPostfixModifier) {
314
+ // Not a Tailwind class
315
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
316
+ continue;
317
+ }
318
+ classGroupId = getClassGroupId(baseClassName);
319
+ if (!classGroupId) {
320
+ // Not a Tailwind class
321
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
322
+ continue;
323
+ }
324
+ hasPostfixModifier = false;
325
+ }
326
+ const variantModifier = sortModifiers(modifiers).join(':');
327
+ const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
328
+ const classId = modifierId + classGroupId;
329
+ if (classGroupsInConflict.includes(classId)) {
330
+ // Tailwind class omitted due to conflict
331
+ continue;
332
+ }
333
+ classGroupsInConflict.push(classId);
334
+ const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);
335
+ for (let i = 0; i < conflictGroups.length; ++i) {
336
+ const group = conflictGroups[i];
337
+ classGroupsInConflict.push(modifierId + group);
338
+ }
339
+ // Tailwind class not in conflict
340
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
341
+ }
342
+ return result;
343
+ };
344
+
345
+ /**
346
+ * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.
347
+ *
348
+ * Specifically:
349
+ * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js
350
+ * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts
351
+ *
352
+ * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
353
+ */
354
+ function twJoin() {
355
+ let index = 0;
356
+ let argument;
357
+ let resolvedValue;
358
+ let string = '';
359
+ while (index < arguments.length) {
360
+ if (argument = arguments[index++]) {
361
+ if (resolvedValue = toValue(argument)) {
362
+ string && (string += ' ');
363
+ string += resolvedValue;
364
+ }
365
+ }
366
+ }
367
+ return string;
368
+ }
369
+ const toValue = mix => {
370
+ if (typeof mix === 'string') {
371
+ return mix;
372
+ }
373
+ let resolvedValue;
374
+ let string = '';
375
+ for (let k = 0; k < mix.length; k++) {
376
+ if (mix[k]) {
377
+ if (resolvedValue = toValue(mix[k])) {
378
+ string && (string += ' ');
379
+ string += resolvedValue;
380
+ }
381
+ }
382
+ }
383
+ return string;
384
+ };
385
+ function createTailwindMerge(createConfigFirst, ...createConfigRest) {
386
+ let configUtils;
387
+ let cacheGet;
388
+ let cacheSet;
389
+ let functionToCall = initTailwindMerge;
390
+ function initTailwindMerge(classList) {
391
+ const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
392
+ configUtils = createConfigUtils(config);
393
+ cacheGet = configUtils.cache.get;
394
+ cacheSet = configUtils.cache.set;
395
+ functionToCall = tailwindMerge;
396
+ return tailwindMerge(classList);
397
+ }
398
+ function tailwindMerge(classList) {
399
+ const cachedResult = cacheGet(classList);
400
+ if (cachedResult) {
401
+ return cachedResult;
402
+ }
403
+ const result = mergeClassList(classList, configUtils);
404
+ cacheSet(classList, result);
405
+ return result;
406
+ }
407
+ return function callTailwindMerge() {
408
+ return functionToCall(twJoin.apply(null, arguments));
409
+ };
410
+ }
411
+ const fromTheme = key => {
412
+ const themeGetter = theme => theme[key] || [];
413
+ themeGetter.isThemeGetter = true;
414
+ return themeGetter;
415
+ };
416
+ const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
417
+ const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
418
+ const fractionRegex = /^\d+\/\d+$/;
419
+ const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
420
+ const lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
421
+ const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/;
422
+ // Shadow always begins with x and y offset separated by underscore optionally prepended by inset
423
+ const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
424
+ const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
425
+ const isFraction = value => fractionRegex.test(value);
426
+ const isNumber = value => !!value && !Number.isNaN(Number(value));
427
+ const isInteger = value => !!value && Number.isInteger(Number(value));
428
+ const isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));
429
+ const isTshirtSize = value => tshirtUnitRegex.test(value);
430
+ const isAny = () => true;
431
+ const isLengthOnly = value =>
432
+ // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
433
+ // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
434
+ // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
435
+ lengthUnitRegex.test(value) && !colorFunctionRegex.test(value);
436
+ const isNever = () => false;
437
+ const isShadow = value => shadowRegex.test(value);
438
+ const isImage = value => imageRegex.test(value);
439
+ const isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);
440
+ const isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);
441
+ const isArbitraryValue = value => arbitraryValueRegex.test(value);
442
+ const isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);
443
+ const isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);
444
+ const isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);
445
+ const isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);
446
+ const isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);
447
+ const isArbitraryVariable = value => arbitraryVariableRegex.test(value);
448
+ const isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);
449
+ const isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);
450
+ const isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);
451
+ const isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);
452
+ const isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);
453
+ const isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);
454
+ // Helpers
455
+ const getIsArbitraryValue = (value, testLabel, testValue) => {
456
+ const result = arbitraryValueRegex.exec(value);
457
+ if (result) {
458
+ if (result[1]) {
459
+ return testLabel(result[1]);
460
+ }
461
+ return testValue(result[2]);
462
+ }
463
+ return false;
464
+ };
465
+ const getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {
466
+ const result = arbitraryVariableRegex.exec(value);
467
+ if (result) {
468
+ if (result[1]) {
469
+ return testLabel(result[1]);
470
+ }
471
+ return shouldMatchNoLabel;
472
+ }
473
+ return false;
474
+ };
475
+ // Labels
476
+ const isLabelPosition = label => label === 'position' || label === 'percentage';
477
+ const isLabelImage = label => label === 'image' || label === 'url';
478
+ const isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';
479
+ const isLabelLength = label => label === 'length';
480
+ const isLabelNumber = label => label === 'number';
481
+ const isLabelFamilyName = label => label === 'family-name';
482
+ const isLabelShadow = label => label === 'shadow';
483
+ const getDefaultConfig = () => {
484
+ /**
485
+ * Theme getters for theme variable namespaces
486
+ * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces
487
+ */
488
+ /***/
489
+ const themeColor = fromTheme('color');
490
+ const themeFont = fromTheme('font');
491
+ const themeText = fromTheme('text');
492
+ const themeFontWeight = fromTheme('font-weight');
493
+ const themeTracking = fromTheme('tracking');
494
+ const themeLeading = fromTheme('leading');
495
+ const themeBreakpoint = fromTheme('breakpoint');
496
+ const themeContainer = fromTheme('container');
497
+ const themeSpacing = fromTheme('spacing');
498
+ const themeRadius = fromTheme('radius');
499
+ const themeShadow = fromTheme('shadow');
500
+ const themeInsetShadow = fromTheme('inset-shadow');
501
+ const themeTextShadow = fromTheme('text-shadow');
502
+ const themeDropShadow = fromTheme('drop-shadow');
503
+ const themeBlur = fromTheme('blur');
504
+ const themePerspective = fromTheme('perspective');
505
+ const themeAspect = fromTheme('aspect');
506
+ const themeEase = fromTheme('ease');
507
+ const themeAnimate = fromTheme('animate');
508
+ /**
509
+ * Helpers to avoid repeating the same scales
510
+ *
511
+ * We use functions that create a new array every time they're called instead of static arrays.
512
+ * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.
513
+ */
514
+ /***/
515
+ const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];
516
+ const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',
517
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
518
+ 'left-top', 'top-right',
519
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
520
+ 'right-top', 'bottom-right',
521
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
522
+ 'right-bottom', 'bottom-left',
523
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
524
+ 'left-bottom'];
525
+ const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];
526
+ const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];
527
+ const scaleOverscroll = () => ['auto', 'contain', 'none'];
528
+ const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];
529
+ const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];
530
+ const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];
531
+ const scaleGridColRowStartAndEnd = () => ['auto', {
532
+ span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]
533
+ }, isInteger, isArbitraryVariable, isArbitraryValue];
534
+ const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];
535
+ const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];
536
+ const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];
537
+ const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];
538
+ const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];
539
+ const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
540
+ const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];
541
+ const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {
542
+ position: [isArbitraryVariable, isArbitraryValue]
543
+ }];
544
+ const scaleBgRepeat = () => ['no-repeat', {
545
+ repeat: ['', 'x', 'y', 'space', 'round']
546
+ }];
547
+ const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {
548
+ size: [isArbitraryVariable, isArbitraryValue]
549
+ }];
550
+ const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];
551
+ const scaleRadius = () => [
552
+ // Deprecated since Tailwind CSS v4.0.0
553
+ '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];
554
+ const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];
555
+ const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];
556
+ const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];
557
+ const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];
558
+ const scaleBlur = () => [
559
+ // Deprecated since Tailwind CSS v4.0.0
560
+ '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];
561
+ const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];
562
+ const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];
563
+ const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];
564
+ const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];
565
+ return {
566
+ cacheSize: 500,
567
+ theme: {
568
+ animate: ['spin', 'ping', 'pulse', 'bounce'],
569
+ aspect: ['video'],
570
+ blur: [isTshirtSize],
571
+ breakpoint: [isTshirtSize],
572
+ color: [isAny],
573
+ container: [isTshirtSize],
574
+ 'drop-shadow': [isTshirtSize],
575
+ ease: ['in', 'out', 'in-out'],
576
+ font: [isAnyNonArbitrary],
577
+ 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],
578
+ 'inset-shadow': [isTshirtSize],
579
+ leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],
580
+ perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],
581
+ radius: [isTshirtSize],
582
+ shadow: [isTshirtSize],
583
+ spacing: ['px', isNumber],
584
+ text: [isTshirtSize],
585
+ 'text-shadow': [isTshirtSize],
586
+ tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']
587
+ },
588
+ classGroups: {
589
+ // --------------
590
+ // --- Layout ---
591
+ // --------------
592
+ /**
593
+ * Aspect Ratio
594
+ * @see https://tailwindcss.com/docs/aspect-ratio
595
+ */
596
+ aspect: [{
597
+ aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]
598
+ }],
599
+ /**
600
+ * Container
601
+ * @see https://tailwindcss.com/docs/container
602
+ * @deprecated since Tailwind CSS v4.0.0
603
+ */
604
+ container: ['container'],
605
+ /**
606
+ * Columns
607
+ * @see https://tailwindcss.com/docs/columns
608
+ */
609
+ columns: [{
610
+ columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]
611
+ }],
612
+ /**
613
+ * Break After
614
+ * @see https://tailwindcss.com/docs/break-after
615
+ */
616
+ 'break-after': [{
617
+ 'break-after': scaleBreak()
618
+ }],
619
+ /**
620
+ * Break Before
621
+ * @see https://tailwindcss.com/docs/break-before
622
+ */
623
+ 'break-before': [{
624
+ 'break-before': scaleBreak()
625
+ }],
626
+ /**
627
+ * Break Inside
628
+ * @see https://tailwindcss.com/docs/break-inside
629
+ */
630
+ 'break-inside': [{
631
+ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']
632
+ }],
633
+ /**
634
+ * Box Decoration Break
635
+ * @see https://tailwindcss.com/docs/box-decoration-break
636
+ */
637
+ 'box-decoration': [{
638
+ 'box-decoration': ['slice', 'clone']
639
+ }],
640
+ /**
641
+ * Box Sizing
642
+ * @see https://tailwindcss.com/docs/box-sizing
643
+ */
644
+ box: [{
645
+ box: ['border', 'content']
646
+ }],
647
+ /**
648
+ * Display
649
+ * @see https://tailwindcss.com/docs/display
650
+ */
651
+ display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],
652
+ /**
653
+ * Screen Reader Only
654
+ * @see https://tailwindcss.com/docs/display#screen-reader-only
655
+ */
656
+ sr: ['sr-only', 'not-sr-only'],
657
+ /**
658
+ * Floats
659
+ * @see https://tailwindcss.com/docs/float
660
+ */
661
+ float: [{
662
+ float: ['right', 'left', 'none', 'start', 'end']
663
+ }],
664
+ /**
665
+ * Clear
666
+ * @see https://tailwindcss.com/docs/clear
667
+ */
668
+ clear: [{
669
+ clear: ['left', 'right', 'both', 'none', 'start', 'end']
670
+ }],
671
+ /**
672
+ * Isolation
673
+ * @see https://tailwindcss.com/docs/isolation
674
+ */
675
+ isolation: ['isolate', 'isolation-auto'],
676
+ /**
677
+ * Object Fit
678
+ * @see https://tailwindcss.com/docs/object-fit
679
+ */
680
+ 'object-fit': [{
681
+ object: ['contain', 'cover', 'fill', 'none', 'scale-down']
682
+ }],
683
+ /**
684
+ * Object Position
685
+ * @see https://tailwindcss.com/docs/object-position
686
+ */
687
+ 'object-position': [{
688
+ object: scalePositionWithArbitrary()
689
+ }],
690
+ /**
691
+ * Overflow
692
+ * @see https://tailwindcss.com/docs/overflow
693
+ */
694
+ overflow: [{
695
+ overflow: scaleOverflow()
696
+ }],
697
+ /**
698
+ * Overflow X
699
+ * @see https://tailwindcss.com/docs/overflow
700
+ */
701
+ 'overflow-x': [{
702
+ 'overflow-x': scaleOverflow()
703
+ }],
704
+ /**
705
+ * Overflow Y
706
+ * @see https://tailwindcss.com/docs/overflow
707
+ */
708
+ 'overflow-y': [{
709
+ 'overflow-y': scaleOverflow()
710
+ }],
711
+ /**
712
+ * Overscroll Behavior
713
+ * @see https://tailwindcss.com/docs/overscroll-behavior
714
+ */
715
+ overscroll: [{
716
+ overscroll: scaleOverscroll()
717
+ }],
718
+ /**
719
+ * Overscroll Behavior X
720
+ * @see https://tailwindcss.com/docs/overscroll-behavior
721
+ */
722
+ 'overscroll-x': [{
723
+ 'overscroll-x': scaleOverscroll()
724
+ }],
725
+ /**
726
+ * Overscroll Behavior Y
727
+ * @see https://tailwindcss.com/docs/overscroll-behavior
728
+ */
729
+ 'overscroll-y': [{
730
+ 'overscroll-y': scaleOverscroll()
731
+ }],
732
+ /**
733
+ * Position
734
+ * @see https://tailwindcss.com/docs/position
735
+ */
736
+ position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],
737
+ /**
738
+ * Top / Right / Bottom / Left
739
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
740
+ */
741
+ inset: [{
742
+ inset: scaleInset()
743
+ }],
744
+ /**
745
+ * Right / Left
746
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
747
+ */
748
+ 'inset-x': [{
749
+ 'inset-x': scaleInset()
750
+ }],
751
+ /**
752
+ * Top / Bottom
753
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
754
+ */
755
+ 'inset-y': [{
756
+ 'inset-y': scaleInset()
757
+ }],
758
+ /**
759
+ * Start
760
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
761
+ */
762
+ start: [{
763
+ start: scaleInset()
764
+ }],
765
+ /**
766
+ * End
767
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
768
+ */
769
+ end: [{
770
+ end: scaleInset()
771
+ }],
772
+ /**
773
+ * Top
774
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
775
+ */
776
+ top: [{
777
+ top: scaleInset()
778
+ }],
779
+ /**
780
+ * Right
781
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
782
+ */
783
+ right: [{
784
+ right: scaleInset()
785
+ }],
786
+ /**
787
+ * Bottom
788
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
789
+ */
790
+ bottom: [{
791
+ bottom: scaleInset()
792
+ }],
793
+ /**
794
+ * Left
795
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
796
+ */
797
+ left: [{
798
+ left: scaleInset()
799
+ }],
800
+ /**
801
+ * Visibility
802
+ * @see https://tailwindcss.com/docs/visibility
803
+ */
804
+ visibility: ['visible', 'invisible', 'collapse'],
805
+ /**
806
+ * Z-Index
807
+ * @see https://tailwindcss.com/docs/z-index
808
+ */
809
+ z: [{
810
+ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]
811
+ }],
812
+ // ------------------------
813
+ // --- Flexbox and Grid ---
814
+ // ------------------------
815
+ /**
816
+ * Flex Basis
817
+ * @see https://tailwindcss.com/docs/flex-basis
818
+ */
819
+ basis: [{
820
+ basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]
821
+ }],
822
+ /**
823
+ * Flex Direction
824
+ * @see https://tailwindcss.com/docs/flex-direction
825
+ */
826
+ 'flex-direction': [{
827
+ flex: ['row', 'row-reverse', 'col', 'col-reverse']
828
+ }],
829
+ /**
830
+ * Flex Wrap
831
+ * @see https://tailwindcss.com/docs/flex-wrap
832
+ */
833
+ 'flex-wrap': [{
834
+ flex: ['nowrap', 'wrap', 'wrap-reverse']
835
+ }],
836
+ /**
837
+ * Flex
838
+ * @see https://tailwindcss.com/docs/flex
839
+ */
840
+ flex: [{
841
+ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]
842
+ }],
843
+ /**
844
+ * Flex Grow
845
+ * @see https://tailwindcss.com/docs/flex-grow
846
+ */
847
+ grow: [{
848
+ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]
849
+ }],
850
+ /**
851
+ * Flex Shrink
852
+ * @see https://tailwindcss.com/docs/flex-shrink
853
+ */
854
+ shrink: [{
855
+ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]
856
+ }],
857
+ /**
858
+ * Order
859
+ * @see https://tailwindcss.com/docs/order
860
+ */
861
+ order: [{
862
+ order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]
863
+ }],
864
+ /**
865
+ * Grid Template Columns
866
+ * @see https://tailwindcss.com/docs/grid-template-columns
867
+ */
868
+ 'grid-cols': [{
869
+ 'grid-cols': scaleGridTemplateColsRows()
870
+ }],
871
+ /**
872
+ * Grid Column Start / End
873
+ * @see https://tailwindcss.com/docs/grid-column
874
+ */
875
+ 'col-start-end': [{
876
+ col: scaleGridColRowStartAndEnd()
877
+ }],
878
+ /**
879
+ * Grid Column Start
880
+ * @see https://tailwindcss.com/docs/grid-column
881
+ */
882
+ 'col-start': [{
883
+ 'col-start': scaleGridColRowStartOrEnd()
884
+ }],
885
+ /**
886
+ * Grid Column End
887
+ * @see https://tailwindcss.com/docs/grid-column
888
+ */
889
+ 'col-end': [{
890
+ 'col-end': scaleGridColRowStartOrEnd()
891
+ }],
892
+ /**
893
+ * Grid Template Rows
894
+ * @see https://tailwindcss.com/docs/grid-template-rows
895
+ */
896
+ 'grid-rows': [{
897
+ 'grid-rows': scaleGridTemplateColsRows()
898
+ }],
899
+ /**
900
+ * Grid Row Start / End
901
+ * @see https://tailwindcss.com/docs/grid-row
902
+ */
903
+ 'row-start-end': [{
904
+ row: scaleGridColRowStartAndEnd()
905
+ }],
906
+ /**
907
+ * Grid Row Start
908
+ * @see https://tailwindcss.com/docs/grid-row
909
+ */
910
+ 'row-start': [{
911
+ 'row-start': scaleGridColRowStartOrEnd()
912
+ }],
913
+ /**
914
+ * Grid Row End
915
+ * @see https://tailwindcss.com/docs/grid-row
916
+ */
917
+ 'row-end': [{
918
+ 'row-end': scaleGridColRowStartOrEnd()
919
+ }],
920
+ /**
921
+ * Grid Auto Flow
922
+ * @see https://tailwindcss.com/docs/grid-auto-flow
923
+ */
924
+ 'grid-flow': [{
925
+ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']
926
+ }],
927
+ /**
928
+ * Grid Auto Columns
929
+ * @see https://tailwindcss.com/docs/grid-auto-columns
930
+ */
931
+ 'auto-cols': [{
932
+ 'auto-cols': scaleGridAutoColsRows()
933
+ }],
934
+ /**
935
+ * Grid Auto Rows
936
+ * @see https://tailwindcss.com/docs/grid-auto-rows
937
+ */
938
+ 'auto-rows': [{
939
+ 'auto-rows': scaleGridAutoColsRows()
940
+ }],
941
+ /**
942
+ * Gap
943
+ * @see https://tailwindcss.com/docs/gap
944
+ */
945
+ gap: [{
946
+ gap: scaleUnambiguousSpacing()
947
+ }],
948
+ /**
949
+ * Gap X
950
+ * @see https://tailwindcss.com/docs/gap
951
+ */
952
+ 'gap-x': [{
953
+ 'gap-x': scaleUnambiguousSpacing()
954
+ }],
955
+ /**
956
+ * Gap Y
957
+ * @see https://tailwindcss.com/docs/gap
958
+ */
959
+ 'gap-y': [{
960
+ 'gap-y': scaleUnambiguousSpacing()
961
+ }],
962
+ /**
963
+ * Justify Content
964
+ * @see https://tailwindcss.com/docs/justify-content
965
+ */
966
+ 'justify-content': [{
967
+ justify: [...scaleAlignPrimaryAxis(), 'normal']
968
+ }],
969
+ /**
970
+ * Justify Items
971
+ * @see https://tailwindcss.com/docs/justify-items
972
+ */
973
+ 'justify-items': [{
974
+ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']
975
+ }],
976
+ /**
977
+ * Justify Self
978
+ * @see https://tailwindcss.com/docs/justify-self
979
+ */
980
+ 'justify-self': [{
981
+ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]
982
+ }],
983
+ /**
984
+ * Align Content
985
+ * @see https://tailwindcss.com/docs/align-content
986
+ */
987
+ 'align-content': [{
988
+ content: ['normal', ...scaleAlignPrimaryAxis()]
989
+ }],
990
+ /**
991
+ * Align Items
992
+ * @see https://tailwindcss.com/docs/align-items
993
+ */
994
+ 'align-items': [{
995
+ items: [...scaleAlignSecondaryAxis(), {
996
+ baseline: ['', 'last']
997
+ }]
998
+ }],
999
+ /**
1000
+ * Align Self
1001
+ * @see https://tailwindcss.com/docs/align-self
1002
+ */
1003
+ 'align-self': [{
1004
+ self: ['auto', ...scaleAlignSecondaryAxis(), {
1005
+ baseline: ['', 'last']
1006
+ }]
1007
+ }],
1008
+ /**
1009
+ * Place Content
1010
+ * @see https://tailwindcss.com/docs/place-content
1011
+ */
1012
+ 'place-content': [{
1013
+ 'place-content': scaleAlignPrimaryAxis()
1014
+ }],
1015
+ /**
1016
+ * Place Items
1017
+ * @see https://tailwindcss.com/docs/place-items
1018
+ */
1019
+ 'place-items': [{
1020
+ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']
1021
+ }],
1022
+ /**
1023
+ * Place Self
1024
+ * @see https://tailwindcss.com/docs/place-self
1025
+ */
1026
+ 'place-self': [{
1027
+ 'place-self': ['auto', ...scaleAlignSecondaryAxis()]
1028
+ }],
1029
+ // Spacing
1030
+ /**
1031
+ * Padding
1032
+ * @see https://tailwindcss.com/docs/padding
1033
+ */
1034
+ p: [{
1035
+ p: scaleUnambiguousSpacing()
1036
+ }],
1037
+ /**
1038
+ * Padding X
1039
+ * @see https://tailwindcss.com/docs/padding
1040
+ */
1041
+ px: [{
1042
+ px: scaleUnambiguousSpacing()
1043
+ }],
1044
+ /**
1045
+ * Padding Y
1046
+ * @see https://tailwindcss.com/docs/padding
1047
+ */
1048
+ py: [{
1049
+ py: scaleUnambiguousSpacing()
1050
+ }],
1051
+ /**
1052
+ * Padding Start
1053
+ * @see https://tailwindcss.com/docs/padding
1054
+ */
1055
+ ps: [{
1056
+ ps: scaleUnambiguousSpacing()
1057
+ }],
1058
+ /**
1059
+ * Padding End
1060
+ * @see https://tailwindcss.com/docs/padding
1061
+ */
1062
+ pe: [{
1063
+ pe: scaleUnambiguousSpacing()
1064
+ }],
1065
+ /**
1066
+ * Padding Top
1067
+ * @see https://tailwindcss.com/docs/padding
1068
+ */
1069
+ pt: [{
1070
+ pt: scaleUnambiguousSpacing()
1071
+ }],
1072
+ /**
1073
+ * Padding Right
1074
+ * @see https://tailwindcss.com/docs/padding
1075
+ */
1076
+ pr: [{
1077
+ pr: scaleUnambiguousSpacing()
1078
+ }],
1079
+ /**
1080
+ * Padding Bottom
1081
+ * @see https://tailwindcss.com/docs/padding
1082
+ */
1083
+ pb: [{
1084
+ pb: scaleUnambiguousSpacing()
1085
+ }],
1086
+ /**
1087
+ * Padding Left
1088
+ * @see https://tailwindcss.com/docs/padding
1089
+ */
1090
+ pl: [{
1091
+ pl: scaleUnambiguousSpacing()
1092
+ }],
1093
+ /**
1094
+ * Margin
1095
+ * @see https://tailwindcss.com/docs/margin
1096
+ */
1097
+ m: [{
1098
+ m: scaleMargin()
1099
+ }],
1100
+ /**
1101
+ * Margin X
1102
+ * @see https://tailwindcss.com/docs/margin
1103
+ */
1104
+ mx: [{
1105
+ mx: scaleMargin()
1106
+ }],
1107
+ /**
1108
+ * Margin Y
1109
+ * @see https://tailwindcss.com/docs/margin
1110
+ */
1111
+ my: [{
1112
+ my: scaleMargin()
1113
+ }],
1114
+ /**
1115
+ * Margin Start
1116
+ * @see https://tailwindcss.com/docs/margin
1117
+ */
1118
+ ms: [{
1119
+ ms: scaleMargin()
1120
+ }],
1121
+ /**
1122
+ * Margin End
1123
+ * @see https://tailwindcss.com/docs/margin
1124
+ */
1125
+ me: [{
1126
+ me: scaleMargin()
1127
+ }],
1128
+ /**
1129
+ * Margin Top
1130
+ * @see https://tailwindcss.com/docs/margin
1131
+ */
1132
+ mt: [{
1133
+ mt: scaleMargin()
1134
+ }],
1135
+ /**
1136
+ * Margin Right
1137
+ * @see https://tailwindcss.com/docs/margin
1138
+ */
1139
+ mr: [{
1140
+ mr: scaleMargin()
1141
+ }],
1142
+ /**
1143
+ * Margin Bottom
1144
+ * @see https://tailwindcss.com/docs/margin
1145
+ */
1146
+ mb: [{
1147
+ mb: scaleMargin()
1148
+ }],
1149
+ /**
1150
+ * Margin Left
1151
+ * @see https://tailwindcss.com/docs/margin
1152
+ */
1153
+ ml: [{
1154
+ ml: scaleMargin()
1155
+ }],
1156
+ /**
1157
+ * Space Between X
1158
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
1159
+ */
1160
+ 'space-x': [{
1161
+ 'space-x': scaleUnambiguousSpacing()
1162
+ }],
1163
+ /**
1164
+ * Space Between X Reverse
1165
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
1166
+ */
1167
+ 'space-x-reverse': ['space-x-reverse'],
1168
+ /**
1169
+ * Space Between Y
1170
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
1171
+ */
1172
+ 'space-y': [{
1173
+ 'space-y': scaleUnambiguousSpacing()
1174
+ }],
1175
+ /**
1176
+ * Space Between Y Reverse
1177
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
1178
+ */
1179
+ 'space-y-reverse': ['space-y-reverse'],
1180
+ // --------------
1181
+ // --- Sizing ---
1182
+ // --------------
1183
+ /**
1184
+ * Size
1185
+ * @see https://tailwindcss.com/docs/width#setting-both-width-and-height
1186
+ */
1187
+ size: [{
1188
+ size: scaleSizing()
1189
+ }],
1190
+ /**
1191
+ * Width
1192
+ * @see https://tailwindcss.com/docs/width
1193
+ */
1194
+ w: [{
1195
+ w: [themeContainer, 'screen', ...scaleSizing()]
1196
+ }],
1197
+ /**
1198
+ * Min-Width
1199
+ * @see https://tailwindcss.com/docs/min-width
1200
+ */
1201
+ 'min-w': [{
1202
+ 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
1203
+ 'none', ...scaleSizing()]
1204
+ }],
1205
+ /**
1206
+ * Max-Width
1207
+ * @see https://tailwindcss.com/docs/max-width
1208
+ */
1209
+ 'max-w': [{
1210
+ 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
1211
+ 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
1212
+ {
1213
+ screen: [themeBreakpoint]
1214
+ }, ...scaleSizing()]
1215
+ }],
1216
+ /**
1217
+ * Height
1218
+ * @see https://tailwindcss.com/docs/height
1219
+ */
1220
+ h: [{
1221
+ h: ['screen', 'lh', ...scaleSizing()]
1222
+ }],
1223
+ /**
1224
+ * Min-Height
1225
+ * @see https://tailwindcss.com/docs/min-height
1226
+ */
1227
+ 'min-h': [{
1228
+ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]
1229
+ }],
1230
+ /**
1231
+ * Max-Height
1232
+ * @see https://tailwindcss.com/docs/max-height
1233
+ */
1234
+ 'max-h': [{
1235
+ 'max-h': ['screen', 'lh', ...scaleSizing()]
1236
+ }],
1237
+ // ------------------
1238
+ // --- Typography ---
1239
+ // ------------------
1240
+ /**
1241
+ * Font Size
1242
+ * @see https://tailwindcss.com/docs/font-size
1243
+ */
1244
+ 'font-size': [{
1245
+ text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]
1246
+ }],
1247
+ /**
1248
+ * Font Smoothing
1249
+ * @see https://tailwindcss.com/docs/font-smoothing
1250
+ */
1251
+ 'font-smoothing': ['antialiased', 'subpixel-antialiased'],
1252
+ /**
1253
+ * Font Style
1254
+ * @see https://tailwindcss.com/docs/font-style
1255
+ */
1256
+ 'font-style': ['italic', 'not-italic'],
1257
+ /**
1258
+ * Font Weight
1259
+ * @see https://tailwindcss.com/docs/font-weight
1260
+ */
1261
+ 'font-weight': [{
1262
+ font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]
1263
+ }],
1264
+ /**
1265
+ * Font Stretch
1266
+ * @see https://tailwindcss.com/docs/font-stretch
1267
+ */
1268
+ 'font-stretch': [{
1269
+ 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]
1270
+ }],
1271
+ /**
1272
+ * Font Family
1273
+ * @see https://tailwindcss.com/docs/font-family
1274
+ */
1275
+ 'font-family': [{
1276
+ font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]
1277
+ }],
1278
+ /**
1279
+ * Font Variant Numeric
1280
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1281
+ */
1282
+ 'fvn-normal': ['normal-nums'],
1283
+ /**
1284
+ * Font Variant Numeric
1285
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1286
+ */
1287
+ 'fvn-ordinal': ['ordinal'],
1288
+ /**
1289
+ * Font Variant Numeric
1290
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1291
+ */
1292
+ 'fvn-slashed-zero': ['slashed-zero'],
1293
+ /**
1294
+ * Font Variant Numeric
1295
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1296
+ */
1297
+ 'fvn-figure': ['lining-nums', 'oldstyle-nums'],
1298
+ /**
1299
+ * Font Variant Numeric
1300
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1301
+ */
1302
+ 'fvn-spacing': ['proportional-nums', 'tabular-nums'],
1303
+ /**
1304
+ * Font Variant Numeric
1305
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1306
+ */
1307
+ 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],
1308
+ /**
1309
+ * Letter Spacing
1310
+ * @see https://tailwindcss.com/docs/letter-spacing
1311
+ */
1312
+ tracking: [{
1313
+ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]
1314
+ }],
1315
+ /**
1316
+ * Line Clamp
1317
+ * @see https://tailwindcss.com/docs/line-clamp
1318
+ */
1319
+ 'line-clamp': [{
1320
+ 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]
1321
+ }],
1322
+ /**
1323
+ * Line Height
1324
+ * @see https://tailwindcss.com/docs/line-height
1325
+ */
1326
+ leading: [{
1327
+ leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
1328
+ themeLeading, ...scaleUnambiguousSpacing()]
1329
+ }],
1330
+ /**
1331
+ * List Style Image
1332
+ * @see https://tailwindcss.com/docs/list-style-image
1333
+ */
1334
+ 'list-image': [{
1335
+ 'list-image': ['none', isArbitraryVariable, isArbitraryValue]
1336
+ }],
1337
+ /**
1338
+ * List Style Position
1339
+ * @see https://tailwindcss.com/docs/list-style-position
1340
+ */
1341
+ 'list-style-position': [{
1342
+ list: ['inside', 'outside']
1343
+ }],
1344
+ /**
1345
+ * List Style Type
1346
+ * @see https://tailwindcss.com/docs/list-style-type
1347
+ */
1348
+ 'list-style-type': [{
1349
+ list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]
1350
+ }],
1351
+ /**
1352
+ * Text Alignment
1353
+ * @see https://tailwindcss.com/docs/text-align
1354
+ */
1355
+ 'text-alignment': [{
1356
+ text: ['left', 'center', 'right', 'justify', 'start', 'end']
1357
+ }],
1358
+ /**
1359
+ * Placeholder Color
1360
+ * @deprecated since Tailwind CSS v3.0.0
1361
+ * @see https://v3.tailwindcss.com/docs/placeholder-color
1362
+ */
1363
+ 'placeholder-color': [{
1364
+ placeholder: scaleColor()
1365
+ }],
1366
+ /**
1367
+ * Text Color
1368
+ * @see https://tailwindcss.com/docs/text-color
1369
+ */
1370
+ 'text-color': [{
1371
+ text: scaleColor()
1372
+ }],
1373
+ /**
1374
+ * Text Decoration
1375
+ * @see https://tailwindcss.com/docs/text-decoration
1376
+ */
1377
+ 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],
1378
+ /**
1379
+ * Text Decoration Style
1380
+ * @see https://tailwindcss.com/docs/text-decoration-style
1381
+ */
1382
+ 'text-decoration-style': [{
1383
+ decoration: [...scaleLineStyle(), 'wavy']
1384
+ }],
1385
+ /**
1386
+ * Text Decoration Thickness
1387
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
1388
+ */
1389
+ 'text-decoration-thickness': [{
1390
+ decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]
1391
+ }],
1392
+ /**
1393
+ * Text Decoration Color
1394
+ * @see https://tailwindcss.com/docs/text-decoration-color
1395
+ */
1396
+ 'text-decoration-color': [{
1397
+ decoration: scaleColor()
1398
+ }],
1399
+ /**
1400
+ * Text Underline Offset
1401
+ * @see https://tailwindcss.com/docs/text-underline-offset
1402
+ */
1403
+ 'underline-offset': [{
1404
+ 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]
1405
+ }],
1406
+ /**
1407
+ * Text Transform
1408
+ * @see https://tailwindcss.com/docs/text-transform
1409
+ */
1410
+ 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],
1411
+ /**
1412
+ * Text Overflow
1413
+ * @see https://tailwindcss.com/docs/text-overflow
1414
+ */
1415
+ 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],
1416
+ /**
1417
+ * Text Wrap
1418
+ * @see https://tailwindcss.com/docs/text-wrap
1419
+ */
1420
+ 'text-wrap': [{
1421
+ text: ['wrap', 'nowrap', 'balance', 'pretty']
1422
+ }],
1423
+ /**
1424
+ * Text Indent
1425
+ * @see https://tailwindcss.com/docs/text-indent
1426
+ */
1427
+ indent: [{
1428
+ indent: scaleUnambiguousSpacing()
1429
+ }],
1430
+ /**
1431
+ * Vertical Alignment
1432
+ * @see https://tailwindcss.com/docs/vertical-align
1433
+ */
1434
+ 'vertical-align': [{
1435
+ align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]
1436
+ }],
1437
+ /**
1438
+ * Whitespace
1439
+ * @see https://tailwindcss.com/docs/whitespace
1440
+ */
1441
+ whitespace: [{
1442
+ whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']
1443
+ }],
1444
+ /**
1445
+ * Word Break
1446
+ * @see https://tailwindcss.com/docs/word-break
1447
+ */
1448
+ break: [{
1449
+ break: ['normal', 'words', 'all', 'keep']
1450
+ }],
1451
+ /**
1452
+ * Overflow Wrap
1453
+ * @see https://tailwindcss.com/docs/overflow-wrap
1454
+ */
1455
+ wrap: [{
1456
+ wrap: ['break-word', 'anywhere', 'normal']
1457
+ }],
1458
+ /**
1459
+ * Hyphens
1460
+ * @see https://tailwindcss.com/docs/hyphens
1461
+ */
1462
+ hyphens: [{
1463
+ hyphens: ['none', 'manual', 'auto']
1464
+ }],
1465
+ /**
1466
+ * Content
1467
+ * @see https://tailwindcss.com/docs/content
1468
+ */
1469
+ content: [{
1470
+ content: ['none', isArbitraryVariable, isArbitraryValue]
1471
+ }],
1472
+ // -------------------
1473
+ // --- Backgrounds ---
1474
+ // -------------------
1475
+ /**
1476
+ * Background Attachment
1477
+ * @see https://tailwindcss.com/docs/background-attachment
1478
+ */
1479
+ 'bg-attachment': [{
1480
+ bg: ['fixed', 'local', 'scroll']
1481
+ }],
1482
+ /**
1483
+ * Background Clip
1484
+ * @see https://tailwindcss.com/docs/background-clip
1485
+ */
1486
+ 'bg-clip': [{
1487
+ 'bg-clip': ['border', 'padding', 'content', 'text']
1488
+ }],
1489
+ /**
1490
+ * Background Origin
1491
+ * @see https://tailwindcss.com/docs/background-origin
1492
+ */
1493
+ 'bg-origin': [{
1494
+ 'bg-origin': ['border', 'padding', 'content']
1495
+ }],
1496
+ /**
1497
+ * Background Position
1498
+ * @see https://tailwindcss.com/docs/background-position
1499
+ */
1500
+ 'bg-position': [{
1501
+ bg: scaleBgPosition()
1502
+ }],
1503
+ /**
1504
+ * Background Repeat
1505
+ * @see https://tailwindcss.com/docs/background-repeat
1506
+ */
1507
+ 'bg-repeat': [{
1508
+ bg: scaleBgRepeat()
1509
+ }],
1510
+ /**
1511
+ * Background Size
1512
+ * @see https://tailwindcss.com/docs/background-size
1513
+ */
1514
+ 'bg-size': [{
1515
+ bg: scaleBgSize()
1516
+ }],
1517
+ /**
1518
+ * Background Image
1519
+ * @see https://tailwindcss.com/docs/background-image
1520
+ */
1521
+ 'bg-image': [{
1522
+ bg: ['none', {
1523
+ linear: [{
1524
+ to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']
1525
+ }, isInteger, isArbitraryVariable, isArbitraryValue],
1526
+ radial: ['', isArbitraryVariable, isArbitraryValue],
1527
+ conic: [isInteger, isArbitraryVariable, isArbitraryValue]
1528
+ }, isArbitraryVariableImage, isArbitraryImage]
1529
+ }],
1530
+ /**
1531
+ * Background Color
1532
+ * @see https://tailwindcss.com/docs/background-color
1533
+ */
1534
+ 'bg-color': [{
1535
+ bg: scaleColor()
1536
+ }],
1537
+ /**
1538
+ * Gradient Color Stops From Position
1539
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1540
+ */
1541
+ 'gradient-from-pos': [{
1542
+ from: scaleGradientStopPosition()
1543
+ }],
1544
+ /**
1545
+ * Gradient Color Stops Via Position
1546
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1547
+ */
1548
+ 'gradient-via-pos': [{
1549
+ via: scaleGradientStopPosition()
1550
+ }],
1551
+ /**
1552
+ * Gradient Color Stops To Position
1553
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1554
+ */
1555
+ 'gradient-to-pos': [{
1556
+ to: scaleGradientStopPosition()
1557
+ }],
1558
+ /**
1559
+ * Gradient Color Stops From
1560
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1561
+ */
1562
+ 'gradient-from': [{
1563
+ from: scaleColor()
1564
+ }],
1565
+ /**
1566
+ * Gradient Color Stops Via
1567
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1568
+ */
1569
+ 'gradient-via': [{
1570
+ via: scaleColor()
1571
+ }],
1572
+ /**
1573
+ * Gradient Color Stops To
1574
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1575
+ */
1576
+ 'gradient-to': [{
1577
+ to: scaleColor()
1578
+ }],
1579
+ // ---------------
1580
+ // --- Borders ---
1581
+ // ---------------
1582
+ /**
1583
+ * Border Radius
1584
+ * @see https://tailwindcss.com/docs/border-radius
1585
+ */
1586
+ rounded: [{
1587
+ rounded: scaleRadius()
1588
+ }],
1589
+ /**
1590
+ * Border Radius Start
1591
+ * @see https://tailwindcss.com/docs/border-radius
1592
+ */
1593
+ 'rounded-s': [{
1594
+ 'rounded-s': scaleRadius()
1595
+ }],
1596
+ /**
1597
+ * Border Radius End
1598
+ * @see https://tailwindcss.com/docs/border-radius
1599
+ */
1600
+ 'rounded-e': [{
1601
+ 'rounded-e': scaleRadius()
1602
+ }],
1603
+ /**
1604
+ * Border Radius Top
1605
+ * @see https://tailwindcss.com/docs/border-radius
1606
+ */
1607
+ 'rounded-t': [{
1608
+ 'rounded-t': scaleRadius()
1609
+ }],
1610
+ /**
1611
+ * Border Radius Right
1612
+ * @see https://tailwindcss.com/docs/border-radius
1613
+ */
1614
+ 'rounded-r': [{
1615
+ 'rounded-r': scaleRadius()
1616
+ }],
1617
+ /**
1618
+ * Border Radius Bottom
1619
+ * @see https://tailwindcss.com/docs/border-radius
1620
+ */
1621
+ 'rounded-b': [{
1622
+ 'rounded-b': scaleRadius()
1623
+ }],
1624
+ /**
1625
+ * Border Radius Left
1626
+ * @see https://tailwindcss.com/docs/border-radius
1627
+ */
1628
+ 'rounded-l': [{
1629
+ 'rounded-l': scaleRadius()
1630
+ }],
1631
+ /**
1632
+ * Border Radius Start Start
1633
+ * @see https://tailwindcss.com/docs/border-radius
1634
+ */
1635
+ 'rounded-ss': [{
1636
+ 'rounded-ss': scaleRadius()
1637
+ }],
1638
+ /**
1639
+ * Border Radius Start End
1640
+ * @see https://tailwindcss.com/docs/border-radius
1641
+ */
1642
+ 'rounded-se': [{
1643
+ 'rounded-se': scaleRadius()
1644
+ }],
1645
+ /**
1646
+ * Border Radius End End
1647
+ * @see https://tailwindcss.com/docs/border-radius
1648
+ */
1649
+ 'rounded-ee': [{
1650
+ 'rounded-ee': scaleRadius()
1651
+ }],
1652
+ /**
1653
+ * Border Radius End Start
1654
+ * @see https://tailwindcss.com/docs/border-radius
1655
+ */
1656
+ 'rounded-es': [{
1657
+ 'rounded-es': scaleRadius()
1658
+ }],
1659
+ /**
1660
+ * Border Radius Top Left
1661
+ * @see https://tailwindcss.com/docs/border-radius
1662
+ */
1663
+ 'rounded-tl': [{
1664
+ 'rounded-tl': scaleRadius()
1665
+ }],
1666
+ /**
1667
+ * Border Radius Top Right
1668
+ * @see https://tailwindcss.com/docs/border-radius
1669
+ */
1670
+ 'rounded-tr': [{
1671
+ 'rounded-tr': scaleRadius()
1672
+ }],
1673
+ /**
1674
+ * Border Radius Bottom Right
1675
+ * @see https://tailwindcss.com/docs/border-radius
1676
+ */
1677
+ 'rounded-br': [{
1678
+ 'rounded-br': scaleRadius()
1679
+ }],
1680
+ /**
1681
+ * Border Radius Bottom Left
1682
+ * @see https://tailwindcss.com/docs/border-radius
1683
+ */
1684
+ 'rounded-bl': [{
1685
+ 'rounded-bl': scaleRadius()
1686
+ }],
1687
+ /**
1688
+ * Border Width
1689
+ * @see https://tailwindcss.com/docs/border-width
1690
+ */
1691
+ 'border-w': [{
1692
+ border: scaleBorderWidth()
1693
+ }],
1694
+ /**
1695
+ * Border Width X
1696
+ * @see https://tailwindcss.com/docs/border-width
1697
+ */
1698
+ 'border-w-x': [{
1699
+ 'border-x': scaleBorderWidth()
1700
+ }],
1701
+ /**
1702
+ * Border Width Y
1703
+ * @see https://tailwindcss.com/docs/border-width
1704
+ */
1705
+ 'border-w-y': [{
1706
+ 'border-y': scaleBorderWidth()
1707
+ }],
1708
+ /**
1709
+ * Border Width Start
1710
+ * @see https://tailwindcss.com/docs/border-width
1711
+ */
1712
+ 'border-w-s': [{
1713
+ 'border-s': scaleBorderWidth()
1714
+ }],
1715
+ /**
1716
+ * Border Width End
1717
+ * @see https://tailwindcss.com/docs/border-width
1718
+ */
1719
+ 'border-w-e': [{
1720
+ 'border-e': scaleBorderWidth()
1721
+ }],
1722
+ /**
1723
+ * Border Width Top
1724
+ * @see https://tailwindcss.com/docs/border-width
1725
+ */
1726
+ 'border-w-t': [{
1727
+ 'border-t': scaleBorderWidth()
1728
+ }],
1729
+ /**
1730
+ * Border Width Right
1731
+ * @see https://tailwindcss.com/docs/border-width
1732
+ */
1733
+ 'border-w-r': [{
1734
+ 'border-r': scaleBorderWidth()
1735
+ }],
1736
+ /**
1737
+ * Border Width Bottom
1738
+ * @see https://tailwindcss.com/docs/border-width
1739
+ */
1740
+ 'border-w-b': [{
1741
+ 'border-b': scaleBorderWidth()
1742
+ }],
1743
+ /**
1744
+ * Border Width Left
1745
+ * @see https://tailwindcss.com/docs/border-width
1746
+ */
1747
+ 'border-w-l': [{
1748
+ 'border-l': scaleBorderWidth()
1749
+ }],
1750
+ /**
1751
+ * Divide Width X
1752
+ * @see https://tailwindcss.com/docs/border-width#between-children
1753
+ */
1754
+ 'divide-x': [{
1755
+ 'divide-x': scaleBorderWidth()
1756
+ }],
1757
+ /**
1758
+ * Divide Width X Reverse
1759
+ * @see https://tailwindcss.com/docs/border-width#between-children
1760
+ */
1761
+ 'divide-x-reverse': ['divide-x-reverse'],
1762
+ /**
1763
+ * Divide Width Y
1764
+ * @see https://tailwindcss.com/docs/border-width#between-children
1765
+ */
1766
+ 'divide-y': [{
1767
+ 'divide-y': scaleBorderWidth()
1768
+ }],
1769
+ /**
1770
+ * Divide Width Y Reverse
1771
+ * @see https://tailwindcss.com/docs/border-width#between-children
1772
+ */
1773
+ 'divide-y-reverse': ['divide-y-reverse'],
1774
+ /**
1775
+ * Border Style
1776
+ * @see https://tailwindcss.com/docs/border-style
1777
+ */
1778
+ 'border-style': [{
1779
+ border: [...scaleLineStyle(), 'hidden', 'none']
1780
+ }],
1781
+ /**
1782
+ * Divide Style
1783
+ * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
1784
+ */
1785
+ 'divide-style': [{
1786
+ divide: [...scaleLineStyle(), 'hidden', 'none']
1787
+ }],
1788
+ /**
1789
+ * Border Color
1790
+ * @see https://tailwindcss.com/docs/border-color
1791
+ */
1792
+ 'border-color': [{
1793
+ border: scaleColor()
1794
+ }],
1795
+ /**
1796
+ * Border Color X
1797
+ * @see https://tailwindcss.com/docs/border-color
1798
+ */
1799
+ 'border-color-x': [{
1800
+ 'border-x': scaleColor()
1801
+ }],
1802
+ /**
1803
+ * Border Color Y
1804
+ * @see https://tailwindcss.com/docs/border-color
1805
+ */
1806
+ 'border-color-y': [{
1807
+ 'border-y': scaleColor()
1808
+ }],
1809
+ /**
1810
+ * Border Color S
1811
+ * @see https://tailwindcss.com/docs/border-color
1812
+ */
1813
+ 'border-color-s': [{
1814
+ 'border-s': scaleColor()
1815
+ }],
1816
+ /**
1817
+ * Border Color E
1818
+ * @see https://tailwindcss.com/docs/border-color
1819
+ */
1820
+ 'border-color-e': [{
1821
+ 'border-e': scaleColor()
1822
+ }],
1823
+ /**
1824
+ * Border Color Top
1825
+ * @see https://tailwindcss.com/docs/border-color
1826
+ */
1827
+ 'border-color-t': [{
1828
+ 'border-t': scaleColor()
1829
+ }],
1830
+ /**
1831
+ * Border Color Right
1832
+ * @see https://tailwindcss.com/docs/border-color
1833
+ */
1834
+ 'border-color-r': [{
1835
+ 'border-r': scaleColor()
1836
+ }],
1837
+ /**
1838
+ * Border Color Bottom
1839
+ * @see https://tailwindcss.com/docs/border-color
1840
+ */
1841
+ 'border-color-b': [{
1842
+ 'border-b': scaleColor()
1843
+ }],
1844
+ /**
1845
+ * Border Color Left
1846
+ * @see https://tailwindcss.com/docs/border-color
1847
+ */
1848
+ 'border-color-l': [{
1849
+ 'border-l': scaleColor()
1850
+ }],
1851
+ /**
1852
+ * Divide Color
1853
+ * @see https://tailwindcss.com/docs/divide-color
1854
+ */
1855
+ 'divide-color': [{
1856
+ divide: scaleColor()
1857
+ }],
1858
+ /**
1859
+ * Outline Style
1860
+ * @see https://tailwindcss.com/docs/outline-style
1861
+ */
1862
+ 'outline-style': [{
1863
+ outline: [...scaleLineStyle(), 'none', 'hidden']
1864
+ }],
1865
+ /**
1866
+ * Outline Offset
1867
+ * @see https://tailwindcss.com/docs/outline-offset
1868
+ */
1869
+ 'outline-offset': [{
1870
+ 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]
1871
+ }],
1872
+ /**
1873
+ * Outline Width
1874
+ * @see https://tailwindcss.com/docs/outline-width
1875
+ */
1876
+ 'outline-w': [{
1877
+ outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]
1878
+ }],
1879
+ /**
1880
+ * Outline Color
1881
+ * @see https://tailwindcss.com/docs/outline-color
1882
+ */
1883
+ 'outline-color': [{
1884
+ outline: scaleColor()
1885
+ }],
1886
+ // ---------------
1887
+ // --- Effects ---
1888
+ // ---------------
1889
+ /**
1890
+ * Box Shadow
1891
+ * @see https://tailwindcss.com/docs/box-shadow
1892
+ */
1893
+ shadow: [{
1894
+ shadow: [
1895
+ // Deprecated since Tailwind CSS v4.0.0
1896
+ '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]
1897
+ }],
1898
+ /**
1899
+ * Box Shadow Color
1900
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
1901
+ */
1902
+ 'shadow-color': [{
1903
+ shadow: scaleColor()
1904
+ }],
1905
+ /**
1906
+ * Inset Box Shadow
1907
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
1908
+ */
1909
+ 'inset-shadow': [{
1910
+ 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]
1911
+ }],
1912
+ /**
1913
+ * Inset Box Shadow Color
1914
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
1915
+ */
1916
+ 'inset-shadow-color': [{
1917
+ 'inset-shadow': scaleColor()
1918
+ }],
1919
+ /**
1920
+ * Ring Width
1921
+ * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
1922
+ */
1923
+ 'ring-w': [{
1924
+ ring: scaleBorderWidth()
1925
+ }],
1926
+ /**
1927
+ * Ring Width Inset
1928
+ * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
1929
+ * @deprecated since Tailwind CSS v4.0.0
1930
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
1931
+ */
1932
+ 'ring-w-inset': ['ring-inset'],
1933
+ /**
1934
+ * Ring Color
1935
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
1936
+ */
1937
+ 'ring-color': [{
1938
+ ring: scaleColor()
1939
+ }],
1940
+ /**
1941
+ * Ring Offset Width
1942
+ * @see https://v3.tailwindcss.com/docs/ring-offset-width
1943
+ * @deprecated since Tailwind CSS v4.0.0
1944
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
1945
+ */
1946
+ 'ring-offset-w': [{
1947
+ 'ring-offset': [isNumber, isArbitraryLength]
1948
+ }],
1949
+ /**
1950
+ * Ring Offset Color
1951
+ * @see https://v3.tailwindcss.com/docs/ring-offset-color
1952
+ * @deprecated since Tailwind CSS v4.0.0
1953
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
1954
+ */
1955
+ 'ring-offset-color': [{
1956
+ 'ring-offset': scaleColor()
1957
+ }],
1958
+ /**
1959
+ * Inset Ring Width
1960
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
1961
+ */
1962
+ 'inset-ring-w': [{
1963
+ 'inset-ring': scaleBorderWidth()
1964
+ }],
1965
+ /**
1966
+ * Inset Ring Color
1967
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
1968
+ */
1969
+ 'inset-ring-color': [{
1970
+ 'inset-ring': scaleColor()
1971
+ }],
1972
+ /**
1973
+ * Text Shadow
1974
+ * @see https://tailwindcss.com/docs/text-shadow
1975
+ */
1976
+ 'text-shadow': [{
1977
+ 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]
1978
+ }],
1979
+ /**
1980
+ * Text Shadow Color
1981
+ * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
1982
+ */
1983
+ 'text-shadow-color': [{
1984
+ 'text-shadow': scaleColor()
1985
+ }],
1986
+ /**
1987
+ * Opacity
1988
+ * @see https://tailwindcss.com/docs/opacity
1989
+ */
1990
+ opacity: [{
1991
+ opacity: [isNumber, isArbitraryVariable, isArbitraryValue]
1992
+ }],
1993
+ /**
1994
+ * Mix Blend Mode
1995
+ * @see https://tailwindcss.com/docs/mix-blend-mode
1996
+ */
1997
+ 'mix-blend': [{
1998
+ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']
1999
+ }],
2000
+ /**
2001
+ * Background Blend Mode
2002
+ * @see https://tailwindcss.com/docs/background-blend-mode
2003
+ */
2004
+ 'bg-blend': [{
2005
+ 'bg-blend': scaleBlendMode()
2006
+ }],
2007
+ /**
2008
+ * Mask Clip
2009
+ * @see https://tailwindcss.com/docs/mask-clip
2010
+ */
2011
+ 'mask-clip': [{
2012
+ 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']
2013
+ }, 'mask-no-clip'],
2014
+ /**
2015
+ * Mask Composite
2016
+ * @see https://tailwindcss.com/docs/mask-composite
2017
+ */
2018
+ 'mask-composite': [{
2019
+ mask: ['add', 'subtract', 'intersect', 'exclude']
2020
+ }],
2021
+ /**
2022
+ * Mask Image
2023
+ * @see https://tailwindcss.com/docs/mask-image
2024
+ */
2025
+ 'mask-image-linear-pos': [{
2026
+ 'mask-linear': [isNumber]
2027
+ }],
2028
+ 'mask-image-linear-from-pos': [{
2029
+ 'mask-linear-from': scaleMaskImagePosition()
2030
+ }],
2031
+ 'mask-image-linear-to-pos': [{
2032
+ 'mask-linear-to': scaleMaskImagePosition()
2033
+ }],
2034
+ 'mask-image-linear-from-color': [{
2035
+ 'mask-linear-from': scaleColor()
2036
+ }],
2037
+ 'mask-image-linear-to-color': [{
2038
+ 'mask-linear-to': scaleColor()
2039
+ }],
2040
+ 'mask-image-t-from-pos': [{
2041
+ 'mask-t-from': scaleMaskImagePosition()
2042
+ }],
2043
+ 'mask-image-t-to-pos': [{
2044
+ 'mask-t-to': scaleMaskImagePosition()
2045
+ }],
2046
+ 'mask-image-t-from-color': [{
2047
+ 'mask-t-from': scaleColor()
2048
+ }],
2049
+ 'mask-image-t-to-color': [{
2050
+ 'mask-t-to': scaleColor()
2051
+ }],
2052
+ 'mask-image-r-from-pos': [{
2053
+ 'mask-r-from': scaleMaskImagePosition()
2054
+ }],
2055
+ 'mask-image-r-to-pos': [{
2056
+ 'mask-r-to': scaleMaskImagePosition()
2057
+ }],
2058
+ 'mask-image-r-from-color': [{
2059
+ 'mask-r-from': scaleColor()
2060
+ }],
2061
+ 'mask-image-r-to-color': [{
2062
+ 'mask-r-to': scaleColor()
2063
+ }],
2064
+ 'mask-image-b-from-pos': [{
2065
+ 'mask-b-from': scaleMaskImagePosition()
2066
+ }],
2067
+ 'mask-image-b-to-pos': [{
2068
+ 'mask-b-to': scaleMaskImagePosition()
2069
+ }],
2070
+ 'mask-image-b-from-color': [{
2071
+ 'mask-b-from': scaleColor()
2072
+ }],
2073
+ 'mask-image-b-to-color': [{
2074
+ 'mask-b-to': scaleColor()
2075
+ }],
2076
+ 'mask-image-l-from-pos': [{
2077
+ 'mask-l-from': scaleMaskImagePosition()
2078
+ }],
2079
+ 'mask-image-l-to-pos': [{
2080
+ 'mask-l-to': scaleMaskImagePosition()
2081
+ }],
2082
+ 'mask-image-l-from-color': [{
2083
+ 'mask-l-from': scaleColor()
2084
+ }],
2085
+ 'mask-image-l-to-color': [{
2086
+ 'mask-l-to': scaleColor()
2087
+ }],
2088
+ 'mask-image-x-from-pos': [{
2089
+ 'mask-x-from': scaleMaskImagePosition()
2090
+ }],
2091
+ 'mask-image-x-to-pos': [{
2092
+ 'mask-x-to': scaleMaskImagePosition()
2093
+ }],
2094
+ 'mask-image-x-from-color': [{
2095
+ 'mask-x-from': scaleColor()
2096
+ }],
2097
+ 'mask-image-x-to-color': [{
2098
+ 'mask-x-to': scaleColor()
2099
+ }],
2100
+ 'mask-image-y-from-pos': [{
2101
+ 'mask-y-from': scaleMaskImagePosition()
2102
+ }],
2103
+ 'mask-image-y-to-pos': [{
2104
+ 'mask-y-to': scaleMaskImagePosition()
2105
+ }],
2106
+ 'mask-image-y-from-color': [{
2107
+ 'mask-y-from': scaleColor()
2108
+ }],
2109
+ 'mask-image-y-to-color': [{
2110
+ 'mask-y-to': scaleColor()
2111
+ }],
2112
+ 'mask-image-radial': [{
2113
+ 'mask-radial': [isArbitraryVariable, isArbitraryValue]
2114
+ }],
2115
+ 'mask-image-radial-from-pos': [{
2116
+ 'mask-radial-from': scaleMaskImagePosition()
2117
+ }],
2118
+ 'mask-image-radial-to-pos': [{
2119
+ 'mask-radial-to': scaleMaskImagePosition()
2120
+ }],
2121
+ 'mask-image-radial-from-color': [{
2122
+ 'mask-radial-from': scaleColor()
2123
+ }],
2124
+ 'mask-image-radial-to-color': [{
2125
+ 'mask-radial-to': scaleColor()
2126
+ }],
2127
+ 'mask-image-radial-shape': [{
2128
+ 'mask-radial': ['circle', 'ellipse']
2129
+ }],
2130
+ 'mask-image-radial-size': [{
2131
+ 'mask-radial': [{
2132
+ closest: ['side', 'corner'],
2133
+ farthest: ['side', 'corner']
2134
+ }]
2135
+ }],
2136
+ 'mask-image-radial-pos': [{
2137
+ 'mask-radial-at': scalePosition()
2138
+ }],
2139
+ 'mask-image-conic-pos': [{
2140
+ 'mask-conic': [isNumber]
2141
+ }],
2142
+ 'mask-image-conic-from-pos': [{
2143
+ 'mask-conic-from': scaleMaskImagePosition()
2144
+ }],
2145
+ 'mask-image-conic-to-pos': [{
2146
+ 'mask-conic-to': scaleMaskImagePosition()
2147
+ }],
2148
+ 'mask-image-conic-from-color': [{
2149
+ 'mask-conic-from': scaleColor()
2150
+ }],
2151
+ 'mask-image-conic-to-color': [{
2152
+ 'mask-conic-to': scaleColor()
2153
+ }],
2154
+ /**
2155
+ * Mask Mode
2156
+ * @see https://tailwindcss.com/docs/mask-mode
2157
+ */
2158
+ 'mask-mode': [{
2159
+ mask: ['alpha', 'luminance', 'match']
2160
+ }],
2161
+ /**
2162
+ * Mask Origin
2163
+ * @see https://tailwindcss.com/docs/mask-origin
2164
+ */
2165
+ 'mask-origin': [{
2166
+ 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']
2167
+ }],
2168
+ /**
2169
+ * Mask Position
2170
+ * @see https://tailwindcss.com/docs/mask-position
2171
+ */
2172
+ 'mask-position': [{
2173
+ mask: scaleBgPosition()
2174
+ }],
2175
+ /**
2176
+ * Mask Repeat
2177
+ * @see https://tailwindcss.com/docs/mask-repeat
2178
+ */
2179
+ 'mask-repeat': [{
2180
+ mask: scaleBgRepeat()
2181
+ }],
2182
+ /**
2183
+ * Mask Size
2184
+ * @see https://tailwindcss.com/docs/mask-size
2185
+ */
2186
+ 'mask-size': [{
2187
+ mask: scaleBgSize()
2188
+ }],
2189
+ /**
2190
+ * Mask Type
2191
+ * @see https://tailwindcss.com/docs/mask-type
2192
+ */
2193
+ 'mask-type': [{
2194
+ 'mask-type': ['alpha', 'luminance']
2195
+ }],
2196
+ /**
2197
+ * Mask Image
2198
+ * @see https://tailwindcss.com/docs/mask-image
2199
+ */
2200
+ 'mask-image': [{
2201
+ mask: ['none', isArbitraryVariable, isArbitraryValue]
2202
+ }],
2203
+ // ---------------
2204
+ // --- Filters ---
2205
+ // ---------------
2206
+ /**
2207
+ * Filter
2208
+ * @see https://tailwindcss.com/docs/filter
2209
+ */
2210
+ filter: [{
2211
+ filter: [
2212
+ // Deprecated since Tailwind CSS v3.0.0
2213
+ '', 'none', isArbitraryVariable, isArbitraryValue]
2214
+ }],
2215
+ /**
2216
+ * Blur
2217
+ * @see https://tailwindcss.com/docs/blur
2218
+ */
2219
+ blur: [{
2220
+ blur: scaleBlur()
2221
+ }],
2222
+ /**
2223
+ * Brightness
2224
+ * @see https://tailwindcss.com/docs/brightness
2225
+ */
2226
+ brightness: [{
2227
+ brightness: [isNumber, isArbitraryVariable, isArbitraryValue]
2228
+ }],
2229
+ /**
2230
+ * Contrast
2231
+ * @see https://tailwindcss.com/docs/contrast
2232
+ */
2233
+ contrast: [{
2234
+ contrast: [isNumber, isArbitraryVariable, isArbitraryValue]
2235
+ }],
2236
+ /**
2237
+ * Drop Shadow
2238
+ * @see https://tailwindcss.com/docs/drop-shadow
2239
+ */
2240
+ 'drop-shadow': [{
2241
+ 'drop-shadow': [
2242
+ // Deprecated since Tailwind CSS v4.0.0
2243
+ '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]
2244
+ }],
2245
+ /**
2246
+ * Drop Shadow Color
2247
+ * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
2248
+ */
2249
+ 'drop-shadow-color': [{
2250
+ 'drop-shadow': scaleColor()
2251
+ }],
2252
+ /**
2253
+ * Grayscale
2254
+ * @see https://tailwindcss.com/docs/grayscale
2255
+ */
2256
+ grayscale: [{
2257
+ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]
2258
+ }],
2259
+ /**
2260
+ * Hue Rotate
2261
+ * @see https://tailwindcss.com/docs/hue-rotate
2262
+ */
2263
+ 'hue-rotate': [{
2264
+ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]
2265
+ }],
2266
+ /**
2267
+ * Invert
2268
+ * @see https://tailwindcss.com/docs/invert
2269
+ */
2270
+ invert: [{
2271
+ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]
2272
+ }],
2273
+ /**
2274
+ * Saturate
2275
+ * @see https://tailwindcss.com/docs/saturate
2276
+ */
2277
+ saturate: [{
2278
+ saturate: [isNumber, isArbitraryVariable, isArbitraryValue]
2279
+ }],
2280
+ /**
2281
+ * Sepia
2282
+ * @see https://tailwindcss.com/docs/sepia
2283
+ */
2284
+ sepia: [{
2285
+ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]
2286
+ }],
2287
+ /**
2288
+ * Backdrop Filter
2289
+ * @see https://tailwindcss.com/docs/backdrop-filter
2290
+ */
2291
+ 'backdrop-filter': [{
2292
+ 'backdrop-filter': [
2293
+ // Deprecated since Tailwind CSS v3.0.0
2294
+ '', 'none', isArbitraryVariable, isArbitraryValue]
2295
+ }],
2296
+ /**
2297
+ * Backdrop Blur
2298
+ * @see https://tailwindcss.com/docs/backdrop-blur
2299
+ */
2300
+ 'backdrop-blur': [{
2301
+ 'backdrop-blur': scaleBlur()
2302
+ }],
2303
+ /**
2304
+ * Backdrop Brightness
2305
+ * @see https://tailwindcss.com/docs/backdrop-brightness
2306
+ */
2307
+ 'backdrop-brightness': [{
2308
+ 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]
2309
+ }],
2310
+ /**
2311
+ * Backdrop Contrast
2312
+ * @see https://tailwindcss.com/docs/backdrop-contrast
2313
+ */
2314
+ 'backdrop-contrast': [{
2315
+ 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]
2316
+ }],
2317
+ /**
2318
+ * Backdrop Grayscale
2319
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
2320
+ */
2321
+ 'backdrop-grayscale': [{
2322
+ 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]
2323
+ }],
2324
+ /**
2325
+ * Backdrop Hue Rotate
2326
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
2327
+ */
2328
+ 'backdrop-hue-rotate': [{
2329
+ 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]
2330
+ }],
2331
+ /**
2332
+ * Backdrop Invert
2333
+ * @see https://tailwindcss.com/docs/backdrop-invert
2334
+ */
2335
+ 'backdrop-invert': [{
2336
+ 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]
2337
+ }],
2338
+ /**
2339
+ * Backdrop Opacity
2340
+ * @see https://tailwindcss.com/docs/backdrop-opacity
2341
+ */
2342
+ 'backdrop-opacity': [{
2343
+ 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]
2344
+ }],
2345
+ /**
2346
+ * Backdrop Saturate
2347
+ * @see https://tailwindcss.com/docs/backdrop-saturate
2348
+ */
2349
+ 'backdrop-saturate': [{
2350
+ 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]
2351
+ }],
2352
+ /**
2353
+ * Backdrop Sepia
2354
+ * @see https://tailwindcss.com/docs/backdrop-sepia
2355
+ */
2356
+ 'backdrop-sepia': [{
2357
+ 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]
2358
+ }],
2359
+ // --------------
2360
+ // --- Tables ---
2361
+ // --------------
2362
+ /**
2363
+ * Border Collapse
2364
+ * @see https://tailwindcss.com/docs/border-collapse
2365
+ */
2366
+ 'border-collapse': [{
2367
+ border: ['collapse', 'separate']
2368
+ }],
2369
+ /**
2370
+ * Border Spacing
2371
+ * @see https://tailwindcss.com/docs/border-spacing
2372
+ */
2373
+ 'border-spacing': [{
2374
+ 'border-spacing': scaleUnambiguousSpacing()
2375
+ }],
2376
+ /**
2377
+ * Border Spacing X
2378
+ * @see https://tailwindcss.com/docs/border-spacing
2379
+ */
2380
+ 'border-spacing-x': [{
2381
+ 'border-spacing-x': scaleUnambiguousSpacing()
2382
+ }],
2383
+ /**
2384
+ * Border Spacing Y
2385
+ * @see https://tailwindcss.com/docs/border-spacing
2386
+ */
2387
+ 'border-spacing-y': [{
2388
+ 'border-spacing-y': scaleUnambiguousSpacing()
2389
+ }],
2390
+ /**
2391
+ * Table Layout
2392
+ * @see https://tailwindcss.com/docs/table-layout
2393
+ */
2394
+ 'table-layout': [{
2395
+ table: ['auto', 'fixed']
2396
+ }],
2397
+ /**
2398
+ * Caption Side
2399
+ * @see https://tailwindcss.com/docs/caption-side
2400
+ */
2401
+ caption: [{
2402
+ caption: ['top', 'bottom']
2403
+ }],
2404
+ // ---------------------------------
2405
+ // --- Transitions and Animation ---
2406
+ // ---------------------------------
2407
+ /**
2408
+ * Transition Property
2409
+ * @see https://tailwindcss.com/docs/transition-property
2410
+ */
2411
+ transition: [{
2412
+ transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]
2413
+ }],
2414
+ /**
2415
+ * Transition Behavior
2416
+ * @see https://tailwindcss.com/docs/transition-behavior
2417
+ */
2418
+ 'transition-behavior': [{
2419
+ transition: ['normal', 'discrete']
2420
+ }],
2421
+ /**
2422
+ * Transition Duration
2423
+ * @see https://tailwindcss.com/docs/transition-duration
2424
+ */
2425
+ duration: [{
2426
+ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]
2427
+ }],
2428
+ /**
2429
+ * Transition Timing Function
2430
+ * @see https://tailwindcss.com/docs/transition-timing-function
2431
+ */
2432
+ ease: [{
2433
+ ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]
2434
+ }],
2435
+ /**
2436
+ * Transition Delay
2437
+ * @see https://tailwindcss.com/docs/transition-delay
2438
+ */
2439
+ delay: [{
2440
+ delay: [isNumber, isArbitraryVariable, isArbitraryValue]
2441
+ }],
2442
+ /**
2443
+ * Animation
2444
+ * @see https://tailwindcss.com/docs/animation
2445
+ */
2446
+ animate: [{
2447
+ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]
2448
+ }],
2449
+ // ------------------
2450
+ // --- Transforms ---
2451
+ // ------------------
2452
+ /**
2453
+ * Backface Visibility
2454
+ * @see https://tailwindcss.com/docs/backface-visibility
2455
+ */
2456
+ backface: [{
2457
+ backface: ['hidden', 'visible']
2458
+ }],
2459
+ /**
2460
+ * Perspective
2461
+ * @see https://tailwindcss.com/docs/perspective
2462
+ */
2463
+ perspective: [{
2464
+ perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]
2465
+ }],
2466
+ /**
2467
+ * Perspective Origin
2468
+ * @see https://tailwindcss.com/docs/perspective-origin
2469
+ */
2470
+ 'perspective-origin': [{
2471
+ 'perspective-origin': scalePositionWithArbitrary()
2472
+ }],
2473
+ /**
2474
+ * Rotate
2475
+ * @see https://tailwindcss.com/docs/rotate
2476
+ */
2477
+ rotate: [{
2478
+ rotate: scaleRotate()
2479
+ }],
2480
+ /**
2481
+ * Rotate X
2482
+ * @see https://tailwindcss.com/docs/rotate
2483
+ */
2484
+ 'rotate-x': [{
2485
+ 'rotate-x': scaleRotate()
2486
+ }],
2487
+ /**
2488
+ * Rotate Y
2489
+ * @see https://tailwindcss.com/docs/rotate
2490
+ */
2491
+ 'rotate-y': [{
2492
+ 'rotate-y': scaleRotate()
2493
+ }],
2494
+ /**
2495
+ * Rotate Z
2496
+ * @see https://tailwindcss.com/docs/rotate
2497
+ */
2498
+ 'rotate-z': [{
2499
+ 'rotate-z': scaleRotate()
2500
+ }],
2501
+ /**
2502
+ * Scale
2503
+ * @see https://tailwindcss.com/docs/scale
2504
+ */
2505
+ scale: [{
2506
+ scale: scaleScale()
2507
+ }],
2508
+ /**
2509
+ * Scale X
2510
+ * @see https://tailwindcss.com/docs/scale
2511
+ */
2512
+ 'scale-x': [{
2513
+ 'scale-x': scaleScale()
2514
+ }],
2515
+ /**
2516
+ * Scale Y
2517
+ * @see https://tailwindcss.com/docs/scale
2518
+ */
2519
+ 'scale-y': [{
2520
+ 'scale-y': scaleScale()
2521
+ }],
2522
+ /**
2523
+ * Scale Z
2524
+ * @see https://tailwindcss.com/docs/scale
2525
+ */
2526
+ 'scale-z': [{
2527
+ 'scale-z': scaleScale()
2528
+ }],
2529
+ /**
2530
+ * Scale 3D
2531
+ * @see https://tailwindcss.com/docs/scale
2532
+ */
2533
+ 'scale-3d': ['scale-3d'],
2534
+ /**
2535
+ * Skew
2536
+ * @see https://tailwindcss.com/docs/skew
2537
+ */
2538
+ skew: [{
2539
+ skew: scaleSkew()
2540
+ }],
2541
+ /**
2542
+ * Skew X
2543
+ * @see https://tailwindcss.com/docs/skew
2544
+ */
2545
+ 'skew-x': [{
2546
+ 'skew-x': scaleSkew()
2547
+ }],
2548
+ /**
2549
+ * Skew Y
2550
+ * @see https://tailwindcss.com/docs/skew
2551
+ */
2552
+ 'skew-y': [{
2553
+ 'skew-y': scaleSkew()
2554
+ }],
2555
+ /**
2556
+ * Transform
2557
+ * @see https://tailwindcss.com/docs/transform
2558
+ */
2559
+ transform: [{
2560
+ transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']
2561
+ }],
2562
+ /**
2563
+ * Transform Origin
2564
+ * @see https://tailwindcss.com/docs/transform-origin
2565
+ */
2566
+ 'transform-origin': [{
2567
+ origin: scalePositionWithArbitrary()
2568
+ }],
2569
+ /**
2570
+ * Transform Style
2571
+ * @see https://tailwindcss.com/docs/transform-style
2572
+ */
2573
+ 'transform-style': [{
2574
+ transform: ['3d', 'flat']
2575
+ }],
2576
+ /**
2577
+ * Translate
2578
+ * @see https://tailwindcss.com/docs/translate
2579
+ */
2580
+ translate: [{
2581
+ translate: scaleTranslate()
2582
+ }],
2583
+ /**
2584
+ * Translate X
2585
+ * @see https://tailwindcss.com/docs/translate
2586
+ */
2587
+ 'translate-x': [{
2588
+ 'translate-x': scaleTranslate()
2589
+ }],
2590
+ /**
2591
+ * Translate Y
2592
+ * @see https://tailwindcss.com/docs/translate
2593
+ */
2594
+ 'translate-y': [{
2595
+ 'translate-y': scaleTranslate()
2596
+ }],
2597
+ /**
2598
+ * Translate Z
2599
+ * @see https://tailwindcss.com/docs/translate
2600
+ */
2601
+ 'translate-z': [{
2602
+ 'translate-z': scaleTranslate()
2603
+ }],
2604
+ /**
2605
+ * Translate None
2606
+ * @see https://tailwindcss.com/docs/translate
2607
+ */
2608
+ 'translate-none': ['translate-none'],
2609
+ // ---------------------
2610
+ // --- Interactivity ---
2611
+ // ---------------------
2612
+ /**
2613
+ * Accent Color
2614
+ * @see https://tailwindcss.com/docs/accent-color
2615
+ */
2616
+ accent: [{
2617
+ accent: scaleColor()
2618
+ }],
2619
+ /**
2620
+ * Appearance
2621
+ * @see https://tailwindcss.com/docs/appearance
2622
+ */
2623
+ appearance: [{
2624
+ appearance: ['none', 'auto']
2625
+ }],
2626
+ /**
2627
+ * Caret Color
2628
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
2629
+ */
2630
+ 'caret-color': [{
2631
+ caret: scaleColor()
2632
+ }],
2633
+ /**
2634
+ * Color Scheme
2635
+ * @see https://tailwindcss.com/docs/color-scheme
2636
+ */
2637
+ 'color-scheme': [{
2638
+ scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']
2639
+ }],
2640
+ /**
2641
+ * Cursor
2642
+ * @see https://tailwindcss.com/docs/cursor
2643
+ */
2644
+ cursor: [{
2645
+ cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]
2646
+ }],
2647
+ /**
2648
+ * Field Sizing
2649
+ * @see https://tailwindcss.com/docs/field-sizing
2650
+ */
2651
+ 'field-sizing': [{
2652
+ 'field-sizing': ['fixed', 'content']
2653
+ }],
2654
+ /**
2655
+ * Pointer Events
2656
+ * @see https://tailwindcss.com/docs/pointer-events
2657
+ */
2658
+ 'pointer-events': [{
2659
+ 'pointer-events': ['auto', 'none']
2660
+ }],
2661
+ /**
2662
+ * Resize
2663
+ * @see https://tailwindcss.com/docs/resize
2664
+ */
2665
+ resize: [{
2666
+ resize: ['none', '', 'y', 'x']
2667
+ }],
2668
+ /**
2669
+ * Scroll Behavior
2670
+ * @see https://tailwindcss.com/docs/scroll-behavior
2671
+ */
2672
+ 'scroll-behavior': [{
2673
+ scroll: ['auto', 'smooth']
2674
+ }],
2675
+ /**
2676
+ * Scroll Margin
2677
+ * @see https://tailwindcss.com/docs/scroll-margin
2678
+ */
2679
+ 'scroll-m': [{
2680
+ 'scroll-m': scaleUnambiguousSpacing()
2681
+ }],
2682
+ /**
2683
+ * Scroll Margin X
2684
+ * @see https://tailwindcss.com/docs/scroll-margin
2685
+ */
2686
+ 'scroll-mx': [{
2687
+ 'scroll-mx': scaleUnambiguousSpacing()
2688
+ }],
2689
+ /**
2690
+ * Scroll Margin Y
2691
+ * @see https://tailwindcss.com/docs/scroll-margin
2692
+ */
2693
+ 'scroll-my': [{
2694
+ 'scroll-my': scaleUnambiguousSpacing()
2695
+ }],
2696
+ /**
2697
+ * Scroll Margin Start
2698
+ * @see https://tailwindcss.com/docs/scroll-margin
2699
+ */
2700
+ 'scroll-ms': [{
2701
+ 'scroll-ms': scaleUnambiguousSpacing()
2702
+ }],
2703
+ /**
2704
+ * Scroll Margin End
2705
+ * @see https://tailwindcss.com/docs/scroll-margin
2706
+ */
2707
+ 'scroll-me': [{
2708
+ 'scroll-me': scaleUnambiguousSpacing()
2709
+ }],
2710
+ /**
2711
+ * Scroll Margin Top
2712
+ * @see https://tailwindcss.com/docs/scroll-margin
2713
+ */
2714
+ 'scroll-mt': [{
2715
+ 'scroll-mt': scaleUnambiguousSpacing()
2716
+ }],
2717
+ /**
2718
+ * Scroll Margin Right
2719
+ * @see https://tailwindcss.com/docs/scroll-margin
2720
+ */
2721
+ 'scroll-mr': [{
2722
+ 'scroll-mr': scaleUnambiguousSpacing()
2723
+ }],
2724
+ /**
2725
+ * Scroll Margin Bottom
2726
+ * @see https://tailwindcss.com/docs/scroll-margin
2727
+ */
2728
+ 'scroll-mb': [{
2729
+ 'scroll-mb': scaleUnambiguousSpacing()
2730
+ }],
2731
+ /**
2732
+ * Scroll Margin Left
2733
+ * @see https://tailwindcss.com/docs/scroll-margin
2734
+ */
2735
+ 'scroll-ml': [{
2736
+ 'scroll-ml': scaleUnambiguousSpacing()
2737
+ }],
2738
+ /**
2739
+ * Scroll Padding
2740
+ * @see https://tailwindcss.com/docs/scroll-padding
2741
+ */
2742
+ 'scroll-p': [{
2743
+ 'scroll-p': scaleUnambiguousSpacing()
2744
+ }],
2745
+ /**
2746
+ * Scroll Padding X
2747
+ * @see https://tailwindcss.com/docs/scroll-padding
2748
+ */
2749
+ 'scroll-px': [{
2750
+ 'scroll-px': scaleUnambiguousSpacing()
2751
+ }],
2752
+ /**
2753
+ * Scroll Padding Y
2754
+ * @see https://tailwindcss.com/docs/scroll-padding
2755
+ */
2756
+ 'scroll-py': [{
2757
+ 'scroll-py': scaleUnambiguousSpacing()
2758
+ }],
2759
+ /**
2760
+ * Scroll Padding Start
2761
+ * @see https://tailwindcss.com/docs/scroll-padding
2762
+ */
2763
+ 'scroll-ps': [{
2764
+ 'scroll-ps': scaleUnambiguousSpacing()
2765
+ }],
2766
+ /**
2767
+ * Scroll Padding End
2768
+ * @see https://tailwindcss.com/docs/scroll-padding
2769
+ */
2770
+ 'scroll-pe': [{
2771
+ 'scroll-pe': scaleUnambiguousSpacing()
2772
+ }],
2773
+ /**
2774
+ * Scroll Padding Top
2775
+ * @see https://tailwindcss.com/docs/scroll-padding
2776
+ */
2777
+ 'scroll-pt': [{
2778
+ 'scroll-pt': scaleUnambiguousSpacing()
2779
+ }],
2780
+ /**
2781
+ * Scroll Padding Right
2782
+ * @see https://tailwindcss.com/docs/scroll-padding
2783
+ */
2784
+ 'scroll-pr': [{
2785
+ 'scroll-pr': scaleUnambiguousSpacing()
2786
+ }],
2787
+ /**
2788
+ * Scroll Padding Bottom
2789
+ * @see https://tailwindcss.com/docs/scroll-padding
2790
+ */
2791
+ 'scroll-pb': [{
2792
+ 'scroll-pb': scaleUnambiguousSpacing()
2793
+ }],
2794
+ /**
2795
+ * Scroll Padding Left
2796
+ * @see https://tailwindcss.com/docs/scroll-padding
2797
+ */
2798
+ 'scroll-pl': [{
2799
+ 'scroll-pl': scaleUnambiguousSpacing()
2800
+ }],
2801
+ /**
2802
+ * Scroll Snap Align
2803
+ * @see https://tailwindcss.com/docs/scroll-snap-align
2804
+ */
2805
+ 'snap-align': [{
2806
+ snap: ['start', 'end', 'center', 'align-none']
2807
+ }],
2808
+ /**
2809
+ * Scroll Snap Stop
2810
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
2811
+ */
2812
+ 'snap-stop': [{
2813
+ snap: ['normal', 'always']
2814
+ }],
2815
+ /**
2816
+ * Scroll Snap Type
2817
+ * @see https://tailwindcss.com/docs/scroll-snap-type
2818
+ */
2819
+ 'snap-type': [{
2820
+ snap: ['none', 'x', 'y', 'both']
2821
+ }],
2822
+ /**
2823
+ * Scroll Snap Type Strictness
2824
+ * @see https://tailwindcss.com/docs/scroll-snap-type
2825
+ */
2826
+ 'snap-strictness': [{
2827
+ snap: ['mandatory', 'proximity']
2828
+ }],
2829
+ /**
2830
+ * Touch Action
2831
+ * @see https://tailwindcss.com/docs/touch-action
2832
+ */
2833
+ touch: [{
2834
+ touch: ['auto', 'none', 'manipulation']
2835
+ }],
2836
+ /**
2837
+ * Touch Action X
2838
+ * @see https://tailwindcss.com/docs/touch-action
2839
+ */
2840
+ 'touch-x': [{
2841
+ 'touch-pan': ['x', 'left', 'right']
2842
+ }],
2843
+ /**
2844
+ * Touch Action Y
2845
+ * @see https://tailwindcss.com/docs/touch-action
2846
+ */
2847
+ 'touch-y': [{
2848
+ 'touch-pan': ['y', 'up', 'down']
2849
+ }],
2850
+ /**
2851
+ * Touch Action Pinch Zoom
2852
+ * @see https://tailwindcss.com/docs/touch-action
2853
+ */
2854
+ 'touch-pz': ['touch-pinch-zoom'],
2855
+ /**
2856
+ * User Select
2857
+ * @see https://tailwindcss.com/docs/user-select
2858
+ */
2859
+ select: [{
2860
+ select: ['none', 'text', 'all', 'auto']
2861
+ }],
2862
+ /**
2863
+ * Will Change
2864
+ * @see https://tailwindcss.com/docs/will-change
2865
+ */
2866
+ 'will-change': [{
2867
+ 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]
2868
+ }],
2869
+ // -----------
2870
+ // --- SVG ---
2871
+ // -----------
2872
+ /**
2873
+ * Fill
2874
+ * @see https://tailwindcss.com/docs/fill
2875
+ */
2876
+ fill: [{
2877
+ fill: ['none', ...scaleColor()]
2878
+ }],
2879
+ /**
2880
+ * Stroke Width
2881
+ * @see https://tailwindcss.com/docs/stroke-width
2882
+ */
2883
+ 'stroke-w': [{
2884
+ stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]
2885
+ }],
2886
+ /**
2887
+ * Stroke
2888
+ * @see https://tailwindcss.com/docs/stroke
2889
+ */
2890
+ stroke: [{
2891
+ stroke: ['none', ...scaleColor()]
2892
+ }],
2893
+ // ---------------------
2894
+ // --- Accessibility ---
2895
+ // ---------------------
2896
+ /**
2897
+ * Forced Color Adjust
2898
+ * @see https://tailwindcss.com/docs/forced-color-adjust
2899
+ */
2900
+ 'forced-color-adjust': [{
2901
+ 'forced-color-adjust': ['auto', 'none']
2902
+ }]
2903
+ },
2904
+ conflictingClassGroups: {
2905
+ overflow: ['overflow-x', 'overflow-y'],
2906
+ overscroll: ['overscroll-x', 'overscroll-y'],
2907
+ inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],
2908
+ 'inset-x': ['right', 'left'],
2909
+ 'inset-y': ['top', 'bottom'],
2910
+ flex: ['basis', 'grow', 'shrink'],
2911
+ gap: ['gap-x', 'gap-y'],
2912
+ p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],
2913
+ px: ['pr', 'pl'],
2914
+ py: ['pt', 'pb'],
2915
+ m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],
2916
+ mx: ['mr', 'ml'],
2917
+ my: ['mt', 'mb'],
2918
+ size: ['w', 'h'],
2919
+ 'font-size': ['leading'],
2920
+ 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],
2921
+ 'fvn-ordinal': ['fvn-normal'],
2922
+ 'fvn-slashed-zero': ['fvn-normal'],
2923
+ 'fvn-figure': ['fvn-normal'],
2924
+ 'fvn-spacing': ['fvn-normal'],
2925
+ 'fvn-fraction': ['fvn-normal'],
2926
+ 'line-clamp': ['display', 'overflow'],
2927
+ rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],
2928
+ 'rounded-s': ['rounded-ss', 'rounded-es'],
2929
+ 'rounded-e': ['rounded-se', 'rounded-ee'],
2930
+ 'rounded-t': ['rounded-tl', 'rounded-tr'],
2931
+ 'rounded-r': ['rounded-tr', 'rounded-br'],
2932
+ 'rounded-b': ['rounded-br', 'rounded-bl'],
2933
+ 'rounded-l': ['rounded-tl', 'rounded-bl'],
2934
+ 'border-spacing': ['border-spacing-x', 'border-spacing-y'],
2935
+ 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],
2936
+ 'border-w-x': ['border-w-r', 'border-w-l'],
2937
+ 'border-w-y': ['border-w-t', 'border-w-b'],
2938
+ 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],
2939
+ 'border-color-x': ['border-color-r', 'border-color-l'],
2940
+ 'border-color-y': ['border-color-t', 'border-color-b'],
2941
+ translate: ['translate-x', 'translate-y', 'translate-none'],
2942
+ 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],
2943
+ 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],
2944
+ 'scroll-mx': ['scroll-mr', 'scroll-ml'],
2945
+ 'scroll-my': ['scroll-mt', 'scroll-mb'],
2946
+ 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],
2947
+ 'scroll-px': ['scroll-pr', 'scroll-pl'],
2948
+ 'scroll-py': ['scroll-pt', 'scroll-pb'],
2949
+ touch: ['touch-x', 'touch-y', 'touch-pz'],
2950
+ 'touch-x': ['touch'],
2951
+ 'touch-y': ['touch'],
2952
+ 'touch-pz': ['touch']
2953
+ },
2954
+ conflictingClassGroupModifiers: {
2955
+ 'font-size': ['leading']
2956
+ },
2957
+ orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']
2958
+ };
2959
+ };
2960
+ const twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);
2961
+
2962
+ function cn(...inputs) {
2963
+ return twMerge(clsx(inputs));
2964
+ }
2965
+ const pathVariants = {
2966
+ normal: {
2967
+ opacity: 1,
2968
+ pathLength: 1,
2969
+ pathOffset: 0,
2970
+ transition: {
2971
+ duration: 0.4,
2972
+ opacity: { duration: 0.1 },
2973
+ },
2974
+ },
2975
+ animate: {
2976
+ opacity: [0, 1],
2977
+ pathLength: [0, 1],
2978
+ pathOffset: [1, 0],
2979
+ transition: {
2980
+ duration: 0.6,
2981
+ ease: 'linear',
2982
+ opacity: { duration: 0.1 },
2983
+ },
2984
+ },
2985
+ };
2986
+ const squareVariants = {
2987
+ normal: {
2988
+ transition: { duration: 0.4 },
2989
+ },
2990
+ animate: {
2991
+ transition: { duration: 0.6, ease: 'easeInOut' },
2992
+ },
2993
+ };
2994
+ function SquareActivity({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }) {
2995
+ const controls = useAnimation();
2996
+ const loopRef = useRef(loopOnHover);
2997
+ const triggerAnimation = useCallback(async () => {
2998
+ console.log("started animation");
2999
+ await controls.start('animate');
3000
+ await controls.start('normal');
3001
+ if (loopRef.current)
3002
+ triggerAnimation();
3003
+ }, [controls]);
3004
+ useEffect(() => {
3005
+ loopRef.current = loopOnHover;
3006
+ }, [loopOnHover]);
3007
+ useEffect(() => {
3008
+ if (autoAnimateOnLoad)
3009
+ triggerAnimation();
3010
+ }, [autoAnimateOnLoad, triggerAnimation]);
3011
+ const handleMouseEnter = (e) => {
3012
+ if (hoverable)
3013
+ triggerAnimation();
3014
+ onMouseEnter?.(e);
3015
+ };
3016
+ const handleMouseLeave = (e) => {
3017
+ if (hoverable)
3018
+ controls.start('normal');
3019
+ onMouseLeave?.(e);
3020
+ };
3021
+ const handleClick = (e) => {
3022
+ if (animateOnClick)
3023
+ triggerAnimation();
3024
+ onClick?.(e);
3025
+ };
3026
+ return (jsx("div", { className: cn('rounded-md', className), style: {
3027
+ width: size,
3028
+ height: size,
3029
+ display: 'inline-block',
3030
+ ...style,
3031
+ }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: [jsx(motion.rect, { width: "18", height: "18", x: "3", y: "3", rx: "2", variants: squareVariants, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M17 12h-2l-2 5-2-10-2 5H7", variants: pathVariants, animate: controls, initial: "normal" })] }) }));
3032
+ }
3033
+
3034
+ export { SquareActivity };
2
3035
  //# sourceMappingURL=index.js.map