From 427f4317d2d6a1cc62a2407843623005f9a277b6 Mon Sep 17 00:00:00 2001 From: KrystalSkull <150982280+KrstlSkll69@users.noreply.github.com> Date: Fri, 25 Oct 2024 15:37:11 -0400 Subject: [PATCH] feat(Settings): Rework Buttons (#78) * update disable button pt2.5 * edit text * edit text again * formatting, add warning * add classes to Buttons * remove warning icons * moved button * added shared class --- src/components/PluginSettings/PluginModal.css | 89 +---------- src/components/PluginSettings/PluginModal.tsx | 49 +++--- src/components/PluginSettings/index.tsx | 139 ++++++++++++------ src/components/PluginSettings/styles.css | 132 +++++++++++------ src/components/VencordSettings/VencordTab.tsx | 2 + 5 files changed, 212 insertions(+), 199 deletions(-) diff --git a/src/components/PluginSettings/PluginModal.css b/src/components/PluginSettings/PluginModal.css index db7d54b2..ee2bec39 100644 --- a/src/components/PluginSettings/PluginModal.css +++ b/src/components/PluginSettings/PluginModal.css @@ -4,91 +4,4 @@ .vc-plugin-modal-description { 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; -} - - +} \ No newline at end of file diff --git a/src/components/PluginSettings/PluginModal.tsx b/src/components/PluginSettings/PluginModal.tsx index 05b47b97..63d5eaed 100644 --- a/src/components/PluginSettings/PluginModal.tsx +++ b/src/components/PluginSettings/PluginModal.tsx @@ -287,7 +287,7 @@ export default function PluginModal({ plugin, onRestartNeeded, onClose, transiti {({ onMouseEnter, onMouseLeave }) => ( - )} - - - - + + + + + {!Settings.ignoreResetWarning && ( + + )} {({ onMouseEnter, onMouseLeave }) => ( + )} ); } @@ -368,6 +382,82 @@ export default function PluginSettings() { } } + function openDisablePluginsModal(enabledPlugins: String[], resetCheckAndDo: () => void) { + if (Settings.ignoreResetWarning) return resetCheckAndDo(); + + openModal(warningModalProps => ( + + + Dangerous Action + + + + + + Warning + + WARNING: You are about to disable {enabledPlugins.length} plugins! + + + THIS ACTION IS IRREVERSIBLE + + + Are you absolutely sure you want to proceed? You can always enable them back later. + + + + + + + + + {!Settings.ignoreResetWarning && ( + + )} + + {({ onMouseEnter, onMouseLeave }) => ( + + )} + + + + + + )); + } + + // Code directly taken from supportHelper.tsx const isApiPlugin = (plugin: string) => plugin.endsWith("API") || Plugins[plugin].required; @@ -382,7 +472,7 @@ export default function PluginSettings() { return ( - +
- Filters @@ -426,48 +515,6 @@ export default function PluginSettings() { Plugins - {enabledPlugins.length > 0 && ( - - )} - - ), - confirmText: "Disable All", - confirmColor: "button-danger-background-no-margin", - cancelText: "Cancel", - onConfirm: () => { - resetCheckAndDo(); - } - }); - }} - > - Disable All Plugins - - )} {plugins.length || requiredPlugins.length ? ( diff --git a/src/components/PluginSettings/styles.css b/src/components/PluginSettings/styles.css index 1b74167e..f189c7b4 100644 --- a/src/components/PluginSettings/styles.css +++ b/src/components/PluginSettings/styles.css @@ -60,7 +60,7 @@ .vc-plugins-info-card { padding: 1em; - height: 8em; + height: fit-content; display: flex; flex-direction: column; background-color: var(--background-secondary-alt) !important; @@ -125,11 +125,61 @@ 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 { - background-color: var(--button-danger-background) !important; - margin: 20px 0; + background-color: var(--background-color) !important; + 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 { @@ -137,53 +187,51 @@ color: var(--header-primary); } -.button-danger-background:hover { - background-color: var(--button-danger-background-hover); +.button-danger-background-no-margin:hover { + background-color: var(--button-danger-background-hover) !important; + filter: saturate(75%); } -.alert-body { - text-align: center; +.vc-modal-close-button { + margin-left: auto !important; } -.alert-body img { - width: 60%; - height: auto; - display: block; - margin: auto auto 10px; - border-radius: 8px; +.modal-footer { + display: flex; + flex-direction: column; + width: 100%; + box-sizing: border-box; } -.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; - color: var(--text-danger); +} + +.warning-text span { font-weight: bold; -} - -.alert-body p { - font-size: 1rem; -} - -.alert-body span { text-decoration: underline; } -.disable-warning { - font-size: 0.8rem; - background-color: transparent !important; - color: var(--text-danger) !important; - cursor: pointer; - margin: 0 auto; - width: fit-content; - text-decoration: underline; - transition: color 0.2s ease; +.disable-all-button { + color: var(--header-primary); + width: 150px; + margin-left: auto; + margin-right: 4.5px !important; } - -.disable-warning:hover { - color: var(--text-danger); - background-color: transparent; - opacity: 0.8; -} - -.disable-warning:active { - background-color: transparent; -} \ No newline at end of file diff --git a/src/components/VencordSettings/VencordTab.tsx b/src/components/VencordSettings/VencordTab.tsx index 29e83da0..3ca93f3a 100644 --- a/src/components/VencordSettings/VencordTab.tsx +++ b/src/components/VencordSettings/VencordTab.tsx @@ -256,6 +256,7 @@ function DiscordInviteCard({ invite, image }: DiscordInviteProps) {