From 6b10aa8926851139e67c0c5090805cad5e221b6e Mon Sep 17 00:00:00 2001
From: glax <johanna@bernloehr.eu>
Date: Tue, 1 Apr 2025 04:13:50 +0200
Subject: [PATCH] @mui/joy

---
 README.md                                     |    2 +-
 Website/App.tsx                               |    3 +-
 .../IAuthor.tsx => Elements/Author.tsx}       |   10 +-
 .../IChapter.tsx => Elements/Chapter.tsx}     |   32 +-
 .../IGotifyRecord.tsx => Elements/Gotify.tsx} |   36 +-
 .../ILink.tsx => Elements/Link.tsx}           |    9 +-
 .../LocalLibrary.tsx}                         |   17 +-
 .../Lunasea.tsx}                              |   22 +-
 .../IManga.tsx => Elements/Manga.tsx}         |   53 +-
 .../MangaAltTitle.tsx}                        |   10 +-
 .../NotificationConnector.tsx}                |   23 +-
 .../INtfyRecord.tsx => Elements/Ntfy.tsx}     |   62 +-
 .../Pushover.tsx}                             |   30 +-
 Website/modules/Footer.tsx                    |   12 +-
 Website/modules/Header.tsx                    |    2 +-
 Website/modules/MonitorJobsList.tsx           |   14 +-
 Website/modules/QueuePopUp.tsx                |   12 +-
 Website/modules/Search.tsx                    |   21 +-
 Website/modules/Settings.tsx                  |   44 +-
 .../BackendSettings.tsx}                      |   11 +-
 .../{ChapterFunctions.tsx => api/Chapter.tsx} |    8 +-
 .../FrontendSettings.tsx}                     |    6 +-
 .../modules/{JobFunctions.tsx => api/Job.tsx} |   28 +-
 .../LocalLibrary.tsx}                         |    8 +-
 .../{MangaFunctions.tsx => api/Manga.tsx}     |   30 +-
 .../MangaConnector.tsx}                       |    6 +-
 .../NotificationConnector.tsx}                |   14 +-
 .../{SearchFunctions.tsx => api/Search.tsx}   |    4 +-
 Website/modules/interfaces/IRequestLimits.ts  |   17 -
 Website/modules/types/EnumLibraryType.ts      |    4 +
 .../modules/types/EnumMangaReleaseStatus.ts   |    7 +
 Website/modules/types/EnumRequestLimitType.ts |    8 +
 Website/modules/types/IAuthor.ts              |    4 +
 .../IBackendSettings.ts}                      |    0
 Website/modules/types/IChapter.ts             |   10 +
 Website/modules/types/IFrontendSettings.ts    |    4 +
 .../ILibraryConnector.ts                      |    7 +-
 Website/modules/types/ILink.ts                |    5 +
 Website/modules/types/ILocalLibrary.ts        |    5 +
 Website/modules/types/IManga.ts               |   19 +
 Website/modules/types/IMangaAltTitle.ts       |    5 +
 .../{interfaces => types}/IMangaConnector.ts  |    0
 .../modules/types/INotificationConnector.ts   |    7 +
 Website/modules/types/IRequestLimits.ts       |    8 +
 .../Jobs/IDownloadAvailableChaptersJob.ts     |    0
 .../Jobs/IDownloadMangaCoverJob.ts            |    0
 .../Jobs/IDownloadSingleChapterJob.ts         |    0
 .../{interfaces => types}/Jobs/IJob.ts        |    0
 .../Jobs/IMoveFileOrFolderJob.ts              |    0
 .../Jobs/IMoveMangaLibraryJob.ts              |    0
 .../Jobs/IRetrieveChaptersJob.ts              |    0
 .../Jobs/IUpdateFilesDownloadedJob.ts         |    0
 .../Jobs/IUpdateMetadataJob.ts                |    0
 .../records/IDownloadAvailableJobsRecord.ts   |    0
 .../modules/types/records/IGotifyRecord.ts    |    8 +
 .../modules/types/records/ILunaseaRecord.ts   |    8 +
 .../records/IModifyJobRecord.ts               |    0
 .../records/INewLibraryRecord.ts              |    0
 Website/modules/types/records/INtfyRecord.ts  |    9 +
 .../modules/types/records/IPushoverRecord.tsx |    6 +
 tranga-website/.gitignore                     |   24 +
 tranga-website/README.md                      |   54 +
 tranga-website/eslint.config.js               |   28 +
 tranga-website/index.html                     |   13 +
 tranga-website/package-lock.json              | 4225 +++++++++++++++++
 tranga-website/package.json                   |   34 +
 tranga-website/public/blahaj.png              |  Bin 0 -> 126603 bytes
 tranga-website/src/App.css                    |   15 +
 tranga-website/src/App.tsx                    |   31 +
 tranga-website/src/Components/AuthorTag.tsx   |   23 +
 tranga-website/src/Components/LinkTag.tsx     |   25 +
 tranga-website/src/Components/Manga.tsx       |  132 +
 tranga-website/src/Components/Search.tsx      |  142 +
 tranga-website/src/Header.css                 |   10 +
 tranga-website/src/Header.tsx                 |   20 +
 .../src/Settings.css                          |    0
 tranga-website/src/Settings.tsx               |   93 +
 tranga-website/src/api/BackendSettings.tsx    |   80 +
 tranga-website/src/api/Chapter.tsx            |    8 +
 tranga-website/src/api/Job.tsx                |   97 +
 tranga-website/src/api/LocalLibrary.tsx       |   31 +
 tranga-website/src/api/Manga.tsx              |   77 +
 tranga-website/src/api/MangaConnector.tsx     |   22 +
 .../src/api/NotificationConnector.tsx         |   52 +
 tranga-website/src/api/Query.tsx              |   15 +
 tranga-website/src/api/Search.tsx             |   22 +
 tranga-website/src/api/fetchApi.tsx           |   80 +
 .../src/api/types/EnumLibraryType.ts          |    4 +
 .../src/api/types/EnumMangaReleaseStatus.ts   |   24 +
 .../src/api/types/EnumRequestLimitType.ts     |    8 +
 tranga-website/src/api/types/IAuthor.ts       |    4 +
 .../src/api/types/IBackendSettings.ts         |   18 +
 tranga-website/src/api/types/IChapter.ts      |   10 +
 .../src/api/types/IFrontendSettings.ts        |    4 +
 .../src/api/types/ILibraryConnector.ts        |    8 +
 tranga-website/src/api/types/ILink.ts         |    5 +
 tranga-website/src/api/types/ILocalLibrary.ts |    5 +
 tranga-website/src/api/types/IManga.ts        |   37 +
 .../src/api/types/IMangaAltTitle.ts           |    5 +
 .../src/api/types/IMangaConnector.ts          |    7 +
 .../src/api/types/INotificationConnector.ts   |    7 +
 .../src/api/types/IRequestLimits.ts           |    8 +
 .../Jobs/IDownloadAvailableChaptersJob.ts     |    5 +
 .../api/types/Jobs/IDownloadMangaCoverJob.ts  |    5 +
 .../types/Jobs/IDownloadSingleChapterJob.ts   |    5 +
 tranga-website/src/api/types/Jobs/IJob.ts     |   29 +
 .../api/types/Jobs/IMoveFileOrFolderJob.ts    |    6 +
 .../api/types/Jobs/IMoveMangaLibraryJob.ts    |    6 +
 .../api/types/Jobs/IRetrieveChaptersJob.ts    |    5 +
 .../types/Jobs/IUpdateFilesDownloadedJob.ts   |    5 +
 .../src/api/types/Jobs/IUpdateMetadataJob.ts  |    5 +
 .../records/IDownloadAvailableJobsRecord.ts   |    4 +
 .../src/api/types/records/IGotifyRecord.ts    |    7 +
 .../src/api/types/records/ILunaseaRecord.ts   |    5 +
 .../src/api/types/records/IModifyJobRecord.ts |    4 +
 .../api/types/records/INewLibraryRecord.ts    |   12 +
 .../src/api/types/records/INtfyRecord.ts      |    9 +
 .../src/api/types/records/IPushoverRecord.ts  |    6 +
 tranga-website/src/index.css                  |    0
 tranga-website/src/main.tsx                   |   28 +
 tranga-website/src/vite-env.d.ts              |    1 +
 tranga-website/tsconfig.app.json              |   26 +
 tranga-website/tsconfig.json                  |    7 +
 tranga-website/tsconfig.node.json             |   24 +
 tranga-website/vite.config.ts                 |    7 +
 125 files changed, 6059 insertions(+), 329 deletions(-)
 rename Website/modules/{interfaces/IAuthor.tsx => Elements/Author.tsx} (64%)
 rename Website/modules/{interfaces/IChapter.tsx => Elements/Chapter.tsx} (64%)
 rename Website/modules/{interfaces/records/IGotifyRecord.tsx => Elements/Gotify.tsx} (83%)
 rename Website/modules/{interfaces/ILink.tsx => Elements/Link.tsx} (71%)
 rename Website/modules/{interfaces/ILocalLibrary.tsx => Elements/LocalLibrary.tsx} (76%)
 rename Website/modules/{interfaces/records/ILunaseaRecord.tsx => Elements/Lunasea.tsx} (80%)
 rename Website/modules/{interfaces/IManga.tsx => Elements/Manga.tsx} (75%)
 rename Website/modules/{interfaces/IMangaAltTitle.tsx => Elements/MangaAltTitle.tsx} (67%)
 rename Website/modules/{interfaces/INotificationConnector.tsx => Elements/NotificationConnector.tsx} (88%)
 rename Website/modules/{interfaces/records/INtfyRecord.tsx => Elements/Ntfy.tsx} (71%)
 rename Website/modules/{interfaces/records/IPushoverRecord.tsx => Elements/Pushover.tsx} (79%)
 rename Website/modules/{BackendSettingsFunctions.tsx => api/BackendSettings.tsx} (90%)
 rename Website/modules/{ChapterFunctions.tsx => api/Chapter.tsx} (73%)
 rename Website/modules/{interfaces/IFrontendSettings.tsx => api/FrontendSettings.tsx} (84%)
 rename Website/modules/{JobFunctions.tsx => api/Job.tsx} (89%)
 rename Website/modules/{LocalLibraryFunctions.tsx => api/LocalLibrary.tsx} (89%)
 rename Website/modules/{MangaFunctions.tsx => api/Manga.tsx} (86%)
 rename Website/modules/{MangaConnectorFunctions.tsx => api/MangaConnector.tsx} (92%)
 rename Website/modules/{NotificationConnectorFunctions.tsx => api/NotificationConnector.tsx} (91%)
 rename Website/modules/{SearchFunctions.tsx => api/Search.tsx} (95%)
 delete mode 100644 Website/modules/interfaces/IRequestLimits.ts
 create mode 100644 Website/modules/types/EnumLibraryType.ts
 create mode 100644 Website/modules/types/EnumMangaReleaseStatus.ts
 create mode 100644 Website/modules/types/EnumRequestLimitType.ts
 create mode 100644 Website/modules/types/IAuthor.ts
 rename Website/modules/{interfaces/IBackendSettings.tsx => types/IBackendSettings.ts} (100%)
 create mode 100644 Website/modules/types/IChapter.ts
 create mode 100644 Website/modules/types/IFrontendSettings.ts
 rename Website/modules/{interfaces => types}/ILibraryConnector.ts (67%)
 create mode 100644 Website/modules/types/ILink.ts
 create mode 100644 Website/modules/types/ILocalLibrary.ts
 create mode 100644 Website/modules/types/IManga.ts
 create mode 100644 Website/modules/types/IMangaAltTitle.ts
 rename Website/modules/{interfaces => types}/IMangaConnector.ts (100%)
 create mode 100644 Website/modules/types/INotificationConnector.ts
 create mode 100644 Website/modules/types/IRequestLimits.ts
 rename Website/modules/{interfaces => types}/Jobs/IDownloadAvailableChaptersJob.ts (100%)
 rename Website/modules/{interfaces => types}/Jobs/IDownloadMangaCoverJob.ts (100%)
 rename Website/modules/{interfaces => types}/Jobs/IDownloadSingleChapterJob.ts (100%)
 rename Website/modules/{interfaces => types}/Jobs/IJob.ts (100%)
 rename Website/modules/{interfaces => types}/Jobs/IMoveFileOrFolderJob.ts (100%)
 rename Website/modules/{interfaces => types}/Jobs/IMoveMangaLibraryJob.ts (100%)
 rename Website/modules/{interfaces => types}/Jobs/IRetrieveChaptersJob.ts (100%)
 rename Website/modules/{interfaces => types}/Jobs/IUpdateFilesDownloadedJob.ts (100%)
 rename Website/modules/{interfaces => types}/Jobs/IUpdateMetadataJob.ts (100%)
 rename Website/modules/{interfaces => types}/records/IDownloadAvailableJobsRecord.ts (100%)
 create mode 100644 Website/modules/types/records/IGotifyRecord.ts
 create mode 100644 Website/modules/types/records/ILunaseaRecord.ts
 rename Website/modules/{interfaces => types}/records/IModifyJobRecord.ts (100%)
 rename Website/modules/{interfaces => types}/records/INewLibraryRecord.ts (100%)
 create mode 100644 Website/modules/types/records/INtfyRecord.ts
 create mode 100644 Website/modules/types/records/IPushoverRecord.tsx
 create mode 100644 tranga-website/.gitignore
 create mode 100644 tranga-website/README.md
 create mode 100644 tranga-website/eslint.config.js
 create mode 100644 tranga-website/index.html
 create mode 100644 tranga-website/package-lock.json
 create mode 100644 tranga-website/package.json
 create mode 100644 tranga-website/public/blahaj.png
 create mode 100644 tranga-website/src/App.css
 create mode 100644 tranga-website/src/App.tsx
 create mode 100644 tranga-website/src/Components/AuthorTag.tsx
 create mode 100644 tranga-website/src/Components/LinkTag.tsx
 create mode 100644 tranga-website/src/Components/Manga.tsx
 create mode 100644 tranga-website/src/Components/Search.tsx
 create mode 100644 tranga-website/src/Header.css
 create mode 100644 tranga-website/src/Header.tsx
 rename Website/modules/LibraryConnector.tsx => tranga-website/src/Settings.css (100%)
 create mode 100644 tranga-website/src/Settings.tsx
 create mode 100644 tranga-website/src/api/BackendSettings.tsx
 create mode 100644 tranga-website/src/api/Chapter.tsx
 create mode 100644 tranga-website/src/api/Job.tsx
 create mode 100644 tranga-website/src/api/LocalLibrary.tsx
 create mode 100644 tranga-website/src/api/Manga.tsx
 create mode 100644 tranga-website/src/api/MangaConnector.tsx
 create mode 100644 tranga-website/src/api/NotificationConnector.tsx
 create mode 100644 tranga-website/src/api/Query.tsx
 create mode 100644 tranga-website/src/api/Search.tsx
 create mode 100644 tranga-website/src/api/fetchApi.tsx
 create mode 100644 tranga-website/src/api/types/EnumLibraryType.ts
 create mode 100644 tranga-website/src/api/types/EnumMangaReleaseStatus.ts
 create mode 100644 tranga-website/src/api/types/EnumRequestLimitType.ts
 create mode 100644 tranga-website/src/api/types/IAuthor.ts
 create mode 100644 tranga-website/src/api/types/IBackendSettings.ts
 create mode 100644 tranga-website/src/api/types/IChapter.ts
 create mode 100644 tranga-website/src/api/types/IFrontendSettings.ts
 create mode 100644 tranga-website/src/api/types/ILibraryConnector.ts
 create mode 100644 tranga-website/src/api/types/ILink.ts
 create mode 100644 tranga-website/src/api/types/ILocalLibrary.ts
 create mode 100644 tranga-website/src/api/types/IManga.ts
 create mode 100644 tranga-website/src/api/types/IMangaAltTitle.ts
 create mode 100644 tranga-website/src/api/types/IMangaConnector.ts
 create mode 100644 tranga-website/src/api/types/INotificationConnector.ts
 create mode 100644 tranga-website/src/api/types/IRequestLimits.ts
 create mode 100644 tranga-website/src/api/types/Jobs/IDownloadAvailableChaptersJob.ts
 create mode 100644 tranga-website/src/api/types/Jobs/IDownloadMangaCoverJob.ts
 create mode 100644 tranga-website/src/api/types/Jobs/IDownloadSingleChapterJob.ts
 create mode 100644 tranga-website/src/api/types/Jobs/IJob.ts
 create mode 100644 tranga-website/src/api/types/Jobs/IMoveFileOrFolderJob.ts
 create mode 100644 tranga-website/src/api/types/Jobs/IMoveMangaLibraryJob.ts
 create mode 100644 tranga-website/src/api/types/Jobs/IRetrieveChaptersJob.ts
 create mode 100644 tranga-website/src/api/types/Jobs/IUpdateFilesDownloadedJob.ts
 create mode 100644 tranga-website/src/api/types/Jobs/IUpdateMetadataJob.ts
 create mode 100644 tranga-website/src/api/types/records/IDownloadAvailableJobsRecord.ts
 create mode 100644 tranga-website/src/api/types/records/IGotifyRecord.ts
 create mode 100644 tranga-website/src/api/types/records/ILunaseaRecord.ts
 create mode 100644 tranga-website/src/api/types/records/IModifyJobRecord.ts
 create mode 100644 tranga-website/src/api/types/records/INewLibraryRecord.ts
 create mode 100644 tranga-website/src/api/types/records/INtfyRecord.ts
 create mode 100644 tranga-website/src/api/types/records/IPushoverRecord.ts
 create mode 100644 tranga-website/src/index.css
 create mode 100644 tranga-website/src/main.tsx
 create mode 100644 tranga-website/src/vite-env.d.ts
 create mode 100644 tranga-website/tsconfig.app.json
 create mode 100644 tranga-website/tsconfig.json
 create mode 100644 tranga-website/tsconfig.node.json
 create mode 100644 tranga-website/vite.config.ts

diff --git a/README.md b/README.md
index 7c2f06f..c4537f6 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
 <h3 align="center">Tranga-Website</h3>
 
   <p align="center">
-    Automatic MangaFunctions and Metadata downloader 
+    Automatic Manga and Metadata downloader 
   </p>
   <p align="center">
     This is the Website for <a href="https://github.com/C9Glax/tranga">Tranga</a> (API)  
diff --git a/Website/App.tsx b/Website/App.tsx
index a0ecb8e..608aa83 100644
--- a/Website/App.tsx
+++ b/Website/App.tsx
@@ -4,9 +4,10 @@ import Search from "./modules/Search";
 import Header from "./modules/Header";
 import MonitorJobsList from "./modules/MonitorJobsList";
 import './styles/index.css'
-import IFrontendSettings, {LoadFrontendSettings} from "./modules/interfaces/IFrontendSettings";
 import {useCookies} from "react-cookie";
 import Loader from "./modules/Loader";
+import IFrontendSettings from "./modules/types/IFrontendSettings";
+import {LoadFrontendSettings} from "./modules/api/FrontendSettings";
 
 export default function App(){
     const [, setCookie] = useCookies(['apiUri', 'jobInterval']);
diff --git a/Website/modules/interfaces/IAuthor.tsx b/Website/modules/Elements/Author.tsx
similarity index 64%
rename from Website/modules/interfaces/IAuthor.tsx
rename to Website/modules/Elements/Author.tsx
index 67c2c6d..3f96e44 100644
--- a/Website/modules/interfaces/IAuthor.tsx
+++ b/Website/modules/Elements/Author.tsx
@@ -1,18 +1,14 @@
 import React, {ReactElement, useEffect} from "react";
 import {getData} from "../../App";
+import IAuthor from "../types/IAuthor";
 
-export default interface IAuthor {
-    authorId: string;
-    authorName: string;
-}
-
-export function AuthorElement({apiUri, authorId} : {apiUri: string, authorId: string | null}) : ReactElement{
+export default function AuthorElement({apiUri, authorId} : {apiUri: string, authorId: string | null}) : ReactElement{
     let [author, setAuthor] = React.useState<IAuthor | null>(null);
 
     useEffect(()=> {
         if(authorId === null)
             return;
-        getData(`${apiUri}/v2/Query/Author/${authorId}`)
+        getData(`${apiUri}/v2/Query/AuthorTag/${authorId}`)
             .then((json) => {
                 let ret = json as IAuthor;
                 setAuthor(ret);
diff --git a/Website/modules/interfaces/IChapter.tsx b/Website/modules/Elements/Chapter.tsx
similarity index 64%
rename from Website/modules/interfaces/IChapter.tsx
rename to Website/modules/Elements/Chapter.tsx
index ad0a23b..72b13a6 100644
--- a/Website/modules/interfaces/IChapter.tsx
+++ b/Website/modules/Elements/Chapter.tsx
@@ -1,20 +1,10 @@
 import React, {ReactElement, ReactEventHandler, useEffect, useState} from "react";
-import MangaFunctions from "../MangaFunctions";
-import IManga from "./IManga";
-import ChapterFunctions from "../ChapterFunctions";
+import Manga from "../api/Manga";
+import Chapter from "../api/Chapter";
+import IChapter from "../types/IChapter";
+import IManga from "../types/IManga";
 
-export default interface IChapter{
-    chapterId: string;
-    volumeNumber: number;
-    chapterNumber: string;
-    url: string;
-    title: string | undefined;
-    archiveFileName: string;
-    downloaded: boolean;
-    parentMangaId: string;
-}
-
-export function ChapterItem({apiUri, chapterId} : {apiUri: string, chapterId: string}) : ReactElement {
+export default function ChapterItem({apiUri, chapterId} : {apiUri: string, chapterId: string}) : ReactElement {
     const setCoverItem : ReactEventHandler<HTMLImageElement> = (e) => {
         setMangaCoverHtmlImageItem(e.currentTarget);
     }
@@ -24,25 +14,25 @@ export function ChapterItem({apiUri, chapterId} : {apiUri: string, chapterId: st
     let [mangaCoverUrl, setMangaCoverUrl] = useState<string>("../../media/blahaj.png");
     let [mangaCoverHtmlImageItem, setMangaCoverHtmlImageItem] = useState<HTMLImageElement | null>(null);
     useEffect(() => {
-        ChapterFunctions.GetChapterFromId(apiUri, chapterId).then(setChapter);
+        Chapter.GetChapterFromId(apiUri, chapterId).then(setChapter);
     }, []);
     useEffect(() => {
         if(chapter === null)
             manga = null;
         else
-            MangaFunctions.GetMangaById(apiUri, chapter.parentMangaId).then(setManga);
+            Manga.GetMangaById(apiUri, chapter.parentMangaId).then(setManga);
     }, [chapter]);
     useEffect(() => {
         if(chapter != null && mangaCoverHtmlImageItem != null)
-            setMangaCoverUrl(MangaFunctions.GetMangaCoverImageUrl(apiUri, chapter.parentMangaId, mangaCoverHtmlImageItem));
+            setMangaCoverUrl(Manga.GetMangaCoverImageUrl(apiUri, chapter.parentMangaId, mangaCoverHtmlImageItem));
     }, [chapter, mangaCoverHtmlImageItem]);
 
     let [clicked, setClicked] = useState<boolean>(false);
 
     return (<div className="ChapterItem" key={chapterId} is-clicked={clicked ? "clicked" : "not-clicked"} onClick={() => setClicked(!clicked)}>
-        <img className="ChapterItem-Cover" src={mangaCoverUrl} alt="MangaFunctions Cover" onLoad={setCoverItem} onResize={setCoverItem}></img>
-        <p className="ChapterItem-MangaName">{manga ? manga.name : "MangaFunctions-Name"}</p>
-        <p className="ChapterItem-ChapterName">{chapter ? chapter.title : "ChapterFunctions-Title"}</p>
+        <img className="ChapterItem-Cover" src={mangaCoverUrl} alt="Manga Cover" onLoad={setCoverItem} onResize={setCoverItem}></img>
+        <p className="ChapterItem-MangaName">{manga ? manga.name : "Manga-Name"}</p>
+        <p className="ChapterItem-ChapterName">{chapter ? chapter.title : "Chapter-Title"}</p>
         <p className="ChapterItem-Volume">Vol.{chapter ? chapter.volumeNumber : "VolNum"}</p>
         <p className="ChapterItem-Chapter">Ch.{chapter ? chapter.chapterNumber : "ChNum"}</p>
         <p className="ChapterItem-VolumeChapter">Vol.{chapter ? chapter.volumeNumber : "VolNum"} Ch.{chapter ? chapter.chapterNumber : "ChNum"}</p>
diff --git a/Website/modules/interfaces/records/IGotifyRecord.tsx b/Website/modules/Elements/Gotify.tsx
similarity index 83%
rename from Website/modules/interfaces/records/IGotifyRecord.tsx
rename to Website/modules/Elements/Gotify.tsx
index 9f5f86b..b2ec89e 100644
--- a/Website/modules/interfaces/records/IGotifyRecord.tsx
+++ b/Website/modules/Elements/Gotify.tsx
@@ -1,24 +1,8 @@
 import {ReactElement, useState} from "react";
-import NotificationConnectorFunctions from "../../NotificationConnectorFunctions";
-import Loader from "../../Loader";
-import "../../../styles/notificationConnector.css";
-import {isValidUri} from "../../../App";
-
-export default interface IGotifyRecord {
-    endpoint: string;
-    appToken: string;
-    priority: number;
-}
-
-function Validate(record: IGotifyRecord) : boolean {
-    if(!isValidUri(record.endpoint))
-        return false;
-    if(record.appToken.length < 1)
-        return false;
-    if(record.priority < 1 || record.priority > 5)
-        return false;
-    return true;
-}
+import NotificationConnector from "../api/NotificationConnector";
+import Loader from "../Loader";
+import IGotifyRecord from "../types/records/IGotifyRecord";
+import {isValidUri} from "../../App";
 
 export function GotifyItem ({apiUri} : {apiUri: string}) : ReactElement{
     const [record, setRecord] = useState<IGotifyRecord>({
@@ -42,10 +26,20 @@ export function GotifyItem ({apiUri} : {apiUri: string}) : ReactElement{
                 if(record === null || Validate(record) === false)
                     return;
                 setLoading(true);
-                NotificationConnectorFunctions.CreateGotify(apiUri, record)
+                NotificationConnector.CreateGotify(apiUri, record)
                     .finally(() => setLoading(false));
             }}>Add</button>
             <Loader loading={loading} style={{width:"40px",height:"40px"}}/>
         </>
     </div>;
+}
+
+function Validate(record: IGotifyRecord) : boolean {
+    if(!isValidUri(record.endpoint))
+        return false;
+    if(record.appToken.length < 1)
+        return false;
+    if(record.priority < 1 || record.priority > 5)
+        return false;
+    return true;
 }
\ No newline at end of file
diff --git a/Website/modules/interfaces/ILink.tsx b/Website/modules/Elements/Link.tsx
similarity index 71%
rename from Website/modules/interfaces/ILink.tsx
rename to Website/modules/Elements/Link.tsx
index 605fe39..2c2fce6 100644
--- a/Website/modules/interfaces/ILink.tsx
+++ b/Website/modules/Elements/Link.tsx
@@ -1,13 +1,8 @@
 import React, {ReactElement, useEffect} from "react";
 import {getData} from "../../App";
+import ILink from "../types/ILink";
 
-export default interface ILink {
-    linkId: string;
-    linkProvider: string;
-    linkUrl: string;
-}
-
-export function LinkElement({apiUri, linkId} : {apiUri: string, linkId: string | null}) : ReactElement{
+export default function LinkElement({apiUri, linkId} : {apiUri: string, linkId: string | null}) : ReactElement{
     let [link, setLink] = React.useState<ILink | null>(null);
 
     useEffect(()=> {
diff --git a/Website/modules/interfaces/ILocalLibrary.tsx b/Website/modules/Elements/LocalLibrary.tsx
similarity index 76%
rename from Website/modules/interfaces/ILocalLibrary.tsx
rename to Website/modules/Elements/LocalLibrary.tsx
index 8381be7..3940652 100644
--- a/Website/modules/interfaces/ILocalLibrary.tsx
+++ b/Website/modules/Elements/LocalLibrary.tsx
@@ -1,16 +1,11 @@
 import {ReactElement, useState} from "react";
-import INewLibraryRecord, {Validate} from "./records/INewLibraryRecord";
+import INewLibraryRecord, {Validate} from "../types/records/INewLibraryRecord";
 import Loader from "../Loader";
-import LocalLibraryFunctions from "../LocalLibraryFunctions";
+import LocalLibrary from "../api/LocalLibrary";
 import "../../styles/localLibrary.css";
+import ILocalLibrary from "../types/ILocalLibrary";
 
-export default interface ILocalLibrary {
-    localLibraryId: string;
-    basePath: string;
-    libraryName: string;
-}
-
-export function LocalLibraryItem({apiUri, library} : {apiUri: string, library: ILocalLibrary | null}) : ReactElement {
+export default function LocalLibraryItem({apiUri, library} : {apiUri: string, library: ILocalLibrary | null}) : ReactElement {
     const [loading, setLoading] = useState<boolean>(false);
     const [record, setRecord] = useState<INewLibraryRecord>({
        path: library?.basePath ?? "",
@@ -29,14 +24,14 @@ export function LocalLibraryItem({apiUri, library} : {apiUri: string, library: I
                 if(record === null || Validate(record) === false)
                     return;
                 setLoading(true);
-                LocalLibraryFunctions.UpdateLibrary(apiUri, library.localLibraryId, record)
+                LocalLibrary.UpdateLibrary(apiUri, library.localLibraryId, record)
                     .finally(() => setLoading(false));
             }}>Edit</button>
         : <button className="LocalLibraryFunctions-Action" onClick={() => {
                 if(record === null || Validate(record) === false)
                     return;
                 setLoading(true);
-                LocalLibraryFunctions.CreateLibrary(apiUri, record)
+                LocalLibrary.CreateLibrary(apiUri, record)
                     .finally(() => setLoading(false));
             }}>Add</button>
         }
diff --git a/Website/modules/interfaces/records/ILunaseaRecord.tsx b/Website/modules/Elements/Lunasea.tsx
similarity index 80%
rename from Website/modules/interfaces/records/ILunaseaRecord.tsx
rename to Website/modules/Elements/Lunasea.tsx
index 8bc2272..b6b6b65 100644
--- a/Website/modules/interfaces/records/ILunaseaRecord.tsx
+++ b/Website/modules/Elements/Lunasea.tsx
@@ -1,16 +1,7 @@
 import {ReactElement, useState} from "react";
-import NotificationConnectorFunctions from "../../NotificationConnectorFunctions";
-import Loader from "../../Loader";
-import "../../../styles/notificationConnector.css";
-
-export default interface ILunaseaRecord {
-    id: string;
-}
-
-const regex = new RegExp("(?:device|user)\/[0-9a-zA-Z\-]+");
-function Validate(record: ILunaseaRecord) : boolean {
-    return regex.test(record.id);
-}
+import NotificationConnector from "../api/NotificationConnector";
+import Loader from "../Loader";
+import ILunaseaRecord from "../types/records/ILunaseaRecord";
 
 export function LunaseaItem ({apiUri} : {apiUri: string}) : ReactElement{
     const [record, setRecord] = useState<ILunaseaRecord>({
@@ -27,10 +18,15 @@ export function LunaseaItem ({apiUri} : {apiUri: string}) : ReactElement{
                 if(record === null || Validate(record) === false)
                     return;
                 setLoading(true);
-                NotificationConnectorFunctions.CreateLunasea(apiUri, record)
+                NotificationConnector.CreateLunasea(apiUri, record)
                     .finally(() => setLoading(false));
             }}>Add</button>
             <Loader loading={loading} style={{width:"40px",height:"40px",margin:"25vh calc(sin(70)*(50% - 40px))"}}/>
         </>
     </div>;
+}
+
+const regex = new RegExp("(?:device|user)\/[0-9a-zA-Z\-]+");
+function Validate(record: ILunaseaRecord) : boolean {
+    return regex.test(record.id);
 }
\ No newline at end of file
diff --git a/Website/modules/interfaces/IManga.tsx b/Website/modules/Elements/Manga.tsx
similarity index 75%
rename from Website/modules/interfaces/IManga.tsx
rename to Website/modules/Elements/Manga.tsx
index a69ad78..19e9a74 100644
--- a/Website/modules/interfaces/IManga.tsx
+++ b/Website/modules/Elements/Manga.tsx
@@ -1,43 +1,18 @@
-import MangaFunctions from "../MangaFunctions";
+import Manga from "../api/Manga";
 import React, {Children, ReactElement, ReactEventHandler, useEffect, useState} from "react";
 import Icon from '@mdi/react';
 import { mdiTagTextOutline, mdiAccountEdit, mdiLinkVariant } from '@mdi/js';
 import MarkdownPreview from '@uiw/react-markdown-preview';
-import {AuthorElement} from "./IAuthor";
-import {LinkElement} from "./ILink";
-import IChapter from "./IChapter";
 import Loader from "../Loader";
+import IManga from "../types/IManga";
+import IChapter from "../types/IChapter";
+import AuthorElement from "./Author";
+import LinkElement from "./Link";
 
-export default interface IManga{
-    mangaId: string;
-    idOnConnectorSite: string;
-    name: string;
-    description: string;
-    websiteUrl: string;
-    year: number;
-    originalLanguage: string;
-    releaseStatus: MangaReleaseStatus;
-    folderName: string;
-    ignoreChapterBefore: number;
-    mangaConnectorId: string;
-    authorIds: string[];
-    tags: string[];
-    linkIds: string[];
-    altTitleIds: string[];
-}
-
-export enum MangaReleaseStatus {
-    Continuing = "Continuing",
-    Completed = "Completed",
-    OnHiatus = "OnHiatus",
-    Cancelled = "Cancelled",
-    Unreleased = "Unreleased",
-}
-
-export function MangaItem({apiUri, mangaId, children} : {apiUri: string, mangaId: string, children?: (string | ReactElement)[]}) : ReactElement {
+export default function MangaItem({apiUri, mangaId, children} : {apiUri: string, mangaId: string, children?: (string | ReactElement)[]}) : ReactElement {
     const LoadMangaCover : ReactEventHandler<HTMLImageElement> = (e) => {
-        if(e.currentTarget.src != MangaFunctions.GetMangaCoverImageUrl(apiUri, mangaId, e.currentTarget))
-            e.currentTarget.src = MangaFunctions.GetMangaCoverImageUrl(apiUri, mangaId, e.currentTarget);
+        if(e.currentTarget.src != Manga.GetMangaCoverImageUrl(apiUri, mangaId, e.currentTarget))
+            e.currentTarget.src = Manga.GetMangaCoverImageUrl(apiUri, mangaId, e.currentTarget);
     }
 
     let [manga, setManga] = useState<IManga | null>(null);
@@ -48,14 +23,14 @@ export function MangaItem({apiUri, mangaId, children} : {apiUri: string, mangaId
     let [settingThreshold, setSettingThreshold] = useState<boolean>(false);
     const invalidTargets = ["input", "textarea", "button", "select", "a"];
     useEffect(() => {
-        MangaFunctions.GetMangaById(apiUri, mangaId).then(setManga);
-        MangaFunctions.GetLatestChapterDownloaded(apiUri, mangaId)
+        Manga.GetMangaById(apiUri, mangaId).then(setManga);
+        Manga.GetLatestChapterDownloaded(apiUri, mangaId)
             .then(setLatestChapterDownloaded)
             .finally(() => {
                 if(latestChapterDownloaded && latestChapterAvailable)
                     setLoadingChapterStats(false);
             });
-        MangaFunctions.GetLatestChapterAvailable(apiUri, mangaId)
+        Manga.GetLatestChapterAvailable(apiUri, mangaId)
             .then(setLatestChapterAvailable)
             .finally(() => {
                 if(latestChapterDownloaded && latestChapterAvailable)
@@ -69,7 +44,7 @@ export function MangaItem({apiUri, mangaId, children} : {apiUri: string, mangaId
         if(invalidTargets.find(x => x == target.localName) === undefined )
             setClicked(!clicked)
     }}>
-        <img className="MangaItem-Cover" src="../../media/blahaj.png" alt="MangaFunctions Cover" onLoad={LoadMangaCover} onResize={LoadMangaCover}></img>
+        <img className="MangaItem-Cover" src="../../media/blahaj.png" alt="Manga Cover" onLoad={LoadMangaCover} onResize={LoadMangaCover}></img>
         <div className="MangaItem-Connector">{manga ? manga.mangaConnectorId : "Connector"}</div>
         <div className="MangaItem-Status" release-status={manga?.releaseStatus}></div>
         <div className="MangaItem-Name">{manga ? manga.name : "Name"}</div>
@@ -81,7 +56,7 @@ export function MangaItem({apiUri, mangaId, children} : {apiUri: string, mangaId
                     <AuthorElement apiUri={apiUri} authorId={authorId}></AuthorElement>
                 </div>)
                 :
-                <div className="MangaItem-Author" key="null-Author">
+                <div className="MangaItem-Author" key="null-AuthorTag">
                     <Icon path={mdiAccountEdit} size={0.5} />
                     <AuthorElement apiUri={apiUri} authorId={null}></AuthorElement>
                 </div>}
@@ -113,7 +88,7 @@ export function MangaItem({apiUri, mangaId, children} : {apiUri: string, mangaId
                 Start at Chapter
                 <input type="text" defaultValue={latestChapterDownloaded ? latestChapterDownloaded.chapterNumber : ""} disabled={settingThreshold} onChange={(e) => {
                     setSettingThreshold(true);
-                    MangaFunctions.SetIgnoreThreshold(apiUri, mangaId, e.currentTarget.valueAsNumber).finally(()=>setSettingThreshold(false));
+                    Manga.SetIgnoreThreshold(apiUri, mangaId, e.currentTarget.valueAsNumber).finally(()=>setSettingThreshold(false));
                 }} />
                 <Loader loading={settingThreshold} style={{margin: "-10px -45px"}}/>
                 out of <span className="MangaItem-Props-Threshold-Available">{latestChapterAvailable ? latestChapterAvailable.chapterNumber : <Loader loading={loadingChapterStats} style={{margin: "-10px -35px"}} />}</span>
diff --git a/Website/modules/interfaces/IMangaAltTitle.tsx b/Website/modules/Elements/MangaAltTitle.tsx
similarity index 67%
rename from Website/modules/interfaces/IMangaAltTitle.tsx
rename to Website/modules/Elements/MangaAltTitle.tsx
index 776456c..bc3a74f 100644
--- a/Website/modules/interfaces/IMangaAltTitle.tsx
+++ b/Website/modules/Elements/MangaAltTitle.tsx
@@ -1,14 +1,8 @@
 import React, {ReactElement, useEffect} from "react";
 import {getData} from "../../App";
-import IAuthor from "./IAuthor";
+import IMangaAltTitle from "../types/IMangaAltTitle";
 
-export default interface IMangaAltTitle {
-    altTitleId: string;
-    language: string;
-    title: string;
-}
-
-export function AltTitleElement({apiUri, altTitleId} : {apiUri: string, altTitleId: string | null}) : ReactElement{
+export default function AltTitleElement({apiUri, altTitleId} : {apiUri: string, altTitleId: string | null}) : ReactElement{
     let [altTitle, setAltTitle] = React.useState<IMangaAltTitle | null>(null);
 
     useEffect(()=> {
diff --git a/Website/modules/interfaces/INotificationConnector.tsx b/Website/modules/Elements/NotificationConnector.tsx
similarity index 88%
rename from Website/modules/interfaces/INotificationConnector.tsx
rename to Website/modules/Elements/NotificationConnector.tsx
index bad1794..1bb53ce 100644
--- a/Website/modules/interfaces/INotificationConnector.tsx
+++ b/Website/modules/Elements/NotificationConnector.tsx
@@ -1,21 +1,14 @@
 import {ReactElement, ReactEventHandler, useState} from "react";
 import "../../styles/notificationConnector.css";
 import Loader from "../Loader";
-import NotificationConnectorFunctions from "../NotificationConnectorFunctions";
-import {LunaseaItem} from "./records/ILunaseaRecord";
-import {GotifyItem} from "./records/IGotifyRecord";
-import {NtfyItem} from "./records/INtfyRecord";
-import {PushoverItem} from "./records/IPushoverRecord";
+import NotificationConnector from "../api/NotificationConnector";
+import INotificationConnector from "../types/INotificationConnector";
+import {GotifyItem} from "./Gotify";
+import {NtfyItem} from "./Ntfy";
+import {LunaseaItem} from "./Lunasea";
+import {PushoverItem} from "./Pushover";
 
-export default interface INotificationConnector {
-    name: string;
-    url: string;
-    headers: Record<string, string>[];
-    httpMethod: string;
-    body: string;
-}
-
-export function NotificationConnectorItem({apiUri, notificationConnector} : {apiUri: string, notificationConnector: INotificationConnector | null}) : ReactElement {
+export default function NotificationConnectorItem({apiUri, notificationConnector} : {apiUri: string, notificationConnector: INotificationConnector | null}) : ReactElement {
     if(notificationConnector != null)
         return <DefaultItem apiUri={apiUri} notificationConnector={notificationConnector} />
 
@@ -93,7 +86,7 @@ function DefaultItem({apiUri, notificationConnector}:{apiUri: string, notificati
         <>
             <button className="NotificationConnectorItem-Save" onClick={(e) => {
                 setLoading(true);
-                NotificationConnectorFunctions.CreateNotificationConnector(apiUri, info)
+                NotificationConnector.CreateNotificationConnector(apiUri, info)
                     .finally(() => setLoading(false));
             }}>Add</button>
             <Loader loading={loading} style={{width:"40px",height:"40px",margin:"25vh calc(sin(70)*(50% - 40px))"}}/>
diff --git a/Website/modules/interfaces/records/INtfyRecord.tsx b/Website/modules/Elements/Ntfy.tsx
similarity index 71%
rename from Website/modules/interfaces/records/INtfyRecord.tsx
rename to Website/modules/Elements/Ntfy.tsx
index bbf68c3..b669db9 100644
--- a/Website/modules/interfaces/records/INtfyRecord.tsx
+++ b/Website/modules/Elements/Ntfy.tsx
@@ -1,30 +1,8 @@
+import {isValidUri} from "../../App";
 import {ReactElement, useState} from "react";
-import NotificationConnectorFunctions from "../../NotificationConnectorFunctions";
-import Loader from "../../Loader";
-import "../../../styles/notificationConnector.css";
-import {isValidUri} from "../../../App";
-
-export default interface INtfyRecord {
-    endpoint: string;
-    username: string;
-    password: string;
-    topic: string;
-    priority: number;
-}
-
-function Validate(record: INtfyRecord) : boolean {
-    if(!isValidUri(record.endpoint))
-        return false;
-    if(record.username.length < 1)
-        return false;
-    if(record.password.length < 1)
-        return false;
-    if(record.topic.length < 1)
-        return false;
-    if(record.priority < 1 || record.priority > 5)
-        return false;
-    return true;
-}
+import NotificationConnector from "../api/NotificationConnector";
+import Loader from "../Loader";
+import INtfyRecord from "../types/records/INtfyRecord";
 
 export function NtfyItem ({apiUri} : {apiUri: string}) : ReactElement{
     const [info, setInfo] = useState<INtfyRecord>({
@@ -49,14 +27,28 @@ export function NtfyItem ({apiUri} : {apiUri: string}) : ReactElement{
             <label htmlFor="NotificationConnectorItem-Priority">Priority</label>
             <input id="NotificationConnectorItem-Priority-Value" type="number" className="NotificationConnectorItem-Priority-Value" min={1} max={5} defaultValue={3} onChange={(e) => setInfo({...info, priority: e.currentTarget.valueAsNumber})} />
         </div><>
-            <button className="NotificationConnectorItem-Save" onClick={(e) => {
-                if(info === null || Validate(info) === false)
-                    return;
-                setLoading(true);
-                NotificationConnectorFunctions.CreateNtfy(apiUri, info)
-                    .finally(() => setLoading(false));
-            }}>Add</button>
-            <Loader loading={loading} style={{width:"40px",height:"40px",margin:"25vh calc(sin(70)*(50% - 40px))"}}/>
-        </>
+        <button className="NotificationConnectorItem-Save" onClick={(e) => {
+            if(info === null || Validate(info) === false)
+                return;
+            setLoading(true);
+            NotificationConnector.CreateNtfy(apiUri, info)
+                .finally(() => setLoading(false));
+        }}>Add</button>
+        <Loader loading={loading} style={{width:"40px",height:"40px",margin:"25vh calc(sin(70)*(50% - 40px))"}}/>
+    </>
     </div>;
+}
+
+function Validate(record: INtfyRecord) : boolean {
+    if(!isValidUri(record.endpoint))
+        return false;
+    if(record.username.length < 1)
+        return false;
+    if(record.password.length < 1)
+        return false;
+    if(record.topic.length < 1)
+        return false;
+    if(record.priority < 1 || record.priority > 5)
+        return false;
+    return true;
 }
\ No newline at end of file
diff --git a/Website/modules/interfaces/records/IPushoverRecord.tsx b/Website/modules/Elements/Pushover.tsx
similarity index 79%
rename from Website/modules/interfaces/records/IPushoverRecord.tsx
rename to Website/modules/Elements/Pushover.tsx
index 32816b9..90e3186 100644
--- a/Website/modules/interfaces/records/IPushoverRecord.tsx
+++ b/Website/modules/Elements/Pushover.tsx
@@ -1,21 +1,7 @@
 import {ReactElement, useState} from "react";
-import NotificationConnectorFunctions from "../../NotificationConnectorFunctions";
-import Loader from "../../Loader";
-import "../../../styles/notificationConnector.css";
-import {isValidUri} from "../../../App";
-
-export default interface IPushoverRecord {
-    apptoken: string;
-    user: string;
-}
-
-function Validate(record: IPushoverRecord) : boolean {
-    if(record.apptoken.length < 1)
-        return false;
-    if(record.user.length < 1)
-        return false;
-    return true;
-}
+import NotificationConnector from "../api/NotificationConnector";
+import Loader from "../Loader";
+import IPushoverRecord from "../types/records/IPushoverRecord";
 
 export function PushoverItem ({apiUri} : {apiUri: string}) : ReactElement{
     const [info, setInfo] = useState<IPushoverRecord>({
@@ -34,10 +20,18 @@ export function PushoverItem ({apiUri} : {apiUri: string}) : ReactElement{
                 if(info === null || Validate(info) === false)
                     return;
                 setLoading(true);
-                NotificationConnectorFunctions.CreatePushover(apiUri, info)
+                NotificationConnector.CreatePushover(apiUri, info)
                     .finally(() => setLoading(false));
             }}>Add</button>
             <Loader loading={loading} style={{width:"40px",height:"40px",margin:"25vh calc(sin(70)*(50% - 40px))"}}/>
         </>
     </div>;
+}
+
+function Validate(record: IPushoverRecord) : boolean {
+    if(record.apptoken.length < 1)
+        return false;
+    if(record.user.length < 1)
+        return false;
+    return true;
 }
\ No newline at end of file
diff --git a/Website/modules/Footer.tsx b/Website/modules/Footer.tsx
index 594e8ec..0482e91 100644
--- a/Website/modules/Footer.tsx
+++ b/Website/modules/Footer.tsx
@@ -1,10 +1,10 @@
 import React, {useEffect} from 'react';
 import '../styles/footer.css';
-import JobFunctions from './JobFunctions';
+import Job from './api/Job';
 import Icon from '@mdi/react';
 import {mdiCounter, mdiEyeCheck, mdiRun, mdiTrayFull} from '@mdi/js';
 import QueuePopUp from "./QueuePopUp";
-import {JobState, JobType} from "./interfaces/Jobs/IJob";
+import {JobState, JobType} from "./types/Jobs/IJob";
 
 export default function Footer({connectedToBackend, apiUri, checkConnectedInterval} : {connectedToBackend: boolean, apiUri: string, checkConnectedInterval: number}) {
     const [MonitoringJobsCount, setMonitoringJobsCount] = React.useState(0);
@@ -14,10 +14,10 @@ export default function Footer({connectedToBackend, apiUri, checkConnectedInterv
     const [countUpdateInterval, setCountUpdateInterval] = React.useState<number | undefined>(undefined);
 
     function UpdateBackendState(){
-        JobFunctions.GetJobsWithType(apiUri, JobType.DownloadAvailableChaptersJob).then((jobs) => setMonitoringJobsCount(jobs.length));
-        JobFunctions.GetAllJobs(apiUri).then((jobs) => setAllJobsCount(jobs.length));
-        JobFunctions.GetJobsInState(apiUri, JobState.Running).then((jobs) => setRunningJobsCount(jobs.length));
-        JobFunctions.GetJobsInState(apiUri, JobState.Waiting).then((jobs) => setWaitingJobs(jobs.length));
+        Job.GetJobsWithType(apiUri, JobType.DownloadAvailableChaptersJob).then((jobs) => setMonitoringJobsCount(jobs.length));
+        Job.GetAllJobs(apiUri).then((jobs) => setAllJobsCount(jobs.length));
+        Job.GetJobsInState(apiUri, JobState.Running).then((jobs) => setRunningJobsCount(jobs.length));
+        Job.GetJobsInState(apiUri, JobState.Waiting).then((jobs) => setWaitingJobs(jobs.length));
     }
 
     useEffect(() => {
diff --git a/Website/modules/Header.tsx b/Website/modules/Header.tsx
index a35c047..cf38964 100644
--- a/Website/modules/Header.tsx
+++ b/Website/modules/Header.tsx
@@ -1,7 +1,7 @@
 import React from 'react';
 import '../styles/header.css'
-import IFrontendSettings from "./interfaces/IFrontendSettings";
 import Settings from "./Settings";
+import IFrontendSettings from "./types/IFrontendSettings";
 
 export default function Header({backendConnected, apiUri, settings, setFrontendSettings} : {backendConnected: boolean, apiUri: string, settings: IFrontendSettings, setFrontendSettings: (settings: IFrontendSettings) => void}){
     return (
diff --git a/Website/modules/MonitorJobsList.tsx b/Website/modules/MonitorJobsList.tsx
index 18310d3..cb4a89a 100644
--- a/Website/modules/MonitorJobsList.tsx
+++ b/Website/modules/MonitorJobsList.tsx
@@ -1,11 +1,11 @@
 import React, {ReactElement, useEffect, useState} from 'react';
-import JobFunctions from './JobFunctions';
+import Job from './api/Job';
 import '../styles/monitorMangaList.css';
-import {JobType} from "./interfaces/Jobs/IJob";
+import {JobType} from "./types/Jobs/IJob";
 import '../styles/mangaCover.css'
-import IDownloadAvailableChaptersJob from "./interfaces/Jobs/IDownloadAvailableChaptersJob";
-import {MangaItem} from "./interfaces/IManga";
-import MangaFunctions from "./MangaFunctions";
+import IDownloadAvailableChaptersJob from "./types/Jobs/IDownloadAvailableChaptersJob";
+import Manga from "./api/Manga";
+import MangaItem from "./Elements/Manga";
 
 export default function MonitorJobsList({onStartSearch, connectedToBackend, apiUri, checkConnectedInterval} : {onStartSearch() : void, connectedToBackend: boolean, apiUri: string, checkConnectedInterval: number}) {
     const [MonitoringJobs, setMonitoringJobs] = useState<IDownloadAvailableChaptersJob[]>([]);
@@ -29,7 +29,7 @@ export default function MonitorJobsList({onStartSearch, connectedToBackend, apiU
         if(!connectedToBackend)
             return;
         //console.debug("Updating MonitoringJobsList");
-        JobFunctions.GetJobsWithType(apiUri, JobType.DownloadAvailableChaptersJob)
+        Job.GetJobsWithType(apiUri, JobType.DownloadAvailableChaptersJob)
             .then((jobs) => jobs as IDownloadAvailableChaptersJob[])
             .then((jobs) => {
                 if(jobs.length != MonitoringJobs.length ||
@@ -57,7 +57,7 @@ export default function MonitorJobsList({onStartSearch, connectedToBackend, apiU
                 <MangaItem apiUri={apiUri} mangaId={MonitoringJob.mangaId} key={MonitoringJob.mangaId}>
                     <></>
                     <button className="Manga-DeleteButton" onClick={() => {
-                        MangaFunctions.DeleteManga(apiUri, MonitoringJob.mangaId);
+                        Manga.DeleteManga(apiUri, MonitoringJob.mangaId);
                     }}>Delete</button>
                 </MangaItem>
             )}
diff --git a/Website/modules/QueuePopUp.tsx b/Website/modules/QueuePopUp.tsx
index ba0063c..8d2b327 100644
--- a/Website/modules/QueuePopUp.tsx
+++ b/Website/modules/QueuePopUp.tsx
@@ -1,10 +1,10 @@
 import React, {ReactElement, useEffect, useState} from 'react';
-import IJob, {JobState, JobType} from "./interfaces/Jobs/IJob";
+import IJob, {JobState, JobType} from "./types/Jobs/IJob";
 import '../styles/queuePopUp.css';
 import '../styles/popup.css';
-import JobFunctions from "./JobFunctions";
-import IDownloadSingleChapterJob from "./interfaces/Jobs/IDownloadSingleChapterJob";
-import {ChapterItem} from "./interfaces/IChapter";
+import Job from "./api/Job";
+import IDownloadSingleChapterJob from "./types/Jobs/IDownloadSingleChapterJob";
+import ChapterItem from "./Elements/Chapter";
 
 export default function QueuePopUp({connectedToBackend, children, apiUri, checkConnectedInterval} : {connectedToBackend: boolean, children: ReactElement[], apiUri: string, checkConnectedInterval: number}) {
 
@@ -28,13 +28,13 @@ export default function QueuePopUp({connectedToBackend, children, apiUri, checkC
     }, [connectedToBackend, showQueuePopup]);
 
     function UpdateMonitoringJobsList(){
-        JobFunctions.GetJobsInState(apiUri, JobState.Waiting)
+        Job.GetJobsInState(apiUri, JobState.Waiting)
             .then((jobs: IJob[]) => {
                 //console.log(jobs);
                 return jobs;
             })
             .then(setWaitingJobs);
-        JobFunctions.GetJobsInState(apiUri, JobState.Running)
+        Job.GetJobsInState(apiUri, JobState.Running)
             .then((jobs: IJob[]) => {
                 //console.log(jobs);
                 return jobs;
diff --git a/Website/modules/Search.tsx b/Website/modules/Search.tsx
index 6b461be..32b0a13 100644
--- a/Website/modules/Search.tsx
+++ b/Website/modules/Search.tsx
@@ -1,14 +1,15 @@
 import React, {ChangeEventHandler, EventHandler, useEffect, useState} from 'react';
-import {MangaConnectorFunctions} from "./MangaConnectorFunctions";
-import IMangaConnector from "./interfaces/IMangaConnector";
+import {MangaConnector} from "./api/MangaConnector";
+import IMangaConnector from "./types/IMangaConnector";
 import {isValidUri} from "../App";
-import IManga, {MangaItem} from "./interfaces/IManga";
 import '../styles/search.css';
-import SearchFunctions from "./SearchFunctions";
-import JobFunctions from "./JobFunctions";
-import ILocalLibrary from "./interfaces/ILocalLibrary";
-import LocalLibraryFunctions from "./LocalLibraryFunctions";
+import Job from "./api/Job";
+import LocalLibrary from "./api/LocalLibrary";
 import Loader from "./Loader";
+import IManga from "./types/IManga";
+import SearchFunctions from "./api/Search";
+import ILocalLibrary from "./types/ILocalLibrary";
+import MangaItem from "./Elements/Manga";
 
 export default function Search({apiUri, jobInterval, closeSearch} : {apiUri: string, jobInterval: Date, closeSearch(): void}) {
     let [loading, setLoading] = useState<boolean>(true);
@@ -21,7 +22,7 @@ export default function Search({apiUri, jobInterval, closeSearch} : {apiUri: str
     const pattern = /https:\/\/([a-z0-9.]+\.[a-z0-9]{2,})(?:\/.*)?/i
 
     useEffect(() => {
-        MangaConnectorFunctions.GetAllConnectors(apiUri).then((connectors)=> {
+        MangaConnector.GetAllConnectors(apiUri).then((connectors)=> {
             return connectors.filter(c => c.enabled);
         }).then(setConnectors).then(() => setLoading(false));
     }, []);
@@ -99,7 +100,7 @@ export default function Search({apiUri, jobInterval, closeSearch} : {apiUri: str
     let [selectedLibrary, setSelectedLibrary] = useState<ILocalLibrary | null>(null);
     let [libraries, setLibraries] = useState<ILocalLibrary[] | null>(null);
     useEffect(() => {
-        LocalLibraryFunctions.GetLibraries(apiUri).then(setLibraries);
+        LocalLibrary.GetLibraries(apiUri).then(setLibraries);
     }, []);
     useEffect(() => {
         if(libraries === null || libraries.length < 1)
@@ -147,7 +148,7 @@ export default function Search({apiUri, jobInterval, closeSearch} : {apiUri: str
                                 : libraries.map(library => <option key={library.localLibraryId} value={library.localLibraryId}>{library.libraryName} ({library.basePath})</option>)}
                         </select>
                         <button className="Manga-AddButton" onClick={() => {
-                            JobFunctions.CreateDownloadAvailableChaptersJob(apiUri, result.mangaId, {recurrenceTimeMs: new Date(jobInterval).getTime(), localLibraryId: selectedLibrary!.localLibraryId});
+                            Job.CreateDownloadAvailableChaptersJob(apiUri, result.mangaId, {recurrenceTimeMs: new Date(jobInterval).getTime(), localLibraryId: selectedLibrary!.localLibraryId});
                         }}>Monitor</button>
                     </MangaItem>
                 })
diff --git a/Website/modules/Settings.tsx b/Website/modules/Settings.tsx
index e10df8a..f67bc4f 100644
--- a/Website/modules/Settings.tsx
+++ b/Website/modules/Settings.tsx
@@ -1,18 +1,20 @@
-import IFrontendSettings from "./interfaces/IFrontendSettings";
 import '../styles/settings.css';
 import '../styles/react-toggle.css';
 import React, {useEffect, useRef, useState} from "react";
-import INotificationConnector, {NotificationConnectorItem} from "./interfaces/INotificationConnector";
-import NotificationConnectorFunctions from "./NotificationConnectorFunctions";
-import ILocalLibrary, {LocalLibraryItem} from "./interfaces/ILocalLibrary";
-import LocalLibraryFunctions from "./LocalLibraryFunctions";
-import IBackendSettings from "./interfaces/IBackendSettings";
-import BackendSettings from "./BackendSettingsFunctions";
+import NotificationConnector from "./api/NotificationConnector";
+import IBackendSettings from "./types/IBackendSettings";
+import BackendSettings from "./api/BackendSettings";
 import Toggle from "react-toggle";
 import Loader from "./Loader";
-import {RequestType} from "./interfaces/IRequestLimits";
-import IMangaConnector from "./interfaces/IMangaConnector";
-import {MangaConnectorFunctions} from "./MangaConnectorFunctions";
+import IMangaConnector from "./types/IMangaConnector";
+import {MangaConnector} from "./api/MangaConnector";
+import IFrontendSettings from "./types/IFrontendSettings";
+import INotificationConnector from "./types/INotificationConnector";
+import ILocalLibrary from "./types/ILocalLibrary";
+import LocalLibrary from "./api/LocalLibrary";
+import {RequestLimitType} from "./types/EnumRequestLimitType";
+import NotificationConnectorItem from "./Elements/NotificationConnector";
+import LocalLibraryItem from "./Elements/LocalLibrary";
 
 export default function Settings({ backendConnected, apiUri, frontendSettings, setFrontendSettings } : {
     backendConnected: boolean,
@@ -31,10 +33,10 @@ export default function Settings({ backendConnected, apiUri, frontendSettings, s
     useEffect(() => {
         if(!backendConnected)
             return;
-        NotificationConnectorFunctions.GetNotificationConnectors(apiUri).then(setNotificationConnectors);
-        LocalLibraryFunctions.GetLibraries(apiUri).then(setLocalLibraries);
+        NotificationConnector.GetNotificationConnectors(apiUri).then(setNotificationConnectors);
+        LocalLibrary.GetLibraries(apiUri).then(setLocalLibraries);
         BackendSettings.GetSettings(apiUri).then(setBackendSettings);
-        MangaConnectorFunctions.GetAllConnectors(apiUri).then(setMangaConnectors);
+        MangaConnector.GetAllConnectors(apiUri).then(setMangaConnectors);
     }, [backendConnected, showSettings]);
 
     const dateToStr = (x: Date) => {
@@ -44,7 +46,7 @@ export default function Settings({ backendConnected, apiUri, frontendSettings, s
         return ret;
     }
 
-    const ChangeRequestLimit = (requestType: RequestType, limit: number) => {
+    const ChangeRequestLimit = (requestType: RequestLimitType, limit: number) => {
         if(backendSettings === null)
             return;
         setLoadingBackend(true);
@@ -150,22 +152,22 @@ export default function Settings({ backendConnected, apiUri, frontendSettings, s
                             <h3>Request Limits:</h3>
                             <label htmlFor="Default">Default</label>
                             <input id="Default" type="number" defaultValue={backendSettings ? backendSettings.requestLimits.Default : 0} disabled={backendSettings ? false : !loadingBackend}
-                                onChange={(e) => ChangeRequestLimit(RequestType.Default, e.currentTarget.valueAsNumber)} />
+                                onChange={(e) => ChangeRequestLimit(RequestLimitType.Default, e.currentTarget.valueAsNumber)} />
                             <label htmlFor="MangaInfo">MangaInfo</label>
                             <input id="MangaInfo" type="number" defaultValue={backendSettings ? backendSettings.requestLimits.MangaInfo : 0} disabled={backendSettings ? false : !loadingBackend}
-                                   onChange={(e) => ChangeRequestLimit(RequestType.MangaInfo, e.currentTarget.valueAsNumber)} />
+                                   onChange={(e) => ChangeRequestLimit(RequestLimitType.MangaInfo, e.currentTarget.valueAsNumber)} />
                             <label htmlFor="MangaDexFeed">MangaDexFeed</label>
                             <input id="MangaDexFeed" type="number" defaultValue={backendSettings ? backendSettings.requestLimits.MangaDexFeed : 0} disabled={backendSettings ? false : !loadingBackend}
-                                   onChange={(e) => ChangeRequestLimit(RequestType.MangaDexFeed, e.currentTarget.valueAsNumber)} />
+                                   onChange={(e) => ChangeRequestLimit(RequestLimitType.MangaDexFeed, e.currentTarget.valueAsNumber)} />
                             <label htmlFor="MangaDexImage">MangaDexImage</label>
                             <input id="MangaDexImage" type="number" defaultValue={backendSettings ? backendSettings.requestLimits.MangaDexImage : 0} disabled={backendSettings ? false : !loadingBackend}
-                                   onChange={(e) => ChangeRequestLimit(RequestType.MangaDexImage, e.currentTarget.valueAsNumber)} />
+                                   onChange={(e) => ChangeRequestLimit(RequestLimitType.MangaDexImage, e.currentTarget.valueAsNumber)} />
                             <label htmlFor="MangaImage">MangaImage</label>
                             <input id="MangaImage" type="number" defaultValue={backendSettings ? backendSettings.requestLimits.MangaImage : 0} disabled={backendSettings ? false : !loadingBackend}
-                                   onChange={(e) => ChangeRequestLimit(RequestType.MangaImage, e.currentTarget.valueAsNumber)} />
+                                   onChange={(e) => ChangeRequestLimit(RequestLimitType.MangaImage, e.currentTarget.valueAsNumber)} />
                             <label htmlFor="MangaCover">MangaCover</label>
                             <input id="MangaCover" type="number" defaultValue={backendSettings ? backendSettings.requestLimits.MangaCover : 0} disabled={backendSettings ? false : !loadingBackend}
-                                   onChange={(e) => ChangeRequestLimit(RequestType.MangaCover, e.currentTarget.valueAsNumber)} />
+                                   onChange={(e) => ChangeRequestLimit(RequestLimitType.MangaCover, e.currentTarget.valueAsNumber)} />
                         </div>
                         <div className={"settings-mangaConnectors"}>
                             {mangaConnectors.map(mc => {
@@ -173,7 +175,7 @@ export default function Settings({ backendConnected, apiUri, frontendSettings, s
                                     <div key={mc.name}>
                                         <span>{mc.name}</span>
                                         <Toggle defaultChecked={mc.enabled} onChange={(e) => {
-                                                    MangaConnectorFunctions.SetConnectorEnabled(apiUri, mc.name, e.currentTarget.checked);
+                                                    MangaConnector.SetConnectorEnabled(apiUri, mc.name, e.currentTarget.checked);
                                                 }} />
                                     </div>);
                             })}
diff --git a/Website/modules/BackendSettingsFunctions.tsx b/Website/modules/api/BackendSettings.tsx
similarity index 90%
rename from Website/modules/BackendSettingsFunctions.tsx
rename to Website/modules/api/BackendSettings.tsx
index 26a860b..46d1fdf 100644
--- a/Website/modules/BackendSettingsFunctions.tsx
+++ b/Website/modules/api/BackendSettings.tsx
@@ -1,6 +1,7 @@
-import {deleteData, getData, patchData} from "../App";
-import IRequestLimits, {RequestType} from "./interfaces/IRequestLimits";
-import IBackendSettings from "./interfaces/IBackendSettings";
+import {deleteData, getData, patchData} from "../../App";
+import IRequestLimits from "../types/IRequestLimits";
+import IBackendSettings from "../types/IBackendSettings";
+import {RequestLimitType} from "../types/EnumRequestLimitType";
 
 export default class BackendSettings {
     static async GetSettings(apiUri: string) : Promise<IBackendSettings> {
@@ -27,11 +28,11 @@ export default class BackendSettings {
         return deleteData(`${apiUri}/v2/Settings/RequestLimits`);
     }
 
-    static async UpdateRequestLimit(apiUri: string, requestType: RequestType, value: number) {
+    static async UpdateRequestLimit(apiUri: string, requestType: RequestLimitType, value: number) {
         return patchData(`${apiUri}/v2/Settings/RequestLimits/${requestType}`, value);
     }
 
-    static async ResetRequestLimit(apiUri: string, requestType: RequestType) {
+    static async ResetRequestLimit(apiUri: string, requestType: RequestLimitType) {
         return deleteData(`${apiUri}/v2/Settings/RequestLimits/${requestType}`);
     }
 
diff --git a/Website/modules/ChapterFunctions.tsx b/Website/modules/api/Chapter.tsx
similarity index 73%
rename from Website/modules/ChapterFunctions.tsx
rename to Website/modules/api/Chapter.tsx
index 9329497..d631c8d 100644
--- a/Website/modules/ChapterFunctions.tsx
+++ b/Website/modules/api/Chapter.tsx
@@ -1,7 +1,7 @@
-import {getData} from "../App";
-import IChapter from "./interfaces/IChapter";
+import {getData} from "../../App";
+import IChapter from "../types/IChapter";
 
-export default class ChapterFunctions {
+export default class Chapter {
 
     static async GetChapterFromId(apiUri: string, chapterId: string): Promise<IChapter> {
         if(chapterId === undefined || chapterId === null) {
@@ -10,7 +10,7 @@ export default class ChapterFunctions {
         }
         return getData(`${apiUri}/v2/Query/Chapter/${chapterId}`)
             .then((json) => {
-                //console.info("Got all MangaFunctions");
+                //console.info("Got all Manga");
                 const ret = json as IChapter;
                 //console.debug(ret);
                 return (ret);
diff --git a/Website/modules/interfaces/IFrontendSettings.tsx b/Website/modules/api/FrontendSettings.tsx
similarity index 84%
rename from Website/modules/interfaces/IFrontendSettings.tsx
rename to Website/modules/api/FrontendSettings.tsx
index f0c67d1..4d9079a 100644
--- a/Website/modules/interfaces/IFrontendSettings.tsx
+++ b/Website/modules/api/FrontendSettings.tsx
@@ -1,9 +1,5 @@
 import {Cookies} from "react-cookie";
-
-export default interface IFrontendSettings {
-    jobInterval: Date;
-    apiUri: string;
-}
+import IFrontendSettings from "../types/IFrontendSettings";
 
 export function LoadFrontendSettings(): IFrontendSettings {
     const cookies = new Cookies();
diff --git a/Website/modules/JobFunctions.tsx b/Website/modules/api/Job.tsx
similarity index 89%
rename from Website/modules/JobFunctions.tsx
rename to Website/modules/api/Job.tsx
index 7f1aecc..deadc64 100644
--- a/Website/modules/JobFunctions.tsx
+++ b/Website/modules/api/Job.tsx
@@ -1,9 +1,9 @@
-import {deleteData, getData, patchData, postData, putData} from '../App';
-import IJob, {JobState, JobType} from "./interfaces/Jobs/IJob";
-import IModifyJobRecord from "./interfaces/records/IModifyJobRecord";
-import IDownloadAvailableJobsRecord from "./interfaces/records/IDownloadAvailableJobsRecord";
+import {deleteData, getData, patchData, postData, putData} from '../../App';
+import IJob, {JobState, JobType} from "../types/Jobs/IJob";
+import IModifyJobRecord from "../types/records/IModifyJobRecord";
+import IDownloadAvailableJobsRecord from "../types/records/IDownloadAvailableJobsRecord";
 
-export default class JobFunctions
+export default class Job
 {
     static IntervalStringFromDate(date: Date) : string {
         let x = new Date(date);
@@ -82,10 +82,10 @@ export default class JobFunctions
             console.error(`JobId was not provided`);
             return Promise.reject();
         }
-        //console.info(`Getting JobFunctions ${jobId}`);
+        //console.info(`Getting Job ${jobId}`);
         return getData(`${apiUri}/v2/Job/${jobId}`)
             .then((json) => {
-                //console.info(`Got JobFunctions ${jobId}`);
+                //console.info(`Got Job ${jobId}`);
                 const ret = json as IJob;
                 //console.debug(ret);
                 return (ret);
@@ -111,7 +111,7 @@ export default class JobFunctions
         }
         return patchData(`${apiUri}/v2/Job/${jobId}`, modifyData)
             .then((json) => {
-                //console.info(`Got JobFunctions ${jobId}`);
+                //console.info(`Got Job ${jobId}`);
                 const ret = json as IJob;
                 //console.debug(ret);
                 return (ret);
@@ -129,7 +129,7 @@ export default class JobFunctions
         }
         return putData(`${apiUri}/v2/Job/DownloadAvailableChaptersJob/${mangaId}`, data)
             .then((json) => {
-                //console.info(`Got JobFunctions ${jobId}`);
+                //console.info(`Got Job ${jobId}`);
                 const ret = json as string[];
                 //console.debug(ret);
                 return (ret);
@@ -143,7 +143,7 @@ export default class JobFunctions
         }
         return putData(`${apiUri}/v2/Job/DownloadSingleChapterJob/${chapterId}`, {})
             .then((json) => {
-                //console.info(`Got JobFunctions ${jobId}`);
+                //console.info(`Got Job ${jobId}`);
                 const ret = json as string[];
                 //console.debug(ret);
                 return (ret);
@@ -157,7 +157,7 @@ export default class JobFunctions
         }
         return putData(`${apiUri}/v2/Job/UpdateFilesJob/${mangaId}`, {})
             .then((json) => {
-                //console.info(`Got JobFunctions ${jobId}`);
+                //console.info(`Got Job ${jobId}`);
                 const ret = json as string[];
                 //console.debug(ret);
                 return (ret);
@@ -167,7 +167,7 @@ export default class JobFunctions
     static async CreateUpdateAllFilesJob(apiUri: string): Promise<string[]> {
         return putData(`${apiUri}/v2/Job/UpdateAllFilesJob`, {})
             .then((json) => {
-                //console.info(`Got JobFunctions ${jobId}`);
+                //console.info(`Got Job ${jobId}`);
                 const ret = json as string[];
                 //console.debug(ret);
                 return (ret);
@@ -181,7 +181,7 @@ export default class JobFunctions
         }
         return putData(`${apiUri}/v2/Job/UpdateMetadataJob/${mangaId}`, {})
             .then((json) => {
-                //console.info(`Got JobFunctions ${jobId}`);
+                //console.info(`Got Job ${jobId}`);
                 const ret = json as string[];
                 //console.debug(ret);
                 return (ret);
@@ -191,7 +191,7 @@ export default class JobFunctions
     static async CreateUpdateAllMetadataJob(apiUri: string): Promise<string[]> {
         return putData(`${apiUri}/v2/Job/UpdateAllMetadataJob`, {})
             .then((json) => {
-                //console.info(`Got JobFunctions ${jobId}`);
+                //console.info(`Got Job ${jobId}`);
                 const ret = json as string[];
                 //console.debug(ret);
                 return (ret);
diff --git a/Website/modules/LocalLibraryFunctions.tsx b/Website/modules/api/LocalLibrary.tsx
similarity index 89%
rename from Website/modules/LocalLibraryFunctions.tsx
rename to Website/modules/api/LocalLibrary.tsx
index 7fc3669..d96b83b 100644
--- a/Website/modules/LocalLibraryFunctions.tsx
+++ b/Website/modules/api/LocalLibrary.tsx
@@ -1,8 +1,8 @@
-import ILocalLibrary from "./interfaces/ILocalLibrary";
-import {deleteData, getData, patchData, putData} from "../App";
-import INewLibraryRecord from "./interfaces/records/INewLibraryRecord";
+import {deleteData, getData, patchData, putData} from "../../App";
+import INewLibraryRecord from "../types/records/INewLibraryRecord";
+import ILocalLibrary from "../types/ILocalLibrary";
 
-export default class LocalLibraryFunctions
+export default class LocalLibrary
 {
     static async GetLibraries(apiUri: string): Promise<ILocalLibrary[]> {
         return getData(`${apiUri}/v2/LocalLibraries`)
diff --git a/Website/modules/MangaFunctions.tsx b/Website/modules/api/Manga.tsx
similarity index 86%
rename from Website/modules/MangaFunctions.tsx
rename to Website/modules/api/Manga.tsx
index 55231c3..5110e7b 100644
--- a/Website/modules/MangaFunctions.tsx
+++ b/Website/modules/api/Manga.tsx
@@ -1,14 +1,14 @@
-import IManga from './interfaces/IManga';
-import {deleteData, getData, patchData, postData} from '../App';
-import IChapter from "./interfaces/IChapter";
+import {deleteData, getData, patchData, postData} from '../../App';
+import IManga from "../types/IManga";
+import IChapter from "../types/IChapter";
 
-export default class MangaFunctions
+export default class Manga
 {
     static async GetAllManga(apiUri: string): Promise<IManga[]> {
-        //console.info("Getting all MangaFunctions");
+        //console.info("Getting all Manga");
         return getData(`${apiUri}/v2/Manga`)
             .then((json) => {
-                //console.info("Got all MangaFunctions");
+                //console.info("Got all Manga");
                 const ret = json as IManga[];
                 //console.debug(ret);
                 return (ret);
@@ -23,7 +23,7 @@ export default class MangaFunctions
         //console.debug(`Getting Mangas ${internalIds.join(",")}`);
         return await postData(`${apiUri}/v2/Manga/WithIds`, mangaIds)
             .then((json) => {
-                //console.debug(`Got MangaFunctions ${internalIds.join(",")}`);
+                //console.debug(`Got Manga ${internalIds.join(",")}`);
                 const ret = json as IManga[];
                 //console.debug(ret);
                 return (ret);
@@ -35,10 +35,10 @@ export default class MangaFunctions
             console.error(`mangaId was not provided`);
             return Promise.reject();
         }
-        //console.info(`Getting MangaFunctions ${internalId}`);
+        //console.info(`Getting Manga ${internalId}`);
         return await getData(`${apiUri}/v2/Manga/${mangaId}`)
             .then((json) => {
-                //console.info(`Got MangaFunctions ${internalId}`);
+                //console.info(`Got Manga ${internalId}`);
                 const ret = json as IManga;
                 //console.debug(ret);
                 return (ret);
@@ -54,7 +54,7 @@ export default class MangaFunctions
     }
 
     static GetMangaCoverImageUrl(apiUri: string, mangaId: string, ref: HTMLImageElement | undefined): string {
-        //console.debug(`Getting MangaFunctions Cover-Url ${internalId}`);
+        //console.debug(`Getting Manga Cover-Url ${internalId}`);
         if(ref == null || ref == undefined)
             return `${apiUri}/v2/Manga/${mangaId}/Cover?width=64&height=64`;
         return `${apiUri}/v2/Manga/${mangaId}/Cover?width=${ref.clientWidth}&height=${ref.clientHeight}`;
@@ -67,7 +67,7 @@ export default class MangaFunctions
         }
         return getData(`${apiUri}/v2/Manga/${mangaId}/Chapters`)
             .then((json) => {
-                //console.info(`Got MangaFunctions ${internalId}`);
+                //console.info(`Got Manga ${internalId}`);
                 const ret = json as IChapter[];
                 //console.debug(ret);
                 return (ret);
@@ -81,7 +81,7 @@ export default class MangaFunctions
         }
         return getData(`${apiUri}/v2/Manga/${mangaId}/Chapters/Downloaded`)
             .then((json) => {
-                //console.info(`Got MangaFunctions ${internalId}`);
+                //console.info(`Got Manga ${internalId}`);
                 const ret = json as IChapter[];
                 //console.debug(ret);
                 return (ret);
@@ -95,7 +95,7 @@ export default class MangaFunctions
         }
         return getData(`${apiUri}/v2/Manga/${mangaId}/Chapters/NotDownloaded`)
             .then((json) => {
-                //console.info(`Got MangaFunctions ${internalId}`);
+                //console.info(`Got Manga ${internalId}`);
                 const ret = json as IChapter[];
                 //console.debug(ret);
                 return (ret);
@@ -109,7 +109,7 @@ export default class MangaFunctions
         }
         return getData(`${apiUri}/v2/Manga/${mangaId}/Chapter/LatestAvailable`)
             .then((json) => {
-                //console.info(`Got MangaFunctions ${internalId}`);
+                //console.info(`Got Manga ${internalId}`);
                 const ret = json as IChapter;
                 //console.debug(ret);
                 return (ret);
@@ -123,7 +123,7 @@ export default class MangaFunctions
         }
         return getData(`${apiUri}/v2/Manga/${mangaId}/Chapter/LatestDownloaded`)
             .then((json) => {
-                //console.info(`Got MangaFunctions ${internalId}`);
+                //console.info(`Got Manga ${internalId}`);
                 const ret = json as IChapter;
                 //console.debug(ret);
                 return (ret);
diff --git a/Website/modules/MangaConnectorFunctions.tsx b/Website/modules/api/MangaConnector.tsx
similarity index 92%
rename from Website/modules/MangaConnectorFunctions.tsx
rename to Website/modules/api/MangaConnector.tsx
index 566a091..b58c825 100644
--- a/Website/modules/MangaConnectorFunctions.tsx
+++ b/Website/modules/api/MangaConnector.tsx
@@ -1,7 +1,7 @@
-import IMangaConnector from './interfaces/IMangaConnector';
-import {getData, patchData} from '../App';
+import IMangaConnector from '../types/IMangaConnector';
+import {getData, patchData} from '../../App';
 
-export class MangaConnectorFunctions
+export class MangaConnector
 {
     static async GetAllConnectors(apiUri: string): Promise<IMangaConnector[]> {
         //console.info("Getting all MangaConnectors");
diff --git a/Website/modules/NotificationConnectorFunctions.tsx b/Website/modules/api/NotificationConnector.tsx
similarity index 91%
rename from Website/modules/NotificationConnectorFunctions.tsx
rename to Website/modules/api/NotificationConnector.tsx
index 9d0a49b..d303845 100644
--- a/Website/modules/NotificationConnectorFunctions.tsx
+++ b/Website/modules/api/NotificationConnector.tsx
@@ -1,11 +1,11 @@
-import INotificationConnector from "./interfaces/INotificationConnector";
-import {deleteData, getData, putData} from "../App";
-import IGotifyRecord from "./interfaces/records/IGotifyRecord";
-import INtfyRecord from "./interfaces/records/INtfyRecord";
-import ILunaseaRecord from "./interfaces/records/ILunaseaRecord";
-import IPushoverRecord from "./interfaces/records/IPushoverRecord";
+import {deleteData, getData, putData} from "../../App";
+import IGotifyRecord from "../types/records/IGotifyRecord";
+import INtfyRecord from "../types/records/INtfyRecord";
+import ILunaseaRecord from "../types/records/ILunaseaRecord";
+import IPushoverRecord from "../types/records/IPushoverRecord";
+import INotificationConnector from "../types/INotificationConnector";
 
-export default class NotificationConnectorFunctions {
+export default class NotificationConnector {
 
     static async GetNotificationConnectors(apiUri: string) : Promise<INotificationConnector[]> {
         //console.info("Getting Notification Connectors");
diff --git a/Website/modules/SearchFunctions.tsx b/Website/modules/api/Search.tsx
similarity index 95%
rename from Website/modules/SearchFunctions.tsx
rename to Website/modules/api/Search.tsx
index 2ef8589..1a5979b 100644
--- a/Website/modules/SearchFunctions.tsx
+++ b/Website/modules/api/Search.tsx
@@ -1,5 +1,5 @@
-import IManga from "./interfaces/IManga";
-import {postData} from "../App";
+import {postData} from "../../App";
+import IManga from "../types/IManga";
 
 export default class SearchFunctions {
 
diff --git a/Website/modules/interfaces/IRequestLimits.ts b/Website/modules/interfaces/IRequestLimits.ts
deleted file mode 100644
index 30d0d41..0000000
--- a/Website/modules/interfaces/IRequestLimits.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-export default interface IRequestLimits {
-    Default: number;
-    MangaDexFeed: number;
-    MangaImage: number;
-    MangaCover: number;
-    MangaDexImage: number;
-    MangaInfo: number;
-}
-
-export enum RequestType {
-    Default = "Default",
-    MangaDexFeed = "MangaDexFeed",
-    MangaImage = "MangaImage",
-    MangaCover = "MangaCover",
-    MangaDexImage = "MangaDexImage",
-    MangaInfo = "MangaInfo"
-}
\ No newline at end of file
diff --git a/Website/modules/types/EnumLibraryType.ts b/Website/modules/types/EnumLibraryType.ts
new file mode 100644
index 0000000..5665b04
--- /dev/null
+++ b/Website/modules/types/EnumLibraryType.ts
@@ -0,0 +1,4 @@
+export enum LibraryType {
+    Komga = "Komga",
+    Kavita = "Kavita"
+}
\ No newline at end of file
diff --git a/Website/modules/types/EnumMangaReleaseStatus.ts b/Website/modules/types/EnumMangaReleaseStatus.ts
new file mode 100644
index 0000000..aa3c310
--- /dev/null
+++ b/Website/modules/types/EnumMangaReleaseStatus.ts
@@ -0,0 +1,7 @@
+export enum MangaReleaseStatus {
+    Continuing = "Continuing",
+    Completed = "Completed",
+    OnHiatus = "OnHiatus",
+    Cancelled = "Cancelled",
+    Unreleased = "Unreleased",
+}
\ No newline at end of file
diff --git a/Website/modules/types/EnumRequestLimitType.ts b/Website/modules/types/EnumRequestLimitType.ts
new file mode 100644
index 0000000..c742b5f
--- /dev/null
+++ b/Website/modules/types/EnumRequestLimitType.ts
@@ -0,0 +1,8 @@
+export enum RequestLimitType {
+    Default = "Default",
+    MangaDexFeed = "MangaDexFeed",
+    MangaImage = "MangaImage",
+    MangaCover = "MangaCover",
+    MangaDexImage = "MangaDexImage",
+    MangaInfo = "MangaInfo"
+}
\ No newline at end of file
diff --git a/Website/modules/types/IAuthor.ts b/Website/modules/types/IAuthor.ts
new file mode 100644
index 0000000..2b54e17
--- /dev/null
+++ b/Website/modules/types/IAuthor.ts
@@ -0,0 +1,4 @@
+export default interface IAuthor {
+    authorId: string;
+    authorName: string;
+}
\ No newline at end of file
diff --git a/Website/modules/interfaces/IBackendSettings.tsx b/Website/modules/types/IBackendSettings.ts
similarity index 100%
rename from Website/modules/interfaces/IBackendSettings.tsx
rename to Website/modules/types/IBackendSettings.ts
diff --git a/Website/modules/types/IChapter.ts b/Website/modules/types/IChapter.ts
new file mode 100644
index 0000000..e255ff6
--- /dev/null
+++ b/Website/modules/types/IChapter.ts
@@ -0,0 +1,10 @@
+export default interface IChapter{
+    chapterId: string;
+    volumeNumber: number;
+    chapterNumber: string;
+    url: string;
+    title: string | undefined;
+    archiveFileName: string;
+    downloaded: boolean;
+    parentMangaId: string;
+}
\ No newline at end of file
diff --git a/Website/modules/types/IFrontendSettings.ts b/Website/modules/types/IFrontendSettings.ts
new file mode 100644
index 0000000..2c1c7c5
--- /dev/null
+++ b/Website/modules/types/IFrontendSettings.ts
@@ -0,0 +1,4 @@
+export default interface IFrontendSettings {
+    jobInterval: Date;
+    apiUri: string;
+}
\ No newline at end of file
diff --git a/Website/modules/interfaces/ILibraryConnector.ts b/Website/modules/types/ILibraryConnector.ts
similarity index 67%
rename from Website/modules/interfaces/ILibraryConnector.ts
rename to Website/modules/types/ILibraryConnector.ts
index a477475..7e2322e 100644
--- a/Website/modules/interfaces/ILibraryConnector.ts
+++ b/Website/modules/types/ILibraryConnector.ts
@@ -1,11 +1,8 @@
+import {LibraryType} from "./EnumLibraryType";
+
 export default interface ILibraryConnector {
     libraryConnectorId: string;
     libraryType: LibraryType;
     baseUrl: string;
     auth: string;
-}
-
-export enum LibraryType {
-    Komga = "Komga",
-    Kavita = "Kavita"
 }
\ No newline at end of file
diff --git a/Website/modules/types/ILink.ts b/Website/modules/types/ILink.ts
new file mode 100644
index 0000000..9a26546
--- /dev/null
+++ b/Website/modules/types/ILink.ts
@@ -0,0 +1,5 @@
+export default interface ILink {
+    linkId: string;
+    linkProvider: string;
+    linkUrl: string;
+}
\ No newline at end of file
diff --git a/Website/modules/types/ILocalLibrary.ts b/Website/modules/types/ILocalLibrary.ts
new file mode 100644
index 0000000..11f2bbc
--- /dev/null
+++ b/Website/modules/types/ILocalLibrary.ts
@@ -0,0 +1,5 @@
+export default interface ILocalLibrary {
+    localLibraryId: string;
+    basePath: string;
+    libraryName: string;
+}
\ No newline at end of file
diff --git a/Website/modules/types/IManga.ts b/Website/modules/types/IManga.ts
new file mode 100644
index 0000000..9640408
--- /dev/null
+++ b/Website/modules/types/IManga.ts
@@ -0,0 +1,19 @@
+import {MangaReleaseStatus} from "./EnumMangaReleaseStatus";
+
+export default interface IManga{
+    mangaId: string;
+    idOnConnectorSite: string;
+    name: string;
+    description: string;
+    websiteUrl: string;
+    year: number;
+    originalLanguage: string;
+    releaseStatus: MangaReleaseStatus;
+    folderName: string;
+    ignoreChapterBefore: number;
+    mangaConnectorId: string;
+    authorIds: string[];
+    tags: string[];
+    linkIds: string[];
+    altTitleIds: string[];
+}
\ No newline at end of file
diff --git a/Website/modules/types/IMangaAltTitle.ts b/Website/modules/types/IMangaAltTitle.ts
new file mode 100644
index 0000000..2526df4
--- /dev/null
+++ b/Website/modules/types/IMangaAltTitle.ts
@@ -0,0 +1,5 @@
+export default interface IMangaAltTitle {
+    altTitleId: string;
+    language: string;
+    title: string;
+}
\ No newline at end of file
diff --git a/Website/modules/interfaces/IMangaConnector.ts b/Website/modules/types/IMangaConnector.ts
similarity index 100%
rename from Website/modules/interfaces/IMangaConnector.ts
rename to Website/modules/types/IMangaConnector.ts
diff --git a/Website/modules/types/INotificationConnector.ts b/Website/modules/types/INotificationConnector.ts
new file mode 100644
index 0000000..8d2b765
--- /dev/null
+++ b/Website/modules/types/INotificationConnector.ts
@@ -0,0 +1,7 @@
+export default interface INotificationConnector {
+    name: string;
+    url: string;
+    headers: Record<string, string>[];
+    httpMethod: string;
+    body: string;
+}
\ No newline at end of file
diff --git a/Website/modules/types/IRequestLimits.ts b/Website/modules/types/IRequestLimits.ts
new file mode 100644
index 0000000..54a00ec
--- /dev/null
+++ b/Website/modules/types/IRequestLimits.ts
@@ -0,0 +1,8 @@
+export default interface IRequestLimits {
+    Default: number;
+    MangaDexFeed: number;
+    MangaImage: number;
+    MangaCover: number;
+    MangaDexImage: number;
+    MangaInfo: number;
+}
\ No newline at end of file
diff --git a/Website/modules/interfaces/Jobs/IDownloadAvailableChaptersJob.ts b/Website/modules/types/Jobs/IDownloadAvailableChaptersJob.ts
similarity index 100%
rename from Website/modules/interfaces/Jobs/IDownloadAvailableChaptersJob.ts
rename to Website/modules/types/Jobs/IDownloadAvailableChaptersJob.ts
diff --git a/Website/modules/interfaces/Jobs/IDownloadMangaCoverJob.ts b/Website/modules/types/Jobs/IDownloadMangaCoverJob.ts
similarity index 100%
rename from Website/modules/interfaces/Jobs/IDownloadMangaCoverJob.ts
rename to Website/modules/types/Jobs/IDownloadMangaCoverJob.ts
diff --git a/Website/modules/interfaces/Jobs/IDownloadSingleChapterJob.ts b/Website/modules/types/Jobs/IDownloadSingleChapterJob.ts
similarity index 100%
rename from Website/modules/interfaces/Jobs/IDownloadSingleChapterJob.ts
rename to Website/modules/types/Jobs/IDownloadSingleChapterJob.ts
diff --git a/Website/modules/interfaces/Jobs/IJob.ts b/Website/modules/types/Jobs/IJob.ts
similarity index 100%
rename from Website/modules/interfaces/Jobs/IJob.ts
rename to Website/modules/types/Jobs/IJob.ts
diff --git a/Website/modules/interfaces/Jobs/IMoveFileOrFolderJob.ts b/Website/modules/types/Jobs/IMoveFileOrFolderJob.ts
similarity index 100%
rename from Website/modules/interfaces/Jobs/IMoveFileOrFolderJob.ts
rename to Website/modules/types/Jobs/IMoveFileOrFolderJob.ts
diff --git a/Website/modules/interfaces/Jobs/IMoveMangaLibraryJob.ts b/Website/modules/types/Jobs/IMoveMangaLibraryJob.ts
similarity index 100%
rename from Website/modules/interfaces/Jobs/IMoveMangaLibraryJob.ts
rename to Website/modules/types/Jobs/IMoveMangaLibraryJob.ts
diff --git a/Website/modules/interfaces/Jobs/IRetrieveChaptersJob.ts b/Website/modules/types/Jobs/IRetrieveChaptersJob.ts
similarity index 100%
rename from Website/modules/interfaces/Jobs/IRetrieveChaptersJob.ts
rename to Website/modules/types/Jobs/IRetrieveChaptersJob.ts
diff --git a/Website/modules/interfaces/Jobs/IUpdateFilesDownloadedJob.ts b/Website/modules/types/Jobs/IUpdateFilesDownloadedJob.ts
similarity index 100%
rename from Website/modules/interfaces/Jobs/IUpdateFilesDownloadedJob.ts
rename to Website/modules/types/Jobs/IUpdateFilesDownloadedJob.ts
diff --git a/Website/modules/interfaces/Jobs/IUpdateMetadataJob.ts b/Website/modules/types/Jobs/IUpdateMetadataJob.ts
similarity index 100%
rename from Website/modules/interfaces/Jobs/IUpdateMetadataJob.ts
rename to Website/modules/types/Jobs/IUpdateMetadataJob.ts
diff --git a/Website/modules/interfaces/records/IDownloadAvailableJobsRecord.ts b/Website/modules/types/records/IDownloadAvailableJobsRecord.ts
similarity index 100%
rename from Website/modules/interfaces/records/IDownloadAvailableJobsRecord.ts
rename to Website/modules/types/records/IDownloadAvailableJobsRecord.ts
diff --git a/Website/modules/types/records/IGotifyRecord.ts b/Website/modules/types/records/IGotifyRecord.ts
new file mode 100644
index 0000000..ab8b256
--- /dev/null
+++ b/Website/modules/types/records/IGotifyRecord.ts
@@ -0,0 +1,8 @@
+import "../../../styles/notificationConnector.css";
+import {isValidUri} from "../../../App";
+
+export default interface IGotifyRecord {
+    endpoint: string;
+    appToken: string;
+    priority: number;
+}
\ No newline at end of file
diff --git a/Website/modules/types/records/ILunaseaRecord.ts b/Website/modules/types/records/ILunaseaRecord.ts
new file mode 100644
index 0000000..6a441f4
--- /dev/null
+++ b/Website/modules/types/records/ILunaseaRecord.ts
@@ -0,0 +1,8 @@
+import {ReactElement, useState} from "react";
+import NotificationConnector from "../../api/NotificationConnector";
+import Loader from "../../Loader";
+import "../../../styles/notificationConnector.css";
+
+export default interface ILunaseaRecord {
+    id: string;
+}
\ No newline at end of file
diff --git a/Website/modules/interfaces/records/IModifyJobRecord.ts b/Website/modules/types/records/IModifyJobRecord.ts
similarity index 100%
rename from Website/modules/interfaces/records/IModifyJobRecord.ts
rename to Website/modules/types/records/IModifyJobRecord.ts
diff --git a/Website/modules/interfaces/records/INewLibraryRecord.ts b/Website/modules/types/records/INewLibraryRecord.ts
similarity index 100%
rename from Website/modules/interfaces/records/INewLibraryRecord.ts
rename to Website/modules/types/records/INewLibraryRecord.ts
diff --git a/Website/modules/types/records/INtfyRecord.ts b/Website/modules/types/records/INtfyRecord.ts
new file mode 100644
index 0000000..6470347
--- /dev/null
+++ b/Website/modules/types/records/INtfyRecord.ts
@@ -0,0 +1,9 @@
+import "../../../styles/notificationConnector.css";
+
+export default interface INtfyRecord {
+    endpoint: string;
+    username: string;
+    password: string;
+    topic: string;
+    priority: number;
+}
\ No newline at end of file
diff --git a/Website/modules/types/records/IPushoverRecord.tsx b/Website/modules/types/records/IPushoverRecord.tsx
new file mode 100644
index 0000000..bdca0b7
--- /dev/null
+++ b/Website/modules/types/records/IPushoverRecord.tsx
@@ -0,0 +1,6 @@
+import "../../../styles/notificationConnector.css";
+
+export default interface IPushoverRecord {
+    apptoken: string;
+    user: string;
+}
\ No newline at end of file
diff --git a/tranga-website/.gitignore b/tranga-website/.gitignore
new file mode 100644
index 0000000..a547bf3
--- /dev/null
+++ b/tranga-website/.gitignore
@@ -0,0 +1,24 @@
+# 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/tranga-website/README.md b/tranga-website/README.md
new file mode 100644
index 0000000..40ede56
--- /dev/null
+++ b/tranga-website/README.md
@@ -0,0 +1,54 @@
+# 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:
+
+```js
+export default tseslint.config({
+  extends: [
+    // Remove ...tseslint.configs.recommended and replace with this
+    ...tseslint.configs.recommendedTypeChecked,
+    // Alternatively, use this for stricter rules
+    ...tseslint.configs.strictTypeChecked,
+    // Optionally, add this for stylistic rules
+    ...tseslint.configs.stylisticTypeChecked,
+  ],
+  languageOptions: {
+    // other options...
+    parserOptions: {
+      project: ['./tsconfig.node.json', './tsconfig.app.json'],
+      tsconfigRootDir: import.meta.dirname,
+    },
+  },
+})
+```
+
+You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
+
+```js
+// eslint.config.js
+import reactX from 'eslint-plugin-react-x'
+import reactDom from 'eslint-plugin-react-dom'
+
+export default tseslint.config({
+  plugins: {
+    // Add the react-x and react-dom plugins
+    'react-x': reactX,
+    'react-dom': reactDom,
+  },
+  rules: {
+    // other rules...
+    // Enable its recommended typescript rules
+    ...reactX.configs['recommended-typescript'].rules,
+    ...reactDom.configs.recommended.rules,
+  },
+})
+```
diff --git a/tranga-website/eslint.config.js b/tranga-website/eslint.config.js
new file mode 100644
index 0000000..092408a
--- /dev/null
+++ b/tranga-website/eslint.config.js
@@ -0,0 +1,28 @@
+import js from '@eslint/js'
+import globals from 'globals'
+import reactHooks from 'eslint-plugin-react-hooks'
+import reactRefresh from 'eslint-plugin-react-refresh'
+import tseslint from 'typescript-eslint'
+
+export default tseslint.config(
+  { ignores: ['dist'] },
+  {
+    extends: [js.configs.recommended, ...tseslint.configs.recommended],
+    files: ['**/*.{ts,tsx}'],
+    languageOptions: {
+      ecmaVersion: 2020,
+      globals: globals.browser,
+    },
+    plugins: {
+      'react-hooks': reactHooks,
+      'react-refresh': reactRefresh,
+    },
+    rules: {
+      ...reactHooks.configs.recommended.rules,
+      'react-refresh/only-export-components': [
+        'warn',
+        { allowConstantExport: true },
+      ],
+    },
+  },
+)
diff --git a/tranga-website/index.html b/tranga-website/index.html
new file mode 100644
index 0000000..e4b78ea
--- /dev/null
+++ b/tranga-website/index.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Vite + React + TS</title>
+  </head>
+  <body>
+    <div id="root"></div>
+    <script type="module" src="/src/main.tsx"></script>
+  </body>
+</html>
diff --git a/tranga-website/package-lock.json b/tranga-website/package-lock.json
new file mode 100644
index 0000000..47c817d
--- /dev/null
+++ b/tranga-website/package-lock.json
@@ -0,0 +1,4225 @@
+{
+  "name": "tranga-website",
+  "version": "0.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "tranga-website",
+      "version": "0.0.0",
+      "dependencies": {
+        "@emotion/react": "^11.14.0",
+        "@emotion/styled": "^11.14.0",
+        "@fontsource/inter": "^5.2.5",
+        "@mui/icons-material": "^7.0.1",
+        "@mui/joy": "^5.0.0-beta.52",
+        "react": "^19.0.0",
+        "react-dom": "^19.0.0"
+      },
+      "devDependencies": {
+        "@eslint/js": "^9.21.0",
+        "@types/react": "^19.0.10",
+        "@types/react-dom": "^19.0.4",
+        "@vitejs/plugin-react": "^4.3.4",
+        "eslint": "^9.21.0",
+        "eslint-plugin-react-hooks": "^5.1.0",
+        "eslint-plugin-react-refresh": "^0.4.19",
+        "globals": "^15.15.0",
+        "typescript": "~5.7.2",
+        "typescript-eslint": "^8.24.1",
+        "vite": "^6.2.0"
+      }
+    },
+    "node_modules/@ampproject/remapping": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+      "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.5",
+        "@jridgewell/trace-mapping": "^0.3.24"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.26.2",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+      "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.25.9",
+        "js-tokens": "^4.0.0",
+        "picocolors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.26.8",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
+      "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/core": {
+      "version": "7.26.10",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
+      "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@ampproject/remapping": "^2.2.0",
+        "@babel/code-frame": "^7.26.2",
+        "@babel/generator": "^7.26.10",
+        "@babel/helper-compilation-targets": "^7.26.5",
+        "@babel/helper-module-transforms": "^7.26.0",
+        "@babel/helpers": "^7.26.10",
+        "@babel/parser": "^7.26.10",
+        "@babel/template": "^7.26.9",
+        "@babel/traverse": "^7.26.10",
+        "@babel/types": "^7.26.10",
+        "convert-source-map": "^2.0.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.2.3",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/babel"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
+      "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/parser": "^7.27.0",
+        "@babel/types": "^7.27.0",
+        "@jridgewell/gen-mapping": "^0.3.5",
+        "@jridgewell/trace-mapping": "^0.3.25",
+        "jsesc": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
+      "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.26.8",
+        "@babel/helper-validator-option": "^7.25.9",
+        "browserslist": "^4.24.0",
+        "lru-cache": "^5.1.1",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.25.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+      "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/traverse": "^7.25.9",
+        "@babel/types": "^7.25.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.26.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+      "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.25.9",
+        "@babel/helper-validator-identifier": "^7.25.9",
+        "@babel/traverse": "^7.25.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-plugin-utils": {
+      "version": "7.26.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
+      "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.25.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+      "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.25.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+      "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-option": {
+      "version": "7.25.9",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+      "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
+      "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/template": "^7.27.0",
+        "@babel/types": "^7.27.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
+      "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.27.0"
+      },
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-react-jsx-self": {
+      "version": "7.25.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
+      "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.25.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-react-jsx-source": {
+      "version": "7.25.9",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
+      "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.25.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/runtime": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz",
+      "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==",
+      "license": "MIT",
+      "dependencies": {
+        "regenerator-runtime": "^0.14.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/template": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
+      "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.26.2",
+        "@babel/parser": "^7.27.0",
+        "@babel/types": "^7.27.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
+      "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.26.2",
+        "@babel/generator": "^7.27.0",
+        "@babel/parser": "^7.27.0",
+        "@babel/template": "^7.27.0",
+        "@babel/types": "^7.27.0",
+        "debug": "^4.3.1",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse/node_modules/globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
+      "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.25.9",
+        "@babel/helper-validator-identifier": "^7.25.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@emotion/babel-plugin": {
+      "version": "11.13.5",
+      "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz",
+      "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.16.7",
+        "@babel/runtime": "^7.18.3",
+        "@emotion/hash": "^0.9.2",
+        "@emotion/memoize": "^0.9.0",
+        "@emotion/serialize": "^1.3.3",
+        "babel-plugin-macros": "^3.1.0",
+        "convert-source-map": "^1.5.0",
+        "escape-string-regexp": "^4.0.0",
+        "find-root": "^1.1.0",
+        "source-map": "^0.5.7",
+        "stylis": "4.2.0"
+      }
+    },
+    "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+      "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+      "license": "MIT"
+    },
+    "node_modules/@emotion/cache": {
+      "version": "11.14.0",
+      "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz",
+      "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==",
+      "license": "MIT",
+      "dependencies": {
+        "@emotion/memoize": "^0.9.0",
+        "@emotion/sheet": "^1.4.0",
+        "@emotion/utils": "^1.4.2",
+        "@emotion/weak-memoize": "^0.4.0",
+        "stylis": "4.2.0"
+      }
+    },
+    "node_modules/@emotion/hash": {
+      "version": "0.9.2",
+      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
+      "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==",
+      "license": "MIT"
+    },
+    "node_modules/@emotion/is-prop-valid": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz",
+      "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==",
+      "license": "MIT",
+      "dependencies": {
+        "@emotion/memoize": "^0.9.0"
+      }
+    },
+    "node_modules/@emotion/memoize": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+      "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==",
+      "license": "MIT"
+    },
+    "node_modules/@emotion/react": {
+      "version": "11.14.0",
+      "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz",
+      "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.18.3",
+        "@emotion/babel-plugin": "^11.13.5",
+        "@emotion/cache": "^11.14.0",
+        "@emotion/serialize": "^1.3.3",
+        "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0",
+        "@emotion/utils": "^1.4.2",
+        "@emotion/weak-memoize": "^0.4.0",
+        "hoist-non-react-statics": "^3.3.1"
+      },
+      "peerDependencies": {
+        "react": ">=16.8.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@emotion/serialize": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz",
+      "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==",
+      "license": "MIT",
+      "dependencies": {
+        "@emotion/hash": "^0.9.2",
+        "@emotion/memoize": "^0.9.0",
+        "@emotion/unitless": "^0.10.0",
+        "@emotion/utils": "^1.4.2",
+        "csstype": "^3.0.2"
+      }
+    },
+    "node_modules/@emotion/sheet": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz",
+      "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==",
+      "license": "MIT"
+    },
+    "node_modules/@emotion/styled": {
+      "version": "11.14.0",
+      "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz",
+      "integrity": "sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.18.3",
+        "@emotion/babel-plugin": "^11.13.5",
+        "@emotion/is-prop-valid": "^1.3.0",
+        "@emotion/serialize": "^1.3.3",
+        "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0",
+        "@emotion/utils": "^1.4.2"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.0.0-rc.0",
+        "react": ">=16.8.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@emotion/unitless": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
+      "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==",
+      "license": "MIT"
+    },
+    "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz",
+      "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==",
+      "license": "MIT",
+      "peerDependencies": {
+        "react": ">=16.8.0"
+      }
+    },
+    "node_modules/@emotion/utils": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz",
+      "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==",
+      "license": "MIT"
+    },
+    "node_modules/@emotion/weak-memoize": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
+      "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==",
+      "license": "MIT"
+    },
+    "node_modules/@esbuild/aix-ppc64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
+      "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "aix"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/android-arm": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
+      "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/android-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
+      "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/android-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
+      "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/darwin-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
+      "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/darwin-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
+      "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/freebsd-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
+      "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/freebsd-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
+      "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-arm": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
+      "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
+      "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-ia32": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
+      "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-loong64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
+      "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
+      "cpu": [
+        "loong64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-mips64el": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
+      "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
+      "cpu": [
+        "mips64el"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-ppc64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
+      "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-riscv64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
+      "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-s390x": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
+      "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
+      "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/netbsd-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
+      "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/netbsd-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
+      "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/openbsd-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
+      "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/openbsd-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
+      "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/sunos-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
+      "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "sunos"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/win32-arm64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
+      "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/win32-ia32": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
+      "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/win32-x64": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
+      "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@eslint-community/eslint-utils": {
+      "version": "4.5.1",
+      "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz",
+      "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "eslint-visitor-keys": "^3.4.3"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+      }
+    },
+    "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/@eslint-community/regexpp": {
+      "version": "4.12.1",
+      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+      "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@eslint/config-array": {
+      "version": "0.19.2",
+      "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
+      "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@eslint/object-schema": "^2.1.6",
+        "debug": "^4.3.1",
+        "minimatch": "^3.1.2"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/config-helpers": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz",
+      "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/core": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
+      "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@types/json-schema": "^7.0.15"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/eslintrc": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+      "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.12.4",
+        "debug": "^4.3.2",
+        "espree": "^10.0.1",
+        "globals": "^14.0.0",
+        "ignore": "^5.2.0",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^4.1.0",
+        "minimatch": "^3.1.2",
+        "strip-json-comments": "^3.1.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/@eslint/eslintrc/node_modules/globals": {
+      "version": "14.0.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+      "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@eslint/js": {
+      "version": "9.23.0",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
+      "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/object-schema": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
+      "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/plugin-kit": {
+      "version": "0.2.7",
+      "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz",
+      "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@eslint/core": "^0.12.0",
+        "levn": "^0.4.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@floating-ui/core": {
+      "version": "1.6.9",
+      "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz",
+      "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==",
+      "license": "MIT",
+      "dependencies": {
+        "@floating-ui/utils": "^0.2.9"
+      }
+    },
+    "node_modules/@floating-ui/dom": {
+      "version": "1.6.13",
+      "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz",
+      "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==",
+      "license": "MIT",
+      "dependencies": {
+        "@floating-ui/core": "^1.6.0",
+        "@floating-ui/utils": "^0.2.9"
+      }
+    },
+    "node_modules/@floating-ui/react-dom": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz",
+      "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==",
+      "license": "MIT",
+      "dependencies": {
+        "@floating-ui/dom": "^1.0.0"
+      },
+      "peerDependencies": {
+        "react": ">=16.8.0",
+        "react-dom": ">=16.8.0"
+      }
+    },
+    "node_modules/@floating-ui/utils": {
+      "version": "0.2.9",
+      "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz",
+      "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==",
+      "license": "MIT"
+    },
+    "node_modules/@fontsource/inter": {
+      "version": "5.2.5",
+      "resolved": "https://registry.npmjs.org/@fontsource/inter/-/inter-5.2.5.tgz",
+      "integrity": "sha512-kbsPKj0S4p44JdYRFiW78Td8Ge2sBVxi/PIBwmih+RpSXUdvS9nbs1HIiuUSPtRMi14CqLEZ/fbk7dj7vni1Sg==",
+      "license": "OFL-1.1",
+      "funding": {
+        "url": "https://github.com/sponsors/ayuhito"
+      }
+    },
+    "node_modules/@humanfs/core": {
+      "version": "0.19.1",
+      "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+      "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=18.18.0"
+      }
+    },
+    "node_modules/@humanfs/node": {
+      "version": "0.16.6",
+      "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+      "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@humanfs/core": "^0.19.1",
+        "@humanwhocodes/retry": "^0.3.0"
+      },
+      "engines": {
+        "node": ">=18.18.0"
+      }
+    },
+    "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+      "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=18.18"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
+    },
+    "node_modules/@humanwhocodes/module-importer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=12.22"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
+    },
+    "node_modules/@humanwhocodes/retry": {
+      "version": "0.4.2",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz",
+      "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=18.18"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
+    },
+    "node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.8",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+      "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+      "license": "MIT",
+      "dependencies": {
+        "@jridgewell/set-array": "^1.2.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.24"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/set-array": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+      "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+      "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+      "license": "MIT"
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.25",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+      "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@jridgewell/resolve-uri": "^3.1.0",
+        "@jridgewell/sourcemap-codec": "^1.4.14"
+      }
+    },
+    "node_modules/@mui/base": {
+      "version": "5.0.0-beta.40-1",
+      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40-1.tgz",
+      "integrity": "sha512-agKXuNNy0bHUmeU7pNmoZwNFr7Hiyhojkb9+2PVyDG5+6RafYuyMgbrav8CndsB7KUc/U51JAw9vKNDLYBzaUA==",
+      "deprecated": "This package has been replaced by @base-ui-components/react",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.23.9",
+        "@floating-ui/react-dom": "^2.0.8",
+        "@mui/types": "~7.2.15",
+        "@mui/utils": "^5.17.1",
+        "@popperjs/core": "^2.11.8",
+        "clsx": "^2.1.0",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/core-downloads-tracker": {
+      "version": "5.17.1",
+      "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.17.1.tgz",
+      "integrity": "sha512-OcZj+cs6EfUD39IoPBOgN61zf1XFVY+imsGoBDwXeSq2UHJZE3N59zzBOVjclck91Ne3e9gudONOeILvHCIhUA==",
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      }
+    },
+    "node_modules/@mui/icons-material": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.0.1.tgz",
+      "integrity": "sha512-x8Em7LISFQ6s/KeZj6ZKwJHq2WttRNe9KJLWFa72eQx7B53s/TzMKOEjGKB/YyhOx+bqqSv1pMvK373M4Xf07A==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.26.10"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@mui/material": "^7.0.1",
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/joy": {
+      "version": "5.0.0-beta.52",
+      "resolved": "https://registry.npmjs.org/@mui/joy/-/joy-5.0.0-beta.52.tgz",
+      "integrity": "sha512-e8jQanA5M1f/X52mJrw0UIW8Er7EAHuLuigmGFw7yIsAgIluhIP4rZ7JcbVrUi6z5Gk0weC9QWUUtjLejAbO8g==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.23.9",
+        "@mui/base": "5.0.0-beta.40-1",
+        "@mui/core-downloads-tracker": "^5.17.1",
+        "@mui/system": "^5.17.1",
+        "@mui/types": "~7.2.15",
+        "@mui/utils": "^5.17.1",
+        "clsx": "^2.1.0",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.5.0",
+        "@emotion/styled": "^11.3.0",
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        },
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/material": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.0.1.tgz",
+      "integrity": "sha512-tQwjIIsn/UUSCHoCIQVkANuLua67h7Ro9M9gIHoGWaFbJFuF6cSO4Oda2olDVqIs4SWG+PaDChuu6SngxsaoyQ==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@babel/runtime": "^7.26.10",
+        "@mui/core-downloads-tracker": "^7.0.1",
+        "@mui/system": "^7.0.1",
+        "@mui/types": "^7.4.0",
+        "@mui/utils": "^7.0.1",
+        "@popperjs/core": "^2.11.8",
+        "@types/react-transition-group": "^4.4.12",
+        "clsx": "^2.1.1",
+        "csstype": "^3.1.3",
+        "prop-types": "^15.8.1",
+        "react-is": "^19.0.0",
+        "react-transition-group": "^4.4.5"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.5.0",
+        "@emotion/styled": "^11.3.0",
+        "@mui/material-pigment-css": "^7.0.1",
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        },
+        "@mui/material-pigment-css": {
+          "optional": true
+        },
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/material/node_modules/@mui/core-downloads-tracker": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.0.1.tgz",
+      "integrity": "sha512-T5DNVnSD9pMbj4Jk/Uphz+yvj9dfpl2+EqsOuJtG12HxEihNG5pd3qzX5yM1Id4dDwKRvM3dPVcxyzavTFhJeA==",
+      "license": "MIT",
+      "peer": true,
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      }
+    },
+    "node_modules/@mui/material/node_modules/@mui/private-theming": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.0.1.tgz",
+      "integrity": "sha512-1kQ7REYjjzDukuMfTbAjm3pLEhD7gUMC2bWhg9VD6f6sHzyokKzX0XHzlr3IdzNWBjPytGkzHpPIRQrUOoPLCQ==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@babel/runtime": "^7.26.10",
+        "@mui/utils": "^7.0.1",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/material/node_modules/@mui/styled-engine": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.0.1.tgz",
+      "integrity": "sha512-BeGe4xZmF7tESKhmctYrL54Kl25kGHPKVdZYM5qj5Xz76WM/poY+d8EmAqUesT6k2rbJWPp2gtOAXXinNCGunQ==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@babel/runtime": "^7.26.10",
+        "@emotion/cache": "^11.13.5",
+        "@emotion/serialize": "^1.3.3",
+        "@emotion/sheet": "^1.4.0",
+        "csstype": "^3.1.3",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.4.1",
+        "@emotion/styled": "^11.3.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/material/node_modules/@mui/system": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.0.1.tgz",
+      "integrity": "sha512-pK+puz0hRPHEKGlcPd80mKYD3jpyi0uVIwWffox1WZgPTQMw2dCKLcD+9ndMDJADnrKzmKlpoH756PPFh2UvWA==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@babel/runtime": "^7.26.10",
+        "@mui/private-theming": "^7.0.1",
+        "@mui/styled-engine": "^7.0.1",
+        "@mui/types": "^7.4.0",
+        "@mui/utils": "^7.0.1",
+        "clsx": "^2.1.1",
+        "csstype": "^3.1.3",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.5.0",
+        "@emotion/styled": "^11.3.0",
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        },
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/material/node_modules/@mui/types": {
+      "version": "7.4.0",
+      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.0.tgz",
+      "integrity": "sha512-TxJ4ezEeedWHBjOmLtxI203a9DII9l4k83RXmz1PYSAmnyEcK2PglTNmJGxswC/wM5cdl9ap2h8lnXvt2swAGQ==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@babel/runtime": "^7.26.10"
+      },
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/material/node_modules/@mui/utils": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.0.1.tgz",
+      "integrity": "sha512-SJKrrebNpmK9rJCnVL29nGPhPXQYtBZmb7Dsp0f58uIUhQfAKcBXHE4Kjs06SX4CwqeCuwEVgcHY+MgAO6XQ/g==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@babel/runtime": "^7.26.10",
+        "@mui/types": "^7.4.0",
+        "@types/prop-types": "^15.7.14",
+        "clsx": "^2.1.1",
+        "prop-types": "^15.8.1",
+        "react-is": "^19.0.0"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/private-theming": {
+      "version": "5.17.1",
+      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.17.1.tgz",
+      "integrity": "sha512-XMxU0NTYcKqdsG8LRmSoxERPXwMbp16sIXPcLVgLGII/bVNagX0xaheWAwFv8+zDK7tI3ajllkuD3GZZE++ICQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.23.9",
+        "@mui/utils": "^5.17.1",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/styled-engine": {
+      "version": "5.16.14",
+      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.14.tgz",
+      "integrity": "sha512-UAiMPZABZ7p8mUW4akDV6O7N3+4DatStpXMZwPlt+H/dA0lt67qawN021MNND+4QTpjaiMYxbhKZeQcyWCbuKw==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.23.9",
+        "@emotion/cache": "^11.13.5",
+        "csstype": "^3.1.3",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.4.1",
+        "@emotion/styled": "^11.3.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/system": {
+      "version": "5.17.1",
+      "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.17.1.tgz",
+      "integrity": "sha512-aJrmGfQpyF0U4D4xYwA6ueVtQcEMebET43CUmKMP7e7iFh3sMIF3sBR0l8Urb4pqx1CBjHAaWgB0ojpND4Q3Jg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.23.9",
+        "@mui/private-theming": "^5.17.1",
+        "@mui/styled-engine": "^5.16.14",
+        "@mui/types": "~7.2.15",
+        "@mui/utils": "^5.17.1",
+        "clsx": "^2.1.0",
+        "csstype": "^3.1.3",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.5.0",
+        "@emotion/styled": "^11.3.0",
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        },
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/types": {
+      "version": "7.2.24",
+      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.24.tgz",
+      "integrity": "sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/utils": {
+      "version": "5.17.1",
+      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.17.1.tgz",
+      "integrity": "sha512-jEZ8FTqInt2WzxDV8bhImWBqeQRD99c/id/fq83H0ER9tFl+sfZlaAoCdznGvbSQQ9ividMxqSV2c7cC1vBcQg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.23.9",
+        "@mui/types": "~7.2.15",
+        "@types/prop-types": "^15.7.12",
+        "clsx": "^2.1.1",
+        "prop-types": "^15.8.1",
+        "react-is": "^19.0.0"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui-org"
+      },
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@popperjs/core": {
+      "version": "2.11.8",
+      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+      "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/popperjs"
+      }
+    },
+    "node_modules/@rollup/rollup-android-arm-eabi": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz",
+      "integrity": "sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ]
+    },
+    "node_modules/@rollup/rollup-android-arm64": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.38.0.tgz",
+      "integrity": "sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ]
+    },
+    "node_modules/@rollup/rollup-darwin-arm64": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.38.0.tgz",
+      "integrity": "sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@rollup/rollup-darwin-x64": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.38.0.tgz",
+      "integrity": "sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@rollup/rollup-freebsd-arm64": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.38.0.tgz",
+      "integrity": "sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ]
+    },
+    "node_modules/@rollup/rollup-freebsd-x64": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.38.0.tgz",
+      "integrity": "sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.38.0.tgz",
+      "integrity": "sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.38.0.tgz",
+      "integrity": "sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm64-gnu": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.38.0.tgz",
+      "integrity": "sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm64-musl": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.38.0.tgz",
+      "integrity": "sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.38.0.tgz",
+      "integrity": "sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==",
+      "cpu": [
+        "loong64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.38.0.tgz",
+      "integrity": "sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.38.0.tgz",
+      "integrity": "sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-riscv64-musl": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.38.0.tgz",
+      "integrity": "sha512-9EYTX+Gus2EGPbfs+fh7l95wVADtSQyYw4DfSBcYdUEAmP2lqSZY0Y17yX/3m5VKGGJ4UmIH5LHLkMJft3bYoA==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-s390x-gnu": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.38.0.tgz",
+      "integrity": "sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-x64-gnu": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.38.0.tgz",
+      "integrity": "sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-x64-musl": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.38.0.tgz",
+      "integrity": "sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-arm64-msvc": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.38.0.tgz",
+      "integrity": "sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-ia32-msvc": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.38.0.tgz",
+      "integrity": "sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-x64-msvc": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.38.0.tgz",
+      "integrity": "sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@types/babel__core": {
+      "version": "7.20.5",
+      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+      "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/parser": "^7.20.7",
+        "@babel/types": "^7.20.7",
+        "@types/babel__generator": "*",
+        "@types/babel__template": "*",
+        "@types/babel__traverse": "*"
+      }
+    },
+    "node_modules/@types/babel__generator": {
+      "version": "7.6.8",
+      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+      "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "node_modules/@types/babel__template": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+      "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/parser": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "node_modules/@types/babel__traverse": {
+      "version": "7.20.7",
+      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
+      "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/types": "^7.20.7"
+      }
+    },
+    "node_modules/@types/estree": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
+      "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/json-schema": {
+      "version": "7.0.15",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+      "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/@types/parse-json": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
+      "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
+      "license": "MIT"
+    },
+    "node_modules/@types/prop-types": {
+      "version": "15.7.14",
+      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
+      "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==",
+      "license": "MIT"
+    },
+    "node_modules/@types/react": {
+      "version": "19.0.12",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz",
+      "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==",
+      "license": "MIT",
+      "dependencies": {
+        "csstype": "^3.0.2"
+      }
+    },
+    "node_modules/@types/react-dom": {
+      "version": "19.0.4",
+      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz",
+      "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "^19.0.0"
+      }
+    },
+    "node_modules/@types/react-transition-group": {
+      "version": "4.4.12",
+      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz",
+      "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==",
+      "license": "MIT",
+      "peer": true,
+      "peerDependencies": {
+        "@types/react": "*"
+      }
+    },
+    "node_modules/@typescript-eslint/eslint-plugin": {
+      "version": "8.28.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.28.0.tgz",
+      "integrity": "sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/regexpp": "^4.10.0",
+        "@typescript-eslint/scope-manager": "8.28.0",
+        "@typescript-eslint/type-utils": "8.28.0",
+        "@typescript-eslint/utils": "8.28.0",
+        "@typescript-eslint/visitor-keys": "8.28.0",
+        "graphemer": "^1.4.0",
+        "ignore": "^5.3.1",
+        "natural-compare": "^1.4.0",
+        "ts-api-utils": "^2.0.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.9.0"
+      }
+    },
+    "node_modules/@typescript-eslint/parser": {
+      "version": "8.28.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.28.0.tgz",
+      "integrity": "sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/scope-manager": "8.28.0",
+        "@typescript-eslint/types": "8.28.0",
+        "@typescript-eslint/typescript-estree": "8.28.0",
+        "@typescript-eslint/visitor-keys": "8.28.0",
+        "debug": "^4.3.4"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.9.0"
+      }
+    },
+    "node_modules/@typescript-eslint/scope-manager": {
+      "version": "8.28.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz",
+      "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "8.28.0",
+        "@typescript-eslint/visitor-keys": "8.28.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/@typescript-eslint/type-utils": {
+      "version": "8.28.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.28.0.tgz",
+      "integrity": "sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/typescript-estree": "8.28.0",
+        "@typescript-eslint/utils": "8.28.0",
+        "debug": "^4.3.4",
+        "ts-api-utils": "^2.0.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.9.0"
+      }
+    },
+    "node_modules/@typescript-eslint/types": {
+      "version": "8.28.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz",
+      "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree": {
+      "version": "8.28.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz",
+      "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "8.28.0",
+        "@typescript-eslint/visitor-keys": "8.28.0",
+        "debug": "^4.3.4",
+        "fast-glob": "^3.3.2",
+        "is-glob": "^4.0.3",
+        "minimatch": "^9.0.4",
+        "semver": "^7.6.0",
+        "ts-api-utils": "^2.0.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "typescript": ">=4.8.4 <5.9.0"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+      "version": "7.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+      "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@typescript-eslint/utils": {
+      "version": "8.28.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz",
+      "integrity": "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.4.0",
+        "@typescript-eslint/scope-manager": "8.28.0",
+        "@typescript-eslint/types": "8.28.0",
+        "@typescript-eslint/typescript-estree": "8.28.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.9.0"
+      }
+    },
+    "node_modules/@typescript-eslint/visitor-keys": {
+      "version": "8.28.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz",
+      "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/types": "8.28.0",
+        "eslint-visitor-keys": "^4.2.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      }
+    },
+    "node_modules/@vitejs/plugin-react": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz",
+      "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.26.0",
+        "@babel/plugin-transform-react-jsx-self": "^7.25.9",
+        "@babel/plugin-transform-react-jsx-source": "^7.25.9",
+        "@types/babel__core": "^7.20.5",
+        "react-refresh": "^0.14.2"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
+      }
+    },
+    "node_modules/acorn": {
+      "version": "8.14.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
+      "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true,
+      "license": "Python-2.0"
+    },
+    "node_modules/babel-plugin-macros": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
+      "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.12.5",
+        "cosmiconfig": "^7.0.0",
+        "resolve": "^1.19.0"
+      },
+      "engines": {
+        "node": ">=10",
+        "npm": ">=6"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "fill-range": "^7.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.24.4",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
+      "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001688",
+        "electron-to-chromium": "^1.5.73",
+        "node-releases": "^2.0.19",
+        "update-browserslist-db": "^1.1.1"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001707",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz",
+      "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "CC-BY-4.0"
+    },
+    "node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/clsx": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+      "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/convert-source-map": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+      "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/cosmiconfig": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+      "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/parse-json": "^4.0.0",
+        "import-fresh": "^3.2.1",
+        "parse-json": "^5.0.0",
+        "path-type": "^4.0.0",
+        "yaml": "^1.10.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/cosmiconfig/node_modules/yaml": {
+      "version": "1.10.2",
+      "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+      "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+      "license": "ISC",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.6",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+      "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/csstype": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+      "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+      "license": "MIT"
+    },
+    "node_modules/debug": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+      "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.1.3"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/dom-helpers": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+      "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@babel/runtime": "^7.8.7",
+        "csstype": "^3.0.2"
+      }
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.5.128",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz",
+      "integrity": "sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "license": "MIT",
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "node_modules/esbuild": {
+      "version": "0.25.2",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
+      "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
+      "dev": true,
+      "hasInstallScript": true,
+      "license": "MIT",
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "optionalDependencies": {
+        "@esbuild/aix-ppc64": "0.25.2",
+        "@esbuild/android-arm": "0.25.2",
+        "@esbuild/android-arm64": "0.25.2",
+        "@esbuild/android-x64": "0.25.2",
+        "@esbuild/darwin-arm64": "0.25.2",
+        "@esbuild/darwin-x64": "0.25.2",
+        "@esbuild/freebsd-arm64": "0.25.2",
+        "@esbuild/freebsd-x64": "0.25.2",
+        "@esbuild/linux-arm": "0.25.2",
+        "@esbuild/linux-arm64": "0.25.2",
+        "@esbuild/linux-ia32": "0.25.2",
+        "@esbuild/linux-loong64": "0.25.2",
+        "@esbuild/linux-mips64el": "0.25.2",
+        "@esbuild/linux-ppc64": "0.25.2",
+        "@esbuild/linux-riscv64": "0.25.2",
+        "@esbuild/linux-s390x": "0.25.2",
+        "@esbuild/linux-x64": "0.25.2",
+        "@esbuild/netbsd-arm64": "0.25.2",
+        "@esbuild/netbsd-x64": "0.25.2",
+        "@esbuild/openbsd-arm64": "0.25.2",
+        "@esbuild/openbsd-x64": "0.25.2",
+        "@esbuild/sunos-x64": "0.25.2",
+        "@esbuild/win32-arm64": "0.25.2",
+        "@esbuild/win32-ia32": "0.25.2",
+        "@esbuild/win32-x64": "0.25.2"
+      }
+    },
+    "node_modules/escalade": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+      "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint": {
+      "version": "9.23.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
+      "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.2.0",
+        "@eslint-community/regexpp": "^4.12.1",
+        "@eslint/config-array": "^0.19.2",
+        "@eslint/config-helpers": "^0.2.0",
+        "@eslint/core": "^0.12.0",
+        "@eslint/eslintrc": "^3.3.1",
+        "@eslint/js": "9.23.0",
+        "@eslint/plugin-kit": "^0.2.7",
+        "@humanfs/node": "^0.16.6",
+        "@humanwhocodes/module-importer": "^1.0.1",
+        "@humanwhocodes/retry": "^0.4.2",
+        "@types/estree": "^1.0.6",
+        "@types/json-schema": "^7.0.15",
+        "ajv": "^6.12.4",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.6",
+        "debug": "^4.3.2",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^8.3.0",
+        "eslint-visitor-keys": "^4.2.0",
+        "espree": "^10.3.0",
+        "esquery": "^1.5.0",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^8.0.0",
+        "find-up": "^5.0.0",
+        "glob-parent": "^6.0.2",
+        "ignore": "^5.2.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "lodash.merge": "^4.6.2",
+        "minimatch": "^3.1.2",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.9.3"
+      },
+      "bin": {
+        "eslint": "bin/eslint.js"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://eslint.org/donate"
+      },
+      "peerDependencies": {
+        "jiti": "*"
+      },
+      "peerDependenciesMeta": {
+        "jiti": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/eslint-plugin-react-hooks": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz",
+      "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-react-refresh": {
+      "version": "0.4.19",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.19.tgz",
+      "integrity": "sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==",
+      "dev": true,
+      "license": "MIT",
+      "peerDependencies": {
+        "eslint": ">=8.40"
+      }
+    },
+    "node_modules/eslint-scope": {
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz",
+      "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/eslint-visitor-keys": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+      "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/espree": {
+      "version": "10.3.0",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
+      "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "acorn": "^8.14.0",
+        "acorn-jsx": "^5.3.2",
+        "eslint-visitor-keys": "^4.2.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/esquery": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+      "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "estraverse": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/fast-glob": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+      "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.8"
+      },
+      "engines": {
+        "node": ">=8.6.0"
+      }
+    },
+    "node_modules/fast-glob/node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/fastq": {
+      "version": "1.19.1",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+      "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/file-entry-cache": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+      "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "flat-cache": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=16.0.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/find-root": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+      "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
+      "license": "MIT"
+    },
+    "node_modules/find-up": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^6.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/flat-cache": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+      "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "flatted": "^3.2.9",
+        "keyv": "^4.5.4"
+      },
+      "engines": {
+        "node": ">=16"
+      }
+    },
+    "node_modules/flatted": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+      "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^4.0.3"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/globals": {
+      "version": "15.15.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz",
+      "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/graphemer": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+      "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/hasown": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+      "license": "MIT",
+      "dependencies": {
+        "function-bind": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/hoist-non-react-statics": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+      "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "react-is": "^16.7.0"
+      }
+    },
+    "node_modules/hoist-non-react-statics/node_modules/react-is": {
+      "version": "16.13.1",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+      "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+      "license": "MIT"
+    },
+    "node_modules/ignore": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+      "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/import-fresh": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+      "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+      "license": "MIT",
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+      "license": "MIT"
+    },
+    "node_modules/is-core-module": {
+      "version": "2.16.1",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+      "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+      "license": "MIT",
+      "dependencies": {
+        "hasown": "^2.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "license": "MIT"
+    },
+    "node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsesc": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+      "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+      "license": "MIT",
+      "bin": {
+        "jsesc": "bin/jsesc"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/json-buffer": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+      "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+      "license": "MIT"
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/json5": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+      "dev": true,
+      "license": "MIT",
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/keyv": {
+      "version": "4.5.4",
+      "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "json-buffer": "3.0.1"
+      }
+    },
+    "node_modules/levn": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/lines-and-columns": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+      "license": "MIT"
+    },
+    "node_modules/locate-path": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/loose-envify": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+      "license": "MIT",
+      "dependencies": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      },
+      "bin": {
+        "loose-envify": "cli.js"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "braces": "^3.0.3",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+      "license": "MIT"
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.11",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+      "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.19",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+      "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
+      "dev": true,
+      "license": "MIT"
+    },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/optionator": {
+      "version": "0.9.4",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+      "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "deep-is": "^0.1.3",
+        "fast-levenshtein": "^2.0.6",
+        "levn": "^0.4.1",
+        "prelude-ls": "^1.2.1",
+        "type-check": "^0.4.0",
+        "word-wrap": "^1.2.5"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "license": "MIT",
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse-json": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "license": "MIT"
+    },
+    "node_modules/path-type": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+      "license": "ISC"
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "8.5.3",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
+      "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "nanoid": "^3.3.8",
+        "picocolors": "^1.1.1",
+        "source-map-js": "^1.2.1"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/prelude-ls": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/prop-types": {
+      "version": "15.8.1",
+      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+      "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+      "license": "MIT",
+      "dependencies": {
+        "loose-envify": "^1.4.0",
+        "object-assign": "^4.1.1",
+        "react-is": "^16.13.1"
+      }
+    },
+    "node_modules/prop-types/node_modules/react-is": {
+      "version": "16.13.1",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+      "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+      "license": "MIT"
+    },
+    "node_modules/punycode": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/react": {
+      "version": "19.1.0",
+      "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
+      "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/react-dom": {
+      "version": "19.1.0",
+      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
+      "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
+      "license": "MIT",
+      "dependencies": {
+        "scheduler": "^0.26.0"
+      },
+      "peerDependencies": {
+        "react": "^19.1.0"
+      }
+    },
+    "node_modules/react-is": {
+      "version": "19.1.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz",
+      "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==",
+      "license": "MIT"
+    },
+    "node_modules/react-refresh": {
+      "version": "0.14.2",
+      "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
+      "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/react-transition-group": {
+      "version": "4.4.5",
+      "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+      "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
+      "license": "BSD-3-Clause",
+      "peer": true,
+      "dependencies": {
+        "@babel/runtime": "^7.5.5",
+        "dom-helpers": "^5.0.1",
+        "loose-envify": "^1.4.0",
+        "prop-types": "^15.6.2"
+      },
+      "peerDependencies": {
+        "react": ">=16.6.0",
+        "react-dom": ">=16.6.0"
+      }
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.14.1",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+      "license": "MIT"
+    },
+    "node_modules/resolve": {
+      "version": "1.22.10",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+      "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+      "license": "MIT",
+      "dependencies": {
+        "is-core-module": "^2.16.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/reusify": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+      "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rollup": {
+      "version": "4.38.0",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.38.0.tgz",
+      "integrity": "sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/estree": "1.0.7"
+      },
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=18.0.0",
+        "npm": ">=8.0.0"
+      },
+      "optionalDependencies": {
+        "@rollup/rollup-android-arm-eabi": "4.38.0",
+        "@rollup/rollup-android-arm64": "4.38.0",
+        "@rollup/rollup-darwin-arm64": "4.38.0",
+        "@rollup/rollup-darwin-x64": "4.38.0",
+        "@rollup/rollup-freebsd-arm64": "4.38.0",
+        "@rollup/rollup-freebsd-x64": "4.38.0",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.38.0",
+        "@rollup/rollup-linux-arm-musleabihf": "4.38.0",
+        "@rollup/rollup-linux-arm64-gnu": "4.38.0",
+        "@rollup/rollup-linux-arm64-musl": "4.38.0",
+        "@rollup/rollup-linux-loongarch64-gnu": "4.38.0",
+        "@rollup/rollup-linux-powerpc64le-gnu": "4.38.0",
+        "@rollup/rollup-linux-riscv64-gnu": "4.38.0",
+        "@rollup/rollup-linux-riscv64-musl": "4.38.0",
+        "@rollup/rollup-linux-s390x-gnu": "4.38.0",
+        "@rollup/rollup-linux-x64-gnu": "4.38.0",
+        "@rollup/rollup-linux-x64-musl": "4.38.0",
+        "@rollup/rollup-win32-arm64-msvc": "4.38.0",
+        "@rollup/rollup-win32-ia32-msvc": "4.38.0",
+        "@rollup/rollup-win32-x64-msvc": "4.38.0",
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "node_modules/scheduler": {
+      "version": "0.26.0",
+      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
+      "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
+      "license": "MIT"
+    },
+    "node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/source-map": {
+      "version": "0.5.7",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+      "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+      "dev": true,
+      "license": "BSD-3-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/stylis": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+      "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==",
+      "license": "MIT"
+    },
+    "node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/ts-api-utils": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+      "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18.12"
+      },
+      "peerDependencies": {
+        "typescript": ">=4.8.4"
+      }
+    },
+    "node_modules/type-check": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/typescript": {
+      "version": "5.7.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+      "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=14.17"
+      }
+    },
+    "node_modules/typescript-eslint": {
+      "version": "8.28.0",
+      "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.28.0.tgz",
+      "integrity": "sha512-jfZtxJoHm59bvoCMYCe2BM0/baMswRhMmYhy+w6VfcyHrjxZ0OJe0tGasydCpIpA+A/WIJhTyZfb3EtwNC/kHQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@typescript-eslint/eslint-plugin": "8.28.0",
+        "@typescript-eslint/parser": "8.28.0",
+        "@typescript-eslint/utils": "8.28.0"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/typescript-eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.9.0"
+      }
+    },
+    "node_modules/update-browserslist-db": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+      "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "escalade": "^3.2.0",
+        "picocolors": "^1.1.1"
+      },
+      "bin": {
+        "update-browserslist-db": "cli.js"
+      },
+      "peerDependencies": {
+        "browserslist": ">= 4.21.0"
+      }
+    },
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/vite": {
+      "version": "6.2.3",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.3.tgz",
+      "integrity": "sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "esbuild": "^0.25.0",
+        "postcss": "^8.5.3",
+        "rollup": "^4.30.1"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/vitejs/vite?sponsor=1"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.3"
+      },
+      "peerDependencies": {
+        "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+        "jiti": ">=1.21.0",
+        "less": "*",
+        "lightningcss": "^1.21.0",
+        "sass": "*",
+        "sass-embedded": "*",
+        "stylus": "*",
+        "sugarss": "*",
+        "terser": "^5.16.0",
+        "tsx": "^4.8.1",
+        "yaml": "^2.4.2"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "jiti": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "lightningcss": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "sass-embedded": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "terser": {
+          "optional": true
+        },
+        "tsx": {
+          "optional": true
+        },
+        "yaml": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/word-wrap": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+      "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+      "dev": true,
+      "license": "ISC"
+    },
+    "node_modules/yaml": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz",
+      "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==",
+      "dev": true,
+      "license": "ISC",
+      "optional": true,
+      "peer": true,
+      "bin": {
+        "yaml": "bin.mjs"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    }
+  }
+}
diff --git a/tranga-website/package.json b/tranga-website/package.json
new file mode 100644
index 0000000..a0ef580
--- /dev/null
+++ b/tranga-website/package.json
@@ -0,0 +1,34 @@
+{
+  "name": "tranga-website",
+  "private": true,
+  "version": "0.0.0",
+  "type": "module",
+  "scripts": {
+    "dev": "vite",
+    "build": "tsc -b && vite build",
+    "lint": "eslint .",
+    "preview": "vite preview"
+  },
+  "dependencies": {
+    "@emotion/react": "^11.14.0",
+    "@emotion/styled": "^11.14.0",
+    "@fontsource/inter": "^5.2.5",
+    "@mui/icons-material": "^7.0.1",
+    "@mui/joy": "^5.0.0-beta.52",
+    "react": "^19.0.0",
+    "react-dom": "^19.0.0"
+  },
+  "devDependencies": {
+    "@eslint/js": "^9.21.0",
+    "@types/react": "^19.0.10",
+    "@types/react-dom": "^19.0.4",
+    "@vitejs/plugin-react": "^4.3.4",
+    "eslint": "^9.21.0",
+    "eslint-plugin-react-hooks": "^5.1.0",
+    "eslint-plugin-react-refresh": "^0.4.19",
+    "globals": "^15.15.0",
+    "typescript": "~5.7.2",
+    "typescript-eslint": "^8.24.1",
+    "vite": "^6.2.0"
+  }
+}
diff --git a/tranga-website/public/blahaj.png b/tranga-website/public/blahaj.png
new file mode 100644
index 0000000000000000000000000000000000000000..dbbff934c85bbc6a8d317c975cf70d2229615a36
GIT binary patch
literal 126603
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
M07*qoM6N<$f<B1CzyJUM

literal 0
HcmV?d00001

diff --git a/tranga-website/src/App.css b/tranga-website/src/App.css
new file mode 100644
index 0000000..f4189d1
--- /dev/null
+++ b/tranga-website/src/App.css
@@ -0,0 +1,15 @@
+.app {
+  position: absolute;
+  height: 100%;
+  top: 0;
+  width: 100%;
+  left: 0;
+}
+
+.app-content {
+  position: absolute;
+  height: calc(100% - 60px);
+  top: 60px;
+  width: 100%;
+  left: 0;
+}
\ No newline at end of file
diff --git a/tranga-website/src/App.tsx b/tranga-website/src/App.tsx
new file mode 100644
index 0000000..7f2327b
--- /dev/null
+++ b/tranga-website/src/App.tsx
@@ -0,0 +1,31 @@
+import Sheet from '@mui/joy/Sheet';
+import './App.css'
+import Settings from "./Settings.tsx";
+import Header from "./Header.tsx";
+import {Button} from "@mui/joy";
+import {useState} from "react";
+import {ApiUriContext} from "./api/fetchApi.tsx";
+import Search from './Components/Search.tsx';
+
+export default function App () {
+
+    const [showSettings, setShowSettings] = useState<boolean>(false);
+    const [showSearch, setShowSearch] = useState<boolean>(false);
+
+    const [apiUri, setApiUri] = useState<string>(window.location.href.substring(0, window.location.href.lastIndexOf("/")));
+
+    return (
+        <ApiUriContext.Provider value={apiUri}>
+            <Sheet className={"app"}>
+                <Header>
+                    <Button onClick={() => setShowSettings(true)}>Settings</Button>
+                    <Button onClick={() => setShowSearch(true)}>Search</Button>
+                </Header>
+                <Settings open={showSettings} setOpen={setShowSettings} setApiUri={setApiUri}/>
+                <Sheet className={"app-content"}>
+                    <Search open={showSearch} setOpen={setShowSearch} />
+                </Sheet>
+            </Sheet>
+        </ApiUriContext.Provider>
+    );
+}
diff --git a/tranga-website/src/Components/AuthorTag.tsx b/tranga-website/src/Components/AuthorTag.tsx
new file mode 100644
index 0000000..b5a678c
--- /dev/null
+++ b/tranga-website/src/Components/AuthorTag.tsx
@@ -0,0 +1,23 @@
+import {Chip, ColorPaletteProp, Skeleton} from "@mui/joy";
+import {useContext, useEffect, useState} from "react";
+import {ApiUriContext} from "../api/fetchApi.tsx";
+import IAuthor from "../api/types/IAuthor.ts";
+import {GetAuthor} from "../api/Query.tsx";
+
+export default function AuthorTag({authorId, color} : { authorId: string | undefined, color?: ColorPaletteProp }) {
+    const useAuthor = authorId ?? "AuthorId";
+    const apiUri = useContext(ApiUriContext);
+
+    const [author, setAuthor] = useState<IAuthor>();
+    const [loading, setLoading] = useState<boolean>(true);
+
+    useEffect(() => {
+        GetAuthor(apiUri, useAuthor).then(setAuthor).finally(() => setLoading(false));
+    }, [authorId]);
+
+    return (
+        <Chip variant={"outlined"} size={"md"} color={color??"primary"}>
+            <Skeleton variant={"text"} loading={loading}>{author?.authorName ?? "Load Failed"}</Skeleton>
+        </Chip>
+    );
+}
\ No newline at end of file
diff --git a/tranga-website/src/Components/LinkTag.tsx b/tranga-website/src/Components/LinkTag.tsx
new file mode 100644
index 0000000..28d6329
--- /dev/null
+++ b/tranga-website/src/Components/LinkTag.tsx
@@ -0,0 +1,25 @@
+import {Chip, Skeleton, Link, ColorPaletteProp} from "@mui/joy";
+import {useContext, useEffect, useState} from "react";
+import {ApiUriContext} from "../api/fetchApi.tsx";
+import {GetLink} from "../api/Query.tsx";
+import ILink from "../api/types/ILink.ts";
+
+export default function LinkTag({linkId, color} : { linkId: string | undefined, color?: ColorPaletteProp }) {
+    const useLink = linkId ?? "LinkId";
+    const apiUri = useContext(ApiUriContext);
+
+    const [link, setLink] = useState<ILink>();
+    const [loading, setLoading] = useState<boolean>(true);
+
+    useEffect(() => {
+        GetLink(apiUri, useLink).then(setLink).finally(() => setLoading(false));
+    }, [linkId]);
+
+    return (
+        <Chip variant={"outlined"} size={"md"} color={color??"primary"}>
+            <Skeleton variant={"text"} loading={loading}>
+                <Link href={link?.linkUrl}>{link?.linkProvider??"Load Failed"}</Link>
+            </Skeleton>
+        </Chip>
+    );
+}
\ No newline at end of file
diff --git a/tranga-website/src/Components/Manga.tsx b/tranga-website/src/Components/Manga.tsx
new file mode 100644
index 0000000..cc53b0e
--- /dev/null
+++ b/tranga-website/src/Components/Manga.tsx
@@ -0,0 +1,132 @@
+import {
+    Badge,
+    Box,
+    Card,
+    CardActions,
+    CardContent, CardCover,
+    Chip, CircularProgress,
+    Input,
+    Link,
+    Skeleton,
+    Stack,
+    Typography
+} from "@mui/joy";
+import IManga, {DefaultManga} from "../api/types/IManga.ts";
+import {ReactElement, useCallback, useContext, useEffect, useState} from "react";
+import {GetLatestChapterAvailable, GetMangaCoverImageUrl, SetIgnoreThreshold} from "../api/Manga.tsx";
+import {ApiUriContext} from "../api/fetchApi.tsx";
+import AuthorTag from "./AuthorTag.tsx";
+import LinkTag from "./LinkTag.tsx";
+import {ReleaseStatusToPalette} from "../api/types/EnumMangaReleaseStatus.ts";
+import IChapter from "../api/types/IChapter.ts";
+import MarkdownPreview from "@uiw/react-markdown-preview";
+import {SxProps} from "@mui/joy/styles/types";
+
+export function Manga({manga, children} : { manga: IManga | undefined, children?: ReactElement<any, any> | ReactElement<any, any>[] | undefined }) {
+    const useManga = manga ?? DefaultManga;
+
+    const apiUri = useContext(ApiUriContext);
+
+    const [expanded, setExpanded] = useState(false);
+
+    const [mangaMaxChapter, setMangaMaxChapter] = useState<IChapter>();
+    const [maxChapterLoading, setMaxChapterLoading] = useState<boolean>(true);
+    const loadMaxChapter = useCallback(() => {
+        setMaxChapterLoading(true);
+        GetLatestChapterAvailable(apiUri, useManga.mangaId)
+            .then(setMangaMaxChapter)
+            .finally(() => setMaxChapterLoading(false));
+    }, [useManga, apiUri]);
+
+    const [updatingThreshold, setUpdatingThreshold] = useState<boolean>(false);
+    const updateIgnoreThreshhold = useCallback((value: number) => {
+        setUpdatingThreshold(true);
+        SetIgnoreThreshold(apiUri, useManga.mangaId, value).finally(() => setUpdatingThreshold(false));
+    },[useManga, apiUri])
+
+    useEffect(() => {
+        loadMaxChapter();
+    }, []);
+
+    const LoadMangaCover = useCallback((e : EventTarget & HTMLImageElement) => {
+        if(e.src != GetMangaCoverImageUrl(apiUri, useManga.mangaId, e))
+            e.src = GetMangaCoverImageUrl(apiUri, useManga.mangaId, e);
+    }, [useManga, apiUri])
+
+    const sideSx : SxProps = {
+        height: "400px",
+        width: "300px",
+        position: "relative",
+    }
+
+    const interactiveElements = ["button", "input", "textarea", "a"];
+
+    return (
+        <Badge badgeContent={useManga.mangaConnectorId} color={ReleaseStatusToPalette(useManga.releaseStatus)} size={"lg"}>
+            <Card sx={{height:"fit-content",width:"fit-content"}} onClick={(e) => {
+                const target = e.target as HTMLElement;
+                if(interactiveElements.find(x => x == target.localName) == undefined)
+                    setExpanded(!expanded)}
+            }>
+                <CardCover sx={{margin: "var(--Card-padding)"}}>
+                    <img style={{maxHeight:"100%",height:"400px",width:"300px"}} src="/blahaj.png" alt="Manga Cover"
+                         onLoad={(e) => LoadMangaCover(e.currentTarget)}
+                         onResize={(e) => LoadMangaCover(e.currentTarget)}/>
+                </CardCover>
+                <CardCover sx={{
+                    background:
+                        'linear-gradient(to bottom, rgba(0,0,0,0.4), rgba(0,0,0,0) 200px), linear-gradient(to bottom, rgba(0,0,0,0.8), rgba(0,0,0,0) 300px)',
+                }}/>
+                <CardContent sx={{display: "flex", alignItems: "center", flexFlow: "row nowrap"}}>
+                    <Box sx={sideSx}>
+                        <Link href={useManga.websiteUrl} level={"h1"} sx={{height:"min-content",width:"fit-content",color:"white",margin:"0 0 0 10px"}}>
+                            {useManga.name}
+                        </Link>
+                    </Box>
+                    {
+                        expanded ?
+                            <Box sx={sideSx}>
+                                <Stack direction={"row"} flexWrap={"wrap"} spacing={0.5}>
+                                    {useManga.authorIds.map(authorId => <AuthorTag key={authorId} authorId={authorId} color={"success"} />)}
+                                    {useManga.tags.map(tag => <Chip key={tag} variant={"outlined"} size={"md"} color={"primary"}>{tag}</Chip>)}
+                                    {useManga.linkIds.map(linkId => <LinkTag key={linkId} linkId={linkId} color={"danger"} />)}
+                                </Stack>
+                                <MarkdownPreview source={useManga.description} style={{backgroundColor: "transparent", color: "black"}} />
+                            </Box>
+                            : null
+                    }
+                </CardContent>
+                {
+                    expanded ?
+                        <CardActions sx={{justifyContent:"space-between"}}>
+                            <Input
+                                type={"number"}
+                                placeholder={"0.0"}
+                                startDecorator={
+                                <>
+                                    {
+                                        updatingThreshold ?
+                                            <CircularProgress color={"primary"} size={"sm"} />
+                                            : <Typography>Ch.</Typography>
+                                    }
+                                </>
+                                }
+                                endDecorator={
+                                    <Typography>
+                                        <Skeleton loading={maxChapterLoading}>
+                                            /{mangaMaxChapter?.chapterNumber??"Load Failed"}
+                                        </Skeleton>
+                                    </Typography>
+                                }
+                                sx={{width:"min-content"}}
+                                size={"md"}
+                                onChange={(e) => updateIgnoreThreshhold(e.currentTarget.valueAsNumber)}
+                            />
+                            {children}
+                        </CardActions>
+                        : null
+                }
+            </Card>
+        </Badge>
+    );
+}
\ No newline at end of file
diff --git a/tranga-website/src/Components/Search.tsx b/tranga-website/src/Components/Search.tsx
new file mode 100644
index 0000000..ab34ef1
--- /dev/null
+++ b/tranga-website/src/Components/Search.tsx
@@ -0,0 +1,142 @@
+import {
+    Avatar, Button, Chip,
+    Drawer,
+    Input,
+    ListItemDecorator,
+    Option,
+    Select,
+    SelectOption,
+    Skeleton, Stack,
+    Step,
+    StepIndicator,
+    Stepper, Typography
+} from "@mui/joy";
+import ModalClose from "@mui/joy/ModalClose";
+import IMangaConnector from "../api/types/IMangaConnector";
+import {useCallback, useContext, useEffect, useState} from "react";
+import {ApiUriContext} from "../api/fetchApi.tsx";
+import {GetAllConnectors} from "../api/MangaConnector.tsx";
+import IManga from "../api/types/IManga.ts";
+import {SearchNameOnConnector} from "../api/Search.tsx";
+import {Manga} from "./Manga.tsx";
+import Add from "@mui/icons-material/Add";
+import React from "react";
+import {CreateDownloadAvailableChaptersJob} from "../api/Job.tsx";
+
+export default function Search({open, setOpen}:{open:boolean, setOpen:React.Dispatch<React.SetStateAction<boolean>>}){
+
+    const [step, setStep] = useState<number>(1);
+
+    const apiUri = useContext(ApiUriContext);
+    const [mangaConnectors, setMangaConnectors] = useState<IMangaConnector[]>([]);
+    const [mangaConnectorsLoading, setMangaConnectorsLoading] = useState<boolean>(true);
+    const [selectedMangaConnector, setSelectedMangaConnector] = useState<IMangaConnector>();
+
+    useEffect(() => {
+        setMangaConnectorsLoading(true);
+        GetAllConnectors(apiUri).then(setMangaConnectors).finally(() => setMangaConnectorsLoading(false));
+    },[apiUri])
+
+    const [results, setResults] = useState<IManga[]>([]);
+    const [resultsLoading, setResultsLoading] = useState<boolean>(false);
+
+    const StartSearch = useCallback((mangaConnector : IMangaConnector | undefined, value: string)=>{
+        if(mangaConnector === undefined)
+            return;
+        setResults([]);
+        setResultsLoading(true);
+        SearchNameOnConnector(apiUri, mangaConnector.name, value).then(setResults).finally(() => setResultsLoading(false));
+    },[apiUri])
+
+    function renderValue(option: SelectOption<string> | null) {
+        if (!option) {
+            return null;
+        }
+
+        return (
+            <React.Fragment>
+                <ListItemDecorator>
+                    <Avatar size="sm" src={mangaConnectors.find((o) => o.name === option.value)?.iconUrl} />
+                </ListItemDecorator>
+                {option.label}
+            </React.Fragment>
+        );
+    }
+
+    return (
+        <Drawer size={"lg"} anchor={"right"} open={open} onClose={() => {
+            setStep(2);
+            setResults([]);
+            setOpen(false);
+        }}>
+            <ModalClose />
+            <Stepper orientation={"vertical"} sx={{ height: '100%', width: "calc(100% - 80px)", margin:"40px"}}>
+                <Step indicator={
+                    <StepIndicator variant="solid" color="primary">
+                        1
+                    </StepIndicator>}>
+                    <Skeleton loading={mangaConnectorsLoading}>
+                        <Select
+                            disabled={mangaConnectorsLoading || resultsLoading}
+                            placeholder={"Select Connector"}
+                            slotProps={{
+                                    listbox: {
+                                        sx: {
+                                            '--ListItemDecorator-size': '44px',
+                                        },
+                                    },
+                                }}
+                            sx={{ '--ListItemDecorator-size': '44px', minWidth: 240 }}
+                            renderValue={renderValue}
+                            onChange={(_e, newValue) => {
+                                setStep(2);
+                                setSelectedMangaConnector(mangaConnectors.find((o) => o.name === newValue));
+                            }}
+                            endDecorator={<Chip size={"sm"} color={"primary"}>{mangaConnectors.length}</Chip>}>
+                            {mangaConnectors?.map((connector: IMangaConnector) => ConnectorOption(connector))}
+                        </Select>
+                    </Skeleton>
+                </Step>
+                <Step indicator={
+                    <StepIndicator variant="solid" color="primary">
+                        2
+                    </StepIndicator>}>
+                    <Input disabled={step < 2 || resultsLoading} placeholder={"Name or Url " + (selectedMangaConnector ? selectedMangaConnector.baseUris[0] : "")} onKeyDown={(e) => {
+                        setStep(2);
+                        setResults([]);
+                        if(e.key === "Enter") {
+                            StartSearch(selectedMangaConnector, e.currentTarget.value);
+                        }
+                    }}/>
+                </Step>
+                <Step indicator={
+                    <StepIndicator variant="solid" color="primary">
+                        3
+                    </StepIndicator>}>
+                    <Typography>Results</Typography>
+                    <Skeleton loading={resultsLoading}>
+                        <Stack direction={"row"} spacing={1}>
+                            {results.map((result) =>
+                                <Manga key={result.mangaId} manga={result}>
+                                    <Button onClick={() => {
+                                        CreateDownloadAvailableChaptersJob(apiUri, result.mangaId, {localLibraryId: "",recurrenceTimeMs: 1000 * 60 * 60 * 3})
+                                    }} endDecorator={<Add />}>Watch</Button>
+                                </Manga>)}
+                        </Stack>
+                    </Skeleton>
+                </Step>
+            </Stepper>
+        </Drawer>
+    );
+}
+
+function ConnectorOption(connector: IMangaConnector){
+    return (
+        <Option key={connector.name} value={connector.name} sx={{position: "relative"}}>
+            <ListItemDecorator>
+                <Avatar size="sm" src={connector.iconUrl} />
+            </ListItemDecorator>
+            {connector.name}
+        </Option>
+    );
+}
\ No newline at end of file
diff --git a/tranga-website/src/Header.css b/tranga-website/src/Header.css
new file mode 100644
index 0000000..f03d6b0
--- /dev/null
+++ b/tranga-website/src/Header.css
@@ -0,0 +1,10 @@
+.header {
+    position: static !important;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 60px;
+    padding: 10px;
+    display: flex;
+    flex-flow: row nowrap;
+}
\ No newline at end of file
diff --git a/tranga-website/src/Header.tsx b/tranga-website/src/Header.tsx
new file mode 100644
index 0000000..0ccd651
--- /dev/null
+++ b/tranga-website/src/Header.tsx
@@ -0,0 +1,20 @@
+import Sheet from "@mui/joy/Sheet";
+import {Stack, Typography} from "@mui/joy";
+import {ReactElement} from "react";
+import './Header.css';
+
+export default function Header({children} : {children? : ReactElement<any, any> | ReactElement<any,any>[] | undefined}) : ReactElement {
+    return (
+        <Sheet className={"header"}>
+            <Stack direction={"row"}
+                   spacing={4}
+                   sx={{
+                       justifyContent: "flex-start",
+                       alignItems: "center",
+                   }}>
+                <Typography level={"h2"}>Tranga</Typography>
+                {children}
+            </Stack>
+        </Sheet>
+    );
+}
\ No newline at end of file
diff --git a/Website/modules/LibraryConnector.tsx b/tranga-website/src/Settings.css
similarity index 100%
rename from Website/modules/LibraryConnector.tsx
rename to tranga-website/src/Settings.css
diff --git a/tranga-website/src/Settings.tsx b/tranga-website/src/Settings.tsx
new file mode 100644
index 0000000..852537f
--- /dev/null
+++ b/tranga-website/src/Settings.tsx
@@ -0,0 +1,93 @@
+import Drawer from '@mui/joy/Drawer';
+import ModalClose from '@mui/joy/ModalClose';
+import {
+    Accordion,
+    AccordionDetails,
+    AccordionGroup,
+    AccordionSummary, CircularProgress, ColorPaletteProp,
+    DialogContent,
+    DialogTitle, Input
+} from "@mui/joy";
+import './Settings.css';
+import * as React from "react";
+import {useContext, useEffect, useState} from "react";
+import {ApiUriContext} from "./api/fetchApi.tsx";
+
+const checkConnection  = async (apiUri: string): Promise<boolean> =>{
+    return fetch(`${apiUri}/swagger/v2/swagger.json`,
+        {
+            method: 'GET',
+        })
+        .then((response) => {
+            if(!(response.ok && response.status == 200))
+                return false;
+            return response.json().then((json) => (json as {openapi:string}).openapi.match("[0-9]+(?:\.[0-9]+)+")?true:false).catch(() => false);
+        })
+        .catch(() => {
+            return false;
+        });
+}
+
+export default function Settings({open, setOpen, setApiUri}:{open:boolean, setOpen:React.Dispatch<React.SetStateAction<boolean>>, setApiUri:React.Dispatch<React.SetStateAction<string>>}) {
+
+    const apiUri = useContext(ApiUriContext);
+
+    const [apiUriColor, setApiUriColor] = useState<ColorPaletteProp>("neutral");
+    const timerRef = React.useRef<ReturnType<typeof setTimeout>>(undefined);
+
+    const [apiUriAccordionOpen, setApiUriAccordionOpen] = React.useState(true);
+    const [checking, setChecking] = useState(false);
+    useEffect(() => {
+        OnCheckConnection(apiUri);
+    }, []);
+
+    const apiUriChanged = (e : React.ChangeEvent<HTMLInputElement>) => {
+        clearTimeout(timerRef.current);
+        setApiUriColor("warning");
+        timerRef.current = setTimeout(() => {
+            OnCheckConnection(e.target.value);
+        }, 1000);
+    }
+
+    const OnCheckConnection = (uri: string) => {
+        setChecking(true);
+        checkConnection(uri)
+            .then((result) => {
+                setApiUriAccordionOpen(!result);
+                setApiUriColor(result ? "success" : "danger");
+                if(result)
+                    setApiUri(uri);
+            })
+            .finally(() => setChecking(false));
+    }
+
+    return (
+        <Drawer size={"md"} open={open} onClose={() => setOpen(false)}>
+            <ModalClose />
+            <DialogTitle>Settings</DialogTitle>
+            <DialogContent>
+                <AccordionGroup>
+                    <Accordion expanded={apiUriAccordionOpen} onChange={(_e, expanded) => setApiUriAccordionOpen(expanded)}>
+                        <AccordionSummary>ApiUri</AccordionSummary>
+                        <AccordionDetails>
+                            <Input
+                                disabled={checking}
+                                color={apiUriColor}
+                                placeholder={"http(s)://"}
+                                type={"url"}
+                                defaultValue={apiUri}
+                                onChange={apiUriChanged}
+                                onKeyDown={(e) => {
+                                    if(e.key === "Enter") {
+                                        clearTimeout(timerRef.current);
+                                        OnCheckConnection(e.currentTarget.value);
+                                    }
+                                }}
+                                endDecorator={(checking ? <CircularProgress color={apiUriColor} size={"sm"} /> : null)} />
+                        </AccordionDetails>
+                    </Accordion>
+                </AccordionGroup>
+            </DialogContent>
+        </Drawer>
+    );
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/BackendSettings.tsx b/tranga-website/src/api/BackendSettings.tsx
new file mode 100644
index 0000000..6a9cc34
--- /dev/null
+++ b/tranga-website/src/api/BackendSettings.tsx
@@ -0,0 +1,80 @@
+import {deleteData, getData, patchData} from './fetchApi.tsx';
+import IBackendSettings from "./types/IBackendSettings.ts";
+import IRequestLimits from "./types/IRequestLimits.ts";
+import {RequestLimitType} from "./types/EnumRequestLimitType.ts";
+
+export const GetSettings = async (apiUri: string) : Promise<IBackendSettings> => {
+    return await getData(`${apiUri}/v2/Settings`) as Promise<IBackendSettings>;
+}
+
+export const GetUserAgent = async (apiUri: string) : Promise<string> => {
+    return await getData(`${apiUri}/v2/Settings/UserAgent`) as Promise<string>;
+}
+
+export const UpdateUserAgent = async (apiUri: string, userAgent: string)=>  {
+    if(userAgent === undefined || userAgent === null)
+        return Promise.reject(`userAgent was not provided`);
+    return patchData(`${apiUri}/v2/Settings/UserAgent`, userAgent);
+}
+
+export const ResetUserAgent = async (apiUri: string) => {
+    return deleteData(`${apiUri}/v2/Settings/UserAgent`);
+}
+
+export const GetRequestLimits = async(apiUri: string) : Promise<IRequestLimits> => {
+    return await getData(`${apiUri}/v2/Settings/RequestLimits`) as Promise<IRequestLimits>;
+}
+
+export const ResetRequestLimits = async (apiUri: string) => {
+    return deleteData(`${apiUri}/v2/Settings/RequestLimits`);
+}
+
+export const UpdateRequestLimit = async (apiUri: string, requestType: RequestLimitType, value: number) => {
+    if(requestType === undefined || requestType === null || value === undefined || value === null)
+        return Promise.reject();
+    return patchData(`${apiUri}/v2/Settings/RequestLimits/${requestType}`, value);
+}
+
+export const ResetRequestLimit = async (apiUri: string, requestType: RequestLimitType) => {
+    if(requestType === undefined || requestType === null)
+        return Promise.reject("requestType was not provided");
+    return deleteData(`${apiUri}/v2/Settings/RequestLimits/${requestType}`);
+}
+
+export const GetImageCompressionValue = async (apiUri: string) : Promise<number> => {
+    return await getData(`${apiUri}/v2/Settings/ImageCompression`) as Promise<number>;
+}
+
+export const UpdateImageCompressionValue = async (apiUri: string, value: number) => {
+    if(value === undefined || value === null)
+        return Promise.reject("value was not provided");
+    return patchData(`${apiUri}/v2/Settings/ImageCompression`, value);
+}
+
+export const GetBWImageToggle = async (apiUri: string) : Promise<boolean> => {
+    return await getData(`${apiUri}/v2/Settings/BWImages`) as Promise<boolean>;
+}
+
+export const UpdateBWImageToggle = async (apiUri: string, value: boolean) => {
+    if(value === undefined || value === null)
+        return Promise.reject("value was not provided");
+    return patchData(`${apiUri}/v2/Settings/BWImages`, value);
+}
+
+export const GetAprilFoolsToggle = async (apiUri: string) : Promise<boolean> => {
+    return await getData(`${apiUri}/v2/Settings/AprilFoolsMode`) as Promise<boolean>;
+}
+
+export const UpdateAprilFoolsToggle = async (apiUri: string, value: boolean) => {
+    if(value === undefined || value === null)
+        return Promise.reject("value was not provided");
+    return patchData(`${apiUri}/v2/Settings/AprilFoolsMode`, value);
+}
+
+export const GetChapterNamingScheme = async (apiUri: string) : Promise<string> => {
+    return await getData(`${apiUri}/v2/Settings/ChapterNamingScheme`) as Promise<string>;
+}
+
+export const UpdateChapterNamingScheme = async (apiUri: string, value: string) => {
+    return patchData(`${apiUri}/v2/Settings/ChapterNamingScheme`, value);
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/Chapter.tsx b/tranga-website/src/api/Chapter.tsx
new file mode 100644
index 0000000..73792eb
--- /dev/null
+++ b/tranga-website/src/api/Chapter.tsx
@@ -0,0 +1,8 @@
+import {getData} from "./fetchApi.tsx";
+import IChapter from "./types/IChapter.ts";
+
+export const GetChapterFromId = async (apiUri: string, chapterId: string): Promise<IChapter> => {
+    if(chapterId === undefined || chapterId === null)
+        return Promise.reject(`chapterId was not provided`);
+    return await getData(`${apiUri}/v2/Query/Chapter/${chapterId}`) as Promise<IChapter>;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/Job.tsx b/tranga-website/src/api/Job.tsx
new file mode 100644
index 0000000..07a6a76
--- /dev/null
+++ b/tranga-website/src/api/Job.tsx
@@ -0,0 +1,97 @@
+import {deleteData, getData, patchData, postData, putData} from "./fetchApi";
+import IJob, {JobState, JobType} from "./types/Jobs/IJob";
+import IModifyJobRecord from "./types/records/IModifyJobRecord";
+import IDownloadAvailableJobsRecord from "./types/records/IDownloadAvailableJobsRecord.ts";
+
+export const GetAllJobs = async (apiUri: string) : Promise<IJob[]> => {
+    return await getData(`${apiUri}/v2/Job`) as Promise<IJob[]>;
+}
+
+export const GetJobsWithIds = async (apiUri: string, jobIds: string[]) : Promise<IJob[]> => {
+    if(jobIds === null || jobIds === undefined || jobIds.length === 0)
+        return Promise.reject("jobIds was not provided");
+    return await postData(`${apiUri}/v2/Job/WithIDs`, jobIds) as Promise<IJob[]>;
+}
+
+export const GetJobsInState = async (apiUri: string, state: JobState) : Promise<IJob[]> => {
+    if(state == null || state == undefined)
+        return Promise.reject("state was not provided");
+    return await getData(`${apiUri}/v2/Job/State/${state}`) as Promise<IJob[]>;
+}
+
+export const GetJobsWithType = async (apiUri: string, jobType: JobType) : Promise<IJob[]> => {
+    if(jobType == null || jobType == undefined) {
+        return Promise.reject("jobType was not provided");
+    }
+    return await getData(`${apiUri}/v2/Job/Type/${jobType}`) as Promise<IJob[]>;
+}
+
+export const GetJobsOfTypeAndWithState = async (apiUri: string, jobType: JobType, state: JobState) : Promise<IJob[]> => {
+    if(jobType == null || jobType == undefined)
+        return Promise.reject("jobType was not provided");
+    if(state == null || state == undefined)
+        return Promise.reject("state was not provided");
+    return await getData(`${apiUri}/v2/Job/TypeAndState/${jobType}/${state}`) as Promise<IJob[]>;
+}
+
+export const GetJob = async (apiUri: string, jobId: string) : Promise<IJob> => {
+    if(jobId === undefined || jobId === null || jobId.length < 1)
+        return Promise.reject("jobId was not provided");
+    return await getData(`${apiUri}/v2/Job/${jobId}`) as Promise<IJob>;
+}
+
+export const DeleteJob = async (apiUri: string, jobId: string) : Promise<void> => {
+    if(jobId === undefined || jobId === null || jobId.length < 1)
+        return Promise.reject("jobId was not provided");
+    return await deleteData(`${apiUri}/v2/Job/${jobId}`);
+}
+
+export const ModifyJob = async (apiUri: string, jobId: string, modifyData: IModifyJobRecord) : Promise<IJob> => {
+    if(jobId === undefined || jobId === null || jobId.length < 1)
+        return Promise.reject("jobId was not provided");
+    if(modifyData === undefined || modifyData === null)
+        return Promise.reject("modifyData was not provided");
+    return await patchData(`${apiUri}/v2/Job/${jobId}`, modifyData) as Promise<IJob>;
+}
+
+export const CreateDownloadAvailableChaptersJob = async (apiUri: string, mangaId: string, data: IDownloadAvailableJobsRecord) : Promise<string[]> => {
+    if(mangaId === undefined || mangaId === null || mangaId.length < 1)
+        return Promise.reject("mangaId was not provided");
+    if(data === undefined || data === null)
+        return Promise.reject("data was not provided");
+    return await putData(`${apiUri}/v2/Job/DownloadAvailableChaptersJob/${mangaId}`, data) as Promise<string[]>;
+}
+
+export const CreateDownloadSingleChapterJob = async (apiUri: string, chapterId: string) : Promise<string[]> => {
+    if(chapterId === undefined || chapterId === null || chapterId.length < 1)
+        return Promise.reject("chapterId was not provided");
+    return await putData(`${apiUri}/v2/Job/DownloadSingleChapterJob/${chapterId}`, {}) as Promise<string[]>;
+}
+
+export const CreateUpdateFilesJob = async (apiUri: string, mangaId: string) : Promise<string[]> => {
+    if(mangaId === undefined || mangaId === null || mangaId.length < 1)
+        return Promise.reject("mangaId was not provided");
+    return await putData(`${apiUri}/v2/Job/UpdateFilesJob/${mangaId}`, {}) as Promise<string[]>;
+}
+
+export const CreateUpdateAllFilesJob = async (apiUri: string) : Promise<string[]> => {
+    return await putData(`${apiUri}/v2/Job/UpdateAllFilesJob`, {}) as Promise<string[]>;
+}
+
+export const CreateUpdateMetadataJob = async (apiUri: string, mangaId: string) : Promise<string[]> => {
+    if(mangaId === undefined || mangaId === null || mangaId.length < 1)
+        return Promise.reject("mangaId was not provided");
+    return await putData(`${apiUri}/v2/Job/UpdateMetadataJob/${mangaId}`, {}) as Promise<string[]>;
+}
+
+export const CreateUpdateAllMetadataJob = async (apiUri: string) : Promise<string[]> => {
+    return await putData(`${apiUri}/v2/Job/UpdateAllMetadataJob`, {}) as Promise<string[]>;
+}
+
+export const StartJob = async (apiUri: string, jobId: string) : Promise<object> => {
+    return await postData(`${apiUri}/v2/Job/${jobId}/Start`, {});
+}
+
+export const StopJob = async (apiUri: string, jobId: string) : Promise<object> => {
+    return await postData(`${apiUri}/v2/Job/${jobId}/Stop`, {});
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/LocalLibrary.tsx b/tranga-website/src/api/LocalLibrary.tsx
new file mode 100644
index 0000000..95b659d
--- /dev/null
+++ b/tranga-website/src/api/LocalLibrary.tsx
@@ -0,0 +1,31 @@
+import ILocalLibrary from "./types/ILocalLibrary.ts";
+import {deleteData, getData, patchData, putData} from "./fetchApi.tsx";
+import INewLibraryRecord from "./types/records/INewLibraryRecord.ts";
+
+export const GetLibraries = async (apiUri: string) : Promise<ILocalLibrary[]> => {
+    return await getData(`${apiUri}/v2/LocalLibraries`) as Promise<ILocalLibrary[]>;
+}
+
+export const  GetLibrary = async (apiUri: string, libraryId: string) : Promise<ILocalLibrary> => {
+    return await getData(`${apiUri}/v2/LocalLibraries/${libraryId}`) as Promise<ILocalLibrary>;
+}
+
+export const  CreateLibrary = async (apiUri: string, data: INewLibraryRecord) : Promise<ILocalLibrary> => {
+    return await putData(`${apiUri}/v2/LocalLibraries`, data) as Promise<ILocalLibrary>
+}
+
+export const  DeleteLibrary = async (apiUri: string, libraryId: string) : Promise<void> => {
+    return await deleteData(`${apiUri}/v2/LocalLibraries/${libraryId}`);
+}
+
+export const  ChangeLibraryPath = async (apiUri: string, libraryId: string, newPath: string) : Promise<object> => {
+    return await patchData(`${apiUri}/v2/LocalLibraries/${libraryId}/ChangeBasePath`, newPath);
+}
+
+export const  ChangeLibraryName = async (apiUri: string, libraryId: string, newName: string) : Promise<object> => {
+    return await patchData(`${apiUri}/v2/LocalLibraries/${libraryId}/ChangeName`, newName);
+}
+
+export const  UpdateLibrary = async (apiUri: string, libraryId: string, record: INewLibraryRecord) : Promise<object> => {
+    return await patchData(`${apiUri}/v2/LocalLibraries/${libraryId}`, record);
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/Manga.tsx b/tranga-website/src/api/Manga.tsx
new file mode 100644
index 0000000..2a6d7bf
--- /dev/null
+++ b/tranga-website/src/api/Manga.tsx
@@ -0,0 +1,77 @@
+import {deleteData, getData, patchData, postData} from './fetchApi.tsx';
+import IManga from "./types/IManga.ts";
+import IChapter from "./types/IChapter.ts";
+
+export const GetAllManga = async (apiUri: string) : Promise<IManga[]> => {
+    return await getData(`${apiUri}/v2/Manga`) as Promise<IManga[]>;
+}
+
+export const GetMangaWithIds = async (apiUri: string, mangaIds: string[]) : Promise<IManga[]> => {
+    if(mangaIds === undefined || mangaIds === null || mangaIds.length < 1)
+        return Promise.reject("mangaIds was not provided");
+    return await postData(`${apiUri}/v2/Manga/WithIds`, mangaIds) as Promise<IManga[]>;
+}
+
+export const GetMangaById = async (apiUri: string, mangaId: string) : Promise<IManga> => {
+    if(mangaId === undefined || mangaId === null || mangaId.length < 1)
+        return Promise.reject("mangaId was not provided");
+    return await getData(`${apiUri}/v2/Manga/${mangaId}`) as Promise<IManga>;
+}
+
+export const DeleteManga = async (apiUri: string, mangaId: string) : Promise<void> => {
+    if(mangaId === undefined || mangaId === null || mangaId.length < 1)
+        return Promise.reject("mangaId was not provided");
+    return await deleteData(`${apiUri}/v2/Manga/${mangaId}`);
+}
+
+export const GetMangaCoverImageUrl = (apiUri: string, mangaId: string, ref: HTMLImageElement | undefined) : string => {
+    if(ref == null || ref == undefined)
+        return `${apiUri}/v2/Manga/${mangaId}/Cover?width=64&height=64`;
+    return `${apiUri}/v2/Manga/${mangaId}/Cover?width=${ref.clientWidth}&height=${ref.clientHeight}`;
+}
+
+export const GetChapters = async (apiUri: string, mangaId: string) : Promise<IChapter[]> => {
+    if(mangaId === undefined || mangaId === null || mangaId.length < 1)
+        return Promise.reject("mangaId was not provided");
+    return await getData(`${apiUri}/v2/Manga/${mangaId}/Chapters`) as Promise<IChapter[]>;
+}
+
+export const  GetDownloadedChapters = async (apiUri: string, mangaId: string) : Promise<IChapter[]> => {
+    if(mangaId === undefined || mangaId === null || mangaId.length < 1)
+        return Promise.reject("mangaId was not provided");
+    return await getData(`${apiUri}/v2/Manga/${mangaId}/Chapters/Downloaded`) as Promise<IChapter[]>;
+}
+
+export const  GetNotDownloadedChapters = async (apiUri: string, mangaId: string) : Promise<IChapter[]> => {
+    if(mangaId === undefined || mangaId === null || mangaId.length < 1)
+        return Promise.reject("mangaId was not provided");
+    return await getData(`${apiUri}/v2/Manga/${mangaId}/Chapters/NotDownloaded`) as Promise<IChapter[]>;
+}
+
+export const  GetLatestChapterAvailable = async (apiUri: string, mangaId: string) : Promise<IChapter> => {
+    if(mangaId === undefined || mangaId === null || mangaId.length < 1)
+        return Promise.reject("mangaId was not provided");
+    return await getData(`${apiUri}/v2/Manga/${mangaId}/Chapter/LatestAvailable`) as Promise<IChapter>;
+}
+
+export const  GetLatestChapterDownloaded = async (apiUri: string, mangaId: string) : Promise<IChapter> => {
+    if(mangaId === undefined || mangaId === null || mangaId.length < 1)
+        return Promise.reject("mangaId was not provided");
+    return await getData(`${apiUri}/v2/Manga/${mangaId}/Chapter/LatestDownloaded`) as Promise<IChapter>;
+}
+
+export const  SetIgnoreThreshold = async (apiUri: string, mangaId: string, chapterThreshold: number) : Promise<object> => {
+    if(mangaId === undefined || mangaId === null || mangaId.length < 1)
+        return Promise.reject("mangaId was not provided");
+    if(chapterThreshold === undefined || chapterThreshold === null)
+        return Promise.reject("chapterThreshold was not provided");
+    return await patchData(`${apiUri}/v2/Manga/${mangaId}/IgnoreChaptersBefore`, chapterThreshold);
+}
+
+export const  MoveFolder = async (apiUri: string, mangaId: string, newPath: string) : Promise<object> => {
+    if(mangaId === undefined || mangaId === null || mangaId.length < 1)
+        return Promise.reject("mangaId was not provided");
+    if(newPath === undefined || newPath === null || newPath.length < 1)
+        return Promise.reject("newPath was not provided");
+    return await postData(`${apiUri}/v2/Manga/{MangaId}/MoveFolder`, {newPath});
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/MangaConnector.tsx b/tranga-website/src/api/MangaConnector.tsx
new file mode 100644
index 0000000..00c9522
--- /dev/null
+++ b/tranga-website/src/api/MangaConnector.tsx
@@ -0,0 +1,22 @@
+import {getData, patchData} from './fetchApi.tsx';
+import IMangaConnector from "./types/IMangaConnector.ts";
+
+export const GetAllConnectors = async (apiUri: string) : Promise<IMangaConnector[]> => {
+    return await getData(`${apiUri}/v2/MangaConnector`) as Promise<IMangaConnector[]>
+}
+
+export const  GetEnabledConnectors = async (apiUri: string) : Promise<IMangaConnector[]> => {
+    return await getData(`${apiUri}/v2/MangaConnector/enabled`) as Promise<IMangaConnector[]>
+}
+
+export const  GetDisabledConnectors = async (apiUri: string) : Promise<IMangaConnector[]> => {
+    return await getData(`${apiUri}/v2/MangaConnector/disabled`) as Promise<IMangaConnector[]>
+}
+
+export const  SetConnectorEnabled = async (apiUri: string, connectorName: string, enabled: boolean) : Promise<object> => {
+    if(connectorName === undefined || connectorName === null || connectorName.length < 1)
+        return Promise.reject("connectorName was not provided");
+    if(enabled === undefined || enabled === null)
+        return Promise.reject("enabled was not provided");
+    return await patchData(`${apiUri}/v2/MangaConnector/${connectorName}/SetEnabled/${enabled}`, {});
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/NotificationConnector.tsx b/tranga-website/src/api/NotificationConnector.tsx
new file mode 100644
index 0000000..c789ac1
--- /dev/null
+++ b/tranga-website/src/api/NotificationConnector.tsx
@@ -0,0 +1,52 @@
+import {deleteData, getData, putData} from "./fetchApi.tsx";
+import INotificationConnector from "./types/INotificationConnector.ts";
+import IGotifyRecord from "./types/records/IGotifyRecord.ts";
+import INtfyRecord from "./types/records/INtfyRecord.ts";
+import ILunaseaRecord from "./types/records/ILunaseaRecord.ts";
+import IPushoverRecord from "./types/records/IPushoverRecord.ts";
+
+export const  GetNotificationConnectors = async (apiUri: string) : Promise<INotificationConnector[]> => {
+    return await getData(`${apiUri}/v2/NotificationConnector`) as Promise<INotificationConnector[]>
+}
+
+export const  CreateNotificationConnector = async (apiUri: string, newConnector: INotificationConnector) : Promise<string> => {
+    if(newConnector === undefined || newConnector === null)
+        return Promise.reject("newConnector was not provided");
+    return await putData(`${apiUri}/v2/NotificationConnector`, newConnector) as Promise<string>;
+}
+
+export const  GetNotificationConnectorWithId = async (apiUri: string, notificationConnectorId: string) : Promise<INotificationConnector> => {
+    if(notificationConnectorId === undefined || notificationConnectorId === null || notificationConnectorId.length < 1)
+        return Promise.reject("notificationConnectorId was not provided");
+    return await getData(`${apiUri}/v2/NotificationConnector/${notificationConnectorId}`) as Promise<INotificationConnector>;
+}
+
+export const  DeleteNotificationConnectorWithId = async (apiUri: string, notificationConnectorId: string) : Promise<void> => {
+    if(notificationConnectorId === undefined || notificationConnectorId === null || notificationConnectorId.length < 1)
+        return Promise.reject("notificationConnectorId was not provided");
+    return await deleteData(`${apiUri}/v2/NotificationConnector/${notificationConnectorId}`);
+}
+
+export const  CreateGotify = async (apiUri: string, gotify: IGotifyRecord) : Promise<string> => {
+    if(gotify === undefined || gotify === null)
+        return Promise.reject("gotify was not provided");
+    return await putData(`${apiUri}/v2/NotificationConnector/Gotify`, gotify) as Promise<string>;
+}
+
+export const  CreateNtfy = async (apiUri: string, ntfy: INtfyRecord) : Promise<string> => {
+    if(ntfy === undefined || ntfy === null)
+        return Promise.reject("gotify was not provided");
+    return await putData(`${apiUri}/v2/NotificationConnector/Ntfy`, ntfy) as Promise<string>;
+}
+
+export const  CreateLunasea = async (apiUri: string, lunasea: ILunaseaRecord) : Promise<string> => {
+    if(lunasea === undefined || lunasea === null)
+        return Promise.reject("lunasea was not provided");
+    return await putData(`${apiUri}/v2/NotificationConnector/Lunasea`, lunasea) as Promise<string>;
+}
+
+export const  CreatePushover = async (apiUri: string, pushover: IPushoverRecord) : Promise<string> => {
+    if(pushover === undefined || pushover === null)
+        return Promise.reject("pushover was not provided");
+    return await putData(`${apiUri}/v2/NotificationConnector/Pushover`, pushover) as Promise<string>;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/Query.tsx b/tranga-website/src/api/Query.tsx
new file mode 100644
index 0000000..d262ac5
--- /dev/null
+++ b/tranga-website/src/api/Query.tsx
@@ -0,0 +1,15 @@
+import IAuthor from "./types/IAuthor.ts";
+import {getData} from "./fetchApi.tsx";
+import ILink from "./types/ILink.ts";
+
+export const GetAuthor = async (apiUri: string, authorId: string) : Promise<IAuthor> => {
+    if(authorId === undefined || authorId === null || authorId.length < 1)
+        return Promise.reject("authorId was not provided");
+    return await getData(`${apiUri}/v2/Query/Author/${authorId}`) as Promise<IAuthor>;
+}
+
+export const GetLink = async (apiUri: string, linkId: string) : Promise<ILink> => {
+    if(linkId === undefined || linkId === null || linkId.length < 1)
+        return Promise.reject("linkId was not provided");
+    return await getData(`${apiUri}/v2/Query/Link/${linkId}`) as Promise<ILink>;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/Search.tsx b/tranga-website/src/api/Search.tsx
new file mode 100644
index 0000000..1ca2372
--- /dev/null
+++ b/tranga-website/src/api/Search.tsx
@@ -0,0 +1,22 @@
+import {postData} from "./fetchApi.tsx";
+import IManga from "./types/IManga.ts";
+
+export const SearchName = async (apiUri: string, name: string) : Promise<IManga[]> => {
+    if(name === undefined || name === null || name.length < 1)
+        return Promise.reject("name was not provided");
+    return await postData(`${apiUri}/v2/Search/Name`, name) as Promise<IManga[]>;
+}
+
+export const SearchNameOnConnector = async (apiUri: string, connectorName: string, name: string) : Promise<IManga[]> => {
+    if(connectorName === undefined || connectorName === null || connectorName.length < 1)
+        return Promise.reject("connectorName was not provided");
+    if(name === undefined || name === null || name.length < 1)
+        return Promise.reject("name was not provided");
+    return await postData(`${apiUri}/v2/Search/${connectorName}`, name) as Promise<IManga[]>;
+}
+
+export const SearchUrl = async (apiUri: string, url: string) : Promise<IManga> => {
+    if(url === undefined || url === null || url.length < 1)
+        return Promise.reject("name was not provided");
+    return await postData(`${apiUri}/v2/Search/Url`, url) as Promise<IManga>;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/fetchApi.tsx b/tranga-website/src/api/fetchApi.tsx
new file mode 100644
index 0000000..96c2a45
--- /dev/null
+++ b/tranga-website/src/api/fetchApi.tsx
@@ -0,0 +1,80 @@
+import {createContext} from "react";
+
+export const ApiUriContext = createContext<string>("");
+
+export function getData(uri: string) : Promise<object> {
+    return makeRequest("GET", uri, null) as Promise<object>;
+}
+
+export function postData(uri: string, content: object | string | number | boolean) : Promise<object> {
+    return makeRequest("POST", uri, content) as Promise<object>;
+}
+
+export function deleteData(uri: string) : Promise<void> {
+    return makeRequest("DELETE", uri, null) as Promise<void>;
+}
+
+export function patchData(uri: string, content: object | string | number | boolean) : Promise<object> {
+    return makeRequest("patch", uri, content) as Promise<object>;
+}
+
+export function putData(uri: string, content: object | string | number | boolean) : Promise<object> {
+    return makeRequest("PUT", uri, content) as Promise<object>;
+}
+
+let currentlyRequestedEndpoints: string[] = [];
+function makeRequest(method: string, uri: string, content: object | string | number | null | boolean) : Promise<object | void> {
+    const id = method + uri;
+    if(currentlyRequestedEndpoints.find(x => x == id) != undefined)
+        return Promise.reject(`Already requested: ${method} ${uri}`);
+    currentlyRequestedEndpoints.push(id);
+    return fetch(uri,
+        {
+            method: method,
+            headers : {
+                'Content-Type': 'application/json',
+                'Accept': 'application/json'
+            },
+            body: content ? JSON.stringify(content) : null
+        })
+        .then(function(response){
+            if(!response.ok){
+                if(response.status === 503){
+                    currentlyRequestedEndpoints.splice(currentlyRequestedEndpoints.indexOf(id), 1)
+                    let retryHeaderVal = response.headers.get("Retry-After");
+                    let seconds = 10;
+                    if(retryHeaderVal === null){
+                        return response.text().then(text => {
+                            seconds = parseInt(text);
+                            return new Promise(resolve => setTimeout(resolve, seconds * 1000))
+                                .then(() => {
+                                    return makeRequest(method, uri, content);
+                                });
+                        });
+                    }else {
+                        seconds = parseInt(retryHeaderVal);
+                        return new Promise(resolve => setTimeout(resolve, seconds * 1000))
+                            .then(() => {
+                                return makeRequest(method, uri, content);
+                            });
+                    }
+                }else
+                    throw new Error(response.statusText);
+            }
+            let json = response.json();
+            return json.then((json) => json).catch(() => null);
+        })
+        .catch(function(err : Error){
+            console.error(`Error ${method}ing Data ${uri}\n${err}`);
+            return Promise.reject();
+        }).finally(() => currentlyRequestedEndpoints.splice(currentlyRequestedEndpoints.indexOf(id), 1));
+}
+
+export function isValidUri(uri: string) : boolean{
+    try {
+        new URL(uri);
+        return true;
+    } catch (err) {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/EnumLibraryType.ts b/tranga-website/src/api/types/EnumLibraryType.ts
new file mode 100644
index 0000000..5665b04
--- /dev/null
+++ b/tranga-website/src/api/types/EnumLibraryType.ts
@@ -0,0 +1,4 @@
+export enum LibraryType {
+    Komga = "Komga",
+    Kavita = "Kavita"
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/EnumMangaReleaseStatus.ts b/tranga-website/src/api/types/EnumMangaReleaseStatus.ts
new file mode 100644
index 0000000..586062b
--- /dev/null
+++ b/tranga-website/src/api/types/EnumMangaReleaseStatus.ts
@@ -0,0 +1,24 @@
+import {ColorPaletteProp} from "@mui/joy";
+
+export enum MangaReleaseStatus {
+    Continuing = "Continuing",
+    Completed = "Completed",
+    OnHiatus = "OnHiatus",
+    Cancelled = "Cancelled",
+    Unreleased = "Unreleased",
+}
+
+export function ReleaseStatusToPalette(status: MangaReleaseStatus): ColorPaletteProp {
+    switch (status) {
+        case MangaReleaseStatus.Continuing:
+            return "success";
+        case MangaReleaseStatus.Completed:
+            return "primary";
+        case MangaReleaseStatus.Cancelled:
+            return "danger";
+        case MangaReleaseStatus.Unreleased:
+            return "neutral";
+        case MangaReleaseStatus.OnHiatus:
+            return "warning";
+    }
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/EnumRequestLimitType.ts b/tranga-website/src/api/types/EnumRequestLimitType.ts
new file mode 100644
index 0000000..c742b5f
--- /dev/null
+++ b/tranga-website/src/api/types/EnumRequestLimitType.ts
@@ -0,0 +1,8 @@
+export enum RequestLimitType {
+    Default = "Default",
+    MangaDexFeed = "MangaDexFeed",
+    MangaImage = "MangaImage",
+    MangaCover = "MangaCover",
+    MangaDexImage = "MangaDexImage",
+    MangaInfo = "MangaInfo"
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/IAuthor.ts b/tranga-website/src/api/types/IAuthor.ts
new file mode 100644
index 0000000..2b54e17
--- /dev/null
+++ b/tranga-website/src/api/types/IAuthor.ts
@@ -0,0 +1,4 @@
+export default interface IAuthor {
+    authorId: string;
+    authorName: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/IBackendSettings.ts b/tranga-website/src/api/types/IBackendSettings.ts
new file mode 100644
index 0000000..ffbdaca
--- /dev/null
+++ b/tranga-website/src/api/types/IBackendSettings.ts
@@ -0,0 +1,18 @@
+export default interface IBackendSettings {
+    downloadLocation: string;
+    workingDirectory: string;
+    userAgent: string;
+    aprilFoolsMode: boolean;
+    requestLimits: {
+        Default: number,
+        MangaInfo: number,
+        MangaDexFeed: number,
+        MangaDexImage: number,
+        MangaImage: number,
+        MangaCover: number,
+    };
+    compression: number;
+    bwImages: boolean;
+    startNewJobTimeoutMs: number;
+    chapterNamingScheme: string;
+}
diff --git a/tranga-website/src/api/types/IChapter.ts b/tranga-website/src/api/types/IChapter.ts
new file mode 100644
index 0000000..e255ff6
--- /dev/null
+++ b/tranga-website/src/api/types/IChapter.ts
@@ -0,0 +1,10 @@
+export default interface IChapter{
+    chapterId: string;
+    volumeNumber: number;
+    chapterNumber: string;
+    url: string;
+    title: string | undefined;
+    archiveFileName: string;
+    downloaded: boolean;
+    parentMangaId: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/IFrontendSettings.ts b/tranga-website/src/api/types/IFrontendSettings.ts
new file mode 100644
index 0000000..2c1c7c5
--- /dev/null
+++ b/tranga-website/src/api/types/IFrontendSettings.ts
@@ -0,0 +1,4 @@
+export default interface IFrontendSettings {
+    jobInterval: Date;
+    apiUri: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/ILibraryConnector.ts b/tranga-website/src/api/types/ILibraryConnector.ts
new file mode 100644
index 0000000..7e2322e
--- /dev/null
+++ b/tranga-website/src/api/types/ILibraryConnector.ts
@@ -0,0 +1,8 @@
+import {LibraryType} from "./EnumLibraryType";
+
+export default interface ILibraryConnector {
+    libraryConnectorId: string;
+    libraryType: LibraryType;
+    baseUrl: string;
+    auth: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/ILink.ts b/tranga-website/src/api/types/ILink.ts
new file mode 100644
index 0000000..9a26546
--- /dev/null
+++ b/tranga-website/src/api/types/ILink.ts
@@ -0,0 +1,5 @@
+export default interface ILink {
+    linkId: string;
+    linkProvider: string;
+    linkUrl: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/ILocalLibrary.ts b/tranga-website/src/api/types/ILocalLibrary.ts
new file mode 100644
index 0000000..11f2bbc
--- /dev/null
+++ b/tranga-website/src/api/types/ILocalLibrary.ts
@@ -0,0 +1,5 @@
+export default interface ILocalLibrary {
+    localLibraryId: string;
+    basePath: string;
+    libraryName: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/IManga.ts b/tranga-website/src/api/types/IManga.ts
new file mode 100644
index 0000000..68daa53
--- /dev/null
+++ b/tranga-website/src/api/types/IManga.ts
@@ -0,0 +1,37 @@
+import {MangaReleaseStatus} from "./EnumMangaReleaseStatus";
+
+export default interface IManga{
+    mangaId: string;
+    idOnConnectorSite: string;
+    name: string;
+    description: string;
+    websiteUrl: string;
+    year: number;
+    originalLanguage: string;
+    releaseStatus: MangaReleaseStatus;
+    folderName: string;
+    ignoreChapterBefore: number;
+    mangaConnectorId: string;
+    authorIds: string[];
+    tags: string[];
+    linkIds: string[];
+    altTitleIds: string[];
+}
+
+export const DefaultManga : IManga = {
+    mangaId: "MangaId",
+    idOnConnectorSite: "ID",
+    name: "TestManga",
+    description: "Wow so much text, very cool",
+    websiteUrl: "https://realsite.realdomain",
+    year: 1999,
+    originalLanguage: "lindtChoccy",
+    releaseStatus: MangaReleaseStatus.Continuing,
+    folderName: "uhhh",
+    ignoreChapterBefore: 0,
+    mangaConnectorId: "MangaDex",
+    authorIds: ["We got", "Authors"],
+    tags: ["And we", "got Tags"],
+    linkIds: ["And most", "definitely", "links"],
+    altTitleIds: ["But not alt-titles."],
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/IMangaAltTitle.ts b/tranga-website/src/api/types/IMangaAltTitle.ts
new file mode 100644
index 0000000..2526df4
--- /dev/null
+++ b/tranga-website/src/api/types/IMangaAltTitle.ts
@@ -0,0 +1,5 @@
+export default interface IMangaAltTitle {
+    altTitleId: string;
+    language: string;
+    title: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/IMangaConnector.ts b/tranga-website/src/api/types/IMangaConnector.ts
new file mode 100644
index 0000000..61fb457
--- /dev/null
+++ b/tranga-website/src/api/types/IMangaConnector.ts
@@ -0,0 +1,7 @@
+export default interface IMangaConnector {
+    name: string;
+    supportedLanguages: string[];
+    iconUrl: string;
+    baseUris: string[];
+    enabled: boolean;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/INotificationConnector.ts b/tranga-website/src/api/types/INotificationConnector.ts
new file mode 100644
index 0000000..8d2b765
--- /dev/null
+++ b/tranga-website/src/api/types/INotificationConnector.ts
@@ -0,0 +1,7 @@
+export default interface INotificationConnector {
+    name: string;
+    url: string;
+    headers: Record<string, string>[];
+    httpMethod: string;
+    body: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/IRequestLimits.ts b/tranga-website/src/api/types/IRequestLimits.ts
new file mode 100644
index 0000000..54a00ec
--- /dev/null
+++ b/tranga-website/src/api/types/IRequestLimits.ts
@@ -0,0 +1,8 @@
+export default interface IRequestLimits {
+    Default: number;
+    MangaDexFeed: number;
+    MangaImage: number;
+    MangaCover: number;
+    MangaDexImage: number;
+    MangaInfo: number;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/Jobs/IDownloadAvailableChaptersJob.ts b/tranga-website/src/api/types/Jobs/IDownloadAvailableChaptersJob.ts
new file mode 100644
index 0000000..66c5104
--- /dev/null
+++ b/tranga-website/src/api/types/Jobs/IDownloadAvailableChaptersJob.ts
@@ -0,0 +1,5 @@
+import IJob from "./IJob";
+
+export default interface IDownloadAvailableChaptersJob extends IJob {
+    mangaId: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/Jobs/IDownloadMangaCoverJob.ts b/tranga-website/src/api/types/Jobs/IDownloadMangaCoverJob.ts
new file mode 100644
index 0000000..42d4350
--- /dev/null
+++ b/tranga-website/src/api/types/Jobs/IDownloadMangaCoverJob.ts
@@ -0,0 +1,5 @@
+import IJob from "./IJob";
+
+export default interface IDownloadMangaCoverJob extends IJob {
+    mangaId: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/Jobs/IDownloadSingleChapterJob.ts b/tranga-website/src/api/types/Jobs/IDownloadSingleChapterJob.ts
new file mode 100644
index 0000000..c4b3b8b
--- /dev/null
+++ b/tranga-website/src/api/types/Jobs/IDownloadSingleChapterJob.ts
@@ -0,0 +1,5 @@
+import IJob from "./IJob";
+
+export default interface IDownloadSingleChapterJob extends IJob {
+    chapterId: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/Jobs/IJob.ts b/tranga-website/src/api/types/Jobs/IJob.ts
new file mode 100644
index 0000000..a23e08d
--- /dev/null
+++ b/tranga-website/src/api/types/Jobs/IJob.ts
@@ -0,0 +1,29 @@
+export default interface IJob{
+    jobId: string;
+    parentJobId: string;
+    dependsOnJobIds: string[];
+    jobType: JobType;
+    recurrenceMs: number;
+    lastExecution: Date;
+    nextExecution: Date;
+    state: JobState;
+    enabled: boolean;
+}
+
+export enum JobType {
+    DownloadSingleChapterJob = "DownloadSingleChapterJob",
+    DownloadAvailableChaptersJob = "DownloadAvailableChaptersJob",
+    UpdateMetaDataJob = "UpdateMetaDataJob",
+    MoveFileOrFolderJob = "MoveFileOrFolderJob",
+    DownloadMangaCoverJob = "DownloadMangaCoverJob",
+    RetrieveChaptersJob = "RetrieveChaptersJob",
+    UpdateFilesDownloadedJob = "UpdateFilesDownloadedJob",
+    MoveMangaLibraryJob = "MoveMangaLibraryJob"
+}
+
+export enum JobState {
+    Waiting = "Waiting",
+    Running = "Running",
+    Completed = "Completed",
+    Failed = "Failed"
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/Jobs/IMoveFileOrFolderJob.ts b/tranga-website/src/api/types/Jobs/IMoveFileOrFolderJob.ts
new file mode 100644
index 0000000..9daa55c
--- /dev/null
+++ b/tranga-website/src/api/types/Jobs/IMoveFileOrFolderJob.ts
@@ -0,0 +1,6 @@
+import IJob from "./IJob";
+
+export default interface IMoveFileOrFolderJob extends IJob {
+    fromLocation: string;
+    toLocation: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/Jobs/IMoveMangaLibraryJob.ts b/tranga-website/src/api/types/Jobs/IMoveMangaLibraryJob.ts
new file mode 100644
index 0000000..102646b
--- /dev/null
+++ b/tranga-website/src/api/types/Jobs/IMoveMangaLibraryJob.ts
@@ -0,0 +1,6 @@
+import IJob from "./IJob";
+
+export default interface IMoveMangaLibraryJob extends IJob {
+    MangaId: string;
+    ToLibraryId: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/Jobs/IRetrieveChaptersJob.ts b/tranga-website/src/api/types/Jobs/IRetrieveChaptersJob.ts
new file mode 100644
index 0000000..2cadeb3
--- /dev/null
+++ b/tranga-website/src/api/types/Jobs/IRetrieveChaptersJob.ts
@@ -0,0 +1,5 @@
+import IJob from "./IJob";
+
+export default interface IRetrieveChaptersJob extends IJob {
+    mangaId: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/Jobs/IUpdateFilesDownloadedJob.ts b/tranga-website/src/api/types/Jobs/IUpdateFilesDownloadedJob.ts
new file mode 100644
index 0000000..8fc2516
--- /dev/null
+++ b/tranga-website/src/api/types/Jobs/IUpdateFilesDownloadedJob.ts
@@ -0,0 +1,5 @@
+import IJob from "./IJob";
+
+export default interface IUpdateFilesDownloadedJob extends IJob {
+    mangaId: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/Jobs/IUpdateMetadataJob.ts b/tranga-website/src/api/types/Jobs/IUpdateMetadataJob.ts
new file mode 100644
index 0000000..9464666
--- /dev/null
+++ b/tranga-website/src/api/types/Jobs/IUpdateMetadataJob.ts
@@ -0,0 +1,5 @@
+import IJob from "./IJob";
+
+export default interface IUpdateMetadataJob extends IJob {
+    mangaId: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/records/IDownloadAvailableJobsRecord.ts b/tranga-website/src/api/types/records/IDownloadAvailableJobsRecord.ts
new file mode 100644
index 0000000..f8f3402
--- /dev/null
+++ b/tranga-website/src/api/types/records/IDownloadAvailableJobsRecord.ts
@@ -0,0 +1,4 @@
+export default interface IDownloadAvailableJobsRecord {
+    recurrenceTimeMs: number;
+    localLibraryId: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/records/IGotifyRecord.ts b/tranga-website/src/api/types/records/IGotifyRecord.ts
new file mode 100644
index 0000000..9ff6869
--- /dev/null
+++ b/tranga-website/src/api/types/records/IGotifyRecord.ts
@@ -0,0 +1,7 @@
+import "../../../styles/notificationConnector.css";
+
+export default interface IGotifyRecord {
+    endpoint: string;
+    appToken: string;
+    priority: number;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/records/ILunaseaRecord.ts b/tranga-website/src/api/types/records/ILunaseaRecord.ts
new file mode 100644
index 0000000..481abc8
--- /dev/null
+++ b/tranga-website/src/api/types/records/ILunaseaRecord.ts
@@ -0,0 +1,5 @@
+import "../../../styles/notificationConnector.css";
+
+export default interface ILunaseaRecord {
+    id: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/records/IModifyJobRecord.ts b/tranga-website/src/api/types/records/IModifyJobRecord.ts
new file mode 100644
index 0000000..3241c9a
--- /dev/null
+++ b/tranga-website/src/api/types/records/IModifyJobRecord.ts
@@ -0,0 +1,4 @@
+export default interface IModifyJobRecord {
+    recurrenceMs: number;
+    enabled: boolean;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/records/INewLibraryRecord.ts b/tranga-website/src/api/types/records/INewLibraryRecord.ts
new file mode 100644
index 0000000..59a764b
--- /dev/null
+++ b/tranga-website/src/api/types/records/INewLibraryRecord.ts
@@ -0,0 +1,12 @@
+export default interface INewLibraryRecord {
+    path: string;
+    name: string;
+}
+
+export function Validate(record: INewLibraryRecord) : boolean {
+    if(record.path.length < 1)
+        return false;
+    if(record.name.length < 1)
+        return false;
+    return true;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/records/INtfyRecord.ts b/tranga-website/src/api/types/records/INtfyRecord.ts
new file mode 100644
index 0000000..6470347
--- /dev/null
+++ b/tranga-website/src/api/types/records/INtfyRecord.ts
@@ -0,0 +1,9 @@
+import "../../../styles/notificationConnector.css";
+
+export default interface INtfyRecord {
+    endpoint: string;
+    username: string;
+    password: string;
+    topic: string;
+    priority: number;
+}
\ No newline at end of file
diff --git a/tranga-website/src/api/types/records/IPushoverRecord.ts b/tranga-website/src/api/types/records/IPushoverRecord.ts
new file mode 100644
index 0000000..bdca0b7
--- /dev/null
+++ b/tranga-website/src/api/types/records/IPushoverRecord.ts
@@ -0,0 +1,6 @@
+import "../../../styles/notificationConnector.css";
+
+export default interface IPushoverRecord {
+    apptoken: string;
+    user: string;
+}
\ No newline at end of file
diff --git a/tranga-website/src/index.css b/tranga-website/src/index.css
new file mode 100644
index 0000000..e69de29
diff --git a/tranga-website/src/main.tsx b/tranga-website/src/main.tsx
new file mode 100644
index 0000000..f585b6c
--- /dev/null
+++ b/tranga-website/src/main.tsx
@@ -0,0 +1,28 @@
+import { createRoot } from 'react-dom/client'
+import './index.css'
+import App from './App.tsx'
+// @ts-ignore
+import '@fontsource/inter';
+import { CssVarsProvider } from '@mui/joy/styles';
+import CssBaseline from '@mui/joy/CssBaseline';
+import {StrictMode} from "react";
+
+export default function MyApp() {
+    return (
+        <StrictMode>
+            <CssVarsProvider>
+                {/* must be used under CssVarsProvider */}
+                <CssBaseline />
+
+                {/* The rest of your application */}
+                <App />
+            </CssVarsProvider>
+        </StrictMode>
+    );
+}
+
+
+
+createRoot(document.getElementById('root')!).render(
+    <MyApp />
+);
diff --git a/tranga-website/src/vite-env.d.ts b/tranga-website/src/vite-env.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/tranga-website/src/vite-env.d.ts
@@ -0,0 +1 @@
+/// <reference types="vite/client" />
diff --git a/tranga-website/tsconfig.app.json b/tranga-website/tsconfig.app.json
new file mode 100644
index 0000000..358ca9b
--- /dev/null
+++ b/tranga-website/tsconfig.app.json
@@ -0,0 +1,26 @@
+{
+  "compilerOptions": {
+    "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+    "target": "ES2020",
+    "useDefineForClassFields": true,
+    "lib": ["ES2020", "DOM", "DOM.Iterable"],
+    "module": "ESNext",
+    "skipLibCheck": true,
+
+    /* Bundler mode */
+    "moduleResolution": "bundler",
+    "allowImportingTsExtensions": true,
+    "isolatedModules": true,
+    "moduleDetection": "force",
+    "noEmit": true,
+    "jsx": "react-jsx",
+
+    /* Linting */
+    "strict": true,
+    "noUnusedLocals": true,
+    "noUnusedParameters": true,
+    "noFallthroughCasesInSwitch": true,
+    "noUncheckedSideEffectImports": true
+  },
+  "include": ["src"]
+}
diff --git a/tranga-website/tsconfig.json b/tranga-website/tsconfig.json
new file mode 100644
index 0000000..1ffef60
--- /dev/null
+++ b/tranga-website/tsconfig.json
@@ -0,0 +1,7 @@
+{
+  "files": [],
+  "references": [
+    { "path": "./tsconfig.app.json" },
+    { "path": "./tsconfig.node.json" }
+  ]
+}
diff --git a/tranga-website/tsconfig.node.json b/tranga-website/tsconfig.node.json
new file mode 100644
index 0000000..db0becc
--- /dev/null
+++ b/tranga-website/tsconfig.node.json
@@ -0,0 +1,24 @@
+{
+  "compilerOptions": {
+    "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+    "target": "ES2022",
+    "lib": ["ES2023"],
+    "module": "ESNext",
+    "skipLibCheck": true,
+
+    /* Bundler mode */
+    "moduleResolution": "bundler",
+    "allowImportingTsExtensions": true,
+    "isolatedModules": true,
+    "moduleDetection": "force",
+    "noEmit": true,
+
+    /* Linting */
+    "strict": true,
+    "noUnusedLocals": true,
+    "noUnusedParameters": true,
+    "noFallthroughCasesInSwitch": true,
+    "noUncheckedSideEffectImports": true
+  },
+  "include": ["vite.config.ts"]
+}
diff --git a/tranga-website/vite.config.ts b/tranga-website/vite.config.ts
new file mode 100644
index 0000000..8b0f57b
--- /dev/null
+++ b/tranga-website/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import react from '@vitejs/plugin-react'
+
+// https://vite.dev/config/
+export default defineConfig({
+  plugins: [react()],
+})