tailwind-variants 0.2.0 → 0.2.1
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/README.md +20 -1
- package/dist/index.cjs +4 -4
- package/dist/index.d.ts +68 -1
- package/dist/index.js +2 -2
- package/dist/transformer.cjs +6 -6
- package/dist/transformer.d.ts +11 -1
- package/dist/transformer.js +6 -6
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -85,7 +85,24 @@ you need to add the Tailwind Variants `wrapper` to your TailwindCSS config file
|
|
|
85
85
|
// tailwind.config.js
|
|
86
86
|
|
|
87
87
|
const { withTV } = require('tailwind-variants/transformer')
|
|
88
|
-
|
|
88
|
+
|
|
89
|
+
/** @type {import('tailwindcss').Config} */
|
|
90
|
+
module.exports = withTV({
|
|
91
|
+
content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
|
|
92
|
+
theme: {
|
|
93
|
+
extend: {},
|
|
94
|
+
},
|
|
95
|
+
plugins: [],
|
|
96
|
+
})
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
If you're using a custom path to import Tailwind variants, such as creating a custom tv instance with `createTV`, it's recommended to include this path in the transformer configuration:
|
|
100
|
+
|
|
101
|
+
```js
|
|
102
|
+
// tailwind.config.js
|
|
103
|
+
|
|
104
|
+
const { withTV } = require('tailwind-variants/transformer')
|
|
105
|
+
|
|
89
106
|
/** @type {import('tailwindcss').Config} */
|
|
90
107
|
module.exports = withTV({
|
|
91
108
|
content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
|
|
@@ -93,6 +110,8 @@ module.exports = withTV({
|
|
|
93
110
|
extend: {},
|
|
94
111
|
},
|
|
95
112
|
plugins: [],
|
|
113
|
+
}, {
|
|
114
|
+
aliases: ["@/lib/tv"]
|
|
96
115
|
})
|
|
97
116
|
```
|
|
98
117
|
|
package/dist/index.cjs
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
var tailwindMerge = require('tailwind-merge');
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var G=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,g=e=>!e||typeof e!="object"||Object.keys(e).length===0,Q=(e,l)=>JSON.stringify(e)===JSON.stringify(l);function X(e,l){e.forEach(function(t){Array.isArray(t)?X(t,l):l.push(t);});}function q(e){let l=[];return X(e,l),l}var J=(...e)=>q(e).filter(Boolean),$=(e,l)=>{let t={},O=Object.keys(e),j=Object.keys(l);for(let m of O)if(j.includes(m)){let A=e[m],h=l[m];typeof A=="object"&&typeof h=="object"?t[m]=$(A,h):Array.isArray(A)||Array.isArray(h)?t[m]=J(h,A):t[m]=h+" "+A;}else t[m]=e[m];for(let m of j)O.includes(m)||(t[m]=l[m]);return t},R=e=>!e||typeof e!="string"?e:e.replace(/\s+/g," ").trim();var ce={twMerge:!0,twMergeConfig:{},responsiveVariants:!1},Z=e=>e||void 0,S=(...e)=>Z(q(e).filter(Boolean).join(" ")),F=null,C={},U=!1,M=(...e)=>l=>l.twMerge?((!F||U)&&(U=!1,F=g(C)?tailwindMerge.twMerge:tailwindMerge.extendTailwindMerge({...C,extend:{theme:C.theme,classGroups:C.classGroups,conflictingClassGroupModifiers:C.conflictingClassGroupModifiers,conflictingClassGroups:C.conflictingClassGroups,...C.extend}})),Z(F(S(e)))):S(e),Y=(e,l)=>{for(let t in l)e.hasOwnProperty(t)?e[t]=S(e[t],l[t]):e[t]=l[t];return e},oe=(e,l)=>{let{extend:t=null,slots:O={},variants:j={},compoundVariants:m=[],compoundSlots:A=[],defaultVariants:h={}}=e,d={...ce,...l},p=t!=null&&t.base?S(t.base,e==null?void 0:e.base):e==null?void 0:e.base,b=t!=null&&t.variants&&!g(t.variants)?$(j,t.variants):j,k=t!=null&&t.defaultVariants&&!g(t.defaultVariants)?{...t.defaultVariants,...h}:h;!g(d.twMergeConfig)&&!Q(d.twMergeConfig,C)&&(U=!0,C=d.twMergeConfig);let E=g(t==null?void 0:t.slots),T=g(O)?{}:{base:S(e==null?void 0:e.base,E&&(t==null?void 0:t.base)),...O},N=E?T:Y({...t==null?void 0:t.slots},g(T)?{base:e==null?void 0:e.base}:T),w=g(t==null?void 0:t.compoundVariants)?m:J(t==null?void 0:t.compoundVariants,m),v=f=>{if(g(b)&&g(O)&&E)return M(p,f==null?void 0:f.class,f==null?void 0:f.className)(d);if(w&&!Array.isArray(w))throw new TypeError(`The "compoundVariants" prop must be an array. Received: ${typeof w}`);if(A&&!Array.isArray(A))throw new TypeError(`The "compoundSlots" prop must be an array. Received: ${typeof A}`);let K=(n,a,r=[],i)=>{let s=r;if(typeof a=="string")s=s.concat(R(a).split(" ").map(o=>`${n}:${o}`));else if(Array.isArray(a))s=s.concat(a.reduce((o,c)=>o.concat(`${n}:${c}`),[]));else if(typeof a=="object"&&typeof i=="string"){for(let o in a)if(a.hasOwnProperty(o)&&o===i){let c=a[o];if(c&&typeof c=="string"){let u=R(c);s[i]?s[i]=s[i].concat(u.split(" ").map(y=>`${n}:${y}`)):s[i]=u.split(" ").map(y=>`${n}:${y}`);}else Array.isArray(c)&&c.length>0&&(s[i]=c.reduce((u,y)=>u.concat(`${n}:${y}`),[]));}}return s},W=(n,a=b,r=null,i=null)=>{var I;let s=a[n];if(!s||g(s))return null;let o=(I=i==null?void 0:i[n])!=null?I:f==null?void 0:f[n];if(o===null)return null;let c=G(o),u=Array.isArray(d.responsiveVariants)&&d.responsiveVariants.length>0||d.responsiveVariants===!0,y=k==null?void 0:k[n],V=[];if(typeof c=="object"&&u)for(let[x,L]of Object.entries(c)){let ae=s[L];if(x==="initial"){y=L;continue}Array.isArray(d.responsiveVariants)&&!d.responsiveVariants.includes(x)||(V=K(x,ae,V,r));}let re=c!=null&&typeof c!="object"?c:G(y),B=s[re||"false"];return typeof V=="object"&&typeof r=="string"&&V[r]?Y(V,B):V.length>0?(V.push(B),V):B},P=()=>b?Object.keys(b).map(n=>W(n,b)):null,ee=(n,a)=>{if(!b||typeof b!="object")return null;let r=new Array;for(let i in b){let s=W(i,b,n,a),o=n==="base"&&typeof s=="string"?s:s&&s[n];o&&(r[r.length]=o);}return r},z={};for(let n in f)f[n]!==void 0&&(z[n]=f[n]);let D=(n,a)=>{var i;let r=typeof(f==null?void 0:f[n])=="object"?{[n]:(i=f[n])==null?void 0:i.initial}:{};return {...k,...z,...r,...a}},H=(n=[],a)=>{let r=[];for(let{class:i,className:s,...o}of n){let c=!0;for(let[u,y]of Object.entries(o)){let V=D(u,a);if(Array.isArray(y)){if(!y.includes(V[u])){c=!1;break}}else if(V[u]!==y){c=!1;break}}c&&(i&&r.push(i),s&&r.push(s));}return r},te=n=>{let a=H(w,n);if(!Array.isArray(a))return a;let r={};for(let i of a)if(typeof i=="string"&&(r.base=M(r.base,i)(d)),typeof i=="object")for(let[s,o]of Object.entries(i))r[s]=M(r[s],o)(d);return r},ne=n=>{if(A.length<1)return null;let a={};for(let{slots:r=[],class:i,className:s,...o}of A){if(!g(o)){let c=!0;for(let u of Object.keys(o)){let y=D(u,n)[u];if(y===void 0||(Array.isArray(o[u])?!o[u].includes(y):o[u]!==y)){c=!1;break}}if(!c)continue}for(let c of r)a[c]=a[c]||[],a[c].push([i,s]);}return a};if(!g(O)||!E){let n={};if(typeof N=="object"&&!g(N))for(let a of Object.keys(N))n[a]=r=>{var i,s;return M(N[a],ee(a,r),((i=te(r))!=null?i:[])[a],((s=ne(r))!=null?s:[])[a],r==null?void 0:r.class,r==null?void 0:r.className)(d)};return n}return M(p,P(),H(w),f==null?void 0:f.class,f==null?void 0:f.className)(d)},_=()=>{if(!(!b||typeof b!="object"))return Object.keys(b)};return v.variantKeys=_(),v.extend=t,v.base=p,v.slots=N,v.variants=b,v.defaultVariants=k,v.compoundSlots=A,v.compoundVariants=w,v},ye=e=>(l,t)=>oe(l,t?$(e,t):e);
|
|
6
6
|
|
|
7
|
-
exports.cn =
|
|
8
|
-
exports.cnBase =
|
|
7
|
+
exports.cn = M;
|
|
8
|
+
exports.cnBase = S;
|
|
9
9
|
exports.createTV = ye;
|
|
10
|
-
exports.defaultConfig =
|
|
10
|
+
exports.defaultConfig = ce;
|
|
11
11
|
exports.tv = oe;
|
|
12
12
|
exports.voidEmpty = Z;
|
package/dist/index.d.ts
CHANGED
|
@@ -290,10 +290,77 @@ export type TV = {
|
|
|
290
290
|
): TVReturnType<V, S, B, C, EV, ES, E>;
|
|
291
291
|
};
|
|
292
292
|
|
|
293
|
+
export type CreateTV<RV extends TVConfig["responsiveVariants"] = undefined> = {
|
|
294
|
+
<
|
|
295
|
+
V extends TVVariants<S, B, EV>,
|
|
296
|
+
CV extends TVCompoundVariants<V, S, B, EV, ES>,
|
|
297
|
+
DV extends TVDefaultVariants<V, S, EV, ES>,
|
|
298
|
+
C extends TVConfig<V, EV>,
|
|
299
|
+
B extends ClassValue = undefined,
|
|
300
|
+
S extends TVSlots = undefined,
|
|
301
|
+
// @ts-expect-error
|
|
302
|
+
E extends TVReturnType = TVReturnType<
|
|
303
|
+
V,
|
|
304
|
+
S,
|
|
305
|
+
B,
|
|
306
|
+
C,
|
|
307
|
+
// @ts-expect-error
|
|
308
|
+
EV extends undefined ? {} : EV,
|
|
309
|
+
// @ts-expect-error
|
|
310
|
+
ES extends undefined ? {} : ES
|
|
311
|
+
>,
|
|
312
|
+
EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"],
|
|
313
|
+
ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined,
|
|
314
|
+
>(
|
|
315
|
+
options: {
|
|
316
|
+
/**
|
|
317
|
+
* Extend allows for easy composition of components.
|
|
318
|
+
* @see https://www.tailwind-variants.org/docs/composing-components
|
|
319
|
+
*/
|
|
320
|
+
extend?: E;
|
|
321
|
+
/**
|
|
322
|
+
* Base allows you to set a base class for a component.
|
|
323
|
+
*/
|
|
324
|
+
base?: B;
|
|
325
|
+
/**
|
|
326
|
+
* Slots allow you to separate a component into multiple parts.
|
|
327
|
+
* @see https://www.tailwind-variants.org/docs/slots
|
|
328
|
+
*/
|
|
329
|
+
slots?: S;
|
|
330
|
+
/**
|
|
331
|
+
* Variants allow you to create multiple versions of the same component.
|
|
332
|
+
* @see https://www.tailwind-variants.org/docs/variants#adding-variants
|
|
333
|
+
*/
|
|
334
|
+
variants?: V;
|
|
335
|
+
/**
|
|
336
|
+
* Compound variants allow you to apply classes to multiple variants at once.
|
|
337
|
+
* @see https://www.tailwind-variants.org/docs/variants#compound-variants
|
|
338
|
+
*/
|
|
339
|
+
compoundVariants?: CV;
|
|
340
|
+
/**
|
|
341
|
+
* Compound slots allow you to apply classes to multiple slots at once.
|
|
342
|
+
*/
|
|
343
|
+
compoundSlots?: TVCompoundSlots<V, S, B>;
|
|
344
|
+
/**
|
|
345
|
+
* Default variants allow you to set default variants for a component.
|
|
346
|
+
* @see https://www.tailwind-variants.org/docs/variants#default-variants
|
|
347
|
+
*/
|
|
348
|
+
defaultVariants?: DV;
|
|
349
|
+
},
|
|
350
|
+
/**
|
|
351
|
+
* The config object allows you to modify the default configuration.
|
|
352
|
+
* @see https://www.tailwind-variants.org/docs/api-reference#config-optional
|
|
353
|
+
*/
|
|
354
|
+
config?: C,
|
|
355
|
+
): TVReturnType<V, S, B, C & RV, EV, ES, E>;
|
|
356
|
+
};
|
|
357
|
+
|
|
293
358
|
// main function
|
|
294
359
|
export declare const tv: TV;
|
|
295
360
|
|
|
296
|
-
export declare function createTV
|
|
361
|
+
export declare function createTV<T extends TVConfig["responsiveVariants"]>(
|
|
362
|
+
config: TVConfig & T,
|
|
363
|
+
): CreateTV<T>;
|
|
297
364
|
|
|
298
365
|
export declare const defaultConfig: TVConfig;
|
|
299
366
|
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { e, b, g, c, f, a, h } from './chunk-JXBJZR5A.js';
|
|
2
2
|
import { twMerge, extendTailwindMerge } from 'tailwind-merge';
|
|
3
3
|
|
|
4
|
-
var ie={twMerge:!0,twMergeConfig:{},responsiveVariants:!1},
|
|
4
|
+
var ie={twMerge:!0,twMergeConfig:{},responsiveVariants:!1},_=s=>s||void 0,M=(...s)=>_(e(s).filter(Boolean).join(" ")),R=null,v={},q=!1,j=(...s)=>b$1=>b$1.twMerge?((!R||q)&&(q=!1,R=b(v)?twMerge:extendTailwindMerge({...v,extend:{theme:v.theme,classGroups:v.classGroups,conflictingClassGroupModifiers:v.conflictingClassGroupModifiers,conflictingClassGroups:v.conflictingClassGroups,...v.extend}})),_(R(M(s)))):M(s),Z=(s,b)=>{for(let e in b)s.hasOwnProperty(e)?s[e]=M(s[e],b[e]):s[e]=b[e];return s},ce=(s,b$1)=>{let{extend:e=null,slots:N={},variants:F={},compoundVariants:U=[],compoundSlots:C=[],defaultVariants:W={}}=s,m={...ie,...b$1},S=e!=null&&e.base?M(e.base,s==null?void 0:s.base):s==null?void 0:s.base,g$1=e!=null&&e.variants&&!b(e.variants)?g(F,e.variants):F,A=e!=null&&e.defaultVariants&&!b(e.defaultVariants)?{...e.defaultVariants,...W}:W;!b(m.twMergeConfig)&&!c(m.twMergeConfig,v)&&(q=!0,v=m.twMergeConfig);let O=b(e==null?void 0:e.slots),$=b(N)?{}:{base:M(s==null?void 0:s.base,O&&(e==null?void 0:e.base)),...N},w=O?$:Z({...e==null?void 0:e.slots},b($)?{base:s==null?void 0:s.base}:$),h$1=b(e==null?void 0:e.compoundVariants)?U:f(e==null?void 0:e.compoundVariants,U),V=f=>{if(b(g$1)&&b(N)&&O)return j(S,f==null?void 0:f.class,f==null?void 0:f.className)(m);if(h$1&&!Array.isArray(h$1))throw new TypeError(`The "compoundVariants" prop must be an array. Received: ${typeof h$1}`);if(C&&!Array.isArray(C))throw new TypeError(`The "compoundSlots" prop must be an array. Received: ${typeof C}`);let K=(t,n,a=[],i)=>{let r=a;if(typeof n=="string")r=r.concat(h(n).split(" ").map(o=>`${t}:${o}`));else if(Array.isArray(n))r=r.concat(n.reduce((o,c)=>o.concat(`${t}:${c}`),[]));else if(typeof n=="object"&&typeof i=="string"){for(let o in n)if(n.hasOwnProperty(o)&&o===i){let c=n[o];if(c&&typeof c=="string"){let l=h(c);r[i]?r[i]=r[i].concat(l.split(" ").map(u=>`${t}:${u}`)):r[i]=l.split(" ").map(u=>`${t}:${u}`);}else Array.isArray(c)&&c.length>0&&(r[i]=c.reduce((l,u)=>l.concat(`${t}:${u}`),[]));}}return r},z=(t,n=g$1,a$1=null,i=null)=>{var J;let r=n[t];if(!r||b(r))return null;let o=(J=i==null?void 0:i[t])!=null?J:f==null?void 0:f[t];if(o===null)return null;let c=a(o),l=Array.isArray(m.responsiveVariants)&&m.responsiveVariants.length>0||m.responsiveVariants===!0,u=A==null?void 0:A[t],d=[];if(typeof c=="object"&&l)for(let[T,L]of Object.entries(c)){let ne=r[L];if(T==="initial"){u=L;continue}Array.isArray(m.responsiveVariants)&&!m.responsiveVariants.includes(T)||(d=K(T,ne,d,a$1));}let ae=c!=null&&typeof c!="object"?c:a(u),k=r[ae||"false"];return typeof d=="object"&&typeof a$1=="string"&&d[a$1]?Z(d,k):d.length>0?(d.push(k),d):k},P=()=>g$1?Object.keys(g$1).map(t=>z(t,g$1)):null,p=(t,n)=>{if(!g$1||typeof g$1!="object")return null;let a=new Array;for(let i in g$1){let r=z(i,g$1,t,n),o=t==="base"&&typeof r=="string"?r:r&&r[t];o&&(a[a.length]=o);}return a},D={};for(let t in f)f[t]!==void 0&&(D[t]=f[t]);let H=(t,n)=>{var i;let a=typeof(f==null?void 0:f[t])=="object"?{[t]:(i=f[t])==null?void 0:i.initial}:{};return {...A,...D,...a,...n}},I=(t=[],n)=>{let a=[];for(let{class:i,className:r,...o}of t){let c=!0;for(let[l,u]of Object.entries(o)){let d=H(l,n);if(Array.isArray(u)){if(!u.includes(d[l])){c=!1;break}}else if(d[l]!==u){c=!1;break}}c&&(i&&a.push(i),r&&a.push(r));}return a},ee=t=>{let n=I(h$1,t);if(!Array.isArray(n))return n;let a={};for(let i of n)if(typeof i=="string"&&(a.base=j(a.base,i)(m)),typeof i=="object")for(let[r,o]of Object.entries(i))a[r]=j(a[r],o)(m);return a},te=t=>{if(C.length<1)return null;let n={};for(let{slots:a=[],class:i,className:r,...o}of C){if(!b(o)){let c=!0;for(let l of Object.keys(o)){let u=H(l,t)[l];if(u===void 0||(Array.isArray(o[l])?!o[l].includes(u):o[l]!==u)){c=!1;break}}if(!c)continue}for(let c of a)n[c]=n[c]||[],n[c].push([i,r]);}return n};if(!b(N)||!O){let t={};if(typeof w=="object"&&!b(w))for(let n of Object.keys(w))t[n]=a=>{var i,r;return j(w[n],p(n,a),((i=ee(a))!=null?i:[])[n],((r=te(a))!=null?r:[])[n],a==null?void 0:a.class,a==null?void 0:a.className)(m)};return t}return j(S,P(),I(h$1),f==null?void 0:f.class,f==null?void 0:f.className)(m)},x=()=>{if(!(!g$1||typeof g$1!="object"))return Object.keys(g$1)};return V.variantKeys=x(),V.extend=e,V.base=S,V.slots=w,V.variants=g$1,V.defaultVariants=A,V.compoundSlots=C,V.compoundVariants=h$1,V},le=s=>(b,e)=>ce(b,e?g(s,e):s);
|
|
5
5
|
|
|
6
|
-
export { j as cn,
|
|
6
|
+
export { j as cn, M as cnBase, le as createTV, ie as defaultConfig, ce as tv, _ as voidEmpty };
|
package/dist/transformer.cjs
CHANGED
|
@@ -10,17 +10,17 @@ var V__default = /*#__PURE__*/_interopDefault(V);
|
|
|
10
10
|
var w__default = /*#__PURE__*/_interopDefault(w);
|
|
11
11
|
var O__default = /*#__PURE__*/_interopDefault(O);
|
|
12
12
|
|
|
13
|
-
var S=t=>{w__default.default.writeFileSync(O__default.default.join(__dirname,"generated.d.ts"),t);},C=t=>`export type TVGeneratedScreens = ${Object.keys(t).map(
|
|
14
|
-
`,v=t=>{queueMicrotask(()=>{if(t!=null&&t.screens){let
|
|
13
|
+
var S=t=>{w__default.default.writeFileSync(O__default.default.join(__dirname,"generated.d.ts"),t);},C=t=>`export type TVGeneratedScreens = ${Object.keys(t).map(r=>`"${r}"`).join(" | ")};
|
|
14
|
+
`,v=t=>{queueMicrotask(()=>{if(t!=null&&t.screens){let r=C(t.screens);S(r);}});};var p={tv:/tv\s*\(((\([^\)]*?\)|\[[^\]]*?\]|.)*?)\)/gs,tvExtend:/extend:\s*\w+(,| )\s*/,comment:/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm,blankLine:/^\s*$(?:\r\n?|\n)/gm,extension:/\.\w+/g},l=t=>Array.isArray(t),b=t=>typeof t=="string",d=t=>typeof t=="object",$=t=>typeof t=="boolean",y=t=>typeof t=="function",f=t=>!!(!t||l(t)&&t.length===0||b(t)&&t.length===0||d(t)&&Object.keys(t).length===0),k=(t,r)=>{let n={},e=r.length,s=Object.prototype.hasOwnProperty;for(let a=0;a<e;a++){let o=r[a];s.call(t,o)&&(n[o]=t[o]);}return n},A=(t,r)=>{let n="https://github.com/nextui-org/tailwind-variants/issues/new/choose";console.log("\x1B[31m%s\x1B[0m",`${t}: ${r.message}`),console.log(`If you think this is an issue, please submit it at ${n}`);},h=(...t)=>r=>t.reduce((n,e)=>e(n),r),P=t=>{let n=t.replace(p.comment,"$1").toString().replace(p.blankLine,"").toString(),e=s=>s[1].replace(p.tvExtend,"").toString();return Array.from(n.matchAll(p.tv),e)},F=t=>{let r=P(t);if(!f(r))return r.map(n=>n.includes("responsiveVariants")?new Function(`
|
|
15
15
|
const [options, config] = [${n.toString()}];
|
|
16
16
|
return {options, config};
|
|
17
|
-
`)():{})},
|
|
17
|
+
`)():{})},E=t=>t.flatMap(r=>r).toString().replaceAll(","," ").split(" "),I=(t,r)=>{let n={};for(let[e,s]of Object.entries(t))n[e]={},n[e].original=s,!f(s)&&(n.temp=l(s)?E(s):s.split(" "),r.forEach(a=>{let o="";n.temp.forEach(i=>{o+=`${a}:${i} `;}),n[e][a]=o.trimEnd();}),delete n.temp);return n},B=(t,r)=>b(t)?t.split(" "):l(t)?E(t):d(t)?I(t,r):t,x=(t,r)=>{let n={};for(let[e,s]of Object.entries(t))if(n[e]={},!f(s))for(let[a,o]of Object.entries(s)){if(n[e][a]={},n[e][a].original=o,f(o))continue;let i=B(o,r);if(!f(i)){if(!l(i)){n[e][a]=i;continue}r.forEach(c=>{let m="";i.forEach(u=>{m+=`${c}:${u} `;}),n[e][a][c]=m.trimEnd();});}}return n},T=({options:t,config:r},n)=>{var a,o;let e=(a=t==null?void 0:t.variants)!=null?a:{},s=(o=r==null?void 0:r.responsiveVariants)!=null?o:!1;if(!(!s||f(e))){if($(s))return x(e,n);if(l(s))return x(e,s);if(d(s)){let i=[];for(let[c,m]of Object.entries(s)){if(!m||f(m))continue;let j={options:{variants:k(e,[c])},config:{responsiveVariants:m}};i.push(T(j,n));}return i}}},D=(t,r,n)=>{try{let e=["tailwind-variants"];if(!(l(n==null?void 0:n.aliases)?[...n.aliases,...e]:e).some(u=>t.includes(u)))return t;let o=F(t);if(f(o))return t;let i=JSON.stringify(o.map(u=>T(u,r)),void 0,2),c=`
|
|
18
18
|
/* Tailwind Variants Transformed Content Start
|
|
19
19
|
|
|
20
|
-
`,
|
|
20
|
+
`,m=`
|
|
21
21
|
|
|
22
22
|
Tailwind Variants Transformed Content End */
|
|
23
|
-
`;return t.concat(
|
|
23
|
+
`;return t.concat(c+i+m)}catch(e){return A("Tailwind Variants Transform Failed",e),t}},g=t=>{let r=t.map(n=>{if(d(n)&&n.extension)return n.extension;let e=n.match(p.extension);return e||(e=n.split("{"),e=e.pop().replace("}","").split(",")),e.map(s=>s.replace(".","").split(".")).flat()}).flatMap(n=>n);return Array.from(new Set(r)).filter(n=>n!=="html")},G=(t,r)=>{var a;let n=V__default.default(t);if(v(n.theme),f((a=n.content)==null?void 0:a.files)||!l(n.content.files))return n;let e=o=>{var i,c;return D(o,Object.keys((c=(i=n.theme)==null?void 0:i.screens)!=null?c:{}),r)},s=n.content.transform;if(f(s)){let i=g(n.content.files).map(c=>[c,e]);return n.content.transform=Object.fromEntries(i),n}if(y(s)){let i=g(n.content.files).map(c=>[c,h(e,s)]);return n.content.transform=Object.fromEntries(i),n}if(d(s)){let i=g(n.content.files).map(c=>y(s[c])?[c,h(e,s[c])]:[c,e]);return n.content.transform=Object.fromEntries(i),n}return n};
|
|
24
24
|
|
|
25
|
-
exports.tvTransformer =
|
|
25
|
+
exports.tvTransformer = D;
|
|
26
26
|
exports.withTV = G;
|
package/dist/transformer.d.ts
CHANGED
|
@@ -9,8 +9,18 @@ export type WithTV = {
|
|
|
9
9
|
|
|
10
10
|
export declare const withTV: WithTV;
|
|
11
11
|
|
|
12
|
+
export type TVTransformerConfig = {
|
|
13
|
+
/**
|
|
14
|
+
* Optional array of custom aliases where Tailwind Variants might be resolved.
|
|
15
|
+
* This can be useful if you're using a custom path to import Tailwind Variants.
|
|
16
|
+
*
|
|
17
|
+
* @example ["@/lib/tv"]
|
|
18
|
+
*/
|
|
19
|
+
aliases?: string[];
|
|
20
|
+
};
|
|
21
|
+
|
|
12
22
|
export type TVTransformer = {
|
|
13
|
-
(content: string, screens?: string[] | DefaultScreens[]): string;
|
|
23
|
+
(content: string, screens?: string[] | DefaultScreens[], config?: TVTransformerConfig): string;
|
|
14
24
|
};
|
|
15
25
|
|
|
16
26
|
export declare const tvTransformer: TVTransformer;
|
package/dist/transformer.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { a } from './chunk-FUBUDMV2.js';
|
|
2
2
|
import w from 'tailwindcss/resolveConfig';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
const [options, config] = [${
|
|
4
|
+
var p={tv:/tv\s*\(((\([^\)]*?\)|\[[^\]]*?\]|.)*?)\)/gs,tvExtend:/extend:\s*\w+(,| )\s*/,comment:/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm,blankLine:/^\s*$(?:\r\n?|\n)/gm,extension:/\.\w+/g},l=n=>Array.isArray(n),E=n=>typeof n=="string",d=n=>typeof n=="object",T=n=>typeof n=="boolean",g=n=>typeof n=="function",f=n=>!!(!n||l(n)&&n.length===0||E(n)&&n.length===0||d(n)&&Object.keys(n).length===0),j=(n,r)=>{let t={},e=r.length,s=Object.prototype.hasOwnProperty;for(let a=0;a<e;a++){let o=r[a];s.call(n,o)&&(t[o]=n[o]);}return t},V=(n,r)=>{let t="https://github.com/nextui-org/tailwind-variants/issues/new/choose";console.log("\x1B[31m%s\x1B[0m",`${n}: ${r.message}`),console.log(`If you think this is an issue, please submit it at ${t}`);},x=(...n)=>r=>n.reduce((t,e)=>e(t),r),S=n=>{let t=n.replace(p.comment,"$1").toString().replace(p.blankLine,"").toString(),e=s=>s[1].replace(p.tvExtend,"").toString();return Array.from(t.matchAll(p.tv),e)},$=n=>{let r=S(n);if(!f(r))return r.map(t=>t.includes("responsiveVariants")?new Function(`
|
|
5
|
+
const [options, config] = [${t.toString()}];
|
|
6
6
|
return {options, config};
|
|
7
|
-
`)():{})},b=
|
|
7
|
+
`)():{})},b=n=>n.flatMap(r=>r).toString().replaceAll(","," ").split(" "),k=(n,r)=>{let t={};for(let[e,s]of Object.entries(n))t[e]={},t[e].original=s,!f(s)&&(t.temp=l(s)?b(s):s.split(" "),r.forEach(a=>{let o="";t.temp.forEach(i=>{o+=`${a}:${i} `;}),t[e][a]=o.trimEnd();}),delete t.temp);return t},A=(n,r)=>E(n)?n.split(" "):l(n)?b(n):d(n)?k(n,r):n,y=(n,r)=>{let t={};for(let[e,s]of Object.entries(n))if(t[e]={},!f(s))for(let[a,o]of Object.entries(s)){if(t[e][a]={},t[e][a].original=o,f(o))continue;let i=A(o,r);if(!f(i)){if(!l(i)){t[e][a]=i;continue}r.forEach(c=>{let m="";i.forEach(u=>{m+=`${c}:${u} `;}),t[e][a][c]=m.trimEnd();});}}return t},C=({options:n,config:r},t)=>{var a,o;let e=(a=n==null?void 0:n.variants)!=null?a:{},s=(o=r==null?void 0:r.responsiveVariants)!=null?o:!1;if(!(!s||f(e))){if(T(s))return y(e,t);if(l(s))return y(e,s);if(d(s)){let i=[];for(let[c,m]of Object.entries(s)){if(!m||f(m))continue;let O={options:{variants:j(e,[c])},config:{responsiveVariants:m}};i.push(C(O,t));}return i}}},P=(n,r,t)=>{try{let e=["tailwind-variants"];if(!(l(t==null?void 0:t.aliases)?[...t.aliases,...e]:e).some(u=>n.includes(u)))return n;let o=$(n);if(f(o))return n;let i=JSON.stringify(o.map(u=>C(u,r)),void 0,2),c=`
|
|
8
8
|
/* Tailwind Variants Transformed Content Start
|
|
9
9
|
|
|
10
|
-
`,
|
|
10
|
+
`,m=`
|
|
11
11
|
|
|
12
12
|
Tailwind Variants Transformed Content End */
|
|
13
|
-
`;return
|
|
13
|
+
`;return n.concat(c+i+m)}catch(e){return V("Tailwind Variants Transform Failed",e),n}},v=n=>{let r=n.map(t=>{if(d(t)&&t.extension)return t.extension;let e=t.match(p.extension);return e||(e=t.split("{"),e=e.pop().replace("}","").split(",")),e.map(s=>s.replace(".","").split(".")).flat()}).flatMap(t=>t);return Array.from(new Set(r)).filter(t=>t!=="html")},D=(n,r)=>{var a$1;let t=w(n);if(a(t.theme),f((a$1=t.content)==null?void 0:a$1.files)||!l(t.content.files))return t;let e=o=>{var i,c;return P(o,Object.keys((c=(i=t.theme)==null?void 0:i.screens)!=null?c:{}),r)},s=t.content.transform;if(f(s)){let i=v(t.content.files).map(c=>[c,e]);return t.content.transform=Object.fromEntries(i),t}if(g(s)){let i=v(t.content.files).map(c=>[c,x(e,s)]);return t.content.transform=Object.fromEntries(i),t}if(d(s)){let i=v(t.content.files).map(c=>g(s[c])?[c,x(e,s[c])]:[c,e]);return t.content.transform=Object.fromEntries(i),t}return t};
|
|
14
14
|
|
|
15
|
-
export {
|
|
15
|
+
export { P as tvTransformer, D as withTV };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tailwind-variants",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "🦄 Tailwindcss first-class variant API",
|
|
5
5
|
"author": "Junior Garcia <jrgarciadev@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
"postpack": "clean-package restore",
|
|
34
34
|
"lint": "eslint -c .eslintrc.json ./src/**/*.{ts,tsx}",
|
|
35
35
|
"lint:fix": "eslint --fix -c .eslintrc.json ./src/**/*.{ts,tsx}",
|
|
36
|
-
"test": "jest --verbose"
|
|
36
|
+
"test": "jest --verbose",
|
|
37
|
+
"test:watch": "jest --watch --no-verbose"
|
|
37
38
|
},
|
|
38
39
|
"dependencies": {
|
|
39
40
|
"tailwind-merge": "^2.2.0"
|
|
@@ -94,7 +95,7 @@
|
|
|
94
95
|
".": {
|
|
95
96
|
"require": "./dist/index.cjs",
|
|
96
97
|
"import": "./dist/index.js",
|
|
97
|
-
"types": "./
|
|
98
|
+
"types": "./dist/index.d.ts"
|
|
98
99
|
},
|
|
99
100
|
"./dist/*": "./dist/*",
|
|
100
101
|
"./transformer": {
|