+
+
{
//min-w-[468px]
themes.map(((t: Theme) => (
-
{
- setCurrentTheme(t.name);
- setTheme(`${t.name}-${mode()}`);
- }}>
+
setSelectedTheme(t.name)}>
+ isSelected={selectedTheme === t.name}/>
)))
}
+
Preview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
)
}
\ No newline at end of file
diff --git a/src/main/frontend/theming/theme.ts b/src/main/frontend/theming/theme.ts
index be04584..0e55b55 100644
--- a/src/main/frontend/theming/theme.ts
+++ b/src/main/frontend/theming/theme.ts
@@ -1,21 +1,26 @@
+type ColorPalette = {
+ 100: string,
+ 200: string,
+ 300: string,
+ 400: string,
+ 500: string,
+ 600: string,
+ 700: string,
+ 800: string,
+ 900: string,
+ DEFAULT: string
+}
+
export type Theme = {
name?: string,
colors: {
background?: string,
foreground?: string,
- primary: {
- 50: string,
- 100: string,
- 200: string,
- 300: string,
- 400: string,
- 500: string,
- 600: string,
- 700: string,
- 800: string,
- 900: string,
- DEFAULT: string
- },
+ primary: ColorPalette,
+ secondary?: ColorPalette,
+ success?: ColorPalette,
+ warning?: ColorPalette,
+ danger?: ColorPalette,
focus?: string,
}
}
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes.ts b/src/main/frontend/theming/themes.ts
index 2273108..9513919 100644
--- a/src/main/frontend/theming/themes.ts
+++ b/src/main/frontend/theming/themes.ts
@@ -10,6 +10,7 @@ import {Blue} from "./themes/blue";
import {Yellow} from "./themes/yellow";
import {Violet} from "./themes/violet";
import {Orange} from "./themes/orange";
+import {Colorblind} from "./themes/colorblind";
import {Theme} from "./theme";
import {ConfigTheme, ConfigThemes} from "@nextui-org/react";
@@ -43,4 +44,4 @@ export function themeNames(): string[] {
return Object.keys(compileThemes(themes));
}
-export const themes: Theme[] = [GameyfinBlue, GameyfinViolet, GameyfinClassic, Neutral, Slate, Red, Rose, Orange, Purple, Blue, Yellow, Violet];
+export const themes: Theme[] = [GameyfinBlue, GameyfinViolet, GameyfinClassic, Neutral, Slate, Red, Rose, Orange, Purple, Blue, Yellow, Violet, Colorblind];
diff --git a/src/main/frontend/theming/themes/blue.ts b/src/main/frontend/theming/themes/blue.ts
index 3de8686..de46c99 100644
--- a/src/main/frontend/theming/themes/blue.ts
+++ b/src/main/frontend/theming/themes/blue.ts
@@ -4,7 +4,7 @@ export const Blue: Theme = {
name: 'blue',
colors: {
primary: {
- 50: '#e3eeff',
+ DEFAULT: '#2563EB',
100: '#b6cdfe',
200: '#88abf7',
300: '#5b8af1',
@@ -13,8 +13,19 @@ export const Blue: Theme = {
600: '#0b3da4',
700: '#052c77',
800: '#001a4a',
- 900: '#00091e',
- DEFAULT: '#2563EB'
+ 900: '#00091e'
+ },
+ secondary: {
+ DEFAULT: '#d29613',
+ 100: '#faebcc',
+ 200: '#f5d898',
+ 300: '#f1c465',
+ 400: '#ecb132',
+ 500: '#d29613',
+ 600: '#a87810',
+ 700: '#7e5a0c',
+ 800: '#543c08',
+ 900: '#2a1e04'
}
}
};
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes/colorblind.ts b/src/main/frontend/theming/themes/colorblind.ts
new file mode 100644
index 0000000..47cbf92
--- /dev/null
+++ b/src/main/frontend/theming/themes/colorblind.ts
@@ -0,0 +1,67 @@
+import {Theme} from '../theme';
+
+export const Colorblind: Theme = {
+ name: 'colorblind',
+ colors: {
+ primary: {
+ DEFAULT: '#cc79a7',
+ 900: '#2f1222',
+ 800: '#5f2444',
+ 700: '#8e3666',
+ 600: '#bb4b88',
+ 500: '#cc79a7',
+ 400: '#d795b9',
+ 300: '#e1afca',
+ 200: '#ebcadc',
+ 100: '#f5e4ed'
+ },
+ secondary: {
+ DEFAULT: '#0072b2',
+ 900: '#001724',
+ 800: '#002d47',
+ 700: '#00446b',
+ 600: '#005a8f',
+ 500: '#0072b2',
+ 400: '#009bf5',
+ 300: '#38b6ff',
+ 200: '#7aceff',
+ 100: '#bde7ff'
+ },
+ success: {
+ DEFAULT: '#009e73',
+ 900: '#002017',
+ 800: '#003f2e',
+ 700: '#005f46',
+ 600: '#007e5d',
+ 500: '#009e73',
+ 400: '#00e4a8',
+ 300: '#2cffc7',
+ 200: '#72ffd9',
+ 100: '#b9ffec'
+ },
+ warning: {
+ DEFAULT: '#e69f00',
+ 900: '#2e1f00',
+ 800: '#5c3f00',
+ 700: '#8a5e00',
+ 600: '#b87d00',
+ 500: '#e69f00',
+ 400: '#ffb81f',
+ 300: '#ffca57',
+ 200: '#ffdb8f',
+ 100: '#ffedc7'
+ },
+ danger: {
+ DEFAULT: '#d55e00',
+ 900: '#2b1300',
+ 800: '#562500',
+ 700: '#813800',
+ 600: '#ab4a00',
+ 500: '#d55e00',
+ 400: '#ff7912',
+ 300: '#ff9a4e',
+ 200: '#ffbc89',
+ 100: '#ffddc4'
+ }
+ }
+};
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes/gameyfin-blue.ts b/src/main/frontend/theming/themes/gameyfin-blue.ts
index aee7c70..728f5a8 100644
--- a/src/main/frontend/theming/themes/gameyfin-blue.ts
+++ b/src/main/frontend/theming/themes/gameyfin-blue.ts
@@ -4,7 +4,7 @@ export const GameyfinBlue: Theme = {
name: 'gameyfin-blue',
colors: {
primary: {
- 50: '#e7eaff',
+ DEFAULT: '#2332c8',
100: '#bdc3f9',
200: '#919bee',
300: '#6672e5',
@@ -13,8 +13,19 @@ export const GameyfinBlue: Theme = {
600: '#1a2699',
700: '#101b6f',
800: '#070f45',
- 900: '#02041d',
- DEFAULT: '#2332c8'
+ 900: '#02041d'
+ },
+ secondary: {
+ DEFAULT: '#c3b422',
+ 100: '#f7f3cf',
+ 200: '#eee6a0',
+ 300: '#e6da70',
+ 400: '#ddce40',
+ 500: '#c3b422',
+ 600: '#9c8f1c',
+ 700: '#756b15',
+ 800: '#4e480e',
+ 900: '#272407',
}
}
};
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes/gameyfin-classic.ts b/src/main/frontend/theming/themes/gameyfin-classic.ts
index d7d9dd1..3e528d0 100644
--- a/src/main/frontend/theming/themes/gameyfin-classic.ts
+++ b/src/main/frontend/theming/themes/gameyfin-classic.ts
@@ -4,7 +4,7 @@ export const GameyfinClassic: Theme = {
name: 'gameyfin-classic',
colors: {
primary: {
- 50: '#e1ffec',
+ DEFAULT: '#16A34A',
100: '#b8f7cf',
200: '#8ef0b2',
300: '#62ea94',
@@ -13,8 +13,19 @@ export const GameyfinClassic: Theme = {
600: '#159d47',
700: '#0b7032',
800: '#02431d',
- 900: '#001804',
- DEFAULT: '#16A34A'
+ 900: '#001804'
+ },
+ secondary: {
+ DEFAULT: '#ca208d',
+ 100: '#f8cfe9',
+ 200: '#f0a0d3',
+ 300: '#e970bc',
+ 400: '#e140a6',
+ 500: '#ca208d',
+ 600: '#a21970',
+ 700: '#7a1354',
+ 800: '#510d38',
+ 900: '#29061c'
}
}
};
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes/gameyfin-violet.ts b/src/main/frontend/theming/themes/gameyfin-violet.ts
index d0886a4..b9780f9 100644
--- a/src/main/frontend/theming/themes/gameyfin-violet.ts
+++ b/src/main/frontend/theming/themes/gameyfin-violet.ts
@@ -4,7 +4,7 @@ export const GameyfinViolet: Theme = {
name: 'gameyfin-violet',
colors: {
primary: {
- 50: '#f3ebff',
+ DEFAULT: '#6441a5',
100: '#d5c7ed',
200: '#b7a4dd',
300: '#9a7fce',
@@ -13,8 +13,19 @@ export const GameyfinViolet: Theme = {
600: '#4e3281',
700: '#37235d',
800: '#21153a',
- 900: '#0d0519',
- DEFAULT: '#6441a5'
+ 900: '#0d0519'
+ },
+ secondary: {
+ DEFAULT: '#82a541',
+ 100: '#e7efd7',
+ 200: '#cedfaf',
+ 300: '#b6cf87',
+ 400: '#9dbf5f',
+ 500: '#82a541',
+ 600: '#688334',
+ 700: '#4e6227',
+ 800: '#34421a',
+ 900: '#1a210d'
}
}
};
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes/neutral.ts b/src/main/frontend/theming/themes/neutral.ts
index 2a08602..3db702d 100644
--- a/src/main/frontend/theming/themes/neutral.ts
+++ b/src/main/frontend/theming/themes/neutral.ts
@@ -4,7 +4,7 @@ export const Neutral: Theme = {
name: 'neutral',
colors: {
primary: {
- 50: '#fceff2',
+ DEFAULT: '#525252',
100: '#ddd7d9',
200: '#c1bfbf',
300: '#a6a6a6',
@@ -13,8 +13,19 @@ export const Neutral: Theme = {
600: '#595959',
700: '#413f40',
800: '#292526',
- 900: '#16090d',
- DEFAULT: '#525252'
+ 900: '#16090d'
+ },
+ secondary: {
+ DEFAULT: '#8d8d8d',
+ 100: '#e8e8e8',
+ 200: '#d1d1d1',
+ 300: '#bababa',
+ 400: '#a3a3a3',
+ 500: '#8d8d8d',
+ 600: '#707070',
+ 700: '#545454',
+ 800: '#383838',
+ 900: '#1c1c1c'
}
}
};
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes/orange.ts b/src/main/frontend/theming/themes/orange.ts
index 34c8b28..f52092b 100644
--- a/src/main/frontend/theming/themes/orange.ts
+++ b/src/main/frontend/theming/themes/orange.ts
@@ -4,7 +4,7 @@ export const Orange: Theme = {
name: 'orange',
colors: {
primary: {
- 50: '#ffedde',
+ DEFAULT: '#EA580C',
100: '#ffcdb2',
200: '#fbac84',
300: '#f78c54',
@@ -13,8 +13,19 @@ export const Orange: Theme = {
600: '#ab3f07',
700: '#7a2d03',
800: '#4b1900',
- 900: '#1f0600',
- DEFAULT: '#EA580C'
+ 900: '#1f0600'
+ },
+ secondary: {
+ DEFAULT: '#0b93da',
+ 100: '#caebfc',
+ 200: '#94d6f9',
+ 300: '#5fc2f7',
+ 400: '#2aadf4',
+ 500: '#0b93da',
+ 600: '#0975ae',
+ 700: '#075783',
+ 800: '#053a57',
+ 900: '#021d2c'
}
}
};
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes/purple.ts b/src/main/frontend/theming/themes/purple.ts
index e3fd41e..541388f 100644
--- a/src/main/frontend/theming/themes/purple.ts
+++ b/src/main/frontend/theming/themes/purple.ts
@@ -4,7 +4,7 @@ export const Purple: Theme = {
name: 'purple',
colors: {
primary: {
- 50: '#ffe6ff',
+ DEFAULT: '#DD62ED',
100: '#f2b9f9',
200: '#e78df3',
300: '#dc5fed',
@@ -13,8 +13,19 @@ export const Purple: Theme = {
600: '#9012a0',
700: '#670b73',
800: '#3f0547',
- 900: '#19001b',
- DEFAULT: '#DD62ED'
+ 900: '#19001b'
+ },
+ secondary: {
+ DEFAULT: '#2ecd1a',
+ 100: '#d2f9cd',
+ 200: '#a6f29c',
+ 300: '#79ec6a',
+ 400: '#4de538',
+ 500: '#2ecd1a',
+ 600: '#26a215',
+ 700: '#1c7a10',
+ 800: '#13510b',
+ 900: '#092905'
}
}
};
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes/red.ts b/src/main/frontend/theming/themes/red.ts
index bdf91f9..a362dee 100644
--- a/src/main/frontend/theming/themes/red.ts
+++ b/src/main/frontend/theming/themes/red.ts
@@ -4,7 +4,7 @@ export const Red: Theme = {
name: 'red',
colors: {
primary: {
- 50: '#ffe5e5',
+ DEFAULT: '#DC2626',
100: '#f9bbbb',
200: '#ef9090',
300: '#e76464',
@@ -13,8 +13,19 @@ export const Red: Theme = {
600: '#9b1718',
700: '#6f0f11',
800: '#450708',
- 900: '#1e0000',
- DEFAULT: '#DC2626'
+ 900: '#1e0000'
+ },
+ secondary: {
+ DEFAULT: '#20c6c6',
+ 100: '#cff7f7',
+ 200: '#9fefef',
+ 300: '#6ee7e7',
+ 400: '#3ee0e0',
+ 500: '#20c6c6',
+ 600: '#1a9e9e',
+ 700: '#137676',
+ 800: '#0d4f4f',
+ 900: '#062727'
}
}
};
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes/rose.ts b/src/main/frontend/theming/themes/rose.ts
index cb776c4..efb213f 100644
--- a/src/main/frontend/theming/themes/rose.ts
+++ b/src/main/frontend/theming/themes/rose.ts
@@ -4,7 +4,7 @@ export const Rose: Theme = {
name: 'rose',
colors: {
primary: {
- 50: '#ffe4ed',
+ DEFAULT: '#E11D48',
100: '#fbb9c8',
200: '#f28da4',
300: '#ec607f',
@@ -13,8 +13,19 @@ export const Rose: Theme = {
600: '#9f1233',
700: '#730b23',
800: '#470415',
- 900: '#1e0006',
- DEFAULT: '#E11D48'
+ 900: '#1e0006'
+ },
+ secondary: {
+ DEFAULT: '#1acba4',
+ 100: '#cdf9ef',
+ 200: '#9cf2df',
+ 300: '#6aecd0',
+ 400: '#38e5c0',
+ 500: '#1acba4',
+ 600: '#15a284',
+ 700: '#107a63',
+ 800: '#0b5142',
+ 900: '#052921'
}
}
};
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes/slate.ts b/src/main/frontend/theming/themes/slate.ts
index 6910c7f..613cf5c 100644
--- a/src/main/frontend/theming/themes/slate.ts
+++ b/src/main/frontend/theming/themes/slate.ts
@@ -4,7 +4,7 @@ export const Slate: Theme = {
name: 'slate',
colors: {
primary: {
- 50: '#eaf3ff',
+ DEFAULT: '#475569',
100: '#cfd7e4',
200: '#b2bdcd',
300: '#95a3b7',
@@ -13,8 +13,19 @@ export const Slate: Theme = {
600: '#48566a',
700: '#323e4d',
800: '#1d2531',
- 900: '#040d17',
- DEFAULT: '#475569'
+ 900: '#040d17'
+ },
+ secondary: {
+ DEFAULT: '#88775e',
+ 100: '#e8e4de',
+ 200: '#d1c9bd',
+ 300: '#baae9c',
+ 400: '#a3937b',
+ 500: '#88775e',
+ 600: '#6c5f4b',
+ 700: '#514738',
+ 800: '#363026',
+ 900: '#1b1813'
}
}
};
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes/violet.ts b/src/main/frontend/theming/themes/violet.ts
index 26ae9e5..d01c3ba 100644
--- a/src/main/frontend/theming/themes/violet.ts
+++ b/src/main/frontend/theming/themes/violet.ts
@@ -4,7 +4,7 @@ export const Violet: Theme = {
name: 'violet',
colors: {
primary: {
- 50: '#f2e7ff',
+ DEFAULT: '#6D28D9',
100: '#d4bdf8',
200: '#b592ee',
300: '#9867e5',
@@ -13,8 +13,19 @@ export const Violet: Theme = {
600: '#4b1a99',
700: '#36126e',
800: '#200944',
- 900: '#0d021c',
- DEFAULT: '#6D28D9'
+ 900: '#0d021c'
+ },
+ secondary: {
+ DEFAULT: '#84c322',
+ 100: '#e8f7cf',
+ 200: '#d0eea0',
+ 300: '#b9e670',
+ 400: '#a1dd40',
+ 500: '#84c322',
+ 600: '#6b9c1c',
+ 700: '#507515',
+ 800: '#354e0e',
+ 900: '#1b2707'
}
}
};
\ No newline at end of file
diff --git a/src/main/frontend/theming/themes/yellow.ts b/src/main/frontend/theming/themes/yellow.ts
index 034ab68..0720496 100644
--- a/src/main/frontend/theming/themes/yellow.ts
+++ b/src/main/frontend/theming/themes/yellow.ts
@@ -4,7 +4,7 @@ export const Yellow: Theme = {
name: 'yellow',
colors: {
primary: {
- 50: '#fffadb',
+ DEFAULT: '#FACC15',
100: '#feefae',
200: '#fce47f',
300: '#fbd94e',
@@ -13,8 +13,19 @@ export const Yellow: Theme = {
600: '#af8c00',
700: '#7d6400',
800: '#4c3c00',
- 900: '#1c1400',
- DEFAULT: '#FACC15'
+ 900: '#1c1400'
+ },
+ secondary: {
+ DEFAULT: '#0531e1',
+ 100: '#c8d3fe',
+ 200: '#91a7fd',
+ 300: '#5a7afc',
+ 400: '#234efb',
+ 500: '#0531e1',
+ 600: '#0427b4',
+ 700: '#031d87',
+ 800: '#02135a',
+ 900: '#010a2d'
}
}
};
\ No newline at end of file
diff --git a/src/main/frontend/views/SetupView.tsx b/src/main/frontend/views/SetupView.tsx
index 18d3042..a837e8b 100644
--- a/src/main/frontend/views/SetupView.tsx
+++ b/src/main/frontend/views/SetupView.tsx
@@ -36,7 +36,10 @@ function WelcomeStep() {
function ThemeStep() {
return (
-
+
);
}
@@ -88,7 +91,7 @@ function SetupView() {
const navigate = useNavigate();
return (
-