add themes folder

This commit is contained in:
Heydon Pickering 2017-11-02 15:39:45 +00:00
parent 503276e26e
commit aa6df76ca2
93 changed files with 3836 additions and 0 deletions

20
themes/cupper/LICENSE.md Normal file
View File

@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2017 YOUR_NAME_HERE
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,5 @@
+++
title = "The Name Of This Project/Site"
+++
This is your homepage. These are the contents of the `index.md` file, found in your `content` folder.

View File

@ -0,0 +1,10 @@
+++
title = "My First Pattern File"
tags = ["example tag", "another tag"]
+++
You can just write **markdown** here. But don't forget there are lots of shortcodes to help you with writing and showing off code too. See [the documentation for **Cupper**](https://thepaciellogroup.github.io/cupper/) for full details.
{{% note %}}
Here's an example of a note shortcode for adding little "oh and also" notes to your patterns' documentation.
{{% /note %}}

View File

@ -0,0 +1,6 @@
+++
title = "Cupper"
type = "print-version"
+++
You don't want to edit this file :-)

View File

@ -0,0 +1,3 @@
# Your Documentation's README
Please fill me out!

View File

@ -0,0 +1,149 @@
{
"title": "Inclusive Design Principles",
"description": "<p>These Inclusive Design Principles are about putting people first. It's about designing for the needs of people with permanent, temporary, situational, or changing disabilities — all of us really.</p><p>They are intended to give anyone involved in the design and development of websites and applications - designers, user experience professionals, developers, product owners, idea makers, innovators, artists and thinkers - a broad approach to inclusive design.</p><p>For more background, read about the <a href=\"https://www.paciellogroup.com/blog/2017/06/inclusive-design-principles/\">Inclusive Design Principles</a> on the TPG blog.</p>",
"authors": [
"Léonie Watson",
"Henny Swan",
"Ian Pouncey",
"Heydon Pickering"
],
"principles": [
{
"title": "Provide comparable experience",
"strapline": "Ensure your interface provides a comparable experience for all so people can accomplish tasks in a way that suits their needs without undermining the quality of the content.",
"description": "Whether out of circumstance, choice, or context people are diverse. As people use different approaches and tools to read and operate interfaces, what the interface offers each user should be comparable in value, quality, and efficiency.",
"examples": [
{
"title": "Content for alternatives",
"description": "Having a basic alternative, whether it's alt text, a transcript, audio description, or sign language, makes the content accessible but to be equivalent it needs to capture the essence of the original."
},
{
"title": "Ergonomic features",
"description": "Providing synchronized closed captions makes your video accessible. But making them customizable, color coded, and repositionable provides a more comparable experience."
},
{
"title": "Notifications",
"description": "Notifications that appear in an interface are visually obvious but require proactive discovery by screen reader users. A comparable experience for blind users, can be achieved by using a live region. The notification then requires no explicit action on the part of the user."
}
]
},
{
"title": "Consider situation",
"strapline": "People use your interface in different situations. Make sure your interface delivers a valuable experience to people regardless of their circumstances.",
"description": "People are first time users, established users, users at work, users at home, users on the move, and users under pressure. All of these situations can have an impact. For those who already find interaction challenging, such as those with disabilities, this impact may make usage particularly difficult.",
"examples": [
{
"title": "Colour contrast",
"description": "When using an interface outdoors, good contrast lessens the impact of bright sunshine."
},
{
"title": "Context sensitive help",
"description": "Users may need help when they first encounter a complex form or interaction. This help may become redundant, even distracting, as a user becomes more familiar with the form or interaction. Context sensitive help provides the user with choice as to when they access help and better control over the page."
},
{
"title": "Captions on the go",
"description": "You're aware that the video content you are providing will be consumed on mobile devices, which may be in public spaces where people might prefer to consume the content without being antisocial. For smaller viewports, sound is switched off and captions activated by default."
}
]
},
{
"title": "Be consistent",
"strapline": "Use familiar conventions and apply them consistently.",
"description": "Familiar interfaces borrow from well-established patterns. These should be used consistently within the interface to reinforce their meaning and purpose. This should be applied to functionality, behavior, editorial, and presentation. You should say the same things in the same way and users should be able to do the same things in the same way.",
"examples": [
{
"title": "Consistent design patterns",
"description": "Use consistent web and platform design patterns to help build familiarity and understanding."
},
{
"title": "Consistent editorial",
"description": "Use plain language consistently across platforms including editorial that is relied on by screen reader users such as text alternatives, headings, labels for buttons and so on. Keeping editorial style consistent is also important e.g. making sure the top of the article always has a clearly marked summary paragraph, making sure bullets always start with a bolded definition."
},
{
"title": "Consistent page architecture",
"description": "Use consistent page architecture across templates to help people scan and navigate key content."
}
]
},
{
"title": "Give control",
"strapline": "Ensure people are in control. People should be able to access and interact with content in their preferred way.",
"description": "Do not suppress or disable the ability to change standard browser and platform settings such as orientation, font size, zoom, and contrast. In addition, avoid content changes that have not been initiated by the user unless there is a way to control it.",
"examples": [
{
"title": "Scrolling control",
"description": "'Infinite scrolling' can be problematic, especially for users navigating by keyboard because they can't get past the stream of refreshing content. Give the option to turn off this feature and replace it with a 'load more' button."
},
{
"title": "Make it stop",
"description": "Some users find that animations or parallax scrolling cause nausea, and others find them plain distracting. Where they play automatically, they should at least be easy to stop, by providing prominent playback controls."
},
{
"title": "Allow zoom",
"description": "There are many reasons why a user may want to operate the pinch-to-zoom gesture on their touch device. Make sure it is not suppressed, and that the content does not get obscured when it is put to use."
}
]
},
{
"title": "Offer choice",
"strapline": "Consider providing different ways for people to complete tasks, especially those that are complex or non standard.",
"description": "There is often more than one way to complete a task. You cannot assume what someone's preferred way might be. By providing alternatives for layout and task completion, you offer people choices that suit them and their circumstances at the time.",
"examples": [
{
"title" : "Multiple ways to complete an action",
"description": "Where appropriate, provide multiple ways to complete an action. On mobile swipe to delete an item can be supported together with an edit button that allows you to select items then delete. An example of this is in iOS mail."
},
{
"title": "Layout",
"description": "Where there are long lists of content consider offering a grid or list layout option. This supports people who may want larger images on screen or smaller rows."
},
{
"title": "Accessible alternatives",
"description": "Alternative ways of presenting data, such as data tables for info graphics, should be available to all users, as an option rather than a hidden link just for screen reader users. Accessible alternatives can benefit not just a specific target group but all users as long as we offer the choice."
}
]
},
{
"title": "Prioritise content",
"strapline": "Help users focus on core tasks, features, and information by prioritising them within the content and layout.",
"description": "Interfaces can be difficult to understand when core features are not clearly exposed and prioritised. A site or application may provide lots of information and functionality, but people should be able to focus on one thing at a time. Identify the core purpose of the interface, and then the content and features needed to fulfill that purpose.",
"examples": [
{
"title": "Keep task focused",
"description": "Progressively reveal features and content when needed, not all in one go."
},
{
"title": "Prioritising tasks",
"description": "An email application is principally for writing and reading email. The 'compose' button is, therefore, present on all screens, and early in the focus order. The inbox is prioritised over other lists of email, such as 'sent' and 'spam' messages. Less used features such as tagging or organizing email into folders appear later in the focus order, as they will generally only be used when the primary task of reading the email is complete."
},
{
"title": "Prioritising content",
"description": "The primary content on a news article page is the story, therefore it should come before other content, both visually and in the source order. Related content, such as similar articles, should follow it, and unrelated content after that."
},
{
"title": "Prioritising editorial",
"description": "Editorial for links, headings and buttons should use plain language and put the primary text first. This applies to both visible and hidden text. This makes the text easy to scan both visually and audibly for screen reader users. Plain language also benefits non native speakers and is easier to translate."
}
]
},
{
"title": "Add value",
"strapline": "Consider the value of features and how they improve the experience for different users.",
"description": "Features should add value to the user experience by providing efficient and diverse ways to find and interact with content. Consider device features such as voice, geolocation, camera and vibration API's, and how integration with connected devices or a second screen could provide choice.",
"examples": [
{
"title": "Integration with connected devices or second screen",
"description": "Using voice interfaces to control multimedia, search for content, output from music or TV adds value for people who struggle to use other interfaces."
},
{
"title": "Integration with platform APIs",
"description": "Enhance functionality using platform features. The vibration API makes notifications more usable by deaf and hard of hearing people while the geolocation API makes it easier for people with mobility impairments to use location based services."
},
{
"title": "Make task completion easier",
"description": "Add a 'Show password' button to input fields so users can verify they have correctly inputted text, or add touch identification for password protected areas."
}
]
}
]
}

1427
themes/cupper/data/wcag.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,47 @@
{{ define "main"}}
<main id="main" class="custom-404">
<div>
<svg focusable="false" aria-hidden="true" id="svg17557" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" height="300" width="300" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 200.68132 201.9484">
<path id="path18122" style="fill:currentColor" d="m93.445 186.18c-9.3181-.95839-16.221-3.1758-22.129-7.1084-2.4158-1.6081-3.5517-2.546-5.6861-4.6949-5.3166-5.3527-9.1974-12.062-12.247-21.175-3.5356-10.564-5.565-23.163-6.2929-39.068-.18564-4.0562-.18139-5.8211.0149-6.2022.36615-.7107 1.3533-1.8483 2.1611-2.4905 5.9546-4.7339 20.506-7.3377 44.399-7.9452 10.884-.27673 24.77.31025 33.752 1.4268 8.6081 1.0701 14.103 2.4037 18.184 4.4135 1.514.74558 1.9175 1.0207 2.8462 1.9405 1.6485 1.6328 1.6776 1.7447 1.8604 7.1585.0815 2.4134.15966 4.4025.17362 4.4201.014.0176.37192-.10155.79547-.2648 1.9606-.7557 5.4856-1.8897 7.4188-2.3866 3.4803-.89461 4.6322-1.055 7.5772-1.0548 2.2812.00011 2.7738.0418 3.8219.32336 2.4593.66068 4.2879 1.8579 6.5898 4.3143 3.7398 3.991 5.7353 9.1755 5.5403 14.395-.35373 9.4692-7.7396 19.681-20.838 28.813-6.5178 4.5435-14.507 8.6528-21.442 11.029-3.6714 1.258-6.3697 1.9704-9.1721 2.4214l-1.318.21209-1.4432 1.1514c-6.937 5.5346-15.42 8.8867-25.719 10.164-3.1273.38768-6.3623.46386-8.8469.20831zm51.245-27.84c12.866-3.1338 22.611-10.731 25.885-20.178 1.3087-3.7759 1.2782-7.5513-.0817-10.134-1.2459-2.3664-3.7204-3.7774-6.6242-3.7774-2.2455 0-4.6077.65872-7.5722 2.1116-1.8817.92217-5.9349 3.4797-6.4943 4.0978-.197.21768-.35793.96062-.65668 3.0316-1.2792 8.868-3.5813 16.867-6.846 23.789l-.79064 1.6762.74092-.10105c.40751-.0556 1.5053-.28725 2.4395-.51481zm-39.881-11.38c2.0242-3.0409 3.8811-5.6978 4.1263-5.9041.85045-.71561 2.1154-.67999 2.9169.0821.26115.24832 2.151 2.9676 4.1997 6.0427l3.7249 5.5912.0359-18.318c.0198-10.075.0189-18.336-.002-18.356-.0208-.0208-1.088.11463-2.3715.30105-3.9101.56792-6.9264.78824-11.959.87353l-4.8127.0816.0337 10.561c.0444 13.893.18621 24.838.31993 24.692.059-.0646 1.7636-2.6055 3.7878-5.6464zm-8.8621-31.604c.0434-1.0974.096-1.3108.43075-1.7495.74121-.97122.6856-.96385 7.2839-.96618 8.0784-.003 10.804-.207 16.124-1.2078 2.7205-.51176 3.1672-.50492 3.8378.0588.68824.57851.89471 1.1459.89528 2.4604.00056 1.4741-.30216 1.3818 2.8769.87749 6.3714-1.0106 10.032-2.1365 11.456-3.5236.67245-.65504.69957-1.1507.10029-1.8332-.52438-.59724-1.3024-1.0575-2.6128-1.5457-6.5382-2.4358-20.852-3.9214-37.723-3.9152-16.822.006-31.408 1.5357-37.582 3.9409-1.2206.47549-2.4177 1.2925-2.743 1.872-.81334 1.4491 1.7536 2.9224 7.232 4.1508 6.5819 1.4758 17.731 2.5166 27.947 2.6088l2.4277.0219.0495-1.2499z"/>
<path id="steam1" style="stroke:currentColor;stroke-linecap:round;stroke-width:2.831;fill:none" d="m69.317 18.186c-16.697 13.051-12.991 23.992-.3056 33.933 16.392 13.012 12.685 23.953-.3056 33.933">
<animate attributeName="opacity" from="1" to="0" dur="2s" fill="freeze" repeatCount="indefinite"/>
</path>
<animate xlink:href="#steam1"
attributeName="d"
attributeType="XML"
from="m69.317 18.186c-16.697 13.051-12.991 23.992-.3056 33.933 16.392 13.012 12.685 23.953-.3056 33.933"
to="m68.63 18.53c-9.6052 7.0572-9.6052 17.155-2.0228 25.347 7.5637 6.9536 7.5637 17.051-.3056 25.347"
dur="2s"
fill="freeze"
repeatCount="indefinite" />
<path id="steam2" d="m97.479 17.843c-16.697 13.051-12.991 23.992-.3056 33.933 16.392 13.012 12.685 23.953-.3056 33.933" style="stroke:currentColor;stroke-linecap:round;stroke-width:2.831;fill:none">
<animate attributeName="opacity" from="1" to="0" dur="2s" begin="1s" fill="freeze" repeatCount="indefinite"/>
</path>
<animate xlink:href="#steam2"
attributeName="d"
attributeType="XML"
from="m97.479 17.843c-16.697 13.051-12.991 23.992-.3056 33.933 16.392 13.012 12.685 23.953-.3056 33.933"
to="m96.792 18.186c-9.6052 7.0572-9.6052 17.155-2.0228 25.347 7.5637 6.9536 7.5637 17.051-.3056 25.347"
dur="2s"
fill="freeze"
repeatCount="indefinite"
begin="1s" />
<path id="steam3" style="stroke:currentColor;stroke-linecap:round;stroke-width:2.831;fill:none" d="m125.98 18.873c-16.697 13.051-12.991 23.992-.3056 33.933 16.392 13.012 12.685 23.953-.3056 33.933">
<animate attributeName="opacity" from="1" to="0" dur="2s" begin="0.5s" fill="freeze" repeatCount="indefinite"/>
</path>
<animate xlink:href="#steam3"
attributeName="d"
attributeType="XML"
from="m125.98 18.873c-16.697 13.051-12.991 23.992-.3056 33.933 16.392 13.012 12.685 23.953-.3056 33.933"
to="m125.3 19.217c-9.6052 7.0572-9.6052 17.155-2.0228 25.347 7.5637 6.9536 7.5637 17.051-.3056 25.347"
dur="2s"
fill="freeze"
repeatCount="indefinite"
begin="0.5s" />
</svg>
<h1>404</h1>
<p>Oh dear. This page cannot be found.</p>
</div>
</main>
{{ end }}

View File

@ -0,0 +1,139 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="canonical" href="{{ .Permalink }}">
<link rel="apple-touch-icon" sizes="57x57" href="{{ "images/apple-touch-icon-57x57.png" | absURL }}">
<link rel="apple-touch-icon" sizes="60x60" href="{{ "images/apple-touch-icon-60x60.png" | absURL }}">
<link rel="apple-touch-icon" sizes="72x72" href="{{ "images/apple-touch-icon-72x72.png" | absURL }}">
<link rel="apple-touch-icon" sizes="76x76" href="{{ "images/apple-touch-icon-76x76.png" | absURL }}">
<link rel="apple-touch-icon" sizes="114x114" href="{{ "images/apple-touch-icon-114x114.png" | absURL }}">
<link rel="apple-touch-icon" sizes="120x120" href="{{ "images/apple-touch-icon-120x120.png" | absURL }}">
<link rel="apple-touch-icon" sizes="144x144" href="{{ "images/apple-touch-icon-144x144.png" | absURL }}">
<link rel="apple-touch-icon" sizes="152x152" href="{{ "images/apple-touch-icon-152x152.png" | absURL }}">
<link rel="apple-touch-icon" sizes="180x180" href="{{ "images/apple-touch-icon-180x180.png" | absURL }}">
<link rel="icon" type="image/png" sizes="192x192" href="{{ "images/android-icon-192x192.png" | absURL }}">
<link rel="icon" type="image/png" sizes="32x32" href="{{ "images/favicon-32x32.png" | absURL }}">
<link rel="icon" type="image/png" sizes="96x96" href="{{ "images/favicon-96x96.png" | absURL }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ "images/favicon-16x16.png" | absURL }}">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="{{ "images/ms-icon-144x144.png" | absURL }}">
<meta name="theme-color" content="#ffffff">
<link href="https://fonts.googleapis.com/css?family=PT+Sans:400,400i,700" rel="stylesheet" media="none" onload="this.media='all';">
<link rel="stylesheet" href="{{ "css/prism.css" | absURL }}" media="none" onload="this.media='all';">
<link rel="stylesheet" type="text/css" href="{{ "css/styles.css" | absURL }}">
<style id="inverter" media="none">
html { filter: invert(100%) }
* { background-color: inherit }
img:not([src*=".svg"]), .colors, iframe, .demo-container { filter: invert(100%) }
</style>
<title>
{{ block "title" . }}
{{ .Title }} | {{ .Site.Title }}
{{ end }}
</title>
{{ if .IsHome }}
<link rel="manifest" href="manifest.json">
{{ end }}
</head>
<body>
{{ if ne .Type "print-version" }}
<a href="#main">skip to content</a>
{{ end }}
{{ partial "svg.html" . }}
<div class="wrapper {{ if eq .Type "print-version" }}print-version{{ end }}">
<header class="intro-and-nav" role="banner">
<div>
<div class="intro">
<a class="logo" href="/" aria-label="{{ .Site.Title }} home page">
<img src="{{ "images/logo.svg" | absURL }}" alt="">
</a>
<p class="library-desc">
{{ .Site.Params.Description | markdownify }}
{{ if ne .Type "print-version" }}
<a class="print" href="{{ "print-version" | absURL }}">
<svg viewBox="0 0 35 45" aria-hidden="true" focusable="false">
<use xlink:href="#doc"></use>
</svg>Print version
{{ end }}
</a>
</p>
{{ if eq .Type "print-version" }}
<p class="toc-link">
<span aria-hidden="true">&#x2193;</span>
<a href="#toc">Table of contents</a>
<span aria-hidden="true">&#x2193;</span>
</p>
{{ end }}
</div>
{{ block "nav" . }}
<nav id="patterns-nav" class="patterns" role="navigation">
<h2 class="vh">Main navigation</h2>
<button id="menu-button" aria-expanded="false">
<svg viewBox="0 0 50 50" aria-hidden="true" focusable="false">
<use xlink:href="#menu"></use>
</svg>
Menu
</button>
{{ $current := . }}
{{ range $.Site.Home.Sections }}
<ul id="patterns-list">
{{ range .Pages.ByWeight }}
<li class="pattern">
<a href="{{ .RelPermalink }}" {{ if eq $current.Title .Title }}aria-current="page"{{ end }}>
<svg class="bookmark-icon" aria-hidden="true" focusable="false" viewBox="0 0 40 50">
<use xlink:href="#bookmark"></use>
</svg>
<span class="text">{{ .Title }}</span>
</a>
</li>
{{ end }}
{{ range .Sections.ByWeight }}
<li>
<h3>{{ .Title }}</h3>
<ul>
{{ range .Pages.ByWeight }}
<li class="pattern">
<a href="{{ .RelPermalink }}" {{ if eq $current.Title .Title }}aria-current="page"{{ end }}>
<svg class="bookmark-icon" aria-hidden="true" viewBox="0 0 40 50" focusable="false">
<use xlink:href="#bookmark"></use>
</svg>
<span class="text">{{ .Title }}</span>
</a>
</li>
{{ end }}
</ul>
</li>
{{ end }}
</ul>
{{ end }}
</nav>
{{ end }}
</div>
</header>
<div class="main-and-footer">
<div>
{{ block "main" . }}
{{ end }}
<footer role="contentinfo">
<div>
<label for="themer">
dark theme: <input type="checkbox" id="themer" class="vh">
<span aria-hidden="true"></span>
</label>
</div>
Powered by <strong>Cupper</strong>, a <strong>The Paciello Group</strong> project.<br>
For general enquiries, contact us on info@paciellogroup.com.
</footer>
</div>
</div>
</div>
<script src="{{ "js/prism.js" | absURL }}"></script>
<script src="{{ "js/dom-scripts.js" | absURL }}"></script>
{{ if .Page.IsHome }}
<script src="{{ "js/service-worker-registration.js" | absURL }}"></script>
{{ end }}
</body>
</html>

View File

@ -0,0 +1,10 @@
<li>
<h2>
<a href="{{ .Permalink }}">
<svg class="bookmark" aria-hidden="true" viewBox="0 0 40 50" focusable="false">
<use xlink:href="#bookmark"></use>
</svg>
{{ .Title }}
</a>
</h2>
</li>

View File

@ -0,0 +1,12 @@
{{ define "main" }}
<main id="main">
<h1>
{{ .Title }}
</h1>
<ul class="patterns-list">
{{ range .Data.Pages }}
{{ .Render "li"}}
{{ end }}
</ul>
</main>
{{ end }}

View File

@ -0,0 +1,6 @@
{{ define "main" }}
<main id="main">
<h1>{{ .Title }}</h1>
{{ .Content }}
</main>
{{ end }}

View File

@ -0,0 +1,10 @@
{{ define "title" }}
{{ .Site.Title }}
{{ end }}
{{ define "main" }}
<main id="main">
<h1>{{ .Title }}</h1>
{{ .Content }}
</main>
{{ end }}

View File

@ -0,0 +1,88 @@
<svg style="display: none">
<symbol id="bookmark" viewBox="0 0 40 50">
<g transform="translate(2266 3206.2)">
<path style="stroke:currentColor;stroke-width:3.2637;fill:none" d="m-2262.2-3203.4-.2331 42.195 16.319-16.318 16.318 16.318.2331-42.428z"/>
</g>
</symbol>
<symbol id="w3c" viewBox="0 0 127.09899 67.763">
<text font-size="83" style="font-size:83px;font-family:Trebuchet;letter-spacing:-12;fill-opacity:0" letter-spacing="-12" y="67.609352" x="-26.782778">W3C</text>
<text font-size="83" style="font-size:83px;font-weight:bold;font-family:Trebuchet;fill-opacity:0" y="67.609352" x="153.21722" font-weight="bold">SVG</text>
<path style="fill:currentColor;image-rendering:optimizeQuality;shape-rendering:geometricPrecision" d="m33.695.377 12.062 41.016 12.067-41.016h8.731l-19.968 67.386h-.831l-12.48-41.759-12.479 41.759h-.832l-19.965-67.386h8.736l12.061 41.016 8.154-27.618-3.993-13.397h8.737z"/>
<path style="fill:currentColor;image-rendering:optimizeQuality;shape-rendering:geometricPrecision" d="m91.355 46.132c0 6.104-1.624 11.234-4.862 15.394-3.248 4.158-7.45 6.237-12.607 6.237-3.882 0-7.263-1.238-10.148-3.702-2.885-2.47-5.02-5.812-6.406-10.022l6.82-2.829c1.001 2.552 2.317 4.562 3.953 6.028 1.636 1.469 3.56 2.207 5.781 2.207 2.329 0 4.3-1.306 5.909-3.911 1.609-2.606 2.411-5.738 2.411-9.401 0-4.049-.861-7.179-2.582-9.399-1.995-2.604-5.129-3.912-9.397-3.912h-3.327v-3.991l11.646-20.133h-14.062l-3.911 6.655h-2.493v-14.976h32.441v4.075l-12.31 21.217c4.324 1.385 7.596 3.911 9.815 7.571 2.22 3.659 3.329 7.953 3.329 12.892z"/>
<path style="fill:currentColor;image-rendering:optimizeQuality;shape-rendering:geometricPrecision" d="m125.21 0 1.414 8.6-5.008 9.583s-1.924-4.064-5.117-6.314c-2.693-1.899-4.447-2.309-7.186-1.746-3.527.73-7.516 4.938-9.258 10.13-2.084 6.21-2.104 9.218-2.178 11.978-.115 4.428.58 7.043.58 7.043s-3.04-5.626-3.011-13.866c.018-5.882.947-11.218 3.666-16.479 2.404-4.627 5.954-7.404 9.114-7.728 3.264-.343 5.848 1.229 7.841 2.938 2.089 1.788 4.213 5.698 4.213 5.698l4.94-9.837z"/>
<path style="fill:currentColor;image-rendering:optimizeQuality;shape-rendering:geometricPrecision" d="m125.82 48.674s-2.208 3.957-3.589 5.48c-1.379 1.524-3.849 4.209-6.896 5.555-3.049 1.343-4.646 1.598-7.661 1.306-3.01-.29-5.807-2.032-6.786-2.764-.979-.722-3.486-2.864-4.897-4.854-1.42-2-3.634-5.995-3.634-5.995s1.233 4.001 2.007 5.699c.442.977 1.81 3.965 3.749 6.572 1.805 2.425 5.315 6.604 10.652 7.545 5.336.945 9.002-1.449 9.907-2.031.907-.578 2.819-2.178 4.032-3.475 1.264-1.351 2.459-3.079 3.116-4.108.487-.758 1.276-2.286 1.276-2.286l-1.276-6.644z"/>
</symbol>
<symbol id="tag" viewBox="0 0 177.16535 177.16535">
<g transform="translate(0 -875.2)">
<path style="fill-rule:evenodd;stroke-width:0;fill:currentColor" d="m159.9 894.3-68.79 8.5872-75.42 77.336 61.931 60.397 75.429-76.565 6.8495-69.755zm-31.412 31.835a10.813 10.813 0 0 1 1.8443 2.247 10.813 10.813 0 0 1 -3.5174 14.872l-.0445.0275a10.813 10.813 0 0 1 -14.86 -3.5714 10.813 10.813 0 0 1 3.5563 -14.863 10.813 10.813 0 0 1 13.022 1.2884z"/>
</g>
</symbol>
<symbol id="balloon" viewBox="0 0 141.73228 177.16535">
<g transform="translate(0 -875.2)">
<g>
<path style="fill:currentColor" d="m68.156 882.83-.88753 1.4269c-4.9564 7.9666-6.3764 17.321-5.6731 37.378.36584 10.437 1.1246 23.51 1.6874 29.062.38895 3.8372 3.8278 32.454 4.6105 38.459 4.6694-.24176 9.2946.2879 14.377 1.481 1.2359-3.2937 5.2496-13.088 8.886-21.623 6.249-14.668 8.4128-21.264 10.253-31.252 1.2464-6.7626 1.6341-12.156 1.4204-19.764-.36325-12.93-2.1234-19.487-6.9377-25.843-2.0833-2.7507-6.9865-7.6112-7.9127-7.8436-.79716-.20019-6.6946-1.0922-6.7755-1.0248-.02213.0182-5.0006-.41858-7.5248-.22808l-2.149-.22808h-3.3738z"/>
<path style="fill:currentColor" d="m61.915 883.28-3.2484.4497c-1.7863.24724-3.5182.53481-3.8494.63994-2.4751.33811-4.7267.86957-6.7777 1.5696-.28598 0-1.0254.20146-2.3695.58589-5.0418 1.4418-6.6374 2.2604-8.2567 4.2364-6.281 7.6657-11.457 18.43-12.932 26.891-1.4667 8.4111.71353 22.583 5.0764 32.996 3.8064 9.0852 13.569 25.149 22.801 37.517 1.3741 1.841 2.1708 2.9286 2.4712 3.5792 3.5437-1.1699 6.8496-1.9336 10.082-2.3263-1.3569-5.7831-4.6968-21.86-6.8361-33.002-.92884-4.8368-2.4692-14.322-3.2452-19.991-.68557-5.0083-.77707-6.9534-.74159-15.791.04316-10.803.41822-16.162 1.5026-21.503 1.4593-5.9026 3.3494-11.077 6.3247-15.852z"/>
<path style="fill:currentColor" d="m94.499 885.78c-.10214-.0109-.13691 0-.0907.0409.16033.13489 1.329 1.0675 2.5976 2.0723 6.7003 5.307 11.273 14.568 12.658 25.638.52519 4.1949.24765 14.361-.5059 18.523-2.4775 13.684-9.7807 32.345-20.944 53.519l-3.0559 5.7971c2.8082.76579 5.7915 1.727 8.9926 2.8441 11.562-11.691 18.349-19.678 24.129-28.394 7.8992-11.913 11.132-20.234 12.24-31.518.98442-10.02-1.5579-20.876-6.7799-28.959-.2758-.4269-.57803-.86856-.89617-1.3166-3.247-6.13-9.752-12.053-21.264-16.131-2.3687-.86369-6.3657-2.0433-7.0802-2.1166z"/>
<path style="fill:currentColor" d="m32.52 892.22c-.20090-.13016-1.4606.81389-3.9132 2.7457-11.486 9.0476-17.632 24.186-16.078 39.61.79699 7.9138 2.4066 13.505 5.9184 20.562 5.8577 11.77 14.749 23.219 30.087 38.74.05838.059.12188.1244.18052.1838 1.3166-.5556 2.5965-1.0618 3.8429-1.5199-.66408-.32448-1.4608-1.3297-3.8116-4.4602-5.0951-6.785-8.7512-11.962-13.051-18.486-5.1379-7.7948-5.0097-7.5894-8.0586-13.054-6.2097-11.13-8.2674-17.725-8.6014-27.563-.21552-6.3494.13041-9.2733 1.775-14.987 2.1832-7.5849 3.9273-10.986 9.2693-18.07 1.7839-2.3656 2.6418-3.57 2.4409-3.7003z"/>
<path style="fill:currentColor" d="m69.133 992.37c-6.2405.0309-12.635.76718-19.554 2.5706 4.6956 4.7759 9.935 10.258 12.05 12.625l4.1272 4.6202h11.493l3.964-4.4516c2.0962-2.3541 7.4804-7.9845 12.201-12.768-8.378-1.4975-16.207-2.6353-24.281-2.5955z"/>
<rect style="stroke-width:0;fill:currentColor" ry="2.0328" height="27.746" width="22.766" y="1017.7" x="60.201"/>
</g>
</g>
</symbol>
<symbol id="info" viewBox="0 0 41.667 41.667">
<g transform="translate(-37.035 -1004.6)">
<path style="stroke-linejoin:round;stroke:currentColor;stroke-linecap:round;stroke-width:3.728;fill:none" d="m76.25 1030.2a18.968 18.968 0 0 1 -23.037 13.709 18.968 18.968 0 0 1 -13.738 -23.019 18.968 18.968 0 0 1 23.001 -13.768 18.968 18.968 0 0 1 13.798 22.984"/>
<g transform="matrix(1.1146 0 0 1.1146 -26.276 -124.92)">
<path style="stroke:currentColor;stroke-linecap:round;stroke-width:3.728;fill:none" d="m75.491 1039.5v-8.7472"/>
<path style="stroke-width:0;fill:currentColor" transform="scale(-1)" d="m-73.193-1024.5a2.3719 2.3719 0 0 1 -2.8807 1.7142 2.3719 2.3719 0 0 1 -1.718 -2.8785 2.3719 2.3719 0 0 1 2.8763 -1.7217 2.3719 2.3719 0 0 1 1.7254 2.8741"/>
</g>
</g>
</symbol>
<symbol id="warning" viewBox="0 0 48.430474 41.646302">
<g transform="translate(-1.1273 -1010.2)">
<path style="stroke-linejoin:round;stroke:currentColor;stroke-linecap:round;stroke-width:4.151;fill:none" d="m25.343 1012.3-22.14 37.496h44.28z"/>
<path style="stroke:currentColor;stroke-linecap:round;stroke-width:4.1512;fill:none" d="m25.54 1027.7v8.7472"/>
<path style="stroke-width:0;fill:currentColor" d="m27.839 1042.8a2.3719 2.3719 0 0 1 -2.8807 1.7143 2.3719 2.3719 0 0 1 -1.718 -2.8785 2.3719 2.3719 0 0 1 2.8763 -1.7217 2.3719 2.3719 0 0 1 1.7254 2.8741"/>
</g>
</symbol>
<symbol id="menu" viewBox="0 0 50 50">
<rect style="stroke-width:0;fill:currentColor" height="10" width="50" y="0" x="0"/>
<rect style="stroke-width:0;fill:currentColor" height="10" width="50" y="20" x="0"/>
<rect style="stroke-width:0;fill:currentColor" height="10" width="50" y="40" x="0"/>
</symbol>
<symbol id="link" viewBox="0 0 50 50">
<g transform="translate(0 -1002.4)">
<g transform="matrix(.095670 0 0 .095670 2.3233 1004.9)">
<g>
<path style="stroke-width:0;fill:currentColor" d="m452.84 192.9-128.65 128.65c-35.535 35.54-93.108 35.54-128.65 0l-42.881-42.886 42.881-42.876 42.884 42.876c11.845 11.822 31.064 11.846 42.886 0l128.64-128.64c11.816-11.831 11.816-31.066 0-42.9l-42.881-42.881c-11.822-11.814-31.064-11.814-42.887 0l-45.928 45.936c-21.292-12.531-45.491-17.905-69.449-16.291l72.501-72.526c35.535-35.521 93.136-35.521 128.64 0l42.886 42.881c35.535 35.523 35.535 93.141-.001 128.66zm-254.28 168.51-45.903 45.9c-11.845 11.846-31.064 11.817-42.881 0l-42.884-42.881c-11.845-11.821-11.845-31.041 0-42.886l128.65-128.65c11.819-11.814 31.069-11.814 42.884 0l42.886 42.886 42.876-42.886-42.876-42.881c-35.54-35.521-93.113-35.521-128.65 0l-128.65 128.64c-35.538 35.545-35.538 93.146 0 128.65l42.883 42.882c35.51 35.54 93.11 35.54 128.65 0l72.496-72.499c-23.956 1.597-48.092-3.784-69.474-16.283z"/>
</g>
</g>
</g>
</symbol>
<symbol id="doc" viewBox="0 0 35 45">
<g transform="translate(-147.53 -539.83)">
<path style="stroke:currentColor;stroke-width:2.4501;fill:none" d="m149.38 542.67v39.194h31.354v-39.194z"/>
<g style="stroke-width:25" transform="matrix(.098003 0 0 .098003 133.69 525.96)">
<path d="m220 252.36h200" style="stroke:currentColor;stroke-width:25;fill:none"/>
<path style="stroke:currentColor;stroke-width:25;fill:none" d="m220 409.95h200"/>
<path d="m220 488.74h200" style="stroke:currentColor;stroke-width:25;fill:none"/>
<path d="m220 331.15h200" style="stroke:currentColor;stroke-width:25;fill:none"/>
</g>
</g>
</symbol>
<symbol id="tick" viewBox="0 0 177.16535 177.16535">
<g transform="translate(0 -875.2)">
<rect style="stroke-width:0;fill:currentColor" transform="rotate(30)" height="155" width="40" y="702.99" x="556.82"/>
<rect style="stroke-width:0;fill:currentColor" transform="rotate(30)" height="40" width="90.404" y="817.99" x="506.42"/>
</g>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

@ -0,0 +1,15 @@
{{ $headings := findRE "<h2.*?>(.|\n])+?</h2>" .Content }}
{{ if ge (len $headings) 2 }}
<nav class="toc" aria-labelledby="toc-heading">
<h2 id="toc-heading">Table of contents</h2>
<ol>
{{ range $headings }}
<li>
<a href="#{{ . | htmlUnescape | plainify | urlize }}">
{{ . | htmlUnescape | plainify }}
</a>
</li>
{{ end }}
</ol>
</nav>
{{ end }}

View File

@ -0,0 +1,10 @@
<li>
<h2>
<a href="{{ .Permalink }}">
<svg class="bookmark" aria-hidden="true" viewBox="0 0 40 50" focusable="false">
<use xlink:href="#bookmark"></use>
</svg>
{{ .Title }}
</a>
</h2>
</li>

View File

@ -0,0 +1,29 @@
{{ define "main" }}
<main id="main">
<h1>
<svg class="bookmark-icon" aria-hidden="true" viewBox="0 0 40 50" focusable="false">
<use xlink:href="#bookmark"></use>
</svg>
{{ .Title }}
</h1>
{{ if isset .Params "tags" }}
<div class="tags">
<strong aria-hidden="true">Tags: </strong>
<ul aria-label="tags">
{{ range .Params.tags }}
<li>
<svg class="tag-icon" aria-hidden="true" viewBox="0 0 177.16535 177.16535" focusable="false">
<use xlink:href="#tag"></use>
</svg>
<a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">{{ . }}</a>
</li>
{{ end }}
</ul>
</div>
{{ end }}
{{ if ne .Params.TOC false }}
{{ partial "toc" . }}
{{ end }}
{{ .Content }}
</main>
{{ end }}

View File

@ -0,0 +1,74 @@
{{ define "title" }}
{{ .Site.Title }}
{{ end }}
{{ define "nav" }}
<!-- silence is golden -->
{{ end }}
{{ define "main" }}
<main id="main">
<nav id="toc" class="toc patterns" aria-labelledby="toc-heading">
<h2 id="toc-heading">Table of contents</h2>
{{ $current := . }}
{{ range $.Site.Home.Sections }}
<ul id="patterns-list">
{{ range .Pages.ByWeight }}
<li class="pattern">
<a href="#{{ .Title | urlize }}" {{ if eq $current.Title .Title }}aria-current="page"{{ end }}>
<svg class="bookmark-icon" aria-hidden="true" viewBox="0 0 40 50" focusable="false">
<use xlink:href="#bookmark"></use>
</svg>
<span class="text">{{ .Title }}</span>
</a>
</li>
{{ end }}
{{ range .Sections.ByWeight }}
<li>
<h3>{{ .Title }}</h3>
<ul>
{{ range .Pages.ByWeight }}
<li class="pattern">
<a href="#{{ .Title | urlize }}" {{ if eq $current.Title .Title }}aria-current="page"{{ end }}>
<svg class="bookmark-icon" aria-hidden="true" viewBox="0 0 40 50" focusable="false">
<use xlink:href="#bookmark"></use>
</svg>
<span class="text">{{ .Title }}</span>
</a>
</li>
{{ end }}
</ul>
</li>
{{ end }}
</ul>
{{ end }}
</nav>
{{ $current := . }}
{{ range $.Site.Home.Sections }}
{{ range .Pages.ByWeight }}
<div class="pattern-section">
<h1 id="{{ .Title | urlize }}" tabindex="-1">
<svg class="bookmark-icon" aria-hidden="true" viewBox="0 0 40 50" focusable="false">
<use xlink:href="#bookmark"></use>
</svg>
{{ .Title }}
</h1>
{{ .Content }}
</div>
{{ end }}
{{ range .Sections.ByWeight }}
{{ range .Pages.ByWeight }}
<div class="pattern-section">
<h1 id="{{ .Title | urlize }}" tabindex="-1">
<svg class="bookmark-icon" aria-hidden="true" viewBox="0 0 40 50" focusable="false">
<use xlink:href="#bookmark"></use>
</svg>
{{ .Title }}
</h1>
{{ .Content }}
</div>
{{ end }}
{{ end }}
{{ end }}
</main>
{{ end }}

View File

@ -0,0 +1 @@
<pre class="cmd"><code>{{ trim .Inner "\n" }}</code></pre>

View File

@ -0,0 +1,5 @@
{{ $code := .Inner | htmlEscape }}
{{ $code := replace $code "[[[" "<span class='highlight'>" }}
{{ $code := replace $code "]]]" "</span>" }}
{{ $numbered := .Get "numbered" }}
<div class="code-annotated {{ if and ($numbered) (ne $numbered "false") }}numbered{{ end }}"><code>{{ $code | safeHTML }}</code></div>

View File

@ -0,0 +1 @@
<pre class="{{ with .Get "lang" }}language-{{ . }}{{ end }}"><code {{ with .Get "lang" }}class="language-{{ . }}"{{ end }} data-codeblock-shortcode>{{ .Inner }}</code></pre>

View File

@ -0,0 +1,9 @@
{{ if .Site.Params.codePenUser }}
<iframe height="300" scrolling="no" title="code demonstration with codePen" src="//codepen.io/{{ .Site.Params.codepenUser | lower }}/embed/{{ .Get 0 }}/?height=265&theme-id=dark&default-tab=result,result&embed-version=2" frameborder="no" allowtransparency="true" allowfullscreen="true" style="width: 100%;">
<div>
<a href="//codepen.io/{{ .Site.Params.codePenUser | lower }}/pen/{{ .Get 0 }}">See the demo on codePen</a>
</div>
</iframe>
{{ else }}
<p class="site-error"><strong>Site error:</strong> The <code>codePenUser</code> param has not been set in <code>config.toml</code></p>
{{ end }}

View File

@ -0,0 +1,11 @@
{{ $colorString := replace (.Get 0) " " "" | upper }}
{{ $colors := split $colorString "," }}
<div class="colors-container">
<ul class="colors">
{{ range $colors }}
<li style="background-color: {{ . }};{{ if or (eq . "#FFFFFF") (eq . "#FFF")}} border: 1px solid #111{{ end }}">
<span>{{ . }}</span>
</li>
{{ end }}
</ul>
</div>

View File

@ -0,0 +1,65 @@
{{ $uniq := .Inner | htmlEscape | md5 | lower }}
<div class="demo-container">
{{ if .Get "caption" }}
<figure role="group" aria-labelledby="caption-{{ $uniq }}">
{{ end }}
<div class="demo-inner" {{ if .Get "backgroundColor" }}style="background-color: {{ .Get "backgroundColor" | safeCSS }}"{{ end }}>
<div class="demo" id="js-demo-{{ $uniq }}"></div>
<button data-launch="js-demo-{{ $uniq }}">Launch in separate window</button>
</div>
{{ if .Get "caption" }}
<figcaption id="caption-{{ $uniq }}">{{ .Get "caption" | markdownify }}</figcaption>
{{ end }}
{{ if .Get "caption" }}
</figure>
{{ end }}
<template id="template-{{ $uniq }}">
{{ .Inner }}
</template>
<script>
(function() {
var root = document.getElementById('js-demo-{{ $uniq }}');
var template = document.getElementById('template-{{ $uniq }}');
// Save a version for the new window
var demoDiv = document.createElement('div');
demoDiv.innerHTML = template.innerHTML;
var standaloneScript = demoDiv.querySelector('script');
if (standaloneScript) {
standaloneScript.textContent = '(function() { document.getElementsByTagName(\'html\')[0].setAttribute(\'lang\', \'en\'); var demo = document; ' + standaloneScript.textContent + ' })();';
}
if (document.head.attachShadow) {
var templateScript = template.content.querySelector('script');
if (templateScript) {
var wrappedScript = '(function() { var demo = document.getElementById(\'js-demo-{{ $uniq }}\').shadowRoot;' + templateScript.textContent + '})();';
templateScript.textContent = wrappedScript;
}
root.attachShadow({mode: 'open'});
root.shadowRoot.appendChild(document.importNode(template.content, true));
} else {
root.innerHTML = '<p class="site-error"><strong style="font-weight:bold">Site error:</strong> A browser supporting Shadow DOM is needed to run encapsulated demos. You can launch the demo in a separate window ↓</p>';
}
var launchButton = document.querySelector('[data-launch="js-demo-{{ $uniq }}"]');
launchButton.addEventListener('click', function () {
var standalone = window.open();
standalone.document.body.innerHTML = demoDiv.innerHTML;
// For activating the script :-(
var newScript = standalone.document.createElement('script');
var oldScript = standalone.document.querySelector('script');
if (oldScript) {
newScript.textContent = oldScript.textContent;
oldScript.parentNode.removeChild(oldScript);
standalone.document.body.appendChild(newScript);
}
{{ if .Get "backgroundColor" }}
standalone.document.body.style.backgroundColor = {{ .Get "backgroundColor" | safeCSS }};
{{ end }}
standalone.document.title = 'demo ' + {{ $uniq }};
});
})();
</script>
</div>

View File

@ -0,0 +1,20 @@
<div class="expandable-section">
{{ if .Get "level" }}
<h{{ .Get "level" }}>
{{ end }}
<button aria-expanded="{{ with .Get "open" }}true{{ else }}false{{ end }}" data-expands="js-expandable-{{ .Inner | md5 }}">
<span class="expandable-label">{{ .Get "label" | default "More info" }}</span>
<svg aria-hidden="true" focusable="false" viewBox="0 0 70.866142 70.866141">
<g transform="translate(0 -981.5)">
<rect style="stroke-width:0;fill:currentColor" ry="5" height="60" width="9.8985" y="987.36" x="30.051" class="up-strut" />
<rect style="stroke-width:0;fill:currentColor" ry="5" height="10" width="60" y="1012.4" x="5"/>
</g>
</svg>
</button>
{{ if .Get "level" }}
</h{{ .Get "level"}}>
{{ end }}
<div id="js-expandable-{{ .Inner | md5 }}" {{ with .Get "open" | not }}hidden{{ end }}>
{{ .Inner }}
</div>
</div>

View File

@ -0,0 +1,7 @@
{{ $caption := .Get "caption" }}
<figure role="group" aria-describedby="caption-{{ $caption | md5 }}">
{{ .Inner }}
<figcaption id="caption-{{ $caption | md5 }}">
{{ .Get "caption" | markdownify }}
</figcaption>
</figure>

View File

@ -0,0 +1,3 @@
<div class="file-tree">
{{ .Inner }}
</div>

View File

@ -0,0 +1,5 @@
{{ $html := .Inner | htmlEscape }}
{{ $html := replace $html "((" "<span class='highlight'>" }}
{{ $html := replace $html "))" "</span>" }}
{{ $numbered := .Get "numbered" }}
<div class="code-annotated {{ if and ($numbered) (ne $numbered "false") }}numbered{{ end }}"><code>{{ $html | safeHTML }}</code></div>

View File

@ -0,0 +1,5 @@
{{ if .IsNamedParams }}
<iframe src="https://jsbin.com/{{ .Get "id" }}/embed?{{ .Get "show" }}" title="JS Bin demo" height="300" width="100%"></iframe>
{{ else }}
<iframe src="https://jsbin.com/{{ .Get "id" }}/embed?output" title="JS Bin demo" height="300" width="100%"></iframe>
{{ end }}

View File

@ -0,0 +1,8 @@
<aside aria-label="note" class="note">
<div>
<svg class="sign" aria-hidden="true" viewBox="0 0 41.667306 41.66729" focusable="false">
<use xlink:href="#info"></use>
</svg>
{{ .Inner }}
</div>
</aside>

View File

@ -0,0 +1 @@
{{ $title := .Get 0 }}{{ range .Site.Pages }}{{ if eq .Title $title }}<a class="pattern-link" href="{{ .Permalink }}"><svg class="bookmark" aria-hidden="true" viewBox="0 0 40 50" focusable="false"> <use xlink:href="#bookmark"></use> </svg>{{ .Title }}</a>{{ end }}{{ end -}}

View File

@ -0,0 +1,24 @@
{{ $JSON := $.Site.Data.principles }}
{{ $included := replace (.Get "include") ", " "," }}
{{ $included := apply (split $included ",") "lower" "." }}
{{ $descriptions := .Get "descriptions" }}
<ul class="principles {{ if and ($descriptions) (ne $descriptions "false") }}with-desc{{ end }}">
{{ range $JSON.principles }}
{{ if in $included (lower .title) }}
<li>
<strong>
<a href="https://inclusivedesignprinciples.org#{{ .title | urlize }}">
<svg class="balloon-icon" viewBox="0 0 141.73228 177.16535" aria-hidden="true" focusable="false">
<use xlink:href="#balloon"></use>
</svg>
{{ .title }}
</a>:
</strong>
<em>{{ .strapline }}</em>
{{ if and ($descriptions) (ne $descriptions "false") }}
<p>{{ .description }}</p>
{{ end }}
</li>
{{ end }}
{{ end }}
</ul>

View File

@ -0,0 +1,4 @@
{{$file := .Get "file"}}
{{ $contents := (printf "/snippets/%s" $file) | readFile }}
{{ $commented := add "<!-- snippet -->\r\n" $contents }}
{{ $commented | markdownify }}

View File

@ -0,0 +1,31 @@
{{ $tested := replace (.Get "using") ", " "," }}
{{ $tested := replace $tested " + " "+" }}
{{ $tested := split $tested "," }}
<table class="tested">
<tr>
<th scope="row">
<svg viewBox="0 0 177.16535 177.16535" focusable="false" aria-hidden="true">
<use xlink:href="#tick"></use>
</svg>
Tested using
</th>
{{ range $tested }}
<td>
{{ if in . "+" }}
{{ $parts := split . "+" }}
{{ $browser := index $parts 0 }}
{{ $additional := index $parts 1 }}
{{ $slug := replace $browser " " "-" | lower }}
<img src="{{ (printf "images/browser-%s" $slug) | absURL }}.svg" alt="">
<span><strong>{{ $browser }}</strong></span>
<span class="additional">with <strong>{{ $additional }}</strong></span>
{{ else }}
{{ $browser := . }}
{{ $slug := replace $browser " " "-" | lower }}
<img src="{{ (printf "images/browser-%s" $slug) | absURL }}.svg" alt="">
<span><strong>{{ $browser }}</strong></span>
{{ end }}
</td>
{{ end }}
</tr>
</table>

View File

@ -0,0 +1,3 @@
<div class="ticks">
{{ .Inner }}
</div>

View File

@ -0,0 +1,8 @@
<aside aria-label="warning" class="note warning">
<div>
<svg class="sign" aria-hidden="true" viewBox="0 0 48.430474 41.646302" focusable="false">
<use xlink:href="#warning"></use>
</svg>
{{ .Inner }}
</div>
</aside>

View File

@ -0,0 +1,30 @@
{{ $JSON := $.Site.Data.wcag }}
{{ $included := replace (.Get "include") ", " "," }}
{{ $included := split $included "," }}
{{ $descriptions := .Get "descriptions" }}
<ul class="wcag {{ if and ($descriptions) (ne $descriptions "false") }}with-desc{{ end }}">
{{ range $JSON }}
{{ if in $included .ref_id }}
<li>
<strong><a href="{{ .url }}">
<svg class="wcag-icon" viewBox="0 0 127.09899 67.763" aria-hidden="true" focusable="false">
<use xlink:href="#w3c"></use>
</svg>
{{ .ref_id }} {{ .title }}</a> (level {{ .level }}){{ if $descriptions }}:{{ end }}
</strong>
{{ if and ($descriptions) (ne $descriptions "false") }}
{{ .description }}
{{ if .special_cases }}
<ul>
{{ range .special_cases }}
<li><strong>{{ .title }}:</strong>
{{ .description }}
</li>
{{ end }}
</ul>
{{ end }}
{{ end }}
</li>
{{ end }}
{{ end }}
</ul>

View File

@ -0,0 +1,18 @@
{{ define "title" }}
Patterns tagged {{ .Title }} | {{ .Site.Title }}
{{ end }}
{{ define "main" }}
<main id="main">
<h1>
<svg class="tag-icon" aria-hidden="true" viewBox="0 0 177.16535 177.16535" focusable="false">
<use xlink:href="#tag"></use>
</svg>
Tagged &#x201c;{{ .Title }}&#x201d;
</h1>
<ul class="patterns-list">
{{ range .Data.Pages }}
{{ .Render "li"}}
{{ end }}
</ul>
</main>
{{ end }}

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig><msapplication><tile><square70x70logo src="/images/ms-icon-70x70.png"/><square150x150logo src="/images/ms-icon-150x150.png"/><square310x310logo src="/images/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,6 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="50" width="24.999" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 24.998724 50.000001">
<g transform="translate(-25.001 -1002.4)">
<path style="fill-rule:evenodd;fill:#ffffff" d="m25.001 1002.4 24.999 25v-25z"/>
<path style="fill-rule:evenodd;fill:#ffffff" d="m50 1027.4-24.999 25h24.999z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 480 B

View File

@ -0,0 +1,6 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="50mm" width="50mm" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 177.16535 177.16535">
<g transform="translate(0 -875.2)">
<rect style="stroke-width:0;fill:#111" transform="rotate(30)" height="155" width="40" y="702.99" x="556.82"/>
<rect style="stroke-width:0;fill:#111" transform="rotate(30)" height="40" width="90.404" y="817.99" x="506.42"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 535 B

View File

@ -0,0 +1,5 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="22.578mm" width="11.289mm" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40.00001 80.000027">
<g transform="translate(-200 -563.49)">
<path style="fill-rule:evenodd;stroke-width:0;fill:#000000" d="m240 563.49-40 40v40l40-40z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 415 B

View File

@ -0,0 +1,179 @@
/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript&plugins=line-numbers */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
code[class*="language-"]::selection, code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #a67f59;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
pre.line-numbers {
position: relative;
padding-left: 3.8em;
counter-reset: linenumber;
}
pre.line-numbers > code {
position: relative;
}
.line-numbers .line-numbers-rows {
position: absolute;
pointer-events: none;
top: 0;
font-size: 100%;
left: -3.8em;
width: 3em; /* works for line-numbers below 1000 lines */
letter-spacing: -1px;
border-right: 1px solid #999;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.line-numbers-rows > span {
pointer-events: none;
display: block;
counter-increment: linenumber;
}
.line-numbers-rows > span:before {
content: counter(linenumber);
color: #999;
display: block;
padding-right: 0.8em;
text-align: right;
}

View File

@ -0,0 +1,955 @@
/* fonts */
@font-face {
font-family: 'Miriam Libre';
src: url('fonts/miriamlibre-bold.woff2') format('woff2'), url('fonts/miriamlibre-bold.woff') format('woff');
font-weight: bold;
font-style: normal;
}
*,
*::before,
*::after {
font-family: inherit;
background-color: inherit;
color: inherit;
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
font-size: calc(1em + 0.33vw);
font-family: PT Sans, sans-serif;
line-height: 1.5;
color: #111;
background-color: #fefefe;
}
template {
display: none !important;
}
* + * {
margin-top: 2.25rem;
}
br,
dt,
dd,
th,
td,
option,
[hidden] + *,
li + li,
body,
.main-and-footer {
margin-top: 0;
}
p + p {
margin-top: 0.75rem;
}
a {
text-decoration: none;
border-bottom: 1px solid;
}
abbr {
text-decoration: none;
cursor: help;
border-bottom: 1px dashed;
}
img {
max-width: 100%;
}
p img {
margin: 0.75rem 0;
}
figure p img {
margin: 0;
}
:focus:not([tabindex="-1"]),
[data-expands]:focus svg,
.patterns a:focus .text,
[for="themer"] :focus + [aria-hidden] {
outline: 4px solid #999;
}
a {
outline-offset: 2px;
}
/* fix for IE :( */
[tabindex="-1"]:focus,
div:not([tabindex]):focus {
outline: none;
}
[hidden] {
display: none;
}
/* skip link */
[href="#main"] {
display: block;
width: 100%;
padding: 0.75rem;
color: #fefefe;
background: #000;
position: absolute;
top: -3rem;
text-align: center;
z-index: 1;
}
[href="#main"]:focus {
top: 0;
outline: none;
}
/* text styles */
h1,
h2,
h3,
h4 {
font-family: Miriam Libre, serif;
line-height: 1.125;
}
h1 {
font-size: 2rem;
}
h2 {
font-size: 1.66rem;
}
h3 {
font-size: 1.25rem;
}
h4,
h5 {
font-size: 1rem;
font-family: PT Sans, sans-serif;
}
h5 {
font-size: 0.85rem;
text-transform: uppercase;
}
kbd {
line-height: 1;
font-size: 0.66rem;
padding: 0.1rem 0.33rem;
border-radius: 0.25rem;
border: 2px solid;
box-shadow: 0.125rem 0.125rem 0 #111;
vertical-align: 0.33em;
}
pre,
.file-tree {
overflow-x: auto;
padding: 1.5rem;
border: 1px solid;
}
code {
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
font-size: 0.85em;
}
.cmd {
padding: 0.75rem;
background: #111;
}
.cmd code {
color: #fefefe;
white-space: nowrap;
}
.cmd code::before {
content: '$';
font-weight: bold;
padding-right: 0.25em;
}
/* Lists */
main ul,
main ol {
margin-left: 2.25rem;
}
main li + li {
margin-top: 0.5rem;
}
main ul ul, main ol ol {
margin-top: 0.5rem;
}
/* Blockquotes */
blockquote {
font-size: 0.85rem;
font-style: italic;
}
/* Buttons */
button {
font-size: 1.25rem;
border-radius: 0.33em;
font-family: inherit;
background: #111;
color: #fefefe;
padding: 0.75rem;
border: 0;
}
[data-launch] {
font-size: 0.75rem !important;
margin-top: 0.75rem !important;
padding: 0.5rem !important;
border-radius: 0 !important;
box-shadow: none !important;
background: #111 !important;
color: #fefefe !important
}
/* Forms */
label {
display: inline-block;
font-weight: bold;
}
[for="themer"] {
background: #111;
border-radius: 0.33em;
color: #fefefe;
padding: 0.25em 0.75em;
margin: 0.5rem;
}
[for="themer"] [aria-hidden]::before {
content: 'off';
}
[for="themer"] :checked + [aria-hidden]::before {
content: 'on';
}
/* Tables */
table {
text-align: left;
table-layout: fixed;
width: 100%;
border-collapse: collapse;
}
th,
td {
border: 2px solid;
padding: 0.5rem;
line-height: 1.25;
margin: 0;
}
th {
font-weight: bold;
}
th:empty {
border: 0;
}
/* Tested using... table */
.tested {
text-align: center;
border: 1px solid #111;
}
.tested tr {
display: flex;
flex-flow: row wrap;
}
.tested td, .tested th {
vertical-align: middle;
overflow: hidden;
flex: 1 0 auto;
border: 1px solid #111;
}
.tested th {
width: 100%;
background-color: #111;
color: #fefefe;
outline-color: #111;
}
.tested img {
max-width: 3rem;
}
.tested span {
display: block;
margin: 0;
}
.tested .additional {
font-size: 0.85rem;
}
caption {
font-size: 1.125rem;
padding-bottom: 0.25rem;
font-style: italic;
}
/* Page structure */
.wrapper {
position: relative;
margin-top: 0;
overflow-x: hidden;
}
.intro-and-nav {
font-size: 0.8rem;
width: 15rem;
height: 100vh;
position: fixed;
top: 0;
left: 0;
border-right: 2px solid;
}
.intro-and-nav > div {
padding: 2.25rem;
display: flex;
flex-direction: column;
height: 100%;
}
.intro {
flex: 0 0 auto;
}
.patterns {
flex: 1 1 auto;
}
.logo {
border: 0;
}
.logo img {
width: 100%;
max-width: 12rem;
}
.library-desc {
margin-top: 0.5rem;
margin-left: auto;
margin-right: auto;
max-width: 25rem;
}
.main-and-footer {
margin-left: 15rem;
}
.main-and-footer > div {
max-width: 40rem;
margin: 0 auto;
padding: 2.25rem;
}
[role="contentinfo"] {
font-size: 0.85rem;
margin-top: 4rem;
text-align: center;
}
/* Patterns navigation */
.patterns {
overflow: auto;
margin-top: 1.5rem;
}
.patterns * {
margin-top: 0;
}
.patterns h3 {
font-size: 1rem;
}
.patterns h3 + ul {
margin-top: 0.75rem;
}
.patterns li {
line-height: 1.125;
list-style: none;
}
.patterns li + li {
margin-top: 0.75rem;
}
.patterns ul ul {
margin-left: 0.75rem;
}
.pattern a {
border: 0;
display: flex;
flex-wrap: nowrap;
align-items: baseline;
font-weight: bold;
}
.pattern a:focus {
outline: none;
}
.pattern span {
margin-left: 0.125rem;
}
.pattern [aria-current] {
background-color: #111;
background-image: url(images/arrow_effect.svg);
background-position: 98% center;
background-size: 125%;
background-repeat: no-repeat;
color: #fefefe;
padding: 0.5em 1em 0.5em;
}
/* menu button */
#menu-button {
display: none;
width: 100%;
text-align: center;
}
#menu-button:focus {
outline: none;
box-shadow: inset 0 0 0 0.25rem #999;
}
/* Tables of contents */
.toc {
font-size: 0.85rem;
border: 1px solid;
padding: 1.5rem;
}
.toc h2 {
font-size: 1rem;
}
.toc ol {
margin-left: 0.75rem;
margin-top: 0.5rem;
}
/* Pattern lists */
.patterns-list {
list-style: none;
margin-left: 0;
}
.patterns-list h2 {
font-size: 1.25rem;
}
.patterns-list li + li {
margin-top: 1rem;
padding-top: 1rem;
border-top: 2px solid;
}
.patterns-list a {
border: 0;
}
/* Tags */
.tags {
margin-top: 0;
font-size: 0.85rem;
}
.tags * {
display: inline;
margin: 0;
}
.tags strong {
margin-right: 0.25rem;
}
.tags li {
white-space: nowrap;
margin: 0 0.25rem 0 0;
}
/* Notes and warnings */
.note {
border-left: 0.5rem solid;
font-size: 0.85rem;
}
.note .sign {
height: 2.25rem;
width: 2.25rem;
}
.note > div {
margin-left: 0.75rem;
}
.note > div > img:first-child {
height: 1.5rem;
}
.note > div >:first-child + * {
margin-top: 0;
}
.note.warning {
border-left: 0;
background-image: url(images/stripe.svg);
background-size: 0.5rem auto;
background-repeat: repeat-y;
}
.note.warning > div {
margin-left: 1.25rem;
}
/* Tick lists */
.ticks li {
list-style: none;
position: relative;
}
.ticks li::before {
content: '';
display: inline-block;
width: 1rem;
height: 1rem;
margin-right: 0.25rem;
background-image: url(images/icon-tick.svg);
background-size: 100% auto;
position: absolute;
left: -1.25rem;
top: 0.25rem;
}
/* Figures */
figure {
text-align: center;
}
figcaption {
font-size: 0.85rem;
font-style: italic;
margin-top: 0.5rem;
}
main {
display: block;
counter-reset: fig;
min-height: 100vh;
}
figcaption::before {
counter-increment: fig;
content: 'Figure ' counter(fig) ':\0020';
font-weight: bold;
}
/* Code blocks */
pre[class*=language-] {
background: none;
margin-top: 2.25rem;
margin-bottom: 0;
overflow-y: hidden;
overflow-x: auto;
}
code[class*="language-"], pre[class*="language-"] {
text-shadow: none;
filter: grayscale(100%);
}
pre[class*=language-][data-line] {
padding: 1em 0 0 2.25rem;
}
pre[class*=language-] code * {
margin-top: 0 !important;
}
[data-codeblock-shortcode], .code-annotated code {
display: inline-block;
margin-top: -1rem;
}
.code-annotated {
overflow-y: hidden;
overflow-x: auto;
padding: 1.5rem;
border: 1px solid;
white-space: pre;
counter-reset: annotation;
}
.highlight {
background: #ddd;
padding: 0.0625rem 0.33rem;
border-radius: 0.5rem;
}
.numbered .highlight::after,
.code-annotated.numbered + ol li::before {
counter-increment: annotation;
content: counter(annotation);
font-weight: bold;
font-size: 0.5rem;
background: #111;
color: #fefefe;
border-radius: 1rem;
margin-left: 0.25rem;
padding: 0.125em 0.5em;
vertical-align: 0.33em;
}
.code-annotated.numbered + ol {
list-style: none;
counter-reset: annotation;
}
.code-annotated.numbered + ol li::before {
font-size: 0.66em;
margin-right: 0.33em;
vertical-align: 0.25em;
}
/* file tree lists */
.file-tree {
overflow-x: auto;
}
.file-tree ul {
font-family: Courier, monospace;
margin: 0;
padding: 0;
padding-left: 3rem;
list-style: none;
line-height: 1.25;
position: relative;
}
.file-tree > ul {
padding-left: 0;
overflow-x: auto;
overflow-y: hidden;
}
.file-tree li {
background: #fefefe;
position: relative;
white-space: nowrap;
}
.file-tree li + li {
margin-top: 0;
}
.file-tree li:not(:last-child) > ul::before {
content: '\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020\2502\0020';
position: absolute;
left: 0;
top: 0;
bottom: 0;
width: 1em;
white-space: normal;
}
.file-tree li::before {
content: '\251C\2500\2500\0020';
}
.file-tree li:last-child::before {
content: '\2514\2500\2500\0020';
}
/* Expandable sections */
.expandable-section {
border-top: 1px solid;
border-bottom: 1px solid;
padding: 0.75rem 0;
}
[id^="js-expandable-"] {
margin: 0;
padding: 1.5rem 0 0.75rem;
}
@media screen {
.expandable-section + .expandable-section {
margin-top: 0;
border-top: 0;
}
}
[data-expands] {
text-align: left;
color: #111;
border: 0;
background: none;
width: 100%;
padding: 0;
margin: 0;
display: flex;
align-items: center;
justify-content: space-between;
cursor: pointer;
}
[data-expands] svg {
margin-top: 0;
width: 1em;
height: 1em;
}
[data-expands][aria-expanded="true"] svg .up-strut {
display: none;
}
[data-expands]:focus {
outline: none;
}
p:empty {
display: none;
}
*:not(p) + p:empty + p {
margin-top: 2.25rem;
}
/* WCAG and principles */
.wcag li {
font-size: 0.85em;
}
.principles p {
font-size: 0.85rem;
margin-top: 0.75rem;
}
.principles.with-desc > li + li,
.wcag.with-desc > li + li {
border-top: 1px solid;
margin-top: 0.75rem;
padding-top: 0.75rem;
}
/* Site errors */
.site-error {
padding: 1.5rem;
background: #efefef;
}
.site-error strong {
color: #C83737;
}
/* SVG icons */
a svg,
button svg,
h1 svg,
th svg,
li > svg {
height: 0.75em;
width: 0.75em;
margin-right: 0.25em;
}
h1 svg {
margin-right: 0;
width: 0.85em;
height: 0.85em;
}
.wcag-icon {
width: 1.25em;
}
.bookmark-icon {
vertical-align: middle;
}
.link-icon {
width: 0.75em;
height: 0.75em;
}
.tags svg, .link-icon {
vertical-align: middle;
}
.balloon-icon {
width: 0.75em;
margin-right: 0;
}
.print {
white-space: nowrap;
font-style: normal;
}
/* Color palettes */
.colors {
display: flex;
height: 5rem;
margin: -0.25rem;
list-style: none;
flex-wrap: nowrap;
}
.colors li {
margin: 0.25rem;
flex: 1 0 auto;
position: relative;
}
.colors span {
line-height: 1;
background-color: #111;
color: #fefefe;
font-size: 0.75rem;
padding: 0.25rem;
position: absolute;
bottom: 0.25rem;
right: 0.25rem;
}
/* cross references */
.pattern-link {
font-weight: bold;
}
/* inline demos */
.demo-inner {
border-top: 1px solid;
border-bottom: 1px solid;
padding: 1.5rem 0 0;
text-align: right;
}
[id^="js-demo-"] {
all: initial;
display: block;
}
/* Section links */
.h2-container {
position: relative;
font-size: 1.66rem;
}
.h2-container a {
position: absolute;
margin-top: 0;
top: 0;
line-height: 1;
left: -1em;
border: 0;
}
/* Single page layout */
.wrapper.print-version .main-and-footer {
margin-left: 0;
}
.wrapper.print-version .intro-and-nav {
position: static;
border: 0;
width: auto;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
.wrapper.print-version main {
min-height: 0;
}
.wrapper.print-version .library-desc {
font-size: 1rem;
}
.wrapper.print-version .intro-and-nav > div {
height: auto;
}
.wrapper.print-version #patterns-list {
margin-left: 0;
margin-top: 1.5rem;
display: block;
}
.wrapper.print-version .toc {
font-size: 1rem;
}
.wrapper.print-version .toc h2 {
font-size: 1.66rem;
}
.wrapper.print-version #patterns-list h3 {
font-size: 1.25rem;
}
.wrapper.print-version .patterns {
margin-top: 0;
}
.pattern-section:not(:last-child) {
padding-bottom: 2.25rem;
border-bottom: 2px solid;
}
.pattern-section h1 {
padding: 0 !important;
}
/* Custom 404 */
.custom-404 {
text-align: center;
}
.custom-404 * {
margin: 0;
}
.custom-404 svg {
max-width: 100%;
}
/* Utilities */
.vh {
clip: rect(1px, 1px, 1px, 1px);
height: 1px;
overflow: hidden;
position: absolute;
white-space: nowrap;
width: 1px;
}
@media screen and (max-width: 45em) {
body a {
hyphens: auto;
}
[role="banner"] {
position: static;
width: auto;
height: auto;
}
.intro {
text-align: center;
}
.intro-and-nav > div {
padding: 1.5rem;
}
.main-and-footer {
margin: 0;
}
main {
min-height: auto;
}
.patterns h3 {
font-size: 1.125rem;
border-top: 4px solid;
border-bottom: 4px solid;
padding: 0.75rem 0;
}
.patterns li:not(.pattern) {
margin-top: 0;
}
.patterns ul ul {
margin: 0;
}
.patterns li {
margin-top: 0;
}
.pattern {
font-size: 1rem;
}
.pattern a {
padding: 0.75rem 0;
}
.pattern [aria-current] {
background-image: none;
}
.pattern + .pattern {
border-top: 1px solid;
margin-top: 0;
}
#menu-button {
display: block;
}
#patterns-list {
display: none;
}
.toc-link {
display: none;
}
[aria-expanded="true"] + #patterns-list {
display: block;
}
code {
word-break: break-all;
}
}
@media print {
.wrapper:not(.print-version) .intro-and-nav,
.wrapper:not(.print-version) [role="contentinfo"] {
display: none;
}
.main-and-footer {
margin-left: 0;
}
a {
border: 0;
}
main a::after {
content: " (" attr(href) ")";
word-break: break-word;
}
main nav a::after {
content: '';
}
.cmd code {
background: #fefefe;
color: #111;
}
pre code {
white-space: pre-wrap !important;
}
.expandable-section {
border: 0;
padding: 0;
}
.expandable-section + p {
margin-top: 0.75rem;
}
[id^="js-expandable-"] {
display: block;
}
[data-expands] svg {
display: none;
}
main *:not(.with-desc) {
page-break-inside: avoid;
}
.note.warning {
border-left: 0.5rem solid;
background: none;
}
}
@media (-ms-high-contrast: active) {
img[src*=".svg"] {
background: #fefefe;
padding: 0.5rem;
}
.ticks li::before {
content: '✓';
background: none;
width: auto;
top: 0;
}
.note.warning {
border-left: 0.5rem solid;
background: none;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

View File

@ -0,0 +1,13 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 100 100">
<g transform="translate(0 -952.36)">
<g transform="matrix(.094248 0 0 .094248 2.8805 955.24)"></g>
<g transform="matrix(.18832 0 0 .18832 4.2017 956.56)"></g>
<g transform="matrix(.059920 0 0 .059920 64.099 1012.5)">
<g>
<g id="android">
<path d="m152.68 458.36c0 15.3 10.2 25.5 25.5 25.5h25.5v89.25c0 20.4 17.85 38.25 38.25 38.25s38.25-17.85 38.25-38.25v-89.25h51v89.25c0 20.4 17.85 38.25 38.25 38.25s38.25-17.85 38.25-38.25v-89.25h25.5c15.3 0 25.5-10.2 25.5-25.5v-255h-306v255zm-63.75-255c-20.4 0-38.25 17.851-38.25 38.25v178.5c0 20.4 17.85 38.25 38.25 38.25s38.25-17.85 38.25-38.25v-178.5c0-20.4-17.85-38.25-38.25-38.25zm433.5 0c-20.4 0-38.25 17.851-38.25 38.25v178.5c0 20.4 17.85 38.25 38.25 38.25s38.25-17.85 38.25-38.25v-178.5c0-20.4-17.85-38.25-38.25-38.25zm-127.5-147.9 33.15-33.15c5.1-5.1 5.1-12.75 0-17.85-5.101-5.101-12.75-5.101-17.851 0l-38.25 38.25c-17.85-12.75-40.8-17.851-66.3-17.851s-48.45 5.101-68.85 15.3l-35.7-38.25c-5.1-2.55-15.3-2.55-20.4 0-2.55 5.101-2.55 15.301 0 20.4l33.15 33.15c-35.7 28.05-61.2 71.399-61.2 122.4h306c0-51-25.5-96.897-63.75-122.4zm-140.25 71.4h-25.5v-25.5h25.5v25.5zm127.5 0h-25.5v-25.5h25.5v25.5zm-315.17-295.94a296.37 296.37 0 0 1 -296.37 296.37 296.37 296.37 0 0 1 -296.37 -296.37 296.37 296.37 0 0 1 296.37 -296.37 296.37 296.37 0 0 1 296.37 296.37zm-104.26-296.4c96.933 62.959 161.06 172.16 161.06 296.36 0 61.07-15.514 118.54-42.798 168.65l.22814.13017-363.47 626.27c17.485 1.1449 35.126 1.7928 52.903 1.7928 143.13 0 277.31-37.916 393.4-103.98.012-.31092.02-.63485.0334-.94527-17.736-4.0482-33.875-15.396-43.092-31.162-39.38 18.48-92.101-3.73-105.87-45.11-8.2326-57.3-3.506-115.34-4.109-172.98-2.4526-23.22-2.1755-48.13 9.485-69.07 16.194-32.792 57.849-48.918 92.213-37.387 3.0695-40.159 17.93-79.632 43.548-110.86-7.7581-10.996-15.806-22.506-17.83-36.149-6.0082-29.885 19.952-62.746 51.175-60.335 23.886-.42474 44.235 15.691 58.412 33.476 37.546-10.929 78.773-12.322 115.85 1.2387 8.8519-9.3168 17.44-19.247 28.521-26.011 25.787-17.584 64.503-3.2156 75.883 24.936 9.2404 20.832.0935 45.21-14.864 60.856 24.881 28.78 39.738 65.45 44.102 103.13 44.834-99.661 69.983-210.11 69.983-326.48 0-104.75-20.275-204.75-57.01-296.36h-547.74zm-854.06-147.32c-85.186 126.81-134.88 279.48-134.88 443.73 0 401.08 296.34 732.91 682.03 788.56l274.92-473.69c-48.07 24.49-102.46 38.3-160.11 38.3l-.0317-.0317c-152.83 0-282.96-97.085-332.15-232.93l-329.78-563.95zm661.92-353.11c-253.59 0-479.45 118.48-625.38 303.08l273.22 467.26c13.519-182.06 165.09-325.68 350.4-326.64v-.0317h716.19c-130.18-262.88-401.19-443.67-714.42-443.67z"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,8 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 100 100">
<g transform="translate(0 -952.36)">
<g transform="matrix(.19488 0 0 .19488 .30580 952.28)">
<circle cx="255" cy="257" r="91.125"/>
<path d="m254.45 148.42v-.007h220.21c-40.03-80.827-123.35-136.41-219.66-136.41-77.97 0-147.42 36.424-192.29 93.18l84.011 143.67c4.157-55.982 50.757-100.14 107.74-100.43zm.55 217.16c-46.99 0-87.004-29.849-102.13-71.617l-101.39-173.39c-26.192 38.99-41.48 85.93-41.48 136.43 0 123.32 91.121 225.35 209.71 242.46l84.529-145.65c-14.78 7.53-31.51 11.778-49.235 11.778zm227.48-199.71h-168.41c29.804 19.358 49.519 52.938 49.519 91.125 0 18.777-4.768 36.443-13.157 51.851l.062.037-111.75 192.56c5.376.352 10.795.55 16.261.55 135.31 0 245-109.69 245-245 0-32.206-6.226-62.956-17.521-91.125z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 964 B

View File

@ -0,0 +1,9 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 100 100">
<g transform="translate(0 -952.36)">
<g transform="matrix(.094248 0 0 .094248 2.8805 955.24)">
<g>
<path d="m48.1 445c28.7-226.6 183.3-432.1 460.4-435 167.2 3.3 304.8 79 386.7 223.5 41.1 75.4 54 154.6 56.6 242.1v102.8h-614.7c2.9 253.5 373.1 244.9 532.5 133.2v206.4c-93.4 56.1-305.2 106.2-469.2 41.7-139.7-52.4-239.2-198.6-238.6-339.3-4.6-182.4 90.7-303.1 238.6-371.8-31.4 38.8-55.3 81.7-67.7 156h347.1s20.3-207.4-196.5-207.4c-204.4 7-351.8 125.9-435.2 247.8z"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 719 B

View File

@ -0,0 +1,11 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 100 100">
<g transform="translate(0 -952.36)">
<g transform="matrix(.059920 0 0 .059920 63.622 1011.8)">
<g>
<g id="android">
<path d="m152.68 458.36c0 15.3 10.2 25.5 25.5 25.5h25.5v89.25c0 20.4 17.85 38.25 38.25 38.25s38.25-17.85 38.25-38.25v-89.25h51v89.25c0 20.4 17.85 38.25 38.25 38.25s38.25-17.85 38.25-38.25v-89.25h25.5c15.3 0 25.5-10.2 25.5-25.5v-255h-306v255zm-63.75-255c-20.4 0-38.25 17.851-38.25 38.25v178.5c0 20.4 17.85 38.25 38.25 38.25s38.25-17.85 38.25-38.25v-178.5c0-20.4-17.85-38.25-38.25-38.25zm433.5 0c-20.4 0-38.25 17.851-38.25 38.25v178.5c0 20.4 17.85 38.25 38.25 38.25s38.25-17.85 38.25-38.25v-178.5c0-20.4-17.85-38.25-38.25-38.25zm-127.5-147.9 33.15-33.15c5.1-5.1 5.1-12.75 0-17.85-5.101-5.101-12.75-5.101-17.851 0l-38.25 38.25c-17.85-12.75-40.8-17.851-66.3-17.851s-48.45 5.101-68.85 15.3l-35.7-38.25c-5.1-2.55-15.3-2.55-20.4 0-2.55 5.101-2.55 15.301 0 20.4l33.15 33.15c-35.7 28.05-61.2 71.399-61.2 122.4h306c0-51-25.5-96.897-63.75-122.4zm-140.25 71.4h-25.5v-25.5h25.5v25.5zm127.5 0h-25.5v-25.5h25.5v25.5zm-648.47-1052.2c-153.2 3.6312-304.31 56.616-426.52 149.39-18.198 25.776-95.427 53.771-75.003 84.13 9.915 16.563 16.376 8.3085 28.098-2.5751 164.29-163 410.41-231.13 636.37-186.77 92.023 25.701 185.78 47.562 275.11 81.522-109.16-73.972-240.18-119.24-372.34-124.19-21.892-1.5227-43.827-2.0181-65.713-1.4994zm298.77 104.11c76.659 48.615 145.81 109.53 198.61 183.74 61.419 79.922-35.193-17.684-72.428-19.394-88.432-28.428 16.633 33.427 26.337 66.104 60.034 74.183 88.79 168.13 85.434 263.15 11.41 74.947-20.783-6.5197-51.958-25.131-26.927 16.205 9.4167 113.18 3.1944 158.15-2.001 35.591-8.6324 182.4-41.69 91.464-3.8949 21.877-8.0142 44.695-13.038 67.506 6.9144-3.442 14.6-5.2532 22.687-4.6286 23.886-.42475 44.235 15.691 58.412 33.476 37.546-10.929 78.773-12.322 115.85 1.2386 8.8519-9.3168 17.44-19.247 28.521-26.011 25.787-17.584 64.503-3.2156 75.883 24.936 9.2405 20.832.0935 45.21-14.864 60.856 6.8594 7.9343 12.945 16.469 18.286 25.457 1.0056-39.357 8.0123-77.518 30.966-112.78 53.847-99.934 51.155-220.2 19.003-326.41-8.2394 28.596-33.964 85.038-26.37 17.928 10.813-131.53-37.639-269.01-140.16-354.58-22.49 23.997-92.919-108.34-105.48-52.023 58.36 70.768 130.06 135.32 165.16 222.86-17.994-32.268-82.372-117.57-130.58-156.49-65.555-73.849-157.79-115.62-251.77-139.41zm-865.39 45.699c-50.598 52.066-69.113 127.82-74.97 198.35h.0326v12.973c36.168-35.923 74.584-71.088 121.65-92.083 18.348-21.886-58.779-74.369-46.71-119.24zm437.44 50.784c-75.56 3.3882-142.96 57.617-187.23 116.53-27.292 57.073-24.079 9.047-14.831-24.61-49.193-38.29-146.9-8.65-203.07 22.393-125.63 73.098-172.17 220.3-202.84 353.5 46.722-83.328 1.3199 41.211 7.6926 75.133-.0883 29.606-14.711 183.82 8.4097 91.17 19.997-17.796 15.603 95.292 34.486 121.84 60.197 232.76 250.23 410.71 466.84 502.11 25.064 12.981 176.11 63.077 91.04 15.809 21.545-4.9454 94.604 32.129 135.7 31.813 14.254-4.9045 111.13 24.012 52.349-12.386 87.718-10.482 179.32-14.973 265.66-40.549 25.455-4.5994 49.455-12.983 72.004-23.99-3.6951-3.749-7.0469-7.8251-9.7135-12.386-39.4 18.47-92.121-3.75-105.89-45.13-8.2333-57.3-3.507-115.34-4.11-172.98-2.4524-23.22-2.1752-48.13 9.486-69.07 16.194-32.792 57.849-48.918 92.213-37.387 3.0695-40.159 17.93-79.632 43.548-110.86-3.8428-5.4464-7.7335-11.025-10.952-16.917-17.786 46.326-44.452 87.656-88.465 114.48-20.397-56.905-69.067 56.024-98.081 43.646-19.503-24.663-105.87 20.648-151.77 15.059-29.333 13.051-163.69-36.48-81.522-34.845 30.162-11.267-81.324-26.471-110.21-35.921-66.003-36.299-124.97-97.226-144.63-171.75-6.0631-72.002-14.554-159.04 39.962-215.69-36.095-40.357-131.34-18.073-163.4 32.498-65.468 83.028-32.742 203.3 36.149 273.64-22.962-18.109-63.338-67.843-74.449-107.4-43.518-104.6 30.036-246.52 149.06-246.75 56.519-24.428 141.17 122.1 126.28 12.256 8.0825-45.987-40.037-74.328-50.035-116.53-47.135-116.39 15.69-245.94 103.17-324.95-11.083-1.7248-22.062-2.2768-32.857-1.7928zm-46.71 188.34c-17.752 59.498-4.1945 125.22 32.009 175.17 4.7202.58411 8.9614 22.512 16.852 9.9417 48.679-44.867 154.38-54.475 140.68-141.01-50.281-41.86-139.62 7.2935-189.54-44.102zm-60.954 408.62c-5.2671 74.276 14.421 156.02 79.012 200.56 16.369 17.781 32.353 17.455 54.891 16.07 80.845 8.0341 153.29-31.634 213.44-81.555 19.296-35.347 87.94 8.0109 83.999-41.592-24.259-68.562-118.59-77.127-177.94-53.033-80.692 57.747-186.74 21.228-253.4-40.451z"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -0,0 +1,5 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 100 100">
<g transform="translate(0 -952.36)">
<path style="fill:#000000" d="m48.212 1047.3c-2.4619.02-6.8405-2.2013-8.1318-1.9049 5.0976 2.8323-3.9517-.1694-5.4535-.9472-12.979-5.4764-24.366-16.139-27.973-30.086-1.1315-1.5909-.8693-8.3687-2.0675-7.3024-1.3854 5.5516-.50865-3.6884-.50336-5.4624-.38185-2.0326 2.3388-9.4953-.46079-4.5023 1.8379-7.9816 4.6266-16.8 12.154-21.18 3.3659-1.8601 9.2204-3.6361 12.168-1.3418-.55412 2.0167-.74594 4.8931.88940 1.4733 3.0318-4.0343 7.8741-7.7006 13.187-6.8738-5.2415 4.734-9.0067 12.495-6.1824 19.469.59907 2.5287 3.4842 4.2277 2.9999 6.9832.89239 6.5818-4.1802-2.1975-7.5668-.73381-7.1319.014-11.539 8.5177-8.9314 14.785.66574 2.3704 3.084 5.35 4.4599 6.4351-4.1279-4.2151-6.089-11.422-2.1662-16.397 1.9214-3.0302 7.6289-4.3642 9.7917-1.946-3.2666 3.394-2.7576 8.6087-2.3943 12.923 1.1778 4.4653 4.7112 8.117 8.6661 10.292 1.7306.5662 8.4095 1.4758 6.6022 2.1509-4.9236-.098 3.1271 2.871 4.8847 2.089 2.7503.3349 7.9265-2.3797 9.0951-.9019 1.7385.7417 4.6534-6.026 5.8756-2.6163 5.2366-3.191 6.3838-9.8086 7.3784-15.395 1.9808 5.4491 2.3774-3.3468 2.4973-5.4794.37284-2.6946-1.8045-8.5058-.19106-9.4768 1.868 1.1152 3.7972 5.997 3.1135 1.5062.20110-5.6935-1.5215-11.324-5.1187-15.769-.58148-1.958-6.8783-5.6625-1.5795-3.9591 2.2311.10252 8.0208 5.9503 4.3406 1.1614-3.1635-4.4467-7.3076-8.096-11.901-11.009 5.6314 1.4258 11.159 3.928 15.087 8.353 2.8885 2.3325 6.7461 7.4432 7.8243 9.3767-2.1033-5.2453-6.4004-9.1126-9.8973-13.353.75267-3.3744 4.9719 4.5534 6.3195 3.1155 6.1431 5.1271 9.0478 13.367 8.3999 21.248-.45504 4.0212 1.0863.63813 1.58-1.0753 1.9265 6.3645 2.0874 13.571-1.1391 19.559-2.0733 3.1852-1.9952 6.76-1.747 10.39-.28526 2.7302-2.3678 5.0662-3.9091 7.2654-2.5671 3.2593-5.9016 5.7954-9.4254 7.921-2.5621 4.2065-6.66 7.1655-11.521 8.0438-5.1734 1.5325-10.662 1.8031-15.918 2.4312 3.5236 2.182-2.2877.4449-3.1376.7408zm-9.8762-30.448c-3.8703-2.6692-5.0516-7.5674-4.736-12.018 3.9942 3.6958 10.35 5.8829 15.185 2.4227 3.5565-1.4437 9.2074-.9303 10.661 3.1779.23613 2.9722-3.8772.3751-5.0334 2.4931-3.6039 2.9912-7.9438 5.3678-12.788 4.8864-1.3505.083-2.3077.1036-3.2885-.9618zm.83582-26.006c-2.1693-2.9927-2.9816-6.9309-1.9179-10.496 2.9917 3.0796 8.3442.13308 11.357 2.6413.82094 5.1851-5.5128 5.7608-8.4296 8.4492-.47280.75321-.72707-.55934-1.0099-.59434zm-29.822-12.94c.35096-4.2257 1.4603-8.7642 4.4921-11.884-.72317 2.6884 3.8972 5.8318 2.7978 7.1432-2.82 1.258-5.1226 3.3666-7.2898 5.5191v-.77858zm8.3923-6.87c-1.2238-1.8191 3.4023-3.4964 4.4927-5.0409 8.3684-6.3529 19.001-9.5905 29.495-8.8606 7.9193.29674 15.77 3.0082 22.311 7.4406-5.3527-2.0349-10.971-3.3439-16.485-4.8839-13.539-2.6576-28.287 1.4241-38.131 11.191-.70238.65214-1.0888 1.1464-1.6829.15394z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,10 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 100 100">
<g transform="translate(0 -952.36)">
<g transform="matrix(.094248 0 0 .094248 2.8805 955.24)"></g>
<g transform="matrix(.18832 0 0 .18832 4.2017 956.56)">
<g>
<path d="m367.1 280.8h118.02c.909-8.185 1.273-16.549 1.273-25.099 0-40.111-10.768-77.733-29.562-110.13 19.45-51.66 18.75-95.5-7.27-121.7-24.75-24.64-91.15-20.64-166.21 12.599-5.552-.42-11.158-.636-16.817-.636-103.02 0-189.46 70.897-213.35 166.42 32.318-41.377 66.318-71.377 111.74-93.224-4.13 3.87-28.227 27.826-32.28 31.882-119.77 119.74-157.54 276.16-116.9 316.81 30.893 30.887 86.879 25.671 151.19-5.824 29.903 15.229 63.75 23.815 99.61 23.815 96.565 0 178.4-62.158 208.04-148.72h-118.93c-16.366 30.19-48.373 50.739-85.107 50.739s-68.743-20.549-85.108-50.739c-7.275-13.638-11.457-29.276-11.457-45.828v-.36h193.13zm-192.95-58.02c2.728-48.555 43.1-87.292 92.384-87.292 49.282 0 89.655 38.736 92.382 87.292h-184.77zm274.33-174.5c16.763 16.94 16.344 48.107 2.006 87.011-24.57-37.458-60.26-66.972-102.4-83.824 45.06-19.319 81.71-21.878 100.39-3.191zm-401.74 401.72c-21.391-21.4-14.943-66.31 12.614-120.42 17.154 48.136 50.578 88.545 93.668 114.58-47.714 21.66-86.768 25.337-106.28 5.839z"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,7 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 100 100">
<g transform="translate(0 -952.36)">
<g transform="matrix(.094248 0 0 .094248 2.8805 955.24)"></g>
<g transform="matrix(.18832 0 0 .18832 4.2017 956.56)"></g>
<path style="fill:#000000" d="m41.401 1047.9c-15.184-3.4313-27.055-14.514-32.097-29.968-1.8896-5.7912-2.2419-8.3552-2.2419-16.315 0-7.7133.34205-10.428 1.9973-15.851 4.3432-14.23 14.797-24.477 28.855-28.282 3.1637-.85642 4.4999-1.004 10.407-1.1488 7.5416-.18488 10.196.16319 16.09 2.1095 13.258 4.3784 23.204 15.449 26.86 29.898 5.55 21.931-3.0849 44.309-21.234 55.029-2.6091 1.5413-6.3812 3.0931-9.7867 4.0263-3.6468.9992-15.279 1.3093-18.85.5024zm13.609-11.258c5.0503-2.4708 8.4981-9.4275 9.9833-20.143.76151-5.4946.67497-24.895-.13378-29.989-1.7607-11.09-5.0434-17.485-10.15-19.773-2.7736-1.2429-7.3443-1.2343-9.8983.0188-3.9487 1.937-7.0286 6.5962-8.6902 13.147-1.6506 6.5069-1.8367 8.7982-1.8225 22.442.01131 10.842.11812 13.461.67338 16.515 1.9995 10.997 5.6512 16.945 11.401 18.571 2.5076.7089 6.2822.3649 8.637-.7872z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,5 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 100 100">
<g transform="translate(0 -952.36)">
<path d="m52.788 1002.2q0 1.3678-.86801 2.3674-.86801.9995-2.1832.9995-1.3678 0-2.3673-.8681-.99953-.8679-.99953-2.1832 0-1.3676.89432-2.3673.89432-.99943 2.2095-.99943t2.3147.86803q.99953.868.99953 2.1831zm.78910 3.0513 18.412-30.565q-.47346.42084-3.551 3.2879t-6.6022 6.1287-7.1808 6.6811q-3.6562 3.4194-6.155 5.8131-2.4988 2.3936-2.6566 2.7093l-18.36 30.512q.36825-.3681 3.5247-3.2615 3.1564-2.8935 6.6285-6.1287 3.4721-3.2353 7.1545-6.6811 3.6825-3.4458 6.155-5.8394t2.6303-2.6566zm34.037-2.8934q0 10.574-5.4711 19.517-.15782-.1053-.89432-.5787-.73650-.4733-1.3941-.8679-.65758-.3945-.86801-.3945-.68389 0-.68389.6839 0 .526 3.1038 2.3146-3.8929 5.8919-9.706 10.022-5.8131 4.1297-12.705 5.8131l-.84171-3.5247q-.0526-.5261-.78910-.5261-.26304 0-.42086.2894-.15782.2893-.10522.4997l.84171 3.5773q-3.7877.7891-7.6806.7891-10.469 0-19.57-5.5237.0526-.1054.68389-1.0785.63128-.9731 1.131-1.7622.49976-.7891.49976-.9997 0-.6837-.68389-.6837-.31564 0-.89432.7627-.57868.7628-1.1837 1.815-.60498 1.052-.71019 1.2099-5.9446-3.9455-10.101-9.8638-4.1559-5.9183-5.7868-12.862l3.6299-.7891q.52607-.1579.52607-.7891 0-.2631-.28934-.4208-.28934-.1579-.55237-.1054l-3.5773.7891q-.73650-3.7877-.73650-7.3123 0-10.837 5.7341-19.938.10522.0527.97323.63128.86801.57867 1.5782.99953.71019.42087.92062.42087.68389 0 .68389-.63129 0-.31564-.65759-.81541-.65758-.49976-1.7097-1.131l-1.0521-.6313q4.0507-5.892 9.9427-9.9427t12.836-5.6289l.78910 3.5247q.10522.52607.78910.52607.26303 0 .42085-.28934.15782-.28933.10522-.55237l-.78910-3.4721q3.7351-.68389 7.0493-.68389 10.732 0 19.938 5.7342-2.0517 2.946-2.0517 3.4194 0 .68389.63128.68389.57868 0 2.5251-3.3668 5.8394 3.9455 9.8638 9.7849t5.6552 12.678l-2.946.63128q-.52607.10521-.52607.84171 0 .26303.28934.42085t.49976.10521l2.9986-.68389q.73650 3.7877.73650 7.365zm4.4716 0q0-8.5749-3.3405-16.361-3.3405-7.7858-8.9695-13.415-5.6289-5.6289-13.415-8.9695-7.786-3.37-16.361-3.37-8.5749 0-16.361 3.3405-7.7858 3.3405-13.415 8.9695-5.6289 5.6289-8.9695 13.415-3.3405 7.7858-3.3405 16.361 0 8.5748 3.3405 16.361 3.3405 7.7859 8.9695 13.415 5.6289 5.629 13.415 8.9695 7.7858 3.3405 16.361 3.3405 8.5749 0 16.361-3.3405 7.7858-3.3405 13.415-8.9695 5.6289-5.6289 8.9695-13.415 3.3405-7.7859 3.3405-16.361zm5.0503 0q0 9.5744-3.7351 18.307-3.7351 8.7327-10.048 15.046-6.3128 6.3128-15.046 10.048-8.7327 3.735-18.307 3.735-9.5744 0-18.307-3.735-8.7327-3.7351-15.046-10.048-6.3128-6.3129-10.048-15.046-3.7351-8.7328-3.7351-18.307 0-9.5745 3.7351-18.307 3.7351-8.7327 10.048-15.046 6.3128-6.3128 15.046-10.048 8.7327-3.7351 18.307-3.7351 9.5744 0 18.307 3.7351 8.7327 3.7351 15.046 10.048 6.3128 6.3128 10.048 15.046 3.7351 8.7328 3.7351 18.307z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,9 @@
<svg height="41.667" width="41.667" viewBox="0 0 41.667306 41.66729">
<g transform="translate(-37.035 -1004.6)">
<path style="stroke-linejoin:round;stroke:currentColor;stroke-linecap:round;stroke-width:3.728;fill:none" d="m76.25 1030.2a18.968 18.968 0 0 1 -23.037 13.709 18.968 18.968 0 0 1 -13.738 -23.019 18.968 18.968 0 0 1 23.001 -13.768 18.968 18.968 0 0 1 13.798 22.984"/>
<g transform="matrix(1.1146 0 0 1.1146 -26.276 -124.92)">
<path style="stroke:currentColor;stroke-linecap:round;stroke-width:3.728;fill:none" d="m75.491 1039.5v-8.7472"/>
<path style="stroke-width:0;fill:currentColor" transform="scale(-1)" d="m-73.193-1024.5a2.3719 2.3719 0 0 1 -2.8807 1.7142 2.3719 2.3719 0 0 1 -1.718 -2.8785 2.3719 2.3719 0 0 1 2.8763 -1.7217 2.3719 2.3719 0 0 1 1.7254 2.8741"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 811 B

View File

@ -0,0 +1,5 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="50mm" width="50mm" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 177.16535 177.16535">
<g transform="translate(0 -875.2)">
<path style="fill-rule:evenodd;stroke-width:0;fill:#111111" d="m159.9 894.3-68.79 8.5872-75.42 77.336 61.931 60.397 75.429-76.565 6.8495-69.755zm-31.412 31.835a10.813 10.813 0 0 1 1.8443 2.247 10.813 10.813 0 0 1 -3.5174 14.872l-.0445.0275a10.813 10.813 0 0 1 -14.86 -3.5714 10.813 10.813 0 0 1 3.5563 -14.863 10.813 10.813 0 0 1 13.022 1.2884z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 658 B

View File

@ -0,0 +1,7 @@
<svg height="41.646" width="48.43" viewBox="0 0 48.430474 41.646302">
<g transform="translate(-1.1273 -1010.2)">
<path style="stroke-linejoin:round;stroke:currentColor;stroke-linecap:round;stroke-width:4.151;fill:none" d="m25.343 1012.3-22.14 37.496h44.28z"/>
<path style="stroke:currentColor;stroke-linecap:round;stroke-width:4.1512;fill:none" d="m25.54 1027.7v8.7472"/>
<path style="stroke-width:0;fill:currentColor" d="m27.839 1042.8a2.3719 2.3719 0 0 1 -2.8807 1.7143 2.3719 2.3719 0 0 1 -1.718 -2.8785 2.3719 2.3719 0 0 1 2.8763 -1.7217 2.3719 2.3719 0 0 1 1.7254 2.8741"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

View File

@ -0,0 +1,133 @@
/* expandable sections */
(function () {
function toggle (button, target) {
var expanded = button.getAttribute('aria-expanded') === 'true';
button.setAttribute('aria-expanded', !expanded);
target.hidden = !target.hidden;
}
var expanders = document.querySelectorAll('[data-expands]');
Array.prototype.forEach.call(expanders, function (expander) {
var target = document.getElementById(expander.getAttribute('data-expands'));
expander.addEventListener('click', function () {
toggle(expander, target);
})
})
}());
/* menu button */
(function () {
var button = document.getElementById('menu-button');
if (button) {
var menu = document.getElementById('patterns-list');
button.addEventListener('click', function() {
var expanded = this.getAttribute('aria-expanded') === 'true';
this.setAttribute('aria-expanded', !expanded);
})
}
}());
/* persist navigation scroll point */
(function () {
window.onbeforeunload = function () {
var patternsNav = document.getElementById('patterns-nav');
if (patternsNav) {
var scrollPoint = patternsNav.scrollTop;
localStorage.setItem('scrollPoint', scrollPoint);
}
}
window.addEventListener('DOMContentLoaded', function () {
if (document.getElementById('patterns-nav')) {
if (window.location.href.indexOf('patterns/') !== -1) {
document.getElementById('patterns-nav').scrollTop = parseInt(localStorage.getItem('scrollPoint'));
} else {
document.getElementById('patterns-nav').scrollTop = 0;
}
}
})
}());
/* Add "link here" links to <h2> headings */
(function () {
var headings = document.querySelectorAll('main > h2');
Array.prototype.forEach.call(headings, function (heading) {
var id = heading.getAttribute('id');
if (id) {
var newHeading = heading.cloneNode(true);
newHeading.setAttribute('tabindex', '-1');
var container = document.createElement('div');
container.setAttribute('class', 'h2-container');
container.appendChild(newHeading);
heading.parentNode.insertBefore(container, heading);
var link = document.createElement('a');
link.setAttribute('href', '#' + id);
var headingText = heading.textContent;
link.setAttribute('aria-label', 'This ' + headingText + ' section');
link.innerHTML = '<svg aria-hidden="true" class="link-icon" viewBox="0 0 50 50" focusable="false"> <use xlink:href="#link"></use> </svg>';
container.appendChild(link);
heading.parentNode.removeChild(heading);
}
})
}());
/* Enable scrolling by keyboard of code samples */
(function () {
var codeBlocks = document.querySelectorAll('pre, .code-annotated');
Array.prototype.forEach.call(codeBlocks, function (block) {
if (block.querySelector('code')) {
block.setAttribute('role', 'region');
block.setAttribute('aria-label', 'code sample');
if (block.scrollWidth > block.clientWidth) {
block.setAttribute('tabindex', '0');
}
}
});
}());
/* Switch and persist theme */
(function () {
function CSSSupported (property, value) {
var prop = property + ':',
el = document.createElement('test'),
mStyle = el.style;
el.style.cssText = prop + value;
return mStyle[property];
}
var checkbox = document.getElementById('themer');
var inverter = document.getElementById('inverter');
if (!CSSSupported('filter', 'invert(100%)')) {
checkbox.parentNode.hidden = true;
return;
}
function darkTheme(media) {
inverter.setAttribute('media', media);
inverter.textContent = inverter.textContent.trim();
localStorage.setItem('darkTheme', media);
}
checkbox.addEventListener('change', function () {
darkTheme(this.checked ? 'screen' : 'none');
});
window.addEventListener('DOMContentLoaded', function () {
if ('filter' in document.body.style) {
if (localStorage.getItem('darkTheme') === 'screen') {
checkbox.click();
}
}
});
}());

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,62 @@
/**
* Copyright 2015 Google Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* eslint-env browser */
'use strict';
if ('serviceWorker' in navigator) {
// Delay registration until after the page has loaded, to ensure that our
// precaching requests don't degrade the first visit experience.
// See https://developers.google.com/web/fundamentals/instant-and-offline/service-worker/registration
window.addEventListener('load', function() {
// Your service-worker.js *must* be located at the top-level directory relative to your site.
// It won't be able to control pages unless it's located at the same level or higher than them.
// *Don't* register service worker file in, e.g., a scripts/ sub-directory!
// See https://github.com/slightlyoff/ServiceWorker/issues/468
navigator.serviceWorker.register('service-worker.js').then(function(reg) {
// updatefound is fired if service-worker.js changes.
reg.onupdatefound = function() {
// The updatefound event implies that reg.installing is set; see
// https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event
var installingWorker = reg.installing;
installingWorker.onstatechange = function() {
switch (installingWorker.state) {
case 'installed':
if (navigator.serviceWorker.controller) {
// At this point, the old content will have been purged and the fresh content will
// have been added to the cache.
// It's the perfect time to display a "New content is available; please refresh."
// message in the page's interface.
console.log('New or updated content is available.');
} else {
// At this point, everything has been precached.
// It's the perfect time to display a "Content is cached for offline use." message.
console.log('Content is now available offline!');
}
break;
case 'redundant':
console.error('The installing service worker became redundant.');
break;
}
};
};
}).catch(function(e) {
console.error('Error during service worker registration:', e);
});
});
}

View File

@ -0,0 +1,52 @@
{
"name": "Cupper Pattern Library Docs",
"short_name": "Cupper Docs",
"icons": [
{
"src": "images/android-icon-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "images/android-icon-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "images/android-icon-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "images/android-icon-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "images/android-icon-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "images/android-icon-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"
},
{
"src": "images/android-icon-512x512.png",
"sizes": "512x512",
"type": "image\/png",
"density": "4.0"
}
],
"start_url": "index.html",
"display": "standalone",
"background_color": "#fefefe",
"theme_color": "#111"
}

16
themes/cupper/theme.toml Normal file
View File

@ -0,0 +1,16 @@
name = "Cupper"
description = ""
homepage = "https://www.paciellogroup.com/"
tags = ["inclusive design", "accessibility"]
min_version = 0.1
SectionPagesMenu = "main"
[author]
name = "Heydon Pickering"
homepage = "https://inclusive-components.design"
[taxonomies]
tag = "tags"
wcag = "wcag"
principle = "principles"