// Water.css Bookmarklet // --------------------- const $$ = (selector) => document.querySelectorAll(selector) const createElement = (tagName, properties) => Object.assign(document.createElement(tagName), properties) // Remove all CSS stylesheets, external and internal $$('link[rel="stylesheet"],style').forEach((el) => el.remove()) // Remove all inline styles $$('*').forEach((el) => (el.style = '')) const linkElm = createElement('link', { rel: 'stylesheet', href: 'https://cdn.jsdelivr.net/npm/water.css@2/out/light.css' }) // Add water.css and responsive viewport (if necessary) document.head.append( linkElm, !$$('meta[name="viewport"]').length && createElement('meta', { name: 'viewport', content: 'width=device-width,initial-scale=1.0' }) ) // Theme switching icons const moonSVG = '' const sunSVG = '' // Theme toggling logic const toggleBtn = createElement('button', { innerHTML: sunSVG, ariaLabel: 'Switch theme', style: ` position: fixed; top: 50px; right: 50px; margin: 0; padding: 10px; line-height: 1; ` }) let theme = 'light' const toggleTheme = () => { if (theme === 'light') { theme = 'dark' toggleBtn.innerHTML = moonSVG linkElm.href = 'https://cdn.jsdelivr.net/npm/water.css@2/out/dark.css' } else { theme = 'light' linkElm.href = 'https://cdn.jsdelivr.net/npm/water.css@2/out/light.css' toggleBtn.innerHTML = sunSVG } } toggleBtn.addEventListener('click', toggleTheme) document.body.append(toggleBtn)