From 594385ae7bd94db98bf47d20670e4556c9a996f2 Mon Sep 17 00:00:00 2001 From: Patrick Marsceill <patrick.marsceill@gmail.com> Date: Fri, 24 Mar 2017 09:47:37 -0400 Subject: [PATCH] initial commit --- _config.yml | 1 + _includes/head.html | 3 + _includes/nav.html | 2 +- _layouts/default.html | 46 ++-- _sass/base.scss | 74 +++-- _sass/buttons.scss | 112 ++++++++ _sass/code.scss | 36 +++ _sass/content.scss | 48 ++++ _sass/layout.scss | 50 ++-- _sass/navigation.scss | 85 ++++++ _sass/search.scss | 6 + _sass/support/_variables.scss | 81 +++--- _sass/support/mixins/_buttons.scss | 25 ++ .../{_mixins.scss => mixins/_layout.scss} | 54 +--- _sass/support/mixins/_typography.scss | 81 ++++++ _sass/support/mixins/mixins.scss | 3 + _sass/support/support.scss | 2 +- _sass/tables.scss | 19 +- _sass/typography.scss | 18 +- _sass/utilities/_colors.scss | 70 +++-- _sass/utilities/_layout.scss | 26 ++ _sass/utilities/_lists.scss | 4 + _sass/utilities/_spacing.scss | 12 +- _sass/utilities/_typography.scss | 36 +++ assets/css/just-the-docs.scss | 19 +- assets/images/just-the-docs.png | Bin 53240 -> 20992 bytes assets/js/just-the-docs.js | 125 +++++++++ assets/js/vendor/lunr.min.js | 6 + docs/navigation-structure.md | 22 ++ docs/page-architecture.md | 5 - docs/ui-components/buttons.md | 100 +++++++ docs/ui-components/code.md | 80 +++++- docs/ui-components/tables.md | 40 +++ docs/ui-components/typography.md | 108 ++++++++ docs/ui-components/ui-components.md | 3 +- docs/utilities.md | 259 ++++++++++++++++++ index.md | 23 +- search-data.json | 13 + 38 files changed, 1482 insertions(+), 215 deletions(-) create mode 100644 _sass/buttons.scss create mode 100644 _sass/content.scss create mode 100644 _sass/search.scss create mode 100644 _sass/support/mixins/_buttons.scss rename _sass/support/{_mixins.scss => mixins/_layout.scss} (52%) create mode 100644 _sass/support/mixins/_typography.scss create mode 100644 _sass/support/mixins/mixins.scss create mode 100644 assets/js/vendor/lunr.min.js create mode 100644 docs/navigation-structure.md delete mode 100644 docs/page-architecture.md create mode 100644 docs/ui-components/tables.md create mode 100644 docs/utilities.md diff --git a/_config.yml b/_config.yml index eaff727c..b87bd8ef 100644 --- a/_config.yml +++ b/_config.yml @@ -23,4 +23,5 @@ sass: load_paths: - node_modules/ +permalink: pretty exclude: ["node_modules/", "*.gemspec", "Gemfile", "Gemfile.lock", "package.json", "LICENSE.txt"] diff --git a/_includes/head.html b/_includes/head.html index 39bc633b..1ac4771b 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -4,5 +4,8 @@ <title>{{ page.title }} - {{ site.title }}</title> <link rel="stylesheet" href="/assets/css/just-the-docs.css"> + <script type="text/javascript" src="/assets/js/vendor/lunr.min.js"></script> + <script type="text/javascript" src="/assets/js/just-the-docs.js"></script> + <meta name="viewport" content="width=device-width, initial-scale=1"> </head> diff --git a/_includes/nav.html b/_includes/nav.html index 6b649149..87435742 100644 --- a/_includes/nav.html +++ b/_includes/nav.html @@ -10,7 +10,7 @@ <ul class="navigation-list-child-list"> {% for child in children_list %} {% if child.parent == node.parent and child.title != node.title %} - <li class="navigation-list-item"> + <li class="navigation-list-item {% if page.url == child.url %} active{% endif %}"> <a href="{{ child.url | absolute_url }}" class="navigation-list-link{% if page.url == child.url %} active{% endif %}">{{ child.title }}</a> </li> {% endif %} diff --git a/_layouts/default.html b/_layouts/default.html index 1e16fd47..23d5b429 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -6,18 +6,20 @@ <div class="page-wrap"> <div class="side-bar"> <a href="{{ site.url }}" class="site-title fs-6 fw-300 text-grey-dk-300">Just the <span class="fw-700">/docs</span></a> - <div class="navigation"> + <span class="fs-3"><button class="js-main-nav-trigger navigation-list-toggle btn btn-outline" type="button" data-text-toggle="Hide">Menu</button></span> + <div class="navigation main-nav js-main-nav"> {% include nav.html %} + <footer role="contentinfo" class="site-footer"> + <p class="text-small text-grey-dk-000">This site uses <a href="https://github.com/pmarsceill/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll.</p> + </footer> </div> - <footer role="contentinfo" class="site-footer"> - <p class="text-small text-grey-dk-000">This site uses <a href="https://github.com/pmarsceill/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll.</p> - </footer> - </div> <div class="main-content-wrap"> <div class="main-content"> + <input type="text" class="js-search-input" /> + <div class="js-search-results search-results-wrap"></div> {% unless page.url == "/" %} - <nav> + <nav class="breadcrumb-nav"> <ol class="breadcrumb-nav-list"> <li class="breadcrumb-nav-list-item"><a href="{{ site.url }}">Home</a></li> {% if page.parent != nil and page.parent != page.title %} @@ -27,22 +29,24 @@ </ol> </nav> {% endunless %} - {{ content }} + <div class="page-content"> + {{ content }} - {% if page.has_children == true %} - <hr> - <h2 class="text-delta">Table of contents</h2> - {% assign children_list = site.pages | sort:"nav_order" %} - <ol> - {% for child in children_list %} - {% if child.parent == page.title and child.title != page.title %} - <li> - <a href="{{ child.url | absolute_url }}">{{ child.title }}</a> - </li> - {% endif %} - {% endfor %} - </ol> - {% endif %} + {% if page.has_children == true %} + <hr> + <h2 class="text-delta">Table of contents</h2> + {% assign children_list = site.pages | sort:"nav_order" %} + <ol> + {% for child in children_list %} + {% if child.parent == page.title and child.title != page.title %} + <li> + <a href="{{ child.url | absolute_url }}">{{ child.title }}</a> + </li> + {% endif %} + {% endfor %} + </ol> + {% endif %} + </div> </div> </div> </div> diff --git a/_sass/base.scss b/_sass/base.scss index 68990200..5566b5cc 100644 --- a/_sass/base.scss +++ b/_sass/base.scss @@ -1,3 +1,7 @@ +// +// Base element style overrides +// + // stylelint-disable selector-no-type * { @@ -5,36 +9,16 @@ } html { - font-size: $root-font-size; + @include fs-4; } body { font-family: $body-font-family; font-size: inherit; - line-height: 1.4; + line-height: $body-line-height; color: $body-text-color; } -h1, -h2, -h3, -h4, -h5, -h6 { - font-weight: 500; - color: $body-heading-color; - line-height: 1.1; - margin-bottom: .8em; - - &:not(:first-child) { - margin-top: 1.2 em; - } -} - -p { - margin-bottom: 1em; -} - p, h1, h2, @@ -57,18 +41,54 @@ table { margin-top: 0; } +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: 500; + color: $body-heading-color; + line-height: $body-heading-line-height; + margin-bottom: .8em; + margin-top: 1.2em; +} + +p { + margin-bottom: 1em; +} + + a { color: $link-color; text-decoration: none; } +a:not([class]) { + text-decoration: none; + background-image: linear-gradient($grey-lt-100 0%, $grey-lt-100 100%); + background-repeat: repeat-x; + background-position: 0 100%; + background-size: 1px 1px; + + &:hover { + background-image: linear-gradient(rgba($link-color, 0.45) 0%, rgba($link-color, 0.45) 100%); + background-size: 1px 1px; + + } +} + pre, code { font-size: 90%; - line-height: 1.3; + line-height: $body-line-height; font-family: $mono-font-family; } +figure { + margin: 0; +} + li { margin: 0.25em 0; } @@ -77,3 +97,11 @@ img { max-width: 100%; height: auto; } + +hr { + height: 1px; + padding: 0; + margin: $sp-6 0; + background-color: $grey-lt-100; + border: 0; +} diff --git a/_sass/buttons.scss b/_sass/buttons.scss new file mode 100644 index 00000000..559d1dba --- /dev/null +++ b/_sass/buttons.scss @@ -0,0 +1,112 @@ +// +// Buttons and things that look like buttons +// + +.btn { + display: inline-block; + box-sizing: border-box; + padding-top: 0.25em; + padding-right: 1em; + padding-bottom: 0.25em; + padding-left: 1em; + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: 1.5; + color: $purple-200; + text-decoration: none; + vertical-align: baseline; + cursor: pointer; + background-color: #f7f7f7; + border-width: 0; + border-radius: 3px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + appearance: none; + + &:focus { + text-decoration: none; + outline: none; + box-shadow: 0 0 0 3px rgba(blue, 0.25); + } + + &:focus:hover, + &.selected:focus { + box-shadow: 0 0 0 3px rgba(blue, 0.25); + } + + &:hover, + &.zeroclipboard-is-hover { + color: $purple-300; + } + + &:hover, + &:active, + &.zeroclipboard-is-hover, + &.zeroclipboard-is-active { + text-decoration: none; + background-color: #f4f4f4; + } + + &:active, + &.selected, + &.zeroclipboard-is-active { + background-color: #ededed; + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); + } + + &.selected:hover { + background-color: darken(#dcdcdc, 5%); + } + + &:disabled, + &.disabled { + &, + &:hover { + color: rgba(102, 102, 102, 0.5); + cursor: default; + background-color: rgba(229, 229, 229, 0.5); + background-image: none; + box-shadow: none; + } + } +} + +.btn-outline { + box-shadow: inset 0 0 0 2px $grey-lt-300; + background: transparent; + color: $blue-100; + + &:hover, + &:active, + &.zeroclipboard-is-hover, + &.zeroclipboard-is-active { + box-shadow: inset 0 0 0 3px $grey-lt-300; + text-decoration: none; + background-color: transparent; + color: $grey-dk-100; + } + + &:focus { + text-decoration: none; + outline: none; + box-shadow: inset 0 0 0 2px $grey-dk-100, 0 0 0 3px rgba(blue, 0.25); + } + + &:focus:hover, + &.selected:focus { + box-shadow: inset 0 0 0 2px $grey-dk-100; + } +} + +.btn-purple { + @include btn-color($white, $purple-100); +} + +.btn-blue { + @include btn-color($white, $blue-000); +} + +.btn-green { + @include btn-color($white, $green-100); +} diff --git a/_sass/code.scss b/_sass/code.scss index caa0f407..bb534f6d 100644 --- a/_sass/code.scss +++ b/_sass/code.scss @@ -1,13 +1,19 @@ +// +// Code and syntax highlighting +// + code { background-color: $grey-lt-000; padding: 0.2em 0.15em; border: $border $border-color; border-radius: $border-radius; + font-weight: 400; } .highlight { background-color: $grey-lt-000; padding: $sp-3; + margin-bottom: 0; code { border: 0; @@ -15,6 +21,12 @@ code { } } +.highlighter-rouge { + margin-bottom: $sp-3; + border-radius: $border-radius; + overflow: hidden; +} + .highlight .c { color: #586E75 } /* Comment */ .highlight .err { color: #93A1A1 } /* Error */ .highlight .g { color: #93A1A1 } /* Generic */ @@ -83,3 +95,27 @@ code { .highlight .vg { color: #268BD2 } /* Name.Variable.Global */ .highlight .vi { color: #268BD2 } /* Name.Variable.Instance */ .highlight .il { color: #2AA198 } /* Literal.Number.Integer.Long */ + +// +// Code examples (rendered) +// + +.code-example { + border: 1px solid $border-color; + padding: $sp-3; + border-radius: $border-radius; + margin-bottom: $sp-3; + overflow: scroll; + + + .highlighter-rouge, + + figure.highlight { + position: relative; + border-left: 1px solid $border-color; + border-right: 1px solid $border-color; + border-bottom: 1px solid $border-color; + border-top-left-radius: 0; + border-top-right-radius: 0; + margin-top: -$sp-4; + } + +} diff --git a/_sass/content.scss b/_sass/content.scss new file mode 100644 index 00000000..e40ad336 --- /dev/null +++ b/_sass/content.scss @@ -0,0 +1,48 @@ +// +// Styles for rendered markdown in the .main-content container +// + +// stylelint-disable selector-no-type + +.page-content { + ul, + ol, + dl { + padding-left: 1.5em; + } + + ol { + list-style-type: none; + counter-reset: step-counter; + + li { + position: relative; + + &::before { + counter-increment: step-counter; + content: counter(step-counter); + left: -1.5em; + top: 0.11em; + position: absolute; + color: $grey-dk-000; + @include fs-3; + } + + ol { + counter-reset: sub-counter; + + li { + &::before { + counter-increment: sub-counter; + content: counter(sub-counter, lower-alpha); + } + } + } + } + } + + hr + *, + h1:first-of-type { + margin-top: 0; + } +} diff --git a/_sass/layout.scss b/_sass/layout.scss index 35370a54..6dffabab 100644 --- a/_sass/layout.scss +++ b/_sass/layout.scss @@ -1,3 +1,7 @@ +// +// The basic two column layout +// + .page-wrap { @include mq(md) { display: flex; @@ -12,9 +16,8 @@ } .side-bar { - - padding-top: $gutter-spacing; - padding-bottom: $gutter-spacing; + padding-top: $gutter-spacing-sm; + padding-bottom: $gutter-spacing-sm; background-color: $grey-lt-000; z-index: 100; @@ -28,6 +31,7 @@ align-items: flex-end; width: $nav-width + 16px; height: 100%; + min-height: 400px; } @include mq(lg) { @@ -41,6 +45,7 @@ position: absolute; width: 100%; height: 100%; + min-height: 600px; top: 0; left: 0; -webkit-overflow-scrolling: touch; @@ -50,14 +55,14 @@ } .main-content { - padding-top: $gutter-spacing; - padding-right: $gutter-spacing; - padding-left: $gutter-spacing; + padding-top: $gutter-spacing-sm; + @include container; + @include mq(md) { position: relative; margin-left: $nav-width; max-width: $content-width; - padding-right: $gutter-spacing; + padding-top: $gutter-spacing; padding-left: $gutter-spacing * 1.5; padding-bottom: $gutter-spacing; } @@ -68,23 +73,11 @@ } } +.navigation, .site-title { - display: block; - @include mq(md) { - position: absolute; - top: $gutter-spacing; - right: 0; - width: $nav-width; - z-index: 101; - } -} + @include container; -.navigation, -.site-title, -.site-footer { - padding-left: $gutter-spacing; - padding-right: $gutter-spacing; width: 100%; @include mq(lg) { @@ -95,21 +88,22 @@ .navigation { @include mq(md) { position: absolute; - top: $sp-8; + padding-top: $sp-8; + top: 0; right: 0; + height: 100%; } } .site-footer { + @include mq(md) { + display: block; position: absolute; - bottom: $sp-8; right: 0; + bottom: $sp-8; z-index: 100; - } -} -.img-logo { - width: 150px; - height: auto; + @include container; + } } diff --git a/_sass/navigation.scss b/_sass/navigation.scss index 76672222..4d226c18 100644 --- a/_sass/navigation.scss +++ b/_sass/navigation.scss @@ -1,3 +1,21 @@ +// +// Main nav, breadcrumb, etc... +// + +.site-title { + display: block; + flex-grow: 1; + flex-shrink: 1; + flex-basis: auto; + + @include mq(md) { + position: absolute; + top: $gutter-spacing; + right: 0; + z-index: 101; + } +} + .navigation-list { list-style: none; padding: 0; @@ -11,6 +29,8 @@ .navigation-list-child-list { list-style: none; padding-left: $sp-3; + margin-top: $sp-2; + margin-bottom: $sp-2; .navigation-list-link { color: $grey-dk-100; @@ -23,6 +43,12 @@ margin-left: -0.8em; color: $grey-dk-000; } + + &.active { + &::before { + color: $grey-dk-100; + } + } } } @@ -40,6 +66,39 @@ } } +// Small screen nav + +.main-nav { + display: none; + + &.nav-open { + display: block; + } + @include mq(md) { + display: block; + } +} + +.side-bar { + display: flex; + flex-wrap: wrap; + + @include mq(md) { + display: block; + } +} + +.navigation-list-toggle { + position: absolute; + right: $sp-4; + + @include mq(md) { + display: none !important; + } +} + +// Breadcrumb nav + .breadcrumb-nav-list { list-style: none; padding-left: 0; @@ -51,6 +110,10 @@ display: table-cell; @include fs-2; + &::before { + display: none; + } + &::after { display: inline-block; margin-left: $sp-2; @@ -65,3 +128,25 @@ } } } + + // Table of contents + +#markdown-toc { + counter-reset: toc-counter; + li { + &::before { + counter-increment: toc-counter; + content: counter(toc-counter, upper-roman); + } + ol { + counter-reset: toc-sub-counter; + } + + li { + &::before { + counter-increment: toc-sub-counter; + content: counter(toc-sub-counter, lower-roman); + } + } + } +} diff --git a/_sass/search.scss b/_sass/search.scss new file mode 100644 index 00000000..10c37869 --- /dev/null +++ b/_sass/search.scss @@ -0,0 +1,6 @@ +.search-results-wrap { + position: absolute; + background: $white; + width: 400px; + z-index: 100; +} diff --git a/_sass/support/_variables.scss b/_sass/support/_variables.scss index 629c2e67..96abff68 100644 --- a/_sass/support/_variables.scss +++ b/_sass/support/_variables.scss @@ -1,31 +1,47 @@ +// +// Typography +// + +$body-font-family: -apple-system, BlinkMacSystemFont, "helvetica neue", helvetica, roboto, noto, "segoe ui", arial, sans-serif !default; +$mono-font-family: "SFMono-Regular", Menlo, Consolas, Monospace !default; +$root-font-size: 16px !default; // Base font-size for rems +$body-line-height: 1.4; +$body-heading-line-height: 1.15; + // // Colors // -$grey-dk-000: #959396; -$grey-dk-100: #5c5962; -$grey-dk-200: #44434d; -$grey-dk-300: #27262b; +$white: #fff !default; + +$grey-dk-000: #959396 !default; +$grey-dk-100: #5c5962 !default; +$grey-dk-200: #44434d !default; +$grey-dk-300: #27262b !default; + +$grey-lt-000: #f5f6fa !default; +$grey-lt-100: #eeebee !default; +$grey-lt-200: #ecebed !default; +$grey-lt-300: #e6e1e8 !default; -$grey-lt-000: #f5f6fa; -$grey-lt-100: #efebf0; -$grey-lt-200: #ecebed; -$grey-lt-300: #e6e1e8; +$purple-000: #7253ed !default; +$purple-100: #5e41d0 !default; +$purple-200: #4e26af !default; +$purple-300: #381885 !default; -$purple-000: #7253ed; -$purple-100: #5e41d0; -$purple-200: #4e26af; -$purple-300: #381885; +$blue-000: #2c84fa !default; +$blue-100: #2869e6 !default; +$blue-200: #264caf !default; +$blue-300: #183385 !default; -$green-000: #41d66f; -$green-100: #2bb45a; -$green-200: #299950; -$green-300: #156f49; +$green-000: #41d693 !default; +$green-100: #11b584 !default; +$green-200: #009c7b !default; +$green-300: #026e57 !default; -$body-text-color: $grey-dk-100; -$body-heading-color: $grey-dk-300; -$root-font-size: 16px; // Base font-size for rems -$link-color: $purple-000; +$body-text-color: $grey-dk-100 !default; +$body-heading-color: $grey-dk-300 !default; +$link-color: $purple-000 !default; // // Media queries in pixels @@ -36,7 +52,7 @@ $media-queries: ( sm: 500px, md: 740px, lg: 1120px, - xl: 1200px + xl: 1400px ) !default; // @@ -55,7 +71,7 @@ $spacers: ( sp-6: $spacing-unit * 2, sp-7: $spacing-unit * 2.5, sp-8: $spacing-unit * 3 -); +) !default; $sp-1: map-get($spacers, sp-1); // 0.25 rem == 4px $sp-2: map-get($spacers, sp-2); // 0.5 rem == 8px @@ -70,17 +86,18 @@ $sp-8: map-get($spacers, sp-8); // 3 rem == 48px // Borders // -$border: 1px solid; -$border-radius: 4px; -$border-color: $grey-lt-100; +$border: 1px solid !default; +$border-radius: 4px !default; +$border-color: $grey-lt-100 !default; // // Grid system // -$gutter-spacing: $sp-6; -$nav-width: 232px; -$content-width: 800px; +$gutter-spacing: $sp-6 !default; +$gutter-spacing-sm: $sp-4 !default; +$nav-width: 232px !default; +$content-width: 800px !default; $media-queries: ( xs: 320px, @@ -89,11 +106,3 @@ $media-queries: ( lg: 800px, xl: 1316px ) !default; - -// -// Typography -// - -$body-font-family: -apple-system, BlinkMacSystemFont, "helvetica neue", helvetica, roboto, noto, "segoe ui", arial, sans-serif; - -$mono-font-family: Menlo, Consolas, Monospace; diff --git a/_sass/support/mixins/_buttons.scss b/_sass/support/mixins/_buttons.scss new file mode 100644 index 00000000..9a6b84fe --- /dev/null +++ b/_sass/support/mixins/_buttons.scss @@ -0,0 +1,25 @@ +// Colored button + +@mixin btn-color($fg, $bg) { + color: $fg; + background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%)); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); + + &:hover, + &.zeroclipboard-is-hover { + color: $fg; + background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%))); + } + + &:active, + &.selected, + &.zeroclipboard-is-active { + background-color: darken($bg, 5%); + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); + } + + &.selected:hover { + background-color: darken($bg, 10%); + } +} diff --git a/_sass/support/_mixins.scss b/_sass/support/mixins/_layout.scss similarity index 52% rename from _sass/support/_mixins.scss rename to _sass/support/mixins/_layout.scss index d63845aa..52b9e3cb 100644 --- a/_sass/support/_mixins.scss +++ b/_sass/support/mixins/_layout.scss @@ -1,45 +1,3 @@ -// Font size - -@mixin fs-1 { - font-size: 10px !important; -} - -@mixin fs-2 { - font-size: 12px !important; -} - -@mixin fs-3 { - font-size: 14px !important; -} - -@mixin fs-4 { - font-size: 16px !important; -} - -@mixin fs-5 { - font-size: 18px !important; -} - -@mixin fs-6 { - font-size: 24px !important; -} - -@mixin fs-7 { - font-size: 32px !important; -} - -@mixin fs-8 { - font-size: 36px !important; -} - -@mixin fs-9 { - font-size: 42px !important; -} - -@mixin fs-10 { - font-size: 48px !important; -} - // Media query // Media query mixin @@ -62,3 +20,15 @@ + "Please make sure it is defined in `$media-queries` map."; } } + +// Responsive container + +@mixin container { + padding-left: $gutter-spacing-sm; + padding-right: $gutter-spacing-sm; + + @include mq(md) { + padding-left: $gutter-spacing; + padding-right: $gutter-spacing; + } +} diff --git a/_sass/support/mixins/_typography.scss b/_sass/support/mixins/_typography.scss new file mode 100644 index 00000000..e6d85bea --- /dev/null +++ b/_sass/support/mixins/_typography.scss @@ -0,0 +1,81 @@ +// Font size + +@mixin fs-1 { + font-size: 9px !important; + + @include mq(sm) { + font-size: 10px !important; + } +} + +@mixin fs-2 { + font-size: 11px !important; + + @include mq(sm) { + font-size: 12px !important; + } +} + +@mixin fs-3 { + font-size: 12px !important; + + @include mq(sm) { + font-size: 14px !important; + } +} + +@mixin fs-4 { + font-size: 14px !important; + + @include mq(sm) { + font-size: 16px !important; + } +} + +@mixin fs-5 { + font-size: 16px !important; + + @include mq(sm) { + font-size: 18px !important; + } +} + +@mixin fs-6 { + font-size: 18px !important; + + @include mq(sm) { + font-size: 24px !important; + } +} + +@mixin fs-7 { + font-size: 24px !important; + + @include mq(sm) { + font-size: 32px !important; + } +} + +@mixin fs-8 { + font-size: 32px !important; + + @include mq(sm) { + font-size: 36px !important; + } +} + +@mixin fs-9 { + font-size: 36px !important; + + @include mq(sm) { + font-size: 42px !important; + } +} + +@mixin fs-10 { + font-size: 42px !important; + + @include mq(sm) { + font-size: 48px !important; + } +} diff --git a/_sass/support/mixins/mixins.scss b/_sass/support/mixins/mixins.scss new file mode 100644 index 00000000..0506fbf5 --- /dev/null +++ b/_sass/support/mixins/mixins.scss @@ -0,0 +1,3 @@ +@import "./layout"; +@import "./buttons"; +@import "./typography"; diff --git a/_sass/support/support.scss b/_sass/support/support.scss index e060be55..8131a320 100644 --- a/_sass/support/support.scss +++ b/_sass/support/support.scss @@ -1,3 +1,3 @@ @import "./variables"; @import "./functions"; -@import "./mixins"; +@import "./mixins/mixins"; diff --git a/_sass/tables.scss b/_sass/tables.scss index 1b551563..e1071512 100644 --- a/_sass/tables.scss +++ b/_sass/tables.scss @@ -1,8 +1,19 @@ +// +// Tables +// + table { + display: block; width: 100%; + max-width: 100%; + overflow-x: auto; margin-bottom: $sp-5; border-collapse: separate; - box-shadow: 0 3px 12px 0 transparentize($grey-dk-300, 0.9); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.07), 0 4px 14px rgba(0, 0, 0, 0.05); + + @include mq(sm) { + display: table; + } } th, @@ -14,6 +25,7 @@ td { padding-right: $sp-3; border-bottom: $border $grey-lt-000; border-left: $border $border-color; + min-width: 120px; &:first-of-type { border-left: 0; @@ -54,11 +66,8 @@ tbody { } } - - - - thead { th { + border-bottom: 1px solid $border-color; } } diff --git a/_sass/typography.scss b/_sass/typography.scss index b5944b94..1b2cb28c 100644 --- a/_sass/typography.scss +++ b/_sass/typography.scss @@ -1,3 +1,7 @@ +// +// Typography +// + h1, .text-alpha { @include fs-8; @@ -29,7 +33,7 @@ h5, } h6, -.text-epsilon { +.text-zeta { @include fs-2; color: $grey-dk-200; } @@ -40,14 +44,10 @@ li { } } -hr { - height: 1px; - padding: 0; - margin: $sp-6 0; - background-color: $grey-lt-100; - border: 0; -} - .text-small { @include fs-2; } + +.text-mono { + font-family: $mono-font-family; +} diff --git a/_sass/utilities/_colors.scss b/_sass/utilities/_colors.scss index aa8e0d88..6ea15786 100644 --- a/_sass/utilities/_colors.scss +++ b/_sass/utilities/_colors.scss @@ -1,17 +1,23 @@ -.text-purple-000 { - color: $purple-000 !important; +// +// Utility classes for colors +// + +// Text colors + +.text-grey-dk-000 { + color: $grey-dk-000 !important; } -.text-purple-100 { - color: $purple-100 !important; +.text-grey-dk-100 { + color: $grey-dk-100 !important; } -.text-purple-200 { - color: $purple-200 !important; +.text-grey-dk-200 { + color: $grey-dk-200 !important; } -.text-purple-300 { - color: $purple-300 !important; +.text-grey-dk-300 { + color: $grey-dk-300 !important; } .text-grey-lt-000 { @@ -30,18 +36,50 @@ color: $grey-lt-300 !important; } -.text-grey-dk-000 { - color: $grey-dk-000 !important; +.text-blue-000 { + color: $blue-000 !important; } -.text-grey-dk-100 { - color: $grey-dk-100 !important; +.text-blue-100 { + color: $blue-100 !important; } -.text-grey-dk-200 { - color: $grey-dk-200 !important; +.text-blue-200 { + color: $blue-200 !important; } -.text-grey-dk-300 { - color: $grey-dk-300 !important; +.text-blue-300 { + color: $blue-300 !important; +} + +.text-green-000 { + color: $green-000 !important; +} + +.text-green-100 { + color: $green-100 !important; +} + +.text-green-200 { + color: $green-200 !important; +} + +.text-green-300 { + color: $green-300 !important; +} + +.text-purple-000 { + color: $purple-000 !important; +} + +.text-purple-100 { + color: $purple-100 !important; +} + +.text-purple-200 { + color: $purple-200 !important; +} + +.text-purple-300 { + color: $purple-300 !important; } diff --git a/_sass/utilities/_layout.scss b/_sass/utilities/_layout.scss index e69de29b..24f4fe12 100644 --- a/_sass/utilities/_layout.scss +++ b/_sass/utilities/_layout.scss @@ -0,0 +1,26 @@ +// +// Utility classes for layout and spacing +// + +.d-block { display: block !important; } +.d-flex { display: flex !important; } +.d-inline { display: inline !important; } +.d-inline-block { display: inline-block !important; } +.d-none { display: none !important; } + +@each $media-query in map-keys($media-queries) { + @for $i from 1 through length($spacers) { + @include mq($media-query) { + $size: #{map-get($spacers, sp-#{$i - 1})}; + $scale: #{$i - 1}; + + // .d-sm-block, .d-md-none, .d-lg-inline + .d-#{$media-query}-block { display: block !important; } + .d-#{$media-query}-flex { display: flex !important; } + .d-#{$media-query}-inline { display: inline !important; } + .d-#{$media-query}-inline-block { display: inline-block !important; } + .d-#{$media-query}-none { display: none !important; } + + } + } +} diff --git a/_sass/utilities/_lists.scss b/_sass/utilities/_lists.scss index 6fea9fca..0c5bcad7 100644 --- a/_sass/utilities/_lists.scss +++ b/_sass/utilities/_lists.scss @@ -1,3 +1,7 @@ +// +// Utility classes for lists +// + // stylelint-disable primer/selector-no-utility .list-style-none { diff --git a/_sass/utilities/_spacing.scss b/_sass/utilities/_spacing.scss index cd8214c5..9b428169 100644 --- a/_sass/utilities/_spacing.scss +++ b/_sass/utilities/_spacing.scss @@ -1,10 +1,10 @@ -// scss-lint:disable SpaceAfterPropertyName -// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before, primer/selector-no-utility - -// Margin spacer utilities +// +// Utility classes for margins and padding +// // scss-lint:disable SpaceAfterPropertyName // stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before, primer/selector-no-utility + // Margin spacer utilities @for $i from 1 through length($spacers) { @@ -42,7 +42,7 @@ @each $media-query in map-keys($media-queries) { @for $i from 1 through length($spacers) { @include mq($media-query) { - $size: #{map-get($spacers, spacer#{$i - 1})}; + $size: #{map-get($spacers, sp-#{$i - 1})}; $scale: #{$i - 1}; // .m-sm-0, .m-md-1, .m-lg-2... @@ -97,7 +97,7 @@ @each $media-query in map-keys($media-queries) { @include mq($media-query) { @for $i from 1 through length($spacers) { - $size: #{map-get($spacers, spacer#{$i - 1})}; + $size: #{map-get($spacers, sp-#{$i - 1})}; $scale: #{$i - 1}; // .p-sm-0, .p-md-1, .p-lg-2... diff --git a/_sass/utilities/_typography.scss b/_sass/utilities/_typography.scss index f9625fba..7206deff 100644 --- a/_sass/utilities/_typography.scss +++ b/_sass/utilities/_typography.scss @@ -1,3 +1,9 @@ +// +// Utility classes for typography +// + +// stylelint-disable primer/selector-no-utility + .fs-1 { @include fs-1; } @@ -53,3 +59,33 @@ .fw-700 { font-weight: 700 !important; } + +.lh-0 { + line-height: 0 !important; +} + +.lh-default { + line-height: $body-line-height; +} + +.lh-tight { + line-height: $body-heading-line-height; +} + +.ls-5 { + letter-spacing: 0.05em !important; +} + +.ls-10 { + letter-spacing: 0.1em !important; +} + +.ls-0 { + letter-spacing: 0 !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +// stylelint-enable primer/selector-no-utility diff --git a/assets/css/just-the-docs.scss b/assets/css/just-the-docs.scss index dce54397..4fc74eaa 100644 --- a/assets/css/just-the-docs.scss +++ b/assets/css/just-the-docs.scss @@ -15,24 +15,13 @@ // Support @import "./support/support"; - -// Utilities -@import "./utilities/utilities"; - -// Base @import "./base"; - -// Layout @import "./layout"; - -// Navigation +@import "./content"; @import "./navigation"; - -// Typography @import "./typography"; - -// Tables +@import "./buttons"; +@import "./search"; @import "./tables"; - -// Code blocks and inline code @import "./code"; +@import "./utilities/utilities"; diff --git a/assets/images/just-the-docs.png b/assets/images/just-the-docs.png index a2a57a94a432c6060942394854e99f9c11b91635..81c33065f2794814cbe1a53791d8bc4bfbb91cb1 100644 GIT binary patch literal 20992 zcmeFZRa9I}*Dgv3BuIk0yF0;y1cJLX1PB%^xVr}e3BlbV5VUa(ZVB$vc#{NgTpMU) zFWx`zIcJP>v&X;xbFRKC#$wH`RW<9WS@O)MK5MASKgS@$Kte)#uBh-@3keBX1qtcV zceE$Kf0|;yYXW~ztY4|VLPDyE#k?^?MM9E7QhfbN$NSO#3VK$SZ2IMKSySuQSb&Uh zf~gf#Vj|in@8DnEmD~AYnMU!wvZ+Q!Mn{)mO}%AVy_ppc+z?rm<Z6r$Xpt1ik8nj? zpCyLUKaE3VjV!D<-R26##VHms-+Jo7XAl=vlDUe$&_FP()al$^(#Yu?Vf*v>Bb0LV z7eeZi?P)_%nl`Mf;G~22doP>p<vpL?#`;EyHgK9RtD$I!&*>(kvG?zf@jLFm^@^GC zeGIlqd>|z-+Zt)rQ408e26A!M(le}$_Xx!v<9%kbCNXj{*MxAx&!iqHyOpm|`i!5G zZc0*<ic<#~8B3E4YQ2yD#AwwkW;<b!n7g~3X3<9-TeBr6Q?IbZs%gnlvJOttx~^W^ zm0rw5q;T4`BSu-iM<5}Gvc^%2^x2R<LOH>Y6Wa4#sFQ_eZOA)z#KUb1eQSrDvP1(u zw;6HIEc%s~DT&jd&-ASzj?}x6Pq)V5L>!m1yi9g#1UvW{nMIvOR`+u4`euqJe}uqW zRLE$;%%->6@owS_G$=zX8fBzKI7U2tr)TwTgR7Y;WhRY{ja(R-jrm><HX=2&nJc~- zCw0Y&$k!bm=vr4cX=ZGlBAj$QaY+0sk9UqpkSFmc_{h(7(GeBt_1CW2=EE31r}wgK z8@CpN35?vbRbqwFmp|~;RUGH5uU;gAwydWz)ssov7FRg=LUatgZRKe`Adm3KI!~Z2 z7(IGwmFD`Jq~h!`->v&f7<$2h_vP;h{$|heuzgk4y4V*?xA4X7*g^YcVPeF{v&1h2 z(kjUuUC*=`V<iHr7#?wc?q;oZzDYXY6|8V{w7<%!3SX`Ezv{VAl74TK?qScAcw2tV zPn{gd{Nr0fi@FJ}R32IgUB`*RYcPQ<QphX(xCRmVfsA9j`o)g2Qk!dHtFbIn4wl$+ zhsFBzegOfsdn2Z7AFYHw{*4JkItXQv8ybzNQE=FxC@Ucy&htl#S#o5nZ)d0XJD2B$ zZ>dAiUrv5{dCy|4l0C`rdCF)(<wCu-aW~*9)j}NwM=Gxh30>O+J5VMM8Fhpt-Q()6 zWloUW(bm={hyuxKJV(5(+2tBOwa5|wdZ%9a?6U+-aMv%4IG*Q~k`?s7;(~1iJ6hDO zGKo}jB~}JMPF$I)+GPb=d0AVfJB>&x))KVp*ZDu2fBFbz4>OKuL8wp;C7;uD<fRDX zD?{z+k<Kq#@)?<1YV!e?qiIWTZ#NB-UVbKggmR5>v;(es+DWUC6zuPDACu3f!N$0y zT9%L=Zy>VOuh9Ib@BJ0k+_o#XR?3AuOJcj?*xFh5Yu9aN1H;^T1B*^21Al|HC~WK7 zgWU~fr+1*cOo(l&rf*`@0+AxbQvt<QTxyoRnDYoTn&~(59I-))E8s+v;M4!AVmZc0 zwwTcD(vshsMtSui+n^R537Ii9pZc~}!vdp2#}3@LN?Mt9hN(?l^^3fi$qn@*;312} z4raS*t~!mCZt#R{9m6a2p_nfoJsg64hUp3~+V*^<eU4&ko+6`Bs04@Ym`cBl2`)g6 zj%I##+(zl7-Qim`BAv}vC;f^Kl#uz>k&%<%B-g0XekUm9TL>~+@-(f=-p<&aRwR|7 z)Nxznz=&omLlL&Z{bAznp+uYi)t?O?LJMXToKM+6f9{1RVS&oJM*7kdr-rh2$nWiW z(~K~l`gC6^-o|Ap=LBBwxU<5>o5qTYNc)FbaRWK|?afa(6AuHOD2!XR?>af--`@q; z?e2H~7H~wP(fEzbph9?ul7~1ZNE38`WZ4V)eb(JX7FpE_9W@@ZAC?hl7>s=hUv^t^ zfMhxuMMv{*vaYRiAm-K$nR0JGd?8}52uf0jy7sZ#?QK0_?Uew^6amUi=7*fsBcpye z#XWbolr&4?HmT9Wx5pj8>_3&$YxlZ3u{Nm#SxcM`uwvgSLfDPy5e9zy39ok?_jeBK z8#sL!a!DSb#irf0_(jd~WYP{LpVs;2xPQ)Zsdks|>d9QPD~VlscFDQ&qH<1~{el~K zZ$`+OGl3&OF`+Ps(!1)0I@#$3v;ZHfx41|onHa=+@fs;aiIB#uY$m>Vm5>#OgFw%= zm4OO2jjUnx@<U)@nL(%DLr5Vs(K{epFJHN5W6r<PIuP%9nNMt^9$-LJElE*CfS?PO zvcz=$Gc-gM<ZEJvJe<mHZ_?3rembag?k-YtE_J*jgg@PW_qbaK5?KYlCtFAEHmQ&2 zKwb5o&hfeu*~)QwF{pJ9u?OP8G7y+H8h_)WyyK>cXqMo@?CoUU&9vAoJ<4RDXSdxg zgC6hIjXScnr94(vs&#MnCqH=lR07ZO3q@e7q<$fnL5us&qBG+H5XEu4fiUse8X1|8 zYhvbwUD<IRriH_F`8$^NpX-CT1>reoK#X)J)E>{N9UYxkhu3Z1ufyrAdOUQoItN7y z8CMg2uDG_a0f-2eGDDVa!y$yw6yivAafVn96IG-+4{SFnN*@=zqf4}3|L$P8=#(xQ z6gXMMK3z2Wa%{ZJkTHi2HdV!x09ACo+-FNDd?%Mui$;Tk#?$-b6zLJl1;z`ZrYz3S zL-#}BJ>xFlW`!)WXY?*~$xhUqagElzB<Um2`y)86HxCTN=S^+Le0_gTXRa;}h(Cle z=MXxHc0wo%Bd%1JYDi-v#DpQ?Gknmxv`1aZX68PzL7tl9TST|Vsek9z#h(Pm07E{J zeVv3tX}MrNG@3Z&;4s$IXG^#x8X;S`CO0Kn1II?Sajg@HTDEIo!;B0oYSI+vxk@N_ z<E=7t7-y4pP&(gzmD`xe+FLH`TKTYh;Ik=65$pDfTG+_E`19FEX=jHPjn=lbMu{FW zvEykAH<e3Ho#L75S4BlBaOHfDsy)N`-2`2e6qyi+nti(Z$X+NCax#5fNmk{QHVO_J zeYMZ&^?rof%k>z0h@{NWb4=}v=m6}c?`F!Lrzz1vFW)SPxNSxaeyi(Dyu}c057C9{ zrB=PUjt*_;U3=)EugDY$>^d>7Xga}N`LbV(RY?zTUA-NZU#-k;4o{O8j{_x)jhzJ% zwK*#8-s?BM8=S+2Jc*?bMne9H7RN(aAg_<YCS^Jp$vBKRxNb5?+Za>5BGAV$tz;zW z1Z~TzTWBTzMDC_L-x7Mu7>|(DuRFv3m{j--8R$|unyoKy(v;?jAEEr=thSjB*XxfV zgO|T;gH!C-%nQgxIL?3f*-haj&s{cA<SNz5Rm?P9(b|>?biFu`XHpfpIoqx3l&A}8 zzllLYMw=(1F{|ZN3PAgzV>+D@%^gK5z@?C)_H0!);O2J(wQukB`K}n8Q_S^pzDfbl zbFpLTq?vngD*ScXMN&WY{aTFwg*Ej9NZvfc8YE;_@Ihfy__gOYei=T(El$!gZ1qOZ zx@A0nZ*x;b{<81>?PW_+75?=N1X2tk)<~gyaONvyvtkIQZJ0FBIO>p;6!SjoX`}JM zk%{ll?NbXn$r-f7T@IK-!0g;93lYvHuEbhs9pL{Q;TQ|JBRKd0;?n@crO{FN#k!xx z5@7i78YU_f&)($Kq@;*UGw5SLWInc_?xp~f{Y8Vu$9Ym<xK`72JxfG=T_%->hni8; zc%#5qq%3o>@~u86TXS>Rl`Q1fjT)_E3wwH5#=_$D2qrB?4Lk5TQ`ulrCiW<u4^kWG zGuWlg(jAaaE{k!Gz7jBl{`LC-S62qLpll1)axw&ca4_ei4n}L`1YevIo)C{+$axg0 zm}eq`WO2mawPtNl3ASBAT7}BD4DR{*ovSvkIy^oqPkEpvSZrOi&7pWTkCD;V@!~ub zT1svD5?#BO&0Y7+&0GJjBbVfiW<r1tB%s5AX&ci%*LVWpft|+sKE+aHb130L1Kh8W zqQs`M0gS*1VBVrq*!zHl+>DyS?G&JZR~+GbsJTq91yB6~4w-uBg=1jO_(`ty7@3fp zX3GNRrln*@(`ucXB4J-4!6psV3WI>gj14E|9U9G1Q5Sig%6MDz&$0HflMeG@Cfiql zK_ot4Fcu4xb`&1mmiE>hU#27eM0&UOr`JMxVhfHGQiwFFLK;SL0R=MJ8LsfV6SJn_ zx%;Mzg*QLA4gBUhJ4)I<DX~NXje3Izpb|w<08OW*s~rwqqGwLMDSiG_F^TVUQuE;7 zme1n=Mqd>u(P*j-yZASC$q8yd-C(=ML!S%6^05F+c7-FMCq9>j0UusLu3$IF)iUUO z%Mn2l(^@ev$`bp4exOaYrHV#qG<oYfDV=OFudKCM&v*a8@?Jc2wjQwZt7LAV)i_4Z zIXU2b@`@-%vKd(RI{ch@rT_4OM&JVunlPEX9#r?TV@>_~6-|~<4vNmIiP|I?z$HqI zQaw6s`Y_o%X;cG4r^95~C3T|Z0QK9NU$q3U9}E}(1G+b5vOoz$L{mZO=}Oqt&?6mM zOI9Fcp(SYrhm|I^%tT9l#PH7Hau2r|#8-bg3Hoa94$L_ez}R*5c1C+1Qi8#NXY2B+ zhFtqi^9Qm59H8=Xoj|AG>F#|-LiWKJP-LECD{R_oMnG5UPZZKFY@LC*{Vm{SSDP1~ zP(w)22X-DAqb*UcU40!6a|pe~edsI{ptCd!fS|KZYpT0Zqn&G1uSO7%awI``g8ASc zMZi6H470$hH4xdLV!>(nRS>0Uy`Xz~sO}Kf!_Y*1gvW&WNe6)GE!ritD6nyJnIKE+ z*C2E5a=P17Dk;DLPc(zWY;cZk$U@#=dfO_0ze}h5ePQkN5K;UAL~hg-F`}?3N!fLZ zTSSP-9E=}4V08hg*^r#744O_x@B#X?xr4jt$lczT2Zw0`4$E4s|0rdNeipt{IT;zo z`i$gZ&7coJZ)ix>98D)7STK3U@EX9`G2p;R_~n!s@HwC^Kv0nCv3L~E_Fqp@G*F-h z$5bZ1z<v$*ED|yi@LdiXE!6*dLi=F|%xus#<-@=BT^|5AJj9fTvH%Bq1IzNCe*Qa@ zf9>Bq05({G@Sn1PVCVD*ugE)=yZr$v4@F=CpCiI4MgFfRAi7KS5F8#Cdi}LGeFgX% znGW<&lLs%f0WJC?-f@QY*Pa8IS@fm8Vf<~(rzQXZZT+cG+W)fufAq#b1^%b;{}VmW zQW{M9%X7csK0rOKk6Aru=7p3;D>a5THGnxJWI>>d>}|D({{;*%oLN(Pm5TobOc4MW zRaMwSczpoO8({PI)Ah{`!C(9TJ3Rf<g*eIpVBTP{XaBW-lnDSvP@oj^F96=L0)QDd zE7blMFu-6KEMoHb3jiq&pf>MB%H1*k+S>!4TbTLA^)Fxw0l;uXB&+=k7*$~SW@gNM z{EPk?AXr9jR8O(~wXX&~XQBO1V1Fo(CIzTX4TY}gzxMxW{QqFjhgbx)^Yv|iQP;l- zG)bS1o?>Pzz|tF<IcwrxQerjL0qrY+wC9S-Y>l;y-$hJ`Y7aeOFF6Q1se4}5w8b+! zy-?mFRy?Tv66AajPLPYX=dtz9*7N`=G2)}@$#y?N5e>@WdHj;%`s>)3XoK%4E-YD( zxom$a0-OVdwZV=Ww8T&9R;F#;w7?GNS04=tP+IDz?4paQrutgfHVvx~?T|&78yg1N zk2h&ukI<(-9va;o#OBssk|}0vwiz>y7xujW!k%2_qyL=p$}m}_g1wSXX$xoIKuyXH z=BXgvqVs$Z3$(wq3U2XgKdv9ww7nnAv7Y&XD;G`9M9t|vzMR{?u*#qQ&7jSq$e=M_ z^D6LiPdD6X_K9SNCO)6senRs#G5BRe=#Rk#-XMA&QbB&um2H{kg8Ex$sO<R7N;7f5 zCbMMgZ``@Z%pKjt+inU6=FF1t@jf`UH@`mF4H7%=hnBCHvjZ+d2^`5TN9{k<1ng(H zXD2i}6Le2Ae_~oC7g55%$GwUvL&7?;LJi;o;}x%a#O&#C5n&R?Ik8k|)l4~+iK@yl zrQ;+n4{W=f7u(nw`ZG61ZQ`})8)QHHA{zY!8K-+%$={NW&vnmu?S&Ll!lS<H`Sy)K zO`kbA^zz%zZ`0V2U8W?_%Zw&)phm2ImzB?JEjC!W@ABI?T0%p-8qVEYH%@n9u&H%2 zTqMKi({z5WsBII!rhzyJV-<eJoZT#nMH%Tz{h`-cMsAsSgX;&~MaK2dGRJ|QM+ny$ zVG|Iwvy@*K-OKIZE_2M)Qc+PdC9=WwdQF)+|6i=EuIOy3-*&{P#qR%jrR3R`MSTt? z<~Y*rXbw*=?55K6iBA?#9^rU?A>0NH?EMsxbRl~E-0F3E6v&|yyJpfXq@jwU2;xLy za*f8QmoYW`wRuX$(1|ua8Q!yU_!$B&>Jdis?r!@1rtZb145>eP3@S8K63dTnqQ%fE z{jP0mPU2pjWGvH+I_}d=ZM}!@0v#otdOYq3U-IaZuFQ$CFx+Xp^(>$fR*>V3?%iGb z_|I(N`wJ#v4<w-`6kAxXBu$>_SFgv+^TJ&}&!2biJZ`k71VMP@hnu#(%c^(1&xQZk zer~8wm*Uhv<dgFKd5e^D4x^(ZuyF|NR+;W-q7`UEKiI`hMvx1}aQc<>ZX`WkreiUk z`HUNt5jRZpYjCl!cX$FzmEtvxFe{@F90hN%V@>O)v=jUZYwRacQRUW&)=r$V!PIMW zm!M4EHs%&drBJ-DS;deeA|95r0P<M_B5`Lob<<9l-|I;S&ow1*(|^q@TXwkIZS#d1 z+NzD+jQZs>4u1#XQzR@=G^xqfNCq}?MVj?XY~J=WCPoLOnlE(2GCCr3hbIT!uiWZg z-Ptc327b^Sey*Y3=n>s!b;#i=XDPJD_~wV*pik+ck8^bUq#3$gEg|6XgcxUyNF*el zzA;67(^KuyTTeIg=R=yrP<#iezG|%TX{ZtJp5A)P%=9ctbJ`k}v%2;4BctWn0v)G7 zJvEU$4)Q1JrZWSaWsQyC@<;X?Ev}a5jgU0mHfDp~C_PzYkA@bbmU?mHl}KZ!7BMT9 zwbKBPRJlrUfTQH^_YI}l`bB}JSx|y<aWUJIq1vA$>ob|al5EqVg0`ZGQA;Ki{@M|Z zg67xlxHx~);EQR{)0aKrwHPFwx*mJpUiwSlYL<~#vZp~U@ajOXH=Rb{7k25_4K6-w z^_yED4-X#*Uq$H@Tdxqx+d$Fv$o;ZR$7?Elv}SiUf5d^^V1Vh5k;9?Yi(5iR-tCpc zd7lrkeF@u%wURTW+H_pot(0k3K8p=<J#NQ&zZF;(;yBn4xl~84{d7Neu(?4A5peHN z>$#K6P#5PI9Y{6#{uY6KJBp|pG*|a5)d*Rsy0(T^*7b%z6VvWcyL$amRCvlk-C@;T zcP#z6{D&wHl5V;~2lDaM-h%VT7jD*iaW4i>CZ;;zSR{|J!-+{G1KUOKzV|Dqyl5C^ zw>50I>D|-1>?Zwz*X?IgYdfHCo#Vsg)*mX2RVmaCH$Q<NWYxESEjwV?*s<Ff>{SeT zVzd51#?5ff=v#{?B|YvDYeQBq&d7m-&puzWYV0t0fwT2x!=6B_>@Odi=DO*1MQ*S* z)UC6uYSmJp#Dfof_O_z`t1!5%u!6(8YI?EN^RlERQJ6r_U{`nsx`kqN?{jFlE+z%5 z{i1GsB1xLvE<J{PH+O<K5_W%K5TGzb`xP5Jmfc@^Z5CSwTij6c+tByJ<zyzGWLoFh zwwSFs^`2c45ODvvzhb~?uwUxZ8$~AYqvRSk0n#wVLFtQLDUmpv^C~6eRsnH$zSMVE z5v<K);X6rZx)fYqOwy%vB{OxL#EC=i+V9(5WpMuk%XDmaRD6-oG}KMBoyfC~zIpxB ziX#QFW#U_^c-}EDYPd6EmUC<ie>rx)fqTRsQF6g)UFzw8XZ&s$H)l><O9BU!Tzu}` zL}wj1cFEMxn>Gnn5hV53h#Q>kLA1FPYjuzRrZ=H-xtu3v($({rVNUAwdeU^1VZ`lo z#ym{=74rGip&>O%uhT}A-Rr)s-evC-v5<P&{DKkaaJWA)v?2bu9qO>sU`Xsh-Ptk+ z7mjk{;gP4B8`@QR-`-eeEa|o4F;_^5{)LB*PUDB+>({;tX~4lP-y`~_x5<(x0|l@t zWv=1#qen}{D(U41SNld!?N_}*DWrc3*qPuQ&_C>fu&x!$?BgdMHhcdp4}X;atI2}L zGH?EUjsc#<%wIA5`~08x|3CXjYARa;<BP>v=smO~Nk|W26{X2^a;qs?x+|zE_HtIl zvpiL8mTb+Yuwk-eZntn(2(+J3J;ZO^$WzgyY@_aRwOCGRix(??f!gkHpYcuz3*p6c zxpEq%WtDm|I^=@S#A)v!QrFbEqSWlr@sjqS#eg#Nyly(FDgsrLaLG8;M*Q1cn`pNX zrN<C~iAl}zGo8Dms@qkg$Ku8#<{p_s&nlK`EK5=k6m1IJgFJRD1i@gxmIQN8$60}N zl_11=t14Msr^Sl)QmJ6{V%D2|OZSEQ%G2oNTbxhe;EMns5NIELzvAUd$>-SdTuI5T zUEfY_jLKe$hLfkWOLG_gN~CV3ymEL&+pBmxzOzR#moi7?f)l=mF;9isrl?6+EV_Be zY~beoOQI&10b*mj6)wb`0rTvfP&*<r`6`9oz0<r>aLtc@fm>19t<j%{#OS@a-_TV$ z*X(T%HE4X%I%&1Re0+1_zVoE`en5XSUY-h+YV4{%)(;Od9ZDL6<*Z_5VXOKtS;M(? zXAX0AK=iFCCA2H-AhxCSAfpalD2y%nWsRCoBKU+m)m+^HuZ&GhX|@Pk8(llmoLdkW zW{Rlwi>!*1*?j89(T0xAzdznCv0YE^+!3Z+!;i83;qwl5Eh(g{_p#p@l+Ven%Ur%l zRFVmfc#7&{^m)QLa(J29gGQ-gfzvf0xYav;EVG=}lVx%`$t?uwtmt(&xRVL4eDT{H z0$Na4s6G2oe~c}dPzXJ*utnVJfh!5I36nWK9=p1%hC>BxPasRP12M9{6AJVA`4+a- zVVdpWrc$UO<L|wTFR=Xh!NQz%xrX)&(%EzaLmeXmIiwI|)F?9BsB6Q0@Yc8_e9dI# z-a}jqeY)gn=k4z(rF%_iLo7#JZ}YoeNSopFpeusHI@Yas!-N`ih_<r*_E!S-3%XuE z_{BiA#ovX#yxo8Ou9cT{Ewf5ts@^n5KdzecwA`t%(=IBg;^sGGsibwcP#%QP7Gh7t z;>~<lVAc;KnVc=dS~z~XaV0J*zezn+;d`)Hq|zGQ`M97(%TCAd{Nz`!;$)5HBV@EN z;<&k`q?@bJ&R@%40&7gWGplyv71R1|jwLq-YWi{&FNia*VBzQT;BXJO-q=l=l%pHH zjp}aXbX(tmD>;z0F6H7P7rM#E&hO+NeWBQuLjnF}!MvHbqkEF1CILmk`L{$nMssDN zhC%o$__}8mU#%O+>UI^uPpnkr&Y{glrBRg2&>vRmHU^dga%?h4Arr{fP>-#{N~ks) z9=i6?;L5m#Q+#TEi+G6q?Y#vYO~C%VwP5zS54=)wmCNb-j)cqH-bjh2UCXsSc)%p; zs(3Q!5}s&(7H~1U$;sDyL`m*}>T$_eP`}%3x@SL2GU|)RSMb7du7D98s-glO>7|6g z4%FI<rat$~rRrmbMdFlLJTkw#`ryX3aBD^RIc(>5gzjxN$59SZF)w+`1<H=vU`l&Z z7+Z3H9G00qtmz=W${lp^wYi<`dKC`k{1Y>1(aDOQ*x(f4*?v^L-ptTI-%11y%RN=* zk&T+)mE{jC_K%(F``SFWYo1cNP5TuYC6ajJ?m)jtfkCBKZoTJ^-=5lYQNs$`Cdv&p zDId9nq%hVw&P(aDIMtt3PX|FkI*rN+ZX=gZJD0Rn+Ulx!dkb$?3AE*NYh5W?t@oz` z1VJ!vnO5w}KVOU@lQ^E3OgU7HMKvi~x?5HW)rBj{q7ksr*k#1DAGN8gxJj6ao(<lU zG0NjYjZG!9Idto86+~YAc^N=0<{-MBc$Fcsba7u8sJtrUfsiz2?X(76$oxE;Jsb%% zh3EIaV_PV;_eB_3ws`H=74jWIz6lMweLt(SUl45Nf3x!gGDN}S8yzfzY?CN5dgZmB z6En8+Zqq-@tWRK8glXhJZEyFAoG~VZxNByQ4fZln?QB{OhmT$q$QxOISty&l+PS|s z=7Df38(0O`Z79CHsqvH)w!j<V0j=YwsI@Yhj&N+@<Bo5~JC+hsN2h*<65rN~UVicH znGy<%B&J#>ixT`PZp|sVrRua}4SJ&YvJ>KvB~4S60()|28m~u**t1AlL9x#*YX%N7 zeK6iv$cg6i3}&j|5cMV94>9>jFuERE&2-OEryk5iH?O%K<2J{sx{T{rM6!2ED)n6N ze7$g@CF>kM4;XT-lbAFp`ab+Yh92!TND3}`pPF{m4$|BhCG;w?wXTfFT5)u*#`5`P z*b*+ZDW#Bb1A44Xxu<Dlan*6oZ2Kki2xe&L9;ECiGlbU$wSphg{MJilbR>I)6cU0m zGCantva5DypZT_PuOXxbx1rxRyyCOLfNS<#O#<4BXCz+zpSH6q{JUZZ5P6!|1lqDa z-a#xyH+Pna1<a_#SkNH1pSRFtGH&pZQV<(<RmY{>@V=NZ>-{fk-HVl6#6z}#l(96m z^BqWs%hlF`=@tvILfu9-?UAWd<cs))s-ZCKiX@asa=CQUDz_9+z``)n%|)-$S{8wQ zAHeJK@|3atO%5E=aeq(<)3KdNdM6zzyHKvjnM#?ianiwHU|*@JGT?EbkftQ@{zY&X z5_0!Xh<psGXXh!p_C&<D;||U`70)@3XTjPr5sTQj+9DY>i*imU*{+qNci2Mi&y~y6 ztkQnS2f-Vf0{{GCU&rR-bA^0%qOeHSz@AeR7n!+pS@E&E-AnKsHO$t6GWhXVH0;P& zsBz$NPcwQHx}rSMmKv*qQ_sD1Q`KX*!<);#X`WTe3?f(IS#t1-@i9IZe7&nsFiEfD z^bSt?2jPrToV4hz6OikWeEEf9&qs0h+G%MUAz!JoOm{BsSWuZ4GgG2i2Ah~-!fbrU zX(^uV`o_`ve0}Og{4CoQ^eY5*p%VSJ=~%<=Tod=7Ks%U09D!A}5Rg3q4D?sT_rJyU z{Edo!9$>5*c`4gx`!)^fHnftPO2(fvsVB&|sRmFj@H7~EV2fNfZC?{au5kNWPbmky zpH>70dicPV0YZT73OBvh!0t<#*@Zml-8^k$*%y0p^6)m9bB2BHuqrZ<*FF)8S7H-P zU&GynhWE7Y`CH<DGCQN>Gvv*xCC?P!9z{ql-?mVthp~D;CJpo+O@DWr$l`-dU?({H zRZtc25d-o<c9RKns6~5gK=#$vo`n8Y%jS~?^R`g|^7#09p$P$W?&Hey!>cVwfDn=2 z{UG<w^U~LUDEX$(-qv`aZg}J?Jr6)IvI&U#rf$?s-iv#XWb0Ht69akZ>MK$48x+c6 zX+tL){4!WzLFyfZLiN_+9I~HA8~VPS<nbVf(&e4oa__XC7E88wIH)6liRnYIiTAMN zg}uneP^`_kn7V{-#p3j5miycaN4-pgz{*AJ0O|DCuhle|orK$GPY?VWY&Mg{`t|zX zQDFFD*<@e5yj`9B{9`%#@M<sr158-qYq4b29D_WwdYt4;mEw^0*&e7G$$#LOxU_|| znAHf>>@?7ge54oAuI^wftcD85Z1(|!LFXg!Y`nvL5l<@0`0;0|a~9Zk+&;BV@P4HL zsOEwA^7`WQAfLgEW}#L8+dl!j3D{MWZ4LEYC5zQAvxuZBiSnp)c4k!y`hK$gkqB(O z	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 literal 53240 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 LNkvXXu0mjf%j11) diff --git a/assets/js/just-the-docs.js b/assets/js/just-the-docs.js index e69de29b..4d297991 100644 --- a/assets/js/just-the-docs.js +++ b/assets/js/just-the-docs.js @@ -0,0 +1,125 @@ +// Event handling + +function addEvent(el, type, handler) { + if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler); +} +function removeEvent(el, type, handler) { + if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler); +} + +// Show/hide mobile menu + +function toggleNav(){ + const nav = document.querySelector('.js-main-nav'); + const navTrigger = document.querySelector('.js-main-nav-trigger'); + + + addEvent(navTrigger, 'click', function(){ + var text = navTrigger.innerText; + var textToggle = navTrigger.getAttribute('data-text-toggle'); + + nav.classList.toggle('nav-open'); + navTrigger.classList.toggle('nav-open'); + navTrigger.innerText = textToggle; + navTrigger.setAttribute('data-text-toggle', text); + textToggle = text; + }) +} + +// Site search + +function initSearch() { + var index = lunr(function () { + this.ref('id'); + this.field('title'); + this.field('content', { boost: 10 }); + this.field('url'); + }); + + // Get the generated search_data.json file so lunr.js can search it locally. + + var request = new XMLHttpRequest(); + request.open('GET', '/search-data.json', true); + + request.onload = function() { + if (request.status >= 200 && request.status < 400) { + // Success! + var data = JSON.parse(request.responseText); + var keys = Object.keys(data); + + for(var i in data) { + index.add({ + id: data[i].id, + title: data[i].title, + content: data[i].content, + url: data[i].url + }); + } + searchResults(data); + } else { + // We reached our target server, but it returned an error + console.log('Error loading ajax request. Request status:' + request.status); + } + }; + + request.onerror = function() { + // There was a connection error of some sort + console.log('There was a connection error'); + }; + + request.send(); + + function searchResults(dataStore) { + var searchInput = document.querySelector('.js-search-input'); + var searchResults = document.querySelector('.js-search-results'); + var store = dataStore; + + addEvent(searchInput, 'keyup', function(){ + var query = this.value; + + searchResults.innerHTML = ''; + + if (query === '') { + searchResults.innerHTML = ''; + } else { + var results = index.search(query); + for (var i in results) { + var resultsList = document.createElement("ul"); + var resultsListItem = document.createElement("li"); + var resultsLink = document.createElement("a"); + var resultsUrl = store[results[i].ref].url; + var resultsTitle = store[results[i].ref].title; + + resultsLink.setAttribute("href", store[results[i].ref].url); + resultsLink.innerText = resultsTitle; + + resultsList.classList.add("search-results-list"); + searchResults.appendChild(resultsList); + resultsList.appendChild(resultsListItem); + resultsListItem.appendChild(resultsLink) + } + } + }); + + addEvent(searchInput, 'blur', function(){ + setTimeout(function(){searchResults.innerHTML = '';}, 300); + }); + } +} + + +// Document ready + +function ready(){ + toggleNav(); + initSearch(); +} + +// in case the document is already rendered +if (document.readyState!='loading') ready(); +// modern browsers +else if (document.addEventListener) document.addEventListener('DOMContentLoaded', ready); +// IE <= 8 +else document.attachEvent('onreadystatechange', function(){ + if (document.readyState=='complete') ready(); +}); diff --git a/assets/js/vendor/lunr.min.js b/assets/js/vendor/lunr.min.js new file mode 100644 index 00000000..9960ccd2 --- /dev/null +++ b/assets/js/vendor/lunr.min.js @@ -0,0 +1,6 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 1.0.0 + * Copyright (C) 2017 Oliver Nightingale + * @license MIT + */ +!function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="1.0.0",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.utils.asString=function(t){return void 0===t||null===t?"":t.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(e){return arguments.length&&null!=e&&void 0!=e?Array.isArray(e)?e.map(function(e){return t.utils.asString(e).toLowerCase()}):e.toString().trim().toLowerCase().split(t.tokenizer.separator):[]},t.tokenizer.separator=/[\s\-]+/,t.tokenizer.load=function(t){var e=this.registeredFunctions[t];if(!e)throw new Error("Cannot load un-registered function: "+t);return e},t.tokenizer.label="default",t.tokenizer.registeredFunctions={"default":t.tokenizer},t.tokenizer.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing tokenizer: "+n),e.label=n,this.registeredFunctions[n]=e},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,r=0;n>r;r++){for(var o=t[r],s=0;i>s&&(o=this._stack[s](o,r,t),void 0!==o&&""!==o);s++);void 0!==o&&""!==o&&e.push(o)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;if(e<i.idx)return this.list=new t.Vector.Node(e,n,i),this.length++;for(var r=i,o=i.next;void 0!=o;){if(e<o.idx)return r.next=new t.Vector.Node(e,n,o),this.length++;r=o,o=o.next}return r.next=new t.Vector.Node(e,n,o),this.length++},t.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var t,e=this.list,n=0;e;)t=e.val,n+=t*t,e=e.next;return this._magnitude=Math.sqrt(n)},t.Vector.prototype.dot=function(t){for(var e=this.list,n=t.list,i=0;e&&n;)e.idx<n.idx?e=e.next:e.idx>n.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t<arguments.length;t++)e=arguments[t],~this.indexOf(e)||this.elements.splice(this.locationFor(e),0,e);this.length=this.elements.length},t.SortedSet.prototype.toArray=function(){return this.elements.slice()},t.SortedSet.prototype.map=function(t,e){return this.elements.map(t,e)},t.SortedSet.prototype.forEach=function(t,e){return this.elements.forEach(t,e)},t.SortedSet.prototype.indexOf=function(t){for(var e=0,n=this.elements.length,i=n-e,r=e+Math.floor(i/2),o=this.elements[r];i>1;){if(o===t)return r;t>o&&(e=r),o>t&&(n=r),i=n-e,r=e+Math.floor(i/2),o=this.elements[r]}return o===t?r:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,i=n-e,r=e+Math.floor(i/2),o=this.elements[r];i>1;)t>o&&(e=r),o>t&&(n=r),i=n-e,r=e+Math.floor(i/2),o=this.elements[r];return o>t?r:t>o?r+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,r=0,o=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>o-1||r>s-1)break;a[i]!==h[r]?a[i]<h[r]?i++:a[i]>h[r]&&r++:(n.add(a[i]),i++,r++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone();for(var r=0,o=n.toArray();r<o.length;r++)i.add(o[r]);return i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this.tokenizerFn=t.tokenizer,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.tokenizer(t.tokenizer.load(e.tokenizer)),n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.tokenizer=function(e){var n=e.label&&e.label in t.tokenizer.registeredFunctions;return n||t.utils.warn("Function is not a registered tokenizer. This may cause problems when serialising the index"),this.tokenizerFn=e,this},t.Index.prototype.add=function(e,n){var i={},r=new t.SortedSet,o=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(t){var n=this.pipeline.run(this.tokenizerFn(e[t.name]));i[t.name]=n;for(var o=0;o<n.length;o++){var s=n[o];r.add(s),this.corpusTokens.add(s)}},this),this.documentStore.set(o,r);for(var s=0;s<r.length;s++){for(var a=r.elements[s],h=0,u=0;u<this._fields.length;u++){var l=this._fields[u],c=i[l.name],f=c.length;if(f){for(var d=0,p=0;f>p;p++)c[p]===a&&d++;h+=d/f*l.boost}}this.tokenStore.add(a,{ref:o,tf:h})}n&&this.eventEmitter.emit("add",e,this)},t.Index.prototype.remove=function(t,e){var n=t[this._ref],e=void 0===e?!0:e;if(this.documentStore.has(n)){var i=this.documentStore.get(n);this.documentStore.remove(n),i.forEach(function(t){this.tokenStore.remove(t,n)},this),e&&this.eventEmitter.emit("remove",t,this)}},t.Index.prototype.update=function(t,e){var e=void 0===e?!0:e;this.remove(t,!1),this.add(t,!1),e&&this.eventEmitter.emit("update",t,this)},t.Index.prototype.idf=function(t){var e="@"+t;if(Object.prototype.hasOwnProperty.call(this._idfCache,e))return this._idfCache[e];var n=this.tokenStore.count(t),i=1;return n>0&&(i=1+Math.log(this.documentStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(this.tokenizerFn(e)),i=new t.Vector,r=[],o=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*o,h=this,u=this.tokenStore.expand(e).reduce(function(n,r){var o=h.corpusTokens.indexOf(r),s=h.idf(r),u=1,l=new t.SortedSet;if(r!==e){var c=Math.max(3,r.length-e.length);u=1/Math.log(c)}o>-1&&i.insert(o,a*s*u);for(var f=h.tokenStore.get(r),d=Object.keys(f),p=d.length,v=0;p>v;v++)l.add(f[d[v]].ref);return n.union(l)},new t.SortedSet);r.push(u)},this);var a=r.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,r=new t.Vector,o=0;i>o;o++){var s=n.elements[o],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);r.insert(this.corpusTokens.indexOf(s),a*h)}return r},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,tokenizer:this.tokenizerFn.label,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",r=n+"[^aeiouy]*",o=i+"[aeiou]*",s="^("+r+")?"+o+r,a="^("+r+")?"+o+r+"("+o+")?$",h="^("+r+")?"+o+r+o+r,u="^("+r+")?"+i,l=new RegExp(s),c=new RegExp(h),f=new RegExp(a),d=new RegExp(u),p=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,m=/^(.+?)(ed|ing)$/,y=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),k=new RegExp("^"+r+i+"[^aeiouwxy]$"),x=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,F=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,_=/^(.+?)(s|t)(ion)$/,z=/^(.+?)e$/,O=/ll$/,P=new RegExp("^"+r+i+"[^aeiouwxy]$"),T=function(n){var i,r,o,s,a,h,u;if(n.length<3)return n;if(o=n.substr(0,1),"y"==o&&(n=o.toUpperCase()+n.substr(1)),s=p,a=v,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=g,a=m,s.test(n)){var T=s.exec(n);s=l,s.test(T[1])&&(s=y,n=n.replace(s,""))}else if(a.test(n)){var T=a.exec(n);i=T[1],a=d,a.test(i)&&(n=i,a=S,h=w,u=k,a.test(n)?n+="e":h.test(n)?(s=y,n=n.replace(s,"")):u.test(n)&&(n+="e"))}if(s=x,s.test(n)){var T=s.exec(n);i=T[1],n=i+"i"}if(s=b,s.test(n)){var T=s.exec(n);i=T[1],r=T[2],s=l,s.test(i)&&(n=i+t[r])}if(s=E,s.test(n)){var T=s.exec(n);i=T[1],r=T[2],s=l,s.test(i)&&(n=i+e[r])}if(s=F,a=_,s.test(n)){var T=s.exec(n);i=T[1],s=c,s.test(i)&&(n=i)}else if(a.test(n)){var T=a.exec(n);i=T[1]+T[2],a=c,a.test(i)&&(n=i)}if(s=z,s.test(n)){var T=s.exec(n);i=T[1],s=c,a=f,h=P,(s.test(i)||a.test(i)&&!h.test(i))&&(n=i)}return s=O,a=c,s.test(n)&&a.test(n)&&(s=y,n=n.replace(s,"")),"y"==o&&(n=o.toLowerCase()+n.substr(1)),n};return T}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.generateStopWordFilter=function(t){var e=t.reduce(function(t,e){return t[e]=e,t},{});return function(t){return t&&e[t]!==t?t:void 0}},t.stopWordFilter=t.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){return t.replace(/^\W+/,"").replace(/\W+$/,"")},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,i=t.charAt(0),r=t.slice(1);return i in n||(n[i]={docs:{}}),0===r.length?(n[i].docs[e.ref]=e,void(this.length+=1)):this.add(r,e,n[i])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;n<t.length;n++){if(!e[t.charAt(n)])return!1;e=e[t.charAt(n)]}return!0},t.TokenStore.prototype.getNode=function(t){if(!t)return{};for(var e=this.root,n=0;n<t.length;n++){if(!e[t.charAt(n)])return{};e=e[t.charAt(n)]}return e},t.TokenStore.prototype.get=function(t,e){return this.getNode(t,e).docs||{}},t.TokenStore.prototype.count=function(t,e){return Object.keys(this.get(t,e)).length},t.TokenStore.prototype.remove=function(t,e){if(t){for(var n=this.root,i=0;i<t.length;i++){if(!(t.charAt(i)in n))return;n=n[t.charAt(i)]}delete n.docs[e]}},t.TokenStore.prototype.expand=function(t,e){var n=this.getNode(t),i=n.docs||{},e=e||[];return Object.keys(i).length&&e.push(t),Object.keys(n).forEach(function(n){"docs"!==n&&e.concat(this.expand(t+n,e))},this),e},t.TokenStore.prototype.toJSON=function(){return{root:this.root,length:this.length}},function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():t.lunr=e()}(this,function(){return t})}(); \ No newline at end of file diff --git a/docs/navigation-structure.md b/docs/navigation-structure.md new file mode 100644 index 00000000..83516b67 --- /dev/null +++ b/docs/navigation-structure.md @@ -0,0 +1,22 @@ +--- +layout: default +title: Navigation Structure +nav_order: 4 +--- + +# Navigation Structure +{:.no_toc} + +## Table of contents +{: .no_toc .text-delta } + +1. TOC +{:toc} + +--- + +## Main navigation + +--- + +## In-page navigation with Table of Contents diff --git a/docs/page-architecture.md b/docs/page-architecture.md deleted file mode 100644 index b28f3cf7..00000000 --- a/docs/page-architecture.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -layout: default -title: Navigation Structure -nav_order: 3 ---- diff --git a/docs/ui-components/buttons.md b/docs/ui-components/buttons.md index cc8a644c..eec5deff 100644 --- a/docs/ui-components/buttons.md +++ b/docs/ui-components/buttons.md @@ -4,3 +4,103 @@ title: Buttons parent: UI Components nav_order: 2 --- + +# Buttons +{:.no_toc} + +## Table of contents +{: .no_toc .text-delta } + +1. TOC +{:toc} + +--- + +## Basic button styles + +### Links that look like buttons + +<div class="code-example" markdown="1"> + +[Link button](http://example.com/){: .btn } + +[Link button](http://example.com/){: .btn .btn-purple } +[Link button](http://example.com/){: .btn .btn-blue } +[Link button](http://example.com/){: .btn .btn-green } + +[Link button](http://example.com/){: .btn .btn-outline } + +</div> +```markdown + +[Link button](http://example.com/){: .btn } + +[Link button](http://example.com/){: .btn .btn-purple } +[Link button](http://example.com/){: .btn .btn-blue } +[Link button](http://example.com/){: .btn .btn-green } + +[Link button](http://example.com/){: .btn .btn-outline } +``` + +### Button element + +GitHub flavored markdown does not support the `button` element, so you'll have to use inline HTML for this: + + +<div class="code-example"> + +<button type="button" name="button" class="btn">Button element</button> + +</div> +```html +<button type="button" name="button" class="btn">Button element</button> +``` + +--- + +## Using utilities with buttons + +### Button size + +Wrap the button in container that uses the [font-size utility classes]({{ site.baseurl }}{% link docs/utilities.md %}#typography) to scale buttons: + +<div class="code-example" markdown="1"> + +<span class="fs-6"> +[Big ass button](http://example.com/){: .btn } +</span> + +<span class="fs-3"> +[Tiny ass button](http://example.com/){: .btn } +</span> + +</div> +```markdown +<span class="fs-8"> +[Link button](http://example.com/){: .btn } +</span> + +<span class="fs-3"> +[Tiny ass button](http://example.com/){: .btn } +</span> +``` + +### Spacing between buttons + +Use the [margin utility classes]({{ site.baseurl }}{% link docs/utilities.md %}#spacing) to add spacing between two buttons in the same block. + +<div class="code-example" markdown="1"> + +[Button with space](http://example.com/){: .btn .btn-purple .mr-2} +[Button ](http://example.com/){: .btn .btn-blue .mr-2} + +[Button with more space](http://example.com/){: .btn .btn-green .mr-4} +[Button ](http://example.com/){: .btn .btn-blue } +</div> +```markdown +[Button with space](http://example.com/){: .btn .btn-purple .mr-2} +[Button ](http://example.com/){: .btn .btn-blue } + +[Button with more space](http://example.com/){: .btn .btn-green .mr-4} +[Button ](http://example.com/){: .btn .btn-blue } +``` diff --git a/docs/ui-components/code.md b/docs/ui-components/code.md index daf5ec40..bc1baf2d 100644 --- a/docs/ui-components/code.md +++ b/docs/ui-components/code.md @@ -2,5 +2,83 @@ layout: default title: Code parent: UI Components -nav_order: 3 +nav_order: 4 --- + +# Code +{:.no_toc} + +## Table of contents +{: .no_toc .text-delta } + +1. TOC +{:toc} + +--- + +## Inline code + +Code can be rendered inline using single ticks by wrapping your code in single back ticks. + +<div class="code-example" markdown="1"> + +Lorem ipsum dolor sit amet, `<inline code snippet>` adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + +</div> +```markdown +Lorem ipsum dolor sit amet, `<inline code snippet>` adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +``` + +--- + +## Syntax highlighted code blocks + +Use Jekyll's built in syntax highlighting with Rouge for code blocks by using three backticks, followed by the language name: + +<div class="code-example" markdown="1"> +```js +// Javascript code with syntax highlighting. +var fun = function lang(l) { + dateformat.i18n = require('./lang/' + l) + return true; +} +``` +</div> +{% highlight markdown %} +```js +// Javascript code with syntax highlighting. +var fun = function lang(l) { + dateformat.i18n = require('./lang/' + l) + return true; +} +``` +{% endhighlight %} + +--- + +## Code blocks with rendered examples + +To demonstrate front end code, sometimes it useful to show a rendered example of that code. After including the styles from your project that you'll need to show the rendering, you can use a div with the `code-example` class, followed by the code block syntax. If you want to render your output with Markdown instead of HTML, use the `markdown="1"` attribute to tell Jekyll that the code you are rendering will be in Markdown format... This is about to get meta... + +<div class="code-example" markdown="1"> + +<div class="code-example" markdown="1"> + +[Link button](http://example.com/){: .btn } + +</div> +```markdown +[Link button](http://example.com/){: .btn } +``` + +</div> +{% highlight markdown %} +<div class="code-example" markdown="1"> + +[Link button](http://example.com/){: .btn } + +</div> +```markdown +[Link button](http://example.com/){: .btn } +``` +{% endhighlight %} diff --git a/docs/ui-components/tables.md b/docs/ui-components/tables.md new file mode 100644 index 00000000..a26082db --- /dev/null +++ b/docs/ui-components/tables.md @@ -0,0 +1,40 @@ +--- +layout: default +title: Tables +parent: UI Components +nav_order: 3 +--- + +# Tables +{:.no_toc} + +## Table of contents +{: .no_toc .text-delta } + +1. TOC +{:toc } + +--- + +## Default tables + +Tables are responsive by default, allowing wide tables to have a horizontal scroll to access columns outside of the normal viewport. + +<div class="code-example" markdown="1"> + +| head1 | head two | three | +|:-------------|:------------------|:------| +| ok | good swedish fish | nice | +| out of stock | good and plenty | nice | +| ok | good `oreos` | hmm | +| ok | good `zoute` drop | yumm | + +</div> +```markdown +| head1 | head two | three | +|:-------------|:------------------|:------| +| ok | good swedish fish | nice | +| out of stock | good and plenty | nice | +| ok | good `oreos` | hmm | +| ok | good `zoute` drop | yumm | +``` diff --git a/docs/ui-components/typography.md b/docs/ui-components/typography.md index 8fa122fb..5b434d5b 100644 --- a/docs/ui-components/typography.md +++ b/docs/ui-components/typography.md @@ -4,3 +4,111 @@ title: Typography parent: UI Components nav_order: 1 --- + +# Typography +{:.no_toc} + +## Table of contents +{: .no_toc .text-delta } + +1. TOC +{:toc} + +--- + +## Font stack + +By default, Just the Docs uses a native system font stack for sans-serif fonts: + +```scss +-apple-system, BlinkMacSystemFont, "helvetica neue", helvetica, roboto, noto, "segoe ui", arial, sans-serif +``` + +ABCDEFGHIJKLMNOPQRSTUVWXYZ +abcdefghijklmnopqrstuvwxyz +{: .fs-5 .ls-10 .code-example } + +For monospace type, like code snippets or the pre `<pre>` element, Just the Docs uses a native system font stack for monospace fonts: + +```scss +"SFMono-Regular", Menlo, Consolas, Monospace +``` + +ABCDEFGHIJKLMNOPQRSTUVWXYZ +abcdefghijklmnopqrstuvwxyz +{: .fs-5 .ls-10 .text-mono .code-example } + +--- + +## Responsive type scale + +Just the docs uses a responsive type scale that shifts depending on the viewport size. Common elements text elements rendered from markdown use a + +| Selector | Small screen size `font-size` | Large screen size `font-size` | +|:----------------------|:---------------------------------|:------------------------------| +| `h1`, `.text-alpha` | 32px | 36px | +| `h2`, `.text-beta` | 18px | 24px | +| `h3`, `.text-gamma` | 16px | 18px | +| `h4`, `.text-delta` | 14px | 16px | +| `h5`, `.text-epsilon` | 16px | 18px | +| `h6`, `.text-zeta ` | 18px | 24px | +| `body` | 14px | 16px | + +--- + +## Headings + +Headings are rendered like this: + +<div class="code-example"> +<h1>Heading 1</h1> +<h2>Heading 2</h2> +<h3>Heading 3</h3> +<h4>Heading 4</h4> +<h5>Heading 5</h5> +<h6>Heading 6</h6> +</div> +```markdown +# Heading 1 +## Heading 2 +### Heading 3 +#### Heading 4 +##### Heading 5 +###### Heading 6 +``` + +--- + +## Body text + +Default body text is rendered like this: + +<div class="code-example" markdown="1"> +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +</div> +```markdown +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +``` + +--- + +## Inline elements + +<div class="code-example" markdown="1"> +Text can be **bold**, _italic_, or ~~strikethrough~~. + +[Link to another page](another-page). +</div> +```markdown +Text can be **bold**, _italic_, or ~~strikethrough~~. + +[Link to another page](another-page). +``` + +--- + +## Typographic Utilities + +There are a number of specific typographic CSS classes that allow you to do override default styling for font size, font-weight, line height, and capitalization. + +[View typography utilities]({{ site.base_url }}{% link docs/utilities.md %}#typography){: .btn .btn-outline } diff --git a/docs/ui-components/ui-components.md b/docs/ui-components/ui-components.md index 49e68124..96088a80 100644 --- a/docs/ui-components/ui-components.md +++ b/docs/ui-components/ui-components.md @@ -9,4 +9,5 @@ permalink: /ui-components # UI Components -Just the Docs includes styles for displaying clear and readable typography, nicely formatted code, and easily identifiable buttons. The goal of this theme is to make it as easy as possible to write code documentation in markdown and have the Just the Docs take care of the rest, so very few CSS classes are required to render commonly used UI elements. +Just the Docs includes all the CSS you need to create structured documentation for your next project. To make it as easy as possible to write documentation in plain Markdown, most styles will require no additional CSS classes. +{: .fs-6 .fw-300 } diff --git a/docs/utilities.md b/docs/utilities.md new file mode 100644 index 00000000..384820a3 --- /dev/null +++ b/docs/utilities.md @@ -0,0 +1,259 @@ +--- +layout: default +title: Utilities +nav_order: 3 +--- + +# Utilities +{:.no_toc} + +CSS utility classes come in handy when you to want to override default styles to give create additional whitespace (margins/padding), unexpected shifts in font-size or weight, add color, or to hide (or show) something a specific screen size. +{: .fs-6 .fw-300 } + +## Table of contents +{: .no_toc .text-delta } + +1. TOC +{:toc} + +--- + +## Responsive modifiers + +Just the Docs spacing works in conjunction with a variety of modifiers that allow you to target specific screen sizes responsively. Use these in conjunction with spacing and display prexix and suffix classes. For example `prefix-modifier-suffix` + +| Modifier | Screen size | +|:----------|:-------------------------------------| +| (none) | All screens until the next modifier | +| `xs` | 320px (20rem) and up | +| `sm` | 500px (31.25rem) and up | +| `md` | 740px (46.25rem) and up | +| `lg` | 1120px (70rem) and up | +| `xl` | 1400px (87.5rem) and up | + +## Layout Utilities + +### Spacing + +These spacers are available to use for margins and padding with responsive utility classes. Combine these prefixes with a screen size and spacing scale to use them responsively. + +| Classname prefix | What it does | +|:-----------------|:------------------------------| +| `.m-` | `margin` | +| `.mx-` | `margin-left`, `margin-right` | +| `.my-` | `margin top`, `margin bottom` | +| `.mt-` | `margin-top` | +| `.mr-` | `margin-right` | +| `.mb-` | `margin-bottom` | +| `.ml-` | `margin-left` | + +| Classname prefix | What it does | +|:-----------------|:--------------------------------| +| `.p-` | `padding` | +| `.px-` | `padding-left`, `padding-right` | +| `.py-` | `padding top`, `padding bottom` | +| `.pt-` | `padding-top` | +| `.pr-` | `padding-right` | +| `.pb-` | `padding-bottom` | +| `.pl-` | `padding-left` | + +Spacing values are based on a `1rem = 16px` spacing scale, broken down into these units: + +| Spacer/suffix | Size in rems | Rem converted to px | +|:---------------|:--------------|:--------------------| +| `1` | 0.25rem | 4px | +| `2` | 0.5rem | 8px | +| `3` | 0.75rem | 12px | +| `4` | 1rem | 16px | +| `5` | 1.5rem | 24px | +| `6` | 2rem | 32px | +| `7` | 2.5rem | 40px | +| `8` | 3rem | 48px | + +#### Examples +{: .no_toc } + +```markdown +In Markdown, use the `{: }` wrapper to apply custom classes: + +This paragraph will have a margin bottom of 1rem/16px at large screens. +{: .mb-lg-4 } + +This paragraph will have 2rem/32px of padding on the right and left at all screen sizes. +{: .px-6 } + +``` + +### Display + +Display classes aid in adapting the layout of the elements on a page: + +| Class | | +|:------------------|:------------------------| +| `.d-block` | `display: block` | +| `.d-flex` | `display: flex` | +| `.d-inline` | `display: inline` | +| `.d-inline-block` | `display: inline-block` | +| `.d-none` | `display: none` | + +Use these classes in conjunction with the responsive modifiers. + +#### Examples +{: .no_toc } + +```markdown +In Markdown, use the `{: }` wrapper to apply custom classes: + +This button will be hidden until medium screen sizes: + +[ A button ](#url) +{: .d-none .d-md-inline-block } + +These headings will be `inline-block`: + +### heading 3 +{ .d-inline-block } + +### heading 3 +{ .d-inline-block } + +``` + +--- +## Typography + +### Font size + +Use the `.fs-1` - `.fs-10` to set an explicit font-size. + +| Class | Small screen size `font-size` | Large screen size `font-size` | +|:--------|:-------------------------------|:------------------------------| +| `.fs-1` | 9px | 10px | +| `.fs-2` | 11px | 12px | +| `.fs-3` | 12px | 14px | +| `.fs-4` | 14px | 16px | +| `.fs-5` | 16px | 18px | +| `.fs-6` | 18px | 24px | +| `.fs-7` | 24px | 32px | +| `.fs-8` | 32px | 38px | +| `.fs-9` | 38px | 42px | +| `.fs-10`| 42px | 48px | + +<div class="code-example" markdown="1"> +Font size 1 +{: .fs-1 } +Font size 2 +{: .fs-2 } +Font size 3 +{: .fs-3 } +Font size 4 +{: .fs-4 } +Font size 5 +{: .fs-5 } +Font size 6 +{: .fs-6 } +Font size 7 +{: .fs-7 } +Font size 8 +{: .fs-8 } +Font size 9 +{: .fs-9 } +Font size 10 +{: .fs-10 } +</div> +```markdown +In Markdown, use the `{: }` wrapper to apply custom classes: + +Font size 1 +{: .fs-1 } +Font size 2 +{: .fs-2 } +Font size 3 +{: .fs-3 } +Font size 4 +{: .fs-4 } +Font size 5 +{: .fs-5 } +Font size 6 +{: .fs-6 } +Font size 7 +{: .fs-7 } +Font size 8 +{: .fs-8 } +Font size 9 +{: .fs-9 } +Font size 10 +{: .fs-10 } +``` + +### Font weight + +Use the `.fw-300` - `.fw-700` to set an explicit font-size. + +<div class="code-example" markdown="1"> +Font weight 300 +{: .fw-300 } +Font weight 400 +{: .fw-400 } +Font weight 500 +{: .fw-500 } +Font weight 700 +{: .fw-700 } +</div> +```markdown +In Markdown, use the `{: }` wrapper to apply custom classes: + +Font weight 300 +{: .fw-300 } +Font weight 400 +{: .fw-400 } +Font weight 500 +{: .fw-500 } +Font weight 700 +{: .fw-700 } +``` + +### Line height + +Use the `lh-` classes to explicitly apply line height to text. + +| Class | `line-height` value | Notes | +|:--------------|:---------------------|:------------------------------| +| `.lh-0` | 0 | | +| `.lh-tight` | 1.1 | Default for headings | +| `.lh-default` | 1.4 | Default for body (paragraphs) | + + + +<div class="code-example" markdown="1"> +No Line height +No Line height +{: .lh-0 } + +Tight line height +Tight line height +{: .lh-tight } + +Default line height +Default line height +{: .fh-default } +</div> +```markdown +In Markdown, use the `{: }` wrapper to apply custom classes: + +No Line height +No Line height +{: .lh-0 } + +Tight line height +Tight line height +{: .lh-tight } + +Default line height +Default line height +{: .fh-default } +``` +--- +## Color +### Font color +### Background color diff --git a/index.md b/index.md index c978ace1..703b0c90 100644 --- a/index.md +++ b/index.md @@ -4,12 +4,21 @@ title: Home nav_order: 1 --- -{:.img-logo} -# A Jekyll theme for documentation +# Focus on writing documentation, not building a website for it. +{: .mt-4 .mt-md-0 :} -Focus on writing good docs, not building a site for it. Just the docs allows you to create your documentation site with a Jekyll theme that is easily hosted on GitHub pages. -{: .fs-6 .fw-300 } +<div class="d-sm-flex my-sm-7"> + <div class="px-8 pl-sm-0 pr-sm-6 mb-5 mb-sm-0"> + <img src="/assets/images/just-the-docs.png" alt="" class="mt-sm-2"> + </div> + <div markdown="1"> + Just the Docs gives your documentation a home with a responsive Jekyll theme that is easily customizable and hosted on GitHub pages. + {: .fs-6 .fw-300 } + + [Get Started](#getting-started){: .btn .btn-purple .mr-2 } [View GitHub](https://github.com/pmarsceill/just-the-docs){: .btn } + </div> +</div> --- @@ -32,6 +41,10 @@ theme: "just-the-docs" ``` 3. Run you local Jekyll server ```bash +$ jekyll serve +``` +```bash +# .. or if you're using a Gemfile (bundler) $ bundle exec jekyll serve ``` 4. Point your web browser to [http://localhost:4000](http://localhost:4000) @@ -40,7 +53,7 @@ $ bundle exec jekyll serve ## About the project -Just the Docs is © 2016 by [Patrick Marsceill](http://patrickmarsceill.com). +Just the Docs is © 2017 by [Patrick Marsceill](http://patrickmarsceill.com). ### License diff --git a/search-data.json b/search-data.json index a845151c..0c01c809 100644 --- a/search-data.json +++ b/search-data.json @@ -1,2 +1,15 @@ --- --- +{ + {% for page in site.pages %} + {% unless page.url contains "css" %} + "{{ forloop.index - 1 }}": { + "id": "{{ forloop.index - 1 }}", + "title": "{{ page.title | xml_escape }}", + "content": "{{ page.content | strip_html | strip_newlines | escape | remove: "\"}}", + "url": " {{ page.url | xml_escape }}" + } + {% unless forloop.last %},{% endunless %} + {% endunless %} + {% endfor %} +} -- GitLab