import { type ViewStyle, type TextStyle } from "react-native"; import { type ColorTokens } from "../../style/index.js"; import { type IconName } from "../../atoms/icon/icon.js"; export interface RowMenuItem { label: string; /** Optional leading Canvas glyph, named from the kit icon set (e.g. `"pencil"`, * `"copy"`, `"trash"`). Rendered through the `Icon` atom, tinted to match the * row (destructive rows go red). */ icon?: IconName; /** Red-tinted row for destructive actions (e.g. Delete). */ destructive?: boolean; /** Draw a hairline separator above this row to start a new group. */ separatorBefore?: boolean; /** Dim the row and make it inert: it does not fire `onSelect`, does not close the menu, and * is announced as disabled (for an action that is unavailable in the current context, e.g. * "Clear column" on an already-empty column). */ disabled?: boolean; } export interface RowMenuSkin { /** The relative anchor: keeps the trigger from stretching, positions the card. */ anchor: ViewStyle; /** The ⋯ icon-button surface (square, centered, platform radius). */ trigger: ViewStyle; /** The ⋯ (moreHorizontal) Canvas trigger glyph size (px), per platform. */ triggerIconSize: number; /** The fill applied to the trigger on press (web/iOS tint via this; Android ripples). */ triggerPressed: (t: ColorTokens) => ViewStyle; /** The floating menu card surface (shape, fill, border, shadow, radius). The * shell adds the measured minWidth and positions the card via AnchoredOverlay. */ menuCard: (t: ColorTokens) => ViewStyle; /** The menu's min-width floor; the card never renders narrower than this. */ menuMinWidth: number; /** The muted section heading above the rows. */ menuLabel: (t: ColorTokens) => TextStyle; /** A single action/link row layout. */ itemRow: ViewStyle; /** The fill applied to a row on press (web/iOS tint via this; Android ripples). */ itemPressed: (t: ColorTokens) => ViewStyle; /** The hairline separator above a row that sets `separatorBefore`. Always rendered * when an item requests it, on every platform (both HIG and M3 menus use group dividers). */ separator: (t: ColorTokens) => ViewStyle; /** The row label text size. */ rowTextSize: TextStyle; /** The leading Canvas icon size (px), sized to sit with the label per platform. */ iconSize: number; /** The per-row text color (destructive red, link foreground, action popover fg). */ rowTextColor: (item: RowMenuItem, links: boolean, t: ColorTokens, dark: boolean) => TextStyle; /** iOS/web dim the trigger on press; Android ripples instead (null). */ triggerPressedOpacity: number | null; /** Android ripple over the trigger and rows; null on iOS/web. */ ripple: ((t: ColorTokens) => { color: string; borderless: boolean; }) | null; } export declare const anchorLifted: ViewStyle; export declare const webSkin: RowMenuSkin; export declare const iosSkin: RowMenuSkin; export declare const androidSkin: RowMenuSkin; //# sourceMappingURL=row-menu.styles.d.ts.map