Skip to content

Missing fonts in NavigationTheme typeΒ #4751

@psam44

Description

@psam44

Current behaviour

import { DefaultTheme, NavigationContainer } from '@react-navigation/native'
import { adaptNavigationTheme } from 'react-native-paper'
...
  const { LightTheme } = adaptNavigationTheme({ reactNavigationLight: DefaultTheme })
...
          <NavigationContainer theme={LightTheme}>
...

Typing error in VSC:

Property 'fonts' is missing in type 'NavigationTheme' but required in type 'Theme'.ts(2741)
types.d.ts(22, 5): 'fonts' is declared here.
types.d.ts(313, 5): The expected type comes from property 'theme' which is declared here on type 'IntrinsicAttributes & NavigationContainerProps & { direction?: LocaleDirection | undefined; linking?: LinkingOptions<...> | undefined; fallback?: ReactNode; documentTitle?: DocumentTitleOptions | undefined; } & { ...; }'
(property) theme?: ReactNavigation.Theme | undefined

Explanation

There is a discrepancy between:
@react-navigation\native\src\types.tsx

interface NativeTheme {
  dark: boolean;
  colors: {
...
  };
  fonts: {
    regular: FontStyle;
    medium: FontStyle;
    bold: FontStyle;
    heavy: FontStyle;
  };
}

And react-native-paper\src\types.tsx

export type NavigationTheme = {
  dark: boolean;
  colors: {
...
  };
};

What have you tried so far?

Not a definitive fix, but, as a confirmation, the error disappeared with this edit in react-native-paper\lib\typescript\types.d.ts

/*psam*/type FontStyle = {
  fontFamily: string;
  fontWeight:
    | 'normal'
    | 'bold'
    | '100'
    | '200'
    | '300'
    | '400'
    | '500'
    | '600'
    | '700'
    | '800'
    | '900';
};
export type NavigationTheme = {
    dark: boolean;
    colors: {
        primary: string;
        background: string;
        card: string;
        text: string;
        border: string;
        notification: string;
    };
/*psam*/  fonts: {
    regular: FontStyle;
    medium: FontStyle;
    bold: FontStyle;
    heavy: FontStyle;
  };
};

Your Environment

software version
@react-navigation/native 7.1.9
react-native 0.79.1
react-native-paper 5.14.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions