diff --git a/interface/.eslintrc.cjs b/interface/.eslintrc.cjs
deleted file mode 100644
index d6c95379..00000000
--- a/interface/.eslintrc.cjs
+++ /dev/null
@@ -1,18 +0,0 @@
-module.exports = {
- root: true,
- env: { browser: true, es2020: true },
- extends: [
- 'eslint:recommended',
- 'plugin:@typescript-eslint/recommended',
- 'plugin:react-hooks/recommended',
- ],
- ignorePatterns: ['dist', '.eslintrc.cjs'],
- parser: '@typescript-eslint/parser',
- plugins: ['react-refresh'],
- rules: {
- 'react-refresh/only-export-components': [
- 'warn',
- { allowConstantExport: true },
- ],
- },
-}
diff --git a/interface/.gitignore b/interface/.gitignore
deleted file mode 100644
index a547bf36..00000000
--- a/interface/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
-node_modules
-dist
-dist-ssr
-*.local
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/interface/README.md b/interface/README.md
deleted file mode 100644
index 1ebe379f..00000000
--- a/interface/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# React + TypeScript + Vite
-
-This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
-
-Currently, two official plugins are available:
-
-- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
-- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
-
-## Expanding the ESLint configuration
-
-If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:
-
-- Configure the top-level `parserOptions` property like this:
-
-```js
- parserOptions: {
- ecmaVersion: 'latest',
- sourceType: 'module',
- project: ['./tsconfig.json', './tsconfig.node.json'],
- tsconfigRootDir: __dirname,
- },
-```
-
-- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`
-- Optionally add `plugin:@typescript-eslint/stylistic-type-checked`
-- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list
diff --git a/interface/bun.lockb b/interface/bun.lockb
deleted file mode 100755
index b124928d..00000000
Binary files a/interface/bun.lockb and /dev/null differ
diff --git a/interface/index.html b/interface/index.html
deleted file mode 100644
index feec9812..00000000
--- a/interface/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
- Vite + React + TS
-
-
-
-
-
-
diff --git a/interface/package.json b/interface/package.json
deleted file mode 100644
index 9800ac8a..00000000
--- a/interface/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "popup",
- "private": true,
- "version": "0.0.0",
- "type": "module",
- "scripts": {
- "dev": "vite",
- "build": "tsc && vite build",
- "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
- "preview": "vite preview"
- },
- "dependencies": {
- "framer-motion": "^10.16.4",
- "react": "^18.2.0",
- "react-best-gradient-color-picker": "^2.2.22",
- "react-dom": "^18.2.0"
- },
- "devDependencies": {
- "@types/react": "^18.2.15",
- "@types/react-dom": "^18.2.7",
- "@typescript-eslint/eslint-plugin": "^6.0.0",
- "@typescript-eslint/parser": "^6.0.0",
- "@vitejs/plugin-react": "^4.0.3",
- "autoprefixer": "^10.4.15",
- "eslint": "^8.45.0",
- "eslint-plugin-react-hooks": "^4.6.0",
- "eslint-plugin-react-refresh": "^0.4.3",
- "postcss": "^8.4.29",
- "tailwindcss": "^3.3.3",
- "typescript": "^5.0.2",
- "vite": "^4.4.5"
- }
-}
diff --git a/interface/postcss.config.js b/interface/postcss.config.js
deleted file mode 100644
index 2e7af2b7..00000000
--- a/interface/postcss.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
- plugins: {
- tailwindcss: {},
- autoprefixer: {},
- },
-}
diff --git a/interface/public/vite.svg b/interface/public/vite.svg
deleted file mode 100644
index e7b8dfb1..00000000
--- a/interface/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/interface/src/App.css b/interface/src/App.css
deleted file mode 100644
index e69de29b..00000000
diff --git a/interface/src/App.tsx b/interface/src/App.tsx
deleted file mode 100644
index b0b4872e..00000000
--- a/interface/src/App.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-// App.tsx
-import { useState } from 'react';
-import TabbedContainer from './components/TabbedContainer';
-import Settings from './pages/Settings';
-import logo from './assets/betterseqta-dark-full.png';
-import logoDark from './assets/betterseqta-light-full.png';
-import Shortcuts from './pages/Shortcuts';
-import About from './pages/About';
-
-export interface SettingsState {
- notificationCollector: boolean;
- lessonAlerts: boolean;
- animatedBackground: boolean;
- animatedBackgroundSpeed: boolean;
- customThemeColor: string;
- betterSEQTAPlus: boolean;
-}
-
-const App: React.FC = () => {
- const [settingsState, setSettingsState] = useState({
- notificationCollector: false,
- lessonAlerts: false,
- animatedBackground: false,
- animatedBackgroundSpeed: false,
- customThemeColor: "#db6969",
- betterSEQTAPlus: true
- });
-
- // Handler for Switches
- const switchChange = (key: string, isOn: boolean) => {
- setSettingsState({
- ...settingsState,
- [key]: isOn,
- });
- };
-
- // Handler for ColorPicker
- const colorChange = (color: string) => {
- setSettingsState({
- ...settingsState,
- customThemeColor: color,
- });
- };
-
- const tabs = [
- {
- title: 'Settings',
- content:
- },
- {
- title: 'Shortcuts',
- content:
- },
- {
- title: 'About',
- content:
- }
- ];
-
- return (
-
-
-
-
-

-

-
-
-
-
-
- );
-}
-
-export default App;
\ No newline at end of file
diff --git a/interface/src/assets/betterseqta-dark-full.png b/interface/src/assets/betterseqta-dark-full.png
deleted file mode 100644
index f2c77f49..00000000
Binary files a/interface/src/assets/betterseqta-dark-full.png and /dev/null differ
diff --git a/interface/src/assets/betterseqta-light-full.png b/interface/src/assets/betterseqta-light-full.png
deleted file mode 100644
index 6bd12477..00000000
Binary files a/interface/src/assets/betterseqta-light-full.png and /dev/null differ
diff --git a/interface/src/assets/react.svg b/interface/src/assets/react.svg
deleted file mode 100644
index 6c87de9b..00000000
--- a/interface/src/assets/react.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/interface/src/components/ColorPicker.tsx b/interface/src/components/ColorPicker.tsx
deleted file mode 100644
index 84bd298d..00000000
--- a/interface/src/components/ColorPicker.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-// TODO: Create types for ColorPicker
-// @ts-expect-error No typescript declarations available
-import ColorPicker from 'react-best-gradient-color-picker';
-import { useState, useRef, useEffect } from 'react';
-
-interface ColorPickerProps {
- color: string;
- onChange: (color: string) => void;
-}
-
-const Picker = ({ color, onChange }: ColorPickerProps) => {
- const [showPicker, setShowPicker] = useState(false);
- const ref = useRef(null);
-
- useEffect(() => {
- const handleClickOutside = (event: MouseEvent): void => {
- if (ref.current && !ref.current.contains(event.target as Node)) {
- setShowPicker(false);
- }
- };
- if (showPicker) {
- document.addEventListener('mousedown', handleClickOutside);
- }
- return () => {
- document.removeEventListener('mousedown', handleClickOutside);
- };
- }, [showPicker]);
-
- return (
-
-
- {showPicker && (
-
-
-
- )}
-
- );
-};
-
-export default Picker;
diff --git a/interface/src/components/Slider.css b/interface/src/components/Slider.css
deleted file mode 100644
index ee7b1c0b..00000000
--- a/interface/src/components/Slider.css
+++ /dev/null
@@ -1,21 +0,0 @@
-.range-slider{
- margin: 20px;
- appearance: none;
- outline: none;
- width: 150px;
- height: 3px;
- border-radius: 5px;
- background-color: #ccc;
-}
-
-.range-slide::-webkit-slider-runnable-track{
- background-color: #4BD663 !important;
-}
-.range-slider::-webkit-slider-thumb {
- background: #fafafa;
- appearance: none;
- box-shadow: 1px 2px 26px 1px #bdbdbd;
- width: 15px;
- height: 15px;
- border-radius: 50%;
-}
\ No newline at end of file
diff --git a/interface/src/components/Slider.tsx b/interface/src/components/Slider.tsx
deleted file mode 100644
index 664d357d..00000000
--- a/interface/src/components/Slider.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import React, { useState } from 'react';
-import "./Slider.css";
-
-interface Slider {
- onValueChange: (value: number) => void;
-}
-
-const Slider: React.FC = ({ onValueChange }) => {
- const [sliderValue, setSliderValue] = useState(0);
-
- const handleInputChange = (event: React.ChangeEvent) => {
- const value = parseInt(event.target.value, 10);
- setSliderValue(value);
- };
-
- const handleMouseUp = () => {
- onValueChange(sliderValue);
- };
-
- return (
-
-
-
- );
-};
-
-export default Slider;
\ No newline at end of file
diff --git a/interface/src/components/Switch.css b/interface/src/components/Switch.css
deleted file mode 100644
index d7e84449..00000000
--- a/interface/src/components/Switch.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.switch[data-ison="true"] {
- background-color: #30D259;
-}
\ No newline at end of file
diff --git a/interface/src/components/Switch.tsx b/interface/src/components/Switch.tsx
deleted file mode 100644
index 62dacfec..00000000
--- a/interface/src/components/Switch.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import { motion } from "framer-motion";
-import "./Switch.css";
-
-interface SwitchProps {
- onChange: (isOn: boolean) => void;
- state: boolean;
-}
-
-export default function Switch(props: SwitchProps) {
- const toggleSwitch = () => {
- const newIsOn = !props.state;
- props.onChange(newIsOn);
- };
-
- return (
-
-
-
- );
-}
-
-const spring = {
- type: "spring",
- stiffness: 700,
- damping: 30
-};
\ No newline at end of file
diff --git a/interface/src/components/TabbedContainer.tsx b/interface/src/components/TabbedContainer.tsx
deleted file mode 100644
index 91df24dd..00000000
--- a/interface/src/components/TabbedContainer.tsx
+++ /dev/null
@@ -1,92 +0,0 @@
-import React, { useState, useRef, useEffect } from 'react';
-import { motion } from 'framer-motion';
-
-interface Tab {
- title: string;
- content: JSX.Element;
-}
-
-interface TabbedContainerProps {
- tabs: Tab[];
- themeColor: string;
-}
-
-const TabbedContainer: React.FC = ({ tabs, themeColor }) => {
- const [activeTab, setActiveTab] = useState(0);
- const [hoveredTab, setHoveredTab] = useState(null);
- const [tabWidth, setTabWidth] = useState(0);
- const [position, setPosition] = useState(0);
- const positionRef = useRef(position);
-
- useEffect(() => {
- const newPosition = -activeTab * 100;
- setPosition(newPosition);
- positionRef.current = newPosition;
- }, [activeTab]);
-
- const containerRef = useRef(null);
-
- const springTransition = { type: 'spring', stiffness: 250, damping: 25 };
-
- useEffect(() => {
- if (containerRef.current) {
- // @ts-expect-error for some reason its giving an error in TS but it works...
- const width = containerRef.current.getBoundingClientRect().width;
- setTabWidth(width / tabs.length);
- }
- }, [tabs.length]);
-
- const calcXPos = (index: number | null) => {
- if (index !== null) {
- return tabWidth * index;
- }
- return tabWidth * activeTab;
- };
-
- return (
-
-
-
-
- {tabs.map((tab, index) => (
-
- ))}
-
-
-
-
-
- {tabs.map((tab, index) => (
-
- {tab.content}
-
- ))}
-
-
-
-
- );
-};
-
-export default TabbedContainer;
diff --git a/interface/src/index.css b/interface/src/index.css
deleted file mode 100644
index b2d789e1..00000000
--- a/interface/src/index.css
+++ /dev/null
@@ -1,13 +0,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-:root {
- font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
-
- font-synthesis: none;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- -webkit-text-size-adjust: 100%;
-}
\ No newline at end of file
diff --git a/interface/src/main.tsx b/interface/src/main.tsx
deleted file mode 100644
index c750850e..00000000
--- a/interface/src/main.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react'
-import ReactDOM from 'react-dom/client'
-import App from './App.tsx'
-import './index.css'
-
-ReactDOM.createRoot(document.getElementById('ExtensionPopup')!).render(
-
-
- ,
-)
diff --git a/interface/src/pages/About.tsx b/interface/src/pages/About.tsx
deleted file mode 100644
index 53197a2a..00000000
--- a/interface/src/pages/About.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-const About: React.FC = () => {
-
- return (
-
-
About
-
- );
-};
-
-export default About;
diff --git a/interface/src/pages/Settings.tsx b/interface/src/pages/Settings.tsx
deleted file mode 100644
index 71a13851..00000000
--- a/interface/src/pages/Settings.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import Switch from '../components/Switch';
-import ColorPicker from '../components/ColorPicker';
-import { SettingsState } from '../App';
-
-interface ISetting {
- title: string;
- description: string;
- modifyElement: JSX.Element;
-}
-
-interface SettingsProps {
- settingsState: SettingsState;
- switchChange: (key: string, isOn: boolean) => void;
- colorChange: (color: string) => void;
-}
-
-const Settings: React.FC = ({ settingsState, switchChange, colorChange }) => {
- const settings: ISetting[] = [
- {
- title: "Notification Collector",
- description: "Uncaps the 9+ limit for notifications, showing the real number.",
- modifyElement: switchChange('notificationCollector', isOn)} />
- },
- {
- title: "Lesson Alerts",
- description: "Sends a native browser notification ~5 minutes prior to lessons.",
- modifyElement: switchChange('lessonAlerts', isOn)} />
- },
- {
- title: "Animated Background",
- description: "Adds an animated background to BetterSEQTA. (May impact battery life)",
- modifyElement: switchChange('animatedBackground', isOn)} />
- },
- {
- title: "Animated Background Speed",
- description: "Controls the speed of the animated background.",
- modifyElement: switchChange('animatedBackgroundSpeed', isOn)} />
- },
- {
- title: "Custom Theme Colour",
- description: "Customise the overall theme colour of SEQTA Learn.",
- modifyElement: colorChange(color)} />
- },
- {
- title: "BetterSEQTA+",
- description: "Unlocks premium features.",
- modifyElement: switchChange('betterSEQTAPlus', isOn)} />
- }
- ];
-
- return (
-
- {settings.map((setting, index) => (
-
-
-
{setting.title}
-
{setting.description}
-
-
- {setting.modifyElement}
-
-
- ))}
-
- );
-};
-
-export default Settings;
diff --git a/interface/src/pages/Shortcuts.tsx b/interface/src/pages/Shortcuts.tsx
deleted file mode 100644
index 7400df6a..00000000
--- a/interface/src/pages/Shortcuts.tsx
+++ /dev/null
@@ -1,95 +0,0 @@
-import { useState } from "react";
-import Switch from "../components/Switch";
-
-export default function Shortcuts() {
- const [shortcutState, setShortcutState] = useState({
- youtube: false,
- outlook: false,
- office: false,
- spotify: false,
- google: false,
- duckduckgo: false,
- coolmathgames: false,
- sace: false,
- googlescholar: false,
- gmail: false,
- netflix: false
- });
-
- // Handler for Switches
- const switchChange = (key: string, isOn: boolean) => {
- setShortcutState({
- ...shortcutState,
- [key]: isOn,
- });
- };
-
- const DefaultShortcuts = [
- {
- title: "YouTube",
- link: "https://youtube.com",
- modifyElement: switchChange('youtube', isOn)} />
- },
- {
- title: "Outlook",
- link: "https://outlook.office.com/mail/inbox",
- modifyElement: switchChange('outlook', isOn)} />
- },
- {
- title: "Office",
- link: "https://www.office.com/",
- modifyElement: switchChange('office', isOn)} />
- },
- {
- title: "Spotify",
- link: "https://www.spotify.com/",
- modifyElement: switchChange('spotify', isOn)} />
- },
- {
- title: "Google",
- link: "https://www.google.com/",
- modifyElement: switchChange('google', isOn)} />
- },
- {
- title: "DuckDuckGo",
- link: "https://duckduckgo.com/",
- modifyElement: switchChange('duckduckgo', isOn)} />
- },
- {
- title: "Cool Math Games",
- link: "https://www.coolmathgames.com/",
- modifyElement: switchChange('coolmathgames', isOn)} />
- },
- {
- title: "SACE",
- link: "https://www.sace.sa.edu.au/",
- modifyElement: switchChange('sace', isOn)} />
- },
- {
- title: "Google Scholar",
- link: "https://scholar.google.com/",
- modifyElement: switchChange('googlescholar', isOn)} />
- },
- {
- title: "Gmail",
- link: "https://mail.google.com/",
- modifyElement: switchChange('gmail', isOn)} />
- },
- {
- title: "Netflix",
- link: "https://www.netflix.com/",
- modifyElement: switchChange('netflix', isOn)} />
- }
- ];
-
- return (
-
- {DefaultShortcuts.map((shortcut, index) => (
-
- {shortcut.title}
- {shortcut.modifyElement}
-
- ))}
-
- );
-}
diff --git a/interface/src/vite-env.d.ts b/interface/src/vite-env.d.ts
deleted file mode 100644
index 11f02fe2..00000000
--- a/interface/src/vite-env.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-///
diff --git a/interface/tailwind.config.js b/interface/tailwind.config.js
deleted file mode 100644
index 1cc7babf..00000000
--- a/interface/tailwind.config.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
- content: [
- "./index.html",
- "./src/**/*.{js,ts,jsx,tsx}",
- ],
- darkMode: "class",
- theme: {
- fontSize: {
- 'xs': '.65rem',
- 'sm': '.775rem',
- 'base': '0.65rem', // 16px
- 'md': '0.65rem', // 16px
- 'lg': '1rem', // 18px
- 'xl': '1.25rem', // 20px
- '2xl': '1.5rem', // 24px
- '3xl': '1.875rem', // 30px
- }
- },
- plugins: [],
-}
-
diff --git a/interface/tsconfig.json b/interface/tsconfig.json
deleted file mode 100644
index a7fc6fbf..00000000
--- a/interface/tsconfig.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "compilerOptions": {
- "target": "ES2020",
- "useDefineForClassFields": true,
- "lib": ["ES2020", "DOM", "DOM.Iterable"],
- "module": "ESNext",
- "skipLibCheck": true,
-
- /* Bundler mode */
- "moduleResolution": "bundler",
- "allowImportingTsExtensions": true,
- "resolveJsonModule": true,
- "isolatedModules": true,
- "noEmit": true,
- "jsx": "react-jsx",
-
- /* Linting */
- "strict": true,
- "noUnusedLocals": true,
- "noUnusedParameters": true,
- "noFallthroughCasesInSwitch": true
- },
- "include": ["src"],
- "references": [{ "path": "./tsconfig.node.json" }]
-}
diff --git a/interface/tsconfig.node.json b/interface/tsconfig.node.json
deleted file mode 100644
index 42872c59..00000000
--- a/interface/tsconfig.node.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "composite": true,
- "skipLibCheck": true,
- "module": "ESNext",
- "moduleResolution": "bundler",
- "allowSyntheticDefaultImports": true
- },
- "include": ["vite.config.ts"]
-}
diff --git a/interface/vite.config.ts b/interface/vite.config.ts
deleted file mode 100644
index 6c98fca4..00000000
--- a/interface/vite.config.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [react()],
- build: {
- //outDir: '../../public/popup-dist',
- rollupOptions: {
- output: {
- assetFileNames: 'client/rsc/[ext]/[name][extname]',
- chunkFileNames: 'client/rsc/[chunks]/[name].[hash].js',
- entryFileNames: 'client/rsc/js/client.js'
- }
- }
- }
-})