Blame view

天文台pc/tianwentai-ui/node_modules/@mui/material/styles/useThemeProps.d.ts 1.14 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  import { Theme } from "./createTheme.js";
  import { Components } from "./components.js";
  export interface ThemeWithProps {
    components?: Components<Omit<Theme, 'components'>>;
  }
  export type ThemedProps<Theme, Name extends keyof any> = Theme extends {
    components: Record<Name, {
      defaultProps: infer Props;
    }>;
  } ? Props : {};
  
  /**
   * Merges input `props` with the `defaultProps` for a component that were defined in the theme.
   *
   * The `defaultProps` are defined in the theme under `theme.components[componentName].defaultProps`.
   *
   * @example
   *
   * ```tsx
   * const createTheme = () => ({
   *   components: {
   *     MuiStat: {
   *       defaultProps: {
   *         variant: 'outlined',
   *       },
   *     },
   *   },
   * });
   *
   * function Stat(props) {
   *   const themeProps = useThemeProps({ props, name: 'MuiStat' });
   *   return <div {...themeProps} />;
   * }
   * ```
   *
   * @param params.props The input props
   * @param params.name The name of the component as defined in the theme
   */
  export default function useThemeProps<Theme extends ThemeWithProps, Props, Name extends keyof any>(params: {
    props: Props;
    name: Name;
  }): Props & ThemedProps<Theme, Name>;