tailwind-variants 0.2.1 → 0.3.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 +28 -30
- package/dist/{chunk-JXBJZR5A.js → chunk-I2QGXAA3.js} +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.d.ts +17 -17
- package/dist/index.js +3 -3
- package/dist/transformer.cjs +2 -2
- package/dist/transformer.d.ts +1 -1
- package/dist/transformer.js +3 -3
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +1 -1
- package/package.json +38 -39
package/README.md
CHANGED
|
@@ -12,12 +12,11 @@
|
|
|
12
12
|
<a href="https://www.npmjs.com/package/tailwind-variants">
|
|
13
13
|
<img alt="NPM Version" src="https://badgen.net/npm/v/tailwind-variants" />
|
|
14
14
|
</a>
|
|
15
|
-
<a href="https://github.com/
|
|
15
|
+
<a href="https://github.com/heroui-inc/tailwind-variants/blob/main/LICENSE">
|
|
16
16
|
<img src="https://img.shields.io/npm/l/tailwind-variants?style=flat" alt="License">
|
|
17
17
|
</a>
|
|
18
18
|
</p>
|
|
19
19
|
|
|
20
|
-
|
|
21
20
|
## Features
|
|
22
21
|
|
|
23
22
|
- First-class variant API
|
|
@@ -34,8 +33,8 @@ For full documentation, visit [tailwind-variants.org](https://tailwind-variants.
|
|
|
34
33
|
|
|
35
34
|
## Quick Start
|
|
36
35
|
|
|
37
|
-
1. Installation:
|
|
38
|
-
To use Tailwind Variants in your project, you can install it as a dependency:
|
|
36
|
+
1. Installation:
|
|
37
|
+
To use Tailwind Variants in your project, you can install it as a dependency:
|
|
39
38
|
|
|
40
39
|
```bash
|
|
41
40
|
yarn add tailwind-variants
|
|
@@ -46,8 +45,8 @@ npm i tailwind-variants
|
|
|
46
45
|
2. Usage:
|
|
47
46
|
|
|
48
47
|
```js
|
|
49
|
-
import {
|
|
50
|
-
|
|
48
|
+
import {tv} from "tailwind-variants";
|
|
49
|
+
|
|
51
50
|
const button = tv({
|
|
52
51
|
base: "font-medium bg-blue-500 text-white rounded-full active:opacity-80",
|
|
53
52
|
variants: {
|
|
@@ -70,30 +69,28 @@ const button = tv({
|
|
|
70
69
|
defaultVariants: {
|
|
71
70
|
size: "md",
|
|
72
71
|
color: "primary",
|
|
73
|
-
}
|
|
72
|
+
},
|
|
74
73
|
});
|
|
75
|
-
|
|
76
|
-
return (
|
|
77
|
-
<button className={button({ size: 'sm', color: 'secondary' })}>Click me</button>
|
|
78
|
-
)
|
|
74
|
+
|
|
75
|
+
return <button className={button({size: "sm", color: "secondary"})}>Click me</button>;
|
|
79
76
|
```
|
|
80
77
|
|
|
81
78
|
3. Responsive variants configuration (optional): If you want to use responsive variants
|
|
82
|
-
you need to add the Tailwind Variants `wrapper` to your TailwindCSS config file `tailwind.config.js`.
|
|
79
|
+
you need to add the Tailwind Variants `wrapper` to your TailwindCSS config file `tailwind.config.js`.
|
|
83
80
|
|
|
84
81
|
```js
|
|
85
82
|
// tailwind.config.js
|
|
86
|
-
|
|
87
|
-
const {
|
|
83
|
+
|
|
84
|
+
const {withTV} = require("tailwind-variants/transformer");
|
|
88
85
|
|
|
89
86
|
/** @type {import('tailwindcss').Config} */
|
|
90
87
|
module.exports = withTV({
|
|
91
|
-
content:
|
|
88
|
+
content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
|
|
92
89
|
theme: {
|
|
93
90
|
extend: {},
|
|
94
91
|
},
|
|
95
92
|
plugins: [],
|
|
96
|
-
})
|
|
93
|
+
});
|
|
97
94
|
```
|
|
98
95
|
|
|
99
96
|
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:
|
|
@@ -101,37 +98,38 @@ If you're using a custom path to import Tailwind variants, such as creating a cu
|
|
|
101
98
|
```js
|
|
102
99
|
// tailwind.config.js
|
|
103
100
|
|
|
104
|
-
const {
|
|
101
|
+
const {withTV} = require("tailwind-variants/transformer");
|
|
105
102
|
|
|
106
103
|
/** @type {import('tailwindcss').Config} */
|
|
107
|
-
module.exports = withTV(
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
104
|
+
module.exports = withTV(
|
|
105
|
+
{
|
|
106
|
+
content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
|
|
107
|
+
theme: {
|
|
108
|
+
extend: {},
|
|
109
|
+
},
|
|
110
|
+
plugins: [],
|
|
111
111
|
},
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
{
|
|
113
|
+
aliases: ["@/lib/tv"],
|
|
114
|
+
},
|
|
115
|
+
);
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
|
|
119
118
|
## Acknowledgements
|
|
120
119
|
|
|
121
|
-
- [**cva**](https://github.com/joe-bell/cva) ([Joe Bell](https://github.com/joe-bell))
|
|
120
|
+
- [**cva**](https://github.com/joe-bell/cva) ([Joe Bell](https://github.com/joe-bell))
|
|
122
121
|
This project as started as an extension of Joe's work on `cva` – a great tool for generating variants for a single element with Tailwind CSS. Big shoutout to [Joe Bell](https://github.com/joe-bell) and [contributors](https://github.com/joe-bell/cva/graphs/contributors) you guys rock! 🤘 - we recommend to use `cva` if don't need any of the **Tailwind Variants** features listed [here](https://www.tailwind-variants.org/docs/comparison).
|
|
123
122
|
|
|
124
123
|
- [**Stitches**](https://stitches.dev/) ([Modulz](https://modulz.app))
|
|
125
124
|
The pioneers of the `variants` API movement. Inmense thanks to [Modulz](https://modulz.app) for their work on Stitches and the community around it. 🙏
|
|
126
125
|
|
|
127
|
-
|
|
128
126
|
## Community
|
|
129
127
|
|
|
130
|
-
We're excited to see the community adopt
|
|
128
|
+
We're excited to see the community adopt HeroUI, raise issues, and provide feedback. Whether it's a feature request, bug report, or a project to showcase, please get involved!
|
|
131
129
|
|
|
132
130
|
- [Discord](https://discord.gg/9b6yyZKmH4)
|
|
133
131
|
- [Twitter](https://twitter.com/getnextui)
|
|
134
|
-
- [GitHub Discussions](https://github.com/
|
|
132
|
+
- [GitHub Discussions](https://github.com/heroui-inc/tailwind-variants/discussions)
|
|
135
133
|
|
|
136
134
|
## Contributing
|
|
137
135
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var l=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,u=e=>!e||typeof e!="object"||Object.keys(e).length===0,x=(e,o)=>JSON.stringify(e)===JSON.stringify(o),A=e=>typeof e=="boolean";function i(e,o){e.forEach(function(r){Array.isArray(r)?i(r,o):o.push(r);});}function y(e){let o=[];return i(e,o),o}var a=(...e)=>y(e).filter(Boolean),p=(e,o)=>{let r={},c=Object.keys(e),f=Object.keys(o);for(let t of c)if(f.includes(t)){let s=e[t],n=o[t];typeof s=="object"&&typeof n=="object"?r[t]=p(s,n):
|
|
1
|
+
var l=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,u=e=>!e||typeof e!="object"||Object.keys(e).length===0,x=(e,o)=>JSON.stringify(e)===JSON.stringify(o),A=e=>typeof e=="boolean";function i(e,o){e.forEach(function(r){Array.isArray(r)?i(r,o):o.push(r);});}function y(e){let o=[];return i(e,o),o}var a=(...e)=>y(e).filter(Boolean),p=(e,o)=>{let r={},c=Object.keys(e),f=Object.keys(o);for(let t of c)if(f.includes(t)){let s=e[t],n=o[t];Array.isArray(s)||Array.isArray(n)?r[t]=a(n,s):typeof s=="object"&&typeof n=="object"?r[t]=p(s,n):r[t]=n+" "+s;}else r[t]=e[t];for(let t of f)c.includes(t)||(r[t]=o[t]);return r},g=e=>!e||typeof e!="string"?e:e.replace(/\s+/g," ").trim();
|
|
2
2
|
|
|
3
3
|
export { l as a, u as b, x as c, A as d, y as e, a as f, p as g, g as h };
|
package/dist/index.cjs
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
var tailwindMerge = require('tailwind-merge');
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var q=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,g=e=>!e||typeof e!="object"||Object.keys(e).length===0,X=(e,l)=>JSON.stringify(e)===JSON.stringify(l);function Y(e,l){e.forEach(function(t){Array.isArray(t)?Y(t,l):l.push(t);});}function F(e){let l=[];return Y(e,l),l}var J=(...e)=>F(e).filter(Boolean),T=(e,l)=>{let t={},O=Object.keys(e),k=Object.keys(l);for(let y of O)if(k.includes(y)){let V=e[y],h=l[y];Array.isArray(V)||Array.isArray(h)?t[y]=J(h,V):typeof V=="object"&&typeof h=="object"?t[y]=T(V,h):t[y]=h+" "+V;}else t[y]=e[y];for(let y of k)O.includes(y)||(t[y]=l[y]);return t},R=e=>!e||typeof e!="string"?e:e.replace(/\s+/g," ").trim();var ce={twMerge:!0,twMergeConfig:{},responsiveVariants:!1},_=e=>e||void 0,E=(...e)=>_(F(e).filter(Boolean).join(" ")),U=null,C={},W=!1,S=(...e)=>l=>l.twMerge?((!U||W)&&(W=!1,U=g(C)?tailwindMerge.twMerge:tailwindMerge.extendTailwindMerge({...C,extend:{theme:C.theme,classGroups:C.classGroups,conflictingClassGroupModifiers:C.conflictingClassGroupModifiers,conflictingClassGroups:C.conflictingClassGroups,...C.extend}})),_(U(E(e)))):E(e),Z=(e,l)=>{for(let t in l)e.hasOwnProperty(t)?e[t]=E(e[t],l[t]):e[t]=l[t];return e},oe=(e,l)=>{let{extend:t=null,slots:O={},variants:k={},compoundVariants:y=[],compoundSlots:V=[],defaultVariants:h={}}=e,d={...ce,...l},B=t!=null&&t.base?E(t.base,e==null?void 0:e.base):e==null?void 0:e.base,b=t!=null&&t.variants&&!g(t.variants)?T(k,t.variants):k,N=t!=null&&t.defaultVariants&&!g(t.defaultVariants)?{...t.defaultVariants,...h}:h;!g(d.twMergeConfig)&&!X(d.twMergeConfig,C)&&(W=!0,C=d.twMergeConfig);let $=g(t==null?void 0:t.slots),x=g(O)?{}:{base:E(e==null?void 0:e.base,$&&(t==null?void 0:t.base)),...O},M=$?x:Z({...t==null?void 0:t.slots},g(x)?{base:e==null?void 0:e.base}:x),j=g(t==null?void 0:t.compoundVariants)?y:J(t==null?void 0:t.compoundVariants,y),v=f=>{if(g(b)&&g(O)&&$)return S(B,f==null?void 0:f.class,f==null?void 0:f.className)(d);if(j&&!Array.isArray(j))throw new TypeError(`The "compoundVariants" prop must be an array. Received: ${typeof j}`);if(V&&!Array.isArray(V))throw new TypeError(`The "compoundSlots" prop must be an array. Received: ${typeof V}`);let P=(r,a,n=[],i)=>{let s=n;if(typeof a=="string")s=s.concat(R(a).split(" ").map(o=>`${r}:${o}`));else if(Array.isArray(a))s=s.concat(a.reduce((o,c)=>o.concat(`${r}:${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 m=R(c);s[i]?s[i]=s[i].concat(m.split(" ").map(u=>`${r}:${u}`)):s[i]=m.split(" ").map(u=>`${r}:${u}`);}else Array.isArray(c)&&c.length>0&&(s[i]=c.reduce((m,u)=>m.concat(`${r}:${u}`),[]));}}return s},z=(r,a=b,n=null,i=null)=>{var L;let s=a[r];if(!s||g(s))return null;let o=(L=i==null?void 0:i[r])!=null?L:f==null?void 0:f[r];if(o===null)return null;let c=q(o),m=Array.isArray(d.responsiveVariants)&&d.responsiveVariants.length>0||d.responsiveVariants===!0,u=N==null?void 0:N[r],A=[];if(typeof c=="object"&&m)for(let[G,Q]of Object.entries(c)){let ae=s[Q];if(G==="initial"){u=Q;continue}Array.isArray(d.responsiveVariants)&&!d.responsiveVariants.includes(G)||(A=P(G,ae,A,n));}let p=c!=null&&typeof c!="object"?c:q(u),w=s[p||"false"];return typeof A=="object"&&typeof n=="string"&&A[n]?Z(A,w):A.length>0?(A.push(w),n==="base"?A.join(" "):A):w},ee=()=>b?Object.keys(b).map(r=>z(r,b)):null,te=(r,a)=>{if(!b||typeof b!="object")return null;let n=new Array;for(let i in b){let s=z(i,b,r,a),o=r==="base"&&typeof s=="string"?s:s&&s[r];o&&(n[n.length]=o);}return n},D={};for(let r in f)f[r]!==void 0&&(D[r]=f[r]);let H=(r,a)=>{var i;let n=typeof(f==null?void 0:f[r])=="object"?{[r]:(i=f[r])==null?void 0:i.initial}:{};return {...N,...D,...n,...a}},I=(r=[],a)=>{let n=[];for(let{class:i,className:s,...o}of r){let c=!0;for(let[m,u]of Object.entries(o)){let A=H(m,a)[m];if(Array.isArray(u)){if(!u.includes(A)){c=!1;break}}else {let p=w=>w==null||w===!1;if(p(u)&&p(A))continue;if(A!==u){c=!1;break}}}c&&(i&&n.push(i),s&&n.push(s));}return n},ne=r=>{let a=I(j,r);if(!Array.isArray(a))return a;let n={};for(let i of a)if(typeof i=="string"&&(n.base=S(n.base,i)(d)),typeof i=="object")for(let[s,o]of Object.entries(i))n[s]=S(n[s],o)(d);return n},re=r=>{if(V.length<1)return null;let a={};for(let{slots:n=[],class:i,className:s,...o}of V){if(!g(o)){let c=!0;for(let m of Object.keys(o)){let u=H(m,r)[m];if(u===void 0||(Array.isArray(o[m])?!o[m].includes(u):o[m]!==u)){c=!1;break}}if(!c)continue}for(let c of n)a[c]=a[c]||[],a[c].push([i,s]);}return a};if(!g(O)||!$){let r={};if(typeof M=="object"&&!g(M))for(let a of Object.keys(M))r[a]=n=>{var i,s;return S(M[a],te(a,n),((i=ne(n))!=null?i:[])[a],((s=re(n))!=null?s:[])[a],n==null?void 0:n.class,n==null?void 0:n.className)(d)};return r}return S(B,ee(),I(j),f==null?void 0:f.class,f==null?void 0:f.className)(d)},K=()=>{if(!(!b||typeof b!="object"))return Object.keys(b)};return v.variantKeys=K(),v.extend=t,v.base=B,v.slots=M,v.variants=b,v.defaultVariants=N,v.compoundSlots=V,v.compoundVariants=j,v},ye=e=>(l,t)=>oe(l,t?T(e,t):e);
|
|
6
6
|
|
|
7
|
-
exports.cn =
|
|
8
|
-
exports.cnBase =
|
|
7
|
+
exports.cn = S;
|
|
8
|
+
exports.cnBase = E;
|
|
9
9
|
exports.createTV = ye;
|
|
10
10
|
exports.defaultConfig = ce;
|
|
11
11
|
exports.tv = oe;
|
|
12
|
-
exports.voidEmpty =
|
|
12
|
+
exports.voidEmpty = _;
|
package/dist/index.d.ts
CHANGED
|
@@ -153,23 +153,23 @@ export type TVProps<
|
|
|
153
153
|
: StringToBoolean<keyof V[K]> | undefined;
|
|
154
154
|
} & ClassProp<ClassValue>
|
|
155
155
|
: V extends undefined
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
156
|
+
? {
|
|
157
|
+
[K in keyof EV]?: isTrueOrArray<C["responsiveVariants"]> extends true
|
|
158
|
+
? StringToBoolean<keyof EV[K]> | TVScreenPropsValue<EV, ES, K, C> | undefined
|
|
159
|
+
: StringToBoolean<keyof EV[K]> | undefined;
|
|
160
|
+
} & ClassProp<ClassValue>
|
|
161
|
+
: {
|
|
162
|
+
[K in keyof V | keyof EV]?: isTrueOrArray<C["responsiveVariants"]> extends true
|
|
163
|
+
?
|
|
164
|
+
| (K extends keyof V ? StringToBoolean<keyof V[K]> : never)
|
|
165
|
+
| (K extends keyof EV ? StringToBoolean<keyof EV[K]> : never)
|
|
166
|
+
| TVScreenPropsValue<EV & V, S, K, C>
|
|
167
|
+
| undefined
|
|
168
|
+
:
|
|
169
|
+
| (K extends keyof V ? StringToBoolean<keyof V[K]> : never)
|
|
170
|
+
| (K extends keyof EV ? StringToBoolean<keyof EV[K]> : never)
|
|
171
|
+
| undefined;
|
|
172
|
+
} & ClassProp<ClassValue>;
|
|
173
173
|
|
|
174
174
|
export type TVVariantKeys<V extends TVVariants<S>, S extends TVSlots> = V extends Object
|
|
175
175
|
? Array<keyof V>
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { e, b, g, c, f, a, h } from './chunk-
|
|
1
|
+
import { e, b, g, c, f, a, h } from './chunk-I2QGXAA3.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},x=s=>s||void 0,N=(...s)=>x(e(s).filter(Boolean).join(" ")),R=null,v={},q=!1,M=(...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}})),x(R(N(s)))):N(s),_=(s,b)=>{for(let e in b)s.hasOwnProperty(e)?s[e]=N(s[e],b[e]):s[e]=b[e];return s},ce=(s,b$1)=>{let{extend:e=null,slots:O={},variants:U={},compoundVariants:W=[],compoundSlots:C=[],defaultVariants:z={}}=s,m={...ie,...b$1},k=e!=null&&e.base?N(e.base,s==null?void 0:s.base):s==null?void 0:s.base,g$1=e!=null&&e.variants&&!b(e.variants)?g(U,e.variants):U,w=e!=null&&e.defaultVariants&&!b(e.defaultVariants)?{...e.defaultVariants,...z}:z;!b(m.twMergeConfig)&&!c(m.twMergeConfig,v)&&(q=!0,v=m.twMergeConfig);let S=b(e==null?void 0:e.slots),T=b(O)?{}:{base:N(s==null?void 0:s.base,S&&(e==null?void 0:e.base)),...O},j=S?T:_({...e==null?void 0:e.slots},b(T)?{base:s==null?void 0:s.base}:T),h$1=b(e==null?void 0:e.compoundVariants)?W:f(e==null?void 0:e.compoundVariants,W),V=l=>{if(b(g$1)&&b(O)&&S)return M(k,l==null?void 0:l.class,l==null?void 0:l.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 P=(a,n,t=[],i)=>{let r=t;if(typeof n=="string")r=r.concat(h(n).split(" ").map(o=>`${a}:${o}`));else if(Array.isArray(n))r=r.concat(n.reduce((o,c)=>o.concat(`${a}:${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 u=h(c);r[i]?r[i]=r[i].concat(u.split(" ").map(f=>`${a}:${f}`)):r[i]=u.split(" ").map(f=>`${a}:${f}`);}else Array.isArray(c)&&c.length>0&&(r[i]=c.reduce((u,f)=>u.concat(`${a}:${f}`),[]));}}return r},D=(a$1,n=g$1,t=null,i=null)=>{var L;let r=n[a$1];if(!r||b(r))return null;let o=(L=i==null?void 0:i[a$1])!=null?L:l==null?void 0:l[a$1];if(o===null)return null;let c=a(o),u=Array.isArray(m.responsiveVariants)&&m.responsiveVariants.length>0||m.responsiveVariants===!0,f=w==null?void 0:w[a$1],d=[];if(typeof c=="object"&&u)for(let[E,Q]of Object.entries(c)){let ne=r[Q];if(E==="initial"){f=Q;continue}Array.isArray(m.responsiveVariants)&&!m.responsiveVariants.includes(E)||(d=P(E,ne,d,t));}let $=c!=null&&typeof c!="object"?c:a(f),A=r[$||"false"];return typeof d=="object"&&typeof t=="string"&&d[t]?_(d,A):d.length>0?(d.push(A),t==="base"?d.join(" "):d):A},p=()=>g$1?Object.keys(g$1).map(a=>D(a,g$1)):null,ee=(a,n)=>{if(!g$1||typeof g$1!="object")return null;let t=new Array;for(let i in g$1){let r=D(i,g$1,a,n),o=a==="base"&&typeof r=="string"?r:r&&r[a];o&&(t[t.length]=o);}return t},H={};for(let a in l)l[a]!==void 0&&(H[a]=l[a]);let I=(a,n)=>{var i;let t=typeof(l==null?void 0:l[a])=="object"?{[a]:(i=l[a])==null?void 0:i.initial}:{};return {...w,...H,...t,...n}},J=(a=[],n)=>{let t=[];for(let{class:i,className:r,...o}of a){let c=!0;for(let[u,f]of Object.entries(o)){let d=I(u,n)[u];if(Array.isArray(f)){if(!f.includes(d)){c=!1;break}}else {let $=A=>A==null||A===!1;if($(f)&&$(d))continue;if(d!==f){c=!1;break}}}c&&(i&&t.push(i),r&&t.push(r));}return t},te=a=>{let n=J(h$1,a);if(!Array.isArray(n))return n;let t={};for(let i of n)if(typeof i=="string"&&(t.base=M(t.base,i)(m)),typeof i=="object")for(let[r,o]of Object.entries(i))t[r]=M(t[r],o)(m);return t},ae=a=>{if(C.length<1)return null;let n={};for(let{slots:t=[],class:i,className:r,...o}of C){if(!b(o)){let c=!0;for(let u of Object.keys(o)){let f=I(u,a)[u];if(f===void 0||(Array.isArray(o[u])?!o[u].includes(f):o[u]!==f)){c=!1;break}}if(!c)continue}for(let c of t)n[c]=n[c]||[],n[c].push([i,r]);}return n};if(!b(O)||!S){let a={};if(typeof j=="object"&&!b(j))for(let n of Object.keys(j))a[n]=t=>{var i,r;return M(j[n],ee(n,t),((i=te(t))!=null?i:[])[n],((r=ae(t))!=null?r:[])[n],t==null?void 0:t.class,t==null?void 0:t.className)(m)};return a}return M(k,p(),J(h$1),l==null?void 0:l.class,l==null?void 0:l.className)(m)},K=()=>{if(!(!g$1||typeof g$1!="object"))return Object.keys(g$1)};return V.variantKeys=K(),V.extend=e,V.base=k,V.slots=j,V.variants=g$1,V.defaultVariants=w,V.compoundSlots=C,V.compoundVariants=h$1,V},fe=s=>(b,e)=>ce(b,e?g(s,e):s);
|
|
5
5
|
|
|
6
|
-
export {
|
|
6
|
+
export { M as cn, N as cnBase, fe as createTV, ie as defaultConfig, ce as tv, x as voidEmpty };
|
package/dist/transformer.cjs
CHANGED
|
@@ -11,7 +11,7 @@ var w__default = /*#__PURE__*/_interopDefault(w);
|
|
|
11
11
|
var O__default = /*#__PURE__*/_interopDefault(O);
|
|
12
12
|
|
|
13
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
|
-
`,
|
|
14
|
+
`,g=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/heroui-inc/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=`
|
|
@@ -20,7 +20,7 @@ var S=t=>{w__default.default.writeFileSync(O__default.default.join(__dirname,"ge
|
|
|
20
20
|
`,m=`
|
|
21
21
|
|
|
22
22
|
Tailwind Variants Transformed Content End */
|
|
23
|
-
`;return t.concat(c+i+m)}catch(e){return A("Tailwind Variants Transform Failed",e),t}},
|
|
23
|
+
`;return t.concat(c+i+m)}catch(e){return A("Tailwind Variants Transform Failed",e),t}},v=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(g(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=v(n.content.files).map(c=>[c,e]);return n.content.transform=Object.fromEntries(i),n}if(y(s)){let i=v(n.content.files).map(c=>[c,h(e,s)]);return n.content.transform=Object.fromEntries(i),n}if(d(s)){let i=v(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
25
|
exports.tvTransformer = D;
|
|
26
26
|
exports.withTV = G;
|
package/dist/transformer.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type {DefaultTheme} from "tailwindcss/types/generated/default-theme";
|
|
|
4
4
|
export type DefaultScreens = keyof DefaultTheme["screens"];
|
|
5
5
|
|
|
6
6
|
export type WithTV = {
|
|
7
|
-
<C extends Config>(tvConfig: C): C;
|
|
7
|
+
<C extends Config>(tvConfig: C, config?: TVTransformerConfig): C;
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
export declare const withTV: WithTV;
|
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 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/
|
|
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/heroui-inc/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}`);},y=(...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
5
|
const [options, config] = [${t.toString()}];
|
|
6
6
|
return {options, config};
|
|
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,
|
|
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,x=(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 x(e,t);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 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 n.concat(c+i+m)}catch(e){return V("Tailwind Variants Transform Failed",e),n}},
|
|
13
|
+
`;return n.concat(c+i+m)}catch(e){return V("Tailwind Variants Transform Failed",e),n}},h=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=h(t.content.files).map(c=>[c,e]);return t.content.transform=Object.fromEntries(i),t}if(g(s)){let i=h(t.content.files).map(c=>[c,y(e,s)]);return t.content.transform=Object.fromEntries(i),t}if(d(s)){let i=h(t.content.files).map(c=>g(s[c])?[c,y(e,s[c])]:[c,e]);return t.content.transform=Object.fromEntries(i),t}return t};
|
|
14
14
|
|
|
15
15
|
export { P as tvTransformer, D as withTV };
|
package/dist/utils.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var l=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,u=e=>!e||typeof e!="object"||Object.keys(e).length===0,x=(e,o)=>JSON.stringify(e)===JSON.stringify(o),A=e=>typeof e=="boolean";function i(e,o){e.forEach(function(r){Array.isArray(r)?i(r,o):o.push(r);});}function y(e){let o=[];return i(e,o),o}var a=(...e)=>y(e).filter(Boolean),p=(e,o)=>{let r={},c=Object.keys(e),f=Object.keys(o);for(let t of c)if(f.includes(t)){let s=e[t],n=o[t];typeof s=="object"&&typeof n=="object"?r[t]=p(s,n):
|
|
3
|
+
var l=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,u=e=>!e||typeof e!="object"||Object.keys(e).length===0,x=(e,o)=>JSON.stringify(e)===JSON.stringify(o),A=e=>typeof e=="boolean";function i(e,o){e.forEach(function(r){Array.isArray(r)?i(r,o):o.push(r);});}function y(e){let o=[];return i(e,o),o}var a=(...e)=>y(e).filter(Boolean),p=(e,o)=>{let r={},c=Object.keys(e),f=Object.keys(o);for(let t of c)if(f.includes(t)){let s=e[t],n=o[t];Array.isArray(s)||Array.isArray(n)?r[t]=a(n,s):typeof s=="object"&&typeof n=="object"?r[t]=p(s,n):r[t]=n+" "+s;}else r[t]=e[t];for(let t of f)c.includes(t)||(r[t]=o[t]);return r},g=e=>!e||typeof e!="string"?e:e.replace(/\s+/g," ").trim();
|
|
4
4
|
|
|
5
5
|
exports.falsyToString = l;
|
|
6
6
|
exports.flatArray = y;
|
package/dist/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { a as falsyToString, e as flatArray, f as flatMergeArrays, d as isBoolean, b as isEmptyObject, c as isEqual, g as mergeObjects, h as removeExtraSpaces } from './chunk-
|
|
1
|
+
export { a as falsyToString, e as flatArray, f as flatMergeArrays, d as isBoolean, b as isEmptyObject, c as isEqual, g as mergeObjects, h as removeExtraSpaces } from './chunk-I2QGXAA3.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tailwind-variants",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "🦄 Tailwindcss first-class variant API",
|
|
5
5
|
"author": "Junior Garcia <jrgarciadev@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
},
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
|
-
"url": "https://github.com/
|
|
12
|
+
"url": "https://github.com/heroui-inc/tailwind-variants"
|
|
13
13
|
},
|
|
14
14
|
"bugs": {
|
|
15
|
-
"url": "https://github.com/
|
|
15
|
+
"url": "https://github.com/heroui-inc/tailwind-variants/issues"
|
|
16
16
|
},
|
|
17
17
|
"type": "module",
|
|
18
18
|
"main": "dist/index.cjs",
|
|
@@ -31,49 +31,48 @@
|
|
|
31
31
|
"prepack": "clean-package",
|
|
32
32
|
"benchmark": "node benchmark.js",
|
|
33
33
|
"postpack": "clean-package restore",
|
|
34
|
-
"lint": "eslint
|
|
35
|
-
"lint:fix": "eslint --fix
|
|
34
|
+
"lint": "eslint . src/**/*.{js,ts}",
|
|
35
|
+
"lint:fix": "eslint --fix . src/**/*.{js,ts}",
|
|
36
36
|
"test": "jest --verbose",
|
|
37
37
|
"test:watch": "jest --watch --no-verbose"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"tailwind-merge": "
|
|
40
|
+
"tailwind-merge": "2.5.4"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@commitlint/cli": "
|
|
44
|
-
"@commitlint/config-conventional": "
|
|
45
|
-
"@jest/globals": "
|
|
46
|
-
"@swc-node/jest": "
|
|
47
|
-
"@swc/cli": "0.
|
|
48
|
-
"@swc/core": "1.2
|
|
49
|
-
"@swc/helpers": "
|
|
50
|
-
"@
|
|
51
|
-
"@types/
|
|
52
|
-
"@
|
|
53
|
-
"@typescript-eslint/
|
|
43
|
+
"@commitlint/cli": "19.5.0",
|
|
44
|
+
"@commitlint/config-conventional": "19.5.0",
|
|
45
|
+
"@jest/globals": "29.7.0",
|
|
46
|
+
"@swc-node/jest": "1.8.12",
|
|
47
|
+
"@swc/cli": "0.5.0",
|
|
48
|
+
"@swc/core": "1.9.2",
|
|
49
|
+
"@swc/helpers": "0.5.15",
|
|
50
|
+
"@swc/jest": "0.2.37",
|
|
51
|
+
"@types/jest": "29.5.14",
|
|
52
|
+
"@types/node": "22.9.0",
|
|
53
|
+
"@typescript-eslint/eslint-plugin": "8.14.0",
|
|
54
|
+
"@typescript-eslint/parser": "8.14.0",
|
|
54
55
|
"benchmark": "2.1.4",
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"eslint
|
|
58
|
-
"eslint-config-
|
|
59
|
-
"eslint-
|
|
60
|
-
"eslint-
|
|
61
|
-
"eslint-plugin-import": "
|
|
62
|
-
"eslint-plugin-jest": "
|
|
63
|
-
"eslint-plugin-node": "
|
|
64
|
-
"eslint-plugin-prettier": "
|
|
65
|
-
"eslint-plugin-promise": "
|
|
66
|
-
"expect": "
|
|
67
|
-
"jest": "
|
|
68
|
-
"prettier": "
|
|
69
|
-
"prettier-eslint": "
|
|
70
|
-
"prettier-eslint-cli": "
|
|
71
|
-
"tailwindcss": "
|
|
72
|
-
"ts-node": "
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"typescript": "5.1.3",
|
|
76
|
-
"webpack": "^5.53.0"
|
|
56
|
+
"class-variance-authority": "0.7.0",
|
|
57
|
+
"clean-package": "2.2.0",
|
|
58
|
+
"eslint": "8.57.0",
|
|
59
|
+
"eslint-config-prettier": "9.1.0",
|
|
60
|
+
"eslint-config-ts-lambdas": "1.2.3",
|
|
61
|
+
"eslint-import-resolver-typescript": "3.6.3",
|
|
62
|
+
"eslint-plugin-import": "2.31.0",
|
|
63
|
+
"eslint-plugin-jest": "28.9.0",
|
|
64
|
+
"eslint-plugin-node": "11.1.0",
|
|
65
|
+
"eslint-plugin-prettier": "5.2.1",
|
|
66
|
+
"eslint-plugin-promise": "7.1.0",
|
|
67
|
+
"expect": "29.7.0",
|
|
68
|
+
"jest": "29.7.0",
|
|
69
|
+
"prettier": "3.3.3",
|
|
70
|
+
"prettier-eslint": "16.3.0",
|
|
71
|
+
"prettier-eslint-cli": "8.0.1",
|
|
72
|
+
"tailwindcss": "3.4.14",
|
|
73
|
+
"ts-node": "10.9.2",
|
|
74
|
+
"tsup": "8.3.5",
|
|
75
|
+
"typescript": "5.6.3"
|
|
77
76
|
},
|
|
78
77
|
"peerDependencies": {
|
|
79
78
|
"tailwindcss": "*"
|