···11+export * from "./global";
22+export * from "./plugins";
33+export * from "./snippets";
+89
src/utils/storage/plugins.ts
···11+import * as Types from "../types";
22+import { createPlugin, pluginSlider, pluginToggle } from "./helpers";
33+44+export const plugins: Record<Types.PluginId, Types.PluginData> = {
55+ subheader: createPlugin(
66+ "subheader",
77+ "Subheader Revamp",
88+ "Adds a clock and current period info to the subheader.",
99+ true,
1010+ {
1111+ openInNewTab: pluginToggle(
1212+ "subheaderRevamp",
1313+ "openInNewTab",
1414+ "Open links in new tab",
1515+ "Whether to open the class link in a new tab.",
1616+ true,
1717+ ),
1818+ },
1919+ ),
2020+2121+ scrollSegments: createPlugin(
2222+ "scrollSegments",
2323+ "Scroll Segments",
2424+ "Segments the Schoolbox page into scrollable sections.",
2525+ true,
2626+ ),
2727+2828+ scrollPeriod: createPlugin("scrollPeriod", "Scroll Period", "Scrolls to the current period on the timetable.", true, {
2929+ resetCooldownOnMouseMove: pluginToggle(
3030+ "scrollPeriod",
3131+ "resetCooldownOnMouseMove",
3232+ "Reset on mouse move",
3333+ "Whether to reset the scrolling cooldown when you move your mouse.",
3434+ true,
3535+ ),
3636+ cooldownDuration: pluginSlider(
3737+ "scrollPeriod",
3838+ "cooldownDuration",
3939+ "Cooldown duration (s)",
4040+ "How long to wait before scrolling.",
4141+ 1,
4242+ 60,
4343+ 10,
4444+ ),
4545+ }),
4646+4747+ progressBar: createPlugin(
4848+ "progressBar",
4949+ "Progress Bar",
5050+ "Displays a progress bar below the timetable to show the time of the day.",
5151+ true,
5252+ ),
5353+5454+ modernIcons: createPlugin("modernIcons", "Modern Icons", "Modernise the icons across Schoolbox.", true, {
5555+ filled: pluginToggle(
5656+ "modernIcons",
5757+ "filled",
5858+ "Filled Icons",
5959+ "Whether the icons should be filled or outlined.",
6060+ true,
6161+ ),
6262+ }),
6363+6464+ tabTitle: createPlugin("tabTitle", "Better Tab Titles", "Improves the tab titles for easier navigation.", true, {
6565+ showSubjectPrefix: pluginToggle(
6666+ "tabTitle",
6767+ "showSubjectPrefix",
6868+ "Show subject prefix",
6969+ `e.g. "ENG - VCE English 1 & 2" becomes "VCE English 1 & 2"`,
7070+ true,
7171+ ),
7272+ }),
7373+7474+ homepageSwitcher: createPlugin(
7575+ "homepageSwitcher",
7676+ "Homepage Switcher",
7777+ "The logo will switch to existing Schoolbox homepage when available.",
7878+ true,
7979+ {
8080+ closeCurrentTab: pluginToggle(
8181+ "homepageSwitcher",
8282+ "closeCurrentTab",
8383+ "Close current tab",
8484+ "When switching to another tab, close the current one.",
8585+ false,
8686+ ),
8787+ },
8888+ ),
8989+};
+27
src/utils/storage/snippets.ts
···11+import * as Types from "../types";
22+import { createSnippet } from "./helpers";
33+44+export const snippets: Record<Types.SnippetId, Types.SnippetData> = {
55+ roundedCorners: createSnippet(
66+ "roundedCorners",
77+ "Rounded Corners",
88+ "Adds rounded corners to all elements across Schoolbox.",
99+ true,
1010+ ),
1111+1212+ hidePfp: createSnippet("hidePfp", "Hide PFP", "Hide your profile picture across Schoolbox.", true),
1313+1414+ hidePwaPrompt: createSnippet(
1515+ "hidePwaPrompt",
1616+ "Hide PWA Prompt",
1717+ "Hides the prompt in the notifications menu to install Schoolbox as a PWA and enable notifications.",
1818+ true,
1919+ ),
2020+2121+ censor: createSnippet(
2222+ "censor",
2323+ "Censor",
2424+ "Censors all text and images. This is intended for development purposes.",
2525+ false,
2626+ ),
2727+};