/**
* Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).
*
* WSO2 LLC. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { FC, ReactNode } from 'react';
/**
* A resolved language option with display name and emoji flag.
*/
export interface LanguageOption {
/** BCP 47 language tag (e.g. "en", "fr", "en-US") */
code: string;
/** Human-readable display name resolved via Intl.DisplayNames */
displayName: string;
/** Flag emoji or globe emoji for the language */
emoji: string;
}
/**
* Render props exposed to consumers when using the render-prop pattern.
*/
export interface LanguageSwitcherRenderProps {
/** The currently active language code */
currentLanguage: string;
/** Whether a language switch is in progress */
isLoading: boolean;
/** Resolved language options */
languages: LanguageOption[];
/** Call this to switch to a different language */
onLanguageChange: (language: string) => void;
}
export interface BaseLanguageSwitcherProps {
/**
* Render-props callback. When provided, the default dropdown UI is replaced with
* whatever JSX the callback returns.
*
* @example
* ```tsx
*
* {({languages, currentLanguage, onLanguageChange}) => (
*
* )}
*
* ```
*/
children?: (props: LanguageSwitcherRenderProps) => ReactNode;
/** Additional CSS class applied to the root element (default UI only) */
className?: string;
/** The currently active language code */
currentLanguage: string;
/** Whether a language switch is in progress */
isLoading?: boolean;
/** Resolved language options to display */
languages: LanguageOption[];
/** Called when the user selects a language */
onLanguageChange: (language: string) => void;
}
/**
* Pure-UI language switcher dropdown.
* Accepts resolved `LanguageOption[]` (code + displayName + emoji) and delegates
* language switching to the `onLanguageChange` callback.
*
* Supports render props for full UI customisation.
*/
declare const BaseLanguageSwitcher: FC;
export default BaseLanguageSwitcher;
//# sourceMappingURL=BaseLanguageSwitcher.d.ts.map