Added dark theme. Fixed actor country aggregation.
This commit is contained in:
parent
255dd48af6
commit
69cefa57ff
|
@ -3,9 +3,10 @@
|
|||
padding: .5rem .75rem;
|
||||
font-size: 1rem;
|
||||
flex-basis: 0;
|
||||
border: solid 1px var(--grey-light-30);
|
||||
color: inherit;
|
||||
border: solid 1px var(--glass-weak-30);
|
||||
border-radius: .25rem;
|
||||
background: var(--grey-light-60);
|
||||
background: var(--background-base-10);
|
||||
font: inherit;
|
||||
|
||||
&:focus {
|
||||
|
@ -31,14 +32,14 @@
|
|||
border-radius: .25rem;
|
||||
background: var(--background);
|
||||
box-shadow: 0 0 3px var(--shadow-weak-30);
|
||||
color: var(--shadow-strong-20);
|
||||
color: var(--glass);
|
||||
font-size: .9rem;
|
||||
font-weight: bold;
|
||||
|
||||
.icon {
|
||||
height: auto;
|
||||
padding: 0 .75rem 0 .25rem;
|
||||
fill: var(--shadow-strong-10);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
@ -70,7 +71,7 @@
|
|||
}
|
||||
|
||||
&:disabled {
|
||||
background: var(--shadow-weak-10);
|
||||
background: var(--glass);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -84,7 +85,7 @@
|
|||
}
|
||||
|
||||
&:disabled {
|
||||
background: var(--shadow-weak-10);
|
||||
background: var(--glass);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -118,7 +119,7 @@
|
|||
|
||||
.button-cancel {
|
||||
background: none;
|
||||
color: var(--shadow-strong-10);
|
||||
color: var(--glass);
|
||||
font-weight: normal;
|
||||
|
||||
&:hover:not(:disabled) {
|
||||
|
@ -127,7 +128,7 @@
|
|||
}
|
||||
|
||||
&:disabled {
|
||||
color: var(--shadow-weak-10);
|
||||
color: var(--glass);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -137,7 +138,6 @@
|
|||
|
||||
.filter-section {
|
||||
width: 100%;
|
||||
border-bottom: solid 1px var(--shadow-hint);
|
||||
margin-bottom: .25rem;
|
||||
}
|
||||
|
||||
|
@ -209,7 +209,7 @@
|
|||
min-width: 1.5rem;
|
||||
flex-shrink: 0;
|
||||
padding: 0 .5rem;
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
font-weight: bold;
|
||||
font-size: .9rem;
|
||||
|
||||
|
@ -218,7 +218,7 @@
|
|||
}
|
||||
|
||||
.icon {
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
@ -246,7 +246,7 @@
|
|||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: .5rem 0 .25rem .25rem;
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
font-weight: bold;
|
||||
font-size: .9rem;
|
||||
|
||||
|
@ -272,8 +272,8 @@
|
|||
height: 1.25rem;
|
||||
appearance: none;
|
||||
border-radius: 1rem;
|
||||
background-color: var(--shadow-weak-40);
|
||||
background-image: radial-gradient(circle, var(--shadow-weak-10) .3rem, transparent calc(.3rem + 1px));
|
||||
background-color: var(--glass-weak-40);
|
||||
background-image: radial-gradient(circle, var(--glass-weak-10) .3rem, transparent calc(.3rem + 1px));
|
||||
cursor: pointer;
|
||||
|
||||
&::-webkit-slider-thumb {
|
||||
|
|
|
@ -49,6 +49,16 @@
|
|||
--highlight-strong-20: rgba(255, 255, 255, .75);
|
||||
--highlight-strong-30: rgba(255, 255, 255, .9);
|
||||
|
||||
--glass-weak-50: rgba(0, 0, 0, .02);
|
||||
--glass-weak-40: rgba(0, 0, 0, .05);
|
||||
--glass-weak-30: rgba(0, 0, 0, .1);
|
||||
--glass-weak-20: rgba(0, 0, 0, .2);
|
||||
--glass-weak-10: rgba(0, 0, 0, .35);
|
||||
--glass: rgba(0, 0, 0, .5);
|
||||
--glass-strong-10: rgba(0, 0, 0, .6);
|
||||
--glass-strong-20: rgba(0, 0, 0, .75);
|
||||
--glass-strong-30: rgba(0, 0, 0, .9);
|
||||
|
||||
--text: #222;
|
||||
--text-light: #fff;
|
||||
|
||||
|
@ -71,3 +81,42 @@
|
|||
|
||||
--gold: #d5b522;
|
||||
}
|
||||
|
||||
.dark {
|
||||
--background-dark-20: #000;
|
||||
--background-dark-10: #111;
|
||||
--background: #222;
|
||||
|
||||
--background-base: #252525;
|
||||
--background-base-10: #1a1a1a;
|
||||
--background-base-20: #050505;
|
||||
--background-level-10: #fff;
|
||||
--background-level-20: #eee;
|
||||
--background-level-30: #eee;
|
||||
--background-dim: var(--shadow-weak-10);
|
||||
|
||||
--text: #fcfcfc;
|
||||
|
||||
--glass-weak-50: rgba(255, 255, 255, .02);
|
||||
--glass-weak-40: rgba(255, 255, 255, .05);
|
||||
--glass-weak-30: rgba(255, 255, 255, .1);
|
||||
--glass-weak-20: rgba(255, 255, 255, .2);
|
||||
--glass-weak-10: rgba(255, 255, 255, .35);
|
||||
--glass: rgba(255, 255, 255, .5);
|
||||
--glass-strong-10: rgba(255, 255, 255, .6);
|
||||
--glass-strong-20: rgba(255, 255, 255, .75);
|
||||
--glass-strong-30: rgba(255, 255, 255, .9);
|
||||
|
||||
--grey-dark-50: #101010;
|
||||
--grey-dark-40: #1f1f1f;
|
||||
--grey-dark-30: #3c3c3c;
|
||||
--grey-dark-20: #606060;
|
||||
--grey-dark-10: #808080;
|
||||
--grey: #aaa;
|
||||
--grey-light-10: #bbb;
|
||||
--grey-light-20: #ccc;
|
||||
--grey-light-30: #ddd;
|
||||
--grey-light-40: #eee;
|
||||
--grey-light-50: #fafafa;
|
||||
--grey-light-60: #fcfcfc;
|
||||
}
|
||||
|
|
|
@ -177,20 +177,20 @@
|
|||
/* Dropdown */
|
||||
|
||||
.v-popper--theme-dropdown .v-popper__inner {
|
||||
background: #fff;
|
||||
color: black;
|
||||
background: var(--background);
|
||||
color: var(--text);
|
||||
border-radius: 6px;
|
||||
border: 1px solid #ddd;
|
||||
border: solid 1px var(--glass-weak-40);
|
||||
box-shadow: 0 6px 30px rgba(0, 0, 0, .1);
|
||||
}
|
||||
|
||||
.v-popper--theme-dropdown .v-popper__arrow-inner {
|
||||
visibility: visible;
|
||||
border-color: #fff;
|
||||
border-color: var(--background);
|
||||
}
|
||||
|
||||
.v-popper--theme-dropdown .v-popper__arrow-outer {
|
||||
border-color: #ddd;
|
||||
border-color: var(--glass-weak-40);
|
||||
}
|
||||
|
||||
.resize-observer {
|
||||
|
|
|
@ -266,6 +266,7 @@ function updateFilter(prop, value, reload = true) {
|
|||
min-height: 100%;
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
background: var(--background-base-10);
|
||||
}
|
||||
|
||||
.actors-container {
|
||||
|
|
|
@ -568,14 +568,14 @@ function selectStash(selectedStash) {
|
|||
flex-shrink: 0;
|
||||
width: 3.5rem;
|
||||
font-size: .9rem;
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
|
||||
&.item-logic {
|
||||
width: 2.75rem;
|
||||
}
|
||||
|
||||
.icon {
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -586,11 +586,11 @@ function selectStash(selectedStash) {
|
|||
flex-grow: 1;
|
||||
gap: .5rem 0;
|
||||
padding: .5rem 0;
|
||||
border-bottom: solid 1px var(--shadow-weak-40);
|
||||
border-bottom: solid 1px var(--glass-weak-40);
|
||||
|
||||
&.or .field-item::before,
|
||||
&.and .field-item::before {
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
padding: 0 .5rem;
|
||||
}
|
||||
|
||||
|
@ -621,7 +621,7 @@ function selectStash(selectedStash) {
|
|||
right: -.5rem;
|
||||
padding: .2rem;
|
||||
border-radius: 1rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
background: var(--background);
|
||||
box-shadow: 0 0 3px var(--shadow-weak-20);
|
||||
|
||||
|
@ -681,7 +681,7 @@ function selectStash(selectedStash) {
|
|||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: .5rem 1rem;
|
||||
border-bottom: solid 1px var(--shadow-weak-40);
|
||||
border-bottom: solid 1px var(--glass-weak-40);
|
||||
}
|
||||
|
||||
.field-items {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<Teleport to="body">
|
||||
<Teleport to="#container">
|
||||
<div
|
||||
class="dialog-container"
|
||||
@click="emit('close')"
|
||||
|
@ -55,7 +55,7 @@ onMounted(() => emit('open'));
|
|||
|
||||
.dialog-description {
|
||||
margin: 0 0 .5rem 0;
|
||||
color: var(--shadow-strong-10);
|
||||
color: var(--glass-strong-10);
|
||||
font-size: .9rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ defineProps({
|
|||
box-sizing: border-box;
|
||||
padding: 1rem;
|
||||
border-radius: .5rem;
|
||||
background: var(--grey-dark-40);
|
||||
background: var(--shadow-strong-40);
|
||||
color: var(--text-light);
|
||||
font-size: 1.25rem;
|
||||
font-weight: bold;
|
||||
|
|
|
@ -80,7 +80,7 @@ const emit = defineEmits(['update']);
|
|||
|
||||
.select {
|
||||
flex-grow: 1;
|
||||
color: var(--shadow-strong-10);
|
||||
color: var(--glass-strong-10);
|
||||
|
||||
option {
|
||||
color: var(--text);
|
||||
|
|
|
@ -171,7 +171,7 @@ const entities = computed(() => {
|
|||
width: 2.25rem;
|
||||
height: 1rem;
|
||||
transform: rotate(-135deg);
|
||||
fill: var(--shadow-weak-30);
|
||||
fill: var(--glass-weak-30);
|
||||
overflow: hidden; /* prevent parent jumping on load */
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ const emit = defineEmits(['country']);
|
|||
|
||||
<style scoped>
|
||||
.countries:not(:last-child) {
|
||||
border-bottom: solid 1px var(--shadow-weak-30);
|
||||
border-bottom: solid 1px var(--glass-weak-30);
|
||||
}
|
||||
|
||||
.country {
|
||||
|
@ -57,7 +57,7 @@ const emit = defineEmits(['country']);
|
|||
}
|
||||
|
||||
&:hover {
|
||||
background: var(--shadow-weak-30);
|
||||
background: var(--glass-weak-30);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ const emit = defineEmits(['country']);
|
|||
display: flex;
|
||||
align-items: center;
|
||||
padding: .5rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
|
||||
&:hover {
|
||||
fill: var(--error);
|
||||
|
|
|
@ -81,7 +81,7 @@ function toggleFilters(state) {
|
|||
}
|
||||
|
||||
&:not(:last-child) {
|
||||
border-bottom: solid 1px var(--shadow-weak-30);
|
||||
border-bottom: solid 1px var(--glass-weak-30);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,7 +98,7 @@ function toggleFilters(state) {
|
|||
display: flex;
|
||||
align-items: center;
|
||||
padding-left: .5rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
|
@ -109,13 +109,13 @@ function toggleFilters(state) {
|
|||
|
||||
.filter-mode {
|
||||
width: 100%;
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
background: none;
|
||||
padding: .75rem;
|
||||
margin: 0 0 .5rem 0;
|
||||
font-size: 1rem;
|
||||
border: none;
|
||||
border-bottom: solid 1px var(--shadow-hint);
|
||||
border-bottom: solid 1px var(--glass-weak-40);
|
||||
|
||||
option {
|
||||
color: var(--text-dark);
|
||||
|
@ -124,7 +124,7 @@ function toggleFilters(state) {
|
|||
|
||||
.filters-sort {
|
||||
display: flex;
|
||||
border-bottom: solid 1px var(--shadow-weak-30);
|
||||
border-bottom: solid 1px var(--glass-weak-30);
|
||||
}
|
||||
|
||||
.filters-search {
|
||||
|
@ -138,25 +138,25 @@ function toggleFilters(state) {
|
|||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: .5rem 1rem;
|
||||
color: var(--shadow-weak-10);
|
||||
color: var(--glass-weak-10);
|
||||
text-decoration: none;
|
||||
cursor: default;
|
||||
|
||||
.icon {
|
||||
fill: var(--shadow-weak-30);
|
||||
fill: var(--glass-weak-30);
|
||||
margin: 0 0 0 1rem;
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
|
||||
.icon {
|
||||
fill: var(--shadow-weak-10);
|
||||
fill: var(--glass-weak-10);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: var(--text);
|
||||
background: var(--shadow-hint);
|
||||
background: var(--glass-weak-30);
|
||||
cursor: pointer;
|
||||
|
||||
.icon {
|
||||
|
@ -184,7 +184,7 @@ function toggleFilters(state) {
|
|||
align-items: stretch;
|
||||
|
||||
&:hover {
|
||||
background: var(--shadow-weak-30);
|
||||
background: var(--glass-weak-30);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
@ -240,7 +240,7 @@ function toggleFilters(state) {
|
|||
.icon {
|
||||
width: 1rem;
|
||||
padding: 0 .75rem;
|
||||
fill: var(--shadow-weak-30);
|
||||
fill: var(--glass-weak-30);
|
||||
}
|
||||
|
||||
.filter-remove {
|
||||
|
@ -255,7 +255,7 @@ function toggleFilters(state) {
|
|||
|
||||
.filter-include:hover,
|
||||
.filter-name:hover {
|
||||
background: var(--shadow-weak-30);
|
||||
background: var(--glass-weak-30);
|
||||
}
|
||||
|
||||
.filter-sort {
|
||||
|
@ -267,14 +267,14 @@ function toggleFilters(state) {
|
|||
padding: 0 .25rem;
|
||||
cursor: pointer;
|
||||
font-weight: bold;
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
|
||||
&.order {
|
||||
padding: 0 .5rem 0 .25rem;
|
||||
}
|
||||
|
||||
.icon {
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
@ -293,7 +293,7 @@ function toggleFilters(state) {
|
|||
|
||||
.filter-remove.icon {
|
||||
padding: .25rem .6rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
|
||||
&:hover {
|
||||
fill: var(--alert);
|
||||
|
@ -308,13 +308,13 @@ function toggleFilters(state) {
|
|||
justify-content: flex-end;
|
||||
padding: 0 .25rem;
|
||||
overflow: hidden;
|
||||
color: var(--shadow-weak-10);
|
||||
color: var(--glass-weak-10);
|
||||
font-size: .9rem;
|
||||
}
|
||||
|
||||
.filter-empty {
|
||||
padding: .5rem;
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
|
@ -329,7 +329,7 @@ function toggleFilters(state) {
|
|||
|
||||
@media (--compact) {
|
||||
.filter {
|
||||
border-right: solid 1px var(--shadow-weak-30);
|
||||
border-right: solid 1px var(--glass-weak-30);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -377,7 +377,7 @@ function toggleFilters(state) {
|
|||
right: -2.5rem;
|
||||
border-radius: 0 .5rem .5rem 0;
|
||||
background: var(--background);
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
font-weight: bold;
|
||||
box-shadow: inset 0 0 3px var(--shadow-weak-30);
|
||||
|
||||
|
@ -395,7 +395,7 @@ function toggleFilters(state) {
|
|||
}
|
||||
|
||||
.icon {
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
|
|
@ -75,7 +75,8 @@ const emit = defineEmits(['update']);
|
|||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
border: none;
|
||||
color: var(--shadow);
|
||||
border-radius: 100%;
|
||||
color: var(--glass);
|
||||
background: var(--background);
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
|
@ -89,7 +90,7 @@ const emit = defineEmits(['update']);
|
|||
}
|
||||
|
||||
.icon {
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
|
|
@ -41,10 +41,10 @@ const { env } = pageContext;
|
|||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: .5rem 1rem;
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
|
||||
&:not(:first-child) {
|
||||
border-left: solid 1px var(--shadow-weak-30);
|
||||
border-left: solid 1px var(--glass-weak-30);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -59,6 +59,6 @@ const { env } = pageContext;
|
|||
.discord .icon {
|
||||
height: 1.25rem;
|
||||
width: 3.5rem;
|
||||
fill: var(--shadow-strong-10);
|
||||
fill: var(--glass-strong-10);
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -53,7 +53,7 @@ defineEmits(['change']);
|
|||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
position: relative;
|
||||
background-color: var(--shadow-weak-30);
|
||||
background-color: var(--glass-weak-30);
|
||||
border-radius: .25rem;
|
||||
cursor: pointer;
|
||||
transition: background .15s ease;
|
||||
|
|
|
@ -148,10 +148,11 @@ async function setRange(prop, value) {
|
|||
.range-container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 0;
|
||||
}
|
||||
|
||||
.range {
|
||||
--slider-track: var(--shadow-weak-30);
|
||||
--slider-track: var(--glass-weak-30);
|
||||
--slider-range: var(--primary-light-30);
|
||||
--slider-thumb: var(--primary);
|
||||
|
||||
|
@ -161,7 +162,7 @@ async function setRange(prop, value) {
|
|||
border-radius: .625rem;
|
||||
|
||||
&.disabled {
|
||||
--slider-range: var(--shadow-weak-40);
|
||||
--slider-range: var(--glass-weak-40);
|
||||
--slider-thumb: var(--disabled-handle);
|
||||
}
|
||||
}
|
||||
|
@ -221,6 +222,6 @@ async function setRange(prop, value) {
|
|||
width: 1.25rem;
|
||||
height: 1.25rem;
|
||||
flex-shrink: 0;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -79,11 +79,11 @@
|
|||
</form>
|
||||
|
||||
<div
|
||||
v-if="user"
|
||||
class="userpanel"
|
||||
:class="{ searching: searchFocused }"
|
||||
>
|
||||
<VDropdown
|
||||
v-if="user"
|
||||
:triggers="['click']"
|
||||
:prevent-overflow="true"
|
||||
class="notifs-trigger"
|
||||
|
@ -115,21 +115,35 @@
|
|||
<VDropdown
|
||||
:triggers="['click']"
|
||||
:prevent-overflow="true"
|
||||
class="menu-trigger"
|
||||
>
|
||||
<img
|
||||
:src="user.avatar"
|
||||
class="avatar"
|
||||
>
|
||||
<div class="avatar-container">
|
||||
<img
|
||||
v-if="user"
|
||||
:src="user.avatar"
|
||||
class="avatar"
|
||||
>
|
||||
|
||||
<Icon
|
||||
v-else
|
||||
icon="user7"
|
||||
class="avatar-placeholder"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<template #popper>
|
||||
<div class="menu">
|
||||
<a
|
||||
v-if="user"
|
||||
:href="`/user/${user.username}`"
|
||||
class="menu-header ellipsis"
|
||||
>{{ user.username }}</a>
|
||||
|
||||
<ul class="menu-list nolist">
|
||||
<li class="menu-item">
|
||||
<li
|
||||
v-if="user"
|
||||
class="menu-item"
|
||||
>
|
||||
<a
|
||||
:href="`/user/${user.username}`"
|
||||
class="menu-button nolink"
|
||||
|
@ -140,7 +154,21 @@
|
|||
</li>
|
||||
|
||||
<li
|
||||
v-if="user.primaryStash"
|
||||
v-else-if="allowLogin"
|
||||
v-close-popper
|
||||
class="menu-item"
|
||||
>
|
||||
<a
|
||||
:href="`/login?r=${encodeURIComponent(currentPath)}`"
|
||||
class="menu-button nolink"
|
||||
>
|
||||
<Icon icon="enter" />
|
||||
Log in
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li
|
||||
v-if="user?.primaryStash"
|
||||
class="menu-item"
|
||||
>
|
||||
<a
|
||||
|
@ -161,6 +189,26 @@
|
|||
Settings
|
||||
</li>
|
||||
|
||||
<li
|
||||
v-if="theme === 'dark'"
|
||||
v-close-popper
|
||||
class="menu-item menu-button"
|
||||
@click="setTheme('light')"
|
||||
>
|
||||
<Icon icon="sun3" />
|
||||
Light theme
|
||||
</li>
|
||||
|
||||
<li
|
||||
v-else
|
||||
v-close-popper
|
||||
class="menu-item menu-button"
|
||||
@click="setTheme('dark')"
|
||||
>
|
||||
<Icon icon="moon" />
|
||||
Dark theme
|
||||
</li>
|
||||
|
||||
<li
|
||||
class="menu-button menu-item logout"
|
||||
@click="logout"
|
||||
|
@ -170,20 +218,6 @@
|
|||
</template>
|
||||
</VDropdown>
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-else-if="allowLogin"
|
||||
class="userpanel"
|
||||
:class="{ searching: searchFocused }"
|
||||
>
|
||||
<a
|
||||
:href="`/login?r=${encodeURIComponent(currentPath)}`"
|
||||
class="login button button-submit nolink"
|
||||
>
|
||||
<span class="login-text">Log in</span>
|
||||
<Icon icon="enter" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Settings
|
||||
|
@ -205,8 +239,11 @@ import {
|
|||
inject,
|
||||
} from 'vue';
|
||||
|
||||
import Cookies from 'js-cookie';
|
||||
|
||||
import navigate from '#/src/navigate.js';
|
||||
import { del } from '#/src/api.js';
|
||||
import events from '#/src/events.js';
|
||||
// import getPath from '#/src/get-path.js';
|
||||
|
||||
import Notifications from '#/components/header/notifications.vue';
|
||||
|
@ -216,6 +253,7 @@ import AlertDialog from '#/components/alerts/create.vue';
|
|||
import logo from '../../assets/img/logo.svg?raw'; // eslint-disable-line import/no-unresolved
|
||||
|
||||
const pageContext = inject('pageContext');
|
||||
const theme = ref(pageContext.env.theme);
|
||||
|
||||
const user = pageContext.user;
|
||||
const unseen = ref(pageContext.meta.unseenNotifications);
|
||||
|
@ -232,6 +270,13 @@ function search() {
|
|||
navigate('/search', { q: query.value }, { redirect: true });
|
||||
}
|
||||
|
||||
function setTheme(newTheme) {
|
||||
theme.value = newTheme;
|
||||
|
||||
Cookies.set('theme', newTheme);
|
||||
events.emit('theme', newTheme);
|
||||
}
|
||||
|
||||
async function logout() {
|
||||
await del('/session');
|
||||
navigate('/login?consent', null, { redirect: true }); // pass consent variable to reinstate in new session
|
||||
|
@ -275,7 +320,7 @@ function blurSearch(event) {
|
|||
|
||||
.nav-item .link {
|
||||
font-size: .9rem;
|
||||
color: var(--shadow-strong-10);
|
||||
color: var(--glass-strong-10);
|
||||
box-sizing: border-box;
|
||||
padding: 1rem;
|
||||
height: 100%;
|
||||
|
@ -330,7 +375,7 @@ function blurSearch(event) {
|
|||
.icon {
|
||||
height: 100%;
|
||||
padding: 0 .75rem 0 .5rem;
|
||||
fill: var(--shadow-weak-10);
|
||||
fill: var(--glass-weak-10);
|
||||
}
|
||||
|
||||
&.focused {
|
||||
|
@ -355,7 +400,6 @@ function blurSearch(event) {
|
|||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 1rem 0 0;
|
||||
font-size: 0;
|
||||
cursor: pointer;
|
||||
|
||||
|
@ -368,6 +412,21 @@ function blurSearch(event) {
|
|||
}
|
||||
}
|
||||
|
||||
.menu-trigger {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.avatar-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
padding: 0 1rem 0 0;
|
||||
|
||||
&:hover .icon {
|
||||
fill: var(--primary);
|
||||
}
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
|
@ -375,6 +434,13 @@ function blurSearch(event) {
|
|||
object-fit: cover;
|
||||
}
|
||||
|
||||
.avatar-placeholder {
|
||||
width: 1.25rem;
|
||||
padding-left: 1rem;
|
||||
height: 100%;
|
||||
fill: var(--glass-strong-20);
|
||||
}
|
||||
|
||||
.notifs-trigger {
|
||||
height: 100%;
|
||||
}
|
||||
|
@ -411,7 +477,7 @@ function blurSearch(event) {
|
|||
}
|
||||
|
||||
.notifs-bell {
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
.login {
|
||||
|
@ -433,8 +499,8 @@ function blurSearch(event) {
|
|||
.menu-header {
|
||||
display: flex;
|
||||
padding: .75rem 1rem;
|
||||
border-bottom: solid 1px var(--shadow-weak-30);
|
||||
color: var(--shadow-strong-30);
|
||||
border-bottom: solid 1px var(--glass-weak-30);
|
||||
color: var(--glass-strong-30);
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
@ -450,7 +516,7 @@ function blurSearch(event) {
|
|||
font-size: 1.1rem;
|
||||
|
||||
.icon {
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
margin-right: .75rem;
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
|
|
@ -166,7 +166,7 @@ onMounted(async () => {
|
|||
box-shadow: inset 0 0 3px var(--shadow-weak-30);
|
||||
|
||||
.icon {
|
||||
fill: var(--shadow-strong-10);
|
||||
fill: var(--glass-strong-10);
|
||||
|
||||
&:hover {
|
||||
fill: var(--primary);
|
||||
|
@ -202,14 +202,14 @@ onMounted(async () => {
|
|||
overflow: hidden;
|
||||
|
||||
&:not(:last-child) {
|
||||
border-bottom: solid 1px var(--shadow-weak-40);
|
||||
border-bottom: solid 1px var(--glass-weak-40);
|
||||
}
|
||||
|
||||
&:before {
|
||||
width: 2.5rem;
|
||||
flex-shrink: 0;
|
||||
content: '•';
|
||||
color: var(--shadow-weak-20);
|
||||
color: var(--glass-weak-20);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
@ -236,7 +236,7 @@ onMounted(async () => {
|
|||
justify-content: space-between;
|
||||
padding: .5rem 0 .1rem 0;
|
||||
box-sizing: border-box;
|
||||
color: var(--shadow-strong);
|
||||
color: var(--glass-strong);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
@ -255,12 +255,12 @@ onMounted(async () => {
|
|||
|
||||
.notif-date {
|
||||
flex-shrink: 0;
|
||||
color: var(--shadow-strong-10);
|
||||
color: var(--glass-strong-10);
|
||||
|
||||
&:after {
|
||||
content: '•';
|
||||
padding: 0 .5rem;
|
||||
color: var(--shadow-weak-20);
|
||||
color: var(--glass-weak-20);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -272,7 +272,7 @@ onMounted(async () => {
|
|||
|
||||
.notif-id {
|
||||
padding: 0 .5rem;
|
||||
color: var(--shadow-weak-10);
|
||||
color: var(--glass-weak-10);
|
||||
font-size: .9rem;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ import(`../../assets/img/icons/${props.icon}.svg?raw`).then((raw) => {
|
|||
}
|
||||
|
||||
&.active {
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
|
||||
&:hover {
|
||||
fill: var(--text);
|
||||
|
|
|
@ -199,6 +199,10 @@ const favorited = ref(props.movie.stashes?.some((movieStash) => movieStash.id ==
|
|||
opacity: .1;
|
||||
}
|
||||
|
||||
.dark .nocover {
|
||||
filter: invert();
|
||||
}
|
||||
|
||||
.tile-info {
|
||||
flex-shrink: 0;
|
||||
font-size: 0;
|
||||
|
@ -294,7 +298,7 @@ const favorited = ref(props.movie.stashes?.some((movieStash) => movieStash.id ==
|
|||
overflow: hidden;
|
||||
padding: 0 .5rem;
|
||||
margin-bottom: .25rem;
|
||||
color: var(--shadow-strong-10);
|
||||
color: var(--glass-strong-10);
|
||||
font-size: .75rem;
|
||||
}
|
||||
|
||||
|
|
|
@ -251,14 +251,14 @@ function getPath(page) {
|
|||
margin-bottom: 1rem;
|
||||
background: var(--background);
|
||||
box-shadow: 0 0 3px var(--shadow-weak-30);
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
font-weight: bold;
|
||||
font-size: 1rem;
|
||||
|
||||
.icon {
|
||||
width: .9rem;
|
||||
height: .9rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
&.active {
|
||||
|
@ -267,7 +267,7 @@ function getPath(page) {
|
|||
}
|
||||
|
||||
&.disabled .icon {
|
||||
fill: var(--shadow-weak-20);
|
||||
fill: var(--glass-weak-20);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -282,7 +282,7 @@ function getPath(page) {
|
|||
.more {
|
||||
padding: 2rem;
|
||||
text-align: center;
|
||||
color: var(--shadow-strong-10);
|
||||
color: var(--glass-strong-10);
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
|
|
|
@ -321,7 +321,7 @@ function updateFilter(prop, value, reload = true) {
|
|||
padding: .5rem 1rem;
|
||||
background: var(--background-dark-20);
|
||||
border-radius: 1rem;
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
font-size: .9rem;
|
||||
font-weight: bold;
|
||||
|
||||
|
|
|
@ -179,7 +179,7 @@ const favorited = ref(props.scene.stashes.some((sceneStash) => sceneStash.id ===
|
|||
.icon {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
fill: var(--shadow-weak-40);
|
||||
fill: var(--glass-weak-40);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -295,7 +295,7 @@ const favorited = ref(props.scene.stashes.some((sceneStash) => sceneStash.id ===
|
|||
.tag {
|
||||
margin: 0 .5rem .25rem 0;
|
||||
padding: .1rem 0;
|
||||
color: var(--shadow-strong-10);
|
||||
color: var(--glass-strong-10);
|
||||
font-size: .75rem;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -148,7 +148,7 @@ const activePage = computed(() => pageContext.urlParsed.pathname.split('/')[1]);
|
|||
padding: .75rem 1rem;
|
||||
font-size: 1.1rem;
|
||||
font-weight: bold;
|
||||
color: var(--shadow-strong-10);
|
||||
color: var(--glass-strong-10);
|
||||
|
||||
&:hover {
|
||||
color: var(--primary);
|
||||
|
@ -166,7 +166,7 @@ const activePage = computed(() => pageContext.urlParsed.pathname.split('/')[1]);
|
|||
width: 1rem;
|
||||
padding: 0 1rem;
|
||||
height: auto;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
|
|
@ -159,7 +159,7 @@ async function unstashItem(stash) {
|
|||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
padding: .5rem .5rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
&.light .icon {
|
||||
|
|
|
@ -211,7 +211,7 @@ async function rename() {
|
|||
.stash {
|
||||
width: 100%;
|
||||
border-radius: .25rem;
|
||||
background: var(--background);
|
||||
background: var(--background-base);
|
||||
box-shadow: 0 0 3px var(--shadow-weak-30);
|
||||
|
||||
&:hover {
|
||||
|
@ -222,7 +222,7 @@ async function rename() {
|
|||
.stash-header {
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
border-bottom: solid 1px var(--shadow-weak-30);
|
||||
border-bottom: solid 1px var(--glass-weak-30);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
@ -230,11 +230,11 @@ async function rename() {
|
|||
display: flex;
|
||||
height: 100%;
|
||||
padding: 0 .75rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
fill: var(--shadow-strong-30);
|
||||
fill: var(--glass-strong-30);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -268,7 +268,7 @@ async function rename() {
|
|||
|
||||
.icon {
|
||||
margin-right: .5rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
@ -283,7 +283,7 @@ async function rename() {
|
|||
.icon.private {
|
||||
display: flex;
|
||||
height: auto;
|
||||
fill: var(--shadow-weak-20);
|
||||
fill: var(--glass-weak-20);
|
||||
padding-left: .5rem;
|
||||
}
|
||||
|
||||
|
@ -295,7 +295,7 @@ async function rename() {
|
|||
.icon {
|
||||
display: flex;
|
||||
margin-right: .75rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
&.remove {
|
||||
|
|
|
@ -169,7 +169,7 @@ onMounted(() => {
|
|||
padding: 0 1rem 0 .5rem;
|
||||
|
||||
.icon {
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
|
|
@ -217,7 +217,7 @@ onMounted(() => {
|
|||
padding: 0 1rem 0 .5rem;
|
||||
|
||||
.icon {
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
|
|
@ -130,7 +130,7 @@ async function search() {
|
|||
.icon {
|
||||
padding: 0 1rem;
|
||||
height: auto;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
|
@ -153,7 +153,7 @@ async function search() {
|
|||
.section-label {
|
||||
padding: 0 1rem;
|
||||
margin-bottom: .5rem;
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
}
|
||||
|
||||
.network {
|
||||
|
@ -164,7 +164,7 @@ async function search() {
|
|||
position: relative;
|
||||
padding: 1rem;
|
||||
border-radius: .5rem;
|
||||
background: var(--grey-dark-40);
|
||||
background: var(--shadow-strong-30);
|
||||
color: var(--text-light);
|
||||
font-size: 1.25rem;
|
||||
font-weight: bold;
|
||||
|
|
|
@ -432,7 +432,7 @@ const scenes = pageContext.pageProps.scenes;
|
|||
.icon {
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
.button {
|
||||
|
@ -490,7 +490,7 @@ const scenes = pageContext.pageProps.scenes;
|
|||
}
|
||||
|
||||
.added-batch {
|
||||
color: var(--shadow-weak-10);
|
||||
color: var(--glass-weak-10);
|
||||
margin-left: .25rem;
|
||||
}
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@
|
|||
<div class="info">
|
||||
<ul
|
||||
v-if="scene.actors.length > 0"
|
||||
class="actors nolist"
|
||||
class="actors nolist nobar"
|
||||
>
|
||||
<li
|
||||
v-for="actor in scene.actors"
|
||||
|
@ -632,10 +632,15 @@ function copySummary() {
|
|||
}
|
||||
|
||||
.actors {
|
||||
display: grid;
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr));
|
||||
gap: .25rem;
|
||||
overflow-x: auto;
|
||||
|
||||
.actor {
|
||||
width: 8rem;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.tag {
|
||||
|
@ -696,7 +701,7 @@ function copySummary() {
|
|||
}
|
||||
|
||||
.added-batch {
|
||||
color: var(--shadow-weak-10);
|
||||
color: var(--glass-weak-10);
|
||||
margin-left: .25rem;
|
||||
}
|
||||
|
||||
|
@ -713,7 +718,7 @@ function copySummary() {
|
|||
.icon {
|
||||
height: auto;
|
||||
padding: 0 .5rem 0 .75rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
|
@ -726,13 +731,13 @@ function copySummary() {
|
|||
display: none;
|
||||
}
|
||||
|
||||
@media(--small) {
|
||||
@media(--compact) {
|
||||
.content {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.info {
|
||||
margin: 0 .5rem;
|
||||
margin: 0 .75rem;
|
||||
}
|
||||
|
||||
.banner-container {
|
||||
|
@ -756,7 +761,7 @@ function copySummary() {
|
|||
|
||||
.title {
|
||||
width: 100%;
|
||||
margin-left: .5rem;
|
||||
margin-left: 1rem;
|
||||
white-space: wrap;
|
||||
}
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ const query = pageContext.urlParsed.search.q;
|
|||
.results-meta {
|
||||
box-sizing: border-box;
|
||||
padding: 1rem 1rem 0 1rem;
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
font-weight: bold;
|
||||
|
||||
.link {
|
||||
|
|
|
@ -447,7 +447,7 @@ const scenes = pageContext.pageProps.scenes;
|
|||
.icon {
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
}
|
||||
|
||||
.button {
|
||||
|
@ -505,7 +505,7 @@ const scenes = pageContext.pageProps.scenes;
|
|||
}
|
||||
|
||||
.added-batch {
|
||||
color: var(--shadow-weak-10);
|
||||
color: var(--glass-weak-10);
|
||||
margin-left: .25rem;
|
||||
}
|
||||
|
||||
|
|
|
@ -258,7 +258,7 @@ onMounted(() => {
|
|||
.icon {
|
||||
padding: 0 1rem;
|
||||
height: auto;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
|
@ -282,7 +282,7 @@ onMounted(() => {
|
|||
padding: 1rem 1rem 0 1.5rem;
|
||||
margin: 0;
|
||||
text-transform: capitalize;
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
}
|
||||
|
||||
.tag {
|
||||
|
@ -306,7 +306,7 @@ onMounted(() => {
|
|||
text-transform: capitalize;
|
||||
font-size: .9rem;
|
||||
font-weight: bold;
|
||||
color: var(--shadow-strong-10);
|
||||
color: var(--glass-strong-10);
|
||||
}
|
||||
|
||||
.thumb-container {
|
||||
|
|
|
@ -332,7 +332,7 @@ async function removeAlert(alert) {
|
|||
align-items: center;
|
||||
padding: .5rem 1rem;
|
||||
color: var(--highlight-strong-30);
|
||||
background: var(--grey-dark-40);
|
||||
background: var(--shadow-strong-30);
|
||||
border-radius: 0 0 .5rem .5rem;
|
||||
}
|
||||
|
||||
|
@ -398,10 +398,10 @@ async function removeAlert(alert) {
|
|||
padding: 0 0 0 .5rem;
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
border-bottom: solid 1px var(--shadow-weak-40);
|
||||
border-bottom: solid 1px var(--glass-weak-40);
|
||||
|
||||
&:hover {
|
||||
border-color: var(--shadow-weak-30);
|
||||
border-color: var(--glass-weak-30);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -412,11 +412,11 @@ async function removeAlert(alert) {
|
|||
margin-right: .75rem;
|
||||
|
||||
.icon {
|
||||
fill: var(--shadow-weak-40);
|
||||
fill: var(--glass-weak-40);
|
||||
}
|
||||
|
||||
.icon.trigger {
|
||||
fill: var(--shadow-weak-10);
|
||||
fill: var(--glass-weak-10);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -424,7 +424,7 @@ async function removeAlert(alert) {
|
|||
padding: .25rem 0;
|
||||
flex-grow: 1;
|
||||
line-height: 2.5;
|
||||
color: var(--shadow);
|
||||
color: var(--glass);
|
||||
|
||||
&.and .alert-detail:not(:last-child):after {
|
||||
content: ' and ';
|
||||
|
@ -440,7 +440,7 @@ async function removeAlert(alert) {
|
|||
|
||||
.icon {
|
||||
margin-right: .25rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
transform: translateY(2px);
|
||||
}
|
||||
}
|
||||
|
@ -474,12 +474,12 @@ async function removeAlert(alert) {
|
|||
display: flex;
|
||||
align-items: center;
|
||||
font-size: .9rem;
|
||||
color: var(--shadow-weak-10);
|
||||
color: var(--glass-weak-10);
|
||||
|
||||
.icon {
|
||||
height: 100%;
|
||||
padding: 0 .75rem;
|
||||
fill: var(--shadow);
|
||||
fill: var(--glass);
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
|
|
|
@ -32,7 +32,7 @@ function createApp(Page, pageProps, pageContext) {
|
|||
|
||||
app.provide('pageContext', pageContext);
|
||||
|
||||
app.use(FloatingVue);
|
||||
app.use(FloatingVue, { container: '#container' });
|
||||
app.use(VueVirtualScroller);
|
||||
|
||||
app.component('Link', Link);
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
<template>
|
||||
<div
|
||||
id="container"
|
||||
class="container"
|
||||
:class="{ [theme]: true }"
|
||||
@click="blur"
|
||||
>
|
||||
<transition name="slide">
|
||||
|
@ -65,6 +67,7 @@ import BottomNavigation from '#/components/footer/navigation.vue';
|
|||
|
||||
const pageContext = inject('pageContext');
|
||||
const { psa } = pageContext.env;
|
||||
const theme = ref(pageContext.env.theme);
|
||||
|
||||
const content = ref(null);
|
||||
const feedback = ref(null);
|
||||
|
@ -108,6 +111,10 @@ onMounted(() => {
|
|||
easing: 'ease-in-out',
|
||||
});
|
||||
});
|
||||
|
||||
events.on('theme', (newTheme) => {
|
||||
theme.value = newTheme;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
@ -159,6 +166,8 @@ onMounted(() => {
|
|||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
background: var(--background);
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.content {
|
||||
|
|
|
@ -167,6 +167,7 @@ function curateOptions(options) {
|
|||
return {
|
||||
page: options?.page || 1,
|
||||
limit: options?.limit || 30,
|
||||
aggregateCountries: true,
|
||||
requireAvatar: options?.requireAvatar || false,
|
||||
order: [escape(options.order?.[0]) || 'name', escape(options.order?.[1]) || 'asc'],
|
||||
};
|
||||
|
@ -312,7 +313,7 @@ async function queryManticoreSql(filters, options, _reqUser) {
|
|||
.offset((options.page - 1) * options.limit)
|
||||
.toString(),
|
||||
// option threads=1 fixes actors, but drastically slows down performance, wait for fix
|
||||
countriesFacet: options.aggregateActors ? knex.raw('facet actors.country order by count(*) desc limit 300', [aggSize]) : null,
|
||||
countriesFacet: options.aggregateCountries ? knex.raw('facet actors.country order by count(*) desc limit :aggSize', { aggSize }) : null,
|
||||
maxMatches: config.database.manticore.maxMatches,
|
||||
maxQueryTime: config.database.manticore.maxQueryTime,
|
||||
}).toString();
|
||||
|
@ -328,11 +329,9 @@ async function queryManticoreSql(filters, options, _reqUser) {
|
|||
|
||||
const results = await utilsApi.sql(curatedSqlQuery);
|
||||
|
||||
// console.log(results[0]);
|
||||
|
||||
const countries = results
|
||||
.find((result) => (result.columns[0].actor_ids || result.columns[0]['scenes.country']) && result.columns[1]['count(*)'])
|
||||
?.data.map((row) => ({ key: row.actor_ids || row['scenes.country'], doc_count: row['count(*)'] }))
|
||||
.find((result) => (result.columns[0].country || result.columns[0]['actors.country']) && result.columns[1]['count(*)'])
|
||||
?.data.map((row) => ({ key: row.country || row['actors.country'], doc_count: row['count(*)'] })).filter((country) => !!country.key)
|
||||
|| [];
|
||||
|
||||
const total = Number(results.at(-1).data.find((entry) => entry.Variable_name === 'total_found').Value);
|
||||
|
|
|
@ -175,6 +175,16 @@ export default async function initServer() {
|
|||
// TAGS
|
||||
router.get('/api/tags', fetchTagsApi);
|
||||
|
||||
router.use((req, res, next) => {
|
||||
/* eslint-disable no-param-reassign */
|
||||
res.set('Accept-CH', 'Sec-CH-Prefers-Color-Scheme');
|
||||
res.set('Vary', 'Sec-CH-Prefers-Color-Scheme');
|
||||
res.set('Critical-CH', 'Sec-CH-Prefers-Color-Scheme');
|
||||
/* eslint-enable no-param-reassign */
|
||||
|
||||
next();
|
||||
});
|
||||
|
||||
router.get('*', async (req, res, next) => {
|
||||
const unseenNotifications = await fetchUnseenNotificationsCount(req.user);
|
||||
|
||||
|
@ -193,6 +203,7 @@ export default async function initServer() {
|
|||
primaryStash: req.user.primaryStash,
|
||||
},
|
||||
env: {
|
||||
theme: req.cookies.theme || req.headers['sec-ch-prefers-color-scheme'] || 'light',
|
||||
allowLogin: config.auth.login,
|
||||
allowSignup: config.auth.signup,
|
||||
maxMatches: config.database.manticore.maxMatches,
|
||||
|
|
Loading…
Reference in New Issue