diff --git a/package.json b/package.json
index 92c73493..6248abe7 100644
--- a/package.json
+++ b/package.json
@@ -8,6 +8,7 @@
"@fortawesome/free-brands-svg-icons": "^6.2.1",
"@fortawesome/free-solid-svg-icons": "^6.2.1",
"@fortawesome/react-fontawesome": "^0.2.0",
+ "@reactour/tour": "^3.6.1",
"@sentry/react": "^6.12.0",
"@sentry/tracing": "^6.12.0",
"@types/lodash": "^4.14.192",
diff --git a/src/components/App/index.tsx b/src/components/App/index.tsx
index 415a9a76..43d0a6eb 100644
--- a/src/components/App/index.tsx
+++ b/src/components/App/index.tsx
@@ -16,6 +16,7 @@ import useThemeFromStorage from '../../data/hooks/useThemeFromStorage';
import { DESKTOP_BREAKPOINT } from '../../constants';
import useScreenWidth from '../../hooks/useScreenWidth';
import InformationModal from '../InformationModal';
+import TourProvider from '../Tour';
import 'react-virtualized/styles.css';
import './stylesheet.scss';
@@ -31,50 +32,54 @@ export default function App(): React.ReactElement {
return (
-
- {/* To bring the website down for maintenance purposes,
+
+
+ {/* To bring the website down for maintenance purposes,
insert here and disable everything below.
See https://github.com/gt-scheduler/website/pull/194 for reference. */}
- (
-
-
-
-
- }
- >
-
- There was en error somewhere in the core application logic
- and it can't continue.
-
-
- Try refreshing the page to see if it fixes the issue.
-
-
-
-
- )}
- >
-
- {/* AppDataLoader is in charge of ensuring that there are valid values
+ (
+
+
+
+
+ }
+ >
+
+ There was en error somewhere in the core application
+ logic and it can't continue.
+
+
+ Try refreshing the page to see if it fixes the issue.
+
+
+
+
+ )}
+ >
+
+ {/* AppDataLoader is in charge of ensuring that there are valid values
for the Terms and Term contexts before rendering its children.
If any data is still loading,
then it displays an "app skeleton" with a spinner.
If there was an error while loading
then it displays an error screen. */}
-
-
-
-
-
-
- {/* Display a popup when first visiting the site */}
- {/* Include or here */}
-
-
-
+
+
+
+
+
+ {/* Display a popup when first visiting the site */}
+ {/* Include or here */}
+
+
+
+
);
diff --git a/src/components/Feedback/stylesheet.scss b/src/components/Feedback/stylesheet.scss
index 18c1a17c..4a0acb89 100644
--- a/src/components/Feedback/stylesheet.scss
+++ b/src/components/Feedback/stylesheet.scss
@@ -6,7 +6,7 @@
border-radius: 5px;
position: absolute;
bottom: 24px;
- right: 24px;
+ right: 100px;
width: 60px;
height: 60px;
@@ -46,6 +46,7 @@
min-height: 350px;
display: flex;
flex-direction: column;
+ z-index: 1;
@include popup;
@extend %common;
diff --git a/src/components/Tour/index.tsx b/src/components/Tour/index.tsx
new file mode 100644
index 00000000..f965bbc8
--- /dev/null
+++ b/src/components/Tour/index.tsx
@@ -0,0 +1,189 @@
+import {
+ StepType,
+ ProviderProps,
+ PopoverContentProps,
+ useTour,
+ TourProvider as TourProv,
+} from '@reactour/tour';
+import React from 'react';
+
+import './stylesheet.scss';
+
+const steps: StepType[] = [
+ {
+ selector: '#Recurring\\ Events',
+ content: () => (
+
+
Add recurring events
+
+ Use{' '}
+
+ Recurring Events
+ {' '}
+ to block out meetings, work shifts, and any other weekly events you
+ may need to schedule your classes around.
+
+
+ Drag and drop events on the schedule view to adjust times.
+
+ Use the{' '}
+
+ Finals Tab
+ {' '}
+ to view the final exam matrix.
+
+
+ The final exam matrix for Fall 2023{' '}
+
+ may not be fully finalized yet.
+
+
+ Use{' '}
+
+ Share Schedule
+ {' '}
+ to share your schedule with other students and they can share theirs
+ back.
+
+ Then, toggle{' '}
+
+ Compare Schedule
+ {' '}
+ and click on the other students`'` schedules to compare.
+