import React from 'react'; import { StyleProp, ViewStyle, TextStyle, GestureResponderEvent } from 'react-native'; export declare const FabBuiltInIcon: React.FC<{ name: 'plus' | 'close' | 'message' | 'share' | 'call' | string; size?: number; color?: string; }>; export type Ux4gFabVariant = 'icon' | 'labelled' | 'menu-joined' | 'menu-spaced' | 'menu-labelled'; export type Ux4gFabColorTheme = 'brand' | 'surface'; export type Ux4gFabPosition = 'bottom-right' | 'bottom-left' | 'bottom-center' | 'top-right' | 'top-left' | 'none'; export type Ux4gFabSize = 'small' | 'medium' | 'large'; export interface Ux4gFabActionItem { /** Unique key or id for the action */ id: string; /** Text label displayed in 'menu-labelled' variant or tooltip */ label?: string; /** Icon name (e.g. 'plus', 'message', 'share', 'call') or custom React node / render function */ icon?: string | React.ReactNode | ((props: { color: string; size: number; }) => React.ReactNode); /** Callback fired when this action item is pressed */ onPress?: () => void; /** Custom background color override for this action item */ backgroundColor?: string; /** Custom content/icon/text color override */ contentColor?: string; /** Disable this action item */ disabled?: boolean; /** Test identifier */ testID?: string; } export interface Ux4gFabProps { /** Layout variant. Options: 'icon', 'labelled', 'menu-joined', 'menu-spaced', 'menu-labelled'. Defaults to 'icon'. */ variant?: Ux4gFabVariant; /** Color theme. Options: 'brand' (purple filled) or 'surface' (white elevated). Defaults to 'brand'. */ colorTheme?: Ux4gFabColorTheme; /** Text label for 'labelled' variant or extended FAB */ label?: string; /** Main icon when closed or idle. Defaults to 'plus'. */ icon?: string | React.ReactNode | ((props: { color: string; size: number; }) => React.ReactNode); /** Active / open icon when speed-dial is expanded. Defaults to 'close'. */ activeIcon?: string | React.ReactNode | ((props: { color: string; size: number; }) => React.ReactNode); /** Action items list for menu variants ('menu-joined', 'menu-spaced', 'menu-labelled') */ actions?: Ux4gFabActionItem[]; /** Controlled open state for speed-dial menus */ isOpen?: boolean; /** Initial open state when uncontrolled */ defaultOpen?: boolean; /** Callback fired when speed-dial menu opens or closes */ onToggle?: (isOpen: boolean) => void; /** Callback fired on main button press */ onPress?: (event: GestureResponderEvent) => void; /** Screen position preset. Defaults to 'none' (inline flow). */ position?: Ux4gFabPosition; /** Custom position offset overrides when positioned */ offset?: { bottom?: number; top?: number; right?: number; left?: number; }; /** * Whether this FAB is positioned above a Bottom Navigation Bar (`Ux4gBottomNavigationBar`). * When true, automatically offsets the FAB's bottom position (defaulting to 72dp nav height + 16dp spacing = 88dp) * so it floats sequentially above the bottom navigation bar without overlapping any tabs. * @default false */ aboveBottomNav?: boolean; /** * Alias or custom height override for the bottom navigation bar. * Can accept `true` (uses default 72dp bottom nav height) or an explicit number in pixels (e.g. 64 or 80). */ bottomNavOffset?: boolean | number; /** * Alignment of speed-dial menu items relative to the FAB button. * If omitted, automatically aligns to `'end'` (right-aligned) for `'menu-labelled'` and right-positioned FABs, * `'start'` for left-positioned FABs, or `'center'`. */ alignment?: 'start' | 'center' | 'end' | 'left' | 'right'; /** * Whether to automatically detect and respect safe area insets (e.g. system navigation bar) * @default true */ useSafeArea?: boolean; /** Whether to show a semi-transparent backdrop scrim when menu is open. Defaults to false. */ showBackdrop?: boolean; /** Callback when backdrop scrim is pressed */ onBackdropPress?: () => void; /** Whether the FAB is disabled */ disabled?: boolean; /** Sizing preset. Defaults to 'medium'. */ size?: Ux4gFabSize; /** Custom style for the main FAB button */ style?: StyleProp; /** Custom style for the overall container wrapper */ containerStyle?: StyleProp; /** Custom text style for labels */ labelStyle?: StyleProp; /** Custom background color override */ backgroundColor?: string; /** Custom content (icon/text) color override */ contentColor?: string; /** Custom elevation shadow level */ elevation?: number; /** Enable smooth open/close scale and fade animation. Defaults to true. */ animated?: boolean; /** Accessibility label */ accessibilityLabel?: string; /** Test identifier */ testID?: string; } export declare const Ux4gFab: React.FC; //# sourceMappingURL=Fab.d.ts.map