adding project page

This commit is contained in:
2025-02-17 07:52:50 -06:00
parent f6daf6e7d3
commit fd5dcf5756
94 changed files with 2097 additions and 2126 deletions

View File

@@ -0,0 +1,5 @@
import { Context, createContext } from 'react';
import { AppContextProps } from './AppContextProps.interface';
export const AppContext: Context<AppContextProps> =
createContext<AppContextProps>({} as AppContextProps);

View File

@@ -0,0 +1,7 @@
import { Action } from './reducer';
import { AppContextState } from './AppContextState.interface';
export interface AppContextProps {
state: AppContextState;
dispatch: React.Dispatch<Action>;
}

View File

@@ -0,0 +1,30 @@
import { useMemo, useReducer } from 'react';
import { AppContext } from './AppContext';
import { AppContextProviderProps } from './AppContextProviderProps.interface';
import { AppContextProps } from './AppContextProps.interface';
import { AppContextState } from './AppContextState.interface';
import { reducer } from './reducer';
const AppContextProvider = (
props: AppContextProviderProps
) => {
const intialState: AppContextState = {
featureFlags: [],
userProfile: {}
};
const [state, dispatch] = useReducer(reducer, intialState);
const contextValue: AppContextProps = useMemo(() => {
return {
state,
dispatch
};
}, [state, dispatch]);
return (
<AppContext.Provider value={contextValue}>
{props.children}
</AppContext.Provider>
);
};
export default AppContextProvider;

View File

@@ -0,0 +1,3 @@
export interface AppContextProviderProps {
children: React.ReactNode;
}

View File

@@ -0,0 +1,6 @@
import { User } from '@microsoft/microsoft-graph-types';
export interface AppContextState {
featureFlags: { key: string; enabled: boolean }[];
userProfile: User;
}

View File

@@ -0,0 +1,22 @@
import { User } from '@microsoft/microsoft-graph-types';
import { AppContextState } from './AppContextState.interface';
export type Action =
| { type: 'SET_USER_PROFILE'; payload: User };
export const reducer = (
state: AppContextState,
action: Action
): AppContextState => {
switch (action.type) {
case 'SET_USER_PROFILE': {
return {
...state,
userProfile: action.payload
};
}
default: {
return state;
}
}
};