A truly tiny UI Kit
WIP.
CSS Link: https://ghraw.novafurry.workers.dev/gist/novafurry/96284d07080767edd56d2ca719f4cfe5/raw/77704dc0c33b33931aa2b2750cfd5ce551f064dd/tuik.css (passed thru my ghraw service as normal raw is text/plain bleh)
A truly tiny UI Kit
WIP.
CSS Link: https://ghraw.novafurry.workers.dev/gist/novafurry/96284d07080767edd56d2ca719f4cfe5/raw/77704dc0c33b33931aa2b2750cfd5ce551f064dd/tuik.css (passed thru my ghraw service as normal raw is text/plain bleh)
| <!-- tuik HTML template. --> | |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8" /> | |
| <title>TUIK Preview</title> | |
| <link rel="stylesheet" href="https://ghraw.novafurry.workers.dev/gist/novafurry/96284d07080767edd56d2ca719f4cfe5/raw/77704dc0c33b33931aa2b2750cfd5ce551f064dd/tuik.css" /> | |
| </head> | |
| <body> | |
| <nav> | |
| <h1>TUIK Preview</h1> | |
| <ul> | |
| <li><a href="#" active>Nav Link 1</a></li> | |
| <li><a href="#">Nav Link 2</a></li> | |
| <li><a href="#">Nav Link 3</a></li> | |
| </ul> | |
| </nav> | |
| <main> | |
| <article> | |
| <h2>Typography</h2> | |
| <p> | |
| This is a paragraph with <strong>strong</strong>, <em>emphasis</em>, | |
| <a href="#">a link</a>, and <code>inline code</code>. | |
| </p> | |
| <blockquote>This is a blockquote.</blockquote> | |
| <pre><code>preformatted code block</code></pre> | |
| <ul> | |
| <li>Unordered list item</li> | |
| <li>Another item</li> | |
| </ul> | |
| <ol> | |
| <li>Ordered list item</li> | |
| <li>Another item</li> | |
| </ol> | |
| <dl> | |
| <dt>Definition term</dt> | |
| <dd>Definition description</dd> | |
| </dl> | |
| </article> | |
| <article> | |
| <h2>Forms</h2> | |
| <form> | |
| <p> | |
| <label>Text <input type="text" placeholder="Text" /></label> | |
| </p> | |
| <p> | |
| <label | |
| >Password <input type="password" placeholder="Password" | |
| /></label> | |
| </p> | |
| <p> | |
| <label>Email <input type="email" placeholder="Email" /></label> | |
| </p> | |
| <p> | |
| <label>Number <input type="number" value="5" /></label> | |
| </p> | |
| <p> | |
| <label>Range <input type="range" /></label> | |
| </p> | |
| <p> | |
| <label>File <input type="file" /></label> | |
| </p> | |
| <p> | |
| <label><input type="checkbox" /> Checkbox</label> | |
| </p> | |
| <p> | |
| <label><input type="radio" name="r" /> Radio 1</label> | |
| <label><input type="radio" name="r" /> Radio 2</label> | |
| </p> | |
| <p> | |
| <label>Textarea <textarea></textarea></label> | |
| </p> | |
| <p> | |
| <label | |
| >Select | |
| <select> | |
| <option>Option 1</option> | |
| <option>Option 2</option> | |
| </select> | |
| </label> | |
| </p> | |
| <p> | |
| <button type="button">Button</button> | |
| <button type="submit">Submit</button> | |
| <button type="reset">Reset</button> | |
| </p> | |
| </form> | |
| </article> | |
| <article> | |
| <h2>Tables</h2> | |
| <table> | |
| <thead> | |
| <tr> | |
| <th>Header 1</th> | |
| <th>Header 2</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td>Cell A1</td> | |
| <td>Cell A2</td> | |
| </tr> | |
| <tr> | |
| <td>Cell B1</td> | |
| <td>Cell B2</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| </article> | |
| <article> | |
| <h2>Components</h2> | |
| <section> | |
| <h3>Card Example</h3> | |
| <p> | |
| Cards can be represented with <code><section></code> or | |
| <code><article></code>. | |
| </p> | |
| </section> | |
| <div role="alert">This is an alert message.</div> | |
| <progress value="50" max="100"></progress> | |
| <meter value="0.7">70%</meter> | |
| <details> | |
| <summary>Accordion (details/summary)</summary> | |
| <p>Hidden content</p> | |
| </details> | |
| <dialog open> | |
| <p>This is a modal dialog.</p> | |
| <button>Close</button> | |
| </dialog> | |
| <nav aria-label="Breadcrumb"> | |
| <ol> | |
| <li><a href="#">Home</a></li> | |
| <li><a href="#">Section</a></li> | |
| <li>Current</li> | |
| </ol> | |
| </nav> | |
| <nav aria-label="Pagination"> | |
| <ul> | |
| <li><a href="#">« Prev</a></li> | |
| <li><a href="#">1</a></li> | |
| <li><a href="#">2</a></li> | |
| <li><a href="#">Next »</a></li> | |
| </ul> | |
| </nav> | |
| </article> | |
| <article> | |
| <h2>Tabs</h2> | |
| <section> | |
| <details tab open> | |
| <summary>Tab One</summary> | |
| <p>Content for Tab One.</p> | |
| </details> | |
| <details tab> | |
| <summary>Tab Two</summary> | |
| <p>Content for Tab Two.</p> | |
| </details> | |
| <details tab> | |
| <summary>Tab Three</summary> | |
| <p>Content for Tab Three.</p> | |
| </details> | |
| </section> | |
| </article> | |
| </main> | |
| <aside> | |
| <h2>Sidebar</h2> | |
| <ul> | |
| <li><a href="#">Sidebar link 1</a></li> | |
| <li><a href="#">Sidebar link 2</a></li> | |
| </ul> | |
| </aside> | |
| <footer> | |
| <p>Footer content © 2025</p> | |
| </footer> | |
| </body> | |
| </html> |
| /* tuik v0.0 by github.com/novafurry */ | |
| :root { | |
| background-color: #fdfaf5; | |
| font-family: system-ui; | |
| } | |
| nav:first-child { | |
| border-bottom: 3px #474747 solid; | |
| width: 100vw; | |
| background-color: #fdfaf5; | |
| position: fixed; | |
| left: 0px; | |
| top: 0px; | |
| padding: 5px; | |
| } | |
| nav ul a[active] { | |
| font-weight: bold; | |
| } | |
| nav ul a:not([active]):hover { | |
| font-weight: bold; | |
| } | |
| nav ul:has(:hover) a[active] { | |
| font-weight: normal; | |
| } | |
| nav * { | |
| display: inline-block; | |
| margin: 0px; | |
| } | |
| nav ul { | |
| float: right; | |
| list-style-type: none; | |
| margin-right: 30px; | |
| margin-top: auto; | |
| margin-bottom: auto; | |
| } | |
| body { | |
| margin-top: 50px; | |
| } | |
| blockquote { | |
| margin: 0px; | |
| padding: 10px; | |
| border-left: #000 3px solid; | |
| } | |
| code { | |
| background-color: #0000001e; | |
| padding: 10px; | |
| } | |
| p code { | |
| padding: 4px; | |
| } | |
| dl { | |
| padding: 10px; | |
| background-color: #0000001e; | |
| width: fit-content; | |
| min-width: 45%; | |
| } | |
| dl dt { | |
| font-size: 1.4em; | |
| font-weight: bold; | |
| font-style: italic; | |
| } | |
| dl dd { | |
| margin-left: 10px; | |
| } | |
| input:not([type="file"], [type="range"]), | |
| button { | |
| outline: none; | |
| background-color: #fdfaf5; | |
| border: 2px solid black; | |
| } | |
| button { | |
| padding: 3px; | |
| border-radius: 2px; | |
| } | |
| /*********** Baseline, reset styles ***********/ | |
| input[type="range"] { | |
| -webkit-appearance: none; | |
| appearance: none; | |
| background: transparent; | |
| cursor: pointer; | |
| width: 25rem; | |
| } | |
| /* Removes default focus */ | |
| input[type="range"]:focus { | |
| outline: none; | |
| } | |
| /******** Chrome, Safari, Opera and Edge Chromium styles ********/ | |
| /* slider track */ | |
| input[type="range"]::-webkit-slider-runnable-track { | |
| background-color: #000000; | |
| border-radius: 0rem; | |
| height: 0.5rem; | |
| } | |
| /* slider thumb */ | |
| input[type="range"]::-webkit-slider-thumb { | |
| -webkit-appearance: none; /* Override default look */ | |
| appearance: none; | |
| margin-top: -4px; /* Centers thumb on the track */ | |
| background-color: #000000; | |
| border-radius: 0rem; | |
| height: 1rem; | |
| width: 1rem; | |
| } | |
| input[type="range"]:focus::-webkit-slider-thumb { | |
| outline-offset: 0.125rem; | |
| } | |
| /*********** Firefox styles ***********/ | |
| /* slider track */ | |
| input[type="range"]::-moz-range-track { | |
| background-color: #000000; | |
| border-radius: 0rem; | |
| height: 0.5rem; | |
| } | |
| /* slider thumb */ | |
| input[type="range"]::-moz-range-thumb { | |
| background-color: #000000; | |
| border: 2px solid #fdfaf5; /*Removes extra border that FF applies*/ | |
| border-radius: 0rem; | |
| height: 1rem; | |
| width: 1rem; | |
| } | |
| input[type="range"]:focus::-moz-range-thumb { | |
| outline-offset: 0.125rem; | |
| } |