github.com/pluralsh/plural-cli@v0.9.5/pkg/ui/web/src/Plural.tsx (about) 1 import { theme as honorableTheme } from '@pluralsh/design-system' 2 import { Grommet } from 'grommet' 3 import { ThemeProvider as HonorableThemeProvider } from 'honorable' 4 import React, { useMemo } from 'react' 5 import { RouterProvider } from 'react-router-dom' 6 import { ThemeProvider } from 'styled-components' 7 8 import Loader from './components/loader/Loader' 9 import { WailsContext, WailsContextProps } from './context/wails' 10 import { Provider } from './graphql/generated/graphql' 11 import { grommetTheme } from './grommet/theme' 12 import { useWailsQuery } from './hooks/useWails' 13 import { router } from './routes/router' 14 import { Binding } from './services/wails' 15 import { FontStyles } from './styled/fonts' 16 import { GlobalStyles } from './styled/global' 17 import { ScrollbarStyles } from './styled/scrollbar' 18 import { styledTheme } from './styled/theme' 19 import { PluralProject } from './types/client' 20 21 function Plural(): React.ReactElement { 22 const { data: context } = useWailsQuery(Binding.Context) 23 const { data: project = {} as PluralProject } = useWailsQuery<PluralProject>(Binding.Project) 24 const { data: provider } = useWailsQuery<Provider>(Binding.Provider) 25 const { data: token } = useWailsQuery(Binding.Token) 26 27 const isReady = useMemo(() => !!context && !!project && !!token, [context, project, token]) 28 const wailsContext = useMemo(() => ({ 29 context, 30 project: { ...project, provider }, 31 token, 32 } as WailsContextProps), [context, project, provider, token]) 33 34 return ( 35 <HonorableThemeProvider theme={honorableTheme}> 36 <Grommet 37 full 38 theme={grommetTheme} 39 > 40 <ThemeProvider theme={styledTheme}> 41 <WailsContext.Provider value={wailsContext}> 42 <GlobalStyles /> 43 <FontStyles /> 44 <ScrollbarStyles /> 45 {isReady && <RouterProvider router={router} />} 46 {!isReady && <Loader />} 47 </WailsContext.Provider> 48 </ThemeProvider> 49 </Grommet> 50 </HonorableThemeProvider> 51 ) 52 } 53 54 export default Plural