1
Fork 0
mirror of https://github.com/Steffo99/bluelib.git synced 2024-10-16 05:37:28 +00:00
bluelib/examples/index.html
2024-05-07 16:45:21 +02:00

1948 lines
57 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="preload" href="fabrice-nerfin-puHQJZd3MDg-unsplash.jpg" as="image"/>
<title>Bluelib</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:title" content="Bluelib"/>
<meta property="og:description" content="A versatile and easy to use CSS stylesheet that supports fast dynamic recoloring via CSS variables."/>
<meta property="og:type" content="website"/>
<meta property="og:url" content="https://bluelib.gh.steffo.eu/examples/index.html"/>
<meta property="og:image" content="../.media/opengraph.png"/>
<link rel="icon" type="image/x-icon" href="../.media/favicon.png">
<link rel="stylesheet/less" type="text/css" href="../dist/base.root.less">
<link rel="stylesheet/less" type="text/css" href="../dist/layouts-center.root.less">
<link rel="stylesheet/less" type="text/css" href="../dist/layouts-flex.root.less">
<link rel="stylesheet/less" type="text/css" href="../dist/colors-royalblue.root.less">
<link rel="stylesheet/less" type="text/css" href="../dist/colors-amber.root.less">
<link rel="stylesheet/less" type="text/css" href="../dist/colors-pixeldawn.root.less">
<link rel="stylesheet/less" type="text/css" href="../dist/colors-purplestar.root.less">
<link rel="stylesheet/less" type="text/css" href="../dist/fonts-fira-ghpages.root.less">
<link rel="stylesheet/less" type="text/css" href="../dist/classic.root.less">
<link rel="stylesheet/less" type="text/css" href="../dist/glass.root.less">
<link rel="stylesheet/less" type="text/css" href="../dist/fun.root.less">
<script src="index.js"></script>
<script>
less = {
env: "development",
}
</script>
<script src="https://cdn.jsdelivr.net/npm/less"></script>
<title>Bluelib</title>
</head>
<body class="theme-bluelib layout-center">
<header>
<h1>
Bluelib
</h1>
</header>
<main>
<div class="chapter-1" id="chapter-welcome">
<h2 style="margin-top: 0;">
Welcome to Bluelib!
</h2>
<section class="panel box" id="panel-what-is-bluelib">
<h3>
What is Bluelib?
</h3>
<p>
<dfn id="dfn-bluelib">Bluelib</dfn> is a modular <i>CSS</i> library for web pages which aims to provide <b>great customization</b> and
<b>flexibility</b> while trying to keep <b>HTML as "basic" as possible</b>.
</p>
<p>
This page itself acts both as a <b>documentation</b> of the library and as a <b>live preview</b> of its capabilities.
</p>
<p>
If you're on a browser which supports that, you can right click any element of this page and then click
<kbd>Inspect Element</kbd> to see how something is done.
</p>
<div class="panel parenthesis float-bottom">
<p>
This page is also used for development, therefore it uses un-minified sources and imports some development scripts.
</p>
<p>
Do not try to determine the performance of Bluelib from this page, as the development features are somewhat heavy on the browser!
</p>
</div>
</section>
</div>
<div class="chapter-2">
<section class="panel box" id="panel-index">
<h3>
Table of contents
</h3>
<ol>
<li><a href="#chapter-welcome">Welcome to Bluelib!</a></li>
<li><a href="#chapter-configure">Configuration</a></li>
<li><a href="#chapter-install">Installation</a></li>
<li><a href="#chapter-panels">Panels</a></li>
<li><a href="#chapter-chapters">Chapters</a></li>
<li><a href="#chapter-modifiers">Modifiers</a></li>
<li><a href="#chapter-separators">Separators</a></li>
<li><a href="#chapter-lists">Lists</a></li>
<li><a href="#chapter-glossaries">Glossaries</a></li>
<li><a href="#chapter-text">Text elements</a></li>
<li><a href="#chapter-tables">Tables</a></li>
<li><a href="#chapter-images">Images</a></li>
<li><a href="#chapter-inputs">Inputs</a></li>
<li><a href="#chapter-forms">Forms</a></li>
</ol>
</section>
<section class="panel box" id="panel-glossary">
<h3>
Glossary
</h3>
<ul style="column-width: 12ex;">
<li><a href="#dfn-abbreviation">Abbreviation</a></li>
<li><a href="#dfn-anchor">Anchor</a></li>
<li><a href="#dfn-annotation">Annotation, unarticulated</a></li>
<li><a href="#dfn-area">Area</a></li>
<li><a href="#dfn-attention">Bring attention</a></li>
<li><a href="#dfn-bluelib">Bluelib</a></li>
<li><a href="#dfn-box">Box</a></li>
<li><a href="#dfn-button">Button</a></li>
<li><a href="#dfn-chapter">Chapter</a></li>
<li><a href="#dfn-checkbox">Checkbox</a></li>
<li><a href="#dfn-citation">Citation</a></li>
<li><a href="#dfn-code">Code</a></li>
<li><a href="#dfn-color">Color</a></li>
<li><a href="#dfn-color-input">Color input</a></li>
<li><a href="#dfn-definition">Definition</a></li>
<li><a href="#dfn-deleted">Deleted text</a></li>
<li><a href="#dfn-details">Details</a></li>
<li><a href="#dfn-dialog">Dialog</a></li>
<li><a href="#dfn-fade">Fade</a></li>
<li><a href="#dfn-field">Field</a></li>
<li><a href="#dfn-file-input">File input</a></li>
<li><a href="#dfn-float">Float</a></li>
<li><a href="#dfn-form">Form</a></li>
<li><a href="#dfn-form-flex">Flex form</a></li>
<li><a href="#dfn-idiomatic">Idiomatic expressions</a></li>
<li><a href="#dfn-input">Input</a></li>
<li><a href="#dfn-inserted">Inserted text</a></li>
<li><a href="#dfn-limited">Limited images</a></li>
<li><a href="#dfn-list-definition">List, definition</a></li>
<li><a href="#dfn-list-ordered">List, ordered</a></li>
<li><a href="#dfn-list-unordered">List, unordered</a></li>
<li><a href="#dfn-mark">Mark</a></li>
<li><a href="#dfn-multiselect">Multiselect</a></li>
<li><a href="#dfn-panel">Panel</a></li>
<li><a href="#dfn-parenthesis">Parenthesis</a></li>
<li><a href="#dfn-preformatted">Preformatted text</a></li>
<li><a href="#dfn-quote">Quote</a></li>
<li><a href="#dfn-radio">Radio</a></li>
<li><a href="#dfn-range">Range</a></li>
<li><a href="#dfn-ruby">Ruby</a></li>
<li><a href="#dfn-ruleset">Ruleset</a></li>
<li><a href="#dfn-sample-input">Sample, input</a></li>
<li><a href="#dfn-sample-output">Sample, output</a></li>
<li><a href="#dfn-select">Select</a></li>
<li><a href="#dfn-selectorset">Selectorset</a></li>
<li><a href="#dfn-separator">Separator</a></li>
<li><a href="#dfn-separator-heavy">Separator, heavy</a></li>
<li><a href="#dfn-separator-light">Separator, light</a></li>
<li><a href="#dfn-small">Small comment</a></li>
<li><a href="#dfn-strike">Strike</a></li>
<li><a href="#dfn-strong">Strong importance</a></li>
<li><a href="#dfn-table">Table</a></li>
<li><a href="#dfn-tablepanel">Table panel</a></li>
<li><a href="#dfn-target">Target</a></li>
<li><a href="#dfn-todo">Todo</a></li>
<li><a href="#dfn-variable">Variable</a></li>
</ul>
</section>
</div>
<div class="chapter-1" id="chapter-configure">
<h2>
Configuration
</h2>
<section class="panel box" id="panel-targets">
<h3>
Targets
</h3>
<p>
Bluelib is composed by many separate CSS documents, each one providing different features which may or may not be desired in a certain website.
</p>
<p>
A single one of these documents is called a <dfn id="dfn-target">target</dfn>.
</p>
<p>
A <i>target</i> is composed by two parts:
</p>
<ul>
<li>a <dfn id="dfn-ruleset">ruleset</dfn>, which defines <b>which rules</b> should apply to the page;</li>
<li>a <dfn id="dfn-selectorset">selectorset</dfn>, which defines <b>on which elements</b> the changes should be applied to.</li>
</ul>
</section>
</div>
<div class="chapter-3" id="chapter-rulesets">
<form class="panel box" id="panel-rulesets-toggleable" name="rulesets-toggleable">
<h3>
Generic rulesets
</h3>
<p>
Enable the rulesets providing the features you need, and opt out of the others to keep your page as lightweight as possible!
</p>
<dl>
<dt>
<label class="fade" title="base"><input type="checkbox" autocomplete="off" disabled checked name="ruleset-base" value="base"> Base</label>
</dt>
<dd>
The base <i>ruleset</i>, providing the layout and basic high contrast theming.
</dd>
<dt>
<label class="fade" title="layouts-center"><input type="checkbox" autocomplete="off" disabled checked name="ruleset-layouts-center" value="layouts-center"> Layout: Center</label>
</dt>
<dd>
<mark>Experimental.</mark>
Gives a header at the top, a footer at the bottom, and fits the content between the two.
</dd>
<dt>
<label class="fade" title="layouts-flex"><input type="checkbox" autocomplete="off" disabled name="ruleset-layouts-flex" value="layouts-flex"> Layout: Flex</label>
</dt>
<dd>
<mark>Experimental.</mark>
Allows you to quickly customize the positioning of panels via pre-made flex classes and the <code>flex-basis</code> property.
</dd>
<dt>
<label class="fade" title="classic"><input type="checkbox" autocomplete="off" disabled checked name="ruleset-classic" value="classic"> Classic</label>
</dt>
<dd>
Inspired by the older Bluelib versions, with semi-transparent panels and rounded borders.
</dd>
<dt>
<label class="fade" title="glass"><input type="checkbox" autocomplete="off" disabled checked name="ruleset-glass" value="glass"> Glass</label>
</dt>
<dd>
Made to celebrate the addition of <code>backdrop-filter</code> to Firefox, makes panels have a <q>stained glass</q> background.
</dd>
<dt>
<label class="fade" title="fun"><input type="checkbox" autocomplete="off" disabled name="ruleset-fun" value="fun"> Fun</label>
</dt>
<dd>
<mark>Experimental.</mark>
<i>Ruleset</i> with bizzare or buggy but fun rules.
</dd>
</dl>
</form>
<form class="panel box" id="panel-rulesets-colors" name="rulesets-colors">
<h3>
Color rulesets
</h3>
<p>
Pick your preferred color palette among these ones!
</p>
<dl>
<dt>
<label class="fade" title="<nothing>"><input type="radio" autocomplete="off" disabled checked name="ruleset-colors" value=""> None</label>
</dt>
<dd>
If no color ruleset is applied, Bluelib defaults to a plain black-on-white palette.
</dd>
<dt>
<label class="fade" title="colors-royalblue"><input type="radio" autocomplete="off" disabled checked name="ruleset-colors" value="royalblue"> Royal Blue</label>
</dt>
<dd>
<a href="https://github.com/Steffo99">Steffo</a>'s signature color palette, based upon RYG⁵'s logo colors.
</dd>
<dt>
<label class="fade" title="colors-amber"><input type="radio" autocomplete="off" disabled name="ruleset-colors" value="amber"> Gestione Amber</label>
</dt>
<dd>
<a href="https://github.com/Nemesis-FT">Nemesis</a>' own color palette, with a "coffee-like" look.
</dd>
<dt>
<label class="fade" title="colors-pixeldawn"><input type="radio" autocomplete="off" disabled name="ruleset-colors" value="pixeldawn"> Pixel Dawn</label>
</dt>
<dd>
A ruleset developed in collaboration with <a href="https://viktya.github.io/">Viktya</a>, featuring a pixelated beach-side sunrise.
</dd>
<dt>
<label class="fade" title="colors-purplestar"><input type="radio" autocomplete="off" disabled name="ruleset-colors" value="purplestar"> Purple Star</label>
</dt>
<dd>
A ruleset with a purple-yellow palette for <a href="https://www.starshard.studio">Star Shard Studio</a>.
</dd>
</dl>
</form>
<form class="panel box" id="panel-rulesets-fonts" name="rulesets-fonts">
<h3>
Font rulesets
</h3>
<p>
Pick your preferred fonts among these ones!
</p>
<dl>
<dt>
<label class="fade" title="fonts-fira-ghpages"><input type="radio" autocomplete="off" disabled checked name="ruleset-fonts" value=""> None</label>
</dt>
<dd>
If no font ruleset is applied, Bluelib defaults to using the browser's fonts.
</dd>
<dt>
<label class="fade" title="fonts-fira-ghpages"><input type="radio" autocomplete="off" disabled checked name="ruleset-fonts" value="fira-ghpages"> Fira</label>
</dt>
<dd>
Font theme based upon Mozilla's <a href="https://github.com/mozilla/Fira">Fira</a> fonts.
</dd>
</dl>
</form>
<form class="panel box" id="panel-selectorsets" name="selectorsets">
<h3>
Possible selectorsets
</h3>
<p>
Choose the selectorset which better suits your needs!
</p>
<dl>
<dt><label class="fade"><input type="radio" autocomplete="off" disabled checked name="selectorsets" value="root"> Root</label></dt>
<dd>
Simple selectors for usage in plain HTML pages, with short and human-friendly class names.
</dd>
<dt><label class="fade"><input type="radio" autocomplete="off" disabled name="selectorsets" value="module"> Module</label></dt>
<dd>
All selectors use class names, allowing the usage of the target with
<a href="https://github.com/css-modules/css-modules">CSS Modules</a>. Useful to create React component packages or in any cases you want isolation between Bluelib and the rest of your page.
</dd>
</dl>
<div class="panel parenthesis">
<p>
Since it's not possible to preview selectorset changes, this page will always use the <b>Root</b> selectorset, and the toggle above will only influence the installation instructions below.
</p>
</div>
</form>
</div>
<div class="chapter-3" id="chapter-install">
<h2>
Installation and usage
</h2>
<section class="panel box" id="panel-unpkg">
<h3>
Via UNPKG
</h3>
<p>
You can quickly add Bluelib to a simple website by adding the targets using <code>&lt;link&gt;</code> tags and the <a href="https://unpkg.com/">UNPKG</a> CDN, like this:
</p>
<div class="panel">
<code>
&lt;link <wbr>rel=&quot;stylesheet&quot; <wbr>href=&quot;https://unpkg.com/@steffo/bluelib<wbr>@<var>VERSION</var><wbr>/dist/<wbr><var>RULESET</var>.<var>SELECTORSET</var>.min.css&quot;<wbr> type=&quot;text/css&quot;<wbr> /&gt;
</code>
</div>
<p>
To use the targets currently enabled in this page, you should use:
</p>
<div class="panel fade" id="js-unpkg-targets">
Waiting for JavaScript to load...
</div>
</section>
<section class="panel box" id="panel-yarn">
<h3>
Via a bundler
</h3>
<p>
If you're building a website with a framework such as <a href="https://nextjs.org/">Next.JS</a>, you'll want first to install Bluelib via your package manager:
</p>
<div class="panel">
<code>
$ yarn add <a href="https://www.npmjs.com/package/@steffo/bluelib">@steffo/bluelib</a>
</code>
</div>
<p>
Then, you'll want to import the targets you desire at your website's root:
</p>
<div class="panel">
<code>
import <wbr>"@steffo/bluelib/dist/<wbr><var>RULESET</var>.<var>SELECTORSET</var>.css";
</code>
</div>
<p>
To use the targets currently enabled in this page, you should use:
</p>
<div class="panel fade" id="js-yarn-targets">
Waiting for JavaScript to load...
</div>
</section>
</div>
<div class="chapter-4" id="chapter-panels">
<h2>
Panels
</h2>
<section class="panel box" id="panel-panel">
<h3>
Panel
</h3>
<p>
A <dfn id="dfn-panel">Panel</dfn> is a <b>container</b> styled with a <b>slight background color</b> and no borders.
</p>
<div class="panel float-bottom">
Hello world! I am a Panel!
</div>
</section>
<section class="panel box" id="panel-box">
<h3>
Box
</h3>
<p>
A <dfn id="dfn-box">Box</dfn> is a <b>container</b> adding <b>borders of all four sides</b> to the base appearence of a Panel.
</p>
<div class="panel box float-bottom">
This Box contains a hidden Snake. <span style="display: none;">🐍</span>
</div>
</section>
<section class="panel box" id="panel-dialog">
<h3>
Dialog
</h3>
<p>
A <dfn id="dfn-dialog">Dialog</dfn> is a <b>container</b> adding a <b>left border</b> to the base appearence of a Panel.
</p>
<blockquote class="panel dialog float-bottom">
<q>Snake? Snake??? SNAKEEEEEEE!</q>
</blockquote>
</section>
<section class="panel box" id="panel-parenthesis">
<h3>
Parenthesis
</h3>
<p>
A <dfn id="dfn-parenthesis">Parenthesis</dfn> is a <b>container</b> styled as a Panel and with smaller text.
</p>
<div class="panel parenthesis float-bottom">
I think we lost the Snake...
</div>
</section>
<section class="panel box" id="panel-when-panel">
<h3>
Panel usage
</h3>
<p>
When using Bluelib, text should always be either an <b>header</b> or <b>inside a <i>Panel</i></b>.
</p>
<p>
Since <i>Panels</i> often denote "sections" of text, they should usually be <b><code>&lt;section&gt;</code> elements</b>.
</p>
<p>
When they are only used cosmetically, <b><code>&lt;div&gt;</code> elements</b> should be used instead.
</p>
<p>
When used to create forms, they may also be <b><code>&lt;form&gt;</code> elements</b>.
</p>
</section>
<section class="panel box" id="panel-when-box">
<h3>
Box usage
</h3>
<p>
A <i>Box</i> creates a visible <b>separation</b> between the <b>content inside it</b> and the
<b>content outside it</b>, and should be used when this separation is desired, like when <b>describing a topic</b> (like here).
</p>
<p>
To achieve the best visual style, <i>Boxes</i> should always be the outmost panels: you should <b><em>never</em> place a
<i>Box</i> inside a Panel or a Dialog</b>, but you can place one inside another <i>Box</i>.
</p>
</section>
<section class="panel box" id="panel-when-dialog">
<h3>
Dialog usage
</h3>
<p>
A <i>Dialog</i> creates a visible <b>indentation</b> of the
<b>content inside it</b>, and should be used when this indentation is desired, like in <b>quotes</b> or <b>examples</b>.
</p>
<p>
When containing a quote, they should use <b><code>&lt;blockquote&gt;</code> elements</b>.
</p>
<p>
Like Boxes, <i>Dialogs</i> should <b><em>never</em></b> be placed <b>into containers with less borders</b> than them, such as Panels.
</p>
</section>
<section class="panel box" id="panel-when-parenthesis">
<h3>
Parenthesis usage
</h3>
<p>
A <i>Parenthesis</i>
<b>removes importance from its contents</b>, and therefore makes for a great container for notes or additional information about a topic.
</p>
<p>
Having no borders, they should be considered as Panels when placing them: never add Boxes or Dialogs inside them.
</p>
</section>
</div>
<div class="chapter-2">
<section class="panel box" id="panel-nesting">
<h3>
Nesting
</h3>
<p>
As you have seen in the sections before, panels can be <b>nested</b> many times (until the text becomes undistinguishable)!
</p>
<div class="panel parenthesis">
<p>
Like this!
</p>
<div class="panel parenthesis">
<p>
How deep does this Panel hole go?
</p>
<div class="panel parenthesis">
<p>
BWOON.
</p>
<div class="panel parenthesis">
<p>
BWOON.
</p>
<div class="panel parenthesis">
<p>
BWOON.
</p>
<div class="panel parenthesis">
<em>
<a href="https://www.youtube.com/watch?v=G2jUhnCU9iA" target="_blank">
PANELCEPTION.
</a>
</em>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<div class="chapter-3" id="chapter-chapters">
<h2>
Chapters
</h2>
<section class="panel box" id="panel-chapter">
<h3>
Chapter
</h3>
<p>
A <dfn id="dfn-chapter">chapter</dfn> is a grouping of an heading and multiple panels containing tightly related information.
</p>
<p>
They split their children into a preset amount of columns: this one, for example, splits panels <b>into two columns</b>.
</p>
<p>
The maximum number of columns in a chapter is 9; beyond that, you'll need to write your own chapter code.
</p>
</section>
<section class="panel box" id="panel-panelheights">
<h3>
Panel heights
</h3>
<p>
In a chapter, all panels on a row <b>inherit the height of the tallest panel in it</b>, so that no empty space is left.
</p>
</section>
<section class="panel box" id="panel-float">
<h3>
Element floats
</h3>
<p>
A <dfn id="dfn-float">float</dfn> is a utility class to align items in panels without having to write CSS.
</p>
<p class="float-bottom">
For example, if a panel has some empty space, elements can be made to
<b>float to the bottom</b>, which can be useful for example for buttons in sibling panels.
</p>
</section>
<section class="panel box" id="panel-autowrap">
<h3>
Auto-wrapping
</h3>
<p>
Panels in a numbered chapter will <b>automatically wrap</b> if their contents won't fit horizontally.
</p>
<p>
Wrapped panels' heights ignore the height of panels in other rows.
</p>
<p class="float-bottom">
To have a constant height, one has to be set manually.
</p>
</section>
<section class="panel box" id="panel-autosizing">
<h3>
Auto-sizing
</h3>
<p>
Panels in a "zero" chapter will instead <b>automatically resize</b> to fit everything in a single row.
</p>
<div class="chapter-0">
<div class="panel">
1
</div>
<div class="panel">
2
</div>
<div class="panel">
3
</div>
<div class="panel">
4
</div>
<div class="panel">
5
</div>
<div class="panel">
6
</div>
<div class="panel">
7
</div>
<div class="panel">
8
</div>
<div class="panel">
9
</div>
<div class="panel">
10
</div>
</div>
<p class="float-bottom">
To set a constant width, one has to be set manually.
</p>
</section>
</div>
<div class="chapter-3" id="chapter-modifiers">
<h2>
Modifiers
</h2>
<section class="panel box" id="panel-fade">
<h3>
Fade
</h3>
<p>
The <dfn id="dfn-fade">fade</dfn> modifier <b>reduces the opacity</b> of the elements it is applied to.
</p>
<div class="panel box fade float-bottom">
<p>
I'm a faded box!
</p>
<div class="panel box">
<p>
I'm faded too!
</p>
<div class="panel box fade">
<p>
But they can be faded <b>more</b>.
</p>
</div>
</div>
</div>
</section>
<section class="panel box" id="panel-mark">
<h3>
Mark
</h3>
<p>
The <dfn id="dfn-mark">mark</dfn> modifier <b>distinguishes</b> the elements it is applied to from the surrounding ones by applying a
<b>strong color contrast</b>.
</p>
<div class="panel box mark float-bottom">
<p>
Think of it like an <b>highlighter</b>, but for
<mark>anything</mark>
!
</p>
<div class="panel box mark">
<p>
Which can be nested to
<mark>negate</mark>
its effect.
</p>
<div class="panel box mark">
<p>
Up to 3 times and
<mark>not any more</mark>
.
</p>
</div>
</div>
</div>
</section>
<section class="panel box" id="panel-todo">
<h3>
To do
</h3>
<p>
The <dfn id="dfn-todo">todo</dfn> modifier emphasises that the contents of the elements it is applied to are not correct or final.
</p>
<div class="panel box todo float-bottom">
<p>
Like this!
</p>
<div class="panel box">
<p>
As with other modifiers, it is inherited.
</p>
<div class="panel box todo">
<p>
And it does nothing if reapplied.
</p>
</div>
</div>
</div>
</section>
<section class="panel box" id="panel-colors">
<h3>
Color modifiers
</h3>
<p>
The <dfn id="dfn-color">color</dfn> modifiers change the colors of the elements they are applied to.
</p>
<div class="chapter-6 float-bottom">
<div class="panel box red">
<h4>
Red
</h4>
<p>
* warns angrily!
</p>
</div>
<div class="panel box yellow">
<h4>
Yellow
</h4>
<p>
* warns.
</p>
</div>
<div class="panel box green">
<h4>
Green
</h4>
<p>
* is a success!
</p>
</div>
<div class="panel box cyan">
<h4>
Cyan
</h4>
<p>
* informs...
</p>
</div>
<div class="panel box blue">
<h4>
Blue
</h4>
<p>
* annotates
</p>
</div>
<div class="panel box magenta">
<h4>
Magenta
</h4>
<p>
* asks a question?
</p>
</div>
</div>
</section>
</div>
<div class="chapter-3" id="chapter-separators">
<h2>
Separators
</h2>
<section class="panel box" id="panel-separator">
<h3>
Separator
</h3>
<p>
A <dfn id="dfn-separator">separator</dfn> is a
<b>horizontal line</b> that fills all the horizontal space available on a panel, forcing a line wrap.
</p>
<hr class="float-bottom">
<blockquote class="panel dialog">
Top Text
</blockquote>
</section>
<section class="panel box" id="panel-separator-light">
<h3>
Light separator
</h3>
<p>
A <dfn id="dfn-separator-light">light separator</dfn> is a
<b>less eye-catching separator</b>, to be used if the regular separator distracts too much from the flow of the text.
</p>
<hr class="separator-light float-bottom">
<blockquote class="panel dialog">
Bottom Text
</blockquote>
</section>
<section class="panel box" id="panel-separator-heavy">
<h3>
Heavy separator
</h3>
<p>
A <dfn id="dfn-separator-heavy">heavy separator</dfn> is a
<b>very eye-catching separator</b>, to be used if the regular separator isn't apparent enough.
</p>
<hr class="separator-heavy float-bottom">
<blockquote class="panel dialog">
Bottom Text 2: Electric Boogaloo
</blockquote>
</section>
</div>
<div class="chapter-2" id="chapter-lists">
<h2>
Lists
</h2>
<section class="panel box" id="panel-list-ordered">
<h3>
Ordered list
</h3>
<p>
A <dfn id="dfn-list-ordered">ordered list</dfn> displays a series of items whose order is relevant.
</p>
<ol>
<li>First</li>
<li>Second</li>
<li>Third</li>
<li>Fourth</li>
<li>Fifth</li>
<li>Sixth</li>
<li>Seventh</li>
<li>Eight</li>
<li>Ninth</li>
<li>Tenth</li>
<li>Eleventh</li>
<li>Twelfth</li>
</ol>
</section>
<section class="panel box" id="panel-list-unordered">
<h3>
Unordered list
</h3>
<p>
An <dfn id="dfn-list-unordered">unordered list</dfn> displays a series of items whose order is irrelevant.
</p>
<ul>
<li>First</li>
<li>Second</li>
<li>Third</li>
<li>Fourth</li>
<li>Fifth</li>
<li>Sixth</li>
<li>Seventh</li>
<li>Eight</li>
<li>Ninth</li>
<li>Tenth</li>
<li>Eleventh</li>
<li>Twelfth</li>
</ul>
</section>
</div>
<div class="chapter-2" id="chapter-glossaries">
<h2>
Glossaries
</h2>
<section class="panel box" id="panel-list-definition">
<h3>
Definition list
</h3>
<p>
A <dfn id="dfn-list-definition">definition list</dfn> displays a series of term-description pairs.
</p>
<dl>
<dt>
Term
</dt>
<dd>
Description
</dd>
<dt>
Other term
</dt>
<dd>
Other description
</dd>
</dl>
</section>
<section class="panel box" id="panel-details">
<h3>
Collapsible details
</h3>
<p>
A <dfn id="dfn-details">details</dfn> element <b>hides its contents</b>, displaying only a
<dfn id="dfn-summary">summary</dfn> until either the marker or the summary itself <b>is activated</b>.
</p>
<details>
<summary>Something</summary>
<p>
Something else
</p>
</details>
<details>
<summary>Something more</summary>
<p>
Something different
</p>
</details>
</section>
</div>
<div class="chapter-1" id="chapter-text">
<h2>
Text elements
</h2>
<section class="panel box" id="panel-anchor">
<h3>
<u>A</u>nchors
</h3>
<p>
An <dfn id="dfn-anchor">anchor</dfn> is an interactable element which can be clicked to <b>go to a different page</b>, or a
<b>different part of the same page</b>, or to <b>perform an action with a different application</b>!
</p>
<div class="panel">
<p>
Do you want to <a href="https://example.org/">go to example.org</a>?
</p>
<p>
Or perhaps to <a href="#chapter-glossaries">the chapter about glossaries</a>?
</p>
<p>
Or perhaps to <!--suppress HtmlUnknownTarget -->
<a href="magnet:?xt=urn:btih:dd8255ecdc7ca55fb0bbf81323d87062db1f6d1c&dn=Big+Buck+Bunny&tr=udp%3A%2F%2Fexplodie.org%3A6969&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.empire-js.us%3A1337&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=wss%3A%2F%2Ftracker.btorrent.xyz&tr=wss%3A%2F%2Ftracker.fastcast.nz&tr=wss%3A%2F%2Ftracker.openwebtorrent.com&ws=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2F&xs=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2Fbig-buck-bunny.torrent">download Big Buck Bunny</a> with a torrent client?
</p>
</div>
</section>
</div>
<div class="chapter-4">
<section class="panel box" id="panel-idiomatic">
<h3>
<u>I</u>diomatic expressions
</h3>
<p>
An <dfn id="dfn-idiomatic">idiomatic expression</dfn> should be used when a <b>domain-specific term</b> is used.
</p>
<div class="panel float-bottom">
<p>
This is an <i>idiomatic expression</i>.
</p>
</div>
</section>
<section class="panel box" id="panel-emphasis">
<h3>
<u>Em</u>phasis
</h3>
<p>
An <dfn id="dfn-emphasis">emphasis</dfn> should be used when a certain word should be <b>stressed more</b> than the others in a text.
</p>
<div class="panel float-bottom">
<p>
You're doing <em>what</em>?!
</p>
</div>
</section>
<section class="panel box" id="panel-attention">
<h3>
<u>B</u>ring attention
</h3>
<p>
An <dfn id="dfn-attention">attention-bringer</dfn> element denotes parts of text as <b>more important</b> than the others.
</p>
<div class="panel float-bottom">
<p>
I used attention-bringers basically <b>everywhere in this page</b>.
</p>
</div>
</section>
<section class="panel box" id="panel-strong">
<h3>
<u>Strong</u> importance
</h3>
<p>
A <dfn id="dfn-strong">strong importance</dfn> element denotes parts of text that are
<b>even more important</b> than the ones denoted by <i>attention-bringers</i>.
</p>
<div class="panel float-bottom">
<p>
Pls <strong>notice me</strong> senpai!!1!
</p>
</div>
</section>
<section class="panel box" id="panel-annotation">
<h3>
<u>U</u>narticulated annotations
</h3>
<p>
An <dfn id="dfn-annotation">unarticulated annotation</dfn> denotes parts of text that were given an
<b>annotation</b> without any comment.
</p>
<div class="panel float-bottom">
<p>
Just look at the <u>h</u>eaders of level <u>3</u> of these panels!
</p>
</div>
</section>
<section class="panel box" id="panel-strike">
<h3>
<u>S</u>trike
</h3>
<p>
A <dfn id="dfn-strike">strike</dfn> marks a part of text as <b>incorrect</b>.
</p>
<div class="panel float-bottom">
<p>
I'm <s>plotting to conquer the world</s> completely innocent and not an evil villain!
</p>
</div>
</section>
<section class="panel box" id="panel-insdel">
<h3>
<u>Ins</u>erted and <u>del</u>eted text
</h3>
<p>
When comparing changes to a text, parts of it can be marked as <dfn id="dfn-inserted">inserted</dfn> or
<dfn id="dfn-deleted">deleted</dfn>.
</p>
<div class="panel float-bottom">
<h4 style="text-align: left;">
Bluelib 5.0.0
</h4>
<ul>
<li>Added:
<ins>more bugs</ins>
</li>
<li>Removed:
<del>cool features</del>
</li>
</ul>
</div>
</section>
<section class="panel box" id="panel-small">
<h3>
<u>Small</u> comment
</h3>
<p>
A <dfn id="dfn-small">small comment</dfn> element denotes a part of a text as less important than the others.
</p>
<p>
It can be considered the opposite of <i>attention-bringers</i>, and similar to the <i>parenthesis</i> panel.
</p>
<div class="panel float-bottom">
<p>
Bluelib is great! <small>I'm joking, of course.</small>
</p>
</div>
</section>
<section class="panel box" id="panel-preformatted">
<h3>
<u>Pre</u>formatted text
</h3>
<p>
A <dfn id="dfn-preformatted">preformatted text</dfn> element denotes text where
<b>lines and positioning are significant</b>; this prevents them from being <b>rearranged</b> by the browser.
</p>
<p>
It should be used for <b>poetry</b>, <b>code</b>, <b>ASCII art</b>, <b>kaomoji</b>, etc.
</p>
<div class="panel float-bottom">
<pre> mm mmmm mmm mmmmm mmmmm
## #" " m" " # #
# # "#mmm # # #
#mm# "# # # #
# # "mmm#" "mmm" mm#mm mm#mm</pre>
</div>
</section>
<section class="panel box" id="panel-code">
<h3>
<u>Code</u>
</h3>
<p>
A <dfn id="dfn-code">code</dfn> element denotes that its contents are some kind of
<b>code</b> (probably belonging to a programming language).
</p>
<p>
If displayed as a block instead of inline, it should be used with a <i>preformatted text</i> element.
</p>
<div class="panel float-bottom">
<p>
How to create a <code>section.panel</code> with Bluelib:
</p>
<pre><code>&lt;div class=&quot;panel&quot;&gt;
&lt;p&gt;
Contents
&lt;/p&gt;
&lt;/div&gt;</code></pre>
</div>
</section>
<section class="panel box" id="panel-sample">
<h3>
<u>K</u>ey<u>b</u>oar<u>d</u> input and <u>samp</u>le output
</h3>
<p>
<dfn id="dfn-sample-input">Input samples</dfn> and
<dfn id="dfn-sample-output">output samples</dfn> from a computer have elements which denote them, and are formatted appropriately.
</p>
<p>
A <i>sample</i> inside another creates emphasises the individual element, creating a combination.
</p>
<div class="panel float-bottom">
<p>
If you press <kbd><kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>Del</kbd></kbd>, something will happen!
</p>
<p>
If you're on Windows, a menu will appear, and one of the options will say <samp>Task Manager</samp>.
</p>
</div>
</section>
<section class="panel box" id="panel-variable">
<h3>
Variables
</h3>
<p>
A <dfn id="dfn-variable">variable</dfn> denotes a placeholder for something in a formula or algorithm.
</p>
<div class="panel float-bottom">
<p>
<u>Sum</u>: <var>Whatever</var> + <var>Anything</var> = <var>Something</var>
</p>
</div>
</section>
<section class="panel box" id="panel-quote">
<h3>
Quotes and citations
</h3>
<p>
A <dfn id="dfn-quote">quote</dfn> element indicates an <b>inline quote</b>, and may be optionally include a
<dfn id="dfn-citation">citation</dfn> element indicating the <b>source of the quote</b>.
</p>
<div class="panel dialog float-bottom">
<p>
<q>Objection!</q><br/>
<cite>Phoenix Wright</cite>, Ace Attorney
</p>
</div>
</section>
<section class="panel box" id="panel-definition">
<h3>
Definitions
</h3>
<p>
A <dfn id="dfn-definition">definition</dfn> element indicates the <b>term that is being defined</b> in the contained paragraph.
</p>
<div class="panel float-bottom">
<p>
This <dfn>definition example</dfn> is getting a bit too <i>meta</i> for my tastes.
</p>
</div>
</section>
<section class="panel box" id="panel-abbreviation">
<h3>
Abbreviations
</h3>
<p>
An <dfn id="dfn-abbreviation">abbreviation</dfn> element marks its contents as an <b>acronym</b> or
<b>abbreviation</b> and allows the user to view the expanded abbreviation by hovering it with the mouse.
</p>
<p>
Note that no mobile browsers currently support this feature, so you'll have to
<b>manually provide an alternative</b> for mobile users to see the full abbreviation.
</p>
<div class="panel float-bottom">
<p>
Two companies against each other: <abbr class="blue" title="Builders League United">BLU</abbr> vs.
<abbr class="red" title="Reliable Excavation Demolition">RED</abbr>!
</p>
</div>
</section>
<section class="panel box" id="panel-ruby">
<h3>
Ruby
</h3>
<p>
A <dfn id="dfn-ruby">ruby text</dfn> element is <b>text with small annotations above</b>, commonly used in East Asian texts.
</p>
<div class="panel float-bottom">
<p style="font-size: xx-large;">
<ruby>
Mo
<rp>/</rp>
<rt>ˈ</rt>
<rp>/</rp>
de
<rp>/</rp>
<rt>dɪ</rt>
<rp>/</rp>
na
<rp>/</rp>
<rt></rt>
<rp>/</rp>
</ruby>
</p>
<p style="font-size: xx-large;">
<ruby>
<rp>(</rp>
<rt>kan</rt>
<rp>)</rp>
<rp>(</rp>
<rt>ji</rt>
<rp>)</rp>
</ruby>
</p>
<p style="font-size: xx-large;">
<ruby>
明日
<rp>(</rp>
<rt>ashita</rt>
<rp>)</rp>
</ruby>
</p>
</div>
</section>
</div>
<div class="chapter-2" id="chapter-tables">
<h2>
Tables
</h2>
<section class="panel box" id="panel-table">
<h3>
Table
</h3>
<p>
A <dfn id="dfn-table">table</dfn> is an element whose children are aligned in a grid.
</p>
<table>
<thead>
<tr>
<th>Emoji</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td>🙂</td>
<td>Slightly Smiling Face</td>
</tr>
<tr>
<td>🌑</td>
<td>New Moon</td>
</tr>
<tr>
<td>🌚</td>
<td>New Moon with Face</td>
</tr>
</tbody>
</table>
</section>
<section class="panel box" id="panel-tablecaption">
<h3>
Table caption
</h3>
<p>
Tables can have captions attached to their top.
</p>
<table>
<caption class="table-caption-top">
Apple emoji meanings
</caption>
<thead>
<tr>
<th>Emoji</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td>🍎</td>
<td>Red Apple</td>
</tr>
<tr>
<td>🍏</td>
<td>Green Apple</td>
</tr>
<tr>
<td></td>
<td>Hopefully a square with <code>F8FF</code> written inside it</td>
</tr>
</tbody>
</table>
<p>
Tables can also have headings and captions attached to their bottom.
</p>
<table>
<caption class="table-caption-bottom">
Pear emoji meanings
</caption>
<tbody>
<tr>
<td>🍐</td>
<td>Pear</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>Emoji</th>
<th>Meaning</th>
</tr>
</tfoot>
</table>
</section>
<table class="panel box" id="panel-tablepanel">
<caption class="table-caption-top">
<h3>
Table panels
</h3>
<p>
A <dfn id="dfn-tablepanel">table panel</dfn> is a special table which is rendered as a panel.
</p>
<p>
This table in particular is rendered as a box panel, and is about what two brothers think of the following objects:
</p>
</caption>
<thead>
<tr>
<th></th>
<th>Mario</th>
<th>Luigi</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Tables</th>
<td>They're cool and allow you to do cool stuff</td>
<td>They need chairs to be useful</td>
</tr>
<tr>
<th scope="row">Flexboxes</th>
<td>They're very useful</td>
<td>Not enough flexible for me</td>
</tr>
<tr>
<th scope="row">Grids</th>
<td>I love them</td>
<td>Bleargh</td>
</tr>
</tbody>
<tfoot>
<tr>
<th scope="row">Overall</th>
<td>&lt;3</td>
<td>0/10</td>
</tr>
</tfoot>
</table>
<table class="panel dialog" id="panel-tabledialogs">
<caption>
<h3>
Table dialogs
</h3>
<p>
Panel tables can also be dialogs and parentheses.
</p>
<p>
This table in particular is a dialog panel, and is about example features for a robot:
</p>
</caption>
<thead>
<tr>
<th>Feature</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Base</th>
<td>All the base features of your home robot!</td>
</tr>
<tr>
<th scope="row">Extra</th>
<td>Everything a robot should be able to do, plus an infinite bubblewrap dispenser!</td>
</tr>
<tr>
<th scope="row">Super</th>
<td>The robot is now armed with a non-free printer, and is ready to conquer the world!</td>
</tr>
</tbody>
<tfoot>
<tr>
<th scope="row">Ultimate</th>
<td>A time machine has been embedded into the robot, and it is free to use it at will.</td>
</tr>
</tfoot>
</table>
<table class="panel box" id="panel-cellmodifiers">
<caption class="table-caption-top">
<h3>
Cell modifiers
</h3>
<p>
Cells in tables have modifiers applied like all elements.
</p>
<p>
This table in particular is for a game of tic-tac-toe.
</p>
</caption>
<tbody>
<tr>
<td class="fade">O</td>
<td class="fade"></td>
<td class="mark">X</td>
</tr>
<tr>
<td class="fade">X</td>
<td class="mark">X</td>
<td class="fade">O</td>
</tr>
<tr>
<td class="mark">X</td>
<td class="fade">O</td>
<td class="fade"></td>
</tr>
</tbody>
</table>
</div>
<div class="chapter-2" id="chapter-images">
<h2>
Images
</h2>
<section class="panel box" id="panel-images-default">
<h3>
Default
</h3>
<p>
Images are <b>automatically centered and resized to fit</b> the panel they are in.
</p>
<img class="float-bottom" src="https://images.unsplash.com/photo-1593415553970-bd0145efc369" alt="Neon Ice Cream"/>
</section>
<section class="panel box" id="panel-limited">
<h3>
Limited
</h3>
<p>
Images can be <dfn id="dfn-limited">limited</dfn> to
<b>prevent them from taking up too much screen space</b>, like the previous one did.
</p>
<hr/>
<h4>
Half
</h4>
<p>
The following image has a limit of half the vertical viewport:
</p>
<img class="image-limit-half" src="https://images.unsplash.com/photo-1593415553970-bd0145efc369" alt="Neon ice cream"/>
<hr/>
<h3>
Quarter
</h3>
<p>
The following image has a limit of a quarter of the vertical viewport:
</p>
<img class="image-limit-quarter" src="https://images.unsplash.com/photo-1593415553970-bd0145efc369" alt="Neon ice cream"/>
</section>
</div>
<div class="chapter-1" id="chapter-inputs">
<h2>
Inputs
</h2>
<section class="panel box" id="panel-input">
<h3>
Input
</h3>
<p>
An <dfn id="dfn-input">Input</dfn> is an interactive element which allows the user to interact with the web page.
</p>
</section>
</div>
<div class="chapter-2">
<section class="panel box" id="panel-field">
<h3>
Field
</h3>
<p>
A <dfn id="dfn-field">Field</dfn> is an <i>Input</i> which allows the user to enter <b>single-line</b> free-form text.
</p>
<form class="panel">
<p>
<label>
First name
<input type="text" placeholder="Text">
</label>
</p>
<p>
<label>
Last name
<input type="text" placeholder="Text">
</label>
</p>
<p>
<label>
Nickname
<input type="text" placeholder="Text">
</label>
</p>
</form>
<hr/>
<h4>
Special types of <i>Field</i>s
</h4>
<p>
A <i>Field</i> may require a particular
<a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#type">type</a> of data, such as an email or a phone number.
</p>
<form class="panel">
<p>
<label>
Email
<input type="email" placeholder="Email">
</label>
</p>
<p>
<label>
Password
<input type="password" placeholder="Password">
</label>
</p>
<p>
<label>
Age
<input type="number" placeholder="Number">
</label>
</p>
<p>
<label>
Phone
<input type="tel" placeholder="Telephone">
</label>
</p>
<p>
<label>
Website
<input type="url" placeholder="htcpcp://kitchen.localdomain/brew">
</label>
</p>
<p>
<label>
Birthday
<input type="date" placeholder="Date">
</label>
</p>
<p>
<label>
Had lunch at
<input type="time" placeholder="Time">
</label>
</p>
<p>
<label>
Last party attended
<input type="datetime-local" placeholder="Date & time">
</label>
</p>
<p>
<label>
Search for a friend
<input type="search" placeholder="Search">
</label>
</p>
</form>
</section>
<section class="panel box" id="panel-area">
<h3>
Area
</h3>
<p>
An <dfn id="dfn-area">Area</dfn> is a resizable <i>Input</i> which allows the user to enter <b>multi-line</b> free-form text.
</p>
<form class="panel">
<p>
<label>
Interests
<textarea placeholder="Text"></textarea>
</label>
</p>
</form>
</section>
<section class="panel box" id="panel-select">
<h3>
Select
</h3>
<p>
A <dfn id="dfn-select">Select</dfn> is an <i>Input</i> which allow the user to select between <b>one of multiple options</b>.
</p>
<form class="panel float-bottom">
<p>
<label>
Favourite primary color
<select>
<optgroup label="RGB">
<option>Red</option>
<option>Green</option>
<option>Blue</option>
</optgroup>
<optgroup label="CYM">
<option>Cyan</option>
<option>Yellow</option>
<option>Magenta</option>
</optgroup>
</select>
</label>
</p>
</form>
</section>
<section class="panel box" id="panel-multiselect">
<h3>
Multiselect
</h3>
<p>
A <dfn id="dfn-multiselect">Multiselect</dfn> is an <i>Input</i> which allows the user to <b>enable or disable multiple options</b>.
</p>
<p>
Be aware that the average user will probably not know how to interact with the
<i>Multiselect</i>: to select options not adjacent to each other on a desktop browser, it requires holding the <kbd>Ctrl</kbd> key.
</p>
<form class="panel float-bottom">
<p>
<label>
Defeated rivals
<select multiple>
<optgroup label="1st generation">
<option>Blue</option>
</optgroup>
<optgroup label="2nd generation">
<option>Silver</option>
</optgroup>
<optgroup label="3rd generation">
<option>Brendan</option>
<option>May</option>
</optgroup>
<optgroup label="4th generation">
<option>Barry</option>
<option>Silver</option>
</optgroup>
<optgroup label="5th generation">
<option>Cheren</option>
<option>Bianca</option>
<option>Hugh</option>
</optgroup>
<option>Other</option>
</select>
</label>
</p>
</form>
</section>
<section class="panel box" id="panel-radio">
<h3>
Radio
</h3>
<p>
<dfn id="dfn-radio">Radios</dfn> are <i>Input</i>s which, like a <i>Select</i>, allow the user to select between
<b>one of multiple options</b> when grouped together.
</p>
<form class="panel float-bottom">
<p>
<label>
<input type="radio" name="example-size">
XL
</label>
</p>
<p>
<label>
<input type="radio" name="example-size">
L
</label>
</p>
<p>
<label>
<input type="radio" name="example-size">
M
</label>
</p>
<p>
<label>
<input type="radio" name="example-size">
S
</label>
</p>
<p>
<label>
<input type="radio" name="example-size">
XS
</label>
</p>
</form>
</section>
<section class="panel box" id="panel-checkbox">
<h3>
Checkbox
</h3>
<p>
<dfn id="dfn-checkbox">Checkboxes</dfn> are <i>Input</i>s which, like a <i>Multiselect</i>, allows the user to
<b>enable or disable multiple options</b> when grouped together.
</p>
<form class="panel float-bottom">
<p>
<label>
<input type="checkbox">
Monday
</label>
</p>
<p>
<label>
<input type="checkbox">
Tuesday
</label>
</p>
<p>
<label>
<input type="checkbox">
Wednesday
</label>
</p>
<p>
<label>
<input type="checkbox">
Thursday
</label>
</p>
<p>
<label>
<input type="checkbox">
Friday
</label>
</p>
<p>
<label>
<input type="checkbox">
Saturday
</label>
</p>
<p>
<label>
<input type="checkbox">
Sunday
</label>
</p>
</form>
</section>
<section class="panel box" id="panel-color">
<h3>
Color
</h3>
<p>
A <dfn id="dfn-color-input">color input</dfn> is an <i>Input</i> which allows the user to select a RGB color.
</p>
<p>
Since browsers usually delegate the rendering of this element to the operating system, it cannot be styled.
</p>
<form class="panel float-bottom">
<p>
<label>
Favourite color
<input type="color">
</label>
</p>
</form>
</section>
<section class="panel box" id="panel-file">
<h3>
File
</h3>
<p>
A <dfn id="dfn-file-input">file input</dfn> is an <i>Input</i> which allows the user to <b>upload a file</b> from their computer.
</p>
<p>
Since browsers usually delegate the rendering of this element to the operating system, it cannot be styled.
</p>
<form class="panel float-bottom">
<p>
<label>
Attached homework
<input type="file">
</label>
</p>
</form>
</section>
<section class="panel box" id="panel-range">
<h3>
Range
</h3>
<p>
A <dfn id="dfn-range">Range</dfn> is an <i>Input</i> which allows the user to inaccurately <b>select a value from a given range</b>.
</p>
<form class="panel float-bottom">
<p>
<label>
No sugar
<input type="range">
Only sugar
</label>
</p>
</form>
</section>
<section class="panel box" id="panel-button">
<h3>
Button
</h3>
<p>
A <dfn id="dfn-button">Button</dfn> is an <i>Input</i> which the user can click to <b>trigger an action</b>.
</p>
<form class="panel float-bottom">
<p>
<label>
Space Station Controls
<button>Launch</button>
</label>
</p>
<p>
<label>
Food Delivery
</label>
<button>Lunch</button>
</p>
</form>
</section>
</div>
<div class="chapter-1" id="chapter-forms">
<h2>
Forms
</h2>
<section class="panel box" id="panel-form">
<h3>
Form
</h3>
<p>
An <dfn id="dfn-form">form</dfn> is a non-interactive element which <b>positions <i>Inputs</i></b> in commonly used ways.
</p>
</section>
<section class="panel box" id="panel-form-flex">
<h3>
Flex form
</h3>
<p>
A <dfn id="dfn-form-flex">flex form</dfn> is a <b>block form</b> aligning labels and inputs to a pseudo-grid.
</p>
<form class="panel form-flex">
<h4>
Life University Enrolment Form
</h4>
<p>
Please enter your personal details here:
</p>
<label>
<span>First name</span>
<input type="text" placeholder="Mario">
<span></span>
</label>
<label>
<span>Last name</span>
<input type="text" placeholder="Rossi">
<span></span>
</label>
<label>
<span>Second name</span>
<input type="text" placeholder="Luigi">
<span><small>Silver medal winning name</small></span>
</label>
<p>
Now, please enter some information about yourself:
</p>
<div class="form-flex-choice">
<span>Interests</span>
<div>
<label>
<input type="checkbox" name="interests"> Living
</label>
<label>
<input type="checkbox" name="interests"> Sleeping
</label>
<label>
<input type="checkbox" name="interests"> Not dying
</label>
<label>
<input type="checkbox" name="interests"> Conspiracy theories
</label>
<label>
<input type="checkbox" name="interests"> Witchcraft
</label>
<label>
<input type="checkbox" name="interests"> Weird shenanigans
</label>
</div>
<span></span>
</div>
<div class="form-flex-choice">
<span>Riches</span>
<div>
<label>
<input type="radio" name="riches"> None
</label>
<label>
<input type="radio" name="riches"> Few
</label>
<label>
<input type="radio" name="riches"> Many
</label>
</div>
<span></span>
</div>
<p>
Finally, some more flavour questions:
</p>
<label>
<span>Lazyness 0%</span>
<input type="range">
<span>100%</span>
</label>
<label>
<span>Birthday</span>
<input type="date">
<span><small>feel old yet?</small></span>
</label>
<label>
<span></span>
<input type="text" placeholder="Not at all">
<span>Right alignment</span>
</label>
<div class="form-flex-choice">
<span>Your bets</span>
<input type="text" placeholder="1st">
<input type="text" placeholder="2nd">
<input type="text" placeholder="3rd">
<span></span>
</div>
<p>
Finally, you can submit the form, and see whether you'll be accepted or not:
</p>
<label>
<span></span>
<input type="button" value="Submit">
<span></span>
</label>
</form>
</section>
</div>
<section class="panel box" id="panel-form-row">
<h3>
Row form
</h3>
<p>
A <dfn id="dfn-form-row">row form</dfn> is a <b>block form</b> aligning elements to a single horizontal row.
</p>
<form class="panel form-row">
<span>Login</span>
<input type="text" placeholder="Username">
<input type="password" placeholder="Password">
<input type="submit" value="Login">
</form>
</section>
</main>
<footer>
<p>
© <a href="https://steffo.eu">Stefano Pigozzi</a> -
<a href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPL 3.0</a> -
<a href="https://github.com/Steffo99/bluelib">GitHub</a>
</p>
</footer>
</body>
</html>