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