import { type ViewStyle, type TextStyle } from "react-native"; import { type ColorTokens, type FloatingLabelStyles } from "../../style/index.js"; export type Size = "small" | "default" | "large"; export interface AutocompleteSkin extends FloatingLabelStyles { /** Type scale per size; the field text and the option rows share it. */ text: (size: Size) => TextStyle; /** Stacked (above-field) label type, used on iOS + web (`floatingLabel: false`). * On Android the label FLOATS inside the field instead (see FloatingLabelStyles: * `floatingLabel`, `labelRest`/`labelFloated`/`labelReserve`). */ label: (t: ColorTokens, size: Size) => TextStyle; /** The editable field surface: shape, fill, border/underline for the open state. */ field: (t: ColorTokens, size: Size, open: boolean) => ViewStyle; /** The field's value text (foreground), or muted for the placeholder. */ fieldText: (t: ColorTokens, size: Size, muted: boolean) => TextStyle; /** The trailing disclosure chevron. */ chevron: (t: ColorTokens, size: Size) => TextStyle; /** * The open option list CARD: radius, fill, border, elevation/shadow, padding, * max-height. Positioning is owned by the shell (AnchoredOverlay portals and * anchors it; POPOVER_ANCHOR is the no-host inline fallback), so this returns * card visuals only, no position/top/zIndex. */ popover: (t: ColorTokens) => ViewStyle; /** The "No results" row box. */ emptyRow: ViewStyle; emptyText: (t: ColorTokens, size: Size) => TextStyle; /** A single option row's layout (gutter, radius, padding). */ row: ViewStyle; /** * Optional hairline group separator applied to every row after the first, so * the menu reads as iOS's separated item groups. Skins that omit it (web, * Android) render borderless rows exactly as before. */ rowSeparator?: (t: ColorTokens) => ViewStyle; /** * The fill applied to the SELECTED row at rest. iOS marks selection with the * leading check only (no rest fill), so it returns null; web/Android tint with * the brand `accent`. */ rowSelected: (t: ColorTokens) => ViewStyle | null; /** * The transient fill applied while a row is PRESSED. iOS uses the neutral list * tint (`secondary`); web/Android tint with the brand `accent`. */ rowPressed: (t: ColorTokens) => ViewStyle; /** The leading check column. */ check: (t: ColorTokens, size: Size) => TextStyle; /** The option label. */ optionText: (t: ColorTokens, size: Size) => TextStyle; /** Helper line below the option list. */ helper: (t: ColorTokens) => TextStyle; /** Opacity applied to the whole control when disabled. */ disabledOpacity: number; /** iOS/web dim the field on press; Android uses a ripple instead (null). */ pressedOpacity: number | null; /** Android ripple over the pressable surfaces; null on iOS/web. */ ripple: ((t: ColorTokens) => { color: string; borderless: boolean; }) | null; } export declare const wrapper: ViewStyle; export declare const wrapperLifted: ViewStyle; export declare const webSkin: AutocompleteSkin; export declare const iosSkin: AutocompleteSkin; export declare const androidSkin: AutocompleteSkin; //# sourceMappingURL=autocomplete.styles.d.ts.map