WIP...
This commit is contained in:
parent
72517d4e8c
commit
83fea0f787
172
css/_actor.scss
172
css/_actor.scss
@ -1,6 +1,6 @@
|
|||||||
.actor {
|
.actor {
|
||||||
a {
|
a {
|
||||||
color: var(--fg-inv0);
|
color: var(--actor-fg0);
|
||||||
}
|
}
|
||||||
h1,
|
h1,
|
||||||
h2,
|
h2,
|
||||||
@ -12,13 +12,13 @@
|
|||||||
summary {
|
summary {
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
svg {
|
svg {
|
||||||
fill: var(--fg-inv1);
|
fill: var(--actor-fg1);
|
||||||
}
|
}
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
color: var(--fg-inv0);
|
color: var(--actor-fg0);
|
||||||
svg {
|
svg {
|
||||||
fill: var(--fg-inv0);
|
fill: var(--actor-fg0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -36,52 +36,6 @@
|
|||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.actors-tabs {
|
|
||||||
flex-grow: 0;
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 0.75rem;
|
|
||||||
padding: 1rem 1rem 0;
|
|
||||||
background: var(--bg-inv0);
|
|
||||||
background-color: hsl(var(--actor-hue), 50%, 80%);
|
|
||||||
background-color: $actor-accent-dark-ok;
|
|
||||||
overflow: hidden;
|
|
||||||
box-shadow: 0 -0.75rem 0.75rem -0.75rem rgba(0, 0, 0, 0.75) inset;
|
|
||||||
user-select: none;
|
|
||||||
|
|
||||||
button {
|
|
||||||
all: unset;
|
|
||||||
padding: 0.35rem 0.7rem 0.3rem;
|
|
||||||
font-size: 0.85em;
|
|
||||||
font-family: inherit;
|
|
||||||
border-radius: 0.25rem 0.25rem 0 0;
|
|
||||||
color: var(--fg1);
|
|
||||||
background: #fff; // ### VAR
|
|
||||||
cursor: pointer;
|
|
||||||
opacity: 0.65;
|
|
||||||
|
|
||||||
span {
|
|
||||||
display: inline-block;
|
|
||||||
padding-bottom: 0.1rem;
|
|
||||||
border-bottom: 0.2rem solid transparent;
|
|
||||||
border-color: hsl(var(--actor-hue), 50%, 80%);
|
|
||||||
border-color: $actor-accent-light-ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
opacity: 0.85;
|
|
||||||
}
|
|
||||||
&[aria-selected="true"] {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
&:focus-visible {
|
|
||||||
outline: 2px solid hsl(var(--actor-hue), 50%, 80%);
|
|
||||||
outline: 2px solid $actor-accent-light-ok;
|
|
||||||
outline-offset: 2px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.actor-panel {
|
.actor-panel {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@ -91,8 +45,8 @@
|
|||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
color: var(--fg-inv1);
|
color: var(--actor-fg1);
|
||||||
background: var(--bg-inv3);
|
background: var(--actor-bg3);
|
||||||
}
|
}
|
||||||
|
|
||||||
.actor-pretty {
|
.actor-pretty {
|
||||||
@ -175,13 +129,13 @@
|
|||||||
.actor-summary {
|
.actor-summary {
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
color: var(--fg-inv0);
|
color: var(--actor-fg0);
|
||||||
line-height: 1.3;
|
line-height: 1.3;
|
||||||
background: var(--bg-inv4);
|
background: var(--actor-bg4);
|
||||||
background: radial-gradient(
|
background: radial-gradient(
|
||||||
circle at 200% 150%,
|
circle at 200% 150%,
|
||||||
var(--bg-inv3),
|
var(--actor-bg3),
|
||||||
var(--bg-inv4)
|
var(--actor-bg4)
|
||||||
);
|
);
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
box-shadow: 0 0.3rem 0.4rem -0.2rem rgba(0, 0, 0, 0.3);
|
box-shadow: 0 0.3rem 0.4rem -0.2rem rgba(0, 0, 0, 0.3);
|
||||||
@ -203,8 +157,8 @@
|
|||||||
}
|
}
|
||||||
dd {
|
dd {
|
||||||
padding: 0.5rem 1rem;
|
padding: 0.5rem 1rem;
|
||||||
color: var(--fg-inv0);
|
color: var(--actor-fg0);
|
||||||
border-left: 1px solid var(--bg-inv4);
|
border-left: 1px solid var(--actor-bg4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@container (width < 340px) {
|
@container (width < 340px) {
|
||||||
@ -213,7 +167,7 @@
|
|||||||
dl {
|
dl {
|
||||||
display: block;
|
display: block;
|
||||||
padding: 0.5rem 1rem;
|
padding: 0.5rem 1rem;
|
||||||
border-bottom: 1px solid var(--bg-inv4);
|
border-bottom: 1px solid var(--actor-bg4);
|
||||||
&:last-child {
|
&:last-child {
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
}
|
}
|
||||||
@ -237,7 +191,7 @@
|
|||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
.count {
|
.count {
|
||||||
display: block;
|
display: block;
|
||||||
color: var(--fg-inv0);
|
color: var(--actor-fg0);
|
||||||
font-size: 1.6em;
|
font-size: 1.6em;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
@ -257,11 +211,11 @@
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus-visible {
|
&:focus-visible {
|
||||||
color: var(--fg-inv0);
|
color: var(--actor-fg0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&[open] summary {
|
&[open] summary {
|
||||||
color: var(--fg-inv0);
|
color: var(--actor-fg0);
|
||||||
}
|
}
|
||||||
p {
|
p {
|
||||||
margin-top: 0.5rem;
|
margin-top: 0.5rem;
|
||||||
@ -271,7 +225,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.actor-raw {
|
.actor-raw {
|
||||||
background: var(--bg-inv2);
|
background: var(--actor-bg2);
|
||||||
box-shadow: 0 0.75rem 0.75rem -1rem #000 inset;
|
box-shadow: 0 0.75rem 0.75rem -1rem #000 inset;
|
||||||
.details-content {
|
.details-content {
|
||||||
padding: 1rem 1rem 2rem;
|
padding: 1rem 1rem 2rem;
|
||||||
@ -281,7 +235,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.actor-likes-bookmarks {
|
.actor-likes-bookmarks {
|
||||||
background: var(--bg-inv0);
|
background: var(--actor-bg0);
|
||||||
overflow-wrap: break-word;
|
overflow-wrap: break-word;
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
@ -316,10 +270,98 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.actor-likes {
|
.actor-likes {
|
||||||
background: var(--bg-inv1);
|
background: var(--actor-bg1);
|
||||||
box-shadow: 0 0.75rem 0.75rem -1rem #000 inset;
|
box-shadow: 0 0.75rem 0.75rem -1rem #000 inset;
|
||||||
}
|
}
|
||||||
.actor-bookmarks {
|
.actor-bookmarks {
|
||||||
padding-bottom: 1rem;
|
padding-bottom: 1rem;
|
||||||
box-shadow: 0 0.75rem 0.75rem -1rem #000 inset;
|
box-shadow: 0 0.75rem 0.75rem -1rem #000 inset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.multiple-actors {
|
||||||
|
.actors-tabs {
|
||||||
|
flex-grow: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 0.75rem;
|
||||||
|
padding: 1rem 1rem 0;
|
||||||
|
// background: var(--actor-bg0);
|
||||||
|
// background: var(--actor-bg0-ok);
|
||||||
|
background-color: hsl(var(--actor-hue), 50%, 80%);
|
||||||
|
background-color: var(--actor-bg3-ok);
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 -0.75rem 0.75rem -0.75rem rgba(0, 0, 0, 0.75) inset;
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
|
button {
|
||||||
|
all: unset;
|
||||||
|
padding: 0.35rem 0.7rem 0.3rem;
|
||||||
|
font-size: 0.85em;
|
||||||
|
font-family: inherit;
|
||||||
|
border-radius: 0.25rem 0.25rem 0 0;
|
||||||
|
color: var(--fg1);
|
||||||
|
background: #fff; // ### VAR
|
||||||
|
cursor: pointer;
|
||||||
|
opacity: 0.65;
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
padding-bottom: 0.1rem;
|
||||||
|
border-bottom: 0.2rem solid transparent;
|
||||||
|
border-color: hsl(var(--actor-hue), 50%, 80%);
|
||||||
|
border-color: $actor-accent-light-ok;
|
||||||
|
// border-color: var(--actor-fg1-ok);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
opacity: 0.85;
|
||||||
|
}
|
||||||
|
&[aria-selected="true"] {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
&:focus-visible {
|
||||||
|
outline: 2px solid hsl(var(--actor-hue), 50%, 80%);
|
||||||
|
outline: 2px solid $actor-accent-light-ok;
|
||||||
|
// outline: 2px solid var(--actor-fg1-ok);
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// color variations
|
||||||
|
|
||||||
|
.actor summary svg {
|
||||||
|
fill: var(--actor-fg1-ok);
|
||||||
|
}
|
||||||
|
.actor-panel {
|
||||||
|
color: var(--actor-fg1-ok);
|
||||||
|
background: var(--actor-bg3-ok);
|
||||||
|
}
|
||||||
|
.actor-summary {
|
||||||
|
background: var(--actor-bg4-ok);
|
||||||
|
background: radial-gradient(
|
||||||
|
circle at 200% 150%,
|
||||||
|
var(--actor-bg3-ok),
|
||||||
|
var(--actor-bg4-ok)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
.actor-infos {
|
||||||
|
dd {
|
||||||
|
border-left-color: var(--actor-bg4-ok);
|
||||||
|
}
|
||||||
|
@container (width < 340px) {
|
||||||
|
dl {
|
||||||
|
border-bottom-color: var(--actor-bg4-ok);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.actor-raw {
|
||||||
|
background: var(--actor-bg2-ok);
|
||||||
|
}
|
||||||
|
.actor-likes-bookmarks {
|
||||||
|
background: var(--actor-bg0-ok);
|
||||||
|
}
|
||||||
|
.actor-likes {
|
||||||
|
background: var(--actor-bg1-ok);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
141
css/_colors.scss
141
css/_colors.scss
@ -1,65 +1,74 @@
|
|||||||
// tint and saturation factor for the app color scheme
|
// tint and saturation factor for the app color scheme
|
||||||
$hue: 30; // === 59.17 in oklch
|
$hue: 30; // === 59.17 in oklch
|
||||||
$sat: 0.5;
|
|
||||||
|
|
||||||
/*********************************/
|
/*********************************/
|
||||||
/* global background/text colors */
|
/* global background/text colors */
|
||||||
/*********************************/
|
/*********************************/
|
||||||
|
|
||||||
$bg0: hsl(var(--hue), calc(var(--sat) * 0%), 100%);
|
$bg0: #fff; // -> post content
|
||||||
// -> post content
|
$bg1: hsl($hue, 10%, 95%); // -> post
|
||||||
$bg1: hsl(var(--hue), calc(var(--sat) * 20%), 95%);
|
$bg2: hsl($hue, 15%, 90%); // -> post attachment/meta/raw
|
||||||
// -> post
|
$bg3: hsl($hue, 17.5%, 87%); // -> posts header
|
||||||
$bg2: hsl(var(--hue), calc(var(--sat) * 30%), 90%);
|
$bg4: hsl($hue, 20%, 84%); // -> filters/tags panels
|
||||||
// -> post attachment/meta/raw
|
|
||||||
$bg3: hsl(var(--hue), calc(var(--sat) * 35%), 87%);
|
|
||||||
// -> posts header
|
|
||||||
$bg4: hsl(var(--hue), calc(var(--sat) * 40%), 84%);
|
|
||||||
// -> filters/tags panels
|
|
||||||
|
|
||||||
$fg0: hsl(var(--hue), calc(var(--sat) * 0%), 0%);
|
$fg0: hsl($hue, 0%, 0%); // -> post content
|
||||||
// -> post content
|
$fg1: hsl($hue, 10%, 20%); // -> body text; some SVG icons (panel close)
|
||||||
$fg1: hsl(var(--hue), calc(var(--sat) * 20%), 20%);
|
$fg2: hsl($hue, 10%, 30%); // -> headings (h1, h2...)
|
||||||
// -> body text; some SVG icons (panel close)
|
|
||||||
$fg2: hsl(var(--hue), calc(var(--sat) * 20%), 30%);
|
|
||||||
// -> headings (h1, h2...)
|
|
||||||
|
|
||||||
/********************************************/
|
$fg-inv: #fff; // -> misc highlighted text
|
||||||
/* inverted light scheme (e.g. actor panel) */
|
|
||||||
/********************************************/
|
|
||||||
|
|
||||||
$bg-inv0: hsl(var(--hue), calc(var(--sat) * 75%), 11%);
|
/***************/
|
||||||
// -> bookmarks
|
/* actor panel */
|
||||||
$bg-inv1: hsl(var(--hue), calc(var(--sat) * 65%), 15%);
|
/***************/
|
||||||
// -> favorites
|
|
||||||
$bg-inv2: hsl(var(--hue), calc(var(--sat) * 50%), 20%);
|
|
||||||
// -> actor raw data, mobile menu
|
|
||||||
$bg-inv3: hsl(var(--hue), calc(var(--sat) * 50%), 25%);
|
|
||||||
// -> actor panel
|
|
||||||
$bg-inv4: hsl(var(--hue), calc(var(--sat) * 45%), 40%);
|
|
||||||
// -> actor summary
|
|
||||||
|
|
||||||
$fg-inv0: hsl(var(--hue), calc(var(--sat) * 0%), 100%);
|
$actor-bg0: hsl($hue, 37.5%, 11%); // -> bookmarks
|
||||||
// -> misc highlighted text; mobile menu icons
|
$actor-bg1: hsl($hue, 32.5%, 15%); // -> favorites
|
||||||
$fg-inv1: hsl(var(--hue), calc(var(--sat) * 80%), 80%);
|
$actor-bg2: hsl($hue, 25%, 20%); // -> actor raw data
|
||||||
// -> actor, mobile menu
|
$actor-bg3: hsl($hue, 25%, 25%); // -> actor panel
|
||||||
|
$actor-bg4: hsl($hue, 22.5%, 40%); // -> actor summary
|
||||||
|
|
||||||
|
$actor-fg0: #fff;
|
||||||
|
$actor-fg1: hsl($hue, 40%, 80%); // -> actor texts
|
||||||
|
|
||||||
|
// OKLCH variants
|
||||||
|
$actor-bg0-ok: oklch(11% 37.5% var(--actor-hue));
|
||||||
|
$actor-bg1-ok: oklch(15% 32.5% var(--actor-hue));
|
||||||
|
$actor-bg2-ok: oklch(20% 25% var(--actor-hue));
|
||||||
|
$actor-bg3-ok: oklch(25% 25% var(--actor-hue));
|
||||||
|
$actor-bg4-ok: oklch(40% 22.5% var(--actor-hue));
|
||||||
|
$actor-fg1-ok: oklch(92% 10% var(--actor-hue));
|
||||||
|
|
||||||
|
/***************/
|
||||||
|
/* mobile menu */
|
||||||
|
/***************/
|
||||||
|
|
||||||
|
$menu-bg: hsl($hue, 25%, 20%); // actor-bg2
|
||||||
|
$menu-fg: hsl($hue, 40%, 80%); // actor-fg1
|
||||||
|
$menu-fg-active: #fff;
|
||||||
|
$menu-icon: #fff;
|
||||||
|
$menu-filter-active: hsl($hue, 75%, 50%); // accent-light2
|
||||||
|
|
||||||
|
$menu-backdrop: rgba(0, 0, 0, 0.5);
|
||||||
|
|
||||||
|
$panel-close: hsl($hue, 40%, 80%); // fg1
|
||||||
|
$panel-close-hover: hsl($hue, 75%, 38%); // accent-light
|
||||||
|
|
||||||
/**********/
|
/**********/
|
||||||
/* accent */
|
/* accent */
|
||||||
/**********/
|
/**********/
|
||||||
|
|
||||||
$accent: hsl(var(--hue), calc(var(--sat) * 200%), 30%);
|
$accent: hsl($hue, 100%, 30%);
|
||||||
// -> links, active elements, counters, misc background stripes (color 1)
|
// -> links, active elements, counters, misc background stripes (color 1)
|
||||||
$accent-dark: hsl(var(--hue), calc(var(--sat) * 250%), 26%);
|
$accent-dark: hsl($hue, 100%, 26%);
|
||||||
// -> misc background stripes (color 2)
|
// -> misc background stripes (color 2)
|
||||||
$accent-light: hsl(var(--hue), calc(var(--sat) * 150%), 38%);
|
$accent-light: hsl($hue, 75%, 38%);
|
||||||
// -> focusable elements outline; main header counter
|
// -> focusable elements outline; main header counter
|
||||||
$accent-light2: hsl(var(--hue), calc(var(--sat) * 150%), 50%);
|
$accent-light2: hsl($hue, 75%, 50%);
|
||||||
// -> overlay hover/focus icons (SVG); private posts border; active filter indicator (mobile menu)
|
// -> overlay hover/focus icons (SVG); private posts border; active filter indicator (mobile menu)
|
||||||
// === oklch(56.48% 0.124 59.17)
|
// === oklch(56.48% 0.124 59.17)
|
||||||
$accent-light3: hsl(var(--hue), calc(var(--sat) * 150%), 75%);
|
$accent-light3: hsl($hue, 75%, 75%);
|
||||||
// -> hover effect on images
|
// -> hover effect on images
|
||||||
$accent-light-bg: hsl(var(--hue), calc(var(--sat) * 100%), 96%);
|
$accent-light-bg: hsl($hue, 50%, 96%);
|
||||||
// -> private posts background
|
// -> private posts background
|
||||||
|
|
||||||
/***********/
|
/***********/
|
||||||
@ -69,7 +78,6 @@ $accent-light-bg: hsl(var(--hue), calc(var(--sat) * 100%), 96%);
|
|||||||
$overlay-icon: #fff;
|
$overlay-icon: #fff;
|
||||||
$overlay-icon-hover: #fff;
|
$overlay-icon-hover: #fff;
|
||||||
$overlay-backdrop: rgba(0, 0, 0, 0.75);
|
$overlay-backdrop: rgba(0, 0, 0, 0.75);
|
||||||
$menu-backdrop: rgba(0, 0, 0, 0.5);
|
|
||||||
|
|
||||||
/*****************/
|
/*****************/
|
||||||
/* form elements */
|
/* form elements */
|
||||||
@ -80,11 +88,11 @@ $bg-input-hover: rgba(255, 255, 255, 0.65);
|
|||||||
$bg-input-focus: rgba(255, 255, 255, 1);
|
$bg-input-focus: rgba(255, 255, 255, 1);
|
||||||
|
|
||||||
$bg-button: rgba(255, 255, 255, 1);
|
$bg-button: rgba(255, 255, 255, 1);
|
||||||
$bg-button-hover: hsl(var(--hue), calc(var(--sat) * 100%), 95%);
|
$bg-button-hover: hsl($hue, 50%, 95%);
|
||||||
$button-svg: $fg1;
|
$button-svg: $fg1;
|
||||||
$button-svg-hover: hsl(var(--hue), calc(var(--sat) * 150%), 50%);
|
$button-svg-hover: hsl($hue, 75%, 50%);
|
||||||
$button-svg-focus: hsl(var(--hue), calc(var(--sat) * 150%), 50%);
|
$button-svg-focus: hsl($hue, 75%, 50%);
|
||||||
$button-svg-active: hsl(var(--hue), calc(var(--sat) * 150%), 50%);
|
$button-svg-active: hsl($hue, 75%, 50%);
|
||||||
|
|
||||||
$fg-button-focus: $accent;
|
$fg-button-focus: $accent;
|
||||||
$fg-button-active: $accent;
|
$fg-button-active: $accent;
|
||||||
@ -92,9 +100,6 @@ $fg-button-active: $accent;
|
|||||||
// Note: some rgba values hardcoded, used mostly for box-shadow or backdrops
|
// Note: some rgba values hardcoded, used mostly for box-shadow or backdrops
|
||||||
|
|
||||||
html {
|
html {
|
||||||
--hue: #{$hue};
|
|
||||||
--sat: #{$sat};
|
|
||||||
|
|
||||||
--bg0: #{$bg0};
|
--bg0: #{$bg0};
|
||||||
--bg1: #{$bg1};
|
--bg1: #{$bg1};
|
||||||
--bg2: #{$bg2};
|
--bg2: #{$bg2};
|
||||||
@ -104,15 +109,15 @@ html {
|
|||||||
--fg0: #{$fg0};
|
--fg0: #{$fg0};
|
||||||
--fg1: #{$fg1};
|
--fg1: #{$fg1};
|
||||||
--fg2: #{$fg2};
|
--fg2: #{$fg2};
|
||||||
|
--fg-inv: #{$fg-inv};
|
||||||
|
|
||||||
--bg-inv0: #{$bg-inv0};
|
--menu-bg: #{$menu-bg};
|
||||||
--bg-inv1: #{$bg-inv1};
|
--menu-fg: #{$menu-fg};
|
||||||
--bg-inv2: #{$bg-inv2};
|
--menu-fg-active: $menu#{-fg-active};
|
||||||
--bg-inv3: #{$bg-inv3};
|
--menu-icon: #{$menu-icon};
|
||||||
--bg-inv4: #{$bg-inv4};
|
--menu-filter-active: $menu#{-filter-active};
|
||||||
|
--panel-close: #{$panel-close};
|
||||||
--fg-inv0: #{$fg-inv0};
|
--panel-close-hover: $panel#{-close-hover};
|
||||||
--fg-inv1: #{$fg-inv1};
|
|
||||||
|
|
||||||
--accent: #{$accent};
|
--accent: #{$accent};
|
||||||
--accent-dark: #{$accent-dark};
|
--accent-dark: #{$accent-dark};
|
||||||
@ -139,10 +144,24 @@ html {
|
|||||||
|
|
||||||
--fg-button-focus: #{$fg-button-focus};
|
--fg-button-focus: #{$fg-button-focus};
|
||||||
--fg-button-active: #{$fg-button-active};
|
--fg-button-active: #{$fg-button-active};
|
||||||
|
|
||||||
--actor-hue: 0;
|
|
||||||
// ### TODO hsl() fallback
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$actor-accent-light-ok: oklch(80% 0.15 var(--actor-hue));
|
.actors-wrapper {
|
||||||
$actor-accent-dark-ok: oklch(25% 0.25 var(--actor-hue));
|
--actor-hue: 0;
|
||||||
|
--actor-bg0: #{$actor-bg0};
|
||||||
|
--actor-bg0-ok: #{$actor-bg0-ok};
|
||||||
|
--actor-bg1: #{$actor-bg1};
|
||||||
|
--actor-bg1-ok: #{$actor-bg1-ok};
|
||||||
|
--actor-bg2: #{$actor-bg2};
|
||||||
|
--actor-bg2-ok: #{$actor-bg2-ok};
|
||||||
|
--actor-bg3: #{$actor-bg3};
|
||||||
|
--actor-bg3-ok: #{$actor-bg3-ok};
|
||||||
|
--actor-bg4: #{$actor-bg4};
|
||||||
|
--actor-bg4-ok: #{$actor-bg4-ok};
|
||||||
|
|
||||||
|
--actor-fg0: #{$actor-fg0};
|
||||||
|
--actor-fg1: #{$actor-fg1};
|
||||||
|
--actor-fg1-ok: #{$actor-fg1-ok};
|
||||||
|
}
|
||||||
|
|
||||||
|
$actor-accent-light-ok: oklch(80% 15% var(--actor-hue));
|
||||||
|
@ -96,7 +96,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.active label {
|
&.active label {
|
||||||
color: var(--fg-inv0);
|
color: var(--fg-inv);
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
background-color: var(--accent);
|
background-color: var(--accent);
|
||||||
@media (forced-colors: active) {
|
@media (forced-colors: active) {
|
||||||
|
@ -6,8 +6,8 @@ $panel-width: 400px;
|
|||||||
display: none;
|
display: none;
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
color: var(--fg-inv1);
|
color: var(--menu-fg);
|
||||||
background-color: var(--bg-inv2);
|
background-color: var(--menu-bg);
|
||||||
|
|
||||||
@media (forced-colors: active) {
|
@media (forced-colors: active) {
|
||||||
color: buttonText;
|
color: buttonText;
|
||||||
@ -53,7 +53,7 @@ $panel-width: 400px;
|
|||||||
width: $icon-width;
|
width: $icon-width;
|
||||||
height: auto;
|
height: auto;
|
||||||
margin: 5px auto 0;
|
margin: 5px auto 0;
|
||||||
fill: var(--fg-inv0);
|
fill: var(--menu-icon);
|
||||||
|
|
||||||
@media (forced-colors: active) {
|
@media (forced-colors: active) {
|
||||||
fill: buttonText;
|
fill: buttonText;
|
||||||
@ -79,7 +79,7 @@ $panel-width: 400px;
|
|||||||
width: 10px;
|
width: 10px;
|
||||||
height: 10px;
|
height: 10px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
background-color: var(--accent-light2);
|
background-color: var(--menu-filter-active);
|
||||||
@media (forced-colors: active) {
|
@media (forced-colors: active) {
|
||||||
background-color: Highlight;
|
background-color: Highlight;
|
||||||
}
|
}
|
||||||
@ -164,7 +164,7 @@ $panel-width: 400px;
|
|||||||
right: 6px;
|
right: 6px;
|
||||||
top: 6px;
|
top: 6px;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
color: var(--fg1);
|
color: var(--panel-close);
|
||||||
background: transparent;
|
background: transparent;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
.btn-icon {
|
.btn-icon {
|
||||||
@ -173,7 +173,7 @@ $panel-width: 400px;
|
|||||||
&:hover,
|
&:hover,
|
||||||
&:focus,
|
&:focus,
|
||||||
&:focus-visible {
|
&:focus-visible {
|
||||||
color: var(--accent-light);
|
color: var(--panel-close-hover);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (forced-colors: active) {
|
@media (forced-colors: active) {
|
||||||
@ -205,7 +205,7 @@ $panel-width: 400px;
|
|||||||
&.menu-open-actor .menu-actor,
|
&.menu-open-actor .menu-actor,
|
||||||
&.menu-open-filters .menu-filters,
|
&.menu-open-filters .menu-filters,
|
||||||
&.menu-open-tags .menu-tags {
|
&.menu-open-tags .menu-tags {
|
||||||
color: var(--fg-inv0);
|
color: var(--menu-fg-active);
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
background-color: rgba(255, 255, 255, 0.2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,10 +82,10 @@ $display-wide: 340px;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.active button div {
|
.active button div {
|
||||||
color: var(--fg-inv0);
|
color: var(--fg-inv);
|
||||||
background-color: var(--accent);
|
background-color: var(--accent);
|
||||||
.count {
|
.count {
|
||||||
color: var(--fg-inv0);
|
color: var(--fg-inv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ $meta-visible: 100ch;
|
|||||||
.toot-summary {
|
.toot-summary {
|
||||||
padding: 0.5rem 1rem;
|
padding: 0.5rem 1rem;
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
color: var(--fg-inv0);
|
color: var(--fg-inv);
|
||||||
background: repeating-linear-gradient(
|
background: repeating-linear-gradient(
|
||||||
45deg,
|
45deg,
|
||||||
var(--accent-dark),
|
var(--accent-dark),
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
font-size: 2em;
|
font-size: 2em;
|
||||||
background-color: var(--accent);
|
background-color: var(--accent);
|
||||||
color: var(--fg-inv0);
|
color: var(--fg-inv);
|
||||||
background: repeating-linear-gradient(
|
background: repeating-linear-gradient(
|
||||||
45deg,
|
45deg,
|
||||||
var(--accent-dark),
|
var(--accent-dark),
|
||||||
@ -128,3 +128,10 @@
|
|||||||
background: var(--bg2);
|
background: var(--bg2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.loading-more {
|
||||||
|
justify-content: center;
|
||||||
|
.file-loader {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
29
index.html
29
index.html
@ -7,7 +7,7 @@
|
|||||||
<link rel="icon" href="data:," />
|
<link rel="icon" href="data:," />
|
||||||
<base target="_blank" />
|
<base target="_blank" />
|
||||||
|
|
||||||
<link rel="stylesheet" href="css/main.css?20241201" />
|
<link rel="stylesheet" href="css/main.css?20241204" />
|
||||||
<script>
|
<script>
|
||||||
const isFileProtocol = window.location.protocol === "file:";
|
const isFileProtocol = window.location.protocol === "file:";
|
||||||
const scripts = [
|
const scripts = [
|
||||||
@ -54,7 +54,7 @@
|
|||||||
:class="$store.ui.appClasses"
|
:class="$store.ui.appClasses"
|
||||||
x-init="$watch('$store.files.appReady', value => checkAppReady(value))"
|
x-init="$watch('$store.files.appReady', value => checkAppReady(value))"
|
||||||
>
|
>
|
||||||
<template x-if="! $store.files.appReady">
|
<template x-if="!$store.files.appReady && !$store.files.someFilesLoaded">
|
||||||
<main
|
<main
|
||||||
class="welcome"
|
class="welcome"
|
||||||
:class="$store.files.loading ? 'file-loading' : ''"
|
:class="$store.files.loading ? 'file-loading' : ''"
|
||||||
@ -106,6 +106,16 @@
|
|||||||
</main>
|
</main>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template x-if="!$store.files.appReady && $store.files.someFilesLoaded">
|
||||||
|
<main class="welcome loading-more">
|
||||||
|
<div class="intro">
|
||||||
|
<div class="file-loader loading">
|
||||||
|
<span>... Loading ...</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</template>
|
||||||
|
|
||||||
<template x-if="$store.files.appReady">
|
<template x-if="$store.files.appReady">
|
||||||
<main
|
<main
|
||||||
class="main-section"
|
class="main-section"
|
||||||
@ -113,7 +123,11 @@
|
|||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
x-on:resize.window="$store.ui.checkMenuState()"
|
x-on:resize.window="$store.ui.checkMenuState()"
|
||||||
>
|
>
|
||||||
<div class="main-section-inner" id="main-section-inner">
|
<div
|
||||||
|
class="main-section-inner"
|
||||||
|
id="main-section-inner"
|
||||||
|
:class="$store.files.sources.length > 1 ? 'multiple-actors' : ''"
|
||||||
|
>
|
||||||
<div class="mobile-menu" id="mobile-menu">
|
<div class="mobile-menu" id="mobile-menu">
|
||||||
<nav>
|
<nav>
|
||||||
<ul>
|
<ul>
|
||||||
@ -188,13 +202,15 @@
|
|||||||
<h2 class="visually-hidden" id="actor-title">Account info</h2>
|
<h2 class="visually-hidden" id="actor-title">Account info</h2>
|
||||||
<h3 class="visually-hidden" id="actor-tabs-title">Accounts</h3>
|
<h3 class="visually-hidden" id="actor-tabs-title">Accounts</h3>
|
||||||
|
|
||||||
<div class="actors-wrapper">
|
<div
|
||||||
|
class="actors-wrapper"
|
||||||
|
:style="'--actor-hue: '+ $store.files.sources[$store.ui.actorPanel].hue"
|
||||||
|
>
|
||||||
<template x-if="$store.files.sources.length > 1">
|
<template x-if="$store.files.sources.length > 1">
|
||||||
<div
|
<div
|
||||||
class="actors-tabs"
|
class="actors-tabs"
|
||||||
role="tablist"
|
role="tablist"
|
||||||
aria-labelledby="actor-tabs-title"
|
aria-labelledby="actor-tabs-title"
|
||||||
:style="'--actor-hue: '+ $store.files.sources[$store.ui.actorPanel].hue"
|
|
||||||
>
|
>
|
||||||
<template x-for="(_, source) in $store.files.sources">
|
<template x-for="(_, source) in $store.files.sources">
|
||||||
<button
|
<button
|
||||||
@ -1023,7 +1039,6 @@
|
|||||||
|
|
||||||
<div
|
<div
|
||||||
class="toots"
|
class="toots"
|
||||||
:class="$store.files.sources.length > 1 ? 'multiple-actors' : ''"
|
|
||||||
id="toots"
|
id="toots"
|
||||||
role="region"
|
role="region"
|
||||||
aria-labelledby="toots-title"
|
aria-labelledby="toots-title"
|
||||||
@ -1677,6 +1692,6 @@
|
|||||||
</symbol>
|
</symbol>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
||||||
<script src="js/main.js?20241202"></script>
|
<script src="js/main.js?20241204"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -577,7 +577,6 @@ const filesStore = {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
toggleTootsOrder() {
|
toggleTootsOrder() {
|
||||||
this.sortAsc = !this.sortAsc;
|
this.sortAsc = !this.sortAsc;
|
||||||
this.sortToots();
|
this.sortToots();
|
||||||
|
@ -66,6 +66,10 @@ Accessibility is a vast and complex topic, and there's probably room for improve
|
|||||||
|
|
||||||
MARL should work on pretty much any screen size, as low as 300 pixels wide (and possibly less).
|
MARL should work on pretty much any screen size, as low as 300 pixels wide (and possibly less).
|
||||||
|
|
||||||
|
### Persistent settings
|
||||||
|
|
||||||
|
Paging-related settings (namely: number of posts per page, and sorting order) are stored in the browser and automatically restored when the app is initialized, so that you don't have to re-set them the way you like it every time.
|
||||||
|
|
||||||
## Limitations
|
## Limitations
|
||||||
|
|
||||||
Everything is based on the data contained in the Mastodon archive file. As far as I can tell, the archive does __not__ include:
|
Everything is based on the data contained in the Mastodon archive file. As far as I can tell, the archive does __not__ include:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user