oxen-website/state/navigation.ts

66 lines
1.6 KiB
TypeScript

import { ISplitPage } from '../types/cms';
export enum SideMenuItem {
WHO_ARE_WE = 'WHO_ARE_WE',
MISSION = 'MISSION',
TRADE = 'TRADE',
TOOLS = 'TOOLS',
BUILD = 'BUILD',
SUPPORT = 'SUPPORT',
LEARN_MORE = 'LEARN_MORE',
BLOG = 'BLOG',
}
export type TPages = {
[name: string]: ISplitPage;
};
export interface INavigation {
headerCollapsed: boolean;
sideMenuExpanded: boolean;
sideMenuSplit: boolean;
pages?: TPages;
}
export const initialNavigationState: INavigation = {
// Side menu expanded only toggles for mobile.
// On desktop it's always open (if it fits).
headerCollapsed: true,
sideMenuExpanded: false,
sideMenuSplit: true,
};
export enum NavigationActions {
SET_HEADER_COLLAPSED = 'SET_HEADER_COLLAPSED',
SET_SIDE_MENU_SPLIT = 'SET_SIDE_MENU_SPLIT',
EXPAND_SIDE_MENU = 'EXPAND_SIDE_MENU',
COLLAPSE_SIDE_MENU = 'COLLAPSE_SIDE_MENU',
SET_SPLIT_PAGES_CONTENT = 'SET_SPLIT_PAGES_CONTENT',
}
// ////////////////////////////// //
// Action Creators //
// ////////////////////////////// //
export const setHeaderCollapsed = (collapsed: boolean) => ({
type: NavigationActions.SET_HEADER_COLLAPSED,
payload: collapsed,
});
export const setSideMenuSplit = (split: boolean) => ({
type: NavigationActions.SET_SIDE_MENU_SPLIT,
payload: split,
});
export const expandSideMenu = () => ({
type: NavigationActions.EXPAND_SIDE_MENU,
});
export const collapseSideMenu = () => ({
type: NavigationActions.COLLAPSE_SIDE_MENU,
});
export const setSplitPagesContent = (pages: TPages) => ({
type: NavigationActions.SET_SPLIT_PAGES_CONTENT,
payload: pages,
});