diff --git a/README.md b/README.md index f9b59dde..ba5be7d3 100644 --- a/README.md +++ b/README.md @@ -126,10 +126,10 @@ Clone the repo and re-clone the wiki contents. ```sh $ git clone git@github.com:USER_NAME/undernet.git $ cd undernet/ -$ npm run setup +$ npm install ``` -The site is both a demo and marketing tool. It is built with my own webpack setup called [Pulsar](https://github.com/geotrev/pulsar). It's basically just Webpack + React, so don't panic. +The site is both a demo and marketing tool. It is built with my own webpack setup called [Pulsar](https://github.com/geotrev/pulsar). It's basically just Webpack + React, so don't panic. :) ### Run the dev server @@ -183,18 +183,19 @@ $ npm run js:watch ### New releases -New releases are simply zipped and compiled files. +New releases are simply zipped and compiled files to be distributed on npm, then for use on a CDN, such as jsdelivr. -To increment the version of the release, run the following command, where `VERSION` is the semver value. E.g., `--tag=2.3.0`. The script will find specific files: `package.json`, `scss/undernet.scss`, and `docs/introduction.md`. It then increments the version, creates new sub-resource integrity hashes, and updates unpkg.com links for CDN access. +To run a release build, run the following two commands, where `VERSION` is the semver value incremented from `package.json`: ```sh $ update-version --tag=VERSION +$ npm run build:release ``` -Then to build assets: +These will do three things: -```sh -$ npm run build:release -``` +1. Increment the project version across multiple files that require it. +2. Build all assets with the new version. +3. Generate new sha-256 hashes for CDN access (see `docs/introduction.md`, "Get Started" section). -All that's left is a `npm publish` and the new version is out in the wild! +All that's left is a `npm publish` and the new version is out in the wild! Crazy cool! diff --git a/dist/undernet.bundle.js b/dist/undernet.bundle.js index 38a9c9d6..ed8cdbc6 100644 --- a/dist/undernet.bundle.js +++ b/dist/undernet.bundle.js @@ -1,6 +1,6 @@ /*! * @license MIT (https://github.com/geotrev/undernet/blob/master/LICENSE) - * Undernet v2.3.0 (https://undernet.io) + * Undernet v2.4.1 (https://undernet.io) * Copyright 2017-2018 George Treviranus */ (function (global, factory) { diff --git a/dist/undernet.bundle.min.js b/dist/undernet.bundle.min.js index a9947d96..f155d999 100644 --- a/dist/undernet.bundle.min.js +++ b/dist/undernet.bundle.min.js @@ -1,6 +1,6 @@ /*! * @license MIT (https://github.com/geotrev/undernet/blob/master/LICENSE) - * Undernet v2.3.0 (https://undernet.io) + * Undernet v2.4.1 (https://undernet.io) * Copyright 2017-2018 George Treviranus */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.undernet=e()}(this,function(){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;ncode,pre .code,.pre>code,.pre .code{word-break:normal;width:auto}strong,.strong{font-size:inherit;font-style:normal;font-weight:bold}em,.em{font-size:inherit;font-style:italic;font-weight:normal}mark,.mark{font-size:inherit;padding:0;background:khaki;color:#222}small,.small{font-weight:inherit;font-size:75%}a{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:normal;color:#de8bf2;text-decoration:none}a:visited{color:#de8bf2}a:hover,a:focus{color:#d15ded;text-decoration:underline}a:active{color:#d15ded}input[type="button"],input[type="submit"],input[type="file"],input[type="reset"],button,.button{-webkit-appearance:none;align-self:flex-start;border-radius:4px;border-style:solid;border-width:2px;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:normal;line-height:1.5;margin:0 0 16px 0;padding:10px 16px;text-align:center;text-decoration:none;transition:cubic-bezier(0.12, 0.72, 0.58, 1.03) 0.2s;background:#fff;color:#222;border-color:#888;box-shadow:none;text-decoration:none}input[type="button"]:visited,input[type="submit"]:visited,input[type="file"]:visited,input[type="reset"]:visited,button:visited,.button:visited{background:#fff;color:#222;border-color:#888;box-shadow:none;text-decoration:none}input[type="button"]:hover,input[type="submit"]:hover,input[type="file"]:hover,input[type="reset"]:hover,button:hover,.button:hover{background:#fff;color:#222;border-color:#666;box-shadow:none;text-decoration:none}input[type="button"]:active,input[type="submit"]:active,input[type="file"]:active,input[type="reset"]:active,button:active,.button:active{background:#f8f8f8;color:#222;border-color:#444;box-shadow:none;text-decoration:none}input[type="button"]:focus,input[type="submit"]:focus,input[type="file"]:focus,input[type="reset"]:focus,button:focus,.button:focus{background:#fff;color:#222;border-color:#666;box-shadow:none;text-decoration:none}input[type="button"].small,input[type="submit"].small,input[type="file"].small,input[type="reset"].small,button.small,.button.small{padding:8px 14px;font-size:14px}input[type="button"].medium,input[type="submit"].medium,input[type="file"].medium,input[type="reset"].medium,button.medium,.button.medium{padding:12px 18px;font-size:16px}input[type="button"].large,input[type="submit"].large,input[type="file"].large,input[type="reset"].large,button.large,.button.large{padding:16px 22px;font-size:20px}input[type="button"].huge,input[type="submit"].huge,input[type="file"].huge,input[type="reset"].huge,button.huge,.button.huge{padding:20px 30px;font-size:24px}input[type="button"].wide,input[type="submit"].wide,input[type="file"].wide,input[type="reset"].wide,button.wide,.button.wide{display:block;max-width:100%;width:100%}input[type="button"].primary,input[type="submit"].primary,input[type="file"].primary,input[type="reset"].primary,button.primary,.button.primary{background:#d874f0;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].primary:visited,input[type="submit"].primary:visited,input[type="file"].primary:visited,input[type="reset"].primary:visited,button.primary:visited,.button.primary:visited{background:#d874f0;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].primary:hover,input[type="submit"].primary:hover,input[type="file"].primary:hover,input[type="reset"].primary:hover,button.primary:hover,.button.primary:hover{background:#d15ded;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].primary:active,input[type="submit"].primary:active,input[type="file"].primary:active,input[type="reset"].primary:active,button.primary:active,.button.primary:active{background:#ce54ec;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].primary:focus,input[type="submit"].primary:focus,input[type="file"].primary:focus,input[type="reset"].primary:focus,button.primary:focus,.button.primary:focus{background:#d15ded;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].secondary,input[type="submit"].secondary,input[type="file"].secondary,input[type="reset"].secondary,button.secondary,.button.secondary{background:transparent;color:#d874f0;border-color:#d874f0;box-shadow:none}input[type="button"].secondary:visited,input[type="submit"].secondary:visited,input[type="file"].secondary:visited,input[type="reset"].secondary:visited,button.secondary:visited,.button.secondary:visited{background:transparent;color:#d874f0;border-color:#d874f0;box-shadow:none}input[type="button"].secondary:hover,input[type="submit"].secondary:hover,input[type="file"].secondary:hover,input[type="reset"].secondary:hover,button.secondary:hover,.button.secondary:hover{background:transparent;color:#d15ded;border-color:#d15ded;box-shadow:none}input[type="button"].secondary:active,input[type="submit"].secondary:active,input[type="file"].secondary:active,input[type="reset"].secondary:active,button.secondary:active,.button.secondary:active{background:transparent;color:#ce54ec;border-color:#ce54ec;box-shadow:none}input[type="button"].secondary:focus,input[type="submit"].secondary:focus,input[type="file"].secondary:focus,input[type="reset"].secondary:focus,button.secondary:focus,.button.secondary:focus{background:transparent;color:#d15ded;border-color:#d15ded;box-shadow:none}input[type="button"].tertiary,input[type="submit"].tertiary,input[type="file"].tertiary,input[type="reset"].tertiary,button.tertiary,.button.tertiary{background:transparent;color:#d15ded;border-color:transparent;box-shadow:none}input[type="button"].tertiary:visited,input[type="submit"].tertiary:visited,input[type="file"].tertiary:visited,input[type="reset"].tertiary:visited,button.tertiary:visited,.button.tertiary:visited{background:transparent;color:#d15ded;border-color:transparent;box-shadow:none}input[type="button"].tertiary:hover,input[type="submit"].tertiary:hover,input[type="file"].tertiary:hover,input[type="reset"].tertiary:hover,button.tertiary:hover,.button.tertiary:hover{background:rgba(222,222,222,0.2);color:#d15ded;border-color:transparent;box-shadow:none}input[type="button"].tertiary:active,input[type="submit"].tertiary:active,input[type="file"].tertiary:active,input[type="reset"].tertiary:active,button.tertiary:active,.button.tertiary:active{background:rgba(222,222,222,0.3);color:#d15ded;border-color:transparent;box-shadow:none}input[type="button"].tertiary:focus,input[type="submit"].tertiary:focus,input[type="file"].tertiary:focus,input[type="reset"].tertiary:focus,button.tertiary:focus,.button.tertiary:focus{background:rgba(222,222,222,0.2);color:#d15ded;border-color:transparent;box-shadow:none}input[type="button"].inverted,input[type="submit"].inverted,input[type="file"].inverted,input[type="reset"].inverted,button.inverted,.button.inverted{background:#ebebeb;color:#222;border-color:transparent;box-shadow:none}input[type="button"].inverted:visited,input[type="submit"].inverted:visited,input[type="file"].inverted:visited,input[type="reset"].inverted:visited,button.inverted:visited,.button.inverted:visited{background:#ebebeb;color:#222;border-color:transparent;box-shadow:none}input[type="button"].inverted:hover,input[type="submit"].inverted:hover,input[type="file"].inverted:hover,input[type="reset"].inverted:hover,button.inverted:hover,.button.inverted:hover{background:#fff;color:#222;border-color:transparent;box-shadow:none}input[type="button"].inverted:active,input[type="submit"].inverted:active,input[type="file"].inverted:active,input[type="reset"].inverted:active,button.inverted:active,.button.inverted:active{background:#dedede;color:#222;border-color:transparent;box-shadow:none}input[type="button"].inverted:focus,input[type="submit"].inverted:focus,input[type="file"].inverted:focus,input[type="reset"].inverted:focus,button.inverted:focus,.button.inverted:focus{background:#fff;color:#222;border-color:transparent;box-shadow:none}input[type="button"].inverted-outline,input[type="submit"].inverted-outline,input[type="file"].inverted-outline,input[type="reset"].inverted-outline,button.inverted-outline,.button.inverted-outline{background:transparent;color:#fff;border-color:#dedede;box-shadow:none}input[type="button"].inverted-outline:visited,input[type="submit"].inverted-outline:visited,input[type="file"].inverted-outline:visited,input[type="reset"].inverted-outline:visited,button.inverted-outline:visited,.button.inverted-outline:visited{background:transparent;color:#fff;border-color:#dedede;box-shadow:none}input[type="button"].inverted-outline:hover,input[type="submit"].inverted-outline:hover,input[type="file"].inverted-outline:hover,input[type="reset"].inverted-outline:hover,button.inverted-outline:hover,.button.inverted-outline:hover{background:transparent;color:#fff;border-color:#fff;box-shadow:none}input[type="button"].inverted-outline:active,input[type="submit"].inverted-outline:active,input[type="file"].inverted-outline:active,input[type="reset"].inverted-outline:active,button.inverted-outline:active,.button.inverted-outline:active{background:transparent;color:#fff;border-color:#d9d9d9;box-shadow:none}input[type="button"].inverted-outline:focus,input[type="submit"].inverted-outline:focus,input[type="file"].inverted-outline:focus,input[type="reset"].inverted-outline:focus,button.inverted-outline:focus,.button.inverted-outline:focus{background:transparent;color:#fff;border-color:#fff;box-shadow:none}input[type="button"].warning,input[type="submit"].warning,input[type="file"].warning,input[type="reset"].warning,button.warning,.button.warning{background:#ede175;color:#000111;border-color:transparent;box-shadow:none}input[type="button"].warning:visited,input[type="submit"].warning:visited,input[type="file"].warning:visited,input[type="reset"].warning:visited,button.warning:visited,.button.warning:visited{background:#ede175;color:#000111;border-color:transparent;box-shadow:none}input[type="button"].warning:hover,input[type="submit"].warning:hover,input[type="file"].warning:hover,input[type="reset"].warning:hover,button.warning:hover,.button.warning:hover{background:khaki;color:#000111;border-color:transparent;box-shadow:none}input[type="button"].warning:active,input[type="submit"].warning:active,input[type="file"].warning:active,input[type="reset"].warning:active,button.warning:active,.button.warning:active{background:#efe483;color:#000111;border-color:transparent;box-shadow:none}input[type="button"].warning:focus,input[type="submit"].warning:focus,input[type="file"].warning:focus,input[type="reset"].warning:focus,button.warning:focus,.button.warning:focus{background:khaki;color:#000111;border-color:transparent;box-shadow:none}input[type="button"].success,input[type="submit"].success,input[type="file"].success,input[type="reset"].success,button.success,.button.success{background:#59b300;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].success:visited,input[type="submit"].success:visited,input[type="file"].success:visited,input[type="reset"].success:visited,button.success:visited,.button.success:visited{background:#59b300;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].success:hover,input[type="submit"].success:hover,input[type="file"].success:hover,input[type="reset"].success:hover,button.success:hover,.button.success:hover{background:#6c0;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].success:active,input[type="submit"].success:active,input[type="file"].success:active,input[type="reset"].success:active,button.success:active,.button.success:active{background:#61c200;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].success:focus,input[type="submit"].success:focus,input[type="file"].success:focus,input[type="reset"].success:focus,button.success:focus,.button.success:focus{background:#6c0;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].destroy,input[type="submit"].destroy,input[type="file"].destroy,input[type="reset"].destroy,button.destroy,.button.destroy{background:#fc4f4f;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].destroy:visited,input[type="submit"].destroy:visited,input[type="file"].destroy:visited,input[type="reset"].destroy:visited,button.destroy:visited,.button.destroy:visited{background:#fc4f4f;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].destroy:hover,input[type="submit"].destroy:hover,input[type="file"].destroy:hover,input[type="reset"].destroy:hover,button.destroy:hover,.button.destroy:hover{background:#fc6868;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].destroy:active,input[type="submit"].destroy:active,input[type="file"].destroy:active,input[type="reset"].destroy:active,button.destroy:active,.button.destroy:active{background:#fc5e5e;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].destroy:focus,input[type="submit"].destroy:focus,input[type="file"].destroy:focus,input[type="reset"].destroy:focus,button.destroy:focus,.button.destroy:focus{background:#fc6868;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].notice,input[type="submit"].notice,input[type="file"].notice,input[type="reset"].notice,button.notice,.button.notice{background:#3f75a2;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].notice:visited,input[type="submit"].notice:visited,input[type="file"].notice:visited,input[type="reset"].notice:visited,button.notice:visited,.button.notice:visited{background:#3f75a2;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].notice:hover,input[type="submit"].notice:hover,input[type="file"].notice:hover,input[type="reset"].notice:hover,button.notice:hover,.button.notice:hover{background:#4682b4;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].notice:active,input[type="submit"].notice:active,input[type="file"].notice:active,input[type="reset"].notice:active,button.notice:active,.button.notice:active{background:#437dad;color:#fff;border-color:transparent;box-shadow:none}input[type="button"].notice:focus,input[type="submit"].notice:focus,input[type="file"].notice:focus,input[type="reset"].notice:focus,button.notice:focus,.button.notice:focus{background:#4682b4;color:#fff;border-color:transparent;box-shadow:none}input[type="text"],input[type="password"],input[type="email"],input[type="date"],input[type="datetime-local"],input[type="month"],input[type="number"],input[type="tel"],input[type="search"],input[type="time"],input[type="url"],input[type="week"],textarea{background:#fff;appearance:none;border-radius:4px;border:2px solid #888;box-shadow:none;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;margin:8px 0 16px 0;padding:12px}textarea,input[type="text"]{resize:vertical}fieldset{display:flex;flex-flow:column;background:transparent;border-radius:4px;border:2px solid #dedede;box-shadow:none;margin:0 0 16px 0;padding:16px}fieldset legend{align-self:flex-start;background:#fff;border-radius:4px;border:2px solid #dedede;box-shadow:none;color:#222;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;padding:6px 12px}form{background:transparent;border:none;box-shadow:none;margin:0;padding:0}label{display:flex;flex-flow:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}.has-check{display:flex;flex-flow:row nowrap;align-items:center;padding:0 0 16px 0}input[type="radio"],input[type="checkbox"]{cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:0 12px 0 0;padding:0}input[type="text"]:disabled,input[type="text"].disabled,input[type="password"]:disabled,input[type="password"].disabled,input[type="email"]:disabled,input[type="email"].disabled,input[type="date"]:disabled,input[type="date"].disabled,input[type="datetime-local"]:disabled,input[type="datetime-local"].disabled,input[type="month"]:disabled,input[type="month"].disabled,input[type="number"]:disabled,input[type="number"].disabled,input[type="tel"]:disabled,input[type="tel"].disabled,input[type="search"]:disabled,input[type="search"].disabled,input[type="time"]:disabled,input[type="time"].disabled,input[type="url"]:disabled,input[type="url"].disabled,input[type="week"]:disabled,input[type="week"].disabled,input[type="submit"]:disabled,input[type="submit"].disabled,input[type="file"]:disabled,input[type="file"].disabled,input[type="reset"]:disabled,input[type="reset"].disabled,input[type="button"]:disabled,input[type="button"].disabled,input[type="radio"]:disabled,input[type="radio"].disabled,input[type="checkbox"]:disabled,input[type="checkbox"].disabled,textarea:disabled,textarea.disabled,button:disabled,button.disabled,a:disabled,a.disabled,.button:disabled,.button.disabled{background:#dedede !important;border:2px solid #dedede !important;color:#444 !important;cursor:not-allowed;resize:none !important;opacity:1}input[type="text"]:disabled:hover,input[type="text"].disabled:hover,input[type="password"]:disabled:hover,input[type="password"].disabled:hover,input[type="email"]:disabled:hover,input[type="email"].disabled:hover,input[type="date"]:disabled:hover,input[type="date"].disabled:hover,input[type="datetime-local"]:disabled:hover,input[type="datetime-local"].disabled:hover,input[type="month"]:disabled:hover,input[type="month"].disabled:hover,input[type="number"]:disabled:hover,input[type="number"].disabled:hover,input[type="tel"]:disabled:hover,input[type="tel"].disabled:hover,input[type="search"]:disabled:hover,input[type="search"].disabled:hover,input[type="time"]:disabled:hover,input[type="time"].disabled:hover,input[type="url"]:disabled:hover,input[type="url"].disabled:hover,input[type="week"]:disabled:hover,input[type="week"].disabled:hover,input[type="submit"]:disabled:hover,input[type="submit"].disabled:hover,input[type="file"]:disabled:hover,input[type="file"].disabled:hover,input[type="reset"]:disabled:hover,input[type="reset"].disabled:hover,input[type="button"]:disabled:hover,input[type="button"].disabled:hover,input[type="radio"]:disabled:hover,input[type="radio"].disabled:hover,input[type="checkbox"]:disabled:hover,input[type="checkbox"].disabled:hover,textarea:disabled:hover,textarea.disabled:hover,button:disabled:hover,button.disabled:hover,a:disabled:hover,a.disabled:hover,.button:disabled:hover,.button.disabled:hover{background:#dedede !important;border:2px solid #dedede !important;color:#444 !important}input[type="text"],input[type="password"],input[type="email"],input[type="date"],input[type="datetime-local"],input[type="month"],input[type="number"],input[type="tel"],input[type="search"],input[type="time"],input[type="url"],input[type="week"],textarea{transition:cubic-bezier(0.12, 0.72, 0.58, 1.03) 0.2s}input[type="text"]:focus,input[type="text"]:active,input[type="password"]:focus,input[type="password"]:active,input[type="email"]:focus,input[type="email"]:active,input[type="date"]:focus,input[type="date"]:active,input[type="datetime-local"]:focus,input[type="datetime-local"]:active,input[type="month"]:focus,input[type="month"]:active,input[type="number"]:focus,input[type="number"]:active,input[type="tel"]:focus,input[type="tel"]:active,input[type="search"]:focus,input[type="search"]:active,input[type="time"]:focus,input[type="time"]:active,input[type="url"]:focus,input[type="url"]:active,input[type="week"]:focus,input[type="week"]:active,textarea:focus,textarea:active{background:#fff !important;border:2px solid #d15ded !important;box-shadow:none !important}input[type="text"]:hover,input[type="password"]:hover,input[type="email"]:hover,input[type="date"]:hover,input[type="datetime-local"]:hover,input[type="month"]:hover,input[type="number"]:hover,input[type="tel"]:hover,input[type="search"]:hover,input[type="time"]:hover,input[type="url"]:hover,input[type="week"]:hover,textarea:hover{background:#fff;border:2px solid #666;box-shadow:none;transition:cubic-bezier(0.12, 0.72, 0.58, 1.03) 0.2s}.no-scroll{overflow:hidden !important}.modal-overlay{display:block;background:rgba(0,0,0,0.5);z-index:2000;overflow-y:auto;overflow-x:hidden;opacity:0;position:fixed;height:100%;width:100%;top:0;bottom:0;left:0;right:0;transition:opacity .5s cubic-bezier(0.12, 0.72, 0.58, 1.03);pointer-events:none}.modal-overlay[data-visible="true"]{opacity:1;cursor:pointer;pointer-events:auto}.modal-overlay.is-centered{display:flex;align-items:center;justify-content:center;flex-flow:row nowrap}.modal-dialog{background:#fff;width:95%;position:relative;flex-flow:column nowrap;display:flex;cursor:default;margin:16px auto;border-radius:4px;border:1px solid transparent}@media screen and (min-width: 576px) and (min-height: 576px){.modal-dialog{width:450px;margin:40px auto}}.modal-dialog header{display:flex;align-items:center}.modal-dialog header h1,.modal-dialog header h2,.modal-dialog header h3,.modal-dialog header h4,.modal-dialog header h5,.modal-dialog header h6{font-size:20px;display:inline-flex;margin-bottom:0}.modal-dialog header>button[data-close],.modal-dialog header>a[data-close]{margin-left:auto;font-size:32px;text-decoration:none;padding:0 8px}.modal-dialog header,.modal-dialog section,.modal-dialog footer{padding:16px}.modal-dialog header,.modal-dialog section{border-bottom:1px solid #dedede}.modal-dialog footer{display:flex;flex-flow:row nowrap;justify-content:flex-end}.modal-dialog footer a:first-child,.modal-dialog footer button:first-child{margin-right:16px}.modal-dialog footer a,.modal-dialog footer button{margin-bottom:0}.accordion{border:2px solid #dedede;overflow:hidden;border-radius:4px}.accordion [data-expanded="false"] .accordion-button::after{transform:rotate(180deg)}.accordion .accordion-button{display:flex;flex-flow:row nowrap;justify-content:space-between;text-decoration:none;align-items:center;width:100%;border:none;color:#d15ded;background:#fff;padding:16px;margin:0;border-radius:0;font-size:16px}.accordion .accordion-button:hover,.accordion .accordion-button:focus{color:#ce54ec;background:#f8f8f8}.accordion .accordion-button::after{content:"▲";font-size:12px;transition:.5s cubic-bezier(0.12, 0.72, 0.58, 1.03)}.accordion .accordion-row h1,.accordion .accordion-row h2,.accordion .accordion-row h3,.accordion .accordion-row h4,.accordion .accordion-row h5,.accordion .accordion-row h6{padding:0;margin:0}.accordion .accordion-row:last-child .accordion-content{border-bottom:none}.accordion .accordion-row .accordion-content{overflow:hidden;padding:0;max-height:0;background:#fff;transition:max-height .5s cubic-bezier(0.12, 0.72, 0.58, 1.03);border-bottom:2px solid #dedede}.accordion .accordion-row .accordion-content .accordion-inner-content{margin:16px} /*# sourceMappingURL=undernet.min.css.map */ diff --git a/dist/undernet.modules.js.zip b/dist/undernet.modules.js.zip index 1532c403..44107f87 100644 Binary files a/dist/undernet.modules.js.zip and b/dist/undernet.modules.js.zip differ diff --git a/dist/undernet.scss.zip b/dist/undernet.scss.zip index e71fe4e0..28657ae5 100644 Binary files a/dist/undernet.scss.zip and b/dist/undernet.scss.zip differ diff --git a/docs/introduction.md b/docs/introduction.md index 25a2f7ca..6ae65675 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -6,14 +6,14 @@ Undernet is extremely light, carrying no external dependencies apart from needin ## Get Started -The quickest way to use Undernet is to link the bundled js and minified css using a CDN, such as [unpkg](https://www.unpkg.com). +The quickest way to use Undernet is to link the bundled js and minified css using a CDN, such as [jsdelivr](https://jsdelivr.com). ```html - + ``` ```html - + diff --git a/package-lock.json b/package-lock.json index 7d455b35..9b6c23fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "undernet", - "version": "2.3.0", + "version": "2.4.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c2bff590..1cb0f420 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "undernet", - "version": "2.4.0", + "version": "2.4.1", "homepage": "https://undernet.io", "description": "Undernet is a Front-End Framework for Modern Web Development", "main": "js/dist/undernet.js", @@ -20,7 +20,8 @@ "framework" ], "bin": { - "update-version": "./scripts/update-version.js" + "update-version": "./scripts/update-version.js", + "create-hashes": "./scripts/create-hashes.js" }, "scripts": { "test": "BABEL_ENV=test nyc mocha -r @babel/register -r config/mocha.config.js --recursive src/**/*.spec.js", @@ -30,7 +31,7 @@ "lint": "prettier --write 'src/**/*.js' && prettier --write 'src/**/*.scss'", "build:development": "npm run build:lint && npm run js:build && npm run css:build && npm run css:minify", "build:lint": "npm run js:lint && npm run scss:lint", - "build:release": "npm run clean && npm run build:lint && npm run scss:prepublish && npm run css:prepublish && npm run js:prepublish", + "build:release": "npm run clean && npm run build:lint && npm run scss:prepublish && npm run css:prepublish && npm run js:prepublish && create-hashes", "clean": "rm -rf dist/ && mkdir dist/", "js:build": "babel js/src/ --out-dir js/dist/", "js:merge": "BABEL_ENV=rollup rollup -c config/rollup.config.js", diff --git a/scripts/create-hashes.js b/scripts/create-hashes.js new file mode 100755 index 00000000..ca4b6a0a --- /dev/null +++ b/scripts/create-hashes.js @@ -0,0 +1,49 @@ +#!/usr/bin/env node + +const fs = require("fs") +const path = require("path") +const Hashes = require("jshashes") + +// set up for operations + +const distJsFilePath = path.resolve(__dirname, "../dist/undernet.bundle.min.js") +const distCssFilePath = path.resolve(__dirname, "../dist/undernet.min.css") +const introArticleFilePath = path.resolve(__dirname, "../docs/introduction.md") +const readFormat = "utf-8" + +// update hashes in docs/introduction.md + +const introArticleFile = fs.readFileSync(introArticleFilePath, readFormat) + +function createNewHash(str) { + return new Hashes.SHA256().b64(str) +} + +// regex pattern to detect base 64 encoded string. +// https://stackoverflow.com/a/31245864 +const reb64 = /\"sha256-([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}|[A-Za-z0-9+/]{2})=\"/g + +// retrieve existing hashes +const b64Strings = introArticleFile.match(reb64) + +// apply new hashes and return new introduction.md +const distCssFile = fs.readFileSync(distCssFilePath, readFormat) +const distJsFile = fs.readFileSync(distJsFilePath, readFormat) +const newCssHash = `"sha256-${createNewHash(distCssFile)}"` +const newJsHash = `"sha256-${createNewHash(distJsFile)}"` + +// get new hashes and inject them into docs/introduction.md +function getNewIntroductionArticle() { + const currentCssHash = b64Strings[0] + const currentJsHash = b64Strings[1] + return introArticleFile.replace(currentJsHash, newJsHash).replace(currentCssHash, newCssHash) +} + +fs.writeFileSync("docs/introduction.md", getNewIntroductionArticle(), readFormat) +console.log(` +#========================================# + +-> New content hashes created! They're used in docs/introduction.md. + - CSS: ${newCssHash.slice(1, -1)} + - JS: ${newJsHash.slice(1, -1)} +`) diff --git a/scripts/update-version.js b/scripts/update-version.js index 873e813e..22760b3e 100755 --- a/scripts/update-version.js +++ b/scripts/update-version.js @@ -1,6 +1,5 @@ #!/usr/bin/env node -const Hashes = require("jshashes") const fs = require("fs") const path = require("path") const args = require("yargs").argv @@ -11,8 +10,6 @@ const newUndernetVersion = args["tag"] const packageFilePath = path.resolve(__dirname, "../package.json") const pkg = require(packageFilePath) const undernetScssFilePath = path.resolve(__dirname, "../scss/undernet.scss") -const distJsFilePath = path.resolve(__dirname, "../dist/undernet.bundle.min.js") -const distCssFilePath = path.resolve(__dirname, "../dist/undernet.min.css") const introArticleFilePath = path.resolve(__dirname, "../docs/introduction.md") const readFormat = "utf-8" @@ -44,34 +41,16 @@ function getNewScssVersion() { // get update for docs/introduction.md -const introArticleFile = fs.readFileSync(introArticleFilePath, readFormat) - -function createNewHash(str) { - return new Hashes.SHA256().b64(str) +function getArticleVersion(version) { + return `@${version}` } -// regex pattern to detect base 64 encoded string. -// https://stackoverflow.com/a/31245864 -const reb64 = /\"sha256-([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}|[A-Za-z0-9+/]{2})=\"/g - -// retrieve existing hashes -const b64Strings = introArticleFile.match(reb64) - -// apply new hashes and return new introduction.md -const distCssFile = fs.readFileSync(distCssFilePath, readFormat) -const distJsFile = fs.readFileSync(distJsFilePath, readFormat) -const newCssHash = `"sha256-${createNewHash(distCssFile)}"` -const newJsHash = `"sha256-${createNewHash(distJsFile)}"` - -// get new hashes and inject them into docs/introduction.md function getNewIntroductionArticle() { - const currentCssHash = b64Strings[0] - const currentJsHash = b64Strings[1] - const versionRegEx = new RegExp(pkg.version, "g") - return introArticleFile - .replace(currentJsHash, newJsHash) - .replace(currentCssHash, newCssHash) - .replace(versionRegEx, newUndernetVersion) + const articleVersion = getArticleVersion(pkg.version) + const newArticleVersion = getArticleVersion(newUndernetVersion) + const introArticleFile = fs.readFileSync(introArticleFilePath, readFormat) + const versionRegEx = new RegExp(articleVersion, "g") + return introArticleFile.replace(versionRegEx, newArticleVersion) } // write to files @@ -83,7 +62,4 @@ fs.writeFileSync("scss/undernet.scss", getNewScssVersion(), readFormat) console.log(`-> scss/undernet.scss version updated to ${newUndernetVersion}!`) fs.writeFileSync("docs/introduction.md", getNewIntroductionArticle(), readFormat) -console.log(`-> docs/introduction.md example hashes updated! - - CSS: ${newCssHash.slice(1, -1)} - - JS: ${newJsHash.slice(1, -1)} -`) +console.log(`-> docs/introduction.md version updated to ${newUndernetVersion}!`) diff --git a/scss/undernet.scss b/scss/undernet.scss index 96996dca..97427716 100644 --- a/scss/undernet.scss +++ b/scss/undernet.scss @@ -1,6 +1,6 @@ /*! * @license MIT (https://github.com/geotrev/undernet/blob/master/LICENSE) -* Undernet v2.4.0 (https://undernet.io) +* Undernet v2.4.1 (https://undernet.io) * Copyright 2017-2018 George Treviranus */