diff --git a/src/lib/Setting/Pages/DisplaySettings.svelte b/src/lib/Setting/Pages/DisplaySettings.svelte
index dcec447d..213cae86 100644
--- a/src/lib/Setting/Pages/DisplaySettings.svelte
+++ b/src/lib/Setting/Pages/DisplaySettings.svelte
@@ -8,7 +8,8 @@
import SelectInput from "src/lib/UI/GUI/SelectInput.svelte";
import OptionInput from "src/lib/UI/GUI/OptionInput.svelte";
import { updateAnimationSpeed } from "src/ts/gui/animation";
- import { changeColorScheme, colorSchemeList, updateColorScheme, updateTextTheme } from "src/ts/gui/colorscheme";
+ import { changeColorScheme, colorSchemeList, exportColorScheme, importColorScheme, updateColorScheme, updateTextTheme } from "src/ts/gui/colorscheme";
+ import { DownloadIcon, FolderUpIcon } from "lucide-svelte";
const onSchemeInputChange = (e:Event) => {
changeColorScheme((e.target as HTMLInputElement).value)
@@ -44,6 +45,7 @@
{#if $DataBase.colorSchemeName === "custom"}
+
Light
Dark
@@ -84,6 +86,19 @@
Text Color 2
+
+
+
+
+
{/if}
{language.textColor}
diff --git a/src/ts/gui/colorscheme.ts b/src/ts/gui/colorscheme.ts
index 4965e0df..60d966a8 100644
--- a/src/ts/gui/colorscheme.ts
+++ b/src/ts/gui/colorscheme.ts
@@ -1,6 +1,9 @@
import { get } from "svelte/store";
import { DataBase, setDatabase } from "../storage/database";
import { cloneDeep } from "lodash";
+import { downloadFile } from "../storage/globalApi";
+import { BufferToText, selectSingleFile } from "../util";
+import { alertError } from "../alert";
export interface ColorScheme{
bgcolor: string;
@@ -127,6 +130,48 @@ export function updateColorScheme(){
document.documentElement.style.setProperty("--risu-theme-darkbutton", colorScheme.darkbutton);
}
+export function exportColorScheme(){
+ let db = get(DataBase)
+ let json = JSON.stringify(db.colorScheme)
+ downloadFile('colorScheme.json', json)
+}
+
+export async function importColorScheme(){
+ const uarray = await selectSingleFile(['json'])
+ if(uarray == null){
+ return
+ }
+ const string = BufferToText(uarray.data)
+ let colorScheme: ColorScheme
+ try{
+ colorScheme = JSON.parse(string)
+ if(
+ typeof colorScheme.bgcolor !== 'string' ||
+ typeof colorScheme.darkbg !== 'string' ||
+ typeof colorScheme.borderc !== 'string' ||
+ typeof colorScheme.selected !== 'string' ||
+ typeof colorScheme.draculared !== 'string' ||
+ typeof colorScheme.textcolor !== 'string' ||
+ typeof colorScheme.textcolor2 !== 'string' ||
+ typeof colorScheme.darkBorderc !== 'string' ||
+ typeof colorScheme.darkbutton !== 'string' ||
+ typeof colorScheme.type !== 'string'
+ ){
+ alertError('Invalid color scheme')
+ return
+ }
+ changeColorScheme('custom')
+ let db = get(DataBase)
+ db.colorScheme = colorScheme
+ setDatabase(db)
+ updateColorScheme()
+ }
+ catch(e){
+ alertError('Invalid color scheme')
+ return
+
+ }
+}
export function updateTextTheme(){
let db = get(DataBase)
const root = document.querySelector(':root') as HTMLElement;