@redocly/theme
Version:
Shared UI components lib
34 lines (27 loc) • 1.01 kB
text/typescript
import { useContext } from 'react';
import type { UiAccessibleConfig } from '../../config';
import { ThemeDataContext } from '../contexts/ThemeDataContext';
// eslint-disable-next-line no-warning-comments
// TODO: rename and additionally export as alias for backward compatibility
export function useThemeConfig<T extends Record<string, unknown>>(
useProductConfig: boolean = true,
): T & NonNullable<UiAccessibleConfig> {
const context = useContext(ThemeDataContext);
if (!context?.config) {
return {} as T;
}
const { config, hooks } = context;
const { useCurrentProduct } = hooks;
// eslint-disable-next-line react-hooks/rules-of-hooks
const currentProduct = useCurrentProduct();
const mergedConfig =
useProductConfig && currentProduct?.configOverride
? {
...config,
...currentProduct.configOverride,
// Do not override analytics config from product
analytics: config.analytics,
}
: config;
return mergedConfig as T;
}