@yaredfall/class-variants 0.1.2 → 0.5.0-rc
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/LICENSE +21 -0
- package/build/chunk-6DFTYFKO.js +2 -0
- package/build/chunk-6DFTYFKO.js.map +1 -0
- package/build/chunk-6Y37KLAC.js +2 -0
- package/build/chunk-6Y37KLAC.js.map +1 -0
- package/build/chunk-BSA7R4NK.js +2 -0
- package/build/chunk-BSA7R4NK.js.map +1 -0
- package/build/chunk-FIET564E.js +2 -0
- package/build/chunk-FIET564E.js.map +1 -0
- package/build/chunk-IMTFPGTY.js +2 -0
- package/build/chunk-IMTFPGTY.js.map +1 -0
- package/build/chunk-RNIIXHL2.js +2 -0
- package/build/chunk-RNIIXHL2.js.map +1 -0
- package/build/cn.cjs +2 -0
- package/build/cn.cjs.map +1 -0
- package/build/cn.d.cts +11 -0
- package/build/cn.d.ts +11 -0
- package/build/cn.js +2 -0
- package/build/cn.js.map +1 -0
- package/build/compose.cjs +2 -0
- package/build/compose.cjs.map +1 -0
- package/build/compose.d.cts +20 -0
- package/build/compose.d.ts +20 -0
- package/build/compose.js +2 -0
- package/build/compose.js.map +1 -0
- package/build/cv-BWSJNbxE.d.cts +84 -0
- package/build/cv-WFZM6Df-.d.ts +84 -0
- package/build/cv.cjs +2 -0
- package/build/cv.cjs.map +1 -0
- package/build/cv.d.cts +4 -0
- package/build/cv.d.ts +4 -0
- package/build/cv.js +2 -0
- package/build/cv.js.map +1 -0
- package/build/define.cjs +2 -0
- package/build/define.cjs.map +1 -0
- package/build/define.d.cts +15 -0
- package/build/define.d.ts +15 -0
- package/build/define.js +2 -0
- package/build/define.js.map +1 -0
- package/build/index.cjs +1 -1
- package/build/index.cjs.map +1 -1
- package/build/index.d.cts +11 -1
- package/build/index.d.ts +11 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/tokens.cjs +2 -0
- package/build/tokens.cjs.map +1 -0
- package/build/tokens.d.cts +4 -0
- package/build/tokens.d.ts +4 -0
- package/build/tokens.js +2 -0
- package/build/tokens.js.map +1 -0
- package/build/utils.cjs +1 -1
- package/build/utils.cjs.map +1 -1
- package/build/utils.d.cts +2 -1
- package/build/utils.d.ts +2 -1
- package/build/utils.js +1 -1
- package/build/vue.cjs +1 -1
- package/build/vue.cjs.map +1 -1
- package/build/vue.d.cts +8 -5
- package/build/vue.d.ts +8 -5
- package/build/vue.js +1 -1
- package/build/vue.js.map +1 -1
- package/package.json +56 -57
- package/build/chunk-4SXOWWRN.js +0 -2
- package/build/chunk-4SXOWWRN.js.map +0 -1
- package/build/chunk-BV75ULQK.js +0 -2
- package/build/chunk-BV75ULQK.js.map +0 -1
- package/build/index-CFb2xboY.d.cts +0 -80
- package/build/index-CFb2xboY.d.ts +0 -80
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 YaredFall
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function a(e){return Object.keys(e)}function r(e){return Object.entries(e)}function i(e){return Object.fromEntries(r(e).map(([t,n])=>[t,a(n)]))}function V({variants:e,defaultVariants:t,requiredVariants:n}){return{variantKeys:a(e??{}),variantMap:i(e??{}),defaultVariants:t??{},requiredVariants:n??{}}}export{a,r as b,i as c,V as d};
|
|
2
|
+
//# sourceMappingURL=chunk-6DFTYFKO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts"],"sourcesContent":["// import type { DeepReadonly, DeepWritable, Prettify, UnionToIntersection } from \"ts-essentials\";\r\nimport type { Prettify } from \"ts-essentials\";\r\nimport type { BooleanStringToBoolean, CVConfig, CVVariant, CVVariantsSchema, CVPropsValue, CVVariantKey } from \"./cv\";\r\n\r\nexport function getKeys<O extends Record<string, unknown>>(obj: O) {\r\n return Object.keys(obj) as (keyof O)[];\r\n}\r\n\r\nexport type EntriesOf<O extends Record<string, unknown>> = { [K in keyof O]: [K, O[K]] };\r\nexport function getEntries<O extends Record<string, unknown>>(obj: O) {\r\n return Object.entries(obj) as EntriesOf<O>[keyof EntriesOf<O>][];\r\n}\r\n\r\nexport type VariantMap<V extends CVVariantsSchema> = {\r\n [K in keyof V]: BooleanStringToBoolean<keyof V[K] & CVVariantKey>[];\r\n};\r\nexport function getVariantMap<V extends CVVariantsSchema>(variants: V) {\r\n return Object.fromEntries(getEntries(variants).map(([cvKey, cvVal]) => [cvKey, getKeys(cvVal)])) as VariantMap<V>;\r\n}\r\n\r\nexport interface CVUtils<V extends CVVariantsSchema, R extends keyof V = never> {\r\n variantKeys: (keyof V & CVVariantKey)[];\r\n variantMap: Prettify<VariantMap<V>>;\r\n defaultVariants: Prettify<CVVariant<V>>;\r\n requiredVariants: Prettify<Record<R, boolean>>;\r\n}\r\nexport interface AnyCVUtils {\r\n variantKeys: string[];\r\n variantMap: Record<string, CVPropsValue[]>;\r\n defaultVariants: Record<string, CVPropsValue>;\r\n requiredVariants: Record<string, boolean>;\r\n}\r\n\r\nexport function cvUtils<V extends CVVariantsSchema, R extends keyof V>({\r\n variants,\r\n defaultVariants,\r\n requiredVariants,\r\n}: CVConfig<V, R>) {\r\n return {\r\n variantKeys: getKeys(variants ?? ({} as V)),\r\n variantMap: getVariantMap(variants ?? ({} as V)),\r\n defaultVariants: defaultVariants ?? {},\r\n requiredVariants: requiredVariants ?? {},\r\n } as CVUtils<V, R>;\r\n}\r\n\r\n// type Entries = [PropertyKey, unknown][] | DeepReadonly<[PropertyKey, unknown][]>;\r\n// type UnionFromPairs<TArr extends Entries> =\r\n// DeepWritable<TArr> extends (infer R)[]\r\n// ? R extends [infer key, infer val]\r\n// ? Record<key & PropertyKey, val>\r\n// : never\r\n// : never;\r\n\r\n// type MergeIntersectingObjects<O> = { [K in keyof O]: O[K] };\r\n\r\n// export function objectFromEntries<E extends Entries>(entries: E) {\r\n// return Object.fromEntries(entries) as Prettify<MergeIntersectingObjects<UnionToIntersection<UnionFromPairs<E>>>>;\r\n// }\r\n"],"mappings":"AAIO,SAASA,EAA2CC,EAAQ,CAC/D,OAAO,OAAO,KAAKA,CAAG,CAC1B,CAGO,SAASC,EAA8CD,EAAQ,CAClE,OAAO,OAAO,QAAQA,CAAG,CAC7B,CAKO,SAASE,EAA0CC,EAAa,CACnE,OAAO,OAAO,YAAYF,EAAWE,CAAQ,EAAE,IAAI,CAAC,CAACC,EAAOC,CAAK,IAAM,CAACD,EAAOL,EAAQM,CAAK,CAAC,CAAC,CAAC,CACnG,CAeO,SAASC,EAAuD,CACnE,SAAAH,EACA,gBAAAI,EACA,iBAAAC,CACJ,EAAmB,CACf,MAAO,CACH,YAAaT,EAAQI,GAAa,CAAC,CAAO,EAC1C,WAAYD,EAAcC,GAAa,CAAC,CAAO,EAC/C,gBAAiBI,GAAmB,CAAC,EACrC,iBAAkBC,GAAoB,CAAC,CAC3C,CACJ","names":["getKeys","obj","getEntries","getVariantMap","variants","cvKey","cvVal","cvUtils","defaultVariants","requiredVariants"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/define.ts"],"sourcesContent":["import { _cn, type CNOptions } from \"./cn\";\r\nimport { _compose } from \"./compose\";\r\nimport { _cv } from \"./cv\";\r\n\r\nexport interface DefineCVOptions extends CNOptions {}\r\n\r\nexport function defineCV({ merge }: DefineCVOptions = {}) {\r\n const cn = _cn({ merge });\r\n\r\n const cv = _cv({ cn });\r\n\r\n const compose = _compose({ cn });\r\n\r\n return { cn, cv, compose } as const;\r\n}\r\n"],"mappings":"wHAMO,SAASA,EAAS,CAAE,MAAAC,CAAM,EAAqB,CAAC,EAAG,CACtD,IAAMC,EAAKC,EAAI,CAAE,MAAAF,CAAM,CAAC,EAElBG,EAAKC,EAAI,CAAE,GAAAH,CAAG,CAAC,EAEfI,EAAUC,EAAS,CAAE,GAAAL,CAAG,CAAC,EAE/B,MAAO,CAAE,GAAAA,EAAI,GAAAE,EAAI,QAAAE,CAAQ,CAC7B","names":["defineCV","merge","cn","_cn","cv","_cv","compose","_compose"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c,d}from"./chunk-IMTFPGTY.js";import{d as f}from"./chunk-6DFTYFKO.js";function h({cn:s}){return n=>{let{base:p,variants:e,compoundVariants:t,defaultVariants:V}=n,r=f(n),i=e?typeof t=="function"?t(r):t:void 0;return Object.assign(C=>{let m=e?r.variantKeys.map(a=>{let o=C?.[a],R=V?.[a],u=o?.toString()||R?.toString();return u?e[a][u]:void 0}):void 0,x=i?.reduce((a,o)=>(S(C,o,V)&&a.push(o.class,o.className),a),new Array);return s(p,m,x,C?.class,C?.className)},r)}}function S(s,n,p){return Object.keys(n).every(e=>{if(e==="class"||e==="className")return!0;let t=n[e],V=p?.[e],r=s?.[e];if(c(t))return d(t,r);let i=r??V;return Array.isArray(t)?t.some(l=>y(i,l)):y(i,t)})}function y(s,n){return s?.toString()===n?.toString()}export{h as a};
|
|
2
|
+
//# sourceMappingURL=chunk-BSA7R4NK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cv.ts"],"sourcesContent":["import type { ClassValue } from \"clsx\";\r\nimport type { MarkRequired } from \"ts-essentials\";\r\nimport type { CN } from \"./cn\";\r\nimport { isCVToken, shouldApplySelectorByToken, type CVToken } from \"./tokens\";\r\nimport { cvUtils, type AnyCVUtils, type CVUtils } from \"./utils\";\r\n\r\nexport type VariantProps<CVR extends AnyCVReturn> = CVR extends CVReturn<infer V, infer R> ? CVProps<V, R> : never;\r\n\r\nexport type ClassProp = { class?: ClassValue; className?: never } | { class?: never; className?: ClassValue };\r\nexport type WithClassProp<T extends object> = T & ClassProp;\r\n\r\nexport type BooleanStringToBoolean<T> = T extends \"true\" | \"false\" ? boolean : T;\r\n\r\nexport type CVVariantKey = string | number;\r\n\r\nexport type CVVariantsSchema = Record<string, Record<CVVariantKey, ClassValue>>;\r\n\r\nexport type CVVariant<V extends CVVariantsSchema> = {\r\n [K in keyof V]?: BooleanStringToBoolean<keyof V[K] & CVVariantKey>;\r\n};\r\n\r\nexport type CVProps<V extends CVVariantsSchema, R extends keyof V = never> = MarkRequired<CVVariant<V>, R>;\r\n\r\nexport type CVCompoundVariant<V extends CVVariantsSchema> = WithClassProp<{\r\n [K in keyof V]?:\r\n | BooleanStringToBoolean<keyof V[K] & CVVariantKey>\r\n | BooleanStringToBoolean<keyof V[K] & CVVariantKey>[]\r\n | CVToken;\r\n}>;\r\n\r\nexport type CVCompoundVariantsSchema<V extends CVVariantsSchema> = CVCompoundVariant<V>[];\r\n\r\nexport interface CVConfig<V extends CVVariantsSchema, R extends keyof V> {\r\n base?: ClassValue;\r\n variants?: V;\r\n compoundVariants?: CVCompoundVariantsSchema<V> | ((arg: CVUtils<V, R>) => CVCompoundVariantsSchema<V>);\r\n defaultVariants?: CVVariant<V>;\r\n requiredVariants?: Record<R, boolean>;\r\n}\r\n\r\nexport type CVReturnProps<V extends CVVariantsSchema, R extends keyof V = never> =\r\n | WithClassProp<CVProps<V, R>>\r\n | ([R] extends [never] ? void : never);\r\n\r\nexport interface CVReturn<V extends CVVariantsSchema, R extends keyof V = never> extends CVUtils<V, R> {\r\n (props: CVReturnProps<V, R>): string;\r\n}\r\nexport interface AnyCVReturn extends AnyCVUtils {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (props: any): string;\r\n}\r\n\r\nexport interface CV {\r\n <V extends CVVariantsSchema, R extends keyof V = never>(config: CVConfig<V, R>): CVReturn<V, R>;\r\n}\r\n\r\nexport function _cv({ cn }: { cn: CN }): CV {\r\n return <V extends CVVariantsSchema, R extends keyof V = never>(config: CVConfig<V, R>) => {\r\n const { base, variants, compoundVariants, defaultVariants } = config;\r\n\r\n const utils = cvUtils(config);\r\n\r\n const resolvedCompoundVariants = variants\r\n ? typeof compoundVariants === \"function\"\r\n ? compoundVariants(utils)\r\n : compoundVariants\r\n : undefined;\r\n\r\n const getVariant = (props: CVReturnProps<V, R>) => {\r\n const variantClassNames = variants\r\n ? utils.variantKeys.map((variantKey) => {\r\n const variantProp = props?.[variantKey];\r\n const defaultProp = defaultVariants?.[variantKey];\r\n\r\n const variant = variantProp?.toString() || defaultProp?.toString();\r\n\r\n return variant ? variants[variantKey][variant] : undefined;\r\n })\r\n : undefined;\r\n\r\n const compoundVariantClassNames = resolvedCompoundVariants?.reduce((acc, compoundVariant) => {\r\n if (shouldApplyCompoundVariant(props, compoundVariant, defaultVariants))\r\n acc.push(compoundVariant.class, compoundVariant.className);\r\n\r\n return acc;\r\n }, new Array<ClassValue>());\r\n\r\n return cn(base, variantClassNames, compoundVariantClassNames, props?.class, props?.className);\r\n };\r\n\r\n return Object.assign(getVariant, utils);\r\n };\r\n}\r\n\r\nfunction shouldApplyCompoundVariant<V extends CVVariantsSchema, R extends keyof V>(\r\n props: CVReturnProps<V, R>,\r\n matcher: CVCompoundVariant<V>,\r\n defaults: CVVariant<V> | undefined,\r\n) {\r\n return Object.keys(matcher).every((cvKey) => {\r\n if (cvKey === \"class\" || cvKey === \"className\") return true;\r\n\r\n const cvSelector = matcher[cvKey];\r\n\r\n const defaultsSelector = defaults?.[cvKey as keyof typeof defaults];\r\n const propsSelector = props?.[cvKey as keyof typeof props];\r\n\r\n if (isCVToken(cvSelector)) return shouldApplySelectorByToken(cvSelector, propsSelector);\r\n\r\n const selector = propsSelector ?? defaultsSelector;\r\n\r\n return Array.isArray(cvSelector)\r\n ? cvSelector.some((cvSelector) => compareSelectors(selector, cvSelector))\r\n : compareSelectors(selector, cvSelector);\r\n });\r\n}\r\n\r\nexport type CVPropsValue = CVVariantKey | boolean | undefined;\r\nfunction compareSelectors(selector1: CVPropsValue, selector2: CVPropsValue) {\r\n return selector1?.toString() === selector2?.toString();\r\n}\r\n"],"mappings":"6EAwDO,SAASA,EAAI,CAAE,GAAAC,CAAG,EAAmB,CACxC,OAA+DC,GAA2B,CACtF,GAAM,CAAE,KAAAC,EAAM,SAAAC,EAAU,iBAAAC,EAAkB,gBAAAC,CAAgB,EAAIJ,EAExDK,EAAQC,EAAQN,CAAM,EAEtBO,EAA2BL,EAC3B,OAAOC,GAAqB,WACxBA,EAAiBE,CAAK,EACtBF,EACJ,OAwBN,OAAO,OAAO,OAtBMK,GAA+B,CAC/C,IAAMC,EAAoBP,EACpBG,EAAM,YAAY,IAAKK,GAAe,CAClC,IAAMC,EAAcH,IAAQE,CAAU,EAChCE,EAAcR,IAAkBM,CAAU,EAE1CG,EAAUF,GAAa,SAAS,GAAKC,GAAa,SAAS,EAEjE,OAAOC,EAAUX,EAASQ,CAAU,EAAEG,CAAO,EAAI,MACrD,CAAC,EACD,OAEAC,EAA4BP,GAA0B,OAAO,CAACQ,EAAKC,KACjEC,EAA2BT,EAAOQ,EAAiBZ,CAAe,GAClEW,EAAI,KAAKC,EAAgB,MAAOA,EAAgB,SAAS,EAEtDD,GACR,IAAI,KAAmB,EAE1B,OAAOhB,EAAGE,EAAMQ,EAAmBK,EAA2BN,GAAO,MAAOA,GAAO,SAAS,CAChG,EAEiCH,CAAK,CAC1C,CACJ,CAEA,SAASY,EACLT,EACAU,EACAC,EACF,CACE,OAAO,OAAO,KAAKD,CAAO,EAAE,MAAOE,GAAU,CACzC,GAAIA,IAAU,SAAWA,IAAU,YAAa,MAAO,GAEvD,IAAMC,EAAaH,EAAQE,CAAK,EAE1BE,EAAmBH,IAAWC,CAA8B,EAC5DG,EAAgBf,IAAQY,CAA2B,EAEzD,GAAII,EAAUH,CAAU,EAAG,OAAOI,EAA2BJ,EAAYE,CAAa,EAEtF,IAAMG,EAAWH,GAAiBD,EAElC,OAAO,MAAM,QAAQD,CAAU,EACzBA,EAAW,KAAMA,GAAeM,EAAiBD,EAAUL,CAAU,CAAC,EACtEM,EAAiBD,EAAUL,CAAU,CAC/C,CAAC,CACL,CAGA,SAASM,EAAiBC,EAAyBC,EAAyB,CACxE,OAAOD,GAAW,SAAS,IAAMC,GAAW,SAAS,CACzD","names":["_cv","cn","config","base","variants","compoundVariants","defaultVariants","utils","cvUtils","resolvedCompoundVariants","props","variantClassNames","variantKey","variantProp","defaultProp","variant","compoundVariantClassNames","acc","compoundVariant","shouldApplyCompoundVariant","matcher","defaults","cvKey","cvSelector","defaultsSelector","propsSelector","isCVToken","shouldApplySelectorByToken","selector","compareSelectors","selector1","selector2"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cn.ts"],"sourcesContent":["import clsx, { type ClassValue } from \"clsx\";\r\n\r\nexport interface CNOptions {\r\n merge?: (className: string) => string;\r\n}\r\n\r\nexport interface CN {\r\n (...inputs: ClassValue[]): string;\r\n}\r\n\r\nexport function _cn({ merge = (className) => className }: CNOptions): CN {\r\n return (...inputs) => merge(clsx(...inputs));\r\n}\r\n"],"mappings":"AAAA,OAAOA,MAA+B,OAU/B,SAASC,EAAI,CAAE,MAAAC,EAASC,GAAcA,CAAU,EAAkB,CACrE,MAAO,IAAIC,IAAWF,EAAMF,EAAK,GAAGI,CAAM,CAAC,CAC/C","names":["clsx","_cn","merge","className","inputs"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var t={__token:"OnlyWhenDefined"},i={__token:"OnlyWhenUndefined"};function f(e){return e?typeof e=="object"&&"__token"in e:!1}function o(e,n){return e.__token===n.__token}function r(e,n){return o(e,t)?n!==void 0:o(e,i)?n===void 0:!1}export{t as a,i as b,f as c,r as d};
|
|
2
|
+
//# sourceMappingURL=chunk-IMTFPGTY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tokens.ts"],"sourcesContent":["import type { Opaque } from \"ts-essentials\";\r\nimport type { CVPropsValue } from \"./cv\";\r\n\r\ntype OnlyWhenDefined = Opaque<{ __token: string }, \"OnlyWhenDefined\">;\r\ntype OnlyWhenUndefined = Opaque<{ __token: string }, \"OnlyWhenUndefined\">;\r\n\r\nexport type CVToken = OnlyWhenDefined | OnlyWhenUndefined;\r\n\r\n/** Apply compound variant only if prop **is** specified */\r\nexport const onlyWhenDefined = { __token: \"OnlyWhenDefined\" } as OnlyWhenDefined;\r\n/** Apply compound variant only if prop **is not** specified */\r\nexport const onlyWhenUndefined = { __token: \"OnlyWhenUndefined\" } as OnlyWhenUndefined;\r\n\r\nexport function isCVToken(token: unknown): token is CVToken {\r\n return token ? typeof token === \"object\" && \"__token\" in token : false;\r\n}\r\nfunction isSpecificCVToken<TReference extends CVToken>(token: CVToken, reference: TReference): token is TReference {\r\n return token.__token === reference.__token;\r\n}\r\n\r\nexport function shouldApplySelectorByToken(token: CVToken, selector: CVPropsValue) {\r\n if (isSpecificCVToken(token, onlyWhenDefined)) return selector !== undefined;\r\n else if (isSpecificCVToken(token, onlyWhenUndefined)) return selector === undefined;\r\n\r\n return false;\r\n}\r\n"],"mappings":"AASO,IAAMA,EAAkB,CAAE,QAAS,iBAAkB,EAE/CC,EAAoB,CAAE,QAAS,mBAAoB,EAEzD,SAASC,EAAUC,EAAkC,CACxD,OAAOA,EAAQ,OAAOA,GAAU,UAAY,YAAaA,EAAQ,EACrE,CACA,SAASC,EAA8CD,EAAgBE,EAA4C,CAC/G,OAAOF,EAAM,UAAYE,EAAU,OACvC,CAEO,SAASC,EAA2BH,EAAgBI,EAAwB,CAC/E,OAAIH,EAAkBD,EAAOH,CAAe,EAAUO,IAAa,OAC1DH,EAAkBD,EAAOF,CAAiB,EAAUM,IAAa,OAEnE,EACX","names":["onlyWhenDefined","onlyWhenUndefined","isCVToken","token","isSpecificCVToken","reference","shouldApplySelectorByToken","selector"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function p({cn:a}){return(...n)=>{let s=u(...n);return Object.assign(t=>{let r={...t,class:void 0,className:void 0};return a(n.map(e=>e(r)),t?.class,t?.className)},s)}}function u(...a){let n=new Set,s=new Map,i=new Map,t=new Map;return a.forEach(r=>{for(let e of r.variantKeys){n.add(e);let o=new Set(s.get(e));for(let V of r.variantMap[e])o.add(V);s.set(e,Array.from(o)),i.set(e,r.defaultVariants[e]),t.set(e,r.requiredVariants[e])}}),{variantKeys:Array.from(n),variantMap:Object.fromEntries(s),defaultVariants:Object.fromEntries(i),requiredVariants:Object.fromEntries(t)}}export{p as a,u as b};
|
|
2
|
+
//# sourceMappingURL=chunk-RNIIXHL2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/compose.ts"],"sourcesContent":["import type { RequiredKeys, UnionToIntersection } from \"ts-essentials\";\r\nimport type { CN } from \"./cn\";\r\nimport {\r\n type AnyCVReturn,\r\n type CVReturn,\r\n type CVReturnProps,\r\n type CVVariantsSchema,\r\n type CVPropsValue,\r\n type VariantProps,\r\n type WithClassProp,\r\n} from \"./cv\";\r\nimport type { AnyCVUtils, CVUtils } from \"./utils\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nexport type ExtractVariants<CVR extends AnyCVReturn> = CVR extends CVReturn<infer V, infer _> ? V : never;\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nexport type ExtractRequired<CVR extends AnyCVReturn> = CVR extends CVReturn<infer _, infer R> ? R : never;\r\n\r\ntype OnlyVariantSchema<T> = T extends CVVariantsSchema ? T : never;\r\n\r\ntype MergeVariants<T extends AnyCVReturn[]> = OnlyVariantSchema<UnionToIntersection<ExtractVariants<T[number]>>>;\r\ntype MergeRequiredKeys<T extends AnyCVReturn[]> = ExtractRequired<T[number]>;\r\n\r\nexport interface CVCompose {\r\n <T extends [AnyCVReturn, ...AnyCVReturn[]]>(...components: T): CVReturn<MergeVariants<T>, MergeRequiredKeys<T>>;\r\n}\r\n\r\nexport type CVComposeReturnProps<T extends AnyCVReturn> =\r\n | WithClassProp<VariantProps<T>>\r\n | (RequiredKeys<VariantProps<T>> extends never ? void : never);\r\n\r\nexport function _compose({ cn }: { cn: CN }): CVCompose {\r\n return <T extends AnyCVReturn[]>(...components: T) => {\r\n const utils = composeUtils(...components) as CVUtils<MergeVariants<T>, MergeRequiredKeys<T>>;\r\n\r\n const getVariant = (props: CVReturnProps<MergeVariants<T>, MergeRequiredKeys<T>>) => {\r\n const propsWithoutClass = { ...props, class: undefined, className: undefined };\r\n\r\n return cn(\r\n components.map((component) => component(propsWithoutClass)),\r\n props?.class,\r\n props?.className,\r\n );\r\n };\r\n\r\n return Object.assign(getVariant, utils);\r\n };\r\n}\r\n\r\nexport function composeUtils(...components: AnyCVReturn[]): AnyCVUtils {\r\n const variantKeys = new Set<string>();\r\n const variantMap = new Map<string, CVPropsValue[]>();\r\n const defaultVariants = new Map<string, CVPropsValue>();\r\n const requiredVariants = new Map<string, boolean>();\r\n\r\n components.forEach((component) => {\r\n for (const key of component.variantKeys) {\r\n variantKeys.add(key);\r\n const values = new Set(variantMap.get(key));\r\n for (const value of component.variantMap[key]) {\r\n values.add(value);\r\n }\r\n\r\n variantMap.set(key, Array.from(values));\r\n\r\n defaultVariants.set(key, component.defaultVariants[key]);\r\n requiredVariants.set(key, component.requiredVariants[key]);\r\n }\r\n });\r\n\r\n return {\r\n variantKeys: Array.from(variantKeys),\r\n variantMap: Object.fromEntries(variantMap),\r\n defaultVariants: Object.fromEntries(defaultVariants),\r\n requiredVariants: Object.fromEntries(requiredVariants),\r\n };\r\n}\r\n"],"mappings":"AA+BO,SAASA,EAAS,CAAE,GAAAC,CAAG,EAA0B,CACpD,MAAO,IAA6BC,IAAkB,CAClD,IAAMC,EAAQC,EAAa,GAAGF,CAAU,EAYxC,OAAO,OAAO,OAVMG,GAAiE,CACjF,IAAMC,EAAoB,CAAE,GAAGD,EAAO,MAAO,OAAW,UAAW,MAAU,EAE7E,OAAOJ,EACHC,EAAW,IAAKK,GAAcA,EAAUD,CAAiB,CAAC,EAC1DD,GAAO,MACPA,GAAO,SACX,CACJ,EAEiCF,CAAK,CAC1C,CACJ,CAEO,SAASC,KAAgBF,EAAuC,CACnE,IAAMM,EAAc,IAAI,IAClBC,EAAa,IAAI,IACjBC,EAAkB,IAAI,IACtBC,EAAmB,IAAI,IAE7B,OAAAT,EAAW,QAASK,GAAc,CAC9B,QAAWK,KAAOL,EAAU,YAAa,CACrCC,EAAY,IAAII,CAAG,EACnB,IAAMC,EAAS,IAAI,IAAIJ,EAAW,IAAIG,CAAG,CAAC,EAC1C,QAAWE,KAASP,EAAU,WAAWK,CAAG,EACxCC,EAAO,IAAIC,CAAK,EAGpBL,EAAW,IAAIG,EAAK,MAAM,KAAKC,CAAM,CAAC,EAEtCH,EAAgB,IAAIE,EAAKL,EAAU,gBAAgBK,CAAG,CAAC,EACvDD,EAAiB,IAAIC,EAAKL,EAAU,iBAAiBK,CAAG,CAAC,CAC7D,CACJ,CAAC,EAEM,CACH,YAAa,MAAM,KAAKJ,CAAW,EACnC,WAAY,OAAO,YAAYC,CAAU,EACzC,gBAAiB,OAAO,YAAYC,CAAe,EACnD,iBAAkB,OAAO,YAAYC,CAAgB,CACzD,CACJ","names":["_compose","cn","components","utils","composeUtils","props","propsWithoutClass","component","variantKeys","variantMap","defaultVariants","requiredVariants","key","values","value"]}
|
package/build/cn.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var p=Object.create;var n=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var N=(t,e)=>{for(var r in e)n(t,r,{get:e[r],enumerable:!0})},a=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of l(e))!u.call(t,s)&&s!==r&&n(t,s,{get:()=>e[s],enumerable:!(i=c(e,s))||i.enumerable});return t};var f=(t,e,r)=>(r=t!=null?p(C(t)):{},a(e||!t||!t.__esModule?n(r,"default",{value:t,enumerable:!0}):r,t)),g=t=>a(n({},"__esModule",{value:!0}),t);var x={};N(x,{_cn:()=>m});module.exports=g(x);var o=f(require("clsx"),1);function m({merge:t=e=>e}){return(...e)=>t((0,o.default)(...e))}0&&(module.exports={_cn});
|
|
2
|
+
//# sourceMappingURL=cn.cjs.map
|
package/build/cn.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cn.ts"],"sourcesContent":["import clsx, { type ClassValue } from \"clsx\";\r\n\r\nexport interface CNOptions {\r\n merge?: (className: string) => string;\r\n}\r\n\r\nexport interface CN {\r\n (...inputs: ClassValue[]): string;\r\n}\r\n\r\nexport function _cn({ merge = (className) => className }: CNOptions): CN {\r\n return (...inputs) => merge(clsx(...inputs));\r\n}\r\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,SAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAsC,qBAU/B,SAASF,EAAI,CAAE,MAAAG,EAASC,GAAcA,CAAU,EAAkB,CACrE,MAAO,IAAIC,IAAWF,KAAM,EAAAG,SAAK,GAAGD,CAAM,CAAC,CAC/C","names":["cn_exports","__export","_cn","__toCommonJS","import_clsx","merge","className","inputs","clsx"]}
|
package/build/cn.d.cts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ClassValue } from 'clsx';
|
|
2
|
+
|
|
3
|
+
interface CNOptions {
|
|
4
|
+
merge?: (className: string) => string;
|
|
5
|
+
}
|
|
6
|
+
interface CN {
|
|
7
|
+
(...inputs: ClassValue[]): string;
|
|
8
|
+
}
|
|
9
|
+
declare function _cn({ merge }: CNOptions): CN;
|
|
10
|
+
|
|
11
|
+
export { type CN, type CNOptions, _cn };
|
package/build/cn.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ClassValue } from 'clsx';
|
|
2
|
+
|
|
3
|
+
interface CNOptions {
|
|
4
|
+
merge?: (className: string) => string;
|
|
5
|
+
}
|
|
6
|
+
interface CN {
|
|
7
|
+
(...inputs: ClassValue[]): string;
|
|
8
|
+
}
|
|
9
|
+
declare function _cn({ merge }: CNOptions): CN;
|
|
10
|
+
|
|
11
|
+
export { type CN, type CNOptions, _cn };
|
package/build/cn.js
ADDED
package/build/cn.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var c=(r,e)=>{for(var n in e)o(r,n,{get:e[n],enumerable:!0})},R=(r,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of C(e))!d.call(r,t)&&t!==n&&o(r,t,{get:()=>e[t],enumerable:!(a=y(e,t))||a.enumerable});return r};var f=r=>R(o({},"__esModule",{value:!0}),r);var m={};c(m,{_compose:()=>l,composeUtils:()=>u});module.exports=f(m);function l({cn:r}){return(...e)=>{let n=u(...e);return Object.assign(t=>{let i={...t,class:void 0,className:void 0};return r(e.map(s=>s(i)),t?.class,t?.className)},n)}}function u(...r){let e=new Set,n=new Map,a=new Map,t=new Map;return r.forEach(i=>{for(let s of i.variantKeys){e.add(s);let V=new Set(n.get(s));for(let p of i.variantMap[s])V.add(p);n.set(s,Array.from(V)),a.set(s,i.defaultVariants[s]),t.set(s,i.requiredVariants[s])}}),{variantKeys:Array.from(e),variantMap:Object.fromEntries(n),defaultVariants:Object.fromEntries(a),requiredVariants:Object.fromEntries(t)}}0&&(module.exports={_compose,composeUtils});
|
|
2
|
+
//# sourceMappingURL=compose.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/compose.ts"],"sourcesContent":["import type { RequiredKeys, UnionToIntersection } from \"ts-essentials\";\r\nimport type { CN } from \"./cn\";\r\nimport {\r\n type AnyCVReturn,\r\n type CVReturn,\r\n type CVReturnProps,\r\n type CVVariantsSchema,\r\n type CVPropsValue,\r\n type VariantProps,\r\n type WithClassProp,\r\n} from \"./cv\";\r\nimport type { AnyCVUtils, CVUtils } from \"./utils\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nexport type ExtractVariants<CVR extends AnyCVReturn> = CVR extends CVReturn<infer V, infer _> ? V : never;\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nexport type ExtractRequired<CVR extends AnyCVReturn> = CVR extends CVReturn<infer _, infer R> ? R : never;\r\n\r\ntype OnlyVariantSchema<T> = T extends CVVariantsSchema ? T : never;\r\n\r\ntype MergeVariants<T extends AnyCVReturn[]> = OnlyVariantSchema<UnionToIntersection<ExtractVariants<T[number]>>>;\r\ntype MergeRequiredKeys<T extends AnyCVReturn[]> = ExtractRequired<T[number]>;\r\n\r\nexport interface CVCompose {\r\n <T extends [AnyCVReturn, ...AnyCVReturn[]]>(...components: T): CVReturn<MergeVariants<T>, MergeRequiredKeys<T>>;\r\n}\r\n\r\nexport type CVComposeReturnProps<T extends AnyCVReturn> =\r\n | WithClassProp<VariantProps<T>>\r\n | (RequiredKeys<VariantProps<T>> extends never ? void : never);\r\n\r\nexport function _compose({ cn }: { cn: CN }): CVCompose {\r\n return <T extends AnyCVReturn[]>(...components: T) => {\r\n const utils = composeUtils(...components) as CVUtils<MergeVariants<T>, MergeRequiredKeys<T>>;\r\n\r\n const getVariant = (props: CVReturnProps<MergeVariants<T>, MergeRequiredKeys<T>>) => {\r\n const propsWithoutClass = { ...props, class: undefined, className: undefined };\r\n\r\n return cn(\r\n components.map((component) => component(propsWithoutClass)),\r\n props?.class,\r\n props?.className,\r\n );\r\n };\r\n\r\n return Object.assign(getVariant, utils);\r\n };\r\n}\r\n\r\nexport function composeUtils(...components: AnyCVReturn[]): AnyCVUtils {\r\n const variantKeys = new Set<string>();\r\n const variantMap = new Map<string, CVPropsValue[]>();\r\n const defaultVariants = new Map<string, CVPropsValue>();\r\n const requiredVariants = new Map<string, boolean>();\r\n\r\n components.forEach((component) => {\r\n for (const key of component.variantKeys) {\r\n variantKeys.add(key);\r\n const values = new Set(variantMap.get(key));\r\n for (const value of component.variantMap[key]) {\r\n values.add(value);\r\n }\r\n\r\n variantMap.set(key, Array.from(values));\r\n\r\n defaultVariants.set(key, component.defaultVariants[key]);\r\n requiredVariants.set(key, component.requiredVariants[key]);\r\n }\r\n });\r\n\r\n return {\r\n variantKeys: Array.from(variantKeys),\r\n variantMap: Object.fromEntries(variantMap),\r\n defaultVariants: Object.fromEntries(defaultVariants),\r\n requiredVariants: Object.fromEntries(requiredVariants),\r\n };\r\n}\r\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,EAAA,iBAAAC,IAAA,eAAAC,EAAAJ,GA+BO,SAASE,EAAS,CAAE,GAAAG,CAAG,EAA0B,CACpD,MAAO,IAA6BC,IAAkB,CAClD,IAAMC,EAAQJ,EAAa,GAAGG,CAAU,EAYxC,OAAO,OAAO,OAVME,GAAiE,CACjF,IAAMC,EAAoB,CAAE,GAAGD,EAAO,MAAO,OAAW,UAAW,MAAU,EAE7E,OAAOH,EACHC,EAAW,IAAKI,GAAcA,EAAUD,CAAiB,CAAC,EAC1DD,GAAO,MACPA,GAAO,SACX,CACJ,EAEiCD,CAAK,CAC1C,CACJ,CAEO,SAASJ,KAAgBG,EAAuC,CACnE,IAAMK,EAAc,IAAI,IAClBC,EAAa,IAAI,IACjBC,EAAkB,IAAI,IACtBC,EAAmB,IAAI,IAE7B,OAAAR,EAAW,QAASI,GAAc,CAC9B,QAAWK,KAAOL,EAAU,YAAa,CACrCC,EAAY,IAAII,CAAG,EACnB,IAAMC,EAAS,IAAI,IAAIJ,EAAW,IAAIG,CAAG,CAAC,EAC1C,QAAWE,KAASP,EAAU,WAAWK,CAAG,EACxCC,EAAO,IAAIC,CAAK,EAGpBL,EAAW,IAAIG,EAAK,MAAM,KAAKC,CAAM,CAAC,EAEtCH,EAAgB,IAAIE,EAAKL,EAAU,gBAAgBK,CAAG,CAAC,EACvDD,EAAiB,IAAIC,EAAKL,EAAU,iBAAiBK,CAAG,CAAC,CAC7D,CACJ,CAAC,EAEM,CACH,YAAa,MAAM,KAAKJ,CAAW,EACnC,WAAY,OAAO,YAAYC,CAAU,EACzC,gBAAiB,OAAO,YAAYC,CAAe,EACnD,iBAAkB,OAAO,YAAYC,CAAgB,CACzD,CACJ","names":["compose_exports","__export","_compose","composeUtils","__toCommonJS","cn","components","utils","props","propsWithoutClass","component","variantKeys","variantMap","defaultVariants","requiredVariants","key","values","value"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { UnionToIntersection, RequiredKeys } from 'ts-essentials';
|
|
2
|
+
import { CN } from './cn.cjs';
|
|
3
|
+
import { A as AnyCVReturn, c as CVReturn, d as CVVariantsSchema, W as WithClassProp, V as VariantProps, j as AnyCVUtils } from './cv-BWSJNbxE.cjs';
|
|
4
|
+
import 'clsx';
|
|
5
|
+
|
|
6
|
+
type ExtractVariants<CVR extends AnyCVReturn> = CVR extends CVReturn<infer V, infer _> ? V : never;
|
|
7
|
+
type ExtractRequired<CVR extends AnyCVReturn> = CVR extends CVReturn<infer _, infer R> ? R : never;
|
|
8
|
+
type OnlyVariantSchema<T> = T extends CVVariantsSchema ? T : never;
|
|
9
|
+
type MergeVariants<T extends AnyCVReturn[]> = OnlyVariantSchema<UnionToIntersection<ExtractVariants<T[number]>>>;
|
|
10
|
+
type MergeRequiredKeys<T extends AnyCVReturn[]> = ExtractRequired<T[number]>;
|
|
11
|
+
interface CVCompose {
|
|
12
|
+
<T extends [AnyCVReturn, ...AnyCVReturn[]]>(...components: T): CVReturn<MergeVariants<T>, MergeRequiredKeys<T>>;
|
|
13
|
+
}
|
|
14
|
+
type CVComposeReturnProps<T extends AnyCVReturn> = WithClassProp<VariantProps<T>> | (RequiredKeys<VariantProps<T>> extends never ? void : never);
|
|
15
|
+
declare function _compose({ cn }: {
|
|
16
|
+
cn: CN;
|
|
17
|
+
}): CVCompose;
|
|
18
|
+
declare function composeUtils(...components: AnyCVReturn[]): AnyCVUtils;
|
|
19
|
+
|
|
20
|
+
export { type CVCompose, type CVComposeReturnProps, type ExtractRequired, type ExtractVariants, _compose, composeUtils };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { UnionToIntersection, RequiredKeys } from 'ts-essentials';
|
|
2
|
+
import { CN } from './cn.js';
|
|
3
|
+
import { A as AnyCVReturn, c as CVReturn, d as CVVariantsSchema, W as WithClassProp, V as VariantProps, j as AnyCVUtils } from './cv-WFZM6Df-.js';
|
|
4
|
+
import 'clsx';
|
|
5
|
+
|
|
6
|
+
type ExtractVariants<CVR extends AnyCVReturn> = CVR extends CVReturn<infer V, infer _> ? V : never;
|
|
7
|
+
type ExtractRequired<CVR extends AnyCVReturn> = CVR extends CVReturn<infer _, infer R> ? R : never;
|
|
8
|
+
type OnlyVariantSchema<T> = T extends CVVariantsSchema ? T : never;
|
|
9
|
+
type MergeVariants<T extends AnyCVReturn[]> = OnlyVariantSchema<UnionToIntersection<ExtractVariants<T[number]>>>;
|
|
10
|
+
type MergeRequiredKeys<T extends AnyCVReturn[]> = ExtractRequired<T[number]>;
|
|
11
|
+
interface CVCompose {
|
|
12
|
+
<T extends [AnyCVReturn, ...AnyCVReturn[]]>(...components: T): CVReturn<MergeVariants<T>, MergeRequiredKeys<T>>;
|
|
13
|
+
}
|
|
14
|
+
type CVComposeReturnProps<T extends AnyCVReturn> = WithClassProp<VariantProps<T>> | (RequiredKeys<VariantProps<T>> extends never ? void : never);
|
|
15
|
+
declare function _compose({ cn }: {
|
|
16
|
+
cn: CN;
|
|
17
|
+
}): CVCompose;
|
|
18
|
+
declare function composeUtils(...components: AnyCVReturn[]): AnyCVUtils;
|
|
19
|
+
|
|
20
|
+
export { type CVCompose, type CVComposeReturnProps, type ExtractRequired, type ExtractVariants, _compose, composeUtils };
|
package/build/compose.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ClassValue } from 'clsx';
|
|
2
|
+
import { Opaque, Prettify, MarkRequired } from 'ts-essentials';
|
|
3
|
+
import { CN } from './cn.cjs';
|
|
4
|
+
|
|
5
|
+
type OnlyWhenDefined = Opaque<{
|
|
6
|
+
__token: string;
|
|
7
|
+
}, "OnlyWhenDefined">;
|
|
8
|
+
type OnlyWhenUndefined = Opaque<{
|
|
9
|
+
__token: string;
|
|
10
|
+
}, "OnlyWhenUndefined">;
|
|
11
|
+
type CVToken = OnlyWhenDefined | OnlyWhenUndefined;
|
|
12
|
+
/** Apply compound variant only if prop **is** specified */
|
|
13
|
+
declare const onlyWhenDefined: OnlyWhenDefined;
|
|
14
|
+
/** Apply compound variant only if prop **is not** specified */
|
|
15
|
+
declare const onlyWhenUndefined: OnlyWhenUndefined;
|
|
16
|
+
declare function isCVToken(token: unknown): token is CVToken;
|
|
17
|
+
declare function shouldApplySelectorByToken(token: CVToken, selector: CVPropsValue): boolean;
|
|
18
|
+
|
|
19
|
+
declare function getKeys<O extends Record<string, unknown>>(obj: O): (keyof O)[];
|
|
20
|
+
type EntriesOf<O extends Record<string, unknown>> = {
|
|
21
|
+
[K in keyof O]: [K, O[K]];
|
|
22
|
+
};
|
|
23
|
+
declare function getEntries<O extends Record<string, unknown>>(obj: O): EntriesOf<O>[keyof EntriesOf<O>][];
|
|
24
|
+
type VariantMap<V extends CVVariantsSchema> = {
|
|
25
|
+
[K in keyof V]: BooleanStringToBoolean<keyof V[K] & CVVariantKey>[];
|
|
26
|
+
};
|
|
27
|
+
declare function getVariantMap<V extends CVVariantsSchema>(variants: V): VariantMap<V>;
|
|
28
|
+
interface CVUtils<V extends CVVariantsSchema, R extends keyof V = never> {
|
|
29
|
+
variantKeys: (keyof V & CVVariantKey)[];
|
|
30
|
+
variantMap: Prettify<VariantMap<V>>;
|
|
31
|
+
defaultVariants: Prettify<CVVariant<V>>;
|
|
32
|
+
requiredVariants: Prettify<Record<R, boolean>>;
|
|
33
|
+
}
|
|
34
|
+
interface AnyCVUtils {
|
|
35
|
+
variantKeys: string[];
|
|
36
|
+
variantMap: Record<string, CVPropsValue[]>;
|
|
37
|
+
defaultVariants: Record<string, CVPropsValue>;
|
|
38
|
+
requiredVariants: Record<string, boolean>;
|
|
39
|
+
}
|
|
40
|
+
declare function cvUtils<V extends CVVariantsSchema, R extends keyof V>({ variants, defaultVariants, requiredVariants, }: CVConfig<V, R>): CVUtils<V, R>;
|
|
41
|
+
|
|
42
|
+
type VariantProps<CVR extends AnyCVReturn> = CVR extends CVReturn<infer V, infer R> ? CVProps<V, R> : never;
|
|
43
|
+
type ClassProp = {
|
|
44
|
+
class?: ClassValue;
|
|
45
|
+
className?: never;
|
|
46
|
+
} | {
|
|
47
|
+
class?: never;
|
|
48
|
+
className?: ClassValue;
|
|
49
|
+
};
|
|
50
|
+
type WithClassProp<T extends object> = T & ClassProp;
|
|
51
|
+
type BooleanStringToBoolean<T> = T extends "true" | "false" ? boolean : T;
|
|
52
|
+
type CVVariantKey = string | number;
|
|
53
|
+
type CVVariantsSchema = Record<string, Record<CVVariantKey, ClassValue>>;
|
|
54
|
+
type CVVariant<V extends CVVariantsSchema> = {
|
|
55
|
+
[K in keyof V]?: BooleanStringToBoolean<keyof V[K] & CVVariantKey>;
|
|
56
|
+
};
|
|
57
|
+
type CVProps<V extends CVVariantsSchema, R extends keyof V = never> = MarkRequired<CVVariant<V>, R>;
|
|
58
|
+
type CVCompoundVariant<V extends CVVariantsSchema> = WithClassProp<{
|
|
59
|
+
[K in keyof V]?: BooleanStringToBoolean<keyof V[K] & CVVariantKey> | BooleanStringToBoolean<keyof V[K] & CVVariantKey>[] | CVToken;
|
|
60
|
+
}>;
|
|
61
|
+
type CVCompoundVariantsSchema<V extends CVVariantsSchema> = CVCompoundVariant<V>[];
|
|
62
|
+
interface CVConfig<V extends CVVariantsSchema, R extends keyof V> {
|
|
63
|
+
base?: ClassValue;
|
|
64
|
+
variants?: V;
|
|
65
|
+
compoundVariants?: CVCompoundVariantsSchema<V> | ((arg: CVUtils<V, R>) => CVCompoundVariantsSchema<V>);
|
|
66
|
+
defaultVariants?: CVVariant<V>;
|
|
67
|
+
requiredVariants?: Record<R, boolean>;
|
|
68
|
+
}
|
|
69
|
+
type CVReturnProps<V extends CVVariantsSchema, R extends keyof V = never> = WithClassProp<CVProps<V, R>> | ([R] extends [never] ? void : never);
|
|
70
|
+
interface CVReturn<V extends CVVariantsSchema, R extends keyof V = never> extends CVUtils<V, R> {
|
|
71
|
+
(props: CVReturnProps<V, R>): string;
|
|
72
|
+
}
|
|
73
|
+
interface AnyCVReturn extends AnyCVUtils {
|
|
74
|
+
(props: any): string;
|
|
75
|
+
}
|
|
76
|
+
interface CV {
|
|
77
|
+
<V extends CVVariantsSchema, R extends keyof V = never>(config: CVConfig<V, R>): CVReturn<V, R>;
|
|
78
|
+
}
|
|
79
|
+
declare function _cv({ cn }: {
|
|
80
|
+
cn: CN;
|
|
81
|
+
}): CV;
|
|
82
|
+
type CVPropsValue = CVVariantKey | boolean | undefined;
|
|
83
|
+
|
|
84
|
+
export { type AnyCVReturn as A, type BooleanStringToBoolean as B, type CV as C, type EntriesOf as E, type VariantProps as V, type WithClassProp as W, _cv as _, onlyWhenUndefined as a, type CVUtils as b, type CVReturn as c, type CVVariantsSchema as d, type CVCompoundVariantsSchema as e, type CVVariant as f, type CVCompoundVariant as g, type ClassProp as h, type CVToken as i, type AnyCVUtils as j, type CVConfig as k, isCVToken as l, getKeys as m, getEntries as n, onlyWhenDefined as o, type VariantMap as p, getVariantMap as q, cvUtils as r, shouldApplySelectorByToken as s, type CVVariantKey as t, type CVProps as u, type CVReturnProps as v, type CVPropsValue as w };
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ClassValue } from 'clsx';
|
|
2
|
+
import { Opaque, Prettify, MarkRequired } from 'ts-essentials';
|
|
3
|
+
import { CN } from './cn.js';
|
|
4
|
+
|
|
5
|
+
type OnlyWhenDefined = Opaque<{
|
|
6
|
+
__token: string;
|
|
7
|
+
}, "OnlyWhenDefined">;
|
|
8
|
+
type OnlyWhenUndefined = Opaque<{
|
|
9
|
+
__token: string;
|
|
10
|
+
}, "OnlyWhenUndefined">;
|
|
11
|
+
type CVToken = OnlyWhenDefined | OnlyWhenUndefined;
|
|
12
|
+
/** Apply compound variant only if prop **is** specified */
|
|
13
|
+
declare const onlyWhenDefined: OnlyWhenDefined;
|
|
14
|
+
/** Apply compound variant only if prop **is not** specified */
|
|
15
|
+
declare const onlyWhenUndefined: OnlyWhenUndefined;
|
|
16
|
+
declare function isCVToken(token: unknown): token is CVToken;
|
|
17
|
+
declare function shouldApplySelectorByToken(token: CVToken, selector: CVPropsValue): boolean;
|
|
18
|
+
|
|
19
|
+
declare function getKeys<O extends Record<string, unknown>>(obj: O): (keyof O)[];
|
|
20
|
+
type EntriesOf<O extends Record<string, unknown>> = {
|
|
21
|
+
[K in keyof O]: [K, O[K]];
|
|
22
|
+
};
|
|
23
|
+
declare function getEntries<O extends Record<string, unknown>>(obj: O): EntriesOf<O>[keyof EntriesOf<O>][];
|
|
24
|
+
type VariantMap<V extends CVVariantsSchema> = {
|
|
25
|
+
[K in keyof V]: BooleanStringToBoolean<keyof V[K] & CVVariantKey>[];
|
|
26
|
+
};
|
|
27
|
+
declare function getVariantMap<V extends CVVariantsSchema>(variants: V): VariantMap<V>;
|
|
28
|
+
interface CVUtils<V extends CVVariantsSchema, R extends keyof V = never> {
|
|
29
|
+
variantKeys: (keyof V & CVVariantKey)[];
|
|
30
|
+
variantMap: Prettify<VariantMap<V>>;
|
|
31
|
+
defaultVariants: Prettify<CVVariant<V>>;
|
|
32
|
+
requiredVariants: Prettify<Record<R, boolean>>;
|
|
33
|
+
}
|
|
34
|
+
interface AnyCVUtils {
|
|
35
|
+
variantKeys: string[];
|
|
36
|
+
variantMap: Record<string, CVPropsValue[]>;
|
|
37
|
+
defaultVariants: Record<string, CVPropsValue>;
|
|
38
|
+
requiredVariants: Record<string, boolean>;
|
|
39
|
+
}
|
|
40
|
+
declare function cvUtils<V extends CVVariantsSchema, R extends keyof V>({ variants, defaultVariants, requiredVariants, }: CVConfig<V, R>): CVUtils<V, R>;
|
|
41
|
+
|
|
42
|
+
type VariantProps<CVR extends AnyCVReturn> = CVR extends CVReturn<infer V, infer R> ? CVProps<V, R> : never;
|
|
43
|
+
type ClassProp = {
|
|
44
|
+
class?: ClassValue;
|
|
45
|
+
className?: never;
|
|
46
|
+
} | {
|
|
47
|
+
class?: never;
|
|
48
|
+
className?: ClassValue;
|
|
49
|
+
};
|
|
50
|
+
type WithClassProp<T extends object> = T & ClassProp;
|
|
51
|
+
type BooleanStringToBoolean<T> = T extends "true" | "false" ? boolean : T;
|
|
52
|
+
type CVVariantKey = string | number;
|
|
53
|
+
type CVVariantsSchema = Record<string, Record<CVVariantKey, ClassValue>>;
|
|
54
|
+
type CVVariant<V extends CVVariantsSchema> = {
|
|
55
|
+
[K in keyof V]?: BooleanStringToBoolean<keyof V[K] & CVVariantKey>;
|
|
56
|
+
};
|
|
57
|
+
type CVProps<V extends CVVariantsSchema, R extends keyof V = never> = MarkRequired<CVVariant<V>, R>;
|
|
58
|
+
type CVCompoundVariant<V extends CVVariantsSchema> = WithClassProp<{
|
|
59
|
+
[K in keyof V]?: BooleanStringToBoolean<keyof V[K] & CVVariantKey> | BooleanStringToBoolean<keyof V[K] & CVVariantKey>[] | CVToken;
|
|
60
|
+
}>;
|
|
61
|
+
type CVCompoundVariantsSchema<V extends CVVariantsSchema> = CVCompoundVariant<V>[];
|
|
62
|
+
interface CVConfig<V extends CVVariantsSchema, R extends keyof V> {
|
|
63
|
+
base?: ClassValue;
|
|
64
|
+
variants?: V;
|
|
65
|
+
compoundVariants?: CVCompoundVariantsSchema<V> | ((arg: CVUtils<V, R>) => CVCompoundVariantsSchema<V>);
|
|
66
|
+
defaultVariants?: CVVariant<V>;
|
|
67
|
+
requiredVariants?: Record<R, boolean>;
|
|
68
|
+
}
|
|
69
|
+
type CVReturnProps<V extends CVVariantsSchema, R extends keyof V = never> = WithClassProp<CVProps<V, R>> | ([R] extends [never] ? void : never);
|
|
70
|
+
interface CVReturn<V extends CVVariantsSchema, R extends keyof V = never> extends CVUtils<V, R> {
|
|
71
|
+
(props: CVReturnProps<V, R>): string;
|
|
72
|
+
}
|
|
73
|
+
interface AnyCVReturn extends AnyCVUtils {
|
|
74
|
+
(props: any): string;
|
|
75
|
+
}
|
|
76
|
+
interface CV {
|
|
77
|
+
<V extends CVVariantsSchema, R extends keyof V = never>(config: CVConfig<V, R>): CVReturn<V, R>;
|
|
78
|
+
}
|
|
79
|
+
declare function _cv({ cn }: {
|
|
80
|
+
cn: CN;
|
|
81
|
+
}): CV;
|
|
82
|
+
type CVPropsValue = CVVariantKey | boolean | undefined;
|
|
83
|
+
|
|
84
|
+
export { type AnyCVReturn as A, type BooleanStringToBoolean as B, type CV as C, type EntriesOf as E, type VariantProps as V, type WithClassProp as W, _cv as _, onlyWhenUndefined as a, type CVUtils as b, type CVReturn as c, type CVVariantsSchema as d, type CVCompoundVariantsSchema as e, type CVVariant as f, type CVCompoundVariant as g, type ClassProp as h, type CVToken as i, type AnyCVUtils as j, type CVConfig as k, isCVToken as l, getKeys as m, getEntries as n, onlyWhenDefined as o, type VariantMap as p, getVariantMap as q, cvUtils as r, shouldApplySelectorByToken as s, type CVVariantKey as t, type CVProps as u, type CVReturnProps as v, type CVPropsValue as w };
|
package/build/cv.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var f=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var T=(e,n)=>{for(var r in n)f(e,r,{get:n[r],enumerable:!0})},v=(e,n,r,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of O(n))!P.call(e,t)&&t!==r&&f(e,t,{get:()=>n[t],enumerable:!(a=g(n,t))||a.enumerable});return e};var K=e=>v(f({},"__esModule",{value:!0}),e);var q={};T(q,{_cv:()=>B});module.exports=K(q);var U={__token:"OnlyWhenDefined"},b={__token:"OnlyWhenUndefined"};function c(e){return e?typeof e=="object"&&"__token"in e:!1}function u(e,n){return e.__token===n.__token}function y(e,n){return u(e,U)?n!==void 0:u(e,b)?n===void 0:!1}function x(e){return Object.keys(e)}function W(e){return Object.entries(e)}function _(e){return Object.fromEntries(W(e).map(([n,r])=>[n,x(r)]))}function m({variants:e,defaultVariants:n,requiredVariants:r}){return{variantKeys:x(e??{}),variantMap:_(e??{}),defaultVariants:n??{},requiredVariants:r??{}}}function B({cn:e}){return n=>{let{base:r,variants:a,compoundVariants:t,defaultVariants:i}=n,o=m(n),p=a?typeof t=="function"?t(o):t:void 0;return Object.assign(C=>{let k=a?o.variantKeys.map(s=>{let V=C?.[s],S=i?.[s],d=V?.toString()||S?.toString();return d?a[s][d]:void 0}):void 0,h=p?.reduce((s,V)=>(A(C,V,i)&&s.push(V.class,V.className),s),new Array);return e(r,k,h,C?.class,C?.className)},o)}}function A(e,n,r){return Object.keys(n).every(a=>{if(a==="class"||a==="className")return!0;let t=n[a],i=r?.[a],o=e?.[a];if(c(t))return y(t,o);let p=o??i;return Array.isArray(t)?t.some(l=>R(p,l)):R(p,t)})}function R(e,n){return e?.toString()===n?.toString()}0&&(module.exports={_cv});
|
|
2
|
+
//# sourceMappingURL=cv.cjs.map
|
package/build/cv.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cv.ts","../src/tokens.ts","../src/utils.ts"],"sourcesContent":["import type { ClassValue } from \"clsx\";\r\nimport type { MarkRequired } from \"ts-essentials\";\r\nimport type { CN } from \"./cn\";\r\nimport { isCVToken, shouldApplySelectorByToken, type CVToken } from \"./tokens\";\r\nimport { cvUtils, type AnyCVUtils, type CVUtils } from \"./utils\";\r\n\r\nexport type VariantProps<CVR extends AnyCVReturn> = CVR extends CVReturn<infer V, infer R> ? CVProps<V, R> : never;\r\n\r\nexport type ClassProp = { class?: ClassValue; className?: never } | { class?: never; className?: ClassValue };\r\nexport type WithClassProp<T extends object> = T & ClassProp;\r\n\r\nexport type BooleanStringToBoolean<T> = T extends \"true\" | \"false\" ? boolean : T;\r\n\r\nexport type CVVariantKey = string | number;\r\n\r\nexport type CVVariantsSchema = Record<string, Record<CVVariantKey, ClassValue>>;\r\n\r\nexport type CVVariant<V extends CVVariantsSchema> = {\r\n [K in keyof V]?: BooleanStringToBoolean<keyof V[K] & CVVariantKey>;\r\n};\r\n\r\nexport type CVProps<V extends CVVariantsSchema, R extends keyof V = never> = MarkRequired<CVVariant<V>, R>;\r\n\r\nexport type CVCompoundVariant<V extends CVVariantsSchema> = WithClassProp<{\r\n [K in keyof V]?:\r\n | BooleanStringToBoolean<keyof V[K] & CVVariantKey>\r\n | BooleanStringToBoolean<keyof V[K] & CVVariantKey>[]\r\n | CVToken;\r\n}>;\r\n\r\nexport type CVCompoundVariantsSchema<V extends CVVariantsSchema> = CVCompoundVariant<V>[];\r\n\r\nexport interface CVConfig<V extends CVVariantsSchema, R extends keyof V> {\r\n base?: ClassValue;\r\n variants?: V;\r\n compoundVariants?: CVCompoundVariantsSchema<V> | ((arg: CVUtils<V, R>) => CVCompoundVariantsSchema<V>);\r\n defaultVariants?: CVVariant<V>;\r\n requiredVariants?: Record<R, boolean>;\r\n}\r\n\r\nexport type CVReturnProps<V extends CVVariantsSchema, R extends keyof V = never> =\r\n | WithClassProp<CVProps<V, R>>\r\n | ([R] extends [never] ? void : never);\r\n\r\nexport interface CVReturn<V extends CVVariantsSchema, R extends keyof V = never> extends CVUtils<V, R> {\r\n (props: CVReturnProps<V, R>): string;\r\n}\r\nexport interface AnyCVReturn extends AnyCVUtils {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (props: any): string;\r\n}\r\n\r\nexport interface CV {\r\n <V extends CVVariantsSchema, R extends keyof V = never>(config: CVConfig<V, R>): CVReturn<V, R>;\r\n}\r\n\r\nexport function _cv({ cn }: { cn: CN }): CV {\r\n return <V extends CVVariantsSchema, R extends keyof V = never>(config: CVConfig<V, R>) => {\r\n const { base, variants, compoundVariants, defaultVariants } = config;\r\n\r\n const utils = cvUtils(config);\r\n\r\n const resolvedCompoundVariants = variants\r\n ? typeof compoundVariants === \"function\"\r\n ? compoundVariants(utils)\r\n : compoundVariants\r\n : undefined;\r\n\r\n const getVariant = (props: CVReturnProps<V, R>) => {\r\n const variantClassNames = variants\r\n ? utils.variantKeys.map((variantKey) => {\r\n const variantProp = props?.[variantKey];\r\n const defaultProp = defaultVariants?.[variantKey];\r\n\r\n const variant = variantProp?.toString() || defaultProp?.toString();\r\n\r\n return variant ? variants[variantKey][variant] : undefined;\r\n })\r\n : undefined;\r\n\r\n const compoundVariantClassNames = resolvedCompoundVariants?.reduce((acc, compoundVariant) => {\r\n if (shouldApplyCompoundVariant(props, compoundVariant, defaultVariants))\r\n acc.push(compoundVariant.class, compoundVariant.className);\r\n\r\n return acc;\r\n }, new Array<ClassValue>());\r\n\r\n return cn(base, variantClassNames, compoundVariantClassNames, props?.class, props?.className);\r\n };\r\n\r\n return Object.assign(getVariant, utils);\r\n };\r\n}\r\n\r\nfunction shouldApplyCompoundVariant<V extends CVVariantsSchema, R extends keyof V>(\r\n props: CVReturnProps<V, R>,\r\n matcher: CVCompoundVariant<V>,\r\n defaults: CVVariant<V> | undefined,\r\n) {\r\n return Object.keys(matcher).every((cvKey) => {\r\n if (cvKey === \"class\" || cvKey === \"className\") return true;\r\n\r\n const cvSelector = matcher[cvKey];\r\n\r\n const defaultsSelector = defaults?.[cvKey as keyof typeof defaults];\r\n const propsSelector = props?.[cvKey as keyof typeof props];\r\n\r\n if (isCVToken(cvSelector)) return shouldApplySelectorByToken(cvSelector, propsSelector);\r\n\r\n const selector = propsSelector ?? defaultsSelector;\r\n\r\n return Array.isArray(cvSelector)\r\n ? cvSelector.some((cvSelector) => compareSelectors(selector, cvSelector))\r\n : compareSelectors(selector, cvSelector);\r\n });\r\n}\r\n\r\nexport type CVPropsValue = CVVariantKey | boolean | undefined;\r\nfunction compareSelectors(selector1: CVPropsValue, selector2: CVPropsValue) {\r\n return selector1?.toString() === selector2?.toString();\r\n}\r\n","import type { Opaque } from \"ts-essentials\";\r\nimport type { CVPropsValue } from \"./cv\";\r\n\r\ntype OnlyWhenDefined = Opaque<{ __token: string }, \"OnlyWhenDefined\">;\r\ntype OnlyWhenUndefined = Opaque<{ __token: string }, \"OnlyWhenUndefined\">;\r\n\r\nexport type CVToken = OnlyWhenDefined | OnlyWhenUndefined;\r\n\r\n/** Apply compound variant only if prop **is** specified */\r\nexport const onlyWhenDefined = { __token: \"OnlyWhenDefined\" } as OnlyWhenDefined;\r\n/** Apply compound variant only if prop **is not** specified */\r\nexport const onlyWhenUndefined = { __token: \"OnlyWhenUndefined\" } as OnlyWhenUndefined;\r\n\r\nexport function isCVToken(token: unknown): token is CVToken {\r\n return token ? typeof token === \"object\" && \"__token\" in token : false;\r\n}\r\nfunction isSpecificCVToken<TReference extends CVToken>(token: CVToken, reference: TReference): token is TReference {\r\n return token.__token === reference.__token;\r\n}\r\n\r\nexport function shouldApplySelectorByToken(token: CVToken, selector: CVPropsValue) {\r\n if (isSpecificCVToken(token, onlyWhenDefined)) return selector !== undefined;\r\n else if (isSpecificCVToken(token, onlyWhenUndefined)) return selector === undefined;\r\n\r\n return false;\r\n}\r\n","// import type { DeepReadonly, DeepWritable, Prettify, UnionToIntersection } from \"ts-essentials\";\r\nimport type { Prettify } from \"ts-essentials\";\r\nimport type { BooleanStringToBoolean, CVConfig, CVVariant, CVVariantsSchema, CVPropsValue, CVVariantKey } from \"./cv\";\r\n\r\nexport function getKeys<O extends Record<string, unknown>>(obj: O) {\r\n return Object.keys(obj) as (keyof O)[];\r\n}\r\n\r\nexport type EntriesOf<O extends Record<string, unknown>> = { [K in keyof O]: [K, O[K]] };\r\nexport function getEntries<O extends Record<string, unknown>>(obj: O) {\r\n return Object.entries(obj) as EntriesOf<O>[keyof EntriesOf<O>][];\r\n}\r\n\r\nexport type VariantMap<V extends CVVariantsSchema> = {\r\n [K in keyof V]: BooleanStringToBoolean<keyof V[K] & CVVariantKey>[];\r\n};\r\nexport function getVariantMap<V extends CVVariantsSchema>(variants: V) {\r\n return Object.fromEntries(getEntries(variants).map(([cvKey, cvVal]) => [cvKey, getKeys(cvVal)])) as VariantMap<V>;\r\n}\r\n\r\nexport interface CVUtils<V extends CVVariantsSchema, R extends keyof V = never> {\r\n variantKeys: (keyof V & CVVariantKey)[];\r\n variantMap: Prettify<VariantMap<V>>;\r\n defaultVariants: Prettify<CVVariant<V>>;\r\n requiredVariants: Prettify<Record<R, boolean>>;\r\n}\r\nexport interface AnyCVUtils {\r\n variantKeys: string[];\r\n variantMap: Record<string, CVPropsValue[]>;\r\n defaultVariants: Record<string, CVPropsValue>;\r\n requiredVariants: Record<string, boolean>;\r\n}\r\n\r\nexport function cvUtils<V extends CVVariantsSchema, R extends keyof V>({\r\n variants,\r\n defaultVariants,\r\n requiredVariants,\r\n}: CVConfig<V, R>) {\r\n return {\r\n variantKeys: getKeys(variants ?? ({} as V)),\r\n variantMap: getVariantMap(variants ?? ({} as V)),\r\n defaultVariants: defaultVariants ?? {},\r\n requiredVariants: requiredVariants ?? {},\r\n } as CVUtils<V, R>;\r\n}\r\n\r\n// type Entries = [PropertyKey, unknown][] | DeepReadonly<[PropertyKey, unknown][]>;\r\n// type UnionFromPairs<TArr extends Entries> =\r\n// DeepWritable<TArr> extends (infer R)[]\r\n// ? R extends [infer key, infer val]\r\n// ? Record<key & PropertyKey, val>\r\n// : never\r\n// : never;\r\n\r\n// type MergeIntersectingObjects<O> = { [K in keyof O]: O[K] };\r\n\r\n// export function objectFromEntries<E extends Entries>(entries: E) {\r\n// return Object.fromEntries(entries) as Prettify<MergeIntersectingObjects<UnionToIntersection<UnionFromPairs<E>>>>;\r\n// }\r\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,SAAAE,IAAA,eAAAC,EAAAH,GCSO,IAAMI,EAAkB,CAAE,QAAS,iBAAkB,EAE/CC,EAAoB,CAAE,QAAS,mBAAoB,EAEzD,SAASC,EAAUC,EAAkC,CACxD,OAAOA,EAAQ,OAAOA,GAAU,UAAY,YAAaA,EAAQ,EACrE,CACA,SAASC,EAA8CD,EAAgBE,EAA4C,CAC/G,OAAOF,EAAM,UAAYE,EAAU,OACvC,CAEO,SAASC,EAA2BH,EAAgBI,EAAwB,CAC/E,OAAIH,EAAkBD,EAAOH,CAAe,EAAUO,IAAa,OAC1DH,EAAkBD,EAAOF,CAAiB,EAAUM,IAAa,OAEnE,EACX,CCrBO,SAASC,EAA2CC,EAAQ,CAC/D,OAAO,OAAO,KAAKA,CAAG,CAC1B,CAGO,SAASC,EAA8CD,EAAQ,CAClE,OAAO,OAAO,QAAQA,CAAG,CAC7B,CAKO,SAASE,EAA0CC,EAAa,CACnE,OAAO,OAAO,YAAYF,EAAWE,CAAQ,EAAE,IAAI,CAAC,CAACC,EAAOC,CAAK,IAAM,CAACD,EAAOL,EAAQM,CAAK,CAAC,CAAC,CAAC,CACnG,CAeO,SAASC,EAAuD,CACnE,SAAAH,EACA,gBAAAI,EACA,iBAAAC,CACJ,EAAmB,CACf,MAAO,CACH,YAAaT,EAAQI,GAAa,CAAC,CAAO,EAC1C,WAAYD,EAAcC,GAAa,CAAC,CAAO,EAC/C,gBAAiBI,GAAmB,CAAC,EACrC,iBAAkBC,GAAoB,CAAC,CAC3C,CACJ,CFYO,SAASC,EAAI,CAAE,GAAAC,CAAG,EAAmB,CACxC,OAA+DC,GAA2B,CACtF,GAAM,CAAE,KAAAC,EAAM,SAAAC,EAAU,iBAAAC,EAAkB,gBAAAC,CAAgB,EAAIJ,EAExDK,EAAQC,EAAQN,CAAM,EAEtBO,EAA2BL,EAC3B,OAAOC,GAAqB,WACxBA,EAAiBE,CAAK,EACtBF,EACJ,OAwBN,OAAO,OAAO,OAtBMK,GAA+B,CAC/C,IAAMC,EAAoBP,EACpBG,EAAM,YAAY,IAAKK,GAAe,CAClC,IAAMC,EAAcH,IAAQE,CAAU,EAChCE,EAAcR,IAAkBM,CAAU,EAE1CG,EAAUF,GAAa,SAAS,GAAKC,GAAa,SAAS,EAEjE,OAAOC,EAAUX,EAASQ,CAAU,EAAEG,CAAO,EAAI,MACrD,CAAC,EACD,OAEAC,EAA4BP,GAA0B,OAAO,CAACQ,EAAKC,KACjEC,EAA2BT,EAAOQ,EAAiBZ,CAAe,GAClEW,EAAI,KAAKC,EAAgB,MAAOA,EAAgB,SAAS,EAEtDD,GACR,IAAI,KAAmB,EAE1B,OAAOhB,EAAGE,EAAMQ,EAAmBK,EAA2BN,GAAO,MAAOA,GAAO,SAAS,CAChG,EAEiCH,CAAK,CAC1C,CACJ,CAEA,SAASY,EACLT,EACAU,EACAC,EACF,CACE,OAAO,OAAO,KAAKD,CAAO,EAAE,MAAOE,GAAU,CACzC,GAAIA,IAAU,SAAWA,IAAU,YAAa,MAAO,GAEvD,IAAMC,EAAaH,EAAQE,CAAK,EAE1BE,EAAmBH,IAAWC,CAA8B,EAC5DG,EAAgBf,IAAQY,CAA2B,EAEzD,GAAII,EAAUH,CAAU,EAAG,OAAOI,EAA2BJ,EAAYE,CAAa,EAEtF,IAAMG,EAAWH,GAAiBD,EAElC,OAAO,MAAM,QAAQD,CAAU,EACzBA,EAAW,KAAMA,GAAeM,EAAiBD,EAAUL,CAAU,CAAC,EACtEM,EAAiBD,EAAUL,CAAU,CAC/C,CAAC,CACL,CAGA,SAASM,EAAiBC,EAAyBC,EAAyB,CACxE,OAAOD,GAAW,SAAS,IAAMC,GAAW,SAAS,CACzD","names":["cv_exports","__export","_cv","__toCommonJS","onlyWhenDefined","onlyWhenUndefined","isCVToken","token","isSpecificCVToken","reference","shouldApplySelectorByToken","selector","getKeys","obj","getEntries","getVariantMap","variants","cvKey","cvVal","cvUtils","defaultVariants","requiredVariants","_cv","cn","config","base","variants","compoundVariants","defaultVariants","utils","cvUtils","resolvedCompoundVariants","props","variantClassNames","variantKey","variantProp","defaultProp","variant","compoundVariantClassNames","acc","compoundVariant","shouldApplyCompoundVariant","matcher","defaults","cvKey","cvSelector","defaultsSelector","propsSelector","isCVToken","shouldApplySelectorByToken","selector","compareSelectors","selector1","selector2"]}
|
package/build/cv.d.cts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import 'clsx';
|
|
2
|
+
import 'ts-essentials';
|
|
3
|
+
import './cn.cjs';
|
|
4
|
+
export { A as AnyCVReturn, B as BooleanStringToBoolean, C as CV, g as CVCompoundVariant, e as CVCompoundVariantsSchema, k as CVConfig, u as CVProps, w as CVPropsValue, c as CVReturn, v as CVReturnProps, f as CVVariant, t as CVVariantKey, d as CVVariantsSchema, h as ClassProp, V as VariantProps, W as WithClassProp, _ as _cv } from './cv-BWSJNbxE.cjs';
|
package/build/cv.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import 'clsx';
|
|
2
|
+
import 'ts-essentials';
|
|
3
|
+
import './cn.js';
|
|
4
|
+
export { A as AnyCVReturn, B as BooleanStringToBoolean, C as CV, g as CVCompoundVariant, e as CVCompoundVariantsSchema, k as CVConfig, u as CVProps, w as CVPropsValue, c as CVReturn, v as CVReturnProps, f as CVVariant, t as CVVariantKey, d as CVVariantsSchema, h as ClassProp, V as VariantProps, W as WithClassProp, _ as _cv } from './cv-WFZM6Df-.js';
|
package/build/cv.js
ADDED
package/build/cv.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/build/define.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var K=Object.create;var c=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var _=(e,n)=>{for(var t in n)c(e,t,{get:n[t],enumerable:!0})},d=(e,n,t,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of M(n))!b.call(e,r)&&r!==t&&c(e,r,{get:()=>n[r],enumerable:!(a=A(n,r))||a.enumerable});return e};var q=(e,n,t)=>(t=e!=null?K(U(e)):{},d(n||!e||!e.__esModule?c(t,"default",{value:e,enumerable:!0}):t,e)),N=e=>d(c({},"__esModule",{value:!0}),e);var z={};_(z,{defineCV:()=>I});module.exports=N(z);var l=q(require("clsx"),1);function y({merge:e=n=>n}){return(...n)=>e((0,l.default)(...n))}function m({cn:e}){return(...n)=>{let t=W(...n);return Object.assign(r=>{let o={...r,class:void 0,className:void 0};return e(n.map(s=>s(o)),r?.class,r?.className)},t)}}function W(...e){let n=new Set,t=new Map,a=new Map,r=new Map;return e.forEach(o=>{for(let s of o.variantKeys){n.add(s);let i=new Set(t.get(s));for(let C of o.variantMap[s])i.add(C);t.set(s,Array.from(i)),a.set(s,o.defaultVariants[s]),r.set(s,o.requiredVariants[s])}}),{variantKeys:Array.from(n),variantMap:Object.fromEntries(t),defaultVariants:Object.fromEntries(a),requiredVariants:Object.fromEntries(r)}}var B={__token:"OnlyWhenDefined"},E={__token:"OnlyWhenUndefined"};function R(e){return e?typeof e=="object"&&"__token"in e:!1}function x(e,n){return e.__token===n.__token}function g(e,n){return x(e,B)?n!==void 0:x(e,E)?n===void 0:!1}function k(e){return Object.keys(e)}function j(e){return Object.entries(e)}function w(e){return Object.fromEntries(j(e).map(([n,t])=>[n,k(t)]))}function T({variants:e,defaultVariants:n,requiredVariants:t}){return{variantKeys:k(e??{}),variantMap:w(e??{}),defaultVariants:n??{},requiredVariants:t??{}}}function O({cn:e}){return n=>{let{base:t,variants:a,compoundVariants:r,defaultVariants:o}=n,s=T(n),i=a?typeof r=="function"?r(s):r:void 0;return Object.assign(u=>{let S=a?s.variantKeys.map(V=>{let p=u?.[V],P=o?.[V],f=p?.toString()||P?.toString();return f?a[V][f]:void 0}):void 0,v=i?.reduce((V,p)=>(D(u,p,o)&&V.push(p.class,p.className),V),new Array);return e(t,S,v,u?.class,u?.className)},s)}}function D(e,n,t){return Object.keys(n).every(a=>{if(a==="class"||a==="className")return!0;let r=n[a],o=t?.[a],s=e?.[a];if(R(r))return g(r,s);let i=s??o;return Array.isArray(r)?r.some(C=>h(i,C)):h(i,r)})}function h(e,n){return e?.toString()===n?.toString()}function I({merge:e}={}){let n=y({merge:e}),t=O({cn:n}),a=m({cn:n});return{cn:n,cv:t,compose:a}}0&&(module.exports={defineCV});
|
|
2
|
+
//# sourceMappingURL=define.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/define.ts","../src/cn.ts","../src/compose.ts","../src/tokens.ts","../src/utils.ts","../src/cv.ts"],"sourcesContent":["import { _cn, type CNOptions } from \"./cn\";\r\nimport { _compose } from \"./compose\";\r\nimport { _cv } from \"./cv\";\r\n\r\nexport interface DefineCVOptions extends CNOptions {}\r\n\r\nexport function defineCV({ merge }: DefineCVOptions = {}) {\r\n const cn = _cn({ merge });\r\n\r\n const cv = _cv({ cn });\r\n\r\n const compose = _compose({ cn });\r\n\r\n return { cn, cv, compose } as const;\r\n}\r\n","import clsx, { type ClassValue } from \"clsx\";\r\n\r\nexport interface CNOptions {\r\n merge?: (className: string) => string;\r\n}\r\n\r\nexport interface CN {\r\n (...inputs: ClassValue[]): string;\r\n}\r\n\r\nexport function _cn({ merge = (className) => className }: CNOptions): CN {\r\n return (...inputs) => merge(clsx(...inputs));\r\n}\r\n","import type { RequiredKeys, UnionToIntersection } from \"ts-essentials\";\r\nimport type { CN } from \"./cn\";\r\nimport {\r\n type AnyCVReturn,\r\n type CVReturn,\r\n type CVReturnProps,\r\n type CVVariantsSchema,\r\n type CVPropsValue,\r\n type VariantProps,\r\n type WithClassProp,\r\n} from \"./cv\";\r\nimport type { AnyCVUtils, CVUtils } from \"./utils\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nexport type ExtractVariants<CVR extends AnyCVReturn> = CVR extends CVReturn<infer V, infer _> ? V : never;\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nexport type ExtractRequired<CVR extends AnyCVReturn> = CVR extends CVReturn<infer _, infer R> ? R : never;\r\n\r\ntype OnlyVariantSchema<T> = T extends CVVariantsSchema ? T : never;\r\n\r\ntype MergeVariants<T extends AnyCVReturn[]> = OnlyVariantSchema<UnionToIntersection<ExtractVariants<T[number]>>>;\r\ntype MergeRequiredKeys<T extends AnyCVReturn[]> = ExtractRequired<T[number]>;\r\n\r\nexport interface CVCompose {\r\n <T extends [AnyCVReturn, ...AnyCVReturn[]]>(...components: T): CVReturn<MergeVariants<T>, MergeRequiredKeys<T>>;\r\n}\r\n\r\nexport type CVComposeReturnProps<T extends AnyCVReturn> =\r\n | WithClassProp<VariantProps<T>>\r\n | (RequiredKeys<VariantProps<T>> extends never ? void : never);\r\n\r\nexport function _compose({ cn }: { cn: CN }): CVCompose {\r\n return <T extends AnyCVReturn[]>(...components: T) => {\r\n const utils = composeUtils(...components) as CVUtils<MergeVariants<T>, MergeRequiredKeys<T>>;\r\n\r\n const getVariant = (props: CVReturnProps<MergeVariants<T>, MergeRequiredKeys<T>>) => {\r\n const propsWithoutClass = { ...props, class: undefined, className: undefined };\r\n\r\n return cn(\r\n components.map((component) => component(propsWithoutClass)),\r\n props?.class,\r\n props?.className,\r\n );\r\n };\r\n\r\n return Object.assign(getVariant, utils);\r\n };\r\n}\r\n\r\nexport function composeUtils(...components: AnyCVReturn[]): AnyCVUtils {\r\n const variantKeys = new Set<string>();\r\n const variantMap = new Map<string, CVPropsValue[]>();\r\n const defaultVariants = new Map<string, CVPropsValue>();\r\n const requiredVariants = new Map<string, boolean>();\r\n\r\n components.forEach((component) => {\r\n for (const key of component.variantKeys) {\r\n variantKeys.add(key);\r\n const values = new Set(variantMap.get(key));\r\n for (const value of component.variantMap[key]) {\r\n values.add(value);\r\n }\r\n\r\n variantMap.set(key, Array.from(values));\r\n\r\n defaultVariants.set(key, component.defaultVariants[key]);\r\n requiredVariants.set(key, component.requiredVariants[key]);\r\n }\r\n });\r\n\r\n return {\r\n variantKeys: Array.from(variantKeys),\r\n variantMap: Object.fromEntries(variantMap),\r\n defaultVariants: Object.fromEntries(defaultVariants),\r\n requiredVariants: Object.fromEntries(requiredVariants),\r\n };\r\n}\r\n","import type { Opaque } from \"ts-essentials\";\r\nimport type { CVPropsValue } from \"./cv\";\r\n\r\ntype OnlyWhenDefined = Opaque<{ __token: string }, \"OnlyWhenDefined\">;\r\ntype OnlyWhenUndefined = Opaque<{ __token: string }, \"OnlyWhenUndefined\">;\r\n\r\nexport type CVToken = OnlyWhenDefined | OnlyWhenUndefined;\r\n\r\n/** Apply compound variant only if prop **is** specified */\r\nexport const onlyWhenDefined = { __token: \"OnlyWhenDefined\" } as OnlyWhenDefined;\r\n/** Apply compound variant only if prop **is not** specified */\r\nexport const onlyWhenUndefined = { __token: \"OnlyWhenUndefined\" } as OnlyWhenUndefined;\r\n\r\nexport function isCVToken(token: unknown): token is CVToken {\r\n return token ? typeof token === \"object\" && \"__token\" in token : false;\r\n}\r\nfunction isSpecificCVToken<TReference extends CVToken>(token: CVToken, reference: TReference): token is TReference {\r\n return token.__token === reference.__token;\r\n}\r\n\r\nexport function shouldApplySelectorByToken(token: CVToken, selector: CVPropsValue) {\r\n if (isSpecificCVToken(token, onlyWhenDefined)) return selector !== undefined;\r\n else if (isSpecificCVToken(token, onlyWhenUndefined)) return selector === undefined;\r\n\r\n return false;\r\n}\r\n","// import type { DeepReadonly, DeepWritable, Prettify, UnionToIntersection } from \"ts-essentials\";\r\nimport type { Prettify } from \"ts-essentials\";\r\nimport type { BooleanStringToBoolean, CVConfig, CVVariant, CVVariantsSchema, CVPropsValue, CVVariantKey } from \"./cv\";\r\n\r\nexport function getKeys<O extends Record<string, unknown>>(obj: O) {\r\n return Object.keys(obj) as (keyof O)[];\r\n}\r\n\r\nexport type EntriesOf<O extends Record<string, unknown>> = { [K in keyof O]: [K, O[K]] };\r\nexport function getEntries<O extends Record<string, unknown>>(obj: O) {\r\n return Object.entries(obj) as EntriesOf<O>[keyof EntriesOf<O>][];\r\n}\r\n\r\nexport type VariantMap<V extends CVVariantsSchema> = {\r\n [K in keyof V]: BooleanStringToBoolean<keyof V[K] & CVVariantKey>[];\r\n};\r\nexport function getVariantMap<V extends CVVariantsSchema>(variants: V) {\r\n return Object.fromEntries(getEntries(variants).map(([cvKey, cvVal]) => [cvKey, getKeys(cvVal)])) as VariantMap<V>;\r\n}\r\n\r\nexport interface CVUtils<V extends CVVariantsSchema, R extends keyof V = never> {\r\n variantKeys: (keyof V & CVVariantKey)[];\r\n variantMap: Prettify<VariantMap<V>>;\r\n defaultVariants: Prettify<CVVariant<V>>;\r\n requiredVariants: Prettify<Record<R, boolean>>;\r\n}\r\nexport interface AnyCVUtils {\r\n variantKeys: string[];\r\n variantMap: Record<string, CVPropsValue[]>;\r\n defaultVariants: Record<string, CVPropsValue>;\r\n requiredVariants: Record<string, boolean>;\r\n}\r\n\r\nexport function cvUtils<V extends CVVariantsSchema, R extends keyof V>({\r\n variants,\r\n defaultVariants,\r\n requiredVariants,\r\n}: CVConfig<V, R>) {\r\n return {\r\n variantKeys: getKeys(variants ?? ({} as V)),\r\n variantMap: getVariantMap(variants ?? ({} as V)),\r\n defaultVariants: defaultVariants ?? {},\r\n requiredVariants: requiredVariants ?? {},\r\n } as CVUtils<V, R>;\r\n}\r\n\r\n// type Entries = [PropertyKey, unknown][] | DeepReadonly<[PropertyKey, unknown][]>;\r\n// type UnionFromPairs<TArr extends Entries> =\r\n// DeepWritable<TArr> extends (infer R)[]\r\n// ? R extends [infer key, infer val]\r\n// ? Record<key & PropertyKey, val>\r\n// : never\r\n// : never;\r\n\r\n// type MergeIntersectingObjects<O> = { [K in keyof O]: O[K] };\r\n\r\n// export function objectFromEntries<E extends Entries>(entries: E) {\r\n// return Object.fromEntries(entries) as Prettify<MergeIntersectingObjects<UnionToIntersection<UnionFromPairs<E>>>>;\r\n// }\r\n","import type { ClassValue } from \"clsx\";\r\nimport type { MarkRequired } from \"ts-essentials\";\r\nimport type { CN } from \"./cn\";\r\nimport { isCVToken, shouldApplySelectorByToken, type CVToken } from \"./tokens\";\r\nimport { cvUtils, type AnyCVUtils, type CVUtils } from \"./utils\";\r\n\r\nexport type VariantProps<CVR extends AnyCVReturn> = CVR extends CVReturn<infer V, infer R> ? CVProps<V, R> : never;\r\n\r\nexport type ClassProp = { class?: ClassValue; className?: never } | { class?: never; className?: ClassValue };\r\nexport type WithClassProp<T extends object> = T & ClassProp;\r\n\r\nexport type BooleanStringToBoolean<T> = T extends \"true\" | \"false\" ? boolean : T;\r\n\r\nexport type CVVariantKey = string | number;\r\n\r\nexport type CVVariantsSchema = Record<string, Record<CVVariantKey, ClassValue>>;\r\n\r\nexport type CVVariant<V extends CVVariantsSchema> = {\r\n [K in keyof V]?: BooleanStringToBoolean<keyof V[K] & CVVariantKey>;\r\n};\r\n\r\nexport type CVProps<V extends CVVariantsSchema, R extends keyof V = never> = MarkRequired<CVVariant<V>, R>;\r\n\r\nexport type CVCompoundVariant<V extends CVVariantsSchema> = WithClassProp<{\r\n [K in keyof V]?:\r\n | BooleanStringToBoolean<keyof V[K] & CVVariantKey>\r\n | BooleanStringToBoolean<keyof V[K] & CVVariantKey>[]\r\n | CVToken;\r\n}>;\r\n\r\nexport type CVCompoundVariantsSchema<V extends CVVariantsSchema> = CVCompoundVariant<V>[];\r\n\r\nexport interface CVConfig<V extends CVVariantsSchema, R extends keyof V> {\r\n base?: ClassValue;\r\n variants?: V;\r\n compoundVariants?: CVCompoundVariantsSchema<V> | ((arg: CVUtils<V, R>) => CVCompoundVariantsSchema<V>);\r\n defaultVariants?: CVVariant<V>;\r\n requiredVariants?: Record<R, boolean>;\r\n}\r\n\r\nexport type CVReturnProps<V extends CVVariantsSchema, R extends keyof V = never> =\r\n | WithClassProp<CVProps<V, R>>\r\n | ([R] extends [never] ? void : never);\r\n\r\nexport interface CVReturn<V extends CVVariantsSchema, R extends keyof V = never> extends CVUtils<V, R> {\r\n (props: CVReturnProps<V, R>): string;\r\n}\r\nexport interface AnyCVReturn extends AnyCVUtils {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (props: any): string;\r\n}\r\n\r\nexport interface CV {\r\n <V extends CVVariantsSchema, R extends keyof V = never>(config: CVConfig<V, R>): CVReturn<V, R>;\r\n}\r\n\r\nexport function _cv({ cn }: { cn: CN }): CV {\r\n return <V extends CVVariantsSchema, R extends keyof V = never>(config: CVConfig<V, R>) => {\r\n const { base, variants, compoundVariants, defaultVariants } = config;\r\n\r\n const utils = cvUtils(config);\r\n\r\n const resolvedCompoundVariants = variants\r\n ? typeof compoundVariants === \"function\"\r\n ? compoundVariants(utils)\r\n : compoundVariants\r\n : undefined;\r\n\r\n const getVariant = (props: CVReturnProps<V, R>) => {\r\n const variantClassNames = variants\r\n ? utils.variantKeys.map((variantKey) => {\r\n const variantProp = props?.[variantKey];\r\n const defaultProp = defaultVariants?.[variantKey];\r\n\r\n const variant = variantProp?.toString() || defaultProp?.toString();\r\n\r\n return variant ? variants[variantKey][variant] : undefined;\r\n })\r\n : undefined;\r\n\r\n const compoundVariantClassNames = resolvedCompoundVariants?.reduce((acc, compoundVariant) => {\r\n if (shouldApplyCompoundVariant(props, compoundVariant, defaultVariants))\r\n acc.push(compoundVariant.class, compoundVariant.className);\r\n\r\n return acc;\r\n }, new Array<ClassValue>());\r\n\r\n return cn(base, variantClassNames, compoundVariantClassNames, props?.class, props?.className);\r\n };\r\n\r\n return Object.assign(getVariant, utils);\r\n };\r\n}\r\n\r\nfunction shouldApplyCompoundVariant<V extends CVVariantsSchema, R extends keyof V>(\r\n props: CVReturnProps<V, R>,\r\n matcher: CVCompoundVariant<V>,\r\n defaults: CVVariant<V> | undefined,\r\n) {\r\n return Object.keys(matcher).every((cvKey) => {\r\n if (cvKey === \"class\" || cvKey === \"className\") return true;\r\n\r\n const cvSelector = matcher[cvKey];\r\n\r\n const defaultsSelector = defaults?.[cvKey as keyof typeof defaults];\r\n const propsSelector = props?.[cvKey as keyof typeof props];\r\n\r\n if (isCVToken(cvSelector)) return shouldApplySelectorByToken(cvSelector, propsSelector);\r\n\r\n const selector = propsSelector ?? defaultsSelector;\r\n\r\n return Array.isArray(cvSelector)\r\n ? cvSelector.some((cvSelector) => compareSelectors(selector, cvSelector))\r\n : compareSelectors(selector, cvSelector);\r\n });\r\n}\r\n\r\nexport type CVPropsValue = CVVariantKey | boolean | undefined;\r\nfunction compareSelectors(selector1: CVPropsValue, selector2: CVPropsValue) {\r\n return selector1?.toString() === selector2?.toString();\r\n}\r\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,IAAA,eAAAC,EAAAH,GCAA,IAAAI,EAAsC,qBAU/B,SAASC,EAAI,CAAE,MAAAC,EAASC,GAAcA,CAAU,EAAkB,CACrE,MAAO,IAAIC,IAAWF,KAAM,EAAAG,SAAK,GAAGD,CAAM,CAAC,CAC/C,CCmBO,SAASE,EAAS,CAAE,GAAAC,CAAG,EAA0B,CACpD,MAAO,IAA6BC,IAAkB,CAClD,IAAMC,EAAQC,EAAa,GAAGF,CAAU,EAYxC,OAAO,OAAO,OAVMG,GAAiE,CACjF,IAAMC,EAAoB,CAAE,GAAGD,EAAO,MAAO,OAAW,UAAW,MAAU,EAE7E,OAAOJ,EACHC,EAAW,IAAKK,GAAcA,EAAUD,CAAiB,CAAC,EAC1DD,GAAO,MACPA,GAAO,SACX,CACJ,EAEiCF,CAAK,CAC1C,CACJ,CAEO,SAASC,KAAgBF,EAAuC,CACnE,IAAMM,EAAc,IAAI,IAClBC,EAAa,IAAI,IACjBC,EAAkB,IAAI,IACtBC,EAAmB,IAAI,IAE7B,OAAAT,EAAW,QAASK,GAAc,CAC9B,QAAWK,KAAOL,EAAU,YAAa,CACrCC,EAAY,IAAII,CAAG,EACnB,IAAMC,EAAS,IAAI,IAAIJ,EAAW,IAAIG,CAAG,CAAC,EAC1C,QAAWE,KAASP,EAAU,WAAWK,CAAG,EACxCC,EAAO,IAAIC,CAAK,EAGpBL,EAAW,IAAIG,EAAK,MAAM,KAAKC,CAAM,CAAC,EAEtCH,EAAgB,IAAIE,EAAKL,EAAU,gBAAgBK,CAAG,CAAC,EACvDD,EAAiB,IAAIC,EAAKL,EAAU,iBAAiBK,CAAG,CAAC,CAC7D,CACJ,CAAC,EAEM,CACH,YAAa,MAAM,KAAKJ,CAAW,EACnC,WAAY,OAAO,YAAYC,CAAU,EACzC,gBAAiB,OAAO,YAAYC,CAAe,EACnD,iBAAkB,OAAO,YAAYC,CAAgB,CACzD,CACJ,CCnEO,IAAMI,EAAkB,CAAE,QAAS,iBAAkB,EAE/CC,EAAoB,CAAE,QAAS,mBAAoB,EAEzD,SAASC,EAAUC,EAAkC,CACxD,OAAOA,EAAQ,OAAOA,GAAU,UAAY,YAAaA,EAAQ,EACrE,CACA,SAASC,EAA8CD,EAAgBE,EAA4C,CAC/G,OAAOF,EAAM,UAAYE,EAAU,OACvC,CAEO,SAASC,EAA2BH,EAAgBI,EAAwB,CAC/E,OAAIH,EAAkBD,EAAOH,CAAe,EAAUO,IAAa,OAC1DH,EAAkBD,EAAOF,CAAiB,EAAUM,IAAa,OAEnE,EACX,CCrBO,SAASC,EAA2CC,EAAQ,CAC/D,OAAO,OAAO,KAAKA,CAAG,CAC1B,CAGO,SAASC,EAA8CD,EAAQ,CAClE,OAAO,OAAO,QAAQA,CAAG,CAC7B,CAKO,SAASE,EAA0CC,EAAa,CACnE,OAAO,OAAO,YAAYF,EAAWE,CAAQ,EAAE,IAAI,CAAC,CAACC,EAAOC,CAAK,IAAM,CAACD,EAAOL,EAAQM,CAAK,CAAC,CAAC,CAAC,CACnG,CAeO,SAASC,EAAuD,CACnE,SAAAH,EACA,gBAAAI,EACA,iBAAAC,CACJ,EAAmB,CACf,MAAO,CACH,YAAaT,EAAQI,GAAa,CAAC,CAAO,EAC1C,WAAYD,EAAcC,GAAa,CAAC,CAAO,EAC/C,gBAAiBI,GAAmB,CAAC,EACrC,iBAAkBC,GAAoB,CAAC,CAC3C,CACJ,CCYO,SAASC,EAAI,CAAE,GAAAC,CAAG,EAAmB,CACxC,OAA+DC,GAA2B,CACtF,GAAM,CAAE,KAAAC,EAAM,SAAAC,EAAU,iBAAAC,EAAkB,gBAAAC,CAAgB,EAAIJ,EAExDK,EAAQC,EAAQN,CAAM,EAEtBO,EAA2BL,EAC3B,OAAOC,GAAqB,WACxBA,EAAiBE,CAAK,EACtBF,EACJ,OAwBN,OAAO,OAAO,OAtBMK,GAA+B,CAC/C,IAAMC,EAAoBP,EACpBG,EAAM,YAAY,IAAKK,GAAe,CAClC,IAAMC,EAAcH,IAAQE,CAAU,EAChCE,EAAcR,IAAkBM,CAAU,EAE1CG,EAAUF,GAAa,SAAS,GAAKC,GAAa,SAAS,EAEjE,OAAOC,EAAUX,EAASQ,CAAU,EAAEG,CAAO,EAAI,MACrD,CAAC,EACD,OAEAC,EAA4BP,GAA0B,OAAO,CAACQ,EAAKC,KACjEC,EAA2BT,EAAOQ,EAAiBZ,CAAe,GAClEW,EAAI,KAAKC,EAAgB,MAAOA,EAAgB,SAAS,EAEtDD,GACR,IAAI,KAAmB,EAE1B,OAAOhB,EAAGE,EAAMQ,EAAmBK,EAA2BN,GAAO,MAAOA,GAAO,SAAS,CAChG,EAEiCH,CAAK,CAC1C,CACJ,CAEA,SAASY,EACLT,EACAU,EACAC,EACF,CACE,OAAO,OAAO,KAAKD,CAAO,EAAE,MAAOE,GAAU,CACzC,GAAIA,IAAU,SAAWA,IAAU,YAAa,MAAO,GAEvD,IAAMC,EAAaH,EAAQE,CAAK,EAE1BE,EAAmBH,IAAWC,CAA8B,EAC5DG,EAAgBf,IAAQY,CAA2B,EAEzD,GAAII,EAAUH,CAAU,EAAG,OAAOI,EAA2BJ,EAAYE,CAAa,EAEtF,IAAMG,EAAWH,GAAiBD,EAElC,OAAO,MAAM,QAAQD,CAAU,EACzBA,EAAW,KAAMA,GAAeM,EAAiBD,EAAUL,CAAU,CAAC,EACtEM,EAAiBD,EAAUL,CAAU,CAC/C,CAAC,CACL,CAGA,SAASM,EAAiBC,EAAyBC,EAAyB,CACxE,OAAOD,GAAW,SAAS,IAAMC,GAAW,SAAS,CACzD,CLlHO,SAASC,EAAS,CAAE,MAAAC,CAAM,EAAqB,CAAC,EAAG,CACtD,IAAMC,EAAKC,EAAI,CAAE,MAAAF,CAAM,CAAC,EAElBG,EAAKC,EAAI,CAAE,GAAAH,CAAG,CAAC,EAEfI,EAAUC,EAAS,CAAE,GAAAL,CAAG,CAAC,EAE/B,MAAO,CAAE,GAAAA,EAAI,GAAAE,EAAI,QAAAE,CAAQ,CAC7B","names":["define_exports","__export","defineCV","__toCommonJS","import_clsx","_cn","merge","className","inputs","clsx","_compose","cn","components","utils","composeUtils","props","propsWithoutClass","component","variantKeys","variantMap","defaultVariants","requiredVariants","key","values","value","onlyWhenDefined","onlyWhenUndefined","isCVToken","token","isSpecificCVToken","reference","shouldApplySelectorByToken","selector","getKeys","obj","getEntries","getVariantMap","variants","cvKey","cvVal","cvUtils","defaultVariants","requiredVariants","_cv","cn","config","base","variants","compoundVariants","defaultVariants","utils","cvUtils","resolvedCompoundVariants","props","variantClassNames","variantKey","variantProp","defaultProp","variant","compoundVariantClassNames","acc","compoundVariant","shouldApplyCompoundVariant","matcher","defaults","cvKey","cvSelector","defaultsSelector","propsSelector","isCVToken","shouldApplySelectorByToken","selector","compareSelectors","selector1","selector2","defineCV","merge","cn","_cn","cv","_cv","compose","_compose"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CVCompose } from './compose.cjs';
|
|
2
|
+
import { C as CV } from './cv-BWSJNbxE.cjs';
|
|
3
|
+
import { CNOptions, CN } from './cn.cjs';
|
|
4
|
+
import 'ts-essentials';
|
|
5
|
+
import 'clsx';
|
|
6
|
+
|
|
7
|
+
interface DefineCVOptions extends CNOptions {
|
|
8
|
+
}
|
|
9
|
+
declare function defineCV({ merge }?: DefineCVOptions): {
|
|
10
|
+
readonly cn: CN;
|
|
11
|
+
readonly cv: CV;
|
|
12
|
+
readonly compose: CVCompose;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { type DefineCVOptions, defineCV };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CVCompose } from './compose.js';
|
|
2
|
+
import { C as CV } from './cv-WFZM6Df-.js';
|
|
3
|
+
import { CNOptions, CN } from './cn.js';
|
|
4
|
+
import 'ts-essentials';
|
|
5
|
+
import 'clsx';
|
|
6
|
+
|
|
7
|
+
interface DefineCVOptions extends CNOptions {
|
|
8
|
+
}
|
|
9
|
+
declare function defineCV({ merge }?: DefineCVOptions): {
|
|
10
|
+
readonly cn: CN;
|
|
11
|
+
readonly cv: CV;
|
|
12
|
+
readonly compose: CVCompose;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { type DefineCVOptions, defineCV };
|
package/build/define.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/build/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var M=Object.create;var c=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var W=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var q=(e,n)=>{for(var t in n)c(e,t,{get:n[t],enumerable:!0})},m=(e,n,t,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of N(n))!_.call(e,r)&&r!==t&&c(e,r,{get:()=>n[r],enumerable:!(a=b(n,r))||a.enumerable});return e};var B=(e,n,t)=>(t=e!=null?M(W(e)):{},m(n||!e||!e.__esModule?c(t,"default",{value:e,enumerable:!0}):t,e)),E=e=>m(c({},"__esModule",{value:!0}),e);var H={};q(H,{cn:()=>z,compose:()=>G,cv:()=>F,defineCV:()=>l,onlyWhenDefined:()=>f,onlyWhenUndefined:()=>d});module.exports=E(H);var f={__token:"OnlyWhenDefined"},d={__token:"OnlyWhenUndefined"};function R(e){return e?typeof e=="object"&&"__token"in e:!1}function x(e,n){return e.__token===n.__token}function g(e,n){return x(e,f)?n!==void 0:x(e,d)?n===void 0:!1}var h=B(require("clsx"),1);function k({merge:e=n=>n}){return(...n)=>e((0,h.default)(...n))}function T({cn:e}){return(...n)=>{let t=j(...n);return Object.assign(r=>{let o={...r,class:void 0,className:void 0};return e(n.map(s=>s(o)),r?.class,r?.className)},t)}}function j(...e){let n=new Set,t=new Map,a=new Map,r=new Map;return e.forEach(o=>{for(let s of o.variantKeys){n.add(s);let i=new Set(t.get(s));for(let C of o.variantMap[s])i.add(C);t.set(s,Array.from(i)),a.set(s,o.defaultVariants[s]),r.set(s,o.requiredVariants[s])}}),{variantKeys:Array.from(n),variantMap:Object.fromEntries(t),defaultVariants:Object.fromEntries(a),requiredVariants:Object.fromEntries(r)}}function S(e){return Object.keys(e)}function w(e){return Object.entries(e)}function D(e){return Object.fromEntries(w(e).map(([n,t])=>[n,S(t)]))}function P({variants:e,defaultVariants:n,requiredVariants:t}){return{variantKeys:S(e??{}),variantMap:D(e??{}),defaultVariants:n??{},requiredVariants:t??{}}}function O({cn:e}){return n=>{let{base:t,variants:a,compoundVariants:r,defaultVariants:o}=n,s=P(n),i=a?typeof r=="function"?r(s):r:void 0;return Object.assign(u=>{let K=a?s.variantKeys.map(V=>{let p=u?.[V],A=o?.[V],y=p?.toString()||A?.toString();return y?a[V][y]:void 0}):void 0,U=i?.reduce((V,p)=>(I(u,p,o)&&V.push(p.class,p.className),V),new Array);return e(t,K,U,u?.class,u?.className)},s)}}function I(e,n,t){return Object.keys(n).every(a=>{if(a==="class"||a==="className")return!0;let r=n[a],o=t?.[a],s=e?.[a];if(R(r))return g(r,s);let i=s??o;return Array.isArray(r)?r.some(C=>v(i,C)):v(i,r)})}function v(e,n){return e?.toString()===n?.toString()}function l({merge:e}={}){let n=k({merge:e}),t=O({cn:n}),a=T({cn:n});return{cn:n,cv:t,compose:a}}var{cn:z,cv:F,compose:G}=l();0&&(module.exports={cn,compose,cv,defineCV,onlyWhenDefined,onlyWhenUndefined});
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|