add theme creator iframe

This commit is contained in:
SethBurkart123
2024-03-31 08:27:43 +11:00
parent e095e7a7c5
commit 96571b111f
4 changed files with 36 additions and 1 deletions
+6
View File
@@ -29,6 +29,12 @@ html {
background-color 200ms ease-in-out, background-color 200ms ease-in-out,
backdrop-filter 200ms ease-in-out; backdrop-filter 200ms ease-in-out;
} }
#themeCreatorIframe {
position: fixed;
right: 0;
height: 100%;
width: 200px;
}
.connectedNotificationsWrapper > div > button > svg > g { .connectedNotificationsWrapper > div > button > svg > g {
fill: var(--theme-primary) !important; fill: var(--theme-primary) !important;
} }
+10 -1
View File
@@ -1,6 +1,7 @@
import { memo, useEffect, useState } from "react"; import { memo, useEffect, useState } from "react";
import themesList from '../assets/themes'; import themesList from '../assets/themes';
import { listThemes, disableTheme, downloadTheme, setTheme, deleteTheme } from "../hooks/ThemeManagment"; import { listThemes, disableTheme, downloadTheme, setTheme, deleteTheme } from "../hooks/ThemeManagment";
import Browser from "webextension-polyfill";
interface Theme { interface Theme {
name: string; name: string;
@@ -133,7 +134,8 @@ const ThemeSelector = ({ selectedType, setSelectedType, isEditMode }: ThemeSelec
return ( return (
<div className="my-2"> <div className="my-2">
{(isEditMode ? themes.some(theme => theme.isDownloaded) : themes.length > 0) && ( {(isEditMode ? themes.some(theme => theme.isDownloaded) : themes.length > 0) && (
<h2 className="pb-2 text-lg font-bold">Themes</h2>)} <h2 className="pb-2 text-lg font-bold">Themes</h2>
)}
<div className="flex flex-col gap-4"> <div className="flex flex-col gap-4">
{themes {themes
.filter(theme => !isEditMode || theme.isDownloaded) // Only show downloaded themes in edit mode .filter(theme => !isEditMode || theme.isDownloaded) // Only show downloaded themes in edit mode
@@ -166,6 +168,13 @@ const ThemeSelector = ({ selectedType, setSelectedType, isEditMode }: ThemeSelec
</div> </div>
</button> </button>
))} ))}
<button
onClick={() => Browser.runtime.sendMessage({ type: 'currentTab', info: 'OpenThemeCreator' })}
className="flex items-center justify-center w-full h-16 transition rounded-lg bg-zinc-700">
<span className="text-xl font-IconFamily">{'\uec60'}</span>
<span className="ml-2">Create Theme</span>
</button>
</div> </div>
</div> </div>
); );
+16
View File
@@ -0,0 +1,16 @@
import browser from "webextension-polyfill";
import popup from '../../interface/index.html?url'
/**
* Open the Theme Creator sidebar, it is an embedded page loaded similar to the extension popup
*/
export function OpenThemeCreator() {
const container = document.querySelector('#container')
const themeCreatorIframe: HTMLIFrameElement = document.createElement('iframe')
themeCreatorIframe.src = `${browser.runtime.getURL(popup)}#themeCreator`
themeCreatorIframe.id = 'themeCreatorIframe'
themeCreatorIframe.setAttribute('allowTransparency', 'true')
themeCreatorIframe.setAttribute('excludeDarkCheck', 'true')
themeCreatorIframe.style.border = 'none'
container!.appendChild(themeCreatorIframe)
}
@@ -2,6 +2,7 @@ import browser from 'webextension-polyfill'
import { MenuOptionsOpen, OpenMenuOptions, OpenWhatsNewPopup, closeSettings } from '../../../SEQTA'; import { MenuOptionsOpen, OpenMenuOptions, OpenWhatsNewPopup, closeSettings } from '../../../SEQTA';
import { deleteTheme, disableTheme, downloadTheme, listThemes, setTheme } from '../../ui/Themes'; import { deleteTheme, disableTheme, downloadTheme, listThemes, setTheme } from '../../ui/Themes';
import { OpenThemeCreator } from '../../ui/ThemeCreator';
export class MessageHandler { export class MessageHandler {
constructor() { constructor() {
@@ -45,6 +46,9 @@ export class MessageHandler {
case 'OpenChangelog': case 'OpenChangelog':
OpenWhatsNewPopup(); OpenWhatsNewPopup();
break; break;
case 'OpenThemeCreator':
OpenThemeCreator();
break;
default: default:
console.log('Unknown request info:', request.info); console.log('Unknown request info:', request.info);