Skip to content

Commit

Permalink
$mol_theme: use oklab
Browse files Browse the repository at this point in the history
  • Loading branch information
jin committed Nov 3, 2023
1 parent fb5b53b commit 30100b3
Showing 1 changed file with 61 additions and 45 deletions.
106 changes: 61 additions & 45 deletions theme/theme.css
Original file line number Diff line number Diff line change
@@ -1,69 +1,85 @@
:root {
--mol_theme_hue: 210deg;
--mol_theme_luma: -1;
--mol_theme_satur: 1;
--mol_theme_image: none;
--mol_theme_hue: 240deg;
}

[mol_theme] {
:where([mol_theme]) {
color: var(--mol_theme_text);
fill: var(--mol_theme_text);
}
:where([mol_theme]) {
background-color: var(--mol_theme_back);
}

:root, [mol_theme] {
--mol_theme_back: hsl( var(--mol_theme_hue), calc( var(--mol_theme_satur) * 20% ), calc( 55% + 45% * var(--mol_theme_luma) ) );
--mol_theme_text: hsl( var(--mol_theme_hue), 0%, calc( 40% - 40% * var(--mol_theme_luma) ) );
--mol_theme_field: hsl( var(--mol_theme_hue), calc( var(--mol_theme_satur) * 50% ), calc( 54% + 46% * var(--mol_theme_luma) ), .25 );

--mol_theme_card: hsl( var(--mol_theme_hue), calc( var(--mol_theme_satur) * 50% ), calc( 55% + 35% * var(--mol_theme_luma) ), .25 );
--mol_theme_hover: hsl( var(--mol_theme_hue), 0%, 50%, .1 );
--mol_theme_line: hsl( var(--mol_theme_hue), 0%, 50%, .2 );
--mol_theme_shade: hsl( var(--mol_theme_hue), 0%, 50%, 1 );
:root, [mol_theme="$mol_theme_dark"], :where([mol_theme="$mol_theme_dark"]) [mol_theme] {

--mol_theme_image: invert(1) hue-rotate( 180deg );

--mol_theme_back: oklch( 20% .03 var(--mol_theme_hue) );
--mol_theme_card: oklch( 30% .05 var(--mol_theme_hue) / .25 );
--mol_theme_field: oklch( 0% 0 var(--mol_theme_hue) / .25 );
--mol_theme_hover: oklch( 50% 0 var(--mol_theme_hue) / .1 );

--mol_theme_control: hsl( var(--mol_theme_hue), 50%, calc( 50% - 10% * var(--mol_theme_luma) ) );
--mol_theme_current: hsl( calc( var(--mol_theme_hue) - 90deg ), 50%, calc( 50% - 10% * var(--mol_theme_luma) ) );
--mol_theme_special: hsl( calc( var(--mol_theme_hue) + 90deg ), 50%, calc( 50% - 10% * var(--mol_theme_luma) ) );
--mol_theme_focus: hsl( calc( var(--mol_theme_hue) + 180deg ), 100%, calc( 55% - 10% * var(--mol_theme_luma) ) );
--mol_theme_text: oklch( 80% 0 var(--mol_theme_hue) );
--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );
--mol_theme_line: oklch( 50% 0 var(--mol_theme_hue) / .2 );
--mol_theme_focus: oklch( 75% .12 calc( var(--mol_theme_hue) + 120deg ) );

--mol_theme_control: oklch( 70% .12 var(--mol_theme_hue) );
--mol_theme_current: oklch( 70% .12 calc( var(--mol_theme_hue) - 60deg ) );
--mol_theme_special: oklch( 70% .12 calc( var(--mol_theme_hue) + 60deg ) );

}

[mol_theme="$mol_theme_light"] {
--mol_theme_luma: 1;
[mol_theme="$mol_theme_light"], :where([mol_theme="$mol_theme_light"]) [mol_theme] {

--mol_theme_image: none;
}

--mol_theme_back: oklch( 98% .01 var(--mol_theme_hue) );
--mol_theme_card: oklch( 90% .05 var(--mol_theme_hue) / .25 );
--mol_theme_field: oklch( 100% 0 var(--mol_theme_hue) / .25 );
--mol_theme_hover: oklch( 80% 0 var(--mol_theme_hue) / .1 );

--mol_theme_text: oklch( 20% 0 var(--mol_theme_hue) );
--mol_theme_shade: oklch( 60% 0 var(--mol_theme_hue) );
--mol_theme_line: oklch( 70% 0 var(--mol_theme_hue) / .2 );
--mol_theme_focus: oklch( 40% .5 calc( var(--mol_theme_hue) + 120deg ) );

--mol_theme_control: oklch( 40% .2 var(--mol_theme_hue) );
--mol_theme_current: oklch( 45% .3 calc( var(--mol_theme_hue) - 60deg ) );
--mol_theme_special: oklch( 40% .3 calc( var(--mol_theme_hue) + 60deg ) );

[mol_theme="$mol_theme_dark"] {
--mol_theme_luma: -1;
--mol_theme_image: invert(1) hue-rotate( 180deg );
}

[mol_theme="$mol_theme_base"] {
--mol_theme_luma: -2;
--mol_theme_back: hsl( var(--mol_theme_hue), 50%, 40% );
--mol_theme_hover: hsl( var(--mol_theme_hue), 60%, 30% );
--mol_theme_current: hsl( var(--mol_theme_hue), 100%, 20% );
:where( :root, [mol_theme="$mol_theme_dark"] ) [mol_theme="$mol_theme_base"] {
--mol_theme_back: oklch( 25% .04 var(--mol_theme_hue) );
--mol_theme_card: oklch( 35% .04 var(--mol_theme_hue) / .25 );
}

[mol_theme="$mol_theme_current"] {
background-color: var(--mol_theme_back);
--mol_theme_back: hsl( calc( var(--mol_theme_hue) - 90deg ), 50%, calc( 50% + 30% * var(--mol_theme_luma) ) );
:where( [mol_theme="$mol_theme_light"] ) [mol_theme="$mol_theme_base"] {
--mol_theme_back: oklch( 95% .02 var(--mol_theme_hue) );
--mol_theme_card: oklch( 80% .1 var(--mol_theme_hue) / .25 );
}

[mol_theme="$mol_theme_special"] {
--mol_theme_card: hsl( calc( var(--mol_theme_hue) + 90deg ), 50%, calc( 55% + 35% * var(--mol_theme_luma) ), .25 );
:where( :root, [mol_theme="$mol_theme_dark"] ) [mol_theme="$mol_theme_accent"] {
--mol_theme_back: oklch( 35% .06 calc( var(--mol_theme_hue) + 120deg ) );
--mol_theme_card: oklch( 45% .06 calc( var(--mol_theme_hue) + 120deg ) / .25 );
}
:where( [mol_theme="$mol_theme_light"] ) [mol_theme="$mol_theme_accent"] {
--mol_theme_back: oklch( 90% .05 calc( var(--mol_theme_hue) + 120deg ) );
--mol_theme_card: oklch( 80% .05 calc( var(--mol_theme_hue) + 120deg ) / .25 );
}

[mol_theme="$mol_theme_accent"] {
background-color: var(--mol_theme_back);
--mol_theme_luma: -2;
--mol_theme_shade: hsl( var(--mol_theme_hue), 50%, 95%, .8 );
--mol_theme_back: hsl( calc( var(--mol_theme_hue) + 180deg ), 90%, 50% );
--mol_theme_hover: hsl( calc( var(--mol_theme_hue) + 180deg ), 80%, 35% );
:where( :root, [mol_theme="$mol_theme_dark"] ) [mol_theme="$mol_theme_current"] {
--mol_theme_back: oklch( 25% .04 calc( var(--mol_theme_hue) - 60deg ) );
--mol_theme_card: oklch( 35% .04 calc( var(--mol_theme_hue) - 60deg ) / .25 );
}
:where( [mol_theme="$mol_theme_light"] ) [mol_theme="$mol_theme_current"] {
--mol_theme_back: oklch( 95% .02 calc( var(--mol_theme_hue) - 60deg ) );
--mol_theme_card: oklch( 80% .1 calc( var(--mol_theme_hue) - 60deg ) / .25 );
}

[mol_theme="$mol_theme_accent"] [mol_theme="$mol_theme_accent"] {
--mol_theme_back: black;
:where( :root, [mol_theme="$mol_theme_dark"] ) [mol_theme="$mol_theme_special"] {
--mol_theme_back: oklch( 25% .04 calc( var(--mol_theme_hue) + 60deg ) );
--mol_theme_card: oklch( 35% .04 calc( var(--mol_theme_hue) + 60deg ) / .25 );
}
:where( [mol_theme="$mol_theme_light"] ) [mol_theme="$mol_theme_special"] {
--mol_theme_back: oklch( 95% .02 calc( var(--mol_theme_hue) + 60deg ) );
--mol_theme_card: oklch( 80% .1 calc( var(--mol_theme_hue) + 60deg ) / .25 );
}

0 comments on commit 30100b3

Please sign in to comment.