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 SelectSkin extends FloatingLabelStyles { /** Type scale per size; label, trigger value, and rows share it so they line up. */ text: (size: Size) => TextStyle; /** The stacked (above-trigger) label type, used on iOS + web (`floatingLabel: * false`). On Android the label FLOATS inside the trigger instead (see * FloatingLabelStyles: `floatingLabel`, `labelRest`/`labelFloated`/`labelReserve`). */ label: (t: ColorTokens, size: Size) => TextStyle; /** The INLINE label type: a muted small label rendered as a leading cluster * INSIDE the trigger row (before the value) when `inline` is set alongside * `label`, for a toolbar-style labeled select. Per-OS type; not the persistent * above/floating placement. */ inlineLabel: (t: ColorTokens, size: Size) => TextStyle; /** The trigger surface: shape, fill, border/underline; `open` lights the active state. */ trigger: (t: ColorTokens, size: Size, open: boolean) => ViewStyle; /** The leading cluster inside the trigger (optional icon + value/placeholder). */ triggerValue: ViewStyle; /** The trigger value text: foreground when a value is selected, muted otherwise. */ valueText: (t: ColorTokens, size: Size, hasValue: boolean) => TextStyle; /** The trailing chevron glyph. Different character per platform; `open` lets * Android tint it with the brand `primary` when the menu is expanded. */ chevron: (t: ColorTokens, size: Size, open: boolean) => TextStyle; /** The chevron character (▾ on web, ⌄ on Android, chevron-up-down on iOS). */ chevronGlyph: string; /** The open option list surface: card visuals only (fill, border, shadow, * radius, padding, maxHeight). AnchoredOverlay paints it on its OPAQUE plain * surface (no glass material, in glass mode as in solid) and supplies the * on-page position; the inline no-host fallback adds PANEL_ANCHOR for the * absolute anchoring. */ panel: (t: ColorTokens) => ViewStyle; /** An option row. `selected` carries the active tint. */ optionRow: (t: ColorTokens, selected: boolean) => 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 on press (web/iOS dim via this; Android uses a ripple). */ optionPressed: (t: ColorTokens) => ViewStyle; /** Option row text (label + the indicator glyph). */ optionText: (t: ColorTokens, size: Size) => TextStyle; /** The selected-row indicator glyph (✓) styled in the platform's accent. */ indicator: (t: ColorTokens, size: Size) => TextStyle; /** Which side the selection indicator renders on. */ selectedSide: "leading" | "trailing"; /** Opacity applied to the trigger when disabled. */ disabledOpacity: number; /** iOS/web dim the trigger + rows on press; Android uses a ripple instead (null). */ pressedOpacity: number | null; /** Android ripple over the trigger and the rows; null on iOS/web. */ ripple: ((t: ColorTokens) => { color: string; borderless: boolean; }) | null; } export declare const root: ViewStyle; export declare const rootLifted: ViewStyle; export declare const PANEL_ANCHOR: ViewStyle; export declare const webSkin: SelectSkin; export declare const iosSkin: SelectSkin; export declare const androidSkin: SelectSkin; //# sourceMappingURL=select.styles.d.ts.map