import React from 'react'; type ISidekickMenuItem = { id: string; label: React.ReactNode; icon: React.ReactNode; searchTerms: string; /** Short context shown in the Favourites list and as a tooltip (recommended max 40 characters). */ description?: string; visibilityControl?: { isVisibleResolver?: (() => Promise) | (() => boolean) | boolean; isCachable?: boolean; }; } & ({ path: string; onClick?: never; children?: never; } | { path?: never; onClick: () => void; children?: never; } | { path?: never; onClick?: never; children: ISidekickMenuItem[]; }); type NavigationStyle = "drilldown" | "accordion"; interface FavouritesOptions { maxItems?: number; minToShowTab?: number; windowDays?: number; } type ZestSidekickTheme = "light" | "dark" | "system"; interface ZestSidekickVisualOptions { size?: "sm" | "md" | "lg"; radius?: "sm" | "md" | "lg"; surface?: "solid" | "translucent"; } interface ZestSidekickMotionOptions { intensity?: "subtle" | "standard" | "playful"; reducedMotion?: "auto" | "always" | "never"; } interface ZestSidekickCustomProps { theme?: ZestSidekickTheme; visualOptions?: ZestSidekickVisualOptions; motionOptions?: ZestSidekickMotionOptions; } interface SidekickMenuProps { items: ISidekickMenuItem[]; /** Opt-in. When `true`, the search input is rendered and search works as in 1.x. * Defaults to `false`, so no search box is shown unless you enable it. */ searchEnabled?: boolean; searchAutoFocus?: boolean; searchPlaceholder?: string; alwaysShowUnsearchableItems?: boolean; openOnDesktop?: boolean; searchIcon?: React.ReactNode; chevronIcon?: React.ReactNode; headerContent?: React.ReactNode; footerContent?: React.ReactNode; cacheLifetime?: number; side?: "left" | "right" | "auto"; zest?: ZestSidekickCustomProps; navigationStyle?: NavigationStyle; favouritesEnabled?: boolean; favouritesOptions?: FavouritesOptions; storageNamespace?: string; railCollapsible?: boolean; swipeEnabled?: boolean; numberedShortcutsEnabled?: boolean; /** Drilldown only: reopen the menu in the section holding the item last activated from it * (per browser tab, via sessionStorage), with that item highlighted. Default true. */ rememberPosition?: boolean; } declare const SidekickMenu: React.FC; declare const clearSidekickMenuCache: (storageNamespace?: string) => void; declare const clearSidekickMenuUsageStats: (storageNamespace?: string) => void; interface ZestSidekickGlobalConfig { defaultProps?: ZestSidekickCustomProps; } declare const useZestSidekickConfig: () => ZestSidekickGlobalConfig; interface ZestSidekickConfigProviderProps { config: ZestSidekickGlobalConfig; children: React.ReactNode; } declare const ZestSidekickConfigProvider: React.FC; export { ZestSidekickConfigProvider, clearSidekickMenuCache, clearSidekickMenuUsageStats, SidekickMenu as default, useZestSidekickConfig }; export type { FavouritesOptions, ISidekickMenuItem, NavigationStyle, SidekickMenuProps, ZestSidekickCustomProps, ZestSidekickGlobalConfig, ZestSidekickMotionOptions, ZestSidekickTheme, ZestSidekickVisualOptions };