UNPKG

2.97 kBTypeScriptView Raw
1import {ComponentType, ReactNode, Context, RefObject} from 'react'
2import {
3 CreateGenerateId,
4 GenerateId,
5 Jss,
6 SheetsRegistry,
7 Styles,
8 StyleSheetFactoryOptions,
9 CreateGenerateIdOptions,
10 Classes
11} from 'jss'
12import {createTheming, useTheme, withTheme, ThemeProvider, Theming} from 'theming'
13
14declare const jss: Jss
15
16declare const createGenerateId: CreateGenerateId
17
18declare const JssProvider: ComponentType<{
19 jss?: Jss
20 registry?: SheetsRegistry
21 generateId?: GenerateId
22 classNamePrefix?: string
23 disableStylesGeneration?: boolean
24 children: ReactNode
25 id?: CreateGenerateIdOptions
26 isSSR?: boolean
27}>
28
29interface Managers {
30 [key: number]: StyleSheet
31}
32
33declare const JssContext: Context<{
34 jss?: Jss
35 registry?: SheetsRegistry
36 managers?: Managers
37 sheetOptions: StyleSheetFactoryOptions
38 disableStylesGeneration: boolean
39 isSSR: boolean
40}>
41
42type ClassesForStyles<
43 S extends Styles<any, any, any> | ((theme: any) => Styles<any, any, undefined>)
44> = Classes<S extends (theme: any) => Styles<any, any, undefined> ? keyof ReturnType<S> : keyof S>
45
46interface WithStylesProps<
47 S extends Styles<any, any, any> | ((theme: any) => Styles<any, any, undefined>)
48> {
49 classes: ClassesForStyles<S>
50}
51/**
52 * @deprecated Please use `WithStylesProps` instead
53 */
54type WithStyles<S extends Styles<any, any, any> | ((theme: any) => Styles<any, any, undefined>)> =
55 WithStylesProps<S>
56
57declare global {
58 namespace Jss {
59 /** You can use the global `Jss.Theme` interface to define a project-wide default theme. */
60 export interface Theme {}
61 }
62}
63
64export type DefaultTheme = Jss.Theme
65
66interface BaseOptions<Theme = DefaultTheme> extends StyleSheetFactoryOptions {
67 index?: number
68 theming?: Theming<Theme>
69}
70
71interface WithStylesOptions extends BaseOptions {
72 injectTheme?: boolean
73 jss?: Jss
74}
75
76interface CreateUseStylesOptions<Theme = DefaultTheme> extends BaseOptions<Theme> {
77 name?: string
78}
79
80declare function createUseStyles<C extends string = string, Props = unknown, Theme = DefaultTheme>(
81 styles: Styles<C, Props, Theme> | ((theme: Theme) => Styles<C, Props, undefined>),
82 options?: CreateUseStylesOptions<Theme>
83): (data?: Props & {theme?: Theme}) => Classes<C>
84
85type GetProps<C> = C extends ComponentType<infer P> ? P : never
86
87declare function withStyles<ClassNames extends string | number | symbol, Props, Theme>(
88 styles:
89 | Styles<ClassNames, Props, Theme>
90 | ((theme: Theme) => Styles<ClassNames, Props, undefined>),
91 options?: WithStylesOptions
92): <C>(comp: C) => ComponentType<
93 JSX.LibraryManagedAttributes<
94 C,
95 Omit<GetProps<C>, 'classes'> & {
96 classes?: Partial<ClassesForStyles<typeof styles>>
97 innerRef?: RefObject<any> | ((instance: any) => void)
98 }
99 >
100>
101
102export {
103 SheetsRegistry,
104 jss,
105 createGenerateId,
106 JssProvider,
107 WithStylesProps,
108 ThemeProvider,
109 withTheme,
110 createTheming,
111 Theming,
112 useTheme,
113 JssContext,
114 createUseStyles,
115 Styles
116}
117
118export default withStyles
119
\No newline at end of file