feat: react to user contrast preferences

This commit is contained in:
2024-03-16 13:09:21 +01:00
parent 5d4dbc7e2a
commit 4e4bff02a0
6 changed files with 44 additions and 8 deletions

View File

@@ -207,6 +207,10 @@
background: var(--md-sys-color-background); background: var(--md-sys-color-background);
} }
@media (prefers-contrast: more) {
opacity: 0.8;
}
} }
.search-row { .search-row {

View File

@@ -44,8 +44,8 @@
y={pos[1] + middle[1]} y={pos[1] + middle[1]}
font-size={fontSizeMultiplier * (hasIcon ? iconFontSize : fontSize)} font-size={fontSizeMultiplier * (hasIcon ? iconFontSize : fontSize)}
font-family={hasIcon ? "Material Symbols Rounded" : undefined} font-family={hasIcon ? "Material Symbols Rounded" : undefined}
opacity={isActive ? 1 : inactiveOpacity} opacity={isActive ? 1 : `var(--inactive-opacity, ${inactiveOpacity})`}
style:scale={isActive ? 1 : inactiveScale} style:scale={isActive ? 1 : `var(--inactive-scale, ${inactiveScale})`}
style:translate={isActive style:translate={isActive
? "0 0 0" ? "0 0 0"
: `${direction[0].toPrecision(2)}px ${direction[1].toPrecision(2)}px 0`} : `${direction[0].toPrecision(2)}px ${direction[1].toPrecision(2)}px 0`}
@@ -75,6 +75,11 @@
opacity #{$transition} ease, opacity #{$transition} ease,
translate #{$transition} ease, translate #{$transition} ease,
scale #{$transition} ease; scale #{$transition} ease;
@media (prefers-contrast: more) {
--inactive-opacity: 0.8;
--inactive-scale: 0.7;
}
} }
text:focus-within { text:focus-within {

View File

@@ -151,6 +151,10 @@
padding-block-start: 0; padding-block-start: 0;
opacity: 0.4; opacity: 0.4;
@media (prefers-contrast: more) {
opacity: 0.8;
}
} }
ul { ul {

View File

@@ -153,16 +153,25 @@
} }
textarea { textarea {
transition: border-color 250ms ease; transition: outline-color 250ms ease;
background: none; background: none;
color: inherit; color: inherit;
border: 1px dashed var(--md-sys-color-surface-variant); outline: 1px dashed var(--md-sys-color-surface-variant);
margin: 2px;
border: none;
padding: 8px; padding: 8px;
border-radius: 4px; border-radius: 4px;
@media (prefers-contrast: more) {
outline-color: var(--md-sys-color-outline);
&:focus {
outline-width: 2px;
}
}
&:focus { &:focus {
outline: none; outline-color: var(--md-sys-color-primary);
border-color: var(--md-sys-color-primary);
} }
} }
@@ -185,13 +194,23 @@
transition: all 250ms ease; transition: all 250ms ease;
@media (prefers-contrast: more) {
border-color: var(--md-sys-color-outline);
border-style: dashed;
}
&::placeholder { &::placeholder {
color: var(--md-sys-color-on-surface-variant); color: var(--md-sys-color-on-surface-variant);
opacity: 0.2; opacity: 0.2;
@media (prefers-contrast: more) {
opacity: 0.8;
}
} }
&:focus { &:focus {
border-color: var(--md-sys-color-primary); border-color: var(--md-sys-color-primary);
border-style: solid;
outline: none; outline: none;
} }
} }

View File

@@ -101,6 +101,10 @@
<style lang="scss"> <style lang="scss">
span { span {
opacity: 0.5; opacity: 0.5;
@media (prefers-contrast: more) {
opacity: 0.8;
}
} }
sup { sup {

View File

@@ -38,8 +38,8 @@
setContext<VisualLayoutConfig>("visual-layout-config", { setContext<VisualLayoutConfig>("visual-layout-config", {
scale: 50, scale: 50,
inactiveScale: 0.7, inactiveScale: 0.5,
inactiveOpacity: 0.8, inactiveOpacity: 0.4,
strokeWidth: 1, strokeWidth: 1,
margin: 5, margin: 5,
fontSize: 9, fontSize: 9,