···11+import type { Browser } from "#imports";
22+import { browser, defineBackground, storage } from "#imports";
33+import { logger } from "@/utils/logger";
44+import { globalSettings, updated } from "@/utils/storage";
15import semver from "semver";
2637export default defineBackground(() => {
+5
src/entrypoints/end.content.ts
···11+import { browser, defineContentScript } from "#imports";
22+import { EXCLUDE_MATCHES } from "@/utils/constants";
33+import { logger } from "@/utils/logger";
44+import { globalSettings, schoolboxUrls } from "@/utils/storage";
55+16export default defineContentScript({
27 matches: ["<all_urls>"],
38 runAt: "document_end",
+2
src/entrypoints/plugins.content.ts
···11+import { defineContentScript } from "#imports";
22+import { EXCLUDE_MATCHES } from "@/utils/constants";
13import homepageSwitcher from "./plugins/homepageSwitcher";
24import modernIcons from "./plugins/modernIcons";
35import progressBar from "./plugins/progressBar";
+3
src/entrypoints/plugins/homepageSwitcher.ts
···11+import { browser } from "#imports";
22+import { definePlugin } from "@/utils/plugin";
33+14export default function init() {
25 definePlugin(
36 "homepageSwitcher",
···11+import { injectStyles } from "@/utils";
22+import type { Period } from "@/utils/periodUtils";
33+import { getListOfPeriods } from "@/utils/periodUtils";
44+import { definePlugin } from "@/utils/plugin";
15import styleText from "./styles.css?inline";
2637export default function init() {
+3
src/entrypoints/plugins/scrollPeriod.ts
···11+import { getCurrentPeriod } from "@/utils/periodUtils";
22+import { definePlugin } from "@/utils/plugin";
33+14export default function init() {
25 definePlugin(
36 "scrollPeriod",
+2
src/entrypoints/plugins/scrollSegments/index.ts
···11+import { injectStyles } from "@/utils";
22+import { definePlugin } from "@/utils/plugin";
13import styleText from "./styles.css?inline";
2435export default function init() {
+3
src/entrypoints/plugins/subheader.ts
···11+import { getCurrentPeriod } from "@/utils/periodUtils";
22+import { definePlugin } from "@/utils/plugin";
33+14export default function init() {
25 definePlugin(
36 "subheader",
+2
src/entrypoints/plugins/tabTitle.ts
···11+import { definePlugin } from "@/utils/plugin";
22+13export default function init() {
24 definePlugin(
35 "tabTitle",
+6-4
src/entrypoints/popup/App.svelte
···11<script lang="ts">
22+ import { flavors } from "@catppuccin/palette";
33+ import { globalSettings, needsRefresh, schoolboxUrls, updated } from "@/utils/storage";
44+ import { RotateCw } from "@lucide/svelte";
55+ import { logger } from "@/utils/logger";
66+ import { browser, onMount } from "#imports";
77+28 import Router from "svelte-spa-router";
39 import active from "svelte-spa-router/active";
410 import Home from "./routes/Home.svelte";
···612 import Themes from "./routes/Themes.svelte";
713 import Snippets from "./routes/Snippets.svelte";
814 import Banner from "./components/Banner.svelte";
99-1010- import { flavors } from "@catppuccin/palette";
1111- import { needsRefresh } from "@/utils/storage";
1212- import { RotateCw } from "@lucide/svelte";
13151416 const routes = {
1517 "/": Home,
+2
src/entrypoints/popup/components/Footer.svelte
···11<script lang="ts">
22 import { onMount } from "svelte";
33+ import { browser } from "#imports";
44+ import { updated } from "@/utils/storage";
35 import Button from "./inputs/Button.svelte";
46 import { RotateCcw, Globe, GitBranch } from "@lucide/svelte";
57
···11<script lang="ts">
22+ import { globalSettings } from "@/utils/storage";
23 import Footer from "../components/Footer.svelte";
34 import Motd from "../components/Motd.svelte";
45
+3-1
src/entrypoints/popup/routes/Plugins.svelte
···11<script lang="ts">
22+ import type { PluginId } from "@/utils/storage";
33+ import { globalSettings, plugins } from "@/utils/storage";
44+ import { Settings } from "@lucide/svelte";
25 import Title from "../components/Title.svelte";
36 import Button from "../components/inputs/Button.svelte";
44- import { Settings } from "@lucide/svelte";
57 import Modal from "../components/Modal.svelte";
68 import Toggle from "../components/inputs/Toggle.svelte";
79 import Slider from "../components/inputs/Slider.svelte";
+4-1
src/entrypoints/popup/routes/Snippets.svelte
···11<script lang="ts">
22+ import type { SnippetId, UserSnippet } from "@/utils/storage";
33+ import { globalSettings, snippets } from "@/utils/storage";
44+25 import Title from "../components/Title.svelte";
36 import Toggle from "../components/inputs/Toggle.svelte";
47 import TextInput from "../components/inputs/TextInput.svelte";
···7174 </div>
72757376 <div class="user-snippets-container w-full">
7474- {#each Object.entries(globalSettings.state.userSnippets as Record<string, UserSnippet>) as [id, snippet] (id)}
7777+ {#each Object.entries(globalSettings.state.userSnippets as Record<SnippetId, UserSnippet>) as [id, snippet] (id)}
7578 <div class="group my-4 w-full">
7679 <Toggle
7780 {id}
+6-1
src/entrypoints/popup/routes/Themes.svelte
···11<script lang="ts">
22+ import { browser } from "#imports";
33+ import type { LogoId } from "@/utils/storage";
44+ import { globalSettings } from "@/utils/storage";
55+ import { LOGO_INFO } from "@/utils/constants";
66+ import { Palette } from "@lucide/svelte";
77+28 import Title from "../components/Title.svelte";
39 import Modal from "../components/Modal.svelte";
410 import Button from "../components/inputs/Button.svelte";
511 import Toggle from "../components/inputs/Toggle.svelte";
66- import { Palette } from "@lucide/svelte";
712813 const flavours = ["latte", "frappe", "macchiato", "mocha"];
914 const accents = [
+3
src/entrypoints/snippets.content.ts
···11+import { defineContentScript } from "#imports";
22+import { EXCLUDE_MATCHES } from "@/utils/constants";
33+import { defineSnippet } from "@/utils/snippet";
14import censor from "./snippets/censor.css?inline";
25import hidePfp from "./snippets/hidePfp/styles.css?inline";
36import hidePwaPrompt from "./snippets/hidePwaPrompt.css?inline";
+5
src/entrypoints/start.content.ts
···11+import { browser, defineContentScript } from "#imports";
22+import { injectCatppuccin, injectLogo, injectStylesheet, injectUserSnippets } from "@/utils";
33+import { EXCLUDE_MATCHES, LOGO_INFO } from "@/utils/constants";
44+import type { LogoId } from "@/utils/storage";
55+import { globalSettings, schoolboxUrls } from "@/utils/storage";
16import cssUrl from "./catppuccin.css?url";
2738export default defineContentScript({
···11+import { browser } from "#imports";
12import { flavorEntries } from "@catppuccin/palette";
33+import { logger } from "./logger";
44+import type { LogoInfo, UserSnippet } from "./storage";
2536export function injectStyles(styleText: string) {
47 logger.info(`[content-utils] Injecting styles: ${styleText}`);
+2
src/utils/periodUtils.ts
···11// these utility functions are intended to be used on the dashboard, as that is where the timetable is displayed
2233+import { logger } from "./logger";
44+35interface PeriodHeader {
46 name: string;
57 time: {
···11+import { storage } from "#imports";
12import { StorageState } from "./state.svelte";
22-import * as Types from "./types";
33+import type * as Types from "./types";
3445export const globalSettings = new StorageState<Types.Settings>(
56 storage.defineItem<Types.Settings>("local:globalSettings", {
+2-1
src/utils/storage/plugins.ts
···11+import { storage } from "#imports";
12import { StorageState } from "./state.svelte";
22-import * as Types from "./types";
33+import type * as Types from "./types";
3445const pluginConfig: Record<Types.PluginId, Types.PluginConfig> = {
56 subheader: {
+2-1
src/utils/storage/snippets.ts
···11+import { storage } from "#imports";
12import { StorageState } from "./state.svelte";
22-import * as Types from "./types";
33+import type * as Types from "./types";
3445export const snippetConfig: Record<Types.SnippetId, Types.SnippetConfig> = {
56 roundedCorners: {
+3
src/utils/storage/state.svelte.ts
···11+import type { WxtStorageItem } from "#imports";
22+import { needsRefresh } from "./global";
33+14export class StorageState<T> {
25 public state;
36
+1-1
src/utils/storage/types.ts
···11-import { StorageState } from "./state.svelte";
11+import type { StorageState } from "./state.svelte";
2233// Global
44export interface Settings {