import React from 'react'; import { StyleProp, ViewStyle } from 'react-native'; import { Ux4gIconName } from '../../foundation/icons'; export type Ux4gSideMenuVariant = 'standard' | 'citizen' | 'department-services' | 'department-switcher' | 'mailbox' | 'profile-summary'; export type Ux4gSideMenuHeaderVariant = 'standard' | 'user' | 'department' | 'centered-profile'; export interface Ux4gSideMenuItem { /** Unique key for the item */ key: string; /** Display label */ label: string; /** Optional secondary subtitle text under label */ subtitle?: string; /** Icon name from Ux4gIcons, ReactNode, or render function */ icon?: Ux4gIconName | React.ReactNode | ((isActive: boolean, color: string) => React.ReactNode); /** Badge counter or text tag on the right (e.g. 3, 8, 9) */ badge?: number | string; /** Background color of the badge */ badgeColor?: string; /** Text color of the badge */ badgeTextColor?: string; /** Status tag/pill text (e.g. '3 applications pending') */ statusTag?: string; /** Background color of the status tag pill */ statusTagBgColor?: string; /** Text color of the status tag pill */ statusTagTextColor?: string; /** Initials or short text avatar box instead of an icon (e.g. 'RD', 'TD') */ avatarText?: string; /** Background color of the item avatar box */ avatarBgColor?: string; /** Text color of the item avatar box */ avatarTextColor?: string; /** Shows a checkmark icon on the right side if true */ isCheckmark?: boolean; /** Render this item as a styled colored action text link (e.g. 'Customize inbox') */ isActionLink?: boolean; /** Color of the action link text */ actionLinkColor?: string; /** Whether the item is disabled */ disabled?: boolean; /** Press handler for this specific item */ onPress?: () => void; /** Nested child items (sub-navigation tree) */ children?: Ux4gSideMenuItem[]; /** Whether child sub-items are expanded by default */ defaultExpanded?: boolean; /** Accessibility label for screen readers */ accessibilityLabel?: string; /** Test identifier */ testID?: string; } export interface Ux4gSideMenuSection { /** Optional key for the section */ key?: string; /** Section title header (e.g. 'SERVICES', 'WORKSPACE', 'MAILBOX', 'FOLDERS', 'ACCOUNT') */ title?: string; /** List of items in this section */ items: Ux4gSideMenuItem[]; } export interface Ux4gSideMenuUser { /** Full user display name (e.g. 'Ramesh Kumar') */ name: string; /** Role, email, or secondary subtitle (e.g. 'Citizen' or 'ramesh.kumar@gov.in') */ roleOrEmail?: string; /** Alternate subtitle property */ subtitle?: string; /** Initials text for avatar circle (e.g. 'RK') */ avatarText?: string; /** Remote image URL for avatar */ avatarUrl?: string; /** Background color for avatar circle */ avatarBgColor?: string; /** Text color for avatar initials */ avatarTextColor?: string; } export interface Ux4gSideMenuProfileSummary { /** Full user display name (e.g. 'Ramesh Kumar') */ name: string; /** Role designation (e.g. 'Citizen') */ role?: string; /** Meta information (e.g. '12 applications ยท 3 actions required') */ metaInfo?: string; /** Initials text for large centered avatar (e.g. 'RK') */ avatarText?: string; /** Remote image URL for avatar */ avatarUrl?: string; /** Background color for avatar circle */ avatarBgColor?: string; /** Text color for avatar initials */ avatarTextColor?: string; /** Button label for profile action (default: 'View profile') */ actionLabel?: string; /** Press callback for the profile action button */ onActionPress?: () => void; } export interface Ux4gSideMenuActionCard { /** Optional section tag or header (default: 'ACTION REQUIRED') */ tag?: string; /** Callout title (e.g. 'Verify your Aadhaar') */ title: string; /** Description text */ description: string; /** Button action label (e.g. 'Verify now') */ buttonText: string; /** Button press handler */ onButtonPress?: () => void; /** Card background color */ backgroundColor?: string; /** Button background color */ buttonColor?: string; /** Button text color */ buttonTextColor?: string; } export interface Ux4gSideMenuFooterBranding { /** Organization or department title (e.g. 'Revenue Department') */ title?: string; /** Subtitle text (e.g. 'Government of India' or 'Kanpur division') */ subtitle?: string; /** Emblem logo icon or custom element */ logo?: React.ReactNode | Ux4gIconName; /** Press handler for footer branding */ onPress?: () => void; } export interface Ux4gSideMenuProps { /** Controls open / closed state of the drawer */ isOpen: boolean; /** Callback when drawer requests closing */ onClose: () => void; /** Pre-configured design system layout variant */ variant?: Ux4gSideMenuVariant; /** Open direction: 'left' (default, left to right) or 'right' (right to left) */ position?: 'left' | 'right'; /** Custom width of the drawer panel (default: responsive 80% up to 340dp) */ width?: number | string; /** Style variant of the header: 'standard' | 'user' | 'department' | 'centered-profile' */ headerVariant?: Ux4gSideMenuHeaderVariant; /** Organization or department title (default: 'Revenue Department') */ title?: string; /** Subtitle text (default: 'Government of India') */ subtitle?: string; /** Logo icon name or custom ReactNode (default: National Emblem logo) */ logo?: React.ReactNode | Ux4gIconName; /** Whether to show the top close 'X' button (default: true) */ showCloseButton?: boolean; /** Custom header component to replace default header */ customHeader?: React.ReactNode; /** User profile information for 'user' header variant */ user?: Ux4gSideMenuUser; /** Centered profile summary header data for 'centered-profile' header variant */ profileSummary?: Ux4gSideMenuProfileSummary; /** Whether to display the search input bar (default: true for standard, false for others unless set) */ showSearch?: boolean; /** Placeholder text for the search input (default: 'Search for...') */ searchPlaceholder?: string; /** Controlled search query */ searchQuery?: string; /** Search query change handler */ onSearchChange?: (query: string) => void; /** Whether to auto-filter menu items when typing in search bar (default: true) */ autoFilterOnSearch?: boolean; /** Grouped sections of navigation items */ sections?: Ux4gSideMenuSection[]; /** Flat list of navigation items (used if sections are not provided) */ items?: Ux4gSideMenuItem[]; /** Currently selected item key */ selectedKey?: string; /** Default selected item key for uncontrolled selection */ defaultSelectedKey?: string; /** Callback triggered when any item is pressed */ onItemPress?: (item: Ux4gSideMenuItem, sectionIndex?: number) => void; /** Callout banner card (e.g. 'ACTION REQUIRED: Verify your Aadhaar') */ actionCard?: Ux4gSideMenuActionCard; /** Footer navigation items */ footerItems?: Ux4gSideMenuItem[]; /** Whether to show the default Sign out item in footer */ showSignOut?: boolean; /** Label for the default sign out item (default: 'Sign out') */ signOutLabel?: string; /** Callback when Sign out is pressed */ onSignOut?: () => void; /** Bottom organization branding block (e.g. National Emblem + Revenue Department) */ footerBranding?: Ux4gSideMenuFooterBranding; /** Custom footer component */ customFooter?: React.ReactNode; /** Background color of the drawer panel */ backgroundColor?: string; /** Background color for selected / active item (default: neutral100 or primary50) */ activeItemBackgroundColor?: string; /** Color for active item text and icon */ activeItemColor?: string; /** Color for inactive item text and icon */ inactiveItemColor?: string; /** Background color for the backdrop scrim (default: 'rgba(0, 0, 0, 0.5)') */ backdropColor?: string; /** Backdrop target opacity (default: 0.5) */ backdropOpacity?: number; /** Whether pressing the backdrop closes the drawer (default: true) */ closeOnBackdropPress?: boolean; /** Whether to wrap content inside SafeAreaView (default: true) */ useSafeArea?: boolean; /** Elevation / shadow depth (default: 16) */ elevation?: number; style?: StyleProp; contentContainerStyle?: StyleProp; headerStyle?: StyleProp; searchContainerStyle?: StyleProp; itemStyle?: StyleProp; activeItemStyle?: StyleProp; /** Test identifier */ testID?: string; } export declare const Ux4gSideMenu: React.FC; /** * Ux4gDrawer - Alias for Ux4gSideMenu */ export declare const Ux4gDrawer: React.FC; //# sourceMappingURL=SideMenu.d.ts.map