import { type ViewStyle, type TextStyle } from "react-native"; import { type ColorTokens, type FloatingLabelStyles } from "../../style/index.js"; export type Size = "small" | "base" | "large"; export interface InputSkin extends FloatingLabelStyles { /** Type scale per size; the field and its addons share it so they line up. */ text: (t: ColorTokens, size: Size) => TextStyle; /** Height of the single-line bare field. */ bareBox: (size: Size) => TextStyle; /** Total (border-box) height of the grouped layout, matching the bare field. * The shell enforces it as minHeight on the group container, so the row keeps * its height even when no addon box is present (icon-only groups). */ groupedHeight: (size: Size) => number; /** The bare field surface: shape, fill, border/underline for the active state. */ bareField: (t: ColorTokens, borderColor: keyof ColorTokens, focused: boolean, error: boolean) => TextStyle; /** The grouped (addon) outer: the row that shares one border/underline. */ groupContainer: (t: ColorTokens, borderColor: keyof ColorTokens, focused: boolean, error: boolean) => ViewStyle; /** The inner field inside the group (fills the field area; pads away from icons and * from prefix/suffix affixes so the value hugs an inline affix — see groupField). */ groupField: (t: ColorTokens, opts: { leadingIcon: boolean; trailingIcon: boolean; hasPrefix: boolean; hasSuffix: boolean; }) => TextStyle; /** A prefix/suffix addon box. Stretches to the row height (alignItems stretch); * it must not set its own height, or it would re-inflate the container past * groupedHeight by the border/indicator band. */ addonBox: (t: ColorTokens, side: "left" | "right") => ViewStyle; addonText: (t: ColorTokens) => TextStyle; actionText: (t: ColorTokens) => TextStyle; /** Overlaid icon position inside the field area (left or right gutter). The shell * anchors it to the field-area wrapper — the container's CONTENT box — never to * the bordered container itself: the Android active indicator changes the * container's border/padding band on focus, and an overlay spanning that band * would re-center and visibly shift its icon by half the change. */ iconOverlay: (side: "left" | "right") => ViewStyle; /** Opacity applied to the field when disabled. */ disabledOpacity: number; /** iOS/web dim the action suffix on press; Android uses a ripple instead (null). */ pressedOpacity: number | null; /** Android ripple over the action suffix; null on iOS/web. */ ripple: ((t: ColorTokens) => { color: string; borderless: boolean; }) | null; } export declare const webSkin: InputSkin; export declare const iosSkin: InputSkin; export declare const androidSkin: InputSkin; //# sourceMappingURL=input.styles.d.ts.map