Tiddlywiki5: [IDEA] A Toggle Button for Simple Switching Dark/Light Theme for Tiddlywiki 5.1.23

Created on 10 Nov 2020  路  23Comments  路  Source: Jermolene/TiddlyWiki5

Tiddlywiki 5.1.23 has a bunch of wonderful new features. With the advent of toggle operator and the nice working dark palettes, yet the current trend for having toggle dark/light on many websites, I may recommend

  1. Have a toggle button on the page control or top menu bar
  2. Use nice buttons like https://icones.js.org/collection/uil (see the nice light/dark button top right of screen)
  3. Toggle between Vanilla / Gruvbox dark or Neon from JD

Most helpful comment

@BurningTreeC I was thinking we just let the user directly choose a dark and light palette as part of a config option.

All 23 comments

@BurningTreeC Is this something you might want to tackle? Even if it doesn't make it into the core right away, I think it would be a nice plugin.

JD has already done most of the groundwork in #4769

@saqimtiaz we'd need a dark / light equivalent for every theme... I don't know if we do. But I'd like to tackle this, yes

@BurningTreeC I was thinking we just let the user directly choose a dark and light palette as part of a config option.

Good idea @saqimtiaz !

@BurningTreeC do have a look at JD's implementation in #4769, some good ideas in there

Just to complicate things, there is a media query for detecting the users preference for dark mode vs. light mode:

https://css-tricks.com/dark-modes-with-css/

$:/core/modules/info/platform.js could use Window.matchMedia() to set an info tiddler.

$:/core/modules/info/platform.js could use Window.matchMedia() to set an info tiddler.

@Jermolene, that's a nice idea. I already did so, but now I need some ideas how to make use of it

@Jermolene, that's a nice idea. I already did so, but now I need some ideas how to make use of it

I get the impression that people like websites that automatically adapt to the prevailing display mode, so I think that would be a good starting point. We should also listen for changes using the technique shown in https://flaviocopes.com/javascript-detect-dark-mode/

Having said that, we may want to keep this back until after v5.1.23...

yes @Jermolene, I also want to keep this back until after v5.1.23

I think it would be good to give this a run as a plugin, or an early part of 5.1.24-prelease to get user feedback.

@Jermolene - I tried using window.matchMedia and listening for changes on the preferred color scheme and I got it working. I currently do this in startup.js, set a state tiddler (like $:/state/dark-mode) to true or false on startup and change it when the preferred color scheme changes.

In the colour macro then we can do <$transclude tiddler={{{ [{$:/state/dark-mode}match[true]then{$:/config/DarkMode/palette}] ~[{$:/config/LightMode/palette}] ~[{$:/palette}] }}} index="$name$"> and users can configure their dark/light palettes through the ControlPanel

I think switching between themes is already a button, that can be used that way. Do we really need complex CSS?

I think switching between themes is already a button, that can be used that way. Do we really need complex CSS?

The rationale for a modal switcher is that it is outside the main page container in the DOM, and hence can't be disrupted by a faulty page layout.

I love that there are system/media-query hooks to use. I implemented this as a simple light/dark toigle sidebar button in my silat (martial arts) wiki: https://silat.chronicles.wiki

(Part of my PageTools plugin that I have to rework now that we have toggle[] and cycle[]. I also got a couple of good svgs to use there.)

@Jermolene , I don't want to create a new issue for this question: why does the framed editor extract the background-color from the currently used palette and set it for the iframeNode and domNode, if we can style them through a Stylesheet, which makes it also easier to modify styles... ?

Hi @BurningTreeC the issue is that we can't style the contents of the iframe from the main stylesheet, so we style an off-screen text area and then copy the styles one by one.

Hi @Jermolene, thanks for the explanation, but I was fiddling around by commenting out the lines that set the background-color to the iframeNode and the domNode and still it works fine styling them via a Stylesheet

Hi @BurningTreeC I think you might have authored the lines in question: 14003b0e88fa8378af71f499700c648fe2a3f3d7

Hi @BurningTreeC I think you might have authored the lines in question: 14003b0

Ouch, that was a mistake!

Hi @BurningTreeC I think you might have authored the lines in question: 14003b0

@Jermolene, I'll revert this with this PR here

@Jermolene, I'll revert this with this PR here

Thanks @BurningTreeC

Folks,

Beyone simple nioght day switching - I support that.

Using this filter invert gives me the clue I was looking for, a way to get Icons to be given contrasting colors. Without even knowing the color one can use its rotated hue.

_ Somehow I feel this feature could be built into svg display or designs to allow a primary colour to be selected freely knowing its background as an example will contrast.
_ My interest is to allow designers to use alternate colors on available icons when adding a new button feature, but we always have the issue of "other themes", changes in background color etc...
_ This may also apply to svgs from the icon source Mohammad shared recently

All I ask is when investigating the mechaisium for night/day please also consider it as a way to ensure complementary colors and please avoid compromising future possibilities.

Thanks
Tony

Post script, eg using traffic light colors to indicate button status etc...

Was this page helpful?
0 / 5 - 0 ratings

Related issues

0xMH picture 0xMH  路  6Comments

joshuafontany picture joshuafontany  路  5Comments

saqimtiaz picture saqimtiaz  路  5Comments

Jermolene picture Jermolene  路  6Comments

twMat picture twMat  路  5Comments