1
0
mirror of https://github.com/kognise/water.css.git synced 2025-08-06 21:27:03 +02:00

feat: allow version select via URL query params

This commit is contained in:
Jonas Kuske
2019-06-01 02:18:05 +02:00
parent ba843037d0
commit 2216b32f09
5 changed files with 23 additions and 14 deletions

View File

@@ -1,2 +1,2 @@
<!DOCTYPE html><html lang="en"><head><title>Water.css</title><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="preload" as="style" href="https://cdn.jsdelivr.net/gh/kognise/water.css/dist/dark-legacy.standalone.min.css"><link rel="preload" as="style" href="https://cdn.jsdelivr.net/gh/kognise/water.css/dist/dark-legacy.standalone.min.css" media="(prefers-color-scheme: dark)"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css/dist/dark-legacy.min.css"><link rel="stylesheet" href="../dark.min.css"><link rel="stylesheet" id="js-stylesheet"><link rel="stylesheet" href="style.css"><script async src="https://www.googletagmanager.com/gtag/js?id=UA-116663597-6"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-116663597-6");</script></head><body> <h1>Water.css</h1> <p> Water.css is a just-add-css collection of styles to make simple websites like this just a little bit nicer. <br> Now you can write your simple static site with nice semantic html, and Water.css will manage the styling for you. </p> <div class="row"> <div> <a href="#installation"><b>Get it already!</b></a> <br> <a href="https://github.com/kognise/water.css"><b>GitHub</b></a> </div> <a href="https://www.producthunt.com/posts/water-css?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-water-css" target="_blank"> <img id="js-producthunt" src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=150490&theme=dark&period=daily" alt="Water.css - Make your tiny website just a little nicer | Product Hunt Embed" style="width:250px;height:54px" width="250px" height="54px"> </a> </div> <h2>Installation</h2> <div id="installation" v-cloak=""> <header class="row"> <h3>Paste this into the <code>&lt;head&gt;</code> of your HTML:</h3> <button type="button" @click="copyToClipboard"> <transition> <span v-if="copyStatus === 'success'" class="emoji"></span> <span v-else-if="copyStatus === 'failed'" class="emoji"></span> </transition> Copy to clipboard </button> </header> <transition mode="out-in"> <pre :key="selectedVersion.fileSnippet"><code>{{selectedVersion.fileSnippet}}</code></pre> </transition> <h3>Version options:</h3> <form action="./" method="post" @submit.prevent=""> <label> <input type="radio" value="dark" checked name="theme" v-model="versionOptions.theme"> Dark theme <span class="emoji">🌙</span> <span v-if="!versionOptions.isStandalone" class="emoji translucent" title="Selected theme may be overwritten by theme settings on user's device"> / ☀ </span> </label> <label> <input type="radio" value="light" name="theme" v-model="versionOptions.theme"> Light theme <span class="emoji"></span> <span v-if="!versionOptions.isStandalone" class="emoji translucent" title="Selected theme may be overwritten by theme settings on user's device"> / 🌙 </span> </label> <br><br> <label> <input type="checkbox" checked v-model="versionOptions.isStandalone"> Enforce theme? (ignore <code>prefers-color-scheme</code>) </label> <br><br> <label> <input type="checkbox" v-model="versionOptions.isLegacy"> Support Internet Explorer and other legacy browsers? </label> </form> <h3>Version info:</h3> <table> <tbody> <tr> <th>File</th> <td>{{ selectedVersion.fileName }}</td> </tr> <tr> <th>Size (min+gzip)</th> <td>{{ selectedVersion.fileSize }}KB</td> </tr> <tr> <th>Theme</th> <td> <template v-if="versionOptions.isStandalone"> <span v-if="versionOptions.theme === 'dark'" class="emoji">🌙</span> <span v-else="" class="emoji"></span> {{ versionOptions.theme | capitalize }} </template> <template v-else=""> <span v-if="versionOptions.theme === 'dark'" class="emoji" title="Selected theme may be overwritten by theme settings on user's device"> 🌙<span class="translucent"> / ☀</span> </span> <span v-else="" class="emoji" title="Selected theme may be overwritten by theme settings on user's device"><span class="translucent"> / 🌙</span> </span> Defaults to {{ versionOptions.theme }}, but respects user-defined theme settings. (detected via <code>prefers-color-scheme</code>) <template v-if="preferedColorScheme"> <br>Your device is currently set to {{ preferedColorScheme }} mode. </template> </template> </td> </tr> <tr> <th>Browser support</th> <td> <template v-if="versionOptions.isLegacy"> All browsers (including Internet Explorer) </template> <template v-else=""> All current browsers (<a href="https://caniuse.com/#feat=css-variables">support for CSS Custom Properties</a>) </template> </td> </tr> </tbody> </table>
</div> <h2 id="goals">Goals</h2> <ul> <li>Responsive</li> <li>Good code quality</li> <li>Good browser support</li> <li>Small size (&lt; 2kb)</li> <li>Beautiful</li> <li>No classes</li> </ul> <h2 id="responsive">Is it responsive?</h2> <p> <strong>Heck yeah!</strong> It doesn't include any fancy styles so it's easily mobile responsive. Just add the famous <a href="https://www.w3schools.com/css/css_rwd_viewport.asp">responsive viewport tag</a> and you'll be good to go! </p> <p>In fact, try resizing this page. Everything flows super nicely as you'll see.</p> <h2 id="demo">Element demos</h2> <p>This is supposed to be a demo page so we need more elements!</p> <h3 id="form-elements">Form elements</h3> <form> <label for="email">Email</label> <input type="email" name="email" id="email" placeholder="john.doe@gmail.com"> <label for="id">User id (read only)</label> <input readonly name="id" id="id" value="04D6H89Z"> <label for="disabled">Random disabled input</label> <input disabled name="disabled" id="disabled" placeholder="Because why not?"> <label for="about">About me</label> <textarea name="about" id="about" placeholder="I am a textarea..."></textarea> <label>Choose a Doe:</label> <div> <input type="radio" id="john" name="drone" value="john" checked> <label for="john">John Doe</label> </div> <div> <input type="radio" id="jane" name="drone" value="jane" checked> <label for="jane">Jane Doe</label> </div> <div> <input type="radio" id="johnny" name="drone" value="johnny" checked> <label for="johnny">Johnny Doe</label> </div> <br> <input type="checkbox" name="remember" id="remember" checked> <label for="remember">Remember me</label> <input type="submit"> </form> <h3 id="code">Code</h3> <p> Below is some code, you can copy it with <kbd>Ctrl-C</kbd>. Did you know, <code>alert(1)</code> can show an alert in JavaScript! </p> <pre><code>// This logs a message to the console and check out the scrollbar.<br>console.log('Hello, world!')</code></pre> <h3 id="other">Other</h3> <p>Here's a horizontal rule and image because I don't know where else to put them.</p> <img src="https://placekitten.com/408/287" alt="Example kitten"> <hr> <p>And here's a nicely marked up table!</p> <table> <thead> <tr> <th>Name</th> <th>Quantity</th> <th>Price</th> </tr> </thead> <tbody> <tr> <td>Godzilla</td> <td>2</td> <td>$299.99</td> </tr> <tr> <td>Mozilla</td> <td>10</td> <td>$100,000.00</td> </tr> <tr> <td>Quesadilla</td> <td>1</td> <td>$2.22</td> </tr> </tbody> </table> <h3 id="typography">Typography</h3> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque dictum hendrerit velit, quis ullamcorper sem congue ac. Quisque id magna rhoncus, sodales massa vel, vestibulum elit. Duis ornare accumsan egestas. Proin maximus lacus interdum leo molestie convallis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut iaculis risus eu felis feugiat, eu mollis neque elementum. Donec interdum, nisl id dignissim iaculis, felis dui aliquet dui, non fermentum velit lectus ac quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. <strong>This is strong,</strong> this is normal, <b>this is just bold,</b> <em>and this is emphasized!</em> And heck, <a href="/">here</a>'s a link. </p> <blockquote cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote"> "The HTML blockquote Element (or HTML Block Quotation Element) indicates that the enclosed text is an extended quotation. Usually, this is rendered visually by indentation (see <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote#Usage_notes">Notes</a> for how to change it). A URL for the source of the quotation may be given using the <code>cite</code> attribute, while a text representation of the source can be given using the <code>&ltcite&gt</code> cite element." <footer> <cite>MDN, "The Block Quotation element"</cite> </footer> </blockquote> <ul> <li>Unordered list item 1</li> <li>Unordered list item 2</li> <li>Unordered list item 3</li> </ul> <ol> <li>Ordered list item 1</li> <li>Ordered list item 2</li> <li>Ordered list item 3</li> </ol> <p>Addresses are also styled to be <strong>awesome</strong>!</p> <address> <a href="mailto:john.doe@example.com">john.doe@example.com</a><br> <a href="tel:778-330-2389">778-330-2389</a><br> <a href="sms:666-666-6666">666-666-6666</a><br> </address> <br> <h1>Heading 1</h1> <h2>Heading 2</h2> <h3>Heading 3</h3> <h4>Heading 4</h4> <h5>Heading 5</h5> <h6>Heading 6</h6> <footer> <a href="#">Back to top <span class="emoji"></span></a> </footer> <script src="https://unpkg.com/clipboard-polyfill@2.8.0/build/clipboard-polyfill.promise.js" defer></script> <script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js" defer></script> <script src="script.js" defer></script> </body></html>
<!DOCTYPE html><html lang="en"><head><title>Water.css</title><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="preload" as="style" href="https://cdn.jsdelivr.net/gh/kognise/water.css/dist/dark-legacy.standalone.min.css"><link rel="preload" as="style" href="https://cdn.jsdelivr.net/gh/kognise/water.css/dist/dark-legacy.standalone.min.css" media="(prefers-color-scheme: dark)"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css/dist/dark-legacy.min.css"><link rel="stylesheet" href="../dark.min.css"><link rel="stylesheet" id="js-stylesheet"><link rel="stylesheet" href="style.css"><script async src="https://www.googletagmanager.com/gtag/js?id=UA-116663597-6"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-116663597-6");</script></head><body> <h1>Water.css</h1> <p> Water.css is a drop-in collection of CSS styles to make simple websites like this just a little bit nicer. <br> Now you can write your simple static site with nice semantic html, and Water.css will manage the styling for you. </p> <div class="row"> <div> <a href="#installation"><b>Get it already!</b></a> <br> <a href="https://github.com/kognise/water.css"><b>GitHub</b></a> </div> <a href="https://www.producthunt.com/posts/water-css?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-water-css" target="_blank"> <img id="js-producthunt" src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=150490&theme=dark&period=daily" alt="Water.css - Make your tiny website just a little nicer | Product Hunt Embed" style="width:250px;height:54px" width="250px" height="54px"> </a> </div> <h2>Installation</h2> <div id="installation" v-cloak=""> <header class="row"> <h3>Paste this into the <code>&lt;head&gt;</code> of your HTML:</h3> <button type="button" @click="copyToClipboard"> <transition> <span v-if="copyStatus === 'success'" class="emoji"></span> <span v-else-if="copyStatus === 'failed'" class="emoji"></span> </transition> Copy to clipboard </button> </header> <transition mode="out-in"> <pre :key="selectedVersion.fileSnippet"><code>{{selectedVersion.fileSnippet}}</code></pre> </transition> <h3>Version options:</h3> <form action="./" method="post" @submit.prevent=""> <label> <input type="radio" value="dark" checked name="theme" v-model="versionOptions.theme"> Dark theme <span class="emoji">🌙</span> <span v-if="!versionOptions.isStandalone" class="emoji translucent" title="Selected theme may be overwritten by theme settings on user's device"> / ☀ </span> </label> <label> <input type="radio" value="light" name="theme" v-model="versionOptions.theme"> Light theme <span class="emoji"></span> <span v-if="!versionOptions.isStandalone" class="emoji translucent" title="Selected theme may be overwritten by theme settings on user's device"> / 🌙 </span> </label> <br><br> <label> <input type="checkbox" checked v-model="versionOptions.isStandalone"> Enforce theme? (ignore <code>prefers-color-scheme</code>) </label> <br><br> <label> <input type="checkbox" v-model="versionOptions.isLegacy"> Support Internet Explorer and other legacy browsers? </label> </form> <h3>Version info:</h3> <table> <tbody> <tr> <th>File</th> <td>{{ selectedVersion.fileName }}</td> </tr> <tr> <th>Size (min+gzip)</th> <td>{{ selectedVersion.fileSize }}KB</td> </tr> <tr> <th>Theme</th> <td> <template v-if="versionOptions.isStandalone"> <span v-if="versionOptions.theme === 'dark'" class="emoji">🌙</span> <span v-else="" class="emoji"></span> {{ versionOptions.theme | capitalize }} </template> <template v-else=""> <span v-if="versionOptions.theme === 'dark'" class="emoji" title="Selected theme may be overwritten by theme settings on user's device"> 🌙<span class="translucent"> / ☀</span> </span> <span v-else="" class="emoji" title="Selected theme may be overwritten by theme settings on user's device"><span class="translucent"> / 🌙</span> </span> Defaults to {{ versionOptions.theme }}, but respects user-defined theme settings. (detected via <code>prefers-color-scheme</code>) <template v-if="preferedColorScheme"> <br>Your device is currently set to {{ preferedColorScheme }} mode. </template> </template> </td> </tr> <tr> <th>Browser support</th> <td> <template v-if="versionOptions.isLegacy"> All browsers (including Internet Explorer) </template> <template v-else=""> All current browsers (<a href="https://caniuse.com/#feat=css-variables">support for CSS Custom Properties</a>) </template> </td> </tr> </tbody> </table>
</div> <h2 id="goals">Goals</h2> <ul> <li>Responsive</li> <li>Good code quality</li> <li>Good browser support</li> <li>Small size (&lt; 2kb)</li> <li>Beautiful</li> <li>No classes</li> </ul> <h2 id="responsive">Is it responsive?</h2> <p> <strong>Heck yeah!</strong> It doesn't include any fancy styles so it's easily mobile responsive. Just add the famous <a href="https://www.w3schools.com/css/css_rwd_viewport.asp">responsive viewport tag</a> and you'll be good to go! </p> <p>In fact, try resizing this page. Everything flows super nicely as you'll see.</p> <h2 id="demo">Element demos</h2> <p>This is supposed to be a demo page so we need more elements!</p> <h3 id="form-elements">Form elements</h3> <form> <label for="email">Email</label> <input type="email" name="email" id="email" placeholder="john.doe@gmail.com"> <label for="id">User id (read only)</label> <input readonly name="id" id="id" value="04D6H89Z"> <label for="disabled">Random disabled input</label> <input disabled name="disabled" id="disabled" placeholder="Because why not?"> <label for="about">About me</label> <textarea name="about" id="about" placeholder="I am a textarea..."></textarea> <label>Choose a Doe:</label> <div> <input type="radio" id="john" name="drone" value="john" checked> <label for="john">John Doe</label> </div> <div> <input type="radio" id="jane" name="drone" value="jane" checked> <label for="jane">Jane Doe</label> </div> <div> <input type="radio" id="johnny" name="drone" value="johnny" checked> <label for="johnny">Johnny Doe</label> </div> <br> <input type="checkbox" name="remember" id="remember" checked> <label for="remember">Remember me</label> <input type="submit"> </form> <h3 id="code">Code</h3> <p> Below is some code, you can copy it with <kbd>Ctrl-C</kbd>. Did you know, <code>alert(1)</code> can show an alert in JavaScript! </p> <pre><code>// This logs a message to the console and check out the scrollbar.<br>console.log('Hello, world!')</code></pre> <h3 id="other">Other</h3> <p>Here's a horizontal rule and image because I don't know where else to put them.</p> <img src="https://placekitten.com/408/287" alt="Example kitten"> <hr> <p>And here's a nicely marked up table!</p> <table> <thead> <tr> <th>Name</th> <th>Quantity</th> <th>Price</th> </tr> </thead> <tbody> <tr> <td>Godzilla</td> <td>2</td> <td>$299.99</td> </tr> <tr> <td>Mozilla</td> <td>10</td> <td>$100,000.00</td> </tr> <tr> <td>Quesadilla</td> <td>1</td> <td>$2.22</td> </tr> </tbody> </table> <h3 id="typography">Typography</h3> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque dictum hendrerit velit, quis ullamcorper sem congue ac. Quisque id magna rhoncus, sodales massa vel, vestibulum elit. Duis ornare accumsan egestas. Proin maximus lacus interdum leo molestie convallis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut iaculis risus eu felis feugiat, eu mollis neque elementum. Donec interdum, nisl id dignissim iaculis, felis dui aliquet dui, non fermentum velit lectus ac quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. <strong>This is strong,</strong> this is normal, <b>this is just bold,</b> <em>and this is emphasized!</em> And heck, <a href="/">here</a>'s a link. </p> <blockquote cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote"> "The HTML blockquote Element (or HTML Block Quotation Element) indicates that the enclosed text is an extended quotation. Usually, this is rendered visually by indentation (see <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote#Usage_notes">Notes</a> for how to change it). A URL for the source of the quotation may be given using the <code>cite</code> attribute, while a text representation of the source can be given using the <code>&lt;cite&gt;</code> cite element." <footer> <cite>MDN, "The Block Quotation element"</cite> </footer> </blockquote> <ul> <li>Unordered list item 1</li> <li>Unordered list item 2</li> <li>Unordered list item 3</li> </ul> <ol> <li>Ordered list item 1</li> <li>Ordered list item 2</li> <li>Ordered list item 3</li> </ol> <p>Addresses are also styled to be <strong>awesome</strong>!</p> <address> <a href="mailto:john.doe@example.com">john.doe@example.com</a><br> <a href="tel:778-330-2389">778-330-2389</a><br> <a href="sms:666-666-6666">666-666-6666</a><br> </address> <br> <h1>Heading 1</h1> <h2>Heading 2</h2> <h3>Heading 3</h3> <h4>Heading 4</h4> <h5>Heading 5</h5> <h6>Heading 6</h6> <footer> <a href="#">Back to top <span class="emoji"></span></a> </footer> <script src="https://unpkg.com/clipboard-polyfill@2.8.0/build/clipboard-polyfill.promise.js" defer></script> <script src="https://unpkg.com/@ungap/url-search-params@0.1.2/min.js" defer></script> <script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js" defer></script> <script src="script.js" defer></script> </body></html>

2
dist/docs/script.js vendored
View File

@@ -1,2 +1,2 @@
"use strict";var e=window,t="https://cdn.jsdelivr.net/gh/kognise/water.css/dist/",n={"dark.min.css":1.4,"dark.standalone.min.css":1.31,"dark-legacy.min.css":2.487,"dark-legacy.standalone.min.css":1.16,"light.min.css":1.4,"light.standalone.min.css":1.3,"light-legacy.min.css":.178+1.16+1.15,"light-legacy.standalone.min.css":1.15},s=function(e){var t=e.theme,n=e.isLegacy?"-legacy":"",s=e.isStandalone?".standalone":"";return"".concat(t).concat(n).concat(s,".min.css")},r=function(e){var n=e.theme,r=e.isLegacy,i=e.isStandalone,c=s({theme:n,isLegacy:r,isStandalone:i}),a='<link rel="stylesheet" href="'.concat(t).concat(c,'">');return!r||i?a:(function(e){var n=e.theme,r=e.isLegacy,i=e.isStandalone,c="dark"===n?"light":"dark",a=s({theme:c,isLegacy:r,isStandalone:i});return'\n\x3c!-- Preload the required stylesheets (optional) --\x3e\n<link rel="preload" as="style" href="'.concat(t).concat(s({theme:n,isLegacy:r,isStandalone:i}),'">\n<link rel="preload" as="style" href="').concat(t).concat(a,'" media="(prefers-color-scheme: ').concat(c,')">')}({theme:n,isLegacy:r,isStandalone:!0})+"\n\n"+a).trim()},i={_productHunt:document.querySelector("#js-producthunt"),_stylesheet:document.querySelector("#js-stylesheet"),_updateProductHunt:function(e){this._productHunt.src=this._productHunt.src.replace(/dark|light/,e)},_updateStylesheet:function(e){this._stylesheet.href="../"+e},update:function(e,t){var n=e.isStandalone?e.theme:t||e.theme;this._updateStylesheet(s(e)),this._updateProductHunt(n)}},c=function(t,n){var s=e.matchMedia("(prefers-color-scheme: ".concat(t,")"));s.addListener(function(e){return n(e.matches)}),n(s.matches)};new e.Vue({el:"#installation",filters:{capitalize:function(e){return e.charAt(0).toUpperCase()+e.slice(1)}},data:{versionOptions:{theme:"dark",isStandalone:!1,isLegacy:!1},preferedColorScheme:null,copyStatus:null},computed:{selectedVersion:function(){return{fileName:s(this.versionOptions),fileSize:(e=this.versionOptions,n[s(e)]||0).toFixed(2),fileSnippet:r(this.versionOptions)};var e}},created:function(){var e=this;c("dark",function(t){return t&&(e.preferedColorScheme="dark")}),c("light",function(t){return t&&(e.preferedColorScheme="light")}),this.preferedColorScheme&&i._updateProductHunt(this.preferedColorScheme)},methods:{copyToClipboard:function(){var t=this;Promise.resolve().then(function(){return e.clipboard.writeText(t.selectedVersion.fileSnippet)}).then(function(){return t.copyStatus="success"}).catch(function(){return t.copyStatus="failed"}),setTimeout(function(){return t.copyStatus=null},1e3)}},watch:{preferedColorScheme:function(e){i.update(this.versionOptions,e)},versionOptions:{deep:!0,handler:function(e){i.update(e,this.preferedColorScheme)}}}});
"use strict";var e=window,t=new URLSearchParams(e.location.search),n="https://cdn.jsdelivr.net/gh/kognise/water.css/dist/",s={"dark.min.css":1.4,"dark.standalone.min.css":1.31,"dark-legacy.min.css":2.487,"dark-legacy.standalone.min.css":1.16,"light.min.css":1.4,"light.standalone.min.css":1.3,"light-legacy.min.css":.178+1.16+1.15,"light-legacy.standalone.min.css":1.15},a=function(e){var t=e.theme,n=e.isLegacy?"-legacy":"",s=e.isStandalone?".standalone":"";return"".concat(t).concat(n).concat(s,".min.css")},i=function(e){var t=e.theme,s=e.isLegacy,i=e.isStandalone,r=a({theme:t,isLegacy:s,isStandalone:i}),c='<link rel="stylesheet" href="'.concat(n).concat(r,'">');return!s||i?c:(function(e){var t=e.theme,s=e.isLegacy,i=e.isStandalone,r="dark"===t?"light":"dark",c=a({theme:r,isLegacy:s,isStandalone:i});return'\n\x3c!-- Preload the required stylesheets (optional) --\x3e\n<link rel="preload" as="style" href="'.concat(n).concat(a({theme:t,isLegacy:s,isStandalone:i}),'">\n<link rel="preload" as="style" href="').concat(n).concat(c,'" media="(prefers-color-scheme: ').concat(r,')">')}({theme:t,isLegacy:s,isStandalone:!0})+"\n\n"+c).trim()},r={_productHunt:document.querySelector("#js-producthunt"),_stylesheet:document.querySelector("#js-stylesheet"),_updateProductHunt:function(e){this._productHunt.src=this._productHunt.src.replace(/dark|light/,e)},_updateStylesheet:function(e){this._stylesheet.href="../"+e},update:function(e,t){var n=e.isStandalone?e.theme:t||e.theme;this._updateStylesheet(a(e)),this._updateProductHunt(n)}},c=function(t,n){var s=e.matchMedia("(prefers-color-scheme: ".concat(t,")"));s.addListener(function(e){return n(e.matches)}),n(s.matches)},o=t.get("theme"),l={theme:/dark|light/.test(o)?o:"dark",isLegacy:t.has("legacy"),isStandalone:t.has("standalone")};new e.Vue({el:"#installation",filters:{capitalize:function(e){return e.charAt(0).toUpperCase()+e.slice(1)}},data:{versionOptions:l,preferedColorScheme:null,copyStatus:null},computed:{selectedVersion:function(){return{fileName:a(this.versionOptions),fileSize:(e=this.versionOptions,s[a(e)]||0).toFixed(2),fileSnippet:i(this.versionOptions)};var e}},created:function(){var e=this;c("dark",function(t){return t&&(e.preferedColorScheme="dark")}),c("light",function(t){return t&&(e.preferedColorScheme="light")}),r.update(this.versionOptions,this.preferedColorScheme)},methods:{copyToClipboard:function(){var t=this;Promise.resolve().then(function(){return e.clipboard.writeText(t.selectedVersion.fileSnippet)}).then(function(){return t.copyStatus="success"}).catch(function(){return t.copyStatus="failed"}),setTimeout(function(){return t.copyStatus=null},1e3)}},watch:{preferedColorScheme:function(e){r.update(this.versionOptions,e)},versionOptions:{deep:!0,handler:function(e){r.update(e,this.preferedColorScheme)}}}});
//# sourceMappingURL=script.js.map

File diff suppressed because one or more lines are too long

View File

@@ -55,7 +55,7 @@
<h1>Water.css</h1>
<p>
Water.css is a just-add-css collection of styles to make simple websites like this just a
Water.css is a drop-in collection of CSS styles to make simple websites like this just a
little bit nicer.
<br />
Now you can write your simple static site with nice semantic html, and Water.css will manage
@@ -204,7 +204,7 @@
>
for how to change it). A URL for the source of the quotation may be given using the
<code>cite</code> attribute, while a text representation of the source can be given using the
<code>&ltcite&gt</code> cite element."
<code>&lt;cite&gt;</code> cite element."
<footer>
<cite>MDN, "The Block Quotation element"</cite>
@@ -246,7 +246,8 @@
src="https://unpkg.com/clipboard-polyfill@2.8.0/build/clipboard-polyfill.promise.js"
defer
></script>
<script src="https://unpkg.com/vue@~2.6.10/dist/vue.min.js" defer></script>
<script src="https://unpkg.com/@ungap/url-search-params@0.1.2/min.js" defer></script>
<script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js" defer></script>
<script src="https://unpkg.com/favicon-mode-switcher@^1.0.0" defer></script>
<script src="script.js" defer></script>
</body>

View File

@@ -5,8 +5,15 @@
/** @typedef {{ Vue: typeof import('vue').default, clipboard: Clipboard }} Libraries */
/** @typedef {{ theme: Theme, isLegacy: boolean, isStandalone: boolean }} VersionOptions */
/** @typedef {Object} VueData State used by the version picker
* @prop {VersionOptions} versionOptions
* @prop {?CopyStatus} copyStatus
* @prop {?Theme} preferedColorScheme
*/
/** Reference to global window, but with properties for loaded libraries. */
const w = /** @type {Window & Libraries} */ (window)
const queryParams = new URLSearchParams(w.location.search)
/** The base URI from where the docs page loads the CSS files. */
const DEV_BASE = '../'
@@ -90,11 +97,12 @@ const createColorSchemeListener = (scheme, queryHandler) => {
queryHandler(mediaQuery.matches)
}
/** @typedef {Object} VueData
* @prop {VersionOptions} versionOptions
* @prop {?CopyStatus} copyStatus
* @prop {?Theme} preferedColorScheme
*/
const themeFromParams = queryParams.get('theme')
const initialVersionOptions = {
theme: /** @type {Theme} */ (/dark|light/.test(themeFromParams) ? themeFromParams : 'dark'),
isLegacy: queryParams.has('legacy'),
isStandalone: queryParams.has('standalone'),
}
new w.Vue({
el: '#installation',
@@ -103,7 +111,7 @@ new w.Vue({
},
/** @type {VueData} */
data: {
versionOptions: { theme: /** @type {Theme} */ ('dark'), isStandalone: false, isLegacy: false },
versionOptions: initialVersionOptions,
preferedColorScheme: null,
copyStatus: null,
},
@@ -121,7 +129,7 @@ new w.Vue({
createColorSchemeListener('dark', match => match && (this.preferedColorScheme = 'dark'))
createColorSchemeListener('light', match => match && (this.preferedColorScheme = 'light'))
if (this.preferedColorScheme) externalElements._updateProductHunt(this.preferedColorScheme)
externalElements.update(this.versionOptions, this.preferedColorScheme)
},
methods: {
copyToClipboard() {