import type { ValidComponent } from "solid-js"; import { mergeProps, splitProps } from "solid-js"; import type { PolymorphicProps } from "@kobalte/core"; import * as TextFieldPrimitive from "@kobalte/core/text-field"; import { cva } from "class-variance-authority"; import { cn } from "~/lib/utils"; type TextFieldRootProps = TextFieldPrimitive.TextFieldRootProps & { class?: string | undefined; }; const TextField = (props: PolymorphicProps>) => { const [local, others] = splitProps(props as TextFieldRootProps, ["class"]); return ( ); }; type TextFieldInputProps = TextFieldPrimitive.TextFieldInputProps & { class?: string | undefined; type?: | "button" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "file" | "hidden" | "image" | "month" | "number" | "password" | "radio" | "range" | "reset" | "search" | "submit" | "tel" | "text" | "time" | "url" | "week"; }; const TextFieldInput = (rawProps: PolymorphicProps>) => { const props = mergeProps[]>({ type: "text" }, rawProps); const [local, others] = splitProps(props as TextFieldInputProps, ["type", "class"]); return ( ); }; type TextFieldTextAreaProps = TextFieldPrimitive.TextFieldTextAreaProps & { class?: string | undefined; }; const TextFieldTextArea = ( props: PolymorphicProps>, ) => { const [local, others] = splitProps(props as TextFieldTextAreaProps, ["class"]); return ( ); }; const labelVariants = cva( "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", { variants: { variant: { label: "data-[invalid]:text-destructive", description: "font-normal text-muted-foreground", error: "text-xs text-destructive", }, }, defaultVariants: { variant: "label", }, }, ); type TextFieldLabelProps = TextFieldPrimitive.TextFieldLabelProps & { class?: string | undefined; }; const TextFieldLabel = (props: PolymorphicProps>) => { const [local, others] = splitProps(props as TextFieldLabelProps, ["class"]); return ( ); }; type TextFieldDescriptionProps = TextFieldPrimitive.TextFieldDescriptionProps & { class?: string | undefined; }; const TextFieldDescription = ( props: PolymorphicProps>, ) => { const [local, others] = splitProps(props as TextFieldDescriptionProps, ["class"]); return ( ); }; type TextFieldErrorMessageProps = TextFieldPrimitive.TextFieldErrorMessageProps & { class?: string | undefined; }; const TextFieldErrorMessage = ( props: PolymorphicProps>, ) => { const [local, others] = splitProps(props as TextFieldErrorMessageProps, ["class"]); return ( ); }; export { TextField, TextFieldDescription, TextFieldErrorMessage, TextFieldInput, TextFieldLabel, TextFieldTextArea };