···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";
51import semver from "semver";
6273export 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-61export default defineContentScript({
72 matches: ["<all_urls>"],
83 runAt: "document_end",
-2
src/entrypoints/plugins.content.ts
···11-import { defineContentScript } from "#imports";
22-import { EXCLUDE_MATCHES } from "@/utils/constants";
31import homepageSwitcher from "./plugins/homepageSwitcher";
42import modernIcons from "./plugins/modernIcons";
53import progressBar from "./plugins/progressBar";
-3
src/entrypoints/plugins/homepageSwitcher.ts
···11-import { browser } from "#imports";
22-import { definePlugin } from "@/utils/plugin";
33-41export default function init() {
52 definePlugin(
63 "homepageSwitcher",
-2
src/entrypoints/plugins/modernIcons/index.ts
···11-import { injectStyles } from "@/utils";
22-import { definePlugin } from "@/utils/plugin";
31import styleText from "./styles.css?inline";
4253export default function init() {
-4
src/entrypoints/plugins/progressBar/index.ts
···11-import { injectStyles } from "@/utils";
22-import type { Period } from "@/utils/periodUtils";
33-import { getListOfPeriods } from "@/utils/periodUtils";
44-import { definePlugin } from "@/utils/plugin";
51import styleText from "./styles.css?inline";
6273export default function init() {
-3
src/entrypoints/plugins/scrollPeriod.ts
···11-import { getCurrentPeriod } from "@/utils/periodUtils";
22-import { definePlugin } from "@/utils/plugin";
33-41export default function init() {
52 definePlugin(
63 "scrollPeriod",
-2
src/entrypoints/plugins/scrollSegments/index.ts
···11-import { injectStyles } from "@/utils";
22-import { definePlugin } from "@/utils/plugin";
31import styleText from "./styles.css?inline";
4253export default function init() {
-3
src/entrypoints/plugins/subheader.ts
···11-import { getCurrentPeriod } from "@/utils/periodUtils";
22-import { definePlugin } from "@/utils/plugin";
33-41export default function init() {
52 definePlugin(
63 "subheader",
-2
src/entrypoints/plugins/tabTitle.ts
···11-import { definePlugin } from "@/utils/plugin";
22-31export default function init() {
42 definePlugin(
53 "tabTitle",
+4-6
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-82 import Router from "svelte-spa-router";
93 import active from "svelte-spa-router/active";
104 import Home from "./routes/Home.svelte";
···126 import Themes from "./routes/Themes.svelte";
137 import Snippets from "./routes/Snippets.svelte";
148 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";
15131614 const routes = {
1715 "/": 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";
53 import Button from "./inputs/Button.svelte";
64 import { RotateCcw, Globe, GitBranch } from "@lucide/svelte";
75
···11<script lang="ts">
22- import { globalSettings } from "@/utils/storage";
32 import Footer from "../components/Footer.svelte";
43 import Motd from "../components/Motd.svelte";
54
+1-3
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";
52 import Title from "../components/Title.svelte";
63 import Button from "../components/inputs/Button.svelte";
44+ import { Settings } from "@lucide/svelte";
75 import Modal from "../components/Modal.svelte";
86 import Toggle from "../components/inputs/Toggle.svelte";
97 import Slider from "../components/inputs/Slider.svelte";
+1-4
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-52 import Title from "../components/Title.svelte";
63 import Toggle from "../components/inputs/Toggle.svelte";
74 import TextInput from "../components/inputs/TextInput.svelte";
···7471 </div>
75727673 <div class="user-snippets-container w-full">
7777- {#each Object.entries(globalSettings.state.userSnippets as Record<SnippetId, UserSnippet>) as [id, snippet] (id)}
7474+ {#each Object.entries(globalSettings.state.userSnippets as Record<string, UserSnippet>) as [id, snippet] (id)}
7875 <div class="group my-4 w-full">
7976 <Toggle
8077 {id}
+1-6
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-82 import Title from "../components/Title.svelte";
93 import Modal from "../components/Modal.svelte";
104 import Button from "../components/inputs/Button.svelte";
115 import Toggle from "../components/inputs/Toggle.svelte";
66+ import { Palette } from "@lucide/svelte";
127138 const flavours = ["latte", "frappe", "macchiato", "mocha"];
149 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";
41import censor from "./snippets/censor.css?inline";
52import hidePfp from "./snippets/hidePfp/styles.css?inline";
63import 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";
61import cssUrl from "./catppuccin.css?url";
7283export default defineContentScript({
···11-import { browser } from "#imports";
11+export * from "./storage";
22import { flavorEntries } from "@catppuccin/palette";
33-import { logger } from "./logger";
44-import type { LogoInfo, UserSnippet } from "./storage";
5364export function injectStyles(styleText: string) {
75 logger.info(`[content-utils] Injecting styles`);
-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-53interface PeriodHeader {
64 name: string;
75 time: {
-5
src/utils/plugin.ts
···11-import { logger } from "./logger";
22-import type { PluginId, PluginSetting, Slider } from "./storage";
33-import { globalSettings, plugins, schoolboxUrls } from "./storage";
44-51export async function definePlugin(
62 pluginId: PluginId,
73 callback: (settings?: { toggle: Record<string, boolean>; slider: Record<string, Slider> }) => Promise<void> | void,
···5854}
59556056function getSettingsValues(settings?: Record<string, PluginSetting>) {
6161- logger.info("Getting settings values for settings:", settings);
6257 if (!settings) return undefined;
63586459 const result: {
-5
src/utils/snippet.ts
···11-import { injectStyles } from ".";
22-import { logger } from "./logger";
33-import type { SnippetId } from "./storage";
44-import { globalSettings, schoolboxUrls, snippets } from "./storage";
55-61export async function defineSnippet(snippetId: SnippetId, styleText: string) {
72 const snippet = await snippets[snippetId].toggle.storage.getValue();
83
+1-2
src/utils/storage/global.ts
···11-import { storage } from "#imports";
21import { StorageState } from "./state.svelte";
33-import type * as Types from "./types";
22+import * as Types from "./types";
4354export const globalSettings = new StorageState<Types.Settings>(
65 storage.defineItem<Types.Settings>("local:globalSettings", {
+1-2
src/utils/storage/plugins.ts
···11-import { storage } from "#imports";
21import { StorageState } from "./state.svelte";
33-import type * as Types from "./types";
22+import * as Types from "./types";
4354export const pluginConfig: Record<Types.PluginId, Types.PluginConfig> = {
65 subheader: {
-1
src/utils/storage/snippets.ts
···11-import { storage } from "#imports";
21import { StorageState } from "./state.svelte";
32import type * as Types from "./types";
43
-3
src/utils/storage/state.svelte.ts
···11-import type { WxtStorageItem } from "#imports";
22-import { needsRefresh } from "./global";
33-41export class StorageState<T> {
52 public state;
63