mirror of
https://github.com/Equicord/Equicord.git
synced 2025-06-09 22:53:02 -04:00
Merge branch 'main' into dev
This commit is contained in:
commit
afab6a484c
5 changed files with 212 additions and 199 deletions
|
@ -5,90 +5,3 @@
|
||||||
.vc-plugin-modal-description {
|
.vc-plugin-modal-description {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* warning modal */
|
|
||||||
|
|
||||||
.vc-text-selectable {
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vc-warning-info {
|
|
||||||
gap: 15px;
|
|
||||||
flex-direction: column;
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vc-warning-info img {
|
|
||||||
width: 70%;
|
|
||||||
height: auto;
|
|
||||||
display: block;
|
|
||||||
margin: auto auto 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vc-warning-info strong {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vc-warning-info button.disable-warning {
|
|
||||||
font-size: 0.8rem;
|
|
||||||
background-color: transparent;
|
|
||||||
color: red;
|
|
||||||
cursor: pointer;
|
|
||||||
margin: 0 auto;
|
|
||||||
width: fit-content;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vc-warning-info button.disable-warning:hover {
|
|
||||||
background-color: transparent;
|
|
||||||
color: var(--text-danger);
|
|
||||||
}
|
|
||||||
|
|
||||||
.vc-warning-info button.disable-warning:active {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-danger {
|
|
||||||
color: var(--text-danger);
|
|
||||||
font-size: 1.4rem;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-normal {
|
|
||||||
color: var(--text-normal);
|
|
||||||
font-size: 1.2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-normal.margin-bottom {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-danger-background {
|
|
||||||
background-color: var(--background-color) !important;
|
|
||||||
border-style: solid;
|
|
||||||
border-width: .1rem;
|
|
||||||
border-color: var(--button-outline-danger-border) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-danger-background:hover{
|
|
||||||
background-color: var(--button-outline-danger-background-hover) !important;
|
|
||||||
border-style: solid;
|
|
||||||
border-width: .1rem;
|
|
||||||
border-color: var(--button-outline-danger-border) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-danger-background-no-margin {
|
|
||||||
background-color: var(--button-danger-background) !important;
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-danger-background-no-margin:hover{
|
|
||||||
background-color: var(--button-danger-background-hover) !important;
|
|
||||||
filter: saturate(75%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.vc-modal-close-button {
|
|
||||||
margin-left: auto !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -287,7 +287,7 @@ export default function PluginModal({ plugin, onRestartNeeded, onClose, transiti
|
||||||
<Tooltip text="Reset to default settings" shouldShow={!isObjectEmpty(tempSettings)}>
|
<Tooltip text="Reset to default settings" shouldShow={!isObjectEmpty(tempSettings)}>
|
||||||
{({ onMouseEnter, onMouseLeave }) => (
|
{({ onMouseEnter, onMouseLeave }) => (
|
||||||
<Button
|
<Button
|
||||||
className="button-danger-background-no-margin"
|
className="button-danger-background"
|
||||||
size={Button.Sizes.SMALL}
|
size={Button.Sizes.SMALL}
|
||||||
color={Button.Colors.BRAND}
|
color={Button.Colors.BRAND}
|
||||||
onClick={handleResetClick}
|
onClick={handleResetClick}
|
||||||
|
@ -407,7 +407,7 @@ export function openWarningModal(plugin: Plugin, pluginModalProps: ModalProps, o
|
||||||
transitionState={warningModalProps.transitionState}
|
transitionState={warningModalProps.transitionState}
|
||||||
>
|
>
|
||||||
<ModalHeader separator={false}>
|
<ModalHeader separator={false}>
|
||||||
<Text className="text-danger">Warning: Dangerous Action</Text>
|
<Text className="text-danger">Dangerous Action</Text>
|
||||||
<ModalCloseButton onClick={warningModalProps.onClose} className="vc-modal-close-button" />
|
<ModalCloseButton onClick={warningModalProps.onClose} className="vc-modal-close-button" />
|
||||||
</ModalHeader>
|
</ModalHeader>
|
||||||
<ModalContent>
|
<ModalContent>
|
||||||
|
@ -421,24 +421,16 @@ export function openWarningModal(plugin: Plugin, pluginModalProps: ModalProps, o
|
||||||
You are about to reset all settings for <strong>{plugin.name}</strong> to their default values.
|
You are about to reset all settings for <strong>{plugin.name}</strong> to their default values.
|
||||||
</Text>
|
</Text>
|
||||||
<Text className="text-danger">
|
<Text className="text-danger">
|
||||||
This action is irreversible.
|
THIS ACTION IS IRREVERSIBLE
|
||||||
</Text>
|
</Text>
|
||||||
<Text className="text-normal margin-bottom">
|
<Text className="text-normal margin-bottom">
|
||||||
If you are certain you want to proceed, click <strong>Confirm Reset</strong>. Otherwise, click <strong>Cancel</strong>.
|
If you are certain you want to proceed, click <strong>Confirm Reset</strong>. Otherwise, click <strong>Cancel</strong>.
|
||||||
</Text>
|
</Text>
|
||||||
{!Settings.ignoreResetWarning && (
|
|
||||||
<Button className="disable-warning" onClick={() => {
|
|
||||||
Settings.ignoreResetWarning = true;
|
|
||||||
}}>
|
|
||||||
Disable this warning forever
|
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
</Flex>
|
</Flex>
|
||||||
</Forms.FormSection>
|
</Forms.FormSection>
|
||||||
</ModalContent>
|
</ModalContent>
|
||||||
<ModalFooter>
|
<ModalFooter className="modal-footer">
|
||||||
<Flex flexDirection="column" style={{ width: "100%" }}>
|
<Flex className="button-container">
|
||||||
<Flex style={{ justifyContent: "space-between" }}>
|
|
||||||
<Button
|
<Button
|
||||||
size={Button.Sizes.SMALL}
|
size={Button.Sizes.SMALL}
|
||||||
color={Button.Colors.PRIMARY}
|
color={Button.Colors.PRIMARY}
|
||||||
|
@ -447,13 +439,24 @@ export function openWarningModal(plugin: Plugin, pluginModalProps: ModalProps, o
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
|
<Flex className="button-group">
|
||||||
|
{!Settings.ignoreResetWarning && (
|
||||||
|
<Button
|
||||||
|
size={Button.Sizes.SMALL}
|
||||||
|
className="button-danger-background"
|
||||||
|
onClick={() => {
|
||||||
|
Settings.ignoreResetWarning = true;
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Disable Warning Forever
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
<Tooltip text="This action cannot be undone. Are you sure?" shouldShow={true}>
|
<Tooltip text="This action cannot be undone. Are you sure?" shouldShow={true}>
|
||||||
{({ onMouseEnter, onMouseLeave }) => (
|
{({ onMouseEnter, onMouseLeave }) => (
|
||||||
<Button
|
<Button
|
||||||
size={Button.Sizes.SMALL}
|
size={Button.Sizes.SMALL}
|
||||||
color={Button.Colors.BRAND}
|
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
resetSettings(plugin, warningModalProps, pluginModalProps, onRestartNeeded);
|
resetSettings(plugin, pluginModalProps, pluginModalProps, onRestartNeeded);
|
||||||
}}
|
}}
|
||||||
onMouseEnter={onMouseEnter}
|
onMouseEnter={onMouseEnter}
|
||||||
onMouseLeave={onMouseLeave}
|
onMouseLeave={onMouseLeave}
|
||||||
|
|
|
@ -31,10 +31,11 @@ import { proxyLazy } from "@utils/lazy";
|
||||||
import { Logger } from "@utils/Logger";
|
import { Logger } from "@utils/Logger";
|
||||||
import { Margins } from "@utils/margins";
|
import { Margins } from "@utils/margins";
|
||||||
import { classes, isObjectEmpty } from "@utils/misc";
|
import { classes, isObjectEmpty } from "@utils/misc";
|
||||||
|
import { ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalRoot, ModalSize, openModal } from "@utils/modal";
|
||||||
import { useAwaiter } from "@utils/react";
|
import { useAwaiter } from "@utils/react";
|
||||||
import { Plugin } from "@utils/types";
|
import { Plugin } from "@utils/types";
|
||||||
import { findByPropsLazy } from "@webpack";
|
import { findByPropsLazy } from "@webpack";
|
||||||
import { Alerts, Button, Card, Forms, lodash, Parser, React, Select, Text, TextInput, Toasts, Tooltip, useMemo } from "@webpack/common";
|
import { Alerts, Button, Card, Flex, Forms, lodash, Parser, React, Select, Text, TextInput, Toasts, Tooltip, useMemo } from "@webpack/common";
|
||||||
|
|
||||||
import Plugins, { ExcludedPlugins, PluginMeta } from "~plugins";
|
import Plugins, { ExcludedPlugins, PluginMeta } from "~plugins";
|
||||||
|
|
||||||
|
@ -60,7 +61,7 @@ function showErrorToast(message: string) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function ReloadRequiredCard({ required }: { required: boolean; }) {
|
function ReloadRequiredCard({ required, enabledPlugins, openDisablePluginsModal, resetCheckAndDo }) {
|
||||||
return (
|
return (
|
||||||
<Card className={cl("info-card", { "restart-card": required })}>
|
<Card className={cl("info-card", { "restart-card": required })}>
|
||||||
{required ? (
|
{required ? (
|
||||||
|
@ -80,6 +81,19 @@ function ReloadRequiredCard({ required }: { required: boolean; }) {
|
||||||
<Forms.FormText>Plugins with a cog wheel have settings you can modify!</Forms.FormText>
|
<Forms.FormText>Plugins with a cog wheel have settings you can modify!</Forms.FormText>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
{enabledPlugins.length > 0 && !required && (
|
||||||
|
<Button
|
||||||
|
size={Button.Sizes.SMALL}
|
||||||
|
className="button-danger-background disable-all-button"
|
||||||
|
onClick={() => {
|
||||||
|
if (Settings.ignoreResetWarning) return resetCheckAndDo();
|
||||||
|
|
||||||
|
return openDisablePluginsModal(enabledPlugins, resetCheckAndDo);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Disable All Plugins
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
</Card>
|
</Card>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -368,6 +382,82 @@ export default function PluginSettings() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function openDisablePluginsModal(enabledPlugins: String[], resetCheckAndDo: () => void) {
|
||||||
|
if (Settings.ignoreResetWarning) return resetCheckAndDo();
|
||||||
|
|
||||||
|
openModal(warningModalProps => (
|
||||||
|
<ModalRoot
|
||||||
|
{...warningModalProps}
|
||||||
|
size={ModalSize.SMALL}
|
||||||
|
className="vc-text-selectable"
|
||||||
|
transitionState={warningModalProps.transitionState}
|
||||||
|
>
|
||||||
|
<ModalHeader separator={false}>
|
||||||
|
<Text className="text-danger">Dangerous Action</Text>
|
||||||
|
<ModalCloseButton onClick={warningModalProps.onClose} className="vc-modal-close-button" />
|
||||||
|
</ModalHeader>
|
||||||
|
<ModalContent>
|
||||||
|
<Forms.FormSection>
|
||||||
|
<Flex className="vc-warning-info">
|
||||||
|
<img
|
||||||
|
src="https://media.tenor.com/Y6DXKZiBCs8AAAAi/stavario-josefbenes.gif"
|
||||||
|
alt="Warning"
|
||||||
|
/>
|
||||||
|
<Text className="warning-text">
|
||||||
|
WARNING: You are about to disable <span>{enabledPlugins.length}</span> plugins!
|
||||||
|
</Text>
|
||||||
|
<Text className="warning-text">
|
||||||
|
THIS ACTION IS IRREVERSIBLE
|
||||||
|
</Text>
|
||||||
|
<Text className="text-normal margin-bottom">
|
||||||
|
Are you absolutely sure you want to proceed? You can always enable them back later.
|
||||||
|
</Text>
|
||||||
|
</Flex>
|
||||||
|
</Forms.FormSection>
|
||||||
|
</ModalContent>
|
||||||
|
<ModalFooter className="modal-footer">
|
||||||
|
<Flex className="button-container">
|
||||||
|
<Button
|
||||||
|
size={Button.Sizes.SMALL}
|
||||||
|
color={Button.Colors.PRIMARY}
|
||||||
|
onClick={warningModalProps.onClose}
|
||||||
|
look={Button.Looks.LINK}
|
||||||
|
>
|
||||||
|
Cancel
|
||||||
|
</Button>
|
||||||
|
<Flex className="button-group">
|
||||||
|
{!Settings.ignoreResetWarning && (
|
||||||
|
<Button
|
||||||
|
size={Button.Sizes.SMALL}
|
||||||
|
className="button-danger-background"
|
||||||
|
onClick={() => {
|
||||||
|
Settings.ignoreResetWarning = true;
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Disable Warning Forever
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
<Tooltip text="This action cannot be undone. Are you sure?" shouldShow={true}>
|
||||||
|
{({ onMouseEnter, onMouseLeave }) => (
|
||||||
|
<Button
|
||||||
|
size={Button.Sizes.SMALL}
|
||||||
|
className="button-danger-background-no-margin"
|
||||||
|
onClick={resetCheckAndDo}
|
||||||
|
onMouseEnter={onMouseEnter}
|
||||||
|
onMouseLeave={onMouseLeave}
|
||||||
|
>
|
||||||
|
Disable All
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
</Tooltip>
|
||||||
|
</Flex>
|
||||||
|
</Flex>
|
||||||
|
</ModalFooter>
|
||||||
|
</ModalRoot>
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Code directly taken from supportHelper.tsx
|
// Code directly taken from supportHelper.tsx
|
||||||
const isApiPlugin = (plugin: string) => plugin.endsWith("API") || Plugins[plugin].required;
|
const isApiPlugin = (plugin: string) => plugin.endsWith("API") || Plugins[plugin].required;
|
||||||
|
|
||||||
|
@ -382,7 +472,7 @@ export default function PluginSettings() {
|
||||||
return (
|
return (
|
||||||
<SettingsTab title="Plugins">
|
<SettingsTab title="Plugins">
|
||||||
|
|
||||||
<ReloadRequiredCard required={changes.hasChanges} />
|
<ReloadRequiredCard required={changes.hasChanges} enabledPlugins={enabledPlugins} openDisablePluginsModal={openDisablePluginsModal} resetCheckAndDo={resetCheckAndDo} />
|
||||||
|
|
||||||
<div className={cl("stats-container")} style={{
|
<div className={cl("stats-container")} style={{
|
||||||
marginTop: "16px",
|
marginTop: "16px",
|
||||||
|
@ -401,7 +491,6 @@ export default function PluginSettings() {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<Forms.FormTitle tag="h5" className={classes(Margins.top20, Margins.bottom8)}>
|
<Forms.FormTitle tag="h5" className={classes(Margins.top20, Margins.bottom8)}>
|
||||||
Filters
|
Filters
|
||||||
</Forms.FormTitle>
|
</Forms.FormTitle>
|
||||||
|
@ -426,48 +515,6 @@ export default function PluginSettings() {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Forms.FormTitle className={Margins.top20}>Plugins</Forms.FormTitle>
|
<Forms.FormTitle className={Margins.top20}>Plugins</Forms.FormTitle>
|
||||||
{enabledPlugins.length > 0 && (
|
|
||||||
<Button
|
|
||||||
size={Button.Sizes.SMALL}
|
|
||||||
className="button-danger-background"
|
|
||||||
onClick={() => {
|
|
||||||
if (Settings.ignoreResetWarning) return resetCheckAndDo();
|
|
||||||
|
|
||||||
return Alerts.show({
|
|
||||||
title: "Disable All Plugins",
|
|
||||||
body: (
|
|
||||||
<div className="alert-body">
|
|
||||||
<img
|
|
||||||
src="https://media.tenor.com/Y6DXKZiBCs8AAAAi/stavario-josefbenes.gif"
|
|
||||||
alt="Warning"
|
|
||||||
/>
|
|
||||||
<p className="warning-text">
|
|
||||||
WARNING: You are about to disable <span>{enabledPlugins.length}</span> plugins!
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Are you absolutely sure you want to proceed? You can always enable them back later.
|
|
||||||
</p>
|
|
||||||
{!Settings.ignoreResetWarning && (
|
|
||||||
<Button className="disable-warning" onClick={() => {
|
|
||||||
Settings.ignoreResetWarning = true;
|
|
||||||
}}>
|
|
||||||
Disable this warning forever
|
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
),
|
|
||||||
confirmText: "Disable All",
|
|
||||||
confirmColor: "button-danger-background-no-margin",
|
|
||||||
cancelText: "Cancel",
|
|
||||||
onConfirm: () => {
|
|
||||||
resetCheckAndDo();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Disable All Plugins
|
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{plugins.length || requiredPlugins.length
|
{plugins.length || requiredPlugins.length
|
||||||
? (
|
? (
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
|
|
||||||
.vc-plugins-info-card {
|
.vc-plugins-info-card {
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
height: 8em;
|
height: fit-content;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
background-color: var(--background-secondary-alt) !important;
|
background-color: var(--background-secondary-alt) !important;
|
||||||
|
@ -125,11 +125,61 @@
|
||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* disable all modal */
|
/* Shared styles for warning modal and disable all modal */
|
||||||
|
|
||||||
|
.vc-text-selectable {
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vc-warning-info {
|
||||||
|
gap: 15px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vc-warning-info img {
|
||||||
|
width: 70%;
|
||||||
|
height: auto;
|
||||||
|
display: block;
|
||||||
|
margin: auto auto 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vc-warning-info strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-danger {
|
||||||
|
color: var(--text-danger);
|
||||||
|
font-size: 1.2rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-normal {
|
||||||
|
color: var(--text-normal);
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-normal.margin-bottom {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.button-danger-background {
|
.button-danger-background {
|
||||||
background-color: var(--button-danger-background) !important;
|
background-color: var(--background-color) !important;
|
||||||
margin: 20px 0;
|
border-style: solid;
|
||||||
|
border-width: .1rem;
|
||||||
|
border-color: var(--button-outline-danger-border) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-danger-background.top-margin {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-danger-background:hover {
|
||||||
|
background-color: var(--button-outline-danger-background-hover) !important;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: .1rem;
|
||||||
|
border-color: var(--button-outline-danger-border) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button-danger-background-no-margin {
|
.button-danger-background-no-margin {
|
||||||
|
@ -137,53 +187,51 @@
|
||||||
color: var(--header-primary);
|
color: var(--header-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.button-danger-background:hover {
|
.button-danger-background-no-margin:hover {
|
||||||
background-color: var(--button-danger-background-hover);
|
background-color: var(--button-danger-background-hover) !important;
|
||||||
|
filter: saturate(75%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.alert-body {
|
.vc-modal-close-button {
|
||||||
text-align: center;
|
margin-left: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.alert-body img {
|
.modal-footer {
|
||||||
width: 60%;
|
display: flex;
|
||||||
height: auto;
|
flex-direction: column;
|
||||||
display: block;
|
width: 100%;
|
||||||
margin: auto auto 10px;
|
box-sizing: border-box;
|
||||||
border-radius: 8px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.alert-body p.warning-text {
|
.modal-footer .button-container {
|
||||||
|
display: flex !important;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-group {
|
||||||
|
display: flex !important;
|
||||||
|
gap: 10px;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: end !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Specific to disable all modal */
|
||||||
|
|
||||||
|
.warning-text {
|
||||||
|
color: var(--text-danger);
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
color: var(--text-danger);
|
}
|
||||||
|
|
||||||
|
.warning-text span {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
|
||||||
|
|
||||||
.alert-body p {
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.alert-body span {
|
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.disable-warning {
|
.disable-all-button {
|
||||||
font-size: 0.8rem;
|
color: var(--header-primary);
|
||||||
background-color: transparent !important;
|
width: 150px;
|
||||||
color: var(--text-danger) !important;
|
margin-left: auto;
|
||||||
cursor: pointer;
|
margin-right: 4.5px !important;
|
||||||
margin: 0 auto;
|
|
||||||
width: fit-content;
|
|
||||||
text-decoration: underline;
|
|
||||||
transition: color 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.disable-warning:hover {
|
|
||||||
color: var(--text-danger);
|
|
||||||
background-color: transparent;
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.disable-warning:active {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
}
|
|
@ -256,6 +256,7 @@ function DiscordInviteCard({ invite, image }: DiscordInviteProps) {
|
||||||
|
|
||||||
<div className={cl("card-buttons")}>
|
<div className={cl("card-buttons")}>
|
||||||
<Button
|
<Button
|
||||||
|
className="vc-joindiscordbutton vc-settingbuttons"
|
||||||
onClick={async e => {
|
onClick={async e => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
openInviteModal(invite).catch(() => showToast("Invalid or expired invite"));
|
openInviteModal(invite).catch(() => showToast("Invalid or expired invite"));
|
||||||
|
@ -265,6 +266,7 @@ function DiscordInviteCard({ invite, image }: DiscordInviteProps) {
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
|
className="vc-donatebutton vc-settingbuttons"
|
||||||
onClick={() => { VencordNative.native.openExternal("https://github.com/sponsors/verticalsync"); }}
|
onClick={() => { VencordNative.native.openExternal("https://github.com/sponsors/verticalsync"); }}
|
||||||
>
|
>
|
||||||
Donate
|
Donate
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue