import { createContext } from 'react'; import vkBridge, { AppearanceSchemeType, AppearanceType } from '@vkontakte/vk-bridge'; import { PlatformType, platform } from '../../lib/platform'; export enum Appearance { DARK = 'dark', LIGHT = 'light', } export enum Scheme { DEPRECATED_CLIENT_LIGHT = 'client_light', DEPRECATED_CLIENT_DARK = 'client_dark', BRIGHT_LIGHT = 'bright_light', SPACE_GRAY = 'space_gray', VKCOM = 'vkcom' } export type AppearanceScheme = AppearanceSchemeType | Scheme.VKCOM; export enum WebviewType { VKAPPS = 'vkapps', INTERNAL = 'internal', } export interface ConfigProviderContextInterface { /** * Цветовая схема приложения */ scheme?: AppearanceScheme; /** * Подсказывает приложению, обёрнутому в `ConfigProvider`, где открыто приложение: внутри webview или в мобильном браузере */ isWebView?: boolean; /** * Тип вебвью.
* В случае `WebviewType.VKAPPS` интерфейс будет адаптирован для отображения в вебвью Mini Apps (системные контролы в правой части шапки) */ webviewType?: WebviewType.INTERNAL | WebviewType.VKAPPS; /** * Тип приложения */ app?: string; /** * Тип цветовой схемы – `light` или `dark` */ appearance?: AppearanceType; /** * Включена ли анимация переходов между экранами в `Root` и `View` */ transitionMotionEnabled?: boolean; /** * Платформа */ platform?: PlatformType; } export const defaultConfigProviderProps = { webviewType: WebviewType.VKAPPS, isWebView: vkBridge.isWebView(), scheme: Scheme.BRIGHT_LIGHT, appearance: Appearance.LIGHT, transitionMotionEnabled: true, platform: platform(), }; export const ConfigProviderContext = createContext(defaultConfigProviderProps);