Spaces:
Sleeping
Sleeping
| /** | |
| * Copyright 2022 Joe Bell. All rights reserved. | |
| * | |
| * This file is licensed to you under the Apache License, Version 2.0 | |
| * (the "License"); you may not use this file except in compliance with the | |
| * License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | |
| * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the | |
| * License for the specific language governing permissions and limitations under | |
| * the License. | |
| */ import { clsx } from "clsx"; | |
| const falsyToString = (value)=>typeof value === "boolean" ? `${value}` : value === 0 ? "0" : value; | |
| export const cx = clsx; | |
| export const cva = (base, config)=>(props)=>{ | |
| var _config_compoundVariants; | |
| if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className); | |
| const { variants, defaultVariants } = config; | |
| const getVariantClassNames = Object.keys(variants).map((variant)=>{ | |
| const variantProp = props === null || props === void 0 ? void 0 : props[variant]; | |
| const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant]; | |
| if (variantProp === null) return null; | |
| const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp); | |
| return variants[variant][variantKey]; | |
| }); | |
| const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{ | |
| let [key, value] = param; | |
| if (value === undefined) { | |
| return acc; | |
| } | |
| acc[key] = value; | |
| return acc; | |
| }, {}); | |
| const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{ | |
| let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param; | |
| return Object.entries(compoundVariantOptions).every((param)=>{ | |
| let [key, value] = param; | |
| return Array.isArray(value) ? value.includes({ | |
| ...defaultVariants, | |
| ...propsWithoutUndefined | |
| }[key]) : ({ | |
| ...defaultVariants, | |
| ...propsWithoutUndefined | |
| })[key] === value; | |
| }) ? [ | |
| ...acc, | |
| cvClass, | |
| cvClassName | |
| ] : acc; | |
| }, []); | |
| return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className); | |
| }; | |