import { type ViewStyle, type TextStyle } from "react-native"; import { type ColorTokens } from "../../style/index.js"; export interface DropdownSkin { /** The floating menu card: shape, fill, border (or lack of), shadow, padding. * The shell supplies the measured minWidth inline. */ menuCard: (t: ColorTokens) => ViewStyle; /** Muted section heading rendered above the rows. */ menuLabel: (t: ColorTokens) => TextStyle; /** The identity header block (title over description) rendered ABOVE both the * section label and the rows, when `title`/`description` are passed. Its * gutter matches `menuLabel`'s, so the header, the label, and the row labels * share one start column; the type scale is deliberately the SAME on all * three platforms (the hand-off hard-codes it, there is no per-platform * header token), so only the gutter is a per-OS value. */ menuHeader: ViewStyle; /** The header's title line, in the popover foreground. */ menuHeaderTitle: (t: ColorTokens) => TextStyle; /** The header's muted second line under the title. */ menuHeaderDescription: (t: ColorTokens) => TextStyle; /** A hairline separator above a row that starts a new group. iOS/web draw one; * Android (M3) returns null (no dividers). */ separator: ((t: ColorTokens) => ViewStyle) | null; /** An item row layout (the flex-row + gap + radius + padding box). */ itemRow: ViewStyle; /** The fill applied to a pressed row (iOS/web tint here; Android uses a * ripple, so this is null). */ itemPressed: ((t: ColorTokens) => ViewStyle) | null; /** Item label type scale. */ itemTextType: TextStyle; /** Leading Canvas icon size (px), sized to sit with the label per platform. */ iconSize: number; /** Item icon + label color; branches on `destructive`. */ itemTextColor: (t: ColorTokens, dark: boolean, destructive: boolean) => TextStyle; /** Trailing keyboard shortcut, right-aligned and muted. */ shortcut: (t: ColorTokens) => TextStyle; /** Opacity applied to a disabled row. */ /** Standoff between the trigger and the menu card, in px. Skin-owned rather than * caller-owned: a menu built for a taller trigger stands off further (the * hand-off's account pill uses 6 where a plain dropdown uses 4), and a spacing * prop on a public component would be the re-spacing escape hatch. */ menuGap: number; disabledOpacity: number; /** iOS/web dim a row on press via this; Android uses a ripple instead (null). */ pressedOpacity: number | null; /** Android ripple over the rows; 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 customTrigger: ViewStyle; export declare const webSkin: DropdownSkin; export declare const iosSkin: DropdownSkin; export declare const androidSkin: DropdownSkin; //# sourceMappingURL=dropdown.styles.d.ts.map