mirror of
https://github.com/mue/mue.git
synced 2026-07-18 14:34:12 +02:00
- Replace all querySelector('.reminder-info') calls with EventBus.emit('showReminder')
across 14 files — prevents crashes when the element is not mounted
- Move ReminderInfo from inside the sidebar to the top of the right content column
so it no longer obscures sidebar navigation
- Fix reminder not showing for non-hot-reload settings (Slider hook violation where
useT() was called inside a requestAnimationFrame callback)
- Skip reminder for LocationSearch since it already emits a hot-reload refresh event
- Suppress reminder for settings with hot-reload (no page refresh needed)
- Fix modal content overflowing right edge: replace width:100%!important on
.modalTabContent with flex:1 + min-width:0 + overflow-x:hidden
- Fix ReminderInfo refresh button being too small
- Fix sidebar collapse animation using max-width transition instead of width:0
- Fix PhotoInformation showing 0x0 resolution and Unknown Location before image loads
- Fix Wikipedia disambiguation links for quote authors by returning null from
getAuthorLink (Wikidata links used when available)
- Bail early in useSuggestedPacks when offline mode is enabled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
458 lines
7.1 KiB
SCSS
458 lines
7.1 KiB
SCSS
@use 'sass:map';
|
|
@use 'scss/variables' as *;
|
|
@use 'modules/topBar' as *;
|
|
@use 'modules/sidebar' as *;
|
|
@use 'modules/navbar' as *;
|
|
@use 'modules/buttons' as *;
|
|
@use 'modules/modalTabContent' as *;
|
|
@use 'modules/links' as *;
|
|
@use 'modules/scrollbars' as *;
|
|
@use 'settings/main' as *;
|
|
@use 'marketplace/main' as *;
|
|
|
|
/* Fixed: Added sass:map module */
|
|
|
|
.Overlay {
|
|
position: fixed;
|
|
z-index: 100;
|
|
inset: 0;
|
|
width: 100vw;
|
|
height: 100vh;
|
|
display: grid;
|
|
place-items: center;
|
|
opacity: 0;
|
|
transition: opacity 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
|
|
|
&.ReactModal__Overlay--after-open {
|
|
opacity: 1;
|
|
}
|
|
|
|
&.ReactModal__Overlay--before-close {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
.Modal {
|
|
@include themed {
|
|
color: t($color);
|
|
}
|
|
|
|
box-shadow: 0 0 20px rgb(0 0 0 / 30%);
|
|
opacity: 0;
|
|
z-index: -2;
|
|
border-radius: map.get($modal, 'border-radius');
|
|
-webkit-user-select: none;
|
|
user-select: none;
|
|
overflow: hidden;
|
|
transform: scale(0.95);
|
|
transition: opacity 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94),
|
|
transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
|
|
|
&:focus {
|
|
outline: 0;
|
|
}
|
|
|
|
.modalInfoPage {
|
|
user-select: text;
|
|
}
|
|
}
|
|
|
|
.closePositioning {
|
|
position: absolute;
|
|
top: 3rem;
|
|
inset-inline-end: 3rem;
|
|
}
|
|
|
|
.closeModal {
|
|
display: grid;
|
|
place-items: center;
|
|
padding: 0.5em;
|
|
border-radius: 12px;
|
|
cursor: pointer;
|
|
transition: 0.5s;
|
|
outline: none;
|
|
border: none;
|
|
background: transparent;
|
|
|
|
svg {
|
|
font-size: 2em;
|
|
}
|
|
|
|
@include themed {
|
|
color: t($color);
|
|
}
|
|
|
|
&:hover {
|
|
@include themed {
|
|
background: t($modal-sidebarActive);
|
|
}
|
|
}
|
|
}
|
|
|
|
.ReactModal__Html--open,
|
|
.ReactModal__Body--open {
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* modal transition */
|
|
.ReactModal__Content--after-open {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
|
|
.ReactModal__Content--before-close {
|
|
opacity: 0;
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
#modal {
|
|
height: 80vh;
|
|
width: clamp(60vw, 1400px, 90vw);
|
|
backdrop-filter: blur(16px) saturate(180%);
|
|
backdrop-filter: blur(16px) saturate(180%);
|
|
overflow: hidden;
|
|
border-radius: 12px;
|
|
|
|
@include themed {
|
|
background-color: t($modal-background);
|
|
}
|
|
}
|
|
|
|
/* fixes for font size on extension */
|
|
label,
|
|
p,
|
|
span.modalLink {
|
|
font-size: 1rem;
|
|
}
|
|
|
|
h2 {
|
|
font-size: 2rem;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
h3 {
|
|
font-size: 1.17rem;
|
|
}
|
|
|
|
h5 {
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
.loaderHolder {
|
|
display: flex;
|
|
gap: 15px;
|
|
flex-flow: column;
|
|
align-items: center;
|
|
}
|
|
|
|
#loader {
|
|
display: inline-block;
|
|
width: 50px;
|
|
height: 50px;
|
|
|
|
@include themed {
|
|
border: 3px solid t($modal-sidebar);
|
|
border-radius: 50%;
|
|
border-top-color: t($modal-sidebarActive);
|
|
}
|
|
|
|
animation: spin 1s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes spin {
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes spin {
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
.headerExtras {
|
|
display: flex;
|
|
flex-flow: column;
|
|
gap: -1px;
|
|
padding: 10px 0;
|
|
|
|
div:nth-child(1) {
|
|
display: flex;
|
|
flex-flow: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
form {
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.link {
|
|
display: flex;
|
|
flex-flow: row;
|
|
gap: 15px;
|
|
align-items: center;
|
|
}
|
|
|
|
.MuiOutlinedInput-notchedOutline {
|
|
@include themed {
|
|
border-color: t($modal-sidebarActive) !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
.headerActions {
|
|
display: flex;
|
|
flex-flow: row;
|
|
gap: 20px;
|
|
justify-content: center;
|
|
align-items: center;
|
|
|
|
.link {
|
|
display: flex;
|
|
flex-flow: row;
|
|
gap: 15px;
|
|
align-items: center;
|
|
}
|
|
}
|
|
|
|
.marketplaceCondition {
|
|
display: flex;
|
|
flex-flow: row !important;
|
|
gap: -1px;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
.languageSettings {
|
|
padding-bottom: 50px;
|
|
|
|
.MuiFormGroup-root {
|
|
gap: 5px;
|
|
}
|
|
|
|
.MuiFormControl-root {
|
|
width: 100% !important;
|
|
gap: 15px;
|
|
|
|
.MuiFormControlLabel-root {
|
|
display: flex;
|
|
flex-direction: row-reverse;
|
|
justify-content: space-between;
|
|
padding: 5px 5px 5px 20px;
|
|
transition: 0.3s;
|
|
|
|
@include themed {
|
|
background: t($modal-sidebar);
|
|
border-radius: t($borderRadius);
|
|
|
|
&:hover {
|
|
background: t($modal-sidebarActive);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.sliderTitle {
|
|
width: 100%;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding: 15px 0;
|
|
|
|
.link {
|
|
display: flex;
|
|
flex-flow: row;
|
|
gap: 15px;
|
|
align-items: center;
|
|
}
|
|
}
|
|
|
|
.moreSettings {
|
|
cursor: pointer;
|
|
display: flex;
|
|
flex-flow: row;
|
|
justify-content: space-between;
|
|
padding: 25px;
|
|
margin-top: 20px;
|
|
transition: 0.5s;
|
|
|
|
@include themed {
|
|
background: t($modal-sidebar);
|
|
border-radius: t($borderRadius);
|
|
box-shadow: 0 0 0 1px t($modal-border);
|
|
|
|
&:hover {
|
|
background: t($modal-sidebarActive);
|
|
}
|
|
}
|
|
|
|
svg {
|
|
font-size: 20px;
|
|
}
|
|
|
|
.left {
|
|
display: flex;
|
|
flex-flow: row;
|
|
align-items: center;
|
|
gap: 25px;
|
|
|
|
svg {
|
|
@include themed {
|
|
background-image: t($slightGradient);
|
|
box-shadow: t($boxShadow);
|
|
}
|
|
|
|
padding: 15px;
|
|
border-radius: 100%;
|
|
flex-shrink: 0;
|
|
}
|
|
}
|
|
|
|
.content {
|
|
display: flex;
|
|
flex-flow: column;
|
|
}
|
|
|
|
.action {
|
|
display: flex;
|
|
flex-flow: row;
|
|
gap: 20px;
|
|
align-items: center;
|
|
}
|
|
}
|
|
|
|
.reminder-info {
|
|
display: flex;
|
|
flex-flow: row;
|
|
align-items: center;
|
|
gap: 12px;
|
|
padding: 10px 16px;
|
|
flex-shrink: 0;
|
|
|
|
@include themed {
|
|
background-color: t($modal-secondaryColour);
|
|
border-bottom: 1px solid t($modal-sidebarActive);
|
|
}
|
|
|
|
.title {
|
|
font-weight: 600;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.subtitle {
|
|
opacity: 0.7;
|
|
flex: 1;
|
|
}
|
|
|
|
button {
|
|
@include basicIconButton(8px 14px, 0.875rem, modal);
|
|
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
flex-shrink: 0;
|
|
cursor: pointer;
|
|
|
|
svg {
|
|
margin: 0 !important;
|
|
font-size: 1rem;
|
|
}
|
|
}
|
|
|
|
.closeModal {
|
|
cursor: pointer;
|
|
display: flex;
|
|
align-items: center;
|
|
flex-shrink: 0;
|
|
opacity: 0.6;
|
|
|
|
&:hover {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
svg {
|
|
margin: 0 !important;
|
|
}
|
|
|
|
@extend %tabText;
|
|
}
|
|
|
|
.quoteSkeleton {
|
|
margin-top: 5px;
|
|
display: flex;
|
|
flex-flow: column;
|
|
gap: 5px;
|
|
align-items: center;
|
|
|
|
div {
|
|
display: flex;
|
|
flex-flow: row;
|
|
}
|
|
|
|
.text {
|
|
display: flex;
|
|
flex-flow: column;
|
|
padding: 5px;
|
|
}
|
|
|
|
.skeletonAuthor {
|
|
font-size: smaller;
|
|
display: flex;
|
|
flex-flow: row;
|
|
align-items: center;
|
|
gap: 25px;
|
|
padding: 0 20px 0 5px;
|
|
|
|
svg {
|
|
@include themed {
|
|
background-color: t($modal-sidebar);
|
|
padding: 10px;
|
|
border-radius: t($borderRadius);
|
|
place-items: center;
|
|
}
|
|
}
|
|
|
|
@include themed {
|
|
background-color: t($modal-sidebarActive);
|
|
border-radius: t($borderRadius);
|
|
}
|
|
|
|
.title {
|
|
font-size: medium !important;
|
|
}
|
|
|
|
.subtitle {
|
|
font-size: smaller !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
.quickLinksSkeleton {
|
|
.circles {
|
|
display: flex;
|
|
flex-flow: row;
|
|
gap: 5px;
|
|
|
|
div {
|
|
margin-top: 10px;
|
|
padding: 3px;
|
|
height: 20px;
|
|
width: 20px;
|
|
border-radius: 100%;
|
|
display: grid;
|
|
place-items: center;
|
|
|
|
@include themed {
|
|
background-color: t($modal-sidebarActive);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.clockSkeleton {
|
|
font-size: 30px !important;
|
|
font-weight: bold;
|
|
}
|