You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

App.js 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import React, { useEffect, lazy, Suspense, useRef, useState } from 'react';
  2. import './App.css';
  3. import { Route, Routes, useLocation, useNavigate } from 'react-router-dom';
  4. import Navigation from './components/shared/Navigation';
  5. import Footer from './components/shared/Footer';
  6. import Loader from './components/shared/Loader';
  7. import ScrollToTop from './components/root/ScrollToTop';
  8. import routes from './routes';
  9. const Home = lazy(() => import('./pages/Home'));
  10. const Portfolio = lazy(() => import('./pages/Portfolio'));
  11. const Services = lazy(() => import('./pages/Services'));
  12. const Careers = lazy(() => import('./pages/Careers'));
  13. const About = lazy(() => import('./pages/About'));
  14. const BlogPost = lazy(() => import('./components/BlogPost'));
  15. const ProcessPage = lazy(() => import('./pages/ProcessPage'));
  16. const ContactPage = lazy(() => import('./pages/ContactPage'));
  17. const CaseStudyBI = lazy(() => import('./pages/CaseStudyBI'));
  18. const CaseStudyFinantial = lazy(() => import('./pages/CaseStudyFinantial'));
  19. const CaseStudyTicketing = lazy(() => import('./pages/CaseStudyTicketing'));
  20. const CaseStudyCentralized = lazy(() => import('./pages/CaseStudyCentralized'));
  21. const CaseStudyResource = lazy(() => import('./pages/CaseStudyResource'));
  22. const CaseStudyStrata = lazy(() => import('./pages/CaseStudyStrata'));
  23. const PrivacyPolicy = lazy(() => import('./pages/PrivacyPolicy'));
  24. const WorkWithUs = lazy(() => import('./pages/WorkWithUs'));
  25. // Navigation Links
  26. const links = routes.filter(item => item.nav === true);
  27. function App() {
  28. //tabs for contact form
  29. const [tab, setTab] = useState(true);
  30. const [tabTitle, setTabTitle] = useState('Tell Us About Your Idea!');
  31. const link = useNavigate();
  32. //scroll to Contact segment
  33. const forwardedRef = useRef(null);
  34. //initialize analytics page tracking
  35. //usePageTracking();
  36. //scroll to Contact fn
  37. function scrollToView(event) {
  38. event.preventDefault();
  39. if (forwardedRef) {
  40. forwardedRef.current.scrollIntoView({ behavior: 'smooth' });
  41. } else {
  42. link('/contact');
  43. }
  44. }
  45. //nav active links
  46. function activeLinks(activePage, bool = true) {
  47. const text = 'text-gray-500 ';
  48. if (bool === true) {
  49. return activePage ? 'activeLink dg-primary-900 ' : text;
  50. } else {
  51. return text;
  52. }
  53. }
  54. return (
  55. <div>
  56. <ScrollToTop />
  57. <Navigation
  58. links={links}
  59. scrollToView={scrollToView}
  60. activeLinks={activeLinks}
  61. forwardedRef={forwardedRef}
  62. ></Navigation>
  63. <Suspense fallback={<Loader />}>
  64. <Routes>
  65. <Route exact path="/" element={<Home />}/>
  66. <Route exact path="/workwithus" element={<WorkWithUs />}/>
  67. <Route exact path="/portfolio" element={<Portfolio />}/>
  68. <Route exact path="/process" element={<ProcessPage />}/>
  69. <Route exact path="/careers" element={<Careers />}/>
  70. <Route exact path="/about" element={<About />}/>
  71. <Route exact path="/contact" element={<ContactPage />}/>
  72. <Route exact path="/casestudybi" element={<CaseStudyBI />}/>
  73. <Route exact path="/casestudystrata" element={<CaseStudyStrata />}/>
  74. <Route exact path="/casestudyfinancial" element={<CaseStudyFinantial />}/>
  75. <Route exact path="/casestudycentralized" element={<CaseStudyCentralized />}/>
  76. <Route exact path="/casestudyresource" element={<CaseStudyResource />}/>
  77. <Route exact path="/casestudyticketing" element={<CaseStudyTicketing />}/>
  78. <Route exact path="/privacypolicy" element={<PrivacyPolicy />}/>
  79. </Routes>
  80. </Suspense>
  81. <Footer
  82. links={links}
  83. activeLinks={activeLinks}
  84. scrollToView={scrollToView}
  85. forwardedRef={forwardedRef}
  86. />
  87. </div>
  88. );
  89. }
  90. export default App;