import React, { ReactNode } from 'react'; /** * Branding configuration for the application. * Allows customization of logo, brand name, and related visual elements. */ export interface BrandingConfig { /** Full logo component (used in expanded sidebar) */ logo?: ReactNode; /** Icon-only logo (used in mobile navbar or collapsed sidebar) */ logoIcon?: ReactNode; /** Brand/application name (fallback when no logo provided) */ appName?: string; /** Link destination when clicking the logo */ logoLink?: string; } /** * Context value for branding configuration. */ export interface BrandingContextValue { /** Current branding configuration */ config: BrandingConfig; } export interface BrandingProviderProps { children: ReactNode; /** Custom logo component for the sidebar */ logo?: ReactNode; /** Icon-only logo for mobile/collapsed views */ logoIcon?: ReactNode; /** Application name (used as fallback if no logo provided) */ appName?: string; /** Link destination when clicking the logo (default: '/') */ logoLink?: string; } /** * Provider component for branding configuration. * Allows setting logo and brand name at the application level. * * @example * ```tsx * // With custom logo component * } appName="My App"> * * * ``` * * @example * ```tsx * // With separate full and icon logos * } * logoIcon={} * appName="My App" * > * * * ``` */ export declare function BrandingProvider({ children, logo, logoIcon, appName, logoLink, }: BrandingProviderProps): React.ReactElement; /** * Hook to access the branding configuration. */ export declare function useBranding(): BrandingConfig; /** * Hook to get the appropriate logo based on context. * @param preferIcon - If true, returns iconLogo when available */ export declare function useLogo(preferIcon?: boolean): ReactNode;