yt-grabber 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/.eslintrc.json +29 -0
  2. package/.prettierrc +19 -0
  3. package/.vscode/extensions.json +7 -0
  4. package/.vscode/settings.json +23 -0
  5. package/.yarnrc.yml +13 -0
  6. package/LICENSE +21 -0
  7. package/README.md +11 -0
  8. package/package.json +115 -0
  9. package/public/index.html +20 -0
  10. package/public/screenshots/cutting.png +0 -0
  11. package/public/screenshots/downloading.png +0 -0
  12. package/public/screenshots/editing.png +0 -0
  13. package/public/screenshots/errors.png +0 -0
  14. package/public/screenshots/settings.png +0 -0
  15. package/public/screenshots/tracklist.png +0 -0
  16. package/src/@types/global.d.ts +7 -0
  17. package/src/@types/i18next-scanner-webpack.d.ts +1 -0
  18. package/src/@types/stylus.d.ts +4 -0
  19. package/src/@types/svg.d.ts +1 -0
  20. package/src/App.styl +24 -0
  21. package/src/App.tsx +31 -0
  22. package/src/bootstrap.tsx +30 -0
  23. package/src/common/CancellablePromise.ts +22 -0
  24. package/src/common/ComponentDisplayMode.ts +8 -0
  25. package/src/common/Delay.ts +3 -0
  26. package/src/common/FileSystem.ts +171 -0
  27. package/src/common/Helpers.ts +270 -0
  28. package/src/common/Mappings.ts +14 -0
  29. package/src/common/PuppeteerOptions.ts +45 -0
  30. package/src/common/Selectors.ts +21 -0
  31. package/src/common/Store.ts +108 -0
  32. package/src/common/Theme.ts +4 -0
  33. package/src/common/Youtube.ts +80 -0
  34. package/src/components/appBar/AppBar.styl +22 -0
  35. package/src/components/appBar/AppBar.tsx +73 -0
  36. package/src/components/directoryPicker/DirectoryPicker.tsx +44 -0
  37. package/src/components/fileField/FileField.styl +3 -0
  38. package/src/components/fileField/FileField.tsx +152 -0
  39. package/src/components/languagePicker/LanguagePicker.styl +38 -0
  40. package/src/components/languagePicker/LanguagePicker.tsx +145 -0
  41. package/src/components/logo/Logo.tsx +15 -0
  42. package/src/components/modals/DetailsModal.styl +9 -0
  43. package/src/components/modals/DetailsModal.tsx +85 -0
  44. package/src/components/numberField/NumberField.styl +13 -0
  45. package/src/components/numberField/NumberField.tsx +154 -0
  46. package/src/components/progress/Progress.styl +15 -0
  47. package/src/components/progress/Progress.tsx +18 -0
  48. package/src/components/splitButton/SplitButton.styl +0 -0
  49. package/src/components/splitButton/SplitButton.tsx +125 -0
  50. package/src/components/themePicker/ThemePicker.styl +19 -0
  51. package/src/components/themePicker/ThemePicker.tsx +65 -0
  52. package/src/components/themeSwitcher/ThemeSwitcher.styl +10 -0
  53. package/src/components/themeSwitcher/ThemeSwitcher.tsx +43 -0
  54. package/src/components/youtube/formatSelector/FormatSelector.styl +3 -0
  55. package/src/components/youtube/formatSelector/FormatSelector.tsx +202 -0
  56. package/src/components/youtube/inputPanel/InputPanel.styl +7 -0
  57. package/src/components/youtube/inputPanel/InputPanel.tsx +189 -0
  58. package/src/components/youtube/mediaInfoPanel/MediaInfoPanel.styl +80 -0
  59. package/src/components/youtube/mediaInfoPanel/MediaInfoPanel.tsx +113 -0
  60. package/src/components/youtube/trackList/TrackList.styl +64 -0
  61. package/src/components/youtube/trackList/TrackList.tsx +258 -0
  62. package/src/enums/DataResponse.ts +5 -0
  63. package/src/enums/Media.ts +16 -0
  64. package/src/enums/MediaFormat.ts +10 -0
  65. package/src/enums/MimeTypes.ts +14 -0
  66. package/src/hooks/useCancellablePromises.ts +25 -0
  67. package/src/hooks/useClickCounter.ts +24 -0
  68. package/src/hooks/useData.ts +61 -0
  69. package/src/hooks/useMultiClickHandler.ts +41 -0
  70. package/src/i18next.ts +33 -0
  71. package/src/index.ts +65 -0
  72. package/src/react/actions/Action.ts +3 -0
  73. package/src/react/actions/AppActions.ts +41 -0
  74. package/src/react/contexts/AppContext.tsx +51 -0
  75. package/src/react/contexts/AppThemeContext.tsx +38 -0
  76. package/src/react/contexts/DataContext copy.tsx +76 -0
  77. package/src/react/contexts/DataContext.tsx +41 -0
  78. package/src/react/hooks/useAppTheme.ts +14 -0
  79. package/src/react/reducers/AppReducer.tsx +45 -0
  80. package/src/react/reducers/Reducer.ts +7 -0
  81. package/src/react/states/AppState.ts +29 -0
  82. package/src/react/states/State.ts +29 -0
  83. package/src/renderer.tsx +13 -0
  84. package/src/resources/bin/yt-dlp.exe +0 -0
  85. package/src/resources/fonts/Baloo-Regular.ttf +0 -0
  86. package/src/resources/fonts/Lato-Black.ttf +0 -0
  87. package/src/resources/fonts/Lato-BlackItalic.ttf +0 -0
  88. package/src/resources/fonts/Lato-Bold.ttf +0 -0
  89. package/src/resources/fonts/Lato-BoldItalic.ttf +0 -0
  90. package/src/resources/fonts/Lato-Italic.ttf +0 -0
  91. package/src/resources/fonts/Lato-Light.ttf +0 -0
  92. package/src/resources/fonts/Lato-LightItalic.ttf +0 -0
  93. package/src/resources/fonts/Lato-Regular.ttf +0 -0
  94. package/src/resources/fonts/Lato-Thin.ttf +0 -0
  95. package/src/resources/fonts/Lato-ThinItalic.ttf +0 -0
  96. package/src/resources/fonts/Material-Icons.woff2 +0 -0
  97. package/src/resources/icons/favicon-16x16.png +0 -0
  98. package/src/resources/icons/favicon-32x32.png +0 -0
  99. package/src/resources/icons/favicon.ico +0 -0
  100. package/src/resources/icons/logo-shape.png +0 -0
  101. package/src/resources/icons/logo-shape.svg +59 -0
  102. package/src/resources/images/loading.svg +28 -0
  103. package/src/resources/images/logo.png +0 -0
  104. package/src/resources/locales/de-DE/flag.svg +1 -0
  105. package/src/resources/locales/de-DE/translation.json +44 -0
  106. package/src/resources/locales/en-GB/flag.svg +43 -0
  107. package/src/resources/locales/en-GB/translation.json +44 -0
  108. package/src/resources/locales/pl-PL/flag.svg +36 -0
  109. package/src/resources/locales/pl-PL/translation.json +44 -0
  110. package/src/styles/MaterialThemes.ts +331 -0
  111. package/src/styles/fonts.styl +71 -0
  112. package/src/styles/mixins.styl +22 -0
  113. package/src/tests/CompleteTracksMock.ts +17384 -0
  114. package/src/tests/MissingDetailsTracksMock.ts +7737 -0
  115. package/src/theme/ColorThemes.ts +190 -0
  116. package/src/theme/Colors.ts +92 -0
  117. package/src/theme/Shadows.ts +9 -0
  118. package/src/theme/Shape.ts +7 -0
  119. package/src/theme/Theme.ts +24 -0
  120. package/src/theme/Typography.ts +56 -0
  121. package/src/views/development/DevelopmentView.styl +22 -0
  122. package/src/views/development/DevelopmentView.tsx +57 -0
  123. package/src/views/home/HomeView.styl +60 -0
  124. package/src/views/home/HomeView.tsx +505 -0
  125. package/src/views/settings/SettingsView.styl +27 -0
  126. package/src/views/settings/SettingsView.tsx +255 -0
  127. package/tsconfig.json +20 -0
  128. package/webpack.config.ts +226 -0
@@ -0,0 +1,190 @@
1
+ import {alpha, ColorSystemOptions, PaletteMode} from "@mui/material";
2
+
3
+ import {Blue, Color, Gray, Green, Orange, Red} from "./Colors";
4
+
5
+ export type ThemeColorScheme = {
6
+ primary: Color;
7
+ secondary: Color;
8
+ }
9
+
10
+ export type ColorTheme = {
11
+ primary: {
12
+ light: string;
13
+ main: string;
14
+ dark: string;
15
+ contrastText: string;
16
+ },
17
+ secondary: {
18
+ light: string;
19
+ main: string;
20
+ dark: string;
21
+ contrastText: string;
22
+ },
23
+ background: {
24
+ default: string;
25
+ paper: string;
26
+ },
27
+ divider: string;
28
+ text: {
29
+ primary: string;
30
+ secondary: string;
31
+ disabled: string;
32
+ }
33
+ }
34
+
35
+ export const SlateBlue: Color = {
36
+ 50: "hsl(231, 35%, 95%)",
37
+ 100: "hsl(231, 35%, 85%)",
38
+ 200: "hsl(231, 35%, 75%)",
39
+ 300: "hsl(232, 25%, 65%)",
40
+ 400: "hsl(232, 25%, 55%)",
41
+ 500: "hsl(232, 25%, 50%)",
42
+ 600: "hsl(232, 25%, 40%)",
43
+ 700: "hsl(233, 35%, 30%)",
44
+ 800: "hsl(233, 35%, 20%)",
45
+ 900: "hsl(233, 35%, 15%)",
46
+ };
47
+
48
+ export const Purple: Color = {
49
+ 50: "hsl(337, 75%, 95%)",
50
+ 100: "hsl(337, 75%, 85%)",
51
+ 200: "hsl(337, 75%, 75%)",
52
+ 300: "hsl(338, 85%, 65%)",
53
+ 400: "hsl(338, 85%, 55%)",
54
+ 500: "hsl(338, 85%, 50%)",
55
+ 600: "hsl(338, 85%, 40%)",
56
+ 700: "hsl(339, 75%, 30%)",
57
+ 800: "hsl(339, 75%, 20%)",
58
+ 900: "hsl(339, 75%, 15%)",
59
+ };
60
+
61
+ export const getThemeColorSystem = (name: string, mode: PaletteMode): ColorSystemOptions => {
62
+ const colorScheme = ThemeColorSchemes[name];
63
+
64
+ return {
65
+ palette: {
66
+ mode,
67
+ primary: {
68
+ light: colorScheme.primary[200],
69
+ main: colorScheme.primary[400],
70
+ dark: colorScheme.primary[700],
71
+ contrastText: colorScheme.primary[50],
72
+ ...(mode === "dark" && {
73
+ light: colorScheme.primary[300],
74
+ main: colorScheme.primary[500],
75
+ dark: colorScheme.primary[800],
76
+ contrastText: colorScheme.primary[50],
77
+ }),
78
+ },
79
+ secondary: {
80
+ light: colorScheme.secondary[200],
81
+ main: colorScheme.secondary[400],
82
+ dark: colorScheme.secondary[700],
83
+ contrastText: colorScheme.secondary[50],
84
+ ...(mode === "dark" && {
85
+ light: colorScheme.secondary[300],
86
+ main: colorScheme.secondary[600],
87
+ dark: colorScheme.secondary[900],
88
+ contrastText: colorScheme.secondary[50],
89
+ }),
90
+ },
91
+ info: {
92
+ light: Blue[100],
93
+ main: Blue[300],
94
+ dark: Blue[600],
95
+ contrastText: Gray[50],
96
+ ...(mode === "dark" && {
97
+ contrastText: Blue[300],
98
+ light: Blue[500],
99
+ main: Blue[700],
100
+ dark: Blue[900],
101
+ }),
102
+ },
103
+ warning: {
104
+ light: Orange[300],
105
+ main: Orange[400],
106
+ dark: Orange[800],
107
+ ...(mode === "dark" && {
108
+ light: Orange[400],
109
+ main: Orange[500],
110
+ dark: Orange[700],
111
+ }),
112
+ },
113
+ error: {
114
+ light: Red[300],
115
+ main: Red[400],
116
+ dark: Red[800],
117
+ ...(mode === "dark" && {
118
+ light: Red[400],
119
+ main: Red[500],
120
+ dark: Red[700],
121
+ }),
122
+ },
123
+ success: {
124
+ light: Green[300],
125
+ main: Green[400],
126
+ dark: Green[800],
127
+ ...(mode === "dark" && {
128
+ light: Green[400],
129
+ main: Green[500],
130
+ dark: Green[700],
131
+ }),
132
+ },
133
+ grey: Gray,
134
+ divider: mode === "dark" ? alpha(colorScheme.primary[700], 0.6) : alpha(colorScheme.primary[300], 0.4),
135
+ background: {
136
+ default: Gray[200],
137
+ paper: Gray[50],
138
+ ...(mode === "dark" && {
139
+ default: Gray.A700,
140
+ paper: colorScheme.primary[900],
141
+ }),
142
+ },
143
+ text: {
144
+ primary: colorScheme.primary[600],
145
+ secondary: colorScheme.primary[300],
146
+ disabled: colorScheme.primary[100],
147
+ ...(mode === "dark" && {
148
+ primary: colorScheme.primary[100],
149
+ secondary: colorScheme.primary[400],
150
+ disabled: colorScheme.primary[700]
151
+ }),
152
+ },
153
+ // AppBar: {
154
+ // darkBg: colorScheme.primary[300],
155
+ // defaultBg: colorScheme.primary[300],
156
+ // darkColor: colorScheme.primary[900],
157
+ // ...(mode === "dark" && {
158
+ // darkBg: colorScheme.primary[900],
159
+ // defaultBg: colorScheme.primary[900],
160
+ // darkColor: colorScheme.primary[100],
161
+ // }),
162
+ // },
163
+
164
+ action: {
165
+ hover: alpha(Gray[200], 0.2),
166
+ selected: alpha(Gray[200], 0.3),
167
+ // active: Gray.A200,
168
+ focus: Gray.A200,
169
+ ...(mode === "dark" && {
170
+ hover: alpha(Gray[600], 0.2),
171
+ selected: alpha(Gray[600], 0.3),
172
+ active: Gray[200],
173
+ focus: Gray[200],
174
+ }),
175
+ },
176
+ },
177
+
178
+ };
179
+ };
180
+
181
+ export const ThemeColorSchemes: { [key: string]: ThemeColorScheme } = {
182
+ Sky: {
183
+ primary: SlateBlue,
184
+ secondary: Purple
185
+ }
186
+ };
187
+
188
+ // export const ColorThemes: { [key: string]: ColorTheme } = {
189
+ // Sky: getTheme,
190
+ // };
@@ -0,0 +1,92 @@
1
+ import {CommonColors} from "@mui/material";
2
+
3
+ export interface Color {
4
+ 50: string;
5
+ 100: string;
6
+ 200: string;
7
+ 300: string;
8
+ 400: string;
9
+ 500: string;
10
+ 600: string;
11
+ 700: string;
12
+ 800: string;
13
+ 900: string;
14
+ A100?: string;
15
+ A200?: string;
16
+ A400?: string;
17
+ A700?: string;
18
+ }
19
+
20
+ export const Common: CommonColors = {
21
+ black: "hsl(0, 0%, 100%)",
22
+ white: "hsl(0, 0%, 0%)",
23
+ };
24
+
25
+ export const Blue: Color = {
26
+ 50: "hsl(210, 100%, 95%)",
27
+ 100: "hsl(210, 100%, 92%)",
28
+ 200: "hsl(210, 100%, 80%)",
29
+ 300: "hsl(210, 100%, 65%)",
30
+ 400: "hsl(210, 98%, 55%)",
31
+ 500: "hsl(210, 98%, 48%)",
32
+ 600: "hsl(210, 98%, 42%)",
33
+ 700: "hsl(210, 100%, 35%)",
34
+ 800: "hsl(210, 100%, 21%)",
35
+ 900: "hsl(210, 100%, 16%)",
36
+ };
37
+
38
+ export const Green: Color = {
39
+ 50: "hsl(120, 80%, 98%)",
40
+ 100: "hsl(120, 75%, 94%)",
41
+ 200: "hsl(120, 75%, 87%)",
42
+ 300: "hsl(120, 61%, 77%)",
43
+ 400: "hsl(120, 44%, 53%)",
44
+ 500: "hsl(120, 59%, 30%)",
45
+ 600: "hsl(120, 70%, 25%)",
46
+ 700: "hsl(120, 75%, 16%)",
47
+ 800: "hsl(120, 84%, 10%)",
48
+ 900: "hsl(120, 87%, 6%)",
49
+ };
50
+
51
+ export const Orange: Color = {
52
+ 50: "hsl(45, 100%, 97%)",
53
+ 100: "hsl(45, 92%, 90%)",
54
+ 200: "hsl(45, 94%, 80%)",
55
+ 300: "hsl(45, 90%, 65%)",
56
+ 400: "hsl(45, 90%, 40%)",
57
+ 500: "hsl(45, 90%, 35%)",
58
+ 600: "hsl(45, 91%, 25%)",
59
+ 700: "hsl(45, 94%, 20%)",
60
+ 800: "hsl(45, 95%, 16%)",
61
+ 900: "hsl(45, 93%, 12%)",
62
+ };
63
+
64
+ export const Red: Color = {
65
+ 50: "hsl(0, 100%, 97%)",
66
+ 100: "hsl(0, 92%, 90%)",
67
+ 200: "hsl(0, 94%, 80%)",
68
+ 300: "hsl(0, 90%, 65%)",
69
+ 400: "hsl(0, 90%, 40%)",
70
+ 500: "hsl(0, 90%, 30%)",
71
+ 600: "hsl(0, 91%, 25%)",
72
+ 700: "hsl(0, 94%, 18%)",
73
+ 800: "hsl(0, 95%, 12%)",
74
+ 900: "hsl(0, 93%, 6%)",
75
+ };
76
+
77
+ export const Gray: Color = {
78
+ 50: "hsl(220, 35%, 97%)",
79
+ 100: "hsl(220, 30%, 94%)",
80
+ 200: "hsl(220, 20%, 88%)",
81
+ 300: "hsl(220, 20%, 80%)",
82
+ 400: "hsl(220, 20%, 65%)",
83
+ 500: "hsl(220, 20%, 42%)",
84
+ 600: "hsl(220, 20%, 35%)",
85
+ 700: "hsl(220, 20%, 25%)",
86
+ 800: "hsl(220, 20%, 22%)",
87
+ 900: "hsl(220, 20%, 15%)",
88
+ A100: "hsl(220, 20%, 10%)",
89
+ A200: "hsl(220, 20%, 7%)",
90
+ A400: "hsl(220, 20%, 5%)",
91
+ A700: "hsl(220, 25%, 3%)",
92
+ };
@@ -0,0 +1,9 @@
1
+ import {createTheme, Shadows} from "@mui/material/styles";
2
+
3
+ const defaultTheme = createTheme();
4
+
5
+ export const shadows: Shadows = [
6
+ ...defaultTheme.shadows,
7
+ ] as Shadows;
8
+
9
+ export default shadows;
@@ -0,0 +1,7 @@
1
+ import {Shape} from "@mui/system";
2
+
3
+ export const shape: Shape = {
4
+ borderRadius: 8,
5
+ };
6
+
7
+ export default shape;
@@ -0,0 +1,24 @@
1
+ import {ColorSystemOptions, CssVarsThemeOptions, Palette, PaletteMode} from "@mui/material/styles";
2
+
3
+ import {getThemeColorSystem} from "./ColorThemes";
4
+ import Shadows from "./Shadows";
5
+ import Shape from "./Shape";
6
+ import Typography from "./Typography";
7
+
8
+ export type ColorScheme = {palette: Partial<Palette>};
9
+
10
+ export const getThemeDefinition = (name: string): CssVarsThemeOptions => {
11
+ return {
12
+ colorSchemes: getThemeColorSchemes(name),
13
+ shadows: Shadows,
14
+ typography: Typography,
15
+ shape: Shape,
16
+ };
17
+ };
18
+
19
+ export const getThemeColorSchemes = (name: string): Record<PaletteMode, ColorSystemOptions> => {
20
+ return {
21
+ light: getThemeColorSystem(name, "light"),
22
+ dark: getThemeColorSystem(name, "dark"),
23
+ };
24
+ };
@@ -0,0 +1,56 @@
1
+ import {createTheme} from "@mui/material/styles";
2
+ import {Typography} from "@mui/system";
3
+
4
+ const defaultTheme = createTheme();
5
+
6
+ export const typography: Typography = {
7
+ fontFamily: "Lato, sans-serif",
8
+ h1: {
9
+ fontSize: defaultTheme.typography.pxToRem(48),
10
+ fontWeight: 600,
11
+ lineHeight: 1.2,
12
+ letterSpacing: -0.5,
13
+ },
14
+ h2: {
15
+ fontSize: defaultTheme.typography.pxToRem(36),
16
+ fontWeight: 600,
17
+ lineHeight: 1.2,
18
+ },
19
+ h3: {
20
+ fontSize: defaultTheme.typography.pxToRem(30),
21
+ lineHeight: 1.2,
22
+ },
23
+ h4: {
24
+ fontSize: defaultTheme.typography.pxToRem(24),
25
+ fontWeight: 600,
26
+ lineHeight: 1.5,
27
+ },
28
+ h5: {
29
+ fontSize: defaultTheme.typography.pxToRem(20),
30
+ fontWeight: 600,
31
+ },
32
+ h6: {
33
+ fontSize: defaultTheme.typography.pxToRem(18),
34
+ fontWeight: 600,
35
+ },
36
+ subtitle1: {
37
+ fontSize: defaultTheme.typography.pxToRem(18),
38
+ },
39
+ subtitle2: {
40
+ fontSize: defaultTheme.typography.pxToRem(14),
41
+ fontWeight: 500,
42
+ },
43
+ body1: {
44
+ fontSize: defaultTheme.typography.pxToRem(14),
45
+ },
46
+ body2: {
47
+ fontSize: defaultTheme.typography.pxToRem(14),
48
+ fontWeight: 400,
49
+ },
50
+ caption: {
51
+ fontSize: defaultTheme.typography.pxToRem(12),
52
+ fontWeight: 400,
53
+ },
54
+ };
55
+
56
+ export default typography;
@@ -0,0 +1,22 @@
1
+ @import "../../styles/mixins.styl"
2
+ @import "../../styles/fonts.styl"
3
+
4
+ .development
5
+ display: flex
6
+ flex-direction: column
7
+ flex-grow: 1
8
+ justify-content: space-between
9
+
10
+ .form
11
+ padding: 1rem
12
+
13
+ .root-column
14
+ display: block
15
+ flex-grow: 1
16
+
17
+ .footer
18
+ display: flex
19
+ justify-content: center
20
+ align-items: center
21
+ padding: 1rem
22
+
@@ -0,0 +1,57 @@
1
+ import React, {useEffect, useState} from "react";
2
+ import {useTranslation} from "react-i18next";
3
+ import {useDebounceValue} from "usehooks-ts";
4
+
5
+ import {Box, Button, Divider, FormControlLabel, Stack, Switch} from "@mui/material";
6
+ import Grid from "@mui/material/Grid2";
7
+
8
+ import {ApplicationOptions} from "../../common/Store";
9
+ import {useAppContext} from "../../react/contexts/AppContext";
10
+ import Styles from "./DevelopmentView.styl";
11
+
12
+ export const DevelopmentView: React.FC = () => {
13
+ const {actions} = useAppContext();
14
+ const {t} = useTranslation();
15
+ const [options, setOptions] = useState<ApplicationOptions>(global.store.get("application"));
16
+ const [debouncedOptions] = useDebounceValue(options, 500);
17
+
18
+ const handleClose = async () => {
19
+ actions.setLocation("/");
20
+ };
21
+
22
+ const handleDebugModeChange = (e: React.ChangeEvent<HTMLInputElement>, checked: boolean) => {
23
+ setOptions((prev) => ({ ...prev, debugMode: checked }));
24
+ };
25
+
26
+ useEffect(() => {
27
+ global.store.set("application", debouncedOptions);
28
+ }, [debouncedOptions]);
29
+
30
+ return (
31
+ <Box className={Styles.development}>
32
+ <Stack
33
+ component="form"
34
+ className={Styles.form}
35
+ direction="row"
36
+ spacing={2}
37
+ divider={<Divider orientation="vertical" />}
38
+ >
39
+ <Stack direction="column" spacing={3} className={Styles.rootColumn}>
40
+ <FormControlLabel
41
+ control={<Switch checked={options.debugMode} onChange={handleDebugModeChange} />}
42
+ label={t("debugMode")}
43
+ />
44
+ </Stack>
45
+ </Stack>
46
+ <Grid className={Styles.footer}>
47
+ <Stack className={Styles.actions} direction="row" spacing={2}>
48
+ <Button variant="contained" color="primary" onClick={handleClose}>
49
+ {t("close")}
50
+ </Button>
51
+ </Stack>
52
+ </Grid>
53
+ </Box>
54
+ );
55
+ };
56
+
57
+ export default DevelopmentView;
@@ -0,0 +1,60 @@
1
+ @import "../../styles/mixins.styl"
2
+ @import "../../styles/fonts.styl"
3
+
4
+ .home {
5
+ display: flex;
6
+ flex-direction: column;
7
+ flex-grow: 1;
8
+ justify-content: space-between;
9
+ overflow: hidden;
10
+
11
+ .header {
12
+ > div:global(.MuiGrid2-root) {
13
+ display: flex;
14
+ }
15
+ }
16
+
17
+ .formats {
18
+ justify-content: center;
19
+ }
20
+
21
+ .header {
22
+ position: relative;
23
+
24
+ .format-info {
25
+ display: flex;
26
+ justify-content: center;
27
+ }
28
+ }
29
+
30
+ .cancel {
31
+ position: absolute;
32
+ display: flex;
33
+ justify-content: center;
34
+ align-items: center;
35
+ width: 100%;
36
+ top: 0;
37
+ z-index: 999;
38
+ height: 100%;
39
+ backdrop-filter: brightness(0.6);
40
+ }
41
+
42
+ .content {
43
+ overflow: overlay;
44
+ flex-grow: 1;
45
+ align-content: flex-start;
46
+ justify-content: center;
47
+
48
+ .error {
49
+ width: 100%;
50
+ justify-content: center;
51
+ }
52
+ }
53
+
54
+ .footer {
55
+ display: flex;
56
+ justify-content: center;
57
+ align-items: center;
58
+ padding: 0.5rem 0.5rem 1rem 0.5rem;
59
+ }
60
+ }