// packages/core/src/components/text-field/text-field-context.ts import type { Accessor } from "solid-js"; import { createContext, useContext } from "solid-js"; export interface TextFieldContextValue { inputId: Accessor; descriptionId: Accessor; errorMessageId: Accessor; invalid: Accessor; disabled: Accessor; required: Accessor; setDescriptionId: (id: string | undefined) => void; setErrorMessageId: (id: string | undefined) => void; } const TextFieldContext = createContext(); /** * Returns the TextField context. Throws if used outside . */ export function useTextFieldContext(): TextFieldContextValue { const ctx = useContext(TextFieldContext); if (!ctx) { throw new Error( "[PettyUI] TextField parts must be used inside .\n" + " Fix: Wrap TextField.Label, TextField.Input, etc. inside .", ); } return ctx; } export const TextFieldContextProvider = TextFieldContext.Provider;