import React, { useState, useEffect, useRef } from 'react' import { BrowserRouter, Switch, Route } from 'react-router-dom' import { v4 as uuidv4 } from 'uuid' import { AppLayout, Container } from 'aws-northstar/layouts' import type { Notification } from 'aws-northstar/layouts/AppLayout' import type { FlashbarMessage } from 'aws-northstar/components/Flashbar' import { Flashbar, Header, LoadingIndicator, Overlay, ProgressBar } from 'aws-northstar/components' import SideNavigation, { SideNavigationItemType } from 'aws-northstar/components/SideNavigation' import { useTranslation } from 'react-i18next' import Dictation from './components/Dictation' import VocabularyList from './components/VocabularyList' import VocabularyAdd from './components/VocabularyAdd' import NotFound from './components/NotFound' const App: React.FC = () => { const { t: transCommon } = useTranslation('common') const [isLoading, setIsLoading] = useState(false) const [progress, setProgress] = useState(null) const [notification, setNotification] = useState([]) const myRef = useRef(null) useEffect(() => { if (myRef.current) myRef.current.scrollIntoView() }, [notification]) const handleNotification = (message: FlashbarMessage) => { setNotification([ { id: uuidv4(), onDismiss: () => setNotification([]), ...message } ]) } const navigation = ( ) return ( {isLoading && progress === null && ( )} {isLoading && progress !== null && ( )} } navigation={navigation} >
( )} /> ( )} /> ( )} />
) } export default App