@redocly/theme
Version:
Shared UI components lib
33 lines (26 loc) • 976 B
text/typescript
import { useContext } from 'react';
import type { UiAccessibleConfig } from '@redocly/theme/config';
import { ThemeDataContext } from '@redocly/theme/core/contexts';
// 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;
}