Merge tag '2024.10.1' into feature/2024.10

This commit is contained in:
dakkar 2024-11-08 15:52:37 +00:00
commit f079edaf3c
454 changed files with 9728 additions and 3363 deletions

View file

@ -13,9 +13,9 @@ SPDX-License-Identifier: AGPL-3.0-only
>
<span :class="$style.icon">
<i v-if="announcement.icon === 'info'" class="ti ti-info-circle"></i>
<i v-else-if="announcement.icon === 'warning'" class="ti ti-alert-triangle" style="color: var(--warn);"></i>
<i v-else-if="announcement.icon === 'error'" class="ti ti-circle-x" style="color: var(--error);"></i>
<i v-else-if="announcement.icon === 'success'" class="ti ti-check" style="color: var(--success);"></i>
<i v-else-if="announcement.icon === 'warning'" class="ti ti-alert-triangle" style="color: var(--MI_THEME-warn);"></i>
<i v-else-if="announcement.icon === 'error'" class="ti ti-circle-x" style="color: var(--MI_THEME-error);"></i>
<i v-else-if="announcement.icon === 'success'" class="ti ti-check" style="color: var(--MI_THEME-success);"></i>
</span>
<span :class="$style.title">{{ announcement.title }}</span>
<span :class="$style.body">{{ announcement.text }}</span>
@ -30,7 +30,7 @@ import { $i } from '@/account.js';
<style lang="scss" module>
.root {
font-size: 15px;
background: var(--panel);
background: var(--MI_THEME-panel);
}
.item {
@ -44,8 +44,8 @@ import { $i } from '@/account.js';
height: var(--height);
overflow: clip;
contain: strict;
background: var(--accent);
color: var(--fgOnAccent);
background: var(--MI_THEME-accent);
color: var(--MI_THEME-fgOnAccent);
@container (max-width: 1000px) {
display: block;

View file

@ -129,26 +129,26 @@ function getPointerEvents() {
.notifications {
position: fixed;
z-index: 3900000;
padding: 0 var(--margin);
padding: 0 var(--MI-margin);
display: flex;
&.notificationsPosition_leftTop {
top: var(--margin);
top: var(--MI-margin);
left: 0;
}
&.notificationsPosition_rightTop {
top: var(--margin);
top: var(--MI-margin);
right: 0;
}
&.notificationsPosition_leftBottom {
bottom: calc(var(--minBottomSpacing) + var(--margin));
bottom: calc(var(--MI-minBottomSpacing) + var(--MI-margin));
left: 0;
}
&.notificationsPosition_rightBottom {
bottom: calc(var(--minBottomSpacing) + var(--margin));
bottom: calc(var(--MI-minBottomSpacing) + var(--MI-margin));
right: 0;
}
@ -246,8 +246,8 @@ function getPointerEvents() {
height: 18px;
box-sizing: border-box;
border: solid 2px transparent;
border-top-color: var(--accent);
border-left-color: var(--accent);
border-top-color: var(--MI_THEME-accent);
border-left-color: var(--MI_THEME-accent);
border-radius: 50%;
animation: progress-spinner 400ms linear infinite;
}

View file

@ -19,7 +19,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-if="item === '-'" :class="$style.divider"></div>
<component :is="navbarItemDef[item].to ? 'MkA' : 'button'" v-else-if="navbarItemDef[item] && (navbarItemDef[item].show !== false)" class="_button" :class="[$style.item, { [$style.active]: navbarItemDef[item].active }]" :activeClass="$style.active" :to="navbarItemDef[item].to" v-on="navbarItemDef[item].action ? { click: navbarItemDef[item].action } : {}">
<i class="ti-fw" :class="[$style.itemIcon, navbarItemDef[item].icon]"></i><span :class="$style.itemText">{{ navbarItemDef[item].title }}</span>
<span v-if="navbarItemDef[item].indicated" :class="$style.itemIndicator">
<span v-if="navbarItemDef[item].indicated" :class="$style.itemIndicator" class="_blink">
<span v-if="navbarItemDef[item].indicateValue" class="_indicateCounter" :class="$style.itemIndicateValueIcon">{{ navbarItemDef[item].indicateValue }}</span>
<i v-else class="_indicatorCircle"></i>
</span>
@ -31,7 +31,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkA>
<button :class="$style.item" class="_button" @click="more">
<i :class="$style.itemIcon" class="ti ti-grid-dots ti-fw"></i><span :class="$style.itemText">{{ i18n.ts.more }}</span>
<span v-if="otherMenuItemIndicated" :class="$style.itemIndicator"><i class="_indicatorCircle"></i></span>
<span v-if="otherMenuItemIndicated" :class="$style.itemIndicator" class="_blink"><i class="_indicatorCircle"></i></span>
</button>
<MkA :class="$style.item" :activeClass="$style.active" to="/settings">
<i :class="$style.itemIcon" class="ti ti-settings ti-fw"></i><span :class="$style.itemText">{{ i18n.ts.settings }}</span>
@ -82,7 +82,7 @@ function more() {
<style lang="scss" module>
.root {
--nav-bg-transparent: color(from var(--navBg) srgb r g b / 0.5);
--nav-bg-transparent: color(from var(--MI_THEME-navBg) srgb r g b / 0.5);
display: flex;
flex-direction: column;
@ -94,8 +94,8 @@ function more() {
z-index: 1;
padding: 20px 0;
background: var(--nav-bg-transparent);
-webkit-backdrop-filter: var(--blur, blur(8px));
backdrop-filter: var(--blur, blur(8px));
-webkit-backdrop-filter: var(--MI-blur, blur(8px));
backdrop-filter: var(--MI-blur, blur(8px));
}
.banner {
@ -135,8 +135,8 @@ function more() {
bottom: 0;
padding: 20px 0;
background: var(--nav-bg-transparent);
-webkit-backdrop-filter: var(--blur, blur(8px));
backdrop-filter: var(--blur, blur(8px));
-webkit-backdrop-filter: var(--MI-blur, blur(8px));
backdrop-filter: var(--MI-blur, blur(8px));
}
.post {
@ -144,7 +144,7 @@ function more() {
display: block;
width: 100%;
height: 40px;
color: var(--fgOnAccent);
color: var(--MI_THEME-fgOnAccent);
font-weight: bold;
text-align: left;
@ -160,12 +160,12 @@ function more() {
right: 0;
bottom: 0;
border-radius: var(--radius-ellipse);
background: linear-gradient(90deg, var(--buttonGradateA), var(--buttonGradateB));
background: linear-gradient(90deg, var(--MI_THEME-buttonGradateA), var(--MI_THEME-buttonGradateB));
}
&:hover, &.active {
&::before {
background: var(--accentLighten);
background: var(--MI_THEME-accentLighten);
}
}
}
@ -209,7 +209,7 @@ function more() {
.divider {
margin: 16px 16px;
border-top: solid 0.5px var(--divider);
border-top: solid 0.5px var(--MI_THEME-divider);
}
.item {
@ -223,15 +223,15 @@ function more() {
width: 100%;
text-align: left;
box-sizing: border-box;
color: var(--navFg);
color: var(--MI_THEME-navFg);
&:hover {
text-decoration: none;
color: var(--navHoverFg);
color: var(--MI_THEME-navHoverFg);
}
&.active {
color: var(--navActive);
color: var(--MI_THEME-navActive);
}
&:hover, &.active {
@ -247,7 +247,7 @@ function more() {
right: 0;
bottom: 0;
border-radius: var(--radius-ellipse);
background: var(--accentedBg);
background: var(--MI_THEME-accentedBg);
}
}
}
@ -262,9 +262,8 @@ function more() {
position: absolute;
top: 0;
left: 20px;
color: var(--navIndicator);
color: var(--MI_THEME-navIndicator);
font-size: 8px;
animation: global-blink 1s infinite;
&:has(.itemIndicateValueIcon) {
animation: none;

View file

@ -29,7 +29,7 @@ SPDX-License-Identifier: AGPL-3.0-only
v-on="navbarItemDef[item].action ? { click: navbarItemDef[item].action } : {}"
>
<i class="ti-fw" :class="[$style.itemIcon, navbarItemDef[item].icon]"></i><span :class="$style.itemText">{{ navbarItemDef[item].title }}</span>
<span v-if="navbarItemDef[item].indicated" :class="$style.itemIndicator">
<span v-if="navbarItemDef[item].indicated" :class="$style.itemIndicator" class="_blink">
<span v-if="navbarItemDef[item].indicateValue" class="_indicateCounter" :class="$style.itemIndicateValueIcon">{{ navbarItemDef[item].indicateValue }}</span>
<i v-else class="_indicatorCircle"></i>
</span>
@ -41,7 +41,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkA>
<button class="_button" :class="$style.item" @click="more">
<i :class="$style.itemIcon" class="ti ti-grid-dots ti-fw"></i><span :class="$style.itemText">{{ i18n.ts.more }}</span>
<span v-if="otherMenuItemIndicated" :class="$style.itemIndicator"><i class="_indicatorCircle"></i></span>
<span v-if="otherMenuItemIndicated" :class="$style.itemIndicator" class="_blink"><i class="_indicatorCircle"></i></span>
</button>
<MkA v-tooltip.noDelay.right="i18n.ts.settings" :class="$style.item" :activeClass="$style.active" to="/settings">
<i :class="$style.itemIcon" class="ti ti-settings ti-fw"></i><span :class="$style.itemText">{{ i18n.ts.settings }}</span>
@ -111,7 +111,7 @@ function more(ev: MouseEvent) {
.root {
--nav-width: 250px;
--nav-icon-only-width: 80px;
--nav-bg-transparent: color(from var(--navBg) srgb r g b / 0.5);
--nav-bg-transparent: color(from var(--MI_THEME-navBg) srgb r g b / 0.5);
flex: 0 0 var(--nav-width);
width: var(--nav-width);
@ -129,7 +129,7 @@ function more(ev: MouseEvent) {
overflow: auto;
overflow-x: clip;
overscroll-behavior: contain;
background: var(--navBg);
background: var(--MI_THEME-navBg);
contain: strict;
display: flex;
flex-direction: column;
@ -146,8 +146,8 @@ function more(ev: MouseEvent) {
z-index: 1;
padding: 20px 0;
background: var(--nav-bg-transparent);
-webkit-backdrop-filter: var(--blur, blur(8px));
backdrop-filter: var(--blur, blur(8px));
-webkit-backdrop-filter: var(--MI-blur, blur(8px));
backdrop-filter: var(--MI-blur, blur(8px));
}
.banner {
@ -172,7 +172,7 @@ function more(ev: MouseEvent) {
outline: none;
> .instanceIcon {
outline: 2px solid var(--focus);
outline: 2px solid var(--MI_THEME-focus);
outline-offset: 2px;
}
}
@ -196,8 +196,8 @@ function more(ev: MouseEvent) {
bottom: 0;
padding-top: 20px;
background: var(--nav-bg-transparent);
-webkit-backdrop-filter: var(--blur, blur(8px));
backdrop-filter: var(--blur, blur(8px));
-webkit-backdrop-filter: var(--MI-blur, blur(8px));
backdrop-filter: var(--MI-blur, blur(8px));
}
.post {
@ -205,7 +205,7 @@ function more(ev: MouseEvent) {
display: block;
width: 100%;
height: 40px;
color: var(--fgOnAccent);
color: var(--MI_THEME-fgOnAccent);
font-weight: bold;
text-align: left;
@ -221,21 +221,21 @@ function more(ev: MouseEvent) {
right: 0;
bottom: 0;
border-radius: var(--radius-ellipse);
background: linear-gradient(90deg, var(--buttonGradateA), var(--buttonGradateB));
background: linear-gradient(90deg, var(--MI_THEME-buttonGradateA), var(--MI_THEME-buttonGradateB));
}
&:focus-visible {
outline: none;
&::before {
outline: 2px solid var(--fgOnAccent);
outline: 2px solid var(--MI_THEME-fgOnAccent);
outline-offset: -4px;
}
}
&:hover, &.active {
&::before {
background: var(--accentLighten);
background: var(--MI_THEME-accentLighten);
}
}
}
@ -265,7 +265,7 @@ function more(ev: MouseEvent) {
outline: none;
> .avatar {
box-shadow: 0 0 0 4px var(--focus);
box-shadow: 0 0 0 4px var(--MI_THEME-focus);
}
}
}
@ -291,7 +291,7 @@ function more(ev: MouseEvent) {
.divider {
margin: 16px 16px;
border-top: solid 0.5px var(--divider);
border-top: solid 0.5px var(--MI_THEME-divider);
}
.item {
@ -305,28 +305,28 @@ function more(ev: MouseEvent) {
width: 100%;
text-align: left;
box-sizing: border-box;
color: var(--navFg);
color: var(--MI_THEME-navFg);
&:hover {
text-decoration: none;
color: var(--navHoverFg);
color: var(--MI_THEME-navHoverFg);
}
&.active {
color: var(--navActive);
color: var(--MI_THEME-navActive);
}
&:focus-visible {
outline: none;
&::before {
outline: 2px solid var(--focus);
outline: 2px solid var(--MI_THEME-focus);
outline-offset: -2px;
}
}
&:hover, &.active, &:focus {
color: var(--accent);
color: var(--MI_THEME-accent);
&::before {
content: "";
@ -340,7 +340,7 @@ function more(ev: MouseEvent) {
right: 0;
bottom: 0;
border-radius: var(--radius-ellipse);
background: var(--accentedBg);
background: var(--MI_THEME-accentedBg);
}
}
}
@ -355,9 +355,8 @@ function more(ev: MouseEvent) {
position: absolute;
top: 0;
left: 20px;
color: var(--navIndicator);
color: var(--MI_THEME-navIndicator);
font-size: 8px;
animation: global-blink 1s infinite;
&:has(.itemIndicateValueIcon) {
animation: none;
@ -387,8 +386,8 @@ function more(ev: MouseEvent) {
z-index: 1;
padding: 20px 0;
background: var(--nav-bg-transparent);
-webkit-backdrop-filter: var(--blur, blur(8px));
backdrop-filter: var(--blur, blur(8px));
-webkit-backdrop-filter: var(--MI-blur, blur(8px));
backdrop-filter: var(--MI-blur, blur(8px));
}
.instance {
@ -400,7 +399,7 @@ function more(ev: MouseEvent) {
outline: none;
> .instanceIcon {
outline: 2px solid var(--focus);
outline: 2px solid var(--MI_THEME-focus);
outline-offset: 2px;
}
}
@ -417,8 +416,8 @@ function more(ev: MouseEvent) {
bottom: 0;
padding-top: 20px;
background: var(--nav-bg-transparent);
-webkit-backdrop-filter: var(--blur, blur(8px));
backdrop-filter: var(--blur, blur(8px));
-webkit-backdrop-filter: var(--MI-blur, blur(8px));
backdrop-filter: var(--MI-blur, blur(8px));
}
.post {
@ -440,28 +439,28 @@ function more(ev: MouseEvent) {
width: 52px;
aspect-ratio: 1/1;
border-radius: var(--radius-full);
background: linear-gradient(90deg, var(--buttonGradateA), var(--buttonGradateB));
background: linear-gradient(90deg, var(--MI_THEME-buttonGradateA), var(--MI_THEME-buttonGradateB));
}
&:focus-visible {
outline: none;
&::before {
outline: 2px solid var(--fgOnAccent);
outline: 2px solid var(--MI_THEME-fgOnAccent);
outline-offset: -4px;
}
}
&:hover, &.active {
&::before {
background: var(--accentLighten);
background: var(--MI_THEME-accentLighten);
}
}
}
.postIcon {
position: relative;
color: var(--fgOnAccent);
color: var(--MI_THEME-fgOnAccent);
}
.postText {
@ -479,7 +478,7 @@ function more(ev: MouseEvent) {
outline: none;
> .avatar {
box-shadow: 0 0 0 4px var(--focus);
box-shadow: 0 0 0 4px var(--MI_THEME-focus);
}
}
}
@ -501,7 +500,7 @@ function more(ev: MouseEvent) {
.divider {
margin: 8px auto;
width: calc(100% - 32px);
border-top: solid 0.5px var(--divider);
border-top: solid 0.5px var(--MI_THEME-divider);
}
.item {
@ -515,14 +514,14 @@ function more(ev: MouseEvent) {
outline: none;
&::before {
outline: 2px solid var(--focus);
outline: 2px solid var(--MI_THEME-focus);
outline-offset: -2px;
}
}
&:hover, &.active, &:focus {
text-decoration: none;
color: var(--accent);
color: var(--MI_THEME-accent);
&::before {
content: "";
@ -536,7 +535,7 @@ function more(ev: MouseEvent) {
right: 0;
bottom: 0;
border-radius: var(--radius-ellipse);
background: var(--accentedBg);
background: var(--MI_THEME-accentedBg);
}
> .icon,
@ -560,9 +559,8 @@ function more(ev: MouseEvent) {
position: absolute;
top: 6px;
left: 24px;
color: var(--navIndicator);
color: var(--MI_THEME-navIndicator);
font-size: 8px;
animation: global-blink 1s infinite;
&:has(.itemIndicateValueIcon) {
animation: none;

View file

@ -32,7 +32,7 @@ const XUserList = defineAsyncComponent(() => import('./statusbar-user-list.vue')
<style lang="scss" module>
.root {
font-size: 15px;
background: var(--panel);
background: var(--MI_THEME-panel);
}
.item {
@ -81,7 +81,7 @@ const XUserList = defineAsyncComponent(() => import('./statusbar-user-list.vue')
.name {
padding: 0 var(--nameMargin);
font-weight: bold;
color: var(--accent);
color: var(--MI_THEME-accent);
&:empty {
display: none;

View file

@ -48,8 +48,8 @@ onUnmounted(() => {
.root {
position: fixed;
z-index: v-bind(zIndex);
bottom: calc(var(--minBottomSpacing) + var(--margin));
right: var(--margin);
bottom: calc(var(--MI-minBottomSpacing) + var(--MI-margin));
right: var(--MI-margin);
margin: 0;
padding: 12px;
font-size: 0.9em;

View file

@ -125,10 +125,10 @@ const zIndex = os.claimZIndex('high');
height: 8px;
}
.mk-uploader > ol > li > progress::-webkit-progress-value {
background: var(--accent);
background: var(--MI_THEME-accent);
}
.mk-uploader > ol > li > progress::-webkit-progress-bar {
//background: var(--accentAlpha01);
//background: var(--MI_THEME-accentAlpha01);
background: transparent;
}
</style>