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;