mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-17 10:11:31 +10:00
feat(client): add language selector, language detector and privacy/tos pages
This commit is contained in:
@ -1,5 +1,8 @@
|
||||
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
|
||||
import merge from 'lodash/merge';
|
||||
|
||||
import { Language, languageMap } from '@/config/languages';
|
||||
|
||||
export type Theme = 'light' | 'dark';
|
||||
|
||||
export type Sidebar = 'left' | 'right';
|
||||
@ -10,6 +13,7 @@ export type Orientation = 'horizontal' | 'vertical';
|
||||
|
||||
export type BuildState = {
|
||||
theme?: Theme;
|
||||
language: Language;
|
||||
sidebar: Record<Sidebar, SidebarState>;
|
||||
page: {
|
||||
breakLine: boolean;
|
||||
@ -18,6 +22,7 @@ export type BuildState = {
|
||||
};
|
||||
|
||||
const initialState: BuildState = {
|
||||
language: languageMap['en'],
|
||||
sidebar: {
|
||||
left: { open: false },
|
||||
right: { open: false },
|
||||
@ -30,6 +35,8 @@ const initialState: BuildState = {
|
||||
|
||||
type SetThemePayload = { theme: Theme };
|
||||
|
||||
type SetLanguagePayload = { language: string };
|
||||
|
||||
type ToggleSidebarPayload = { sidebar: Sidebar };
|
||||
|
||||
type SetSidebarStatePayload = { sidebar: Sidebar; state: SidebarState };
|
||||
@ -43,6 +50,11 @@ export const buildSlice = createSlice({
|
||||
|
||||
state.theme = theme;
|
||||
},
|
||||
setLanguage: (state, action: PayloadAction<SetLanguagePayload>) => {
|
||||
const { language } = action.payload;
|
||||
|
||||
state.language = languageMap[language];
|
||||
},
|
||||
toggleSidebar: (state, action: PayloadAction<ToggleSidebarPayload>) => {
|
||||
const { sidebar } = action.payload;
|
||||
|
||||
@ -64,7 +76,7 @@ export const buildSlice = createSlice({
|
||||
},
|
||||
});
|
||||
|
||||
export const { setTheme, toggleSidebar, setSidebarState, togglePageBreakLine, togglePageOrientation } =
|
||||
export const { setTheme, setLanguage, toggleSidebar, setSidebarState, togglePageBreakLine, togglePageOrientation } =
|
||||
buildSlice.actions;
|
||||
|
||||
export default buildSlice.reducer;
|
||||
|
||||
Reference in New Issue
Block a user