import { type ViewStyle, type TextStyle } from "react-native"; import { type ColorTokens } from "../../style/index.js"; export interface DropdownSkin { /** Exact compact application menu typography and frame. */ reference?: { card: (t: ColorTokens) => ViewStyle; label: TextStyle; description: (t: ColorTokens) => TextStyle; detail: (t: ColorTokens) => TextStyle; section: (t: ColorTokens) => TextStyle; note: (t: ColorTokens) => ViewStyle; noteText: (t: ColorTokens) => TextStyle; /** The compact row's own box, over `itemRow`. */ row?: ViewStyle; }; /** 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. iOS and Android set it at 14/20 over 12/16; the web * in Dark Factory's row label over its caption. */ 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; /** The instant look of a resting row under the pointer (the web's wash); null where there is none. */ itemHover: ((t: ColorTokens) => ViewStyle) | null; /** The space between rows. */ rowGap: number; /** Item label type scale. */ itemTextType: TextStyle; /** Leading Canvas icon size (px), sized to sit with the label per platform. */ iconSize: number; /** The ink of a resting row's leading icon; the label's ink when omitted. */ iconColor?: (t: ColorTokens) => string; /** Item label color; branches on `destructive`. Icons retain their graphic role. */ itemTextColor: (t: ColorTokens, dark: boolean, destructive: boolean) => TextStyle; /** Trailing keyboard shortcut, right-aligned and muted. */ shortcut: (t: ColorTokens) => TextStyle; /** The trailing chevron of a `submenu` row: its size; its ink is the shortcut's. */ submenuSize: number; /** * How a selected choice reads where the platform marks it with a leading check (the * web): its row's wash, the check's size and ink, and the label's ink. A menu holding a * selected choice indents its glyphless rows by the check's width so the labels align. * Omitted, the selected label takes the accent ink alone. */ selectedMark?: { wash: (t: ColorTokens) => ViewStyle; size: number; color: (t: ColorTokens) => string; }; /** The trigger's look, as Button booleans. */ trigger: { outline?: boolean; secondary?: boolean; chevron: boolean; }; /** Standoff between the trigger and the menu card, in px. Skin-owned rather than * caller-owned: it is a platform number (the hand-off's 6 on the web, 4 on the native * menus, which the account pill's menu raises to 6 for its taller trigger), and a * spacing prop on a public component would be the re-spacing escape hatch. */ menuGap: number; /** The dim on a disabled custom trigger (the caller's own node, so a dim is all the shell can do). */ disabledOpacity: number; /** A disabled row: the dim it takes, and whether its label and icon go to the muted ink instead. */ disabledRow: { opacity: number; muted: boolean; }; /** 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