mirror of
https://github.com/kognise/water.css.git
synced 2025-08-10 15:14:34 +02:00
refactor: add HTML processing, picker as partial
This commit is contained in:
359
dist/docs/index.html
vendored
359
dist/docs/index.html
vendored
@@ -1,357 +1,2 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Water.css</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<!-- Base styles of water.css, so styles don't have to wait until JS is loaded -->
|
||||
<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"
|
||||
/>
|
||||
|
||||
<!-- TODO: Remove once water.css v2 is hosted so the above links work -->
|
||||
<link rel="stylesheet" href="../dark.min.css" />
|
||||
|
||||
<!-- Dynamic version of water.css, overwrites base styles. JavaScript sets & updates href. -->
|
||||
<link rel="stylesheet" id="js-stylesheet" />
|
||||
<!-- Custom styles for the documentation / version picker -->
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-116663597-6"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || []
|
||||
function gtag() {
|
||||
dataLayer.push(arguments)
|
||||
}
|
||||
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>
|
||||
|
||||
<!-- Start interactive version picker -->
|
||||
<div id="installation" v-cloak>
|
||||
<h2>Installation</h2>
|
||||
|
||||
<div style="overflow: hidden">
|
||||
<header class="row">
|
||||
<h3>Paste this into the <code><head></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>
|
||||
</div>
|
||||
<!-- End interactive version picker -->
|
||||
|
||||
<h2 id="goals">Goals</h2>
|
||||
<ul>
|
||||
<li>Responsive</li>
|
||||
<li>Good code quality</li>
|
||||
<li>Good browser support</li>
|
||||
<li>Small size (< 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><cite></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 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><head></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 (< 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><cite></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>
|
2
dist/docs/style.css
vendored
2
dist/docs/style.css
vendored
@@ -1,2 +1,2 @@
|
||||
html{scroll-behavior:smooth}#js-producthunt{margin-top:1rem}#installation header>h3{margin:1rem 2.5rem 1rem 0}#installation header button{position:relative;margin-left:auto;overflow:visible}#installation header button span{position:absolute;left:-2rem;display:inline-block;transform:scale(1.3)}#installation table{table-layout:fixed}#installation table th{border:none;vertical-align:top;width:35%}body>footer{padding-top:2rem;display:flex;justify-content:flex-end;align-items:flex-end}.row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.emoji{font-family:Segoe UI Emoji,Apple Color Emoji,Noto Color Emoji,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.translucent{opacity:.5}.v-enter,.v-leave-to{transform:scale(0)!important}.v-enter-active,.v-leave-active{transition:transform .22s cubic-bezier(.175,.885,.32,1.275)}[v-cloak]>:not(h2){display:none}[v-cloak]:after{content:"Version picker is loading..."}
|
||||
html{scroll-behavior:smooth}#js-producthunt{margin-top:1rem}#installation{overflow:hidden}#installation header>h3{margin:1rem 2.5rem 1rem 0}#installation header button{position:relative;margin-left:auto;overflow:visible}#installation header button span{position:absolute;left:-2rem;display:inline-block;transform:scale(1.3)}#installation table{table-layout:fixed}#installation table th{border:none;vertical-align:top;width:35%}body>footer{padding-top:2rem;display:flex;justify-content:flex-end;align-items:flex-end}.row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.emoji{font-family:Segoe UI Emoji,Apple Color Emoji,Noto Color Emoji,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.translucent{opacity:.4}.v-enter,.v-leave-to{transform:scale(0)!important}.v-enter-active,.v-leave-active{transition:transform .22s cubic-bezier(.175,.885,.32,1.275)}[v-cloak]>*{display:none}[v-cloak]:after{content:"Version picker is loading..."}
|
||||
/*# sourceMappingURL=style.css.map */
|
||||
|
2
dist/docs/style.css.map
vendored
2
dist/docs/style.css.map
vendored
@@ -1 +1 @@
|
||||
{"version":3,"sources":["style.css"],"names":[],"mappings":"AAAA,KACE,sBACF,CAEA,gBACE,eACF,CAEA,wBACE,yBACF,CAEA,4BACE,iBAAkB,CAClB,gBAAiB,CACjB,gBACF,CACA,iCACE,iBAAkB,CAClB,UAAW,CACX,oBAAqB,CACrB,oBACF,CAEA,oBACE,kBACF,CACA,uBACE,WAAY,CACZ,kBAAmB,CACnB,SACF,CAEA,YACE,gBAAiB,CACjB,YAAa,CACb,wBAAyB,CACzB,oBACF,CAGA,KACE,YAAa,CACb,cAAe,CACf,kBAAmB,CACnB,6BACF,CAGA,OACE,+LAGF,CACA,aACE,UACF,CAGA,qBAEE,4BACF,CACA,gCAEE,2DACF,CACA,mBACE,YACF,CACA,gBACE,sCACF","file":"style.css","sourcesContent":["html {\n scroll-behavior: smooth;\n}\n\n#js-producthunt {\n margin-top: 1rem;\n}\n\n#installation header > h3 {\n margin: 1rem 2.5rem 1rem 0;\n}\n/* Make the ✔ / ❌ Emoji appear next to the button */\n#installation header button {\n position: relative;\n margin-left: auto;\n overflow: visible;\n}\n#installation header button span {\n position: absolute;\n left: -2rem;\n display: inline-block;\n transform: scale(1.3);\n}\n/* Fixed layout so columns don't jump when content changes */\n#installation table {\n table-layout: fixed;\n}\n#installation table th {\n border: none;\n vertical-align: top;\n width: 35%;\n}\n\nbody > footer {\n padding-top: 2rem;\n display: flex;\n justify-content: flex-end;\n align-items: flex-end;\n}\n\n/* Used for (Links / ProductHunt) and (Installation / Copy-Button) rows */\n.row {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n\n/* Use proper Emoji instead of plain Unicode chars */\n.emoji {\n font-family: 'Segoe UI Emoji', 'Apple Color Emoji', 'Noto Color Emoji', system-ui, -apple-system,\n BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans,\n Helvetica Neue, sans-serif;\n}\n.translucent {\n opacity: 0.5;\n}\n\n/* For the bounce transitions of code snippet and copy success Emoji */\n.v-enter,\n.v-leave-to {\n transform: scale(0) !important;\n}\n.v-enter-active,\n.v-leave-active {\n transition: transform 220ms cubic-bezier(0.175, 0.885, 0.32, 1.275);\n}\n[v-cloak] > *:not(h2) {\n display: none;\n}\n[v-cloak]::after {\n content: 'Version picker is loading...';\n}\n"]}
|
||||
{"version":3,"sources":["style.css"],"names":[],"mappings":"AAAA,KACE,sBACF,CAEA,gBACE,eACF,CAEA,cACE,eACF,CACA,wBACE,yBACF,CAEA,4BACE,iBAAkB,CAClB,gBAAiB,CACjB,gBACF,CACA,iCACE,iBAAkB,CAClB,UAAW,CACX,oBAAqB,CACrB,oBACF,CAEA,oBACE,kBACF,CACA,uBACE,WAAY,CACZ,kBAAmB,CACnB,SACF,CAEA,YACE,gBAAiB,CACjB,YAAa,CACb,wBAAyB,CACzB,oBACF,CAGA,KACE,YAAa,CACb,cAAe,CACf,kBAAmB,CACnB,6BACF,CAGA,OACE,+LAGF,CACA,aACE,UACF,CAGA,qBAEE,4BACF,CACA,gCAEE,2DACF,CACA,YACE,YACF,CACA,gBACE,sCACF","file":"style.css","sourcesContent":["html {\n scroll-behavior: smooth;\n}\n\n#js-producthunt {\n margin-top: 1rem;\n}\n\n#installation {\n overflow: hidden;\n}\n#installation header > h3 {\n margin: 1rem 2.5rem 1rem 0;\n}\n/* Make the ✔ / ❌ Emoji appear next to the button */\n#installation header button {\n position: relative;\n margin-left: auto;\n overflow: visible;\n}\n#installation header button span {\n position: absolute;\n left: -2rem;\n display: inline-block;\n transform: scale(1.3);\n}\n/* Fixed layout so columns don't jump when content changes */\n#installation table {\n table-layout: fixed;\n}\n#installation table th {\n border: none;\n vertical-align: top;\n width: 35%;\n}\n\nbody > footer {\n padding-top: 2rem;\n display: flex;\n justify-content: flex-end;\n align-items: flex-end;\n}\n\n/* Used for (Links / ProductHunt) and (Installation / Copy-Button) rows */\n.row {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n\n/* Use proper Emoji instead of plain Unicode chars */\n.emoji {\n font-family: 'Segoe UI Emoji', 'Apple Color Emoji', 'Noto Color Emoji', system-ui, -apple-system,\n BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans,\n Helvetica Neue, sans-serif;\n}\n.translucent {\n opacity: 0.4;\n}\n\n/* For the bounce transitions of code snippet and copy success Emoji */\n.v-enter,\n.v-leave-to {\n transform: scale(0) !important;\n}\n.v-enter-active,\n.v-leave-active {\n transition: transform 220ms cubic-bezier(0.175, 0.885, 0.32, 1.275);\n}\n[v-cloak] > * {\n display: none;\n}\n[v-cloak]::after {\n content: 'Version picker is loading...';\n}\n"]}
|
121
docs/index.html
121
docs/index.html
@@ -82,125 +82,8 @@
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Start interactive version picker -->
|
||||
<div id="installation" v-cloak>
|
||||
<h2>Installation</h2>
|
||||
|
||||
<div style="overflow: hidden">
|
||||
<header class="row">
|
||||
<h3>Paste this into the <code><head></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>
|
||||
</div>
|
||||
<!-- End interactive version picker -->
|
||||
<h2>Installation</h2>
|
||||
<include src="./versionpicker.html"></include>
|
||||
|
||||
<h2 id="goals">Goals</h2>
|
||||
<ul>
|
||||
|
@@ -6,6 +6,9 @@ html {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
#installation {
|
||||
overflow: hidden;
|
||||
}
|
||||
#installation header > h3 {
|
||||
margin: 1rem 2.5rem 1rem 0;
|
||||
}
|
||||
@@ -53,7 +56,7 @@ body > footer {
|
||||
Helvetica Neue, sans-serif;
|
||||
}
|
||||
.translucent {
|
||||
opacity: 0.5;
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
/* For the bounce transitions of code snippet and copy success Emoji */
|
||||
@@ -65,7 +68,7 @@ body > footer {
|
||||
.v-leave-active {
|
||||
transition: transform 220ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
|
||||
}
|
||||
[v-cloak] > *:not(h2) {
|
||||
[v-cloak] > * {
|
||||
display: none;
|
||||
}
|
||||
[v-cloak]::after {
|
||||
|
115
docs/versionpicker.html
Executable file
115
docs/versionpicker.html
Executable file
@@ -0,0 +1,115 @@
|
||||
<!-- Start interactive version picker -->
|
||||
<div id="installation" v-cloak>
|
||||
<header class="row">
|
||||
<h3>Paste this into the <code><head></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>
|
||||
<!-- End interactive version picker -->
|
45
gulpfile.js
45
gulpfile.js
@@ -11,6 +11,9 @@ const filter = require('gulp-filter')
|
||||
const flatten = require('gulp-flatten')
|
||||
const babel = require('gulp-babel')
|
||||
const terser = require('gulp-terser')
|
||||
const posthtml = require('gulp-posthtml')
|
||||
const posthtmlInclude = require('posthtml-include')
|
||||
const htmlnano = require('htmlnano')
|
||||
const sizereport = require('gulp-sizereport')
|
||||
const postcssCssVariables = require('postcss-css-variables')
|
||||
const postcssImport = require('postcss-import')
|
||||
@@ -113,23 +116,37 @@ function style() {
|
||||
}
|
||||
|
||||
function docs() {
|
||||
const htmlOnly = filter('**/*.html', { restore: true })
|
||||
const jsOnly = filter('**/*.js', { restore: true })
|
||||
const cssOnly = filter('**/*.css', { restore: true })
|
||||
|
||||
return gulp
|
||||
.src(paths.docs.src)
|
||||
.pipe(jsOnly)
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(babel({ presets: ['@babel/preset-env'] }))
|
||||
.pipe(terser({ toplevel: true }))
|
||||
.pipe(sourcemaps.write('.'))
|
||||
.pipe(jsOnly.restore)
|
||||
.pipe(cssOnly)
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(postcss([cssnano()]))
|
||||
.pipe(sourcemaps.write('.'))
|
||||
.pipe(cssOnly.restore)
|
||||
.pipe(gulp.dest(paths.docs.dest))
|
||||
return (
|
||||
gulp
|
||||
// Exclude all HTML files but index.html
|
||||
.src(paths.docs.src, { ignore: '**/!(index).html' })
|
||||
|
||||
// * Process HTML *
|
||||
.pipe(htmlOnly)
|
||||
.pipe(posthtml([posthtmlInclude({ root: './docs/' }), htmlnano()]))
|
||||
.pipe(htmlOnly.restore)
|
||||
|
||||
// * Process JS *
|
||||
.pipe(jsOnly)
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(babel({ presets: ['@babel/preset-env'] }))
|
||||
.pipe(terser({ toplevel: true }))
|
||||
.pipe(sourcemaps.write('.'))
|
||||
.pipe(jsOnly.restore)
|
||||
|
||||
// * Process CSS *
|
||||
.pipe(cssOnly)
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(postcss([cssnano()]))
|
||||
.pipe(sourcemaps.write('.'))
|
||||
.pipe(cssOnly.restore)
|
||||
|
||||
.pipe(gulp.dest(paths.docs.dest))
|
||||
)
|
||||
}
|
||||
|
||||
const browserReload = done => (browserSync.reload(), done())
|
||||
|
@@ -36,13 +36,16 @@
|
||||
"gulp-filter": "^5.1.0",
|
||||
"gulp-flatten": "^0.4.0",
|
||||
"gulp-postcss": "^8.0.0",
|
||||
"gulp-posthtml": "^3.0.4",
|
||||
"gulp-rename": "^1.4.0",
|
||||
"gulp-sizereport": "^1.2.1",
|
||||
"gulp-sourcemaps": "^2.6.5",
|
||||
"gulp-terser": "^1.2.0",
|
||||
"htmlnano": "^0.2.3",
|
||||
"postcss-color-mod-function": "^3.0.3",
|
||||
"postcss-css-variables": "^0.12.0",
|
||||
"postcss-import": "^12.0.1"
|
||||
"postcss-import": "^12.0.1",
|
||||
"posthtml-include": "^1.2.0"
|
||||
},
|
||||
"browserslist": [
|
||||
"defaults AND not android 4.4.3"
|
||||
|
Reference in New Issue
Block a user