@klass/solid
Version:
Class variant utility for Solid
28 lines (27 loc) • 1.42 kB
TypeScript
import type { JSX, ValidComponent } from "solid-js";
import type { ClassValue, RestrictedVariantsKey, StrictVariantsSchema, KlassFn, VariantsOf, ConditionSchema, ReklassFn } from "@klass/core";
import type { Classes } from "./solid";
import type { PolymorphicComponentProp } from "./polymorphic";
type FinalRestrictedVariantsKey = RestrictedVariantsKey | Classes;
type FinalVariantsSchema = StrictVariantsSchema<FinalRestrictedVariantsKey>;
type ClassesValueProps = Partial<Record<Classes, ClassValue>>;
type WithClassesValueProps<P extends {}> = Omit<P, keyof ClassesValueProps> & ClassesValueProps;
type KlassedComponent<VC extends ValidComponent, VS extends FinalVariantsSchema> = {
<C extends ValidComponent = VC>(props: PolymorphicComponentProp<C, WithClassesValueProps<VariantsOf<KlassFn<VS>>>>): JSX.Element | null;
} & {
/**
* klass function
*/
klass: KlassFn<VS>;
};
type ReklassedComponent<VC extends ValidComponent, CS extends ConditionSchema, VS extends FinalVariantsSchema> = {
<C extends ValidComponent = VC>(props: PolymorphicComponentProp<C, WithClassesValueProps<VariantsOf<ReklassFn<CS, VS>>>>): JSX.Element | null;
} & {
/**
* reklass function
*/
reklass: ReklassFn<CS, VS>;
};
export type { ClassesValueProps, WithClassesValueProps };
export type { FinalRestrictedVariantsKey, FinalVariantsSchema };
export type { KlassedComponent, ReklassedComponent };