mirror of
https://github.com/mue/mue.git
synced 2026-06-05 23:45:53 +02:00
Merge branch 'main' of https://github.com/mue/mue
This commit is contained in:
@@ -29,10 +29,21 @@ const BackgroundOptions = memo(() => {
|
|||||||
const [backgroundAPI, setBackgroundAPI] = useState(localStorage.getItem('backgroundAPI') || 'mue');
|
const [backgroundAPI, setBackgroundAPI] = useState(localStorage.getItem('backgroundAPI') || 'mue');
|
||||||
const [marketplaceEnabled] = useState(localStorage.getItem('photo_packs'));
|
const [marketplaceEnabled] = useState(localStorage.getItem('photo_packs'));
|
||||||
const [effects, setEffects] = useState(false);
|
const [effects, setEffects] = useState(false);
|
||||||
const [backgroundSettingsSection, setBackgroundSettingsSection] = useState(false);
|
|
||||||
|
// Auto-show source section for types without effects/display settings
|
||||||
|
const shouldShowSourceByDefault = ['colour', 'random_colour', 'random_gradient'].includes(backgroundType);
|
||||||
|
const [backgroundSettingsSection, setBackgroundSettingsSection] = useState(shouldShowSourceByDefault);
|
||||||
|
|
||||||
const controllerRef = useRef(null);
|
const controllerRef = useRef(null);
|
||||||
|
|
||||||
|
// Auto-navigate to source section when switching to colour/random types
|
||||||
|
useEffect(() => {
|
||||||
|
if (shouldShowSourceByDefault) {
|
||||||
|
setBackgroundSettingsSection(true);
|
||||||
|
setEffects(false);
|
||||||
|
}
|
||||||
|
}, [shouldShowSourceByDefault]);
|
||||||
|
|
||||||
const getBackgroundCategories = useCallback(async () => {
|
const getBackgroundCategories = useCallback(async () => {
|
||||||
const data = await (
|
const data = await (
|
||||||
await fetch(variables.constants.API_URL + '/images/categories', {
|
await fetch(variables.constants.API_URL + '/images/categories', {
|
||||||
@@ -139,7 +150,7 @@ const BackgroundOptions = memo(() => {
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (backgroundSettingsSection) {
|
if (backgroundSettingsSection) {
|
||||||
return (
|
return (
|
||||||
<Header
|
<Header
|
||||||
@@ -151,7 +162,7 @@ const BackgroundOptions = memo(() => {
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Header
|
<Header
|
||||||
title={variables.getMessage('modals.main.settings.sections.background.title')}
|
title={variables.getMessage('modals.main.settings.sections.background.title')}
|
||||||
@@ -165,7 +176,7 @@ const BackgroundOptions = memo(() => {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{getHeader()}
|
{getHeader()}
|
||||||
|
|
||||||
{!backgroundSettingsSection && !effects && (
|
{!backgroundSettingsSection && !effects && (
|
||||||
<>
|
<>
|
||||||
<NavigationCard
|
<NavigationCard
|
||||||
@@ -189,7 +200,7 @@ const BackgroundOptions = memo(() => {
|
|||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{showEffects && (
|
{showEffects && (
|
||||||
<NavigationCard
|
<NavigationCard
|
||||||
icon={MdOutlineAutoAwesome}
|
icon={MdOutlineAutoAwesome}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import ColorPicker from 'react-best-gradient-color-picker';
|
|||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
import { Row, Content, Action } from 'components/Layout/Settings/Item';
|
import { Row, Content, Action } from 'components/Layout/Settings/Item';
|
||||||
import { MdRefresh } from 'react-icons/md';
|
import { MdRefresh } from 'react-icons/md';
|
||||||
|
import EventBus from 'utils/eventbus';
|
||||||
|
|
||||||
import '../scss/_colourpicker.scss';
|
import '../scss/_colourpicker.scss';
|
||||||
|
|
||||||
@@ -15,6 +16,7 @@ const ColourOptions = () => {
|
|||||||
const changeColour = (output) => {
|
const changeColour = (output) => {
|
||||||
setColour(output);
|
setColour(output);
|
||||||
localStorage.setItem('customBackgroundColour', output);
|
localStorage.setItem('customBackgroundColour', output);
|
||||||
|
EventBus.emit('refresh', 'background');
|
||||||
showReminder();
|
showReminder();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -22,6 +24,7 @@ const ColourOptions = () => {
|
|||||||
setColour('rgba(0, 0, 0, 0)');
|
setColour('rgba(0, 0, 0, 0)');
|
||||||
localStorage.setItem('customBackgroundColour', 'rgba(0, 0, 0, 0)');
|
localStorage.setItem('customBackgroundColour', 'rgba(0, 0, 0, 0)');
|
||||||
toast(variables.getMessage('toasts.reset'));
|
toast(variables.getMessage('toasts.reset'));
|
||||||
|
EventBus.emit('refresh', 'background');
|
||||||
showReminder();
|
showReminder();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -47,6 +50,9 @@ const ColourOptions = () => {
|
|||||||
hideEyeDrop={true}
|
hideEyeDrop={true}
|
||||||
hideColorGuide={true}
|
hideColorGuide={true}
|
||||||
hidePresets={true}
|
hidePresets={true}
|
||||||
|
hideAdvancedSliders={false}
|
||||||
|
hideColorTypeBtns={false}
|
||||||
|
hideInputType={false}
|
||||||
height={147}
|
height={147}
|
||||||
/>
|
/>
|
||||||
<div className="colourReset">
|
<div className="colourReset">
|
||||||
|
|||||||
@@ -1,18 +1,152 @@
|
|||||||
@use 'scss/variables' as *;
|
@use 'scss/variables' as *;
|
||||||
|
|
||||||
#rbgcp-solid-btn,
|
// Main wrapper - cleaner appearance without heavy border
|
||||||
#rbgcp-hex-input,
|
#rbgcp-wrapper,
|
||||||
#rbgcp-input,
|
#rbgcp-color-picker-dark {
|
||||||
#rbgcp-eyedropper-btn,
|
|
||||||
#rbgcp-advanced-btn,
|
|
||||||
#rbgcp-comparibles-btn,
|
|
||||||
#rbgcp-color-model-btn,
|
|
||||||
#rbgcp-gradient-controls-wrap div {
|
|
||||||
@include themed {
|
@include themed {
|
||||||
background: t($btn-background) !important;
|
background: transparent !important;
|
||||||
|
border: none !important;
|
||||||
|
border-radius: 0 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Override any remaining dark backgrounds from inline styles
|
||||||
|
div[style*='background: rgb(32, 32, 32)'] {
|
||||||
|
@include themed {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Canvas wrapper - smoother corners
|
||||||
|
#rbgcp-square-canvas-wrapper-dark {
|
||||||
|
border-radius: 6px !important;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bottom controls section
|
||||||
|
#rbgcp-body {
|
||||||
|
@include themed {
|
||||||
|
background: t($modal-secondaryColour) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Control wrappers - SPECIFIC targeting to avoid breaking sliders
|
||||||
|
#rbgcp-controls-wrapper-dark,
|
||||||
|
#rbgcp-color-type-btns-dark,
|
||||||
|
#rbgcp-control-rightside-wrapper-dark,
|
||||||
|
#rbgcp-inputs-wrap-dark {
|
||||||
|
@include themed {
|
||||||
|
background: t($modal-secondaryColour) !important;
|
||||||
|
border-radius: 6px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Slider area backgrounds - soft grey for light theme
|
||||||
|
#rbgcp-hue-wrap-dark,
|
||||||
|
#rbgcp-opacity-wrapper-dark {
|
||||||
|
position: relative !important;
|
||||||
|
|
||||||
|
// Add a soft background wrapper
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
z-index: -1;
|
||||||
|
border-radius: 14px;
|
||||||
|
|
||||||
|
@include themed {
|
||||||
|
.light & {
|
||||||
|
background: rgba(0, 0, 0, 0.08) !important;
|
||||||
|
}
|
||||||
|
.dark & {
|
||||||
|
background: rgba(0, 0, 0, 0.3) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Input fields and buttons - cover all variations
|
||||||
|
#rbgcp-solid-btn,
|
||||||
|
#rbgcp-solid-btn-dark,
|
||||||
|
#rbgcp-gradient-btn,
|
||||||
|
#rbgcp-gradient-btn-dark,
|
||||||
|
#rbgcp-hex-input,
|
||||||
|
#rbgcp-hex-input-dark,
|
||||||
|
#rbgcp-input,
|
||||||
|
#rbgcp-R-input-dark,
|
||||||
|
#rbgcp-G-input-dark,
|
||||||
|
#rbgcp-B-input-dark,
|
||||||
|
#rbgcp-A-input-dark,
|
||||||
|
input[id*='rbgcp'],
|
||||||
|
#rbgcp-eyedropper-btn,
|
||||||
|
#rbgcp-advanced-btn,
|
||||||
|
#rbgcp-advanced-btn-dark,
|
||||||
|
#rbgcp-comparibles-btn,
|
||||||
|
#rbgcp-color-model-btn,
|
||||||
|
#rbgcp-color-model-btn-dark,
|
||||||
|
#rbgcp-gradient-controls-wrap div {
|
||||||
|
@include themed {
|
||||||
|
background: t($btn-background) !important;
|
||||||
|
color: t($color) !important;
|
||||||
|
border: 1px solid rgba(128, 128, 128, 0.2) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Active state for Solid/Gradient buttons - check for black background or box-shadow
|
||||||
|
#rbgcp-solid-btn-dark[style*='background: black'],
|
||||||
|
#rbgcp-solid-btn-dark[style*='background: rgb(0, 0, 0)'],
|
||||||
|
#rbgcp-gradient-btn-dark[style*='background: black'],
|
||||||
|
#rbgcp-gradient-btn-dark[style*='background: rgb(0, 0, 0)'] {
|
||||||
|
@include themed {
|
||||||
|
background: t($link) !important;
|
||||||
|
color: white !important;
|
||||||
|
border-color: t($link) !important;
|
||||||
|
font-weight: 700 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Icon buttons - make icons more visible
|
||||||
|
#rbgcp-advanced-btn-dark,
|
||||||
|
#rbgcp-color-model-btn-dark {
|
||||||
|
svg,
|
||||||
|
svg polyline,
|
||||||
|
svg line,
|
||||||
|
svg path {
|
||||||
|
@include themed {
|
||||||
|
stroke: t($color) !important;
|
||||||
|
fill: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
@include themed {
|
||||||
|
background: t($btn-backgroundHover) !important;
|
||||||
|
border-color: t($link) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg,
|
||||||
|
svg polyline,
|
||||||
|
svg line,
|
||||||
|
svg path {
|
||||||
|
@include themed {
|
||||||
|
stroke: t($link) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Labels under inputs
|
||||||
|
#rbgcp-hex-input-wrapper-dark div,
|
||||||
|
#rbgcp-R-input-wrapper-dark div,
|
||||||
|
#rbgcp-G-input-wrapper-dark div,
|
||||||
|
#rbgcp-B-input-wrapper-dark div,
|
||||||
|
#rbgcp-A-input-wrapper-dark div {
|
||||||
|
@include themed {
|
||||||
|
color: t($color) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hover states
|
||||||
#rbgcp-gradient-btn:hover,
|
#rbgcp-gradient-btn:hover,
|
||||||
#rbgcp-solid-btn:hover,
|
#rbgcp-solid-btn:hover,
|
||||||
#rbgcp-eyedropper-btn:hover,
|
#rbgcp-eyedropper-btn:hover,
|
||||||
@@ -25,6 +159,16 @@
|
|||||||
|
|
||||||
@include themed {
|
@include themed {
|
||||||
background: t($btn-backgroundHover) !important;
|
background: t($btn-backgroundHover) !important;
|
||||||
|
border-color: t($color) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Active/selected button states
|
||||||
|
#rbgcp-solid-btn[style*='background: rgb(242, 242, 242)'],
|
||||||
|
#rbgcp-gradient-btn[style*='background: rgb(242, 242, 242)'] {
|
||||||
|
@include themed {
|
||||||
|
background: t($btn-backgroundHover) !important;
|
||||||
|
border-color: t($link) !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,7 +179,47 @@
|
|||||||
#rbgcp-point-delete-btn {
|
#rbgcp-point-delete-btn {
|
||||||
@include themed {
|
@include themed {
|
||||||
background: t($btn-background) !important;
|
background: t($btn-background) !important;
|
||||||
|
border: 1px solid t($boxShadow) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
height: 28px;
|
height: 28px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Text labels
|
||||||
|
#rbgcp-wrapper {
|
||||||
|
label {
|
||||||
|
@include themed {
|
||||||
|
color: t($color) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset button styling
|
||||||
|
.colourReset {
|
||||||
|
margin-top: 12px;
|
||||||
|
|
||||||
|
.link {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
font-size: 14px;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 8px 12px;
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
|
||||||
|
@include themed {
|
||||||
|
color: t($link);
|
||||||
|
background: t($modal-secondaryColour);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: t($btn-backgroundHover);
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
svg {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user