-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.d.ts
58 lines (56 loc) · 1.81 KB
/
main.d.ts
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
export type ColorScheme = 'light' | 'dark';
export type ColorSchemeChangeEvent = CustomEvent<{ colorScheme: ColorScheme }>;
export type PermanentColorSchemeEvent = CustomEvent<{ colorScheme: ColorScheme, permanent: boolean }>;
export class DarkMode extends HTMLElement {
mode?: ColorScheme;
/**
* Defaults to not remember the last choice.
* If present remembers the last selected mode (`dark` or `light`),
* which allows the user to permanently override their usual preferred color scheme.
*/
permanent?: boolean;
/**
* Any string value that represents the label for the "dark" mode.
*/
dark?: string;
/**
* Any string value that represents the label for the "light" mode.
*/
light?: string;
}
declare global {
interface HTMLElementTagNameMap {
'dark-mode': DarkMode;
}
interface GlobalEventHandlersEventMap {
/**
* Fired when the color scheme gets changed.
*
* ```js
* const toggle = document.querySelector('dark-mode');
* document.addEventListener('colorschemechange', (e) => {
* console.log(`Color scheme changed to "${e.detail.colorScheme}".`);
* console.log(toggle.mode === 'dark' ? 'Change Theme 🌞' : 'Change Theme 🌒')
* });
* ```
*/
'colorschemechange': ColorSchemeChangeEvent;
/**
* Fired when the color scheme should be permanently remembered or not.
*
* ```js
* document.addEventListener('permanentcolorscheme', (e) => {
* console.log(`~: Color scheme changed to "${e.detail.colorScheme}" , "${e.detail.permanent}" .`);
* });
* ```
*/
'permanentcolorscheme': PermanentColorSchemeEvent;
}
namespace JSX {
interface IntrinsicElements {
'dark-mode': Partial<DarkMode> | {
style?: Partial<CSSStyleDeclaration> | React.CSSProperties;
};
}
}
}