tailwind-variants 0.0.7 → 0.0.9

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/index.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
  var classVarianceAuthority = require('class-variance-authority');
4
4
  var tailwindMerge = require('tailwind-merge');
5
5
 
6
- var O=e=>{var i;return (i=e==null?void 0:e.filter)==null?void 0:i.call(e,n=>n&&String(n).match(/^[\w\s]*$/))},o=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,D=e=>e&&Object.keys(e).length>0,f=(...e)=>(i={})=>i.twMerge?(D(i.twMergeConfig)?tailwindMerge.extendTailwindMerge(i.twMergeConfig):tailwindMerge.twMerge)(classVarianceAuthority.cx(e)):classVarianceAuthority.cx(e),S=e=>Array.from(new Set(e));var K=(e,i={twMerge:!0,twMergeConfig:{}})=>n=>{var j,V;if((e==null?void 0:e.variants)==null)return f(e==null?void 0:e.base,n==null?void 0:n.class,n==null?void 0:n.className)(i);let{slots:d=[],variants:g,defaultVariants:b}=e,w=Array.isArray(d)?S(["base",...d]):[],x=t=>{let r=n==null?void 0:n[t],a=b==null?void 0:b[t];if(r===null)return null;let u=o(r)||o(a);return g[t][u]},h=Object.keys(g).map(x),C=t=>Object.keys(g).map(r=>{let a=x(r);return !a||typeof a!="object"?null:a[t]}),M=n&&Object.entries(n).reduce((t,[r,a])=>(a===void 0||(t[r]=a),t),{}),A=(j=e==null?void 0:e.compoundVariants)==null?void 0:j.reduce((t,{class:r,className:a,...u})=>Object.entries(u).every(([m,c])=>Array.isArray(c)?c.includes({...b,...M}[m]):{...b,...M}[m]===c)?[...t,r,a]:t,[]),B=()=>{let t=O(A);return Array.isArray(t)?t.reduce((r,a)=>(typeof a=="string"&&(r.base=f(r.base,a)(i)),typeof a=="object"&&Object.entries(a).forEach(([u,m])=>{r[u]=f(r[u],m)(i);}),r),{}):t};if(w.length>1){let t=C("base"),r=(V=B())!=null?V:[];return {...w.reduce((u,m)=>(u[m]=c=>f(m==="base"?[e==null?void 0:e.base,t]:[],C(m),r==null?void 0:r[m],c==null?void 0:c.class,c==null?void 0:c.className)(i),u),{})}}return f(e==null?void 0:e.base,h,A,n==null?void 0:n.class,n==null?void 0:n.className)(i)};
6
+ var k=/[\W_]+/g,A=e=>{var u;return !e||!Array.isArray(e)?null:(u=e.filter)==null?void 0:u.call(e,t=>t&&!String(t).match(k)).map(String)},j=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,m=e=>e&&Object.keys(e).length>0,g=(...e)=>(u={})=>u.twMerge?(m(u.twMergeConfig)?tailwindMerge.extendTailwindMerge(u.twMergeConfig):tailwindMerge.twMerge)(classVarianceAuthority.cx(e)):classVarianceAuthority.cx(e);var R=(e,u={twMerge:!0,twMergeConfig:{}})=>t=>{var M,C;let{slots:d={},variants:b,defaultVariants:l}=e;if(b==null&&!m(d))return g(e==null?void 0:e.base,t==null?void 0:t.class,t==null?void 0:t.className)(u);let y={base:e==null?void 0:e.base,...d},x=r=>{let a=t==null?void 0:t[r],n=l==null?void 0:l[r];if(a===null)return null;let c=j(a)||j(n);return b[r][c]},V=b?Object.keys(b).map(x):null,N=r=>!b||typeof b!="object"?null:Object.keys(b).map(a=>{let n=x(a);return r==="base"&&typeof n=="string"?n:!n||typeof n!="object"?null:n[r]}),s=t&&Object.entries(t).reduce((r,[a,n])=>(n===void 0||(r[a]=n),r),{}),w=(M=e==null?void 0:e.compoundVariants)==null?void 0:M.reduce((r,{class:a,className:n,...c})=>Object.entries(c).every(([f,i])=>Array.isArray(i)?i.includes({...l,...s}[f]):{...l,...s}[f]===i)?[...r,a,n]:r,[]),S=()=>{let r=A(w);return Array.isArray(r)?r.reduce((a,n)=>(typeof n=="string"&&(a.base=g(a.base,n)(u)),typeof n=="object"&&Object.entries(n).forEach(([c,f])=>{a[c]=g(a[c],f)(u);}),a),{}):r};if(m(d)){let r=(C=S())!=null?C:[];return {...typeof y=="object"&&m(y)?Object.keys(y).reduce((n,c)=>(n[c]=f=>g(c==="base"?e==null?void 0:e.base:[],y[c],N(c),r==null?void 0:r[c],f==null?void 0:f.class,f==null?void 0:f.className)(u),n),{}):{}}}return g(e==null?void 0:e.base,V,w,t==null?void 0:t.class,t==null?void 0:t.className)(u)};
7
7
 
8
- exports.tv = K;
8
+ exports.tv = R;
package/dist/index.d.ts CHANGED
@@ -1,60 +1,61 @@
1
1
  import {TVConfig} from "./config";
2
- import {
3
- ClassValue,
4
- ClassProp,
5
- OmitUndefined,
6
- StringToBoolean,
7
- StringArrayToFunctions,
8
- AddItemToArray,
9
- } from "./utils";
10
-
11
- type TVDefaultSlot = "";
2
+ import {ClassValue, ClassProp, OmitUndefined, StringToBoolean} from "./utils";
3
+
12
4
  type TVBaseName = "base";
13
5
 
14
- export declare type TVVariants<S extends string[]> = {
6
+ type TVSlots = Record<string, ClassValue> | undefined;
7
+
8
+ type SlotsClassValue<S extends TVSlots> = {
9
+ [K in keyof S]?: ClassValue;
10
+ };
11
+
12
+ export type TVVariants<S extends TVSlots> = {
15
13
  [key: string]: {
16
- [key: string]: S extends TVDefaultSlot
17
- ? ClassValue
18
- : {[P in S[number]]?: ClassValue} | ClassValue;
14
+ [key: string]: S extends TVSlots ? SlotsClassValue<S> | ClassValue : ClassValue;
19
15
  };
20
16
  };
21
17
 
22
- export declare type TVCompoundVariants<V extends TVVariants<S>, S extends string[]> = Array<
18
+ export type TVCompoundVariants<V extends TVVariants<S>, S extends TVSlots> = Array<
23
19
  {
24
- [K in keyof V]?: StringToBoolean<keyof V[K]>;
25
- } & ClassProp<{[K in S[number]]?: ClassValue} | ClassValue>
20
+ [K in keyof V]?: StringToBoolean<keyof V[K]> | StringToBoolean<keyof V[K]>[];
21
+ } & ClassProp<SlotsClassValue<S> | ClassValue>
26
22
  >;
27
23
 
28
- export declare type TVDefaultVariants<V extends TVVariants<S>, S extends string[]> = {
24
+ export type TVDefaultVariants<V extends TVVariants<S>, S extends TVSlots> = {
29
25
  [K in keyof V]?: StringToBoolean<keyof V[K]>;
30
26
  };
31
27
 
32
- export declare type TVProps<V extends TVVariants<S>, S extends string[]> = {
28
+ export type TVProps<V extends TVVariants<S>, S extends TVSlots> = {
33
29
  [K in keyof V]?: StringToBoolean<keyof V[K]>;
34
30
  } & ClassProp;
35
31
 
36
- export declare type TVReturnType<V extends TVVariants<S>, S extends string> = (
37
- props?: TVProps<V, S[]>,
38
- ) => S extends TVDefaultSlot
32
+ export type TVReturnType<V extends TVVariants<S>, S extends TVSlots, B extends ClassValue> = (
33
+ props?: TVProps<V, S>,
34
+ ) => S extends undefined
39
35
  ? string
40
- : StringArrayToFunctions<AddItemToArray<S[], TVBaseName>, ClassProp>;
41
-
42
- export declare function tv<
43
- V extends TVVariants<S[]>,
44
- CV extends TVCompoundVariants<V, S[]>,
45
- DV extends TVDefaultVariants<V, S[]>,
36
+ : {
37
+ [K in B extends undefined ? keyof S : keyof S | TVBaseName]: (
38
+ slotProps?: ClassProp,
39
+ ) => string;
40
+ };
41
+
42
+ export function tv<
43
+ DV extends TVDefaultVariants<V, S>,
44
+ CV extends TVCompoundVariants<V, S>,
46
45
  C extends TVConfig,
47
- S extends string = TVDefaultSlot,
46
+ V extends TVVariants<S>,
47
+ B extends ClassValue = undefined,
48
+ S extends TVSlots = undefined,
48
49
  >(
49
50
  options: {
50
- base?: ClassValue;
51
- slots?: S[];
51
+ base?: B;
52
+ slots?: S;
52
53
  variants?: V;
53
54
  compoundVariants?: CV;
54
55
  defaultVariants?: DV;
55
56
  },
56
57
  config?: C,
57
- ): TVReturnType<V, S>;
58
+ ): TVReturnType<V, S, B>;
58
59
 
59
60
  export type VariantProps<Component extends (...args: any) => any> = Omit<
60
61
  OmitUndefined<Parameters<Component>[0]>,
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { cx } from 'class-variance-authority';
2
2
  import { extendTailwindMerge, twMerge } from 'tailwind-merge';
3
3
 
4
- var O=e=>{var i;return (i=e==null?void 0:e.filter)==null?void 0:i.call(e,n=>n&&String(n).match(/^[\w\s]*$/))},o=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,D=e=>e&&Object.keys(e).length>0,f=(...e)=>(i={})=>i.twMerge?(D(i.twMergeConfig)?extendTailwindMerge(i.twMergeConfig):twMerge)(cx(e)):cx(e),S=e=>Array.from(new Set(e));var K=(e,i={twMerge:!0,twMergeConfig:{}})=>n=>{var j,V;if((e==null?void 0:e.variants)==null)return f(e==null?void 0:e.base,n==null?void 0:n.class,n==null?void 0:n.className)(i);let{slots:d=[],variants:g,defaultVariants:b}=e,w=Array.isArray(d)?S(["base",...d]):[],x=t=>{let r=n==null?void 0:n[t],a=b==null?void 0:b[t];if(r===null)return null;let u=o(r)||o(a);return g[t][u]},h=Object.keys(g).map(x),C=t=>Object.keys(g).map(r=>{let a=x(r);return !a||typeof a!="object"?null:a[t]}),M=n&&Object.entries(n).reduce((t,[r,a])=>(a===void 0||(t[r]=a),t),{}),A=(j=e==null?void 0:e.compoundVariants)==null?void 0:j.reduce((t,{class:r,className:a,...u})=>Object.entries(u).every(([m,c])=>Array.isArray(c)?c.includes({...b,...M}[m]):{...b,...M}[m]===c)?[...t,r,a]:t,[]),B=()=>{let t=O(A);return Array.isArray(t)?t.reduce((r,a)=>(typeof a=="string"&&(r.base=f(r.base,a)(i)),typeof a=="object"&&Object.entries(a).forEach(([u,m])=>{r[u]=f(r[u],m)(i);}),r),{}):t};if(w.length>1){let t=C("base"),r=(V=B())!=null?V:[];return {...w.reduce((u,m)=>(u[m]=c=>f(m==="base"?[e==null?void 0:e.base,t]:[],C(m),r==null?void 0:r[m],c==null?void 0:c.class,c==null?void 0:c.className)(i),u),{})}}return f(e==null?void 0:e.base,h,A,n==null?void 0:n.class,n==null?void 0:n.className)(i)};
4
+ var k=/[\W_]+/g,A=e=>{var u;return !e||!Array.isArray(e)?null:(u=e.filter)==null?void 0:u.call(e,t=>t&&!String(t).match(k)).map(String)},j=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,m=e=>e&&Object.keys(e).length>0,g=(...e)=>(u={})=>u.twMerge?(m(u.twMergeConfig)?extendTailwindMerge(u.twMergeConfig):twMerge)(cx(e)):cx(e);var R=(e,u={twMerge:!0,twMergeConfig:{}})=>t=>{var M,C;let{slots:d={},variants:b,defaultVariants:l}=e;if(b==null&&!m(d))return g(e==null?void 0:e.base,t==null?void 0:t.class,t==null?void 0:t.className)(u);let y={base:e==null?void 0:e.base,...d},x=r=>{let a=t==null?void 0:t[r],n=l==null?void 0:l[r];if(a===null)return null;let c=j(a)||j(n);return b[r][c]},V=b?Object.keys(b).map(x):null,N=r=>!b||typeof b!="object"?null:Object.keys(b).map(a=>{let n=x(a);return r==="base"&&typeof n=="string"?n:!n||typeof n!="object"?null:n[r]}),s=t&&Object.entries(t).reduce((r,[a,n])=>(n===void 0||(r[a]=n),r),{}),w=(M=e==null?void 0:e.compoundVariants)==null?void 0:M.reduce((r,{class:a,className:n,...c})=>Object.entries(c).every(([f,i])=>Array.isArray(i)?i.includes({...l,...s}[f]):{...l,...s}[f]===i)?[...r,a,n]:r,[]),S=()=>{let r=A(w);return Array.isArray(r)?r.reduce((a,n)=>(typeof n=="string"&&(a.base=g(a.base,n)(u)),typeof n=="object"&&Object.entries(n).forEach(([c,f])=>{a[c]=g(a[c],f)(u);}),a),{}):r};if(m(d)){let r=(C=S())!=null?C:[];return {...typeof y=="object"&&m(y)?Object.keys(y).reduce((n,c)=>(n[c]=f=>g(c==="base"?e==null?void 0:e.base:[],y[c],N(c),r==null?void 0:r[c],f==null?void 0:f.class,f==null?void 0:f.className)(u),n),{}):{}}}return g(e==null?void 0:e.base,V,w,t==null?void 0:t.class,t==null?void 0:t.className)(u)};
5
5
 
6
- export { K as tv };
6
+ export { R as tv };
package/dist/utils.d.ts CHANGED
@@ -6,6 +6,8 @@ export declare const cleanArray: (array: string[]) => string[] | undefined;
6
6
 
7
7
  export declare const falsyToString: <T extends unknown>(value: T) => string | T;
8
8
 
9
+ export declare const isNotEmptyObject: (obj: object) => boolean;
10
+
9
11
  export declare const cx: <T extends CxOptions>(...classes: T) => (config: TVConfig) => CxReturn;
10
12
 
11
13
  export declare const removeDuplicates: <T extends unknown>(array: T[]) => T[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tailwind-variants",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "🦄 Tailwindcss first-class variant API",
5
5
  "author": "Junior Garcia <jrgarciadev@gmail.com>",
6
6
  "license": "MIT",
@@ -61,6 +61,7 @@
61
61
  "prettier": "^2.2.1",
62
62
  "prettier-eslint": "^12.0.0",
63
63
  "prettier-eslint-cli": "^5.0.1",
64
+ "jest": "28.1.1",
64
65
  "ts-node": "^10.9.1",
65
66
  "tslib": "^2.4.1",
66
67
  "tsup": "6.4.0",