/* * Vencord, a Discord client mod * Copyright (c) 2023 Vendicated and contributors * SPDX-License-Identifier: GPL-3.0-or-later */ import { useSettings } from "@api/Settings"; import { Flex } from "@components/Flex"; import { ModalCloseButton, ModalContent, ModalHeader, ModalProps, ModalRoot } from "@utils/modal"; import { Text } from "@webpack/common"; import type { ReactNode } from "react"; import { UserstyleHeader } from "usercss-meta"; import { SettingBooleanComponent, SettingColorComponent, SettingNumberComponent, SettingRangeComponent, SettingSelectComponent, SettingTextComponent } from "./components"; interface UserCSSSettingsModalProps { modalProps: ModalProps; theme: UserstyleHeader; } export function UserCSSSettingsModal({ modalProps, theme }: UserCSSSettingsModalProps) { // @ts-expect-error UseSettings<> can't determine this is a valid key const themeSettings = useSettings(["userCssVars"], false).userCssVars[theme.id]; const controls: ReactNode[] = []; function updateSetting(key: string, value: string) { themeSettings[key] = value; } for (const [name, varInfo] of Object.entries(theme.vars)) { switch (varInfo.type) { case "text": { controls.push( ); break; } case "checkbox": { controls.push( ); break; } case "color": { controls.push( ); break; } case "number": { controls.push( ); break; } case "select": { controls.push( ); break; } case "range": { controls.push( ); break; } } } return ( Settings for {theme.name} {controls} ); }