Browse Source

Rebuild directory without documentation.

tags/5.1.0
Luigi Cruz 3 years ago
parent
commit
7b89b9a1c2
100 changed files with 13 additions and 5168 deletions
  1. +0
    -0
      .dockerignore
  2. +1
    -1
      .github/workflows/release.yml
  3. +1
    -1
      .github/workflows/validate.yml
  4. +9
    -0
      .gitignore
  5. +0
    -0
      Dockerfile
  6. +2
    -2
      README.md
  7. +0
    -0
      build-docker.sh
  8. +0
    -0
      build.sh
  9. +0
    -9
      builder/.gitignore
  10. +0
    -13
      builder/LICENSE
  11. +0
    -356
      builder/README.md
  12. +0
    -4
      builder/config
  13. +0
    -0
      depends
  14. +0
    -0
      docker-compose.yml
  15. +0
    -10
      docs/.stylelintrc.json
  16. +0
    -11
      docs/404.html
  17. +0
    -1
      docs/CNAME
  18. +0
    -46
      docs/CODE_OF_CONDUCT.md
  19. +0
    -2
      docs/Gemfile
  20. +0
    -21
      docs/LICENSE.txt
  21. +0
    -68
      docs/README.md
  22. +0
    -1
      docs/Rakefile
  23. +0
    -61
      docs/_config.yml
  24. +0
    -40
      docs/_includes/head.html
  25. +0
    -0
      docs/_includes/head_custom.html
  26. +0
    -0
      docs/_includes/js/custom.js
  27. +0
    -40
      docs/_includes/nav.html
  28. +0
    -5
      docs/_includes/title.html
  29. +0
    -100
      docs/_includes/vendor/anchor_headings.html
  30. +0
    -5
      docs/_layouts/about.html
  31. +0
    -102
      docs/_layouts/default.html
  32. +0
    -5
      docs/_layouts/home.html
  33. +0
    -5
      docs/_layouts/page.html
  34. +0
    -5
      docs/_layouts/post.html
  35. +0
    -7
      docs/_layouts/table_wrappers.html
  36. +0
    -10
      docs/_layouts/vendor/compress.html
  37. +0
    -111
      docs/_sass/base.scss
  38. +0
    -118
      docs/_sass/buttons.scss
  39. +0
    -123
      docs/_sass/code.scss
  40. +0
    -17
      docs/_sass/color_schemes/dark.scss
  41. +0
    -160
      docs/_sass/content.scss
  42. +0
    -129
      docs/_sass/custom/custom.scss
  43. +0
    -36
      docs/_sass/labels.scss
  44. +0
    -209
      docs/_sass/layout.scss
  45. +0
    -120
      docs/_sass/navigation.scss
  46. +0
    -3
      docs/_sass/overrides.scss
  47. +0
    -167
      docs/_sass/search.scss
  48. +0
    -10
      docs/_sass/support/_functions.scss
  49. +0
    -129
      docs/_sass/support/_variables.scss
  50. +0
    -27
      docs/_sass/support/mixins/_buttons.scss
  51. +0
    -36
      docs/_sass/support/mixins/_layout.scss
  52. +0
    -81
      docs/_sass/support/mixins/_typography.scss
  53. +0
    -3
      docs/_sass/support/mixins/mixins.scss
  54. +0
    -3
      docs/_sass/support/support.scss
  55. +0
    -58
      docs/_sass/tables.scss
  56. +0
    -58
      docs/_sass/typography.scss
  57. +0
    -239
      docs/_sass/utilities/_colors.scss
  58. +0
    -38
      docs/_sass/utilities/_layout.scss
  59. +0
    -17
      docs/_sass/utilities/_lists.scss
  60. +0
    -121
      docs/_sass/utilities/_spacing.scss
  61. +0
    -91
      docs/_sass/utilities/_typography.scss
  62. +0
    -5
      docs/_sass/utilities/utilities.scss
  63. +0
    -78
      docs/_sass/vendor/normalize.scss/README.md
  64. +0
    -427
      docs/_sass/vendor/normalize.scss/normalize.scss
  65. +0
    -70
      docs/_sass/vendor/normalize.scss/package.json
  66. +0
    -45
      docs/assets/css/dark-mode-preview.scss
  67. +0
    -49
      docs/assets/css/just-the-docs.scss
  68. BIN
      docs/assets/images/just-the-docs.png
  69. +0
    -132
      docs/assets/images/satellite.svg
  70. +0
    -1
      docs/assets/images/search.svg
  71. +0
    -23
      docs/assets/js/dark-mode-preview.js
  72. +0
    -312
      docs/assets/js/just-the-docs.js
  73. +0
    -12
      docs/assets/js/search-data.json
  74. +0
    -6
      docs/assets/js/vendor/lunr.min.js
  75. +0
    -16
      docs/bin/just-the-docs
  76. +0
    -30
      docs/docs/computers/computers.md
  77. +0
    -46
      docs/docs/radios/airspy_hf.md
  78. +0
    -46
      docs/docs/radios/airspy_mini.md
  79. +0
    -46
      docs/docs/radios/airspy_r2.md
  80. +0
    -42
      docs/docs/radios/hackrf.md
  81. +0
    -50
      docs/docs/radios/limenet_micro.md
  82. +0
    -56
      docs/docs/radios/limesdr_mini.md
  83. +0
    -56
      docs/docs/radios/limesdr_usb.md
  84. +0
    -53
      docs/docs/radios/plutosdr.md
  85. +0
    -15
      docs/docs/radios/radios.md
  86. +0
    -61
      docs/docs/radios/rtlsdr.md
  87. +0
    -30
      docs/docs/software/CygnusRFI.md
  88. +0
    -32
      docs/docs/software/LeanSDR.md
  89. +0
    -30
      docs/docs/software/VIRGO.md
  90. +0
    -32
      docs/docs/software/acarsdec.md
  91. +0
    -38
      docs/docs/software/gnuradio.md
  92. +0
    -27
      docs/docs/software/gpredict.md
  93. +0
    -40
      docs/docs/software/gqrx.md
  94. +0
    -32
      docs/docs/software/limesuite.md
  95. +0
    -29
      docs/docs/software/limevna.md
  96. +0
    -27
      docs/docs/software/multimon-ng.md
  97. +0
    -27
      docs/docs/software/rpitx.md
  98. +0
    -31
      docs/docs/software/rtl_433.md
  99. +0
    -37
      docs/docs/software/sdrangel.md
  100. +0
    -44
      docs/docs/software/soapy_remote.md

builder/.dockerignore → .dockerignore View File


+ 1
- 1
.github/workflows/release.yml View File

@@ -10,7 +10,7 @@ jobs:
runs-on: self-hosted
timeout-minutes: 2880
env:
working-directory: ./builder
working-directory: ./
steps:
- name: Checkout code
uses: actions/checkout@v2


+ 1
- 1
.github/workflows/validate.yml View File

@@ -8,7 +8,7 @@ jobs:
runs-on: self-hosted
timeout-minutes: 2880
env:
working-directory: ./builder
working-directory: ./
steps:
- name: Checkout code
uses: actions/checkout@v2


+ 9
- 0
.gitignore View File

@@ -5,3 +5,12 @@ _site
Gemfile.lock
node_modules
.DS_Store
deploy/*
work/*
config
postrun.sh
SKIP
SKIP_IMAGES
.pc
*-pc
apt-cacher-ng/

builder/Dockerfile → Dockerfile View File


+ 2
- 2
README.md View File

@@ -54,9 +54,9 @@ We currently support the following SDR:
## Getting started

### Download
The download file is hosted on GitHub Releases. Click in the button below to start downloading your latest PiSDR image. No `.xz` extraction is required. Use this file directly with the flashing software.
The download file is hosted on GitHub Releases. Click in the button below to go to the latest release and choose the `.tar.xz` file to start downloading your PiSDR image. No `.xz` extraction is required. Use this file directly with the flashing software.

[Download Latest Image]()
[Download Latest Image](https://github.com/luigifcruz/pisdr-image/releases/latest)

### Installation
The installation process is the same as the vanilla Raspbian. You will need a MicroSD card with at least 8GB of capacity. To transfer the image file to the memory card we recommend the open-source and multi-platform [balenaEtcher](https://www.balena.io/etcher/) or the official [Raspberry Pi Imager](https://www.raspberrypi.org/blog/raspberry-pi-imager-imaging-utility/).


builder/build-docker.sh → build-docker.sh View File


builder/build.sh → build.sh View File


+ 0
- 9
builder/.gitignore View File

@@ -1,9 +0,0 @@
deploy/*
work/*
config
postrun.sh
SKIP
SKIP_IMAGES
.pc
*-pc
apt-cacher-ng/

+ 0
- 13
builder/LICENSE View File

@@ -1,13 +0,0 @@
Copyright (c) 2015 Raspberry Pi (Trading) Ltd.

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 0
- 356
builder/README.md View File

@@ -1,356 +0,0 @@
# pi-gen

_Tool used to create the raspberrypi.org Raspbian images_


## Dependencies

pi-gen runs on Debian based operating systems. Currently it is only supported on
either Debian Buster or Ubuntu Xenial and is known to have issues building on
earlier releases of these systems. On other Linux distributions it may be possible
to use the Docker build described below.

To install the required dependencies for pi-gen you should run:

```bash
apt-get install coreutils quilt parted qemu-user-static debootstrap zerofree zip \
dosfstools bsdtar libcap2-bin grep rsync xz-utils file git curl bc
```

The file `depends` contains a list of tools needed. The format of this
package is `<tool>[:<debian-package>]`.


## Config

Upon execution, `build.sh` will source the file `config` in the current
working directory. This bash shell fragment is intended to set needed
environment variables.

The following environment variables are supported:

* `IMG_NAME` **required** (Default: unset)

The name of the image to build with the current stage directories. Setting
`IMG_NAME=Raspbian` is logical for an unmodified RPi-Distro/pi-gen build,
but you should use something else for a customized version. Export files
in stages may add suffixes to `IMG_NAME`.

* `RELEASE` (Default: buster)

The release version to build images against. Valid values are jessie, stretch
buster, bullseye, and testing.

* `APT_PROXY` (Default: unset)

If you require the use of an apt proxy, set it here. This proxy setting
will not be included in the image, making it safe to use an `apt-cacher` or
similar package for development.

If you have Docker installed, you can set up a local apt caching proxy to
like speed up subsequent builds like this:

docker-compose up -d
echo 'APT_PROXY=http://172.17.0.1:3142' >> config

* `BASE_DIR` (Default: location of `build.sh`)

**CAUTION**: Currently, changing this value will probably break build.sh

Top-level directory for `pi-gen`. Contains stage directories, build
scripts, and by default both work and deployment directories.

* `WORK_DIR` (Default: `"$BASE_DIR/work"`)

Directory in which `pi-gen` builds the target system. This value can be
changed if you have a suitably large, fast storage location for stages to
be built and cached. Note, `WORK_DIR` stores a complete copy of the target
system for each build stage, amounting to tens of gigabytes in the case of
Raspbian.

**CAUTION**: If your working directory is on an NTFS partition you probably won't be able to build. Make sure this is a proper Linux filesystem.

* `DEPLOY_DIR` (Default: `"$BASE_DIR/deploy"`)

Output directory for target system images and NOOBS bundles.

* `DEPLOY_ZIP` (Default: `1`)

Setting to `0` will deploy the actual image (`.img`) instead of a zipped image (`.zip`).

* `USE_QEMU` (Default: `"0"`)

Setting to '1' enables the QEMU mode - creating an image that can be mounted via QEMU for an emulated
environment. These images include "-qemu" in the image file name.

* `LOCALE_DEFAULT` (Default: "en_GB.UTF-8" )

Default system locale.

* `TARGET_HOSTNAME` (Default: "raspberrypi" )

Setting the hostname to the specified value.

* `KEYBOARD_KEYMAP` (Default: "gb" )

Default keyboard keymap.

To get the current value from a running system, run `debconf-show
keyboard-configuration` and look at the
`keyboard-configuration/xkb-keymap` value.

* `KEYBOARD_LAYOUT` (Default: "English (UK)" )

Default keyboard layout.

To get the current value from a running system, run `debconf-show
keyboard-configuration` and look at the
`keyboard-configuration/variant` value.

* `TIMEZONE_DEFAULT` (Default: "Europe/London" )

Default keyboard layout.

To get the current value from a running system, look in
`/etc/timezone`.

* `FIRST_USER_NAME` (Default: "pi" )

Username for the first user

* `FIRST_USER_PASS` (Default: "raspberry")

Password for the first user

* `WPA_ESSID`, `WPA_PASSWORD` and `WPA_COUNTRY` (Default: unset)

If these are set, they are use to configure `wpa_supplicant.conf`, so that the Raspberry Pi can automatically connect to a wifi network on first boot. If `WPA_ESSID` is set and `WPA_PASSWORD` is unset an unprotected wifi network will be configured. If set, `WPA_PASSWORD` must be between 8 and 63 characters.

* `ENABLE_SSH` (Default: `0`)

Setting to `1` will enable ssh server for remote log in. Note that if you are using a common password such as the defaults there is a high risk of attackers taking over you Raspberry Pi.

* `STAGE_LIST` (Default: `stage*`)

If set, then instead of working through the numeric stages in order, this list will be followed. For example setting to `"stage0 stage1 mystage stage2"` will run the contents of `mystage` before stage2. Note that quotes are needed around the list. An absolute or relative path can be given for stages outside the pi-gen directory.

A simple example for building Raspbian:

```bash
IMG_NAME='Raspbian'
```

The config file can also be specified on the command line as an argument the `build.sh` or `build-docker.sh` scripts.

```
./build.sh -c myconfig
```

This is parsed after `config` so can be used to override values set there.

## How the build process works

The following process is followed to build images:

* Loop through all of the stage directories in alphanumeric order

* Move on to the next directory if this stage directory contains a file called
"SKIP"

* Run the script ```prerun.sh``` which is generally just used to copy the build
directory between stages.

* In each stage directory loop through each subdirectory and then run each of the
install scripts it contains, again in alphanumeric order. These need to be named
with a two digit padded number at the beginning.
There are a number of different files and directories which can be used to
control different parts of the build process:

- **00-run.sh** - A unix shell script. Needs to be made executable for it to run.

- **00-run-chroot.sh** - A unix shell script which will be run in the chroot
of the image build directory. Needs to be made executable for it to run.

- **00-debconf** - Contents of this file are passed to debconf-set-selections
to configure things like locale, etc.

- **00-packages** - A list of packages to install. Can have more than one, space
separated, per line.

- **00-packages-nr** - As 00-packages, except these will be installed using
the ```--no-install-recommends -y``` parameters to apt-get.

- **00-patches** - A directory containing patch files to be applied, using quilt.
If a file named 'EDIT' is present in the directory, the build process will
be interrupted with a bash session, allowing an opportunity to create/revise
the patches.

* If the stage directory contains files called "EXPORT_NOOBS" or "EXPORT_IMAGE" then
add this stage to a list of images to generate

* Generate the images for any stages that have specified them

It is recommended to examine build.sh for finer details.


## Docker Build

Docker can be used to perform the build inside a container. This partially isolates
the build from the host system, and allows using the script on non-debian based
systems (e.g. Fedora Linux). The isolate is not complete due to the need to use
some kernel level services for arm emulation (binfmt) and loop devices (losetup).

To build:

```bash
vi config # Edit your config file. See above.
./build-docker.sh
```

If everything goes well, your finished image will be in the `deploy/` folder.
You can then remove the build container with `docker rm -v pigen_work`

If something breaks along the line, you can edit the corresponding scripts, and
continue:

```bash
CONTINUE=1 ./build-docker.sh
```

To examine the container after a failure you can enter a shell within it using:

```bash
sudo docker run -it --privileged --volumes-from=pigen_work pi-gen /bin/bash
```

After successful build, the build container is by default removed. This may be undesired when making incremental changes to a customized build. To prevent the build script from remove the container add

```bash
PRESERVE_CONTAINER=1 ./build-docker.sh
```

There is a possibility that even when running from a docker container, the
installation of `qemu-user-static` will silently fail when building the image
because `binfmt-support` _must be enabled on the underlying kernel_. An easy
fix is to ensure `binfmt-support` is installed on the host machine before
starting the `./build-docker.sh` script (or using your own docker build
solution).


## Stage Anatomy

### Raspbian Stage Overview

The build of Raspbian is divided up into several stages for logical clarity
and modularity. This causes some initial complexity, but it simplifies
maintenance and allows for more easy customization.

- **Stage 0** - bootstrap. The primary purpose of this stage is to create a
usable filesystem. This is accomplished largely through the use of
`debootstrap`, which creates a minimal filesystem suitable for use as a
base.tgz on Debian systems. This stage also configures apt settings and
installs `raspberrypi-bootloader` which is missed by debootstrap. The
minimal core is installed but not configured, and the system will not quite
boot yet.

- **Stage 1** - truly minimal system. This stage makes the system bootable by
installing system files like `/etc/fstab`, configures the bootloader, makes
the network operable, and installs packages like raspi-config. At this
stage the system should boot to a local console from which you have the
means to perform basic tasks needed to configure and install the system.
This is as minimal as a system can possibly get, and its arguably not
really usable yet in a traditional sense yet. Still, if you want minimal,
this is minimal and the rest you could reasonably do yourself as sysadmin.

- **Stage 2** - lite system. This stage produces the Raspbian-Lite image. It
installs some optimized memory functions, sets timezone and charmap
defaults, installs fake-hwclock and ntp, wifi and bluetooth support,
dphys-swapfile, and other basics for managing the hardware. It also
creates necessary groups and gives the pi user access to sudo and the
standard console hardware permission groups.

There are a few tools that may not make a whole lot of sense here for
development purposes on a minimal system such as basic Python and Lua
packages as well as the `build-essential` package. They are lumped right
in with more essential packages presently, though they need not be with
pi-gen. These are understandable for Raspbian's target audience, but if
you were looking for something between truly minimal and Raspbian-Lite,
here's where you start trimming.

- **Stage 3** - desktop system. Here's where you get the full desktop system
with X11 and LXDE, web browsers, git for development, Raspbian custom UI
enhancements, etc. This is a base desktop system, with some development
tools installed.

- **Stage 4** - Normal Raspbian image. System meant to fit on a 4GB card. This is the
stage that installs most things that make Raspbian friendly to new
users like system documentation.

- **Stage 5** - The Raspbian Full image. More development
tools, an email client, learning tools like Scratch, specialized packages
like sonic-pi, office productivity, etc.

### Stage specification

If you wish to build up to a specified stage (such as building up to stage 2
for a lite system), place an empty file named `SKIP` in each of the `./stage`
directories you wish not to include.

Then add an empty file named `SKIP_IMAGES` to `./stage4` and `./stage5` (if building up to stage 2) or
to `./stage2` (if building a minimal system).

```bash
# Example for building a lite system
echo "IMG_NAME='Raspbian'" > config
touch ./stage3/SKIP ./stage4/SKIP ./stage5/SKIP
touch ./stage4/SKIP_IMAGES ./stage5/SKIP_IMAGES
sudo ./build.sh # or ./build-docker.sh
```

If you wish to build further configurations upon (for example) the lite
system, you can also delete the contents of `./stage3` and `./stage4` and
replace with your own contents in the same format.


## Skipping stages to speed up development

If you're working on a specific stage the recommended development process is as
follows:

* Add a file called SKIP_IMAGES into the directories containing EXPORT_* files
(currently stage2, stage4 and stage5)
* Add SKIP files to the stages you don't want to build. For example, if you're
basing your image on the lite image you would add these to stages 3, 4 and 5.
* Run build.sh to build all stages
* Add SKIP files to the earlier successfully built stages
* Modify the last stage
* Rebuild just the last stage using ```sudo CLEAN=1 ./build.sh```
* Once you're happy with the image you can remove the SKIP_IMAGES files and
export your image to test

# Troubleshooting

## `64 Bit Systems`
Please note there is currently an issue when compiling with a 64 Bit OS. See https://github.com/RPi-Distro/pi-gen/issues/271

## `binfmt_misc`

Linux is able execute binaries from other architectures, meaning that it should be
possible to make use of `pi-gen` on an x86_64 system, even though it will be running
ARM binaries. This requires support from the [`binfmt_misc`](https://en.wikipedia.org/wiki/Binfmt_misc)
kernel module.

You may see the following error:

```
update-binfmts: warning: Couldn't load the binfmt_misc module.
```

To resolve this, ensure that the following files are available (install them if necessary):

```
/lib/modules/$(uname -r)/kernel/fs/binfmt_misc.ko
/usr/bin/qemu-arm-static
```

You may also need to load the module by hand - run `modprobe binfmt_misc`.

+ 0
- 4
builder/config View File

@@ -1,4 +0,0 @@
IMG_NAME='PiSDR'
ENABLE_SSH=1
HOSTNAME='pisdr'
FIRST_USER_PASS='raspberry'

builder/depends → depends View File


builder/docker-compose.yml → docker-compose.yml View File


+ 0
- 10
docs/.stylelintrc.json View File

@@ -1,10 +0,0 @@
{
"ignoreFiles" : [
"assets/css/just-the-docs.scss",
"assets/css/dark-mode-preview.scss",
"_sass/vendor/**/*.scss"
],
"extends": [
"stylelint-config-primer"
]
}

+ 0
- 11
docs/404.html View File

@@ -1,11 +0,0 @@
---
layout: default
title: Page not found
permalink: /404
nav_exclude: true
search_exclude: true
---

<h1>Page not found</h1>

<p>The page you requested could not be found. Try using the navigation {% if site.search_enabled %}or search {% endif %}to find what you're looking for or go to this <a href="{{ site.url }}{{ site.baseurl }}">site's home page</a>.</p>

+ 0
- 1
docs/CNAME View File

@@ -1 +0,0 @@
pisdr.luigi.ltd

+ 0
- 46
docs/CODE_OF_CONDUCT.md View File

@@ -1,46 +0,0 @@
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at patrick.marsceill@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]

[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

+ 0
- 2
docs/Gemfile View File

@@ -1,2 +0,0 @@
source "https://rubygems.org"
gemspec

+ 0
- 21
docs/LICENSE.txt View File

@@ -1,21 +0,0 @@
The MIT License (MIT)

Copyright (c) 2016 Patrick Marsceill

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

+ 0
- 68
docs/README.md View File

@@ -1,68 +0,0 @@
<p align="right">
<a href="https://badge.fury.io/rb/just-the-docs"><img src="https://badge.fury.io/rb/just-the-docs.svg" alt="Gem version"></a> <a href="https://github.com/pmarsceill/just-the-docs/actions"><img src="https://github.com/pmarsceill/just-the-docs/workflows/CI/badge.svg" alt="Build status"></a>
</p>
<br><br>
<p align="center">
<h1 align="center">Just the Docs</h1>
<p align="center">A modern, highly customizable, and responsive Jekyll theme for documentation with built-in search.<br>Easily hosted on GitHub Pages with few dependencies.</p>
<p align="center"><strong><a href="https://pmarsceill.github.io/just-the-docs/">See it in action!</a></strong></p>
<br><br><br>
</p>

![jtd](https://user-images.githubusercontent.com/896475/47384541-89053c80-d6d5-11e8-98dc-dba16e192de9.gif)

## Installation

Add this line to your Jekyll site's Gemfile:

```ruby
gem "just-the-docs"
```

And add this line to your Jekyll site's `_config.yml`:

```yaml
theme: just-the-docs
```

And then execute:

$ bundle

Or install it yourself as:

$ gem install just-the-docs

## Usage

[View the documentation](https://pmarsceill.github.io/just-the-docs/) for usage information.

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/pmarsceill/just-the-docs. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.

### Submitting code changes:

- Open a [Pull Request](https://github.com/pmarsceill/just-the-docs/pulls)
- Ensure all CI tests pass
- Await code review
- Bump the version number in `just-the-docs.gemspec` and `package.json` according to [semantic versioning](https://semver.org/).

### Design and development principles of this theme:

1. As few dependencies as possible
2. No build script needed
3. First class mobile experience
4. Make the content shine

## Development

To set up your environment to develop this theme, run `bundle install`.

Your theme is set up just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal.

When the theme is released, only the files in `_layouts`, `_includes`, and `_sass` tracked with Git will be released.

## License

The theme is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).

+ 0
- 1
docs/Rakefile View File

@@ -1 +0,0 @@
Dir.glob('lib/tasks/*.rake').each {|r| import r}

+ 0
- 61
docs/_config.yml View File

@@ -1,61 +0,0 @@
<<<<<<< HEAD
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole site, values
# which you are expected to set up once and rarely edit after that. If you find
# yourself editing these this file very often, consider using Jekyll's data files
# feature for the data you need to update frequently.
#
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'jekyll serve'. If you change this file, please restart the server process.

# Site settings
# These are used to personalize your new site. If you look in the HTML files,
# you will see them accessed via {{ site.title }}, {{ site.github_repo }}, and so on.
# You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}.
title: PiSDR Project
description: Official PiSDR Project Download and Documentation Page
baseurl: "/"
url: "https://pisdr.luigifreitas.me" # the base hostname & protocol for your site, e.g. http://example.com

permalink: pretty
exclude: ["node_modules/", "*.gemspec", "*.gem", "Gemfile", "Gemfile.lock", "package.json", "package-lock.json", "script/", "LICENSE.txt", "lib/", "bin/", "README.md", "Rakefile"]

# Set a path/url to a logo that will be displayed instead of the title
#logo: "/assets/images/just-the-docs.png"

# Enable or disable the site search
search_enabled: true

# Set the search token separator for hyphenated-word search:
search_tokenizer_separator: /[\s/]+/

# Enable or disable heading anchors
heading_anchors: true

# Aux links for the upper right navigation
aux_links:
"PiSDR Project on GitHub":
- "//github.com/luigifreitas/pisdr-image"

# Footer content appears at the bottom of every page's main content
footer_content: "Copyright &copy; 2019-2019 Luigi F. Cruz. Distributed by an <a href=\"https://raw.githubusercontent.com/luigifreitas/pisdr-image/master/LICENSE\">MIT license.</a>"

color_scheme: nil

ga_tracking: UA-126129402-1

plugins:
- jekyll-seo-tag

compress_html:
clippings: all
comments: all
endings: all
startings: []
blanklines: false
profile: false
=======
theme: jekyll-theme-cayman
>>>>>>> f429b03be641f7a26cadc6f92b8187dde4b423aa

+ 0
- 40
docs/_includes/head.html View File

@@ -1,40 +0,0 @@
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">

{% if site.plugins.jekyll-seo == nil %}
<title>{{ page.title }} - {{ site.title }}</title>

{% if page.description %}
<meta name="Description" content="{{ page.description }}">
{% endif %}
{% endif %}

<link rel="shortcut icon" href="{{ 'favicon.ico' | absolute_url }}" type="image/x-icon">

<link rel="stylesheet" href="{{ '/assets/css/just-the-docs.css' | absolute_url }}">

{% if site.ga_tracking != nil %}
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.ga_tracking }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());

gtag('config', "{{ site.ga_tracking }}");
</script>

{% endif %}

{% if site.search_enabled != false %}
<script type="text/javascript" src="{{ '/assets/js/vendor/lunr.min.js' | absolute_url }}"></script>
{% endif %}
<script type="text/javascript" src="{{ '/assets/js/just-the-docs.js' | absolute_url }}"></script>

<meta name="viewport" content="width=device-width, initial-scale=1">

{% seo %}

{% include head_custom.html %}

</head>

+ 0
- 0
docs/_includes/head_custom.html View File


+ 0
- 0
docs/_includes/js/custom.js View File


+ 0
- 40
docs/_includes/nav.html View File

@@ -1,40 +0,0 @@
<nav role="navigation" aria-label="Main navigation">
<ul class="navigation-list">
{%- assign pages_list = site.html_pages | sort:"nav_order" -%}
{%- for node in pages_list -%}
{%- unless node.nav_exclude -%}
{%- if node.parent == nil -%}
<li class="navigation-list-item{% if page.url == node.url or page.parent == node.title or page.grand_parent == node.title %} active{% endif %}">
{%- if page.parent == node.title or page.grand_parent == node.title -%}
{%- assign first_level_url = node.url | absolute_url -%}
{%- endif -%}
<a href="{{ node.url | absolute_url }}" class="navigation-list-link{% if page.url == node.url %} active{% endif %}">{{ node.title }}</a>
{%- if node.has_children -%}
{%- assign children_list = site.html_pages | where: "parent", node.title | sort:"nav_order" -%}
<ul class="navigation-list-child-list ">
{%- for child in children_list -%}
<li class="navigation-list-item {% if page.url == child.url or page.parent == child.title %} active{% endif %}">
{%- if page.url == child.url or page.parent == child.title -%}
{%- assign second_level_url = child.url | absolute_url -%}
{%- endif -%}
<a href="{{ child.url | absolute_url }}" class="navigation-list-link{% if page.url == child.url %} active{% endif %}">{{ child.title }}</a>
{%- if child.has_children -%}
{%- assign grand_children_list = site.html_pages | where: "parent", child.title | sort:"nav_order" -%}
<ul class="navigation-list-child-list">
{%- for grand_child in grand_children_list -%}
<li class="navigation-list-item {% if page.url == grand_child.url %} active{% endif %}">
<a href="{{ grand_child.url | absolute_url }}" class="navigation-list-link{% if page.url == grand_child.url %} active{% endif %}">{{ grand_child.title }}</a>
</li>
{%- endfor -%}
</ul>
{%- endif -%}
</li>
{%- endfor -%}
</ul>
{%- endif -%}
</li>
{%- endif -%}
{%- endunless -%}
{%- endfor -%}
</ul>
</nav>

+ 0
- 5
docs/_includes/title.html View File

@@ -1,5 +0,0 @@
{% if site.logo %}
<div class="site-logo"></div>
{% else %}
{{ site.title }}
{% endif %}

+ 0
- 100
docs/_includes/vendor/anchor_headings.html View File

@@ -1,100 +0,0 @@
{% capture headingsWorkspace %}
{% comment %}
Version 1.0.3
https://github.com/allejo/jekyll-anchor-headings

"Be the pull request you wish to see in the world." ~Ben Balter

Usage:
{% include anchor_headings.html html=content %}

Parameters:
* html (string) - the HTML of compiled markdown generated by kramdown in Jekyll

Optional Parameters:
* beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content
* anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available
* anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space
* anchorTitle (string) : '' - The `title` attribute that will be used for anchors
* h_min (int) : 1 - The minimum header level to build an anchor for; any header lower than this value will be ignored
* h_max (int) : 6 - The maximum header level to build an anchor for; any header greater than this value will be ignored
* bodyPrefix (string) : '' - Anything that should be inserted inside of the heading tag _before_ its anchor and content
* bodySuffix (string) : '' - Anything that should be inserted inside of the heading tag _after_ its anchor and content

Output:
The original HTML with the addition of anchors inside of all of the h1-h6 headings.
{% endcomment %}

{% assign minHeader = include.h_min | default: 1 %}
{% assign maxHeader = include.h_max | default: 6 %}
{% assign beforeHeading = include.beforeHeading %}
{% assign nodes = include.html | split: '<h' %}

{% capture edited_headings %}{% endcapture %}

{% for _node in nodes %}
{% capture node %}{{ _node | strip }}{% endcapture %}

{% if node == "" %}
{% continue %}
{% endif %}

{% assign nextChar = node | replace: '"', '' | strip | slice: 0, 1 %}
{% assign headerLevel = nextChar | times: 1 %}

<!-- If the level is cast to 0, it means it's not a h1-h6 tag, so let's try to fix it -->
{% if headerLevel == 0 %}
{% if nextChar != '<' and nextChar != '' %}
{% capture node %}<h{{ node }}{% endcapture %}
{% endif %}

{% capture edited_headings %}{{ edited_headings }}{{ node }}{% endcapture %}
{% continue %}
{% endif %}

{% assign _workspace = node | split: '</h' %}
{% assign _idWorkspace = _workspace[0] | split: 'id="' %}
{% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
{% assign html_id = _idWorkspace[0] %}

{% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
{% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}

<!-- Build the anchor to inject for our heading -->
{% capture anchor %}{% endcapture %}

{% if html_id and headerLevel >= minHeader and headerLevel <= maxHeader %}
{% capture anchor %}href="#{{ html_id}}"{% endcapture %}

{% if include.anchorClass %}
{% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %}
{% endif %}

{% if include.anchorTitle %}
{% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', header }}"{% endcapture %}
{% endif %}

{% capture anchor %}<a {{ anchor }}>{{ include.anchorBody | replace: '%heading%', header | default: '' }}</a>{% endcapture %}

<!-- In order to prevent adding extra space after a heading, we'll let the 'anchor' value contain it -->
{% if beforeHeading %}
{% capture anchor %}{{ anchor }} {% endcapture %}
{% else %}
{% capture anchor %} {{ anchor }}{% endcapture %}
{% endif %}
{% endif %}

{% capture new_heading %}
<h{{ _hAttrToStrip }}
{{ include.bodyPrefix }}
{% if beforeHeading %}
{{ anchor }}{{ header }}
{% else %}
{{ header }}{{ anchor }}
{% endif %}
{{ include.bodySuffix }}
</h{{ _workspace | last }}
{% endcapture %}
{% capture edited_headings %}{{ edited_headings }}{{ new_heading }}{% endcapture %}
{% endfor %}
{% endcapture %}{% assign headingsWorkspace = '' %}{{ edited_headings | strip }}

+ 0
- 5
docs/_layouts/about.html View File

@@ -1,5 +0,0 @@
---
layout: default
---

{{ content }}

+ 0
- 102
docs/_layouts/default.html View File

@@ -1,102 +0,0 @@
---
layout: table_wrappers
---

<!DOCTYPE html>

<html lang="{{ site.lang | default: "en-US" }}">
{% include head.html %}
<body>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="link" viewBox="0 0 16 16">
<title>Link</title>
<path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path>
</symbol>
</svg>

<div class="page-wrap">
<div class="side-bar">
<div class="site-header">
<a href="{{ site.url }}{{ site.baseurl }}" class="site-title lh-tight">{% include title.html %}</a>
<button class="menu-button fs-3 js-main-nav-trigger" data-text-toggle="Hide" type="button">Menu</button>
</div>

<div class="navigation main-nav js-main-nav">
{% include nav.html %}
</div>
<footer class="site-footer">
<p class="text-small text-grey-dk-000 mb-4">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 js-main-content" tabindex="0">
<div class="main-content">
<div class="page-header js-page-header">
{% if site.search_enabled != false %}
<div class="search">
<div class="search-input-wrap">
<input type="text" class="js-search-input search-input" tabindex="0" placeholder="Search {{ site.title }}" aria-label="Search {{ site.title }}" autocomplete="off">
<svg width="14" height="14" viewBox="0 0 28 28" xmlns="http://www.w3.org/2000/svg" class="search-icon"><title>Search</title><g fill-rule="nonzero"><path d="M17.332 20.735c-5.537 0-10-4.6-10-10.247 0-5.646 4.463-10.247 10-10.247 5.536 0 10 4.601 10 10.247s-4.464 10.247-10 10.247zm0-4c3.3 0 6-2.783 6-6.247 0-3.463-2.7-6.247-6-6.247s-6 2.784-6 6.247c0 3.464 2.7 6.247 6 6.247z"/><path d="M11.672 13.791L.192 25.271 3.02 28.1 14.5 16.62z"/></g></svg>
</div>
<div class="js-search-results search-results-wrap"></div>
</div>
{% endif %}
{% if site.aux_links != nil %}
<ul class="list-style-none text-small aux-nav">
{% for link in site.aux_links %}
<li class="d-inline-block my-0{% unless forloop.last %} mr-2{% endunless %}"><a href="{{ link.last }}">{{ link.first }}</a></li>
{% endfor %}
</ul>
{% endif %}
</div>
<div class="page">
{% unless page.url == "/" %}
{% if page.parent %}
<nav class="breadcrumb-nav">
<ol class="breadcrumb-nav-list">
{% if page.grand_parent %}
<li class="breadcrumb-nav-list-item"><a href="{{ first_level_url }}">{{ page.grand_parent }}</a></li>
<li class="breadcrumb-nav-list-item"><a href="{{ second_level_url }}">{{ page.parent }}</a></li>
{% else %}
<li class="breadcrumb-nav-list-item"><a href="{{ first_level_url }}">{{ page.parent }}</a></li>
{% endif %}
<li class="breadcrumb-nav-list-item"><span>{{ page.title }}</span></li>
</ol>
</nav>
{% endif %}
{% endunless %}
<div id="main-content" class="page-content" role="main">
{% if site.heading_anchors != false %}
{% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><use xlink:href=\"#link\"></use></svg>" anchorClass="anchor-heading" %}
{% else %}
{{ content }}
{% endif %}

{% if page.has_children == true and page.has_toc != false %}
<hr>
<h2 class="text-delta">Table of contents</h2>
{% assign children_list = site.pages | sort:"nav_order" %}
<ul>
{% 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>{% if child.summary %} - {{ child.summary }}{% endif %}
</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}

{% if site.footer_content != nil %}
<hr>
<footer role="contentinfo">
<p class="text-small text-grey-dk-000 mb-0">{{ site.footer_content }}</p>
</footer>
{% endif %}

</div>
</div>
</div>
</div>

</body>
</html>

+ 0
- 5
docs/_layouts/home.html View File

@@ -1,5 +0,0 @@
---
layout: default
---

{{ content }}

+ 0
- 5
docs/_layouts/page.html View File

@@ -1,5 +0,0 @@
---
layout: default
---

{{ content }}

+ 0
- 5
docs/_layouts/post.html View File

@@ -1,5 +0,0 @@
---
layout: default
---

{{ content }}

+ 0
- 7
docs/_layouts/table_wrappers.html View File

@@ -1,7 +0,0 @@
---
layout: vendor/compress
---

{% assign content_ = content | replace: '<table', '<div class="table-wrapper"><table' %}
{% assign content_ = content_ | replace: '</table>', '</table></div>' %}
{{ content_ }}

+ 0
- 10
docs/_layouts/vendor/compress.html View File

@@ -1,10 +0,0 @@
---
# Jekyll layout that compresses HTML
# v3.1.0
# http://jch.penibelst.de/
# © 2014–2015 Anatol Broder
# MIT License
---

{% capture _LINE_FEED %}
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}

+ 0
- 111
docs/_sass/base.scss View File

@@ -1,111 +0,0 @@
//
// Base element style overrides
//
// stylelint-disable selector-no-type, selector-max-type

* {
box-sizing: border-box;
}

::selection {
color: $white;
background: $link-color;
}

html {
@include fs-4;
}

body {
font-family: $body-font-family;
font-size: inherit;
line-height: $body-line-height;
color: $body-text-color;
background-color: $body-background-color;
}

p,
h1,
h2,
h3,
h4,
h5,
h6,
ol,
ul,
pre,
address,
blockquote,
dl,
div,
fieldset,
form,
hr,
noscript,
table {
margin-top: 0;
}

h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 1.2em;
margin-bottom: 0.8em;
font-weight: 500;
line-height: $body-heading-line-height;
color: $body-heading-color;
}

p {
margin-bottom: 1em;
}

a {
color: $link-color;
text-decoration: none;
}

a:not([class]) {
text-decoration: none;
background-image: linear-gradient($border-color 0%, $border-color 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;

}
}

code {
font-family: $mono-font-family;
font-size: 12px;
line-height: $body-line-height;
}

figure,
pre {
margin: 0;
}

li {
margin: 0.25em 0;
}

img {
max-width: 100%;
height: auto;
}

hr {
height: 1px;
padding: 0;
margin: $sp-6 0;
background-color: $border-color;
border: 0;
}

+ 0
- 118
docs/_sass/buttons.scss View File

@@ -1,118 +0,0 @@
//
// Buttons and things that look like buttons
//
// stylelint-disable color-named

.btn {
display: inline-block;
box-sizing: border-box;
padding-top: 0.3em;
padding-right: 1em;
padding-bottom: 0.3em;
padding-left: 1em;
margin: 0;
font-family: inherit;
font-size: inherit;
font-weight: 500;
line-height: 1.5;
color: $link-color;
text-decoration: none;
vertical-align: baseline;
cursor: pointer;
background-color: $base-button-color;
border-width: 0;
border-radius: $border-radius;
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: darken($link-color, 2%);
}

&:hover,
&:active,
&.zeroclipboard-is-hover,
&.zeroclipboard-is-active {
text-decoration: none;
background-color: darken($base-button-color, 1%);
}

&:active,
&.selected,
&.zeroclipboard-is-active {
background-color: darken($base-button-color, 3%);
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 {
color: $link-color;
background: transparent;
box-shadow: inset 0 0 0 2px $grey-lt-300;

&:hover,
&:active,
&.zeroclipboard-is-hover,
&.zeroclipboard-is-active {
color: darken($link-color, 4%);
text-decoration: none;
background-color: transparent;
box-shadow: inset 0 0 0 3px $grey-lt-300;
}

&: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-primary {
@include btn-color($white, $btn-primary-color);
}

.btn-purple {
@include btn-color($white, $purple-100);
}

.btn-blue {
@include btn-color($white, $blue-000);
}

.btn-green {
@include btn-color($white, $green-100);
}

+ 0
- 123
docs/_sass/code.scss View File

@@ -1,123 +0,0 @@
//
// Code and syntax highlighting
//
// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type

code {
padding: 0.2em 0.15em;
font-weight: 400;
background-color: $code-background-color;
border: $border $border-color;
border-radius: $border-radius;
}

pre.highlight,
figure.highlight {
padding: $sp-3;
margin-bottom: 0;
-webkit-overflow-scrolling: touch;
background-color: $code-background-color;

code {
padding: 0;
border: 0;
}
}

.highlighter-rouge {
margin-bottom: $sp-3;
overflow: hidden;
border-radius: $border-radius;
}

.highlight .c { color: #586e75; } // comment //
.highlight .err { color: #93a1a1; } // error //
.highlight .g { color: #93a1a1; } // generic //
.highlight .k { color: #859900; } // keyword //
.highlight .l { color: #93a1a1; } // literal //
.highlight .n { color: #93a1a1; } // name //
.highlight .o { color: #859900; } // operator //
.highlight .x { color: #cb4b16; } // other //
.highlight .p { color: #93a1a1; } // punctuation //
.highlight .cm { color: #586e75; } // comment.multiline //
.highlight .cp { color: #859900; } // comment.preproc //
.highlight .c1 { color: #586e75; } // comment.single //
.highlight .cs { color: #859900; } // comment.special //
.highlight .gd { color: #2aa198; } // generic.deleted //
.highlight .ge { font-style: italic; color: #93a1a1; } // generic.emph //
.highlight .gr { color: #dc322f; } // generic.error //
.highlight .gh { color: #cb4b16; } // generic.heading //
.highlight .gi { color: #859900; } // generic.inserted //
.highlight .go { color: #93a1a1; } // generic.output //
.highlight .gp { color: #93a1a1; } // generic.prompt //
.highlight .gs { font-weight: bold; color: #93a1a1; } // generic.strong //
.highlight .gu { color: #cb4b16; } // generic.subheading //
.highlight .gt { color: #93a1a1; } // generic.traceback //
.highlight .kc { color: #cb4b16; } // keyword.constant //
.highlight .kd { color: #268bd2; } // keyword.declaration //
.highlight .kn { color: #859900; } // keyword.namespace //
.highlight .kp { color: #859900; } // keyword.pseudo //
.highlight .kr { color: #268bd2; } // keyword.reserved //
.highlight .kt { color: #dc322f; } // keyword.type //
.highlight .ld { color: #93a1a1; } // literal.date //
.highlight .m { color: #2aa198; } // literal.number //
.highlight .s { color: #2aa198; } // literal.string //
.highlight .na { color: #555; } // name.attribute //
.highlight .nb { color: #b58900; } // name.builtin //
.highlight .nc { color: #268bd2; } // name.class //
.highlight .no { color: #cb4b16; } // name.constant //
.highlight .nd { color: #268bd2; } // name.decorator //
.highlight .ni { color: #cb4b16; } // name.entity //
.highlight .ne { color: #cb4b16; } // name.exception //
.highlight .nf { color: #268bd2; } // name.function //
.highlight .nl { color: #555; } // name.label //
.highlight .nn { color: #93a1a1; } // name.namespace //
.highlight .nx { color: #555; } // name.other //
.highlight .py { color: #93a1a1; } // name.property //
.highlight .nt { color: #268bd2; } // name.tag //
.highlight .nv { color: #268bd2; } // name.variable //
.highlight .ow { color: #859900; } // operator.word //
.highlight .w { color: #93a1a1; } // text.whitespace //
.highlight .mf { color: #2aa198; } // literal.number.float //
.highlight .mh { color: #2aa198; } // literal.number.hex //
.highlight .mi { color: #2aa198; } // literal.number.integer //
.highlight .mo { color: #2aa198; } // literal.number.oct //
.highlight .sb { color: #586e75; } // literal.string.backtick //
.highlight .sc { color: #2aa198; } // literal.string.char //
.highlight .sd { color: #93a1a1; } // literal.string.doc //
.highlight .s2 { color: #2aa198; } // literal.string.double //
.highlight .se { color: #cb4b16; } // literal.string.escape //
.highlight .sh { color: #93a1a1; } // literal.string.heredoc //
.highlight .si { color: #2aa198; } // literal.string.interpol //
.highlight .sx { color: #2aa198; } // literal.string.other //
.highlight .sr { color: #dc322f; } // literal.string.regex //
.highlight .s1 { color: #2aa198; } // literal.string.single //
.highlight .ss { color: #2aa198; } // literal.string.symbol //
.highlight .bp { color: #268bd2; } // name.builtin.pseudo //
.highlight .vc { color: #268bd2; } // name.variable.class //
.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 {
padding: $sp-3;
margin-bottom: $sp-3;
overflow: auto;
border: 1px solid $border-color;
border-radius: $border-radius;

+ .highlighter-rouge,
+ figure.highlight {
position: relative;
margin-top: -$sp-4;
border-right: 1px solid $border-color;
border-bottom: 1px solid $border-color;
border-left: 1px solid $border-color;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
}

+ 0
- 17
docs/_sass/color_schemes/dark.scss View File

@@ -1,17 +0,0 @@

$body-background-color: $grey-dk-300;
$sidebar-color: $grey-dk-300;
$border-color: $grey-dk-200;

$body-text-color: $grey-lt-300;
$body-heading-color: $grey-lt-000;
$nav-child-link-color: $grey-dk-000;
$search-result-preview-color: $grey-dk-000;

$link-color: $blue-000;
$btn-primary-color: $blue-200;
$base-button-color: $grey-dk-250;

$code-background-color: $grey-dk-250;
$search-background-color: $grey-dk-250;
$table-background-color: $grey-dk-250;

+ 0
- 160
docs/_sass/content.scss View File

@@ -1,160 +0,0 @@
@charset "UTF-8";

//
// Styles for rendered markdown in the .main-content container
//
// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type

.page-content {
line-height: $content-line-height;

a {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

ul,
ol {
padding-left: 1.5em;
}

ol {
list-style-type: none;
counter-reset: step-counter;

> li {
position: relative;

&::before {
position: absolute;
top: 0.2em;
left: -1.6em;
color: $grey-dk-000;
content: counter(step-counter);
counter-increment: step-counter;
@include fs-3;

@include mq(sm) {
top: 0.11em;
}
}

ol {
counter-reset: sub-counter;

li {
&::before {
content: counter(sub-counter, lower-alpha);
counter-increment: sub-counter;
}
}
}
}
}

ul {
list-style: none;

> li {
&::before {
position: absolute;
margin-left: -1.4em;
color: $grey-dk-000;
content: "•";
}
}
}

.task-list {
padding-left: 0;
}

.task-list-item {
display: flex;
align-items: center;

&::before {
content: "";
}
}

.task-list-item-checkbox {
margin-right: 0.6em;
}

hr + * {
margin-top: 0;
}

h1:first-of-type {
margin-top: 0.5em;
}

dl {
display: grid;
grid-template-columns: max-content 1fr;
}

dt,
dd {
margin: 0.25em 0;
}

dt {
text-align: right;

&::after {
content: ":";
}
}

dd {
margin-left: 1em;
font-weight: 500;
}

.anchor-heading {
position: absolute;
right: -$sp-4;
width: $sp-5;
height: 100%;
padding-right: $sp-1;
padding-left: $sp-1;
overflow: visible;

@include mq(md) {
right: auto;
left: -$sp-5;
}

svg {
display: inline-block;
width: 100%;
height: 100%;
fill: $link-color;
visibility: hidden;
}
}

.anchor-heading:hover,
h1:hover > .anchor-heading,
h2:hover > .anchor-heading,
h3:hover > .anchor-heading,
h4:hover > .anchor-heading,
h5:hover > .anchor-heading,
h6:hover > .anchor-heading {
svg {
visibility: visible;
}
}

h1,
h2,
h3,
h4,
h5,
h6 {
position: relative;
}
}

+ 0
- 129
docs/_sass/custom/custom.scss View File

@@ -1,129 +0,0 @@
////
//// Typography
////

//$body-font-family: -apple-system, BlinkMacSystemFont, "helvetica neue", helvetica, roboto, noto, "segoe ui", arial, sans-serif;
//$mono-font-family: "SFMono-Regular", Menlo, Consolas, Monospace;
//$root-font-size: 16px; // Base font-size for rems
//$body-line-height: 1.4;
//$content-line-height: 1.5;
//$body-heading-line-height: 1.15;

////
//// Colors
////

//$white: #fff;

//$grey-dk-000: #959396;
//$grey-dk-100: #5c5962;
//$grey-dk-200: #44434d;
//$grey-dk-250: #302d36;
//$grey-dk-300: #27262b;

//$grey-lt-000: #f5f6fa;
//$grey-lt-100: #eeebee;
//$grey-lt-200: #ecebed;
//$grey-lt-300: #e6e1e8;

//$purple-000: #7253ed;
//$purple-100: #5e41d0;
//$purple-200: #4e26af;
//$purple-300: #381885;

//$blue-000: #2c84fa;
//$blue-100: #2869e6;
//$blue-200: #264caf;
//$blue-300: #183385;

//$green-000: #41d693;
//$green-100: #11b584;
//$green-200: #009c7b;
//$green-300: #026e57;

//$yellow-000: #ffeb82;
//$yellow-100: #fadf50;
//$yellow-200: #f7d12e;
//$yellow-300: #e7af06;

//$red-000: #f77e7e;
//$red-100: #f96e65;
//$red-200: #e94c4c;
//$red-300: #dd2e2e;

//$body-background-color: $white;
//$sidebar-color: $grey-lt-000;
//$search-background-color: $white;
//$table-background-color: $white;
//$code-background-color: $grey-lt-000;

//$body-text-color: $grey-dk-100;
//$body-heading-color: $grey-dk-300;
//$search-result-preview-color: $grey-dk-000;
//$nav-child-link-color: $grey-dk-100;
//$link-color: $purple-000;
//$btn-primary-color: $purple-100;
//$base-button-color: #f7f7f7;

////
//// Spacing
////

//$spacing-unit: 1rem; // 1rem == 16px

//$spacers: (
//sp-0: 0,
//sp-1: $spacing-unit * 0.25,
//sp-2: $spacing-unit * 0.5,
//sp-3: $spacing-unit * 0.75,
//sp-4: $spacing-unit,
//sp-5: $spacing-unit * 1.5,
//sp-6: $spacing-unit * 2,
//sp-7: $spacing-unit * 2.5,
//sp-8: $spacing-unit * 3,
//sp-9: $spacing-unit * 3.5,
//sp-10: $spacing-unit * 4
//);

//$sp-1: map-get($spacers, sp-1); // 0.25 rem == 4px
//$sp-2: map-get($spacers, sp-2); // 0.5 rem == 8px
//$sp-3: map-get($spacers, sp-3); // 0.75 rem == 12px
//$sp-4: map-get($spacers, sp-4); // 1 rem == 16px
//$sp-5: map-get($spacers, sp-5); // 1.5 rem == 24px
//$sp-6: map-get($spacers, sp-6); // 2 rem == 32px
//$sp-7: map-get($spacers, sp-7); // 2.5 rem == 40px
//$sp-8: map-get($spacers, sp-8); // 3 rem == 48px
//$sp-9: map-get($spacers, sp-9); // 4 rem == 48px
//$sp-10: map-get($spacers, sp-10); // 4.5 rem == 48px

////
//// Borders
////

//$border: 1px solid;
//$border-radius: 4px;
//$border-color: $grey-lt-100;

////
//// Grid system
////

//$gutter-spacing: $sp-6;
//$gutter-spacing-sm: $sp-4;
//$nav-width: 264px;
//$nav-width-md: 248px;
//$content-width: 800px;
//$header-height: 60px;
//$search-results-width: 500px;

////
//// Media queries in pixels
////

//$media-queries: (
//xs: 320px,
//sm: 500px,
//md: $content-width,
//lg: $content-width + $nav-width,
//xl: 1400px
//);

+ 0
- 36
docs/_sass/labels.scss View File

@@ -1,36 +0,0 @@
//
// Labels (not the form kind)
//

.label,
.label-blue {
display: inline-block;
padding-top: 0.16em;
padding-right: 0.42em;
padding-bottom: 0.16em;
padding-left: 0.42em;
margin-right: $sp-1;
margin-left: $sp-1;
color: $white;
text-transform: uppercase;
vertical-align: middle;
background-color: $blue-100;
@include fs-2;
}

.label-green {
background-color: $green-200;
}

.label-purple {
background-color: $purple-100;
}

.label-red {
background-color: $red-200;
}

.label-yellow {
color: $grey-dk-200;
background-color: $yellow-200;
}

+ 0
- 209
docs/_sass/layout.scss View File

@@ -1,209 +0,0 @@
//
// The basic two column layout
//

.page-wrap {
@include mq(md) {
position: absolute;
top: 0;
left: 0;
display: flex;
width: 100%;
height: 100%;
overflow-x: hidden;
overflow-y: hidden;
}
}

.side-bar {
z-index: 100;
display: flex;
flex-wrap: wrap;
background-color: $sidebar-color;

@include mq(md) {
flex-wrap: nowrap;
position: absolute;
width: $nav-width-md;
height: 100%;
flex-direction: column;
border-right: $border $border-color;
align-items: flex-end;
}

@include mq(lg) {
width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});
min-width: $nav-width;
}
}

.main-content-wrap {
@include mq(md) {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
-webkit-overflow-scrolling: touch;
overflow-x: hidden;
overflow-y: scroll;
}
}

.main-content {
@include mq(md) {
position: relative;
max-width: $content-width;
margin-left: $nav-width-md;
}

@include mq(lg) {
margin-left: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});
}
}

.js-main-content:focus {
outline: none;
}

.page {
@include container;
padding-top: $gutter-spacing-sm;
padding-bottom: $gutter-spacing-sm;

@include mq(md) {
padding-top: $gutter-spacing;
padding-bottom: $gutter-spacing;
}
}

.page-header {
@include container;
display: none;
padding-top: $gutter-spacing-sm;
padding-bottom: $gutter-spacing-sm;
background-color: $sidebar-color;

@include mq(md) {
display: flex;
justify-content: flex-end;
height: $header-height;
background-color: $body-background-color;
border-bottom: $border $border-color;
}

&.nav-open {
display: block;

@include mq(md) {
display: flex;
}
}
}

.navigation,
.site-header,
.site-footer {

width: 100%;

@include mq(lg) {
width: $nav-width;
}
}

.navigation {
@include container;

@include mq(md) {
padding-top: $sp-8;
padding-bottom: $gutter-spacing-sm;
overflow-y: auto;
flex: 1 1 auto;
}
}

.site-header {
display: flex;
min-height: $header-height;
align-items: center;

@include mq(md) {
z-index: 101;
height: $header-height;
max-height: $header-height;
border-bottom: $border $border-color;
}
}

.site-title {
@include container;
flex-grow: 1;
display: flex;
height: 100%;
align-items: center;
padding-top: $sp-3;
padding-bottom: $sp-3;
color: $body-heading-color;
@include fs-6;

@include mq(md) {
padding-top: $sp-2;
padding-bottom: $sp-2;
}
}

@if variable-exists(logo) {
.site-logo {
width: 100%;
height: 100%;
background-image: url($logo);
background-repeat: no-repeat;
background-position: left center;
background-size: contain;
}
}

.menu-button {
appearance: none;
display: flex;
height: 100%;
padding: $gutter-spacing-sm;
align-items: center;
color: $link-color;
text-transform: uppercase;
background: transparent;
border: 0;

@include mq(md) {
display: none;
}
}

// stylelint-disable selector-max-type

body {
position: relative;
padding-bottom: $sp-10;

@include mq(md) {
position: static;
padding-bottom: 0;
}
}

// stylelint-enable selector-max-type

.site-footer {
@include container;
position: absolute;
bottom: 0;
left: 0;
padding-top: $sp-4;
padding-bottom: $sp-4;

@include mq(md) {
position: static;
justify-self: end;
}
}

+ 0
- 120
docs/_sass/navigation.scss View File

@@ -1,120 +0,0 @@
//
// Main nav, breadcrumb, etc...
//
.navigation-list {
padding: 0;
margin-top: 0;
margin-bottom: 0;
list-style: none;
}

.navigation-list-child-list {
padding-left: $sp-3;
list-style: none;

.navigation-list-link {
color: $nav-child-link-color;
}

.navigation-list-item {
position: relative;

&::before {
position: absolute;
margin-top: 0.3em;
margin-left: -0.8em;
color: rgba($body-text-color, 0.3);
content: "- ";
}

&.active {
&::before {
color: $body-text-color;
}
}
}
}

.navigation-list-item {
@include fs-4;
margin: 0;

@include mq(md) {
@include fs-3;
}

.navigation-list-child-list {
display: none;
}

&.active {
.navigation-list-child-list {
display: block;
}
}
}

.navigation-list-link {
display: block;
padding-top: $sp-1;
padding-bottom: $sp-1;

&.active {
font-weight: 600;
color: $body-heading-color;
text-decoration: none;
}
}

// Small screen nav

.main-nav {
display: none;

&.nav-open {
display: block;
}
@include mq(md) {
display: block;
}
}

.aux-nav {
align-self: center;
}

// Breadcrumb nav
.breadcrumb-nav {
@include mq(md) {
margin-top: -$sp-4;
}
}

.breadcrumb-nav-list {
padding-left: 0;
margin-bottom: $sp-3;
list-style: none;
}

.breadcrumb-nav-list-item {
display: table-cell;
@include fs-2;

&::before {
display: none;
}

&::after {
display: inline-block;
margin-right: $sp-2;
margin-left: $sp-2;
color: $grey-dk-000;
content: "/";
}

&:last-child {
&::after {
content: "";
}
}
}

+ 0
- 3
docs/_sass/overrides.scss View File

@@ -1,3 +0,0 @@
//
// Custom overrides from a user.
//

+ 0
- 167
docs/_sass/search.scss View File

@@ -1,167 +0,0 @@
//
// Search input and autocomplete
//

.search {
position: relative;
z-index: 99;
flex-grow: 1;
height: 100%;
margin-bottom: $sp-3;

@include mq(md) {
margin-bottom: 0;
}
}

.search-input-wrap {
display: flex;
height: 100%;
padding: $sp-2;
background-color: $search-background-color;
border-radius: $border-radius;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);

@include mq(md) {
padding-top: 0;
padding-right: 0;
padding-bottom: 0;
padding-left: 0;
background-color: $body-background-color;
border-radius: 0;
box-shadow: none;
}
}

.search-input {
align-self: center;
width: 100%;
padding-top: $sp-1;
padding-bottom: $sp-1;
background-color: $search-background-color;
border-top: 0;
border-right: 0;
border-bottom: 0;
border-left: 0;
order: 2;
@include fs-4;

&:focus {
outline: 0;
box-shadow: none;

+ .search-icon {
fill: $link-color;
}
}

@include mq(md) {
background-color: $body-background-color;
@include fs-3;
}
}

.search-icon {
align-self: center;
margin-right: $sp-2;
fill: $grey-dk-000;
order: 1;
}

.search-results-wrap {
position: absolute;
z-index: 100;
display: none;
width: 100%;
background: $search-background-color;
border-radius: $border-radius;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);

&.active {
display: block;
}

@include mq(md) {
width: $search-results-width;
}
}

.search-results-list {
padding-left: 0;
margin-top: $sp-1;
margin-bottom: $sp-1;
list-style: none;
@include fs-4;

@include mq(md) {
@include fs-3;
}
}

.search-results-list-item {
padding: 0;
margin: 0;
}

.search-result {
display: block;
padding-top: $sp-1;
padding-right: $sp-3;
padding-bottom: $sp-1;
padding-left: $sp-3;

&:hover,
&.active {
background-color: $sidebar-color;
}

@include mq(md) {
padding-right: $sp-4;
padding-left: $sp-4;
}
}

.search-result-title {
display: block;
padding-top: $sp-2;
padding-right: $sp-4;
padding-bottom: $sp-2;

@include mq(sm) {
display: inline-block;
width: 40%;
word-wrap: break-word;
vertical-align: top;
}
}

.search-result-rel-url {
display: block;
overflow: hidden;
color: $search-result-preview-color;
text-overflow: ellipsis;
white-space: nowrap;
@include fs-1;
}

.search-result-preview {
display: block;
padding-top: $sp-2;
padding-bottom: $sp-2;
padding-left: $sp-4;
color: $search-result-preview-color;
border-left: $border;
border-left-color: $border-color;
@include fs-2;

@include mq(sm) {
display: inline-block;
width: 60%;
vertical-align: top;
}
}

.search-result-highlight {
font-weight: bold;
color: $link-color;
}

+ 0
- 10
docs/_sass/support/_functions.scss View File

@@ -1,10 +0,0 @@
@function rem($size, $unit:"") {
$remSize: $size / $root-font-size;

@if ($unit == false) {
@return #{$remSize};
}
@else {
@return #{$remSize}rem;
}
}

+ 0
- 129
docs/_sass/support/_variables.scss View File

@@ -1,129 +0,0 @@
//
// 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 !default;
$content-line-height: 1.5 !default;
$body-heading-line-height: 1.15 !default !default;

//
// Colors
//

$white: #fff !default;

$grey-dk-000: #959396 !default;
$grey-dk-100: #5c5962 !default;
$grey-dk-200: #44434d !default;
$grey-dk-250: #302d36 !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;

$purple-000: #7253ed !default;
$purple-100: #5e41d0 !default;
$purple-200: #4e26af !default;
$purple-300: #381885 !default;

$blue-000: #2c84fa !default;
$blue-100: #2869e6 !default;
$blue-200: #264caf !default;
$blue-300: #183385 !default;

$green-000: #41d693 !default;
$green-100: #11b584 !default;
$green-200: #009c7b !default;
$green-300: #026e57 !default;

$yellow-000: #ffeb82 !default;
$yellow-100: #fadf50 !default;
$yellow-200: #f7d12e !default;
$yellow-300: #e7af06 !default;

$red-000: #f77e7e !default;
$red-100: #f96e65 !default;
$red-200: #e94c4c !default;
$red-300: #dd2e2e !default;

$body-background-color: $white !default;
$sidebar-color: $grey-lt-000 !default;
$search-background-color: $white !default;
$table-background-color: $white !default;
$code-background-color: $grey-lt-000 !default;

$body-text-color: $grey-dk-100 !default;
$body-heading-color: $grey-dk-300 !default;
$search-result-preview-color: $grey-dk-000 !default;
$nav-child-link-color: $grey-dk-100 !default;
$link-color: $purple-000 !default;
$btn-primary-color: $purple-100 !default;
$base-button-color: #f7f7f7 !default;

//
// Spacing
//

$spacing-unit: 1rem; // 1rem == 16px

$spacers: (
sp-0: 0,
sp-1: $spacing-unit * 0.25,
sp-2: $spacing-unit * 0.5,
sp-3: $spacing-unit * 0.75,
sp-4: $spacing-unit,
sp-5: $spacing-unit * 1.5,
sp-6: $spacing-unit * 2,
sp-7: $spacing-unit * 2.5,
sp-8: $spacing-unit * 3,
sp-9: $spacing-unit * 3.5,
sp-10: $spacing-unit * 4
) !default;

$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px
$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px
$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px
$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px
$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px
$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px
$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px
$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px
$sp-9: map-get($spacers, sp-9) !default; // 4 rem == 48px
$sp-10: map-get($spacers, sp-10) !default; // 4.5 rem == 48px

//
// Borders
//

$border: 1px solid !default;
$border-radius: 4px !default;
$border-color: $grey-lt-100 !default;

//
// Grid system
//

$gutter-spacing: $sp-6 !default;
$gutter-spacing-sm: $sp-4 !default;
$nav-width: 264px !default;
$nav-width-md: 248px !default;
$content-width: 800px !default;
$header-height: 60px !default;
$search-results-width: 500px !default;

//
// Media queries in pixels
//

$media-queries: (
xs: 320px,
sm: 500px,
md: $content-width,
lg: $content-width + $nav-width,
xl: 1400px
) !default;

+ 0
- 27
docs/_sass/support/mixins/_buttons.scss View File

@@ -1,27 +0,0 @@
// Colored button

@mixin btn-color($fg, $bg) {
color: $fg;
background-color: darken($bg, 2%);
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-color: darken($bg, 4%);
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%);
}
}

+ 0
- 36
docs/_sass/support/mixins/_layout.scss View File

@@ -1,36 +0,0 @@
// Media query

// Media query mixin
// Usage:
// @include mq(md) {
// ..medium and up styles
// }
@mixin mq($name) {
// Retrieves the value from the key
$value: map-get($media-queries, $name);

// If the key exists in the map
@if $value != null {
// Prints a media query based on the value
@media (min-width: rem($value)) {
@content;
}
}

@else {
@warn "No value could be retrieved from `#{$media-query}`. "
+ "Please make sure it is defined in `$media-queries` map.";
}
}

// Responsive container

@mixin container {
padding-right: $gutter-spacing-sm;
padding-left: $gutter-spacing-sm;

@include mq(md) {
padding-right: $gutter-spacing;
padding-left: $gutter-spacing;
}
}

+ 0
- 81
docs/_sass/support/mixins/_typography.scss View File

@@ -1,81 +0,0 @@
// 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;
}
}

+ 0
- 3
docs/_sass/support/mixins/mixins.scss View File

@@ -1,3 +0,0 @@
@import "./layout";
@import "./buttons";
@import "./typography";

+ 0
- 3
docs/_sass/support/support.scss View File

@@ -1,3 +0,0 @@
@import "./variables";
@import "./functions";
@import "./mixins/mixins";

+ 0
- 58
docs/_sass/tables.scss View File

@@ -1,58 +0,0 @@
//
// Tables
//
// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type

.table-wrapper {
display: block;
width: 100%;
max-width: 100%;
margin-bottom: $sp-5;
overflow-x: auto;
border-radius: $border-radius;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);
}

table {
display: table;
min-width: 100%;
border-collapse: separate;
}

th,
td {
@include fs-3;
min-width: 120px;
padding-top: $sp-2;
padding-right: $sp-3;
padding-bottom: $sp-2;
padding-left: $sp-3;
background-color: $table-background-color;
border-bottom: $border rgba($border-color, 0.5);
border-left: $border $border-color;

&:first-of-type {
border-left: 0;
}
}

tbody {
tr {
&:last-of-type {
th,
td {
border-bottom: 0;
}

td {
padding-bottom: $sp-3;
}
}
}
}

thead {
th {
border-bottom: $border $border-color;
}
}

+ 0
- 58
docs/_sass/typography.scss View File

@@ -1,58 +0,0 @@
//
// Typography
//
// stylelint-disable primer/selector-no-utility, primer/no-override, selector-no-type, selector-max-type

h1,
.text-alpha {
@include fs-8;
font-weight: 300;
}

h2,
.text-beta {
@include fs-6;
}

h3,
.text-gamma {
@include fs-5;
}

h4,
.text-delta {
@include fs-2;
font-weight: 300;
text-transform: uppercase;
letter-spacing: 0.1em;
}

h5,
.text-epsilon {
@include fs-3;
color: $grey-dk-200;
}

h6,
.text-zeta {
@include fs-2;
color: $grey-dk-200;
}

li {
.highlight {
margin-top: $sp-2;
}
}

.text-small {
@include fs-2;
}

.text-mono {
font-family: $mono-font-family !important;
}

.text-center {
text-align: center !important;
}

+ 0
- 239
docs/_sass/utilities/_colors.scss View File

@@ -1,239 +0,0 @@
//
// Utility classes for colors
//

// Text colors

.text-grey-dk-000 {
color: $grey-dk-000 !important;
}

.text-grey-dk-100 {
color: $grey-dk-100 !important;
}

.text-grey-dk-200 {
color: $grey-dk-200 !important;
}

.text-grey-dk-250 {
color: $grey-dk-250 !important;
}

.text-grey-dk-300 {
color: $grey-dk-300 !important;
}

.text-grey-lt-000 {
color: $grey-lt-000 !important;
}

.text-grey-lt-100 {
color: $grey-lt-100 !important;
}

.text-grey-lt-200 {
color: $grey-lt-200 !important;
}

.text-grey-lt-300 {
color: $grey-lt-300 !important;
}

.text-blue-000 {
color: $blue-000 !important;
}

.text-blue-100 {
color: $blue-100 !important;
}

.text-blue-200 {
color: $blue-200 !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;
}

.text-yellow-000 {
color: $yellow-000 !important;
}

.text-yellow-100 {
color: $yellow-100 !important;
}

.text-yellow-200 {
color: $yellow-200 !important;
}

.text-yellow-300 {
color: $yellow-300 !important;
}

.text-red-000 {
color: $red-000 !important;
}

.text-red-100 {
color: $red-100 !important;
}

.text-red-200 {
color: $red-200 !important;
}

.text-red-300 {
color: $red-300 !important;
}

// Background colors

.bg-grey-dk-000 {
background-color: $grey-dk-000 !important;
}

.bg-grey-dk-100 {
background-color: $grey-dk-100 !important;
}

.bg-grey-dk-200 {
background-color: $grey-dk-200 !important;
}

.bg-grey-dk-250 {
background-color: $grey-dk-250 !important;
}

.bg-grey-dk-300 {
background-color: $grey-dk-300 !important;
}

.bg-grey-lt-000 {
background-color: $grey-lt-000 !important;
}

.bg-grey-lt-100 {
background-color: $grey-lt-100 !important;
}

.bg-grey-lt-200 {
background-color: $grey-lt-200 !important;
}

.bg-grey-lt-300 {
background-color: $grey-lt-300 !important;
}

.bg-blue-000 {
background-color: $blue-000 !important;
}

.bg-blue-100 {
background-color: $blue-100 !important;
}

.bg-blue-200 {
background-color: $blue-200 !important;
}

.bg-blue-300 {
background-color: $blue-300 !important;
}

.bg-green-000 {
background-color: $green-000 !important;
}

.bg-green-100 {
background-color: $green-100 !important;
}

.bg-green-200 {
background-color: $green-200 !important;
}

.bg-green-300 {
background-color: $green-300 !important;
}

.bg-purple-000 {
background-color: $purple-000 !important;
}

.bg-purple-100 {
background-color: $purple-100 !important;
}

.bg-purple-200 {
background-color: $purple-200 !important;
}

.bg-purple-300 {
background-color: $purple-300 !important;
}

.bg-yellow-000 {
background-color: $yellow-000 !important;
}

.bg-yellow-100 {
background-color: $yellow-100 !important;
}

.bg-yellow-200 {
background-color: $yellow-200 !important;
}

.bg-yellow-300 {
background-color: $yellow-300 !important;
}

.bg-red-000 {
background-color: $red-000 !important;
}

.bg-red-100 {
background-color: $red-100 !important;
}

.bg-red-200 {
background-color: $red-200 !important;
}

.bg-red-300 {
background-color: $red-300 !important;
}

+ 0
- 38
docs/_sass/utilities/_layout.scss View File

@@ -1,38 +0,0 @@
// stylelint-disable primer/selector-no-utility, primer/no-override
//
// Utility classes for layout
//

// Display

.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; }

}
}
}

// Vertical alignment

.v-align-baseline { vertical-align: baseline !important; }
.v-align-bottom { vertical-align: bottom !important; }
.v-align-middle { vertical-align: middle !important; }
.v-align-text-bottom { vertical-align: text-bottom !important; }
.v-align-text-top { vertical-align: text-top !important; }
.v-align-top { vertical-align: top !important; }

+ 0
- 17
docs/_sass/utilities/_lists.scss View File

@@ -1,17 +0,0 @@
//
// Utility classes for lists
//

// stylelint-disable primer/selector-no-utility, primer/no-override, selector-max-type

.list-style-none {
padding: 0 !important;
margin: 0 !important;
list-style: none !important;

li {
&::before {
display: none !important;
}
}
}

+ 0
- 121
docs/_sass/utilities/_spacing.scss View File

@@ -1,121 +0,0 @@
//
// 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, primer/no-override

// Margin spacer utilities

@for $i from 1 through length($spacers) {
$size: #{map-get($spacers, sp-#{$i - 1})};
$scale: #{$i - 1};

// .m-0, .m-1, .m-2...
.m-#{$scale} { margin: #{$size} !important; }
.mt-#{$scale} { margin-top: #{$size} !important; }
.mr-#{$scale} { margin-right: #{$size} !important; }
.mb-#{$scale} { margin-bottom: #{$size} !important; }
.ml-#{$scale} { margin-left: #{$size} !important; }

.mx-#{$scale} {
margin-right: #{$size} !important;
margin-left: #{$size} !important;
}

.my-#{$scale} {
margin-top: #{$size} !important;
margin-bottom: #{$size} !important;
}

.mxn-#{$scale} {
margin-right: -#{$size} !important;
margin-left: -#{$size} !important;
}
}

.mx-auto {
margin-right: auto !important;
margin-left: auto !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};

// .m-sm-0, .m-md-1, .m-lg-2...
.m-#{$media-query}-#{$scale} { margin: #{$size} !important; }
.mt-#{$media-query}-#{$scale} { margin-top: #{$size} !important; }
.mr-#{$media-query}-#{$scale} { margin-right: #{$size} !important; }
.mb-#{$media-query}-#{$scale} { margin-bottom: #{$size} !important; }
.ml-#{$media-query}-#{$scale} { margin-left: #{$size} !important; }

.mx-#{$media-query}-#{$scale} {
margin-right: #{$size} !important;
margin-left: #{$size} !important;
}

.my-#{$media-query}-#{$scale} {
margin-top: #{$size} !important;
margin-bottom: #{$size} !important;
}

.mxn-#{$media-query}-#{$scale} {
margin-right: -#{$size} !important;
margin-left: -#{$size} !important;
}
}
}
}

// Padding spacer utilities

@for $i from 1 through length($spacers) {
$size: #{map-get($spacers, sp-#{$i - 1})};
$scale: #{$i - 1};

// .p-0, .p-1, .p-2...
.p-#{$scale} { padding: #{$size} !important; }
.pt-#{$scale} { padding-top: #{$size} !important; }
.pr-#{$scale} { padding-right: #{$size} !important; }
.pb-#{$scale} { padding-bottom: #{$size} !important; }
.pl-#{$scale} { padding-left: #{$size} !important; }

.px-#{$scale} {
padding-right: #{$size} !important;
padding-left: #{$size} !important;
}

.py-#{$scale} {
padding-top: #{$size} !important;
padding-bottom: #{$size} !important;
}
}

@each $media-query in map-keys($media-queries) {
@include mq($media-query) {
@for $i from 1 through length($spacers) {
$size: #{map-get($spacers, sp-#{$i - 1})};
$scale: #{$i - 1};

// .p-sm-0, .p-md-1, .p-lg-2...
.p-#{$media-query}-#{$scale} { padding: #{$size} !important; }
.pt-#{$media-query}-#{$scale} { padding-top: #{$size} !important; }
.pr-#{$media-query}-#{$scale} { padding-right: #{$size} !important; }
.pb-#{$media-query}-#{$scale} { padding-bottom: #{$size} !important; }
.pl-#{$media-query}-#{$scale} { padding-left: #{$size} !important; }

.px-#{$media-query}-#{$scale} {
padding-right: #{$size} !important;
padding-left: #{$size} !important;
}

.py-#{$media-query}-#{$scale} {
padding-top: #{$size} !important;
padding-bottom: #{$size} !important;
}
}
}
}

+ 0
- 91
docs/_sass/utilities/_typography.scss View File

@@ -1,91 +0,0 @@
//
// Utility classes for typography
//

// stylelint-disable primer/selector-no-utility, primer/no-override

.fs-1 {
@include fs-1;
}

.fs-2 {
@include fs-2;
}

.fs-3 {
@include fs-3;
}

.fs-4 {
@include fs-4;
}

.fs-5 {
@include fs-5;
}

.fs-6 {
@include fs-6;
}

.fs-7 {
@include fs-7;
}

.fs-8 {
@include fs-8;
}

.fs-9 {
@include fs-9;
}

.fs-10 {
@include fs-10;
}

.fw-300 {
font-weight: 300 !important;
}

.fw-400 {
font-weight: 400 !important;
}

.fw-500 {
font-weight: 500 !important;
}

.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

+ 0
- 5
docs/_sass/utilities/utilities.scss View File

@@ -1,5 +0,0 @@
@import "./colors";
@import "./layout";
@import "./typography";
@import "./lists";
@import "./spacing";

+ 0
- 78
docs/_sass/vendor/normalize.scss/README.md View File

@@ -1,78 +0,0 @@
# normalize.scss v0.1.0

Normalize.scss is the SCSS version of [normalize.css](http://necolas.github.io/normalize.css), a customisable CSS file that makes browsers render all elements more consistently and in line with modern standards.

[View the normalize.css test file](http://necolas.github.io/normalize.css/latest/test.html)

## Install

* [npm](http://npmjs.org/): `npm install --save normalize.scss`
* [Component(1)](https://github.com/component/component/): `component install guerrero/normalize.scss`
* [Bower](http://bower.io/): `bower install --save normalize.scss`
* Download: Go to [this link](https://raw.githubusercontent.com/guerrero/normalize.scss/master/normalize.scss), press right-click on the page and choose "Save as..."

No other styles should come before Normalize.scss.

It's recommendable to modify `normalize.scss` to suit it to your project

## What does it do?

* Preserves useful defaults, unlike many CSS resets.
* Normalizes styles for a wide range of elements.
* Corrects bugs and common browser inconsistencies.
* Improves usability with subtle improvements.
* Explains what code does using detailed comments.

## Browser support

* Google Chrome (latest)
* Mozilla Firefox (latest)
* Mozilla Firefox 4
* Opera (latest)
* Apple Safari 6+
* Internet Explorer 8+

[Normalize.css v1 provides legacy browser
support](https://github.com/necolas/normalize.css/tree/v1) (IE 6+, Safari 4+),
but is no longer actively developed.

## Extended details

Additional detail and explanation of the esoteric parts of normalize.css.

#### `pre, code, kbd, samp`

The `font-family: monospace, monospace` hack fixes the inheritance and scaling
of font-size for preformated text. The duplication of `monospace` is
intentional. [Source](http://en.wikipedia.org/wiki/User:Davidgothberg/Test59).

#### `sub, sup`

Normally, using `sub` or `sup` affects the line-box height of text in all
browsers. [Source](http://gist.github.com/413930).

#### `svg:not(:root)`

Adding `overflow: hidden` fixes IE9's SVG rendering. Earlier versions of IE
don't support SVG, so we can safely use the `:not()` and `:root` selectors that
modern browsers use in the default UA stylesheets to apply this style. [SVG
Mailing List discussion](http://lists.w3.org/Archives/Public/public-svg-wg/2008JulSep/0339.html)

#### `input[type="search"]`

The search input is not fully stylable by default. In Chrome and Safari on
OSX/iOS you can't control `font`, `padding`, `border`, or `background`. In
Chrome and Safari on Windows you can't control `border` properly. It will apply
`border-width` but will only show a border color (which cannot be controlled)
for the outer 1px of that border. Applying `-webkit-appearance: textfield`
addresses these issues without removing the benefits of search inputs (e.g.
showing past searches).

#### `legend`

Adding `border: 0` corrects an IE 8–11 bug where `color` (yes, `color`) is not
inherited by `legend`.

## Acknowledgements

Normalize.scss is a project by [Alex Guerrero](https://github.com/guerrero) based on [normalize.css](http://necolas.github.io/normalize.css) from [Nicolas Gallagher](https://github.com/necolas), co-created with [Jonathan Neal](https://github.com/jonathantneal).

+ 0
- 427
docs/_sass/vendor/normalize.scss/normalize.scss View File

@@ -1,427 +0,0 @@
/*! normalize.scss v0.1.0 | MIT License | based on git.io/normalize */

/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/

html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}

/**
* Remove default margin.
*/

body {
margin: 0;
}

/* HTML5 display definitions
========================================================================== */

/**
* Correct `block` display not defined for any HTML5 element in IE 8/9.
* Correct `block` display not defined for `details` or `summary` in IE 10/11
* and Firefox.
* Correct `block` display not defined for `main` in IE 11.
*/

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}

/**
* 1. Correct `inline-block` display not defined in IE 8/9.
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
*/

audio,
canvas,
progress,
video {
display: inline-block; /* 1 */
vertical-align: baseline; /* 2 */
}

/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/

audio:not([controls]) {
display: none;
height: 0;
}

/**
* Address `[hidden]` styling not present in IE 8/9/10.
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
*/

[hidden],
template {
display: none;
}

/* Links
========================================================================== */

/**
* Remove the gray background color from active links in IE 10.
*/

a {
background-color: transparent;
}

/**
* Improve readability when focused and also mouse hovered in all browsers.
*/

a:active,
a:hover {
outline: 0;
}

/* Text-level semantics
========================================================================== */

/**
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
*/

abbr[title] {
border-bottom: 1px dotted;
}

/**
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
*/

b,
strong {
font-weight: bold;
}

/**
* Address styling not present in Safari and Chrome.
*/

dfn {
font-style: italic;
}

/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari, and Chrome.
*/

h1 {
font-size: 2em;
margin: 0.67em 0;
}

/**
* Address styling not present in IE 8/9.
*/

mark {
background: #ff0;
color: #000;
}

/**
* Address inconsistent and variable font size in all browsers.
*/

small {
font-size: 80%;
}

/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/

sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}

sup {
top: -0.5em;
}

sub {
bottom: -0.25em;
}

/* Embedded content
========================================================================== */

/**
* Remove border when inside `a` element in IE 8/9/10.
*/

img {
border: 0;
}

/**
* Correct overflow not hidden in IE 9/10/11.
*/

svg:not(:root) {
overflow: hidden;
}

/* Grouping content
========================================================================== */

/**
* Address margin not present in IE 8/9 and Safari.
*/

figure {
margin: 1em 40px;
}

/**
* Address differences between Firefox and other browsers.
*/

hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}

/**
* Contain overflow in all browsers.
*/

pre {
overflow: auto;
}

/**
* Address odd `em`-unit font size rendering in all browsers.
*/

code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}

/* Forms
========================================================================== */

/**
* Known limitation: by default, Chrome and Safari on OS X allow very limited
* styling of `select`, unless a `border` property is set.
*/

/**
* 1. Correct color not being inherited.
* Known issue: affects color of disabled elements.
* 2. Correct font properties not being inherited.
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
*/

button,
input,
optgroup,
select,
textarea {
color: inherit; /* 1 */
font: inherit; /* 2 */
margin: 0; /* 3 */
}

/**
* Address `overflow` set to `hidden` in IE 8/9/10/11.
*/

button {
overflow: visible;
}

/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
* Correct `select` style inheritance in Firefox.
*/

button,
select {
text-transform: none;
}

/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/

button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}

/**
* Re-set default cursor for disabled elements.
*/

button[disabled],
html input[disabled] {
cursor: default;
}

/**
* Remove inner padding and border in Firefox 4+.
*/

button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}

/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/

input {
line-height: normal;
}

/**
* It's recommended that you don't attempt to style these elements.
* Firefox's implementation doesn't respect box-sizing, padding, or width.
*
* 1. Address box sizing set to `content-box` in IE 8/9/10.
* 2. Remove excess padding in IE 8/9/10.
*/

input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}

/**
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
* `font-size` values of the `input`, it causes the cursor style of the
* decrement button to change from `default` to `text`.
*/

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}

/**
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome
* (include `-moz` to future-proof).
*/

input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}

/**
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
* Safari (but not Chrome) clips the cancel button when the search input has
* padding (and `textfield` appearance).
*/

input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}

/**
* Define consistent border, margin, and padding.
*/

fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}

/**
* 1. Correct `color` not being inherited in IE 8/9/10/11.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/

legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}

/**
* Remove default vertical scrollbar in IE 8/9/10/11.
*/

textarea {
overflow: auto;
}

/**
* Don't inherit the `font-weight` (applied by a rule above).
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
*/

optgroup {
font-weight: bold;
}

/* Tables
========================================================================== */

/**
* Remove most spacing between table cells.
*/

table {
border-collapse: collapse;
border-spacing: 0;
}

td,
th {
padding: 0;
}

+ 0
- 70
docs/_sass/vendor/normalize.scss/package.json View File

@@ -1,70 +0,0 @@
{
"_args": [
[
"normalize.scss",
"/Users/pmarsceill/_projects/just-the-docs"
]
],
"_from": "normalize.scss@*",
"_id": "normalize.scss@0.1.0",
"_inCache": true,
"_installable": true,
"_location": "/normalize.scss",
"_nodeVersion": "0.10.32",
"_npmUser": {
"email": "alexguerrero1092@gmail.com",
"name": "alexguerrero"
},
"_npmVersion": "2.0.2",
"_phantomChildren": {},
"_requested": {
"name": "normalize.scss",
"raw": "normalize.scss",
"rawSpec": "",
"scope": null,
"spec": "*",
"type": "range"
},
"_requiredBy": [
"#DEV:/"
],
"_resolved": "https://registry.npmjs.org/normalize.scss/-/normalize.scss-0.1.0.tgz",
"_shasum": "4a21dc25bd4c019c857785f829b658aba2a8f9ab",
"_shrinkwrap": null,
"_spec": "normalize.scss",
"_where": "/Users/pmarsceill/_projects/just-the-docs",
"author": "",
"bugs": {
"url": "https://github.com/guerrero/normalize.scss/issues"
},
"dependencies": {},
"description": "Normalize.scss as a node packaged module",
"devDependencies": {},
"directories": {},
"dist": {
"shasum": "4a21dc25bd4c019c857785f829b658aba2a8f9ab",
"tarball": "https://registry.npmjs.org/normalize.scss/-/normalize.scss-0.1.0.tgz"
},
"files": [
"normalize.scss"
],
"gitHead": "d67d517e28615a873066438af1d4845c157c9baf",
"homepage": "https://github.com/guerrero/normalize.scss",
"license": "MIT",
"maintainers": [
{
"name": "alexguerrero",
"email": "alexguerrero1092@gmail.com"
}
],
"name": "normalize.scss",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/guerrero/normalize.scss.git"
},
"scripts": {},
"style": "normalize.scss",
"version": "0.1.0"
}

+ 0
- 45
docs/assets/css/dark-mode-preview.scss View File

@@ -1,45 +0,0 @@
---
# this ensures Jekyll reads the file to be transformed into CSS later
# only Main files contain this front matter, not partials.
---

{% if site.logo %}
$logo: "{{ site.logo | absolute_url }}";
{% endif %}

//
// Import external dependencies
//

@import "./vendor/normalize.scss/normalize.scss";

//
// Import Just the Docs scss
//

// Support
@import "./support/support";

//
// Import custom color scheme scss
//

@import "./color_schemes/dark.scss";

// Modules
@import "./base";
@import "./layout";
@import "./content";
@import "./navigation";
@import "./typography";
@import "./labels";
@import "./buttons";
@import "./search";
@import "./tables";
@import "./code";
@import "./utilities/utilities";

//
// Import custom overrides
//
@import "./custom/custom";

+ 0
- 49
docs/assets/css/just-the-docs.scss View File

@@ -1,49 +0,0 @@
---
# this ensures Jekyll reads the file to be transformed into CSS later
# only Main files contain this front matter, not partials.
---

{% if site.logo %}
$logo: "{{ site.logo | absolute_url }}";
{% endif %}

//
// Import external dependencies
//

@import "./vendor/normalize.scss/normalize.scss";

//
// Import Just the Docs scss
//

// Support
@import "./support/support";

//
// Import custom overrides
//

@import "./custom/custom";

//
// Import custom color scheme scss
//

{% if site.color_scheme == "dark" %}
@import "./color_schemes/dark.scss";
{% endif %}

// Modules
@import "./base";
@import "./layout";
@import "./content";
@import "./navigation";
@import "./typography";
@import "./labels";
@import "./buttons";
@import "./search";
@import "./tables";
@import "./code";
@import "./utilities/utilities";
@import "./overrides";

BIN
docs/assets/images/just-the-docs.png View File

Before After
Width: 588  |  Height: 440  |  Size: 20 KiB

+ 0
- 132
docs/assets/images/satellite.svg View File

@@ -1,132 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512.104 512.104" style="enable-background:new 0 0 512.104 512.104;" xml:space="preserve">
<g transform="translate(0 -1)">
<g transform="translate(1 2)">
<path style="fill:#A4C2F7;" d="M434.252,203.904c0,0-7.339,132.437-145.067,151.381c-11.314,1.514-22.718,2.256-34.133,2.219
c-4.352,0-8.619-0.085-12.8-0.341c-7.139-0.26-14.259-0.887-21.333-1.877C83.191,336.341,75.852,203.904,75.852,203.904H434.252z"
/>
<path style="fill:#E3E7F2;" d="M408.652,203.904c0,0-7.339,132.437-145.067,151.381c-7.074,0.99-14.195,1.617-21.333,1.877
c-7.139-0.26-14.259-0.887-21.333-1.877C83.191,336.341,75.852,203.904,75.852,203.904H408.652z"/>
<path style="fill:#7FABFA;" d="M331.596,502.57H178.508c-2.631,0.051-5.142-1.1-6.82-3.127c-1.678-2.027-2.34-4.708-1.799-7.284
l13.653-59.733c0.955-3.93,4.489-6.687,8.533-6.656h125.952c4.045-0.031,7.579,2.725,8.533,6.656l13.653,59.733
c0.541,2.575-0.121,5.257-1.799,7.284C336.738,501.47,334.227,502.621,331.596,502.57z"/>
<path style="fill:#A4C2F7;" d="M434.252,203.904c0,34.389-66.731,62.805-153.6,67.584c-8.363,0.427-16.896,0.683-25.6,0.683
c-4.267,0-8.448-0.085-12.629-0.171h-0.341l-12.629-0.512c-86.869-4.779-153.6-33.195-153.6-67.584s66.731-62.805,153.6-67.584
l12.629-0.512h0.341c4.181-0.085,8.363-0.171,12.629-0.171c8.704,0,17.237,0.256,25.6,0.683
C367.521,141.098,434.252,169.514,434.252,203.904z"/>
<path style="fill:#E3E7F2;" d="M408.652,203.904c0,34.389-66.731,62.805-153.6,67.584L242.423,272h-0.341l-12.629-0.512
c-86.869-4.779-153.6-33.195-153.6-67.584s66.731-62.805,153.6-67.584l12.629-0.512h0.341l12.629,0.512
C341.921,141.098,408.652,169.514,408.652,203.904z"/>
<g>
<path style="fill:#4482C3;" d="M396.219,191.104c-8.337-5.393-32.836-18.671-80.213-25.6c-2.244-0.363-4.54,0.197-6.365,1.554
c-1.824,1.357-3.022,3.394-3.32,5.648c-0.682,4.658,2.537,8.987,7.194,9.677c44.058,6.468,66.014,18.287,73.387,23.04
c2.561,1.655,5.81,1.819,8.524,0.429c2.714-1.39,4.48-4.122,4.634-7.168s-1.33-5.941-3.891-7.597L396.219,191.104z"/>
<path style="fill:#4482C3;" d="M194.073,165.504c-47.326,6.938-71.842,20.224-80.213,25.6c-3.959,2.559-5.093,7.843-2.534,11.802
c2.559,3.959,7.843,5.093,11.802,2.534c7.398-4.787,29.38-16.614,73.387-23.04c4.656-0.689,7.875-5.019,7.194-9.677
c-0.297-2.246-1.486-4.277-3.299-5.635C198.595,165.729,196.312,165.158,194.073,165.504z"/>
</g>
<g>
<path style="fill:#A4C2F7;" d="M289.185,355.285v87.552c-0.028,9.414-7.653,17.039-17.067,17.067h-34.133
c-9.414-0.028-17.039-7.653-17.067-17.067v-87.552c7.074,0.99,14.195,1.617,21.333,1.877c4.181,0.256,8.448,0.341,12.8,0.341
c2.901,0,5.803-0.085,8.533-0.171C272.149,357.116,280.695,356.432,289.185,355.285z"/>
<path style="fill:#A4C2F7;" d="M280.652,67.37v204.117c-8.363,0.427-16.896,0.683-25.6,0.683c-4.267,0-8.448-0.085-12.629-0.171
h-0.341l-12.629-0.512V67.37H280.652z"/>
</g>
<polygon style="fill:#D4E1F4;" points="255.052,67.37 255.052,271.488 242.423,272 242.081,272 229.452,271.488 229.452,67.37
"/>
<g>
<path style="fill:#A4C2F7;" d="M297.719,50.304c0,23.564-19.103,42.667-42.667,42.667c-4.334-0.013-8.644-0.645-12.8-1.877
c-17.783-5.632-29.868-22.136-29.868-40.789s12.085-35.157,29.868-40.789c4.156-1.232,8.466-1.864,12.8-1.877
c11.316,0,22.168,4.495,30.17,12.497C293.223,28.135,297.719,38.988,297.719,50.304z"/>
<path style="fill:#A4C2F7;" d="M305.996,502.57H178.508c-2.631,0.051-5.142-1.1-6.82-3.127c-1.678-2.027-2.34-4.708-1.799-7.284
l13.653-59.733c0.955-3.93,4.489-6.687,8.533-6.656h100.352c4.045-0.031,7.579,2.725,8.533,6.656l13.653,59.733
c0.541,2.575-0.121,5.257-1.799,7.284C311.138,501.47,308.627,502.621,305.996,502.57z"/>
</g>
<ellipse style="fill:#E3E7F2;" cx="242.252" cy="50.304" rx="29.867" ry="40.789"/>
<path style="fill:#D4E1F4;" d="M263.585,355.285v87.552c-0.028,9.414-7.653,17.039-17.067,17.067h-8.533
c-9.414-0.028-17.039-7.653-17.067-17.067v-85.504c2.731,0.085,5.632,0.171,8.533,0.171c4.352,0,8.619-0.085,12.8-0.341
C249.39,356.902,256.511,356.275,263.585,355.285z"/>
</g>
<g transform="translate(1 17)">
<path style="fill:#FFFFFF;" d="M229.452,121.32c-86.869,4.779-153.6,33.195-153.6,67.584c0,0,7.339,132.437,145.067,151.381
v87.552c0,9.426,7.641,17.067,17.067,17.067h8.533V340.285c-137.728-18.944-145.067-151.381-145.067-151.381
c0-30.925,53.956-57.02,128-65.434V121.32z"/>
<path style="fill:#FFFFFF;" d="M183.543,417.426l-13.653,59.733c-0.541,2.575,0.121,5.257,1.799,7.284
c1.678,2.027,4.189,3.178,6.82,3.127h25.6c-2.631,0.051-5.142-1.1-6.82-3.127c-1.678-2.027-2.34-4.708-1.799-7.284l13.653-59.733
c0.955-3.93,4.489-6.687,8.533-6.656l-25.6,0C188.031,410.739,184.497,413.496,183.543,417.426z"/>
</g>
<g>
<polygon style="fill:#FFFFFF;" points="179.474,496.037 290.407,496.037 332.63,496.037 332.63,513.104 290.407,513.104
179.474,513.104 "/>
<g>
<path style="fill:#428DFF;" d="M253.799,510.629c0.766-0.82,1.373-1.775,1.792-2.816c0.434-1.027,0.666-2.128,0.683-3.243
c0.02-3.467-2.059-6.601-5.261-7.931c-3.202-1.329-6.89-0.59-9.331,1.872l-1.024,1.28c-0.326,0.475-0.587,0.992-0.777,1.536
c-0.248,0.482-0.418,1.001-0.503,1.536c-0.099,0.564-0.156,1.134-0.171,1.707c0.029,2.26,0.913,4.425,2.475,6.059
C245.079,513.849,250.402,513.849,253.799,510.629z"/>
<path style="fill:#428DFF;" d="M290.185,130.392v-40.03c15.823-14.152,21.271-36.601,13.696-56.432
C296.307,14.1,277.28,1,256.052,1s-40.255,13.1-47.83,32.931s-2.126,42.279,13.696,56.432v40.03
c-90.812,6.519-153.6,37.111-153.6,75.511c0,0.111,0,0.213,0,0.324c0.004,0.051,0.004,0.102,0,0.154
c0.068,1.365,9.148,134.75,145.067,158.123v54.733h-20.309c-8.055-0.092-15.077,5.461-16.845,13.321l-13.653,59.733
c-1.147,5.021,0.07,10.292,3.302,14.302c3.288,4.142,8.297,6.543,13.585,6.511h34.133c4.713,0,8.533-3.82,8.533-8.533
s-3.821-8.533-8.533-8.533h-34.133v0.094c-0.085,0-0.154-0.043-0.23-0.043l13.841-59.785h20.309v8.533
c0,14.138,11.462,25.6,25.6,25.6h34.133c14.138,0,25.6-11.462,25.6-25.6v-8.533h20.523l13.397,59.733h-50.765
c-4.713,0-8.533,3.82-8.533,8.533s3.82,8.533,8.533,8.533h50.765c5.278,0.026,10.276-2.371,13.559-6.502
c3.235-4.012,4.449-9.288,3.294-14.31l-13.653-59.733c-1.785-7.834-8.776-13.373-16.811-13.321h-20.309v-54.733
C434.62,341.131,443.7,207.747,443.785,206.381c0-0.051,0-0.102,0-0.145s0-0.222,0-0.333
C443.785,167.504,380.997,136.912,290.185,130.392z M426.719,205.827v0.29c-0.299,24.806-54.101,52.053-136.533,58.189V147.501
C374.665,153.85,426.591,182.121,426.719,205.827z M256.052,18.17c18.851,0,34.133,15.282,34.133,34.133
s-15.282,34.133-34.133,34.133s-34.133-15.282-34.133-34.133S237.201,18.17,256.052,18.17z M256.052,103.504
c5.818-0.015,11.59-1.025,17.067-2.987V265.21c-2.756,0.102-5.453,0.256-8.269,0.307c-2.816,0.051-5.888,0.119-8.798,0.119
c-5.803,0-11.477-0.128-17.067-0.333V100.517C244.462,102.479,250.234,103.489,256.052,103.504z M221.919,147.501v116.847
c-81.707-6.093-136.218-33.374-136.533-58.249v-0.273C85.513,182.121,137.481,153.85,221.919,147.501z M281.652,444.837
c0,4.713-3.82,8.533-8.533,8.533h-34.133c-4.713,0-8.533-3.82-8.533-8.533v-77.978c1.638,0.162,3.362,0.23,5.035,0.358
c1.476,0.102,2.935,0.222,4.429,0.307c10.757,0.614,21.541,0.614,32.299,0c1.459-0.077,2.893-0.188,4.335-0.299
c1.707-0.128,3.413-0.196,5.12-0.358L281.652,444.837z M289.025,348.828c-16.514,2.154-33.199,2.691-49.818,1.604
c-5.538-0.358-10.957-0.853-16.128-1.604c-82.389-11.349-115.55-64.683-128.853-103.031
c28.032,19.627,76.8,33.092,135.962,36.164c0.102,0,0.196,0.06,0.299,0.06s0.102,0,0.162,0
c8.311,0.427,16.751,0.717,25.438,0.717c3.157,0,6.221,0,9.199-0.085c5.521-0.102,10.923-0.341,16.282-0.623h0.119
c0.06,0,0.111,0,0.171,0c59.145-3.166,108.177-17.015,136.286-36.762C404.933,283.617,371.849,337.436,289.025,348.828z"/>
<path style="fill:#428DFF;" d="M314.539,184.4c44.058,6.468,66.014,18.287,73.387,23.04c2.561,1.655,5.81,1.819,8.524,0.429
c2.714-1.39,4.48-4.122,4.634-7.168c0.153-3.045-1.33-5.941-3.891-7.597c-8.337-5.393-32.836-18.671-80.213-25.6
c-2.244-0.363-4.54,0.197-6.365,1.554c-1.824,1.357-3.022,3.394-3.32,5.648c-0.331,2.247,0.247,4.534,1.607,6.353
C310.261,182.879,312.29,184.081,314.539,184.4z"/>
<path style="fill:#428DFF;" d="M119.519,208.839c1.641-0.001,3.247-0.475,4.625-1.365c7.398-4.787,29.38-16.614,73.387-23.04
c4.656-0.689,7.875-5.019,7.194-9.677c-0.3-2.253-1.499-4.289-3.323-5.645c-1.824-1.356-4.119-1.918-6.363-1.557
c-47.326,6.938-71.842,20.224-80.213,25.6c-3.171,2.065-4.604,5.972-3.519,9.597
C112.391,206.378,115.734,208.855,119.519,208.839z"/>
</g>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

+ 0
- 1
docs/assets/images/search.svg View File

@@ -1 +0,0 @@
<svg width="28" height="28" viewBox="0 0 28 28" xmlns="http://www.w3.org/2000/svg"><title>Search</title><g fill-rule="nonzero" fill="#959396"><path d="M17.332 20.735c-5.537 0-10-4.6-10-10.247 0-5.646 4.463-10.247 10-10.247 5.536 0 10 4.601 10 10.247s-4.464 10.247-10 10.247zm0-4c3.3 0 6-2.783 6-6.247 0-3.463-2.7-6.247-6-6.247s-6 2.784-6 6.247c0 3.464 2.7 6.247 6 6.247z"/><path d="M11.672 13.791L.192 25.271 3.02 28.1 14.5 16.62z"/></g></svg>

+ 0
- 23
docs/assets/js/dark-mode-preview.js View File

@@ -1,23 +0,0 @@
document.addEventListener("DOMContentLoaded", function(){

const toggleDarkMode = document.querySelector('.js-toggle-dark-mode')
const cssFile = document.querySelector('[rel="stylesheet"]')
const originalCssRef = cssFile.getAttribute('href')
const darkModeCssRef = originalCssRef.replace('just-the-docs.css', 'dark-mode-preview.css')
const buttonCopy = ['Return to the light side', 'Preview dark color scheme']
const updateButtonText = function(toggleDarkMode) {
toggleDarkMode.textContent === buttonCopy[0] ?
toggleDarkMode.textContent = buttonCopy[1] :
toggleDarkMode.textContent = buttonCopy[0]
}

jtd.addEvent(toggleDarkMode, 'click', function(){
if (cssFile.getAttribute('href') === originalCssRef) {
cssFile.setAttribute('href', darkModeCssRef)
updateButtonText(toggleDarkMode)
} else {
cssFile.setAttribute('href', originalCssRef)
updateButtonText(toggleDarkMode)
}
})
})

+ 0
- 312
docs/assets/js/just-the-docs.js View File

@@ -1,312 +0,0 @@
---
---
(function (jtd, undefined) {

// Event handling

jtd.addEvent = function(el, type, handler) {
if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler);
}
jtd.removeEvent = function(el, type, handler) {
if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler);
}
jtd.onReady = function(ready) {
// 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();
});
}

// Show/hide mobile menu

function initNav() {
const mainNav = document.querySelector('.js-main-nav');
const pageHeader = document.querySelector('.js-page-header');
const navTrigger = document.querySelector('.js-main-nav-trigger');

jtd.addEvent(navTrigger, 'click', function(e){
e.preventDefault();
var text = navTrigger.innerText;
var textToggle = navTrigger.getAttribute('data-text-toggle');

mainNav.classList.toggle('nav-open');
pageHeader.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 request = new XMLHttpRequest();
request.open('GET', '{{ "assets/js/search-data.json" | absolute_url }}', true);

request.onload = function(){
if (request.status >= 200 && request.status < 400) {
// Success!
var data = JSON.parse(request.responseText);
{% if site.search_tokenizer_separator != nil %}
lunr.tokenizer.separator = {{ site.search_tokenizer_separator }}
{% else %}
lunr.tokenizer.separator = /[\s\-/]+/
{% endif %}
var index = lunr(function () {
this.ref('id');
this.field('title', { boost: 200 });
this.field('content', { boost: 2 });
this.field('url');
this.metadataWhitelist = ['position']

for (var i in data) {
this.add({
id: i,
title: data[i].title,
content: data[i].content,
url: data[i].url
});
}
});

searchResults(index, 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(index, data) {
var index = index;
var docs = data;
var searchInput = document.querySelector('.js-search-input');
var searchResults = document.querySelector('.js-search-results');

function hideResults() {
searchResults.innerHTML = '';
searchResults.classList.remove('active');
}

jtd.addEvent(searchInput, 'keydown', function(e){
switch (e.keyCode) {
case 38: // arrow up
e.preventDefault();
var active = document.querySelector('.search-result.active');
if (active) {
active.classList.remove('active');
if (active.parentElement.previousSibling) {
var previous = active.parentElement.previousSibling.querySelector('.search-result');
previous.classList.add('active');
}
}
return;
case 40: // arrow down
e.preventDefault();
var active = document.querySelector('.search-result.active');
if (active) {
if (active.parentElement.nextSibling) {
var next = active.parentElement.nextSibling.querySelector('.search-result');
active.classList.remove('active');
next.classList.add('active');
}
} else {
var next = document.querySelector('.search-result');
if (next) {
next.classList.add('active');
}
}
return;
case 13: // enter
e.preventDefault();
var active = document.querySelector('.search-result.active');
if (active) {
active.click();
} else {
var first = document.querySelector('.search-result');
if (first) {
first.click();
}
}
return;
}
});

jtd.addEvent(searchInput, 'keyup', function(e){
switch (e.keyCode) {
case 27: // When esc key is pressed, hide the results and clear the field
hideResults();
searchInput.value = '';
return;
case 38: // arrow up
case 40: // arrow down
case 13: // enter
e.preventDefault();
return;
}

hideResults();

var input = this.value;
if (input === '') {
return;
}

var results = index.query(function (query) {
var tokens = lunr.tokenizer(input)
query.term(tokens, {
boost: 10
});
query.term(tokens, {
wildcard: lunr.Query.wildcard.TRAILING
});
});

if (results.length > 0) {
searchResults.classList.add('active');
var resultsList = document.createElement('ul');
resultsList.classList.add('search-results-list');
searchResults.appendChild(resultsList);

for (var i in results) {
var result = results[i];
var doc = docs[result.ref];

var resultsListItem = document.createElement('li');
resultsListItem.classList.add('search-results-list-item');
resultsList.appendChild(resultsListItem);

var resultLink = document.createElement('a');
resultLink.classList.add('search-result');
resultLink.setAttribute('href', doc.url);
resultsListItem.appendChild(resultLink);

var resultTitle = document.createElement('div');
resultTitle.classList.add('search-result-title');
resultTitle.innerText = doc.title;
resultLink.appendChild(resultTitle);

var resultRelUrl = document.createElement('span');
resultRelUrl.classList.add('search-result-rel-url');
resultRelUrl.innerText = doc.relUrl;
resultTitle.appendChild(resultRelUrl);

var metadata = result.matchData.metadata;
var contentFound = false;
for (var j in metadata) {
if (metadata[j].title) {
var position = metadata[j].title.position[0];
var start = position[0];
var end = position[0] + position[1];
resultTitle.innerHTML = doc.title.substring(0, start) + '<span class="search-result-highlight">' + doc.title.substring(start, end) + '</span>' + doc.title.substring(end, doc.title.length)+'<span class="search-result-rel-url">'+doc.relUrl+'</span>';

} else if (metadata[j].content && !contentFound) {
contentFound = true;

var position = metadata[j].content.position[0];
var start = position[0];
var end = position[0] + position[1];
var previewStart = start;
var previewEnd = end;
var ellipsesBefore = true;
var ellipsesAfter = true;
for (var k = 0; k < 3; k++) {
var nextSpace = doc.content.lastIndexOf(' ', previewStart - 2);
var nextDot = doc.content.lastIndexOf('.', previewStart - 2);
if ((nextDot > 0) && (nextDot > nextSpace)) {
previewStart = nextDot + 1;
ellipsesBefore = false;
break;
}
if (nextSpace < 0) {
previewStart = 0;
ellipsesBefore = false;
break;
}
previewStart = nextSpace + 1;
}
for (var k = 0; k < 10; k++) {
var nextSpace = doc.content.indexOf(' ', previewEnd + 1);
var nextDot = doc.content.indexOf('.', previewEnd + 1);
if ((nextDot > 0) && (nextDot < nextSpace)) {
previewEnd = nextDot;
ellipsesAfter = false;
break;
}
if (nextSpace < 0) {
previewEnd = doc.content.length;
ellipsesAfter = false;
break;
}
previewEnd = nextSpace;
}
var preview = doc.content.substring(previewStart, start);
if (ellipsesBefore) {
preview = '... ' + preview;
}
preview += '<span class="search-result-highlight">' + doc.content.substring(start, end) + '</span>';
preview += doc.content.substring(end, previewEnd);
if (ellipsesAfter) {
preview += ' ...';
}

var resultPreview = document.createElement('div');
resultPreview.classList.add('search-result-preview');
resultPreview.innerHTML = preview;
resultLink.appendChild(resultPreview);
}
}
}
}
});

jtd.addEvent(searchInput, 'blur', function(){
setTimeout(function(){ hideResults() }, 300);
});
}
}

function pageFocus() {
var mainContent = document.querySelector('.js-main-content');
mainContent.focus();
}

// Set theme according to user preferences

function setTheme() {
const cssFile = document.querySelector('[rel="stylesheet"]')
const originalCssRef = cssFile.getAttribute('href')
const darkModeCssRef = originalCssRef.replace('just-the-docs.css', 'dark-mode-preview.css')
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
cssFile.setAttribute('href', darkModeCssRef)
}
}

// Document ready

jtd.onReady(function(){
initNav();
setTheme();
pageFocus();
if (typeof lunr !== 'undefined') {
initSearch();
}
});

})(window.jtd = window.jtd || {});

{% include js/custom.js %}

+ 0
- 12
docs/assets/js/search-data.json View File

@@ -1,12 +0,0 @@
---
---
{
{% assign comma = false %}
{% for page in site.html_pages %}{% if page.search_exclude != true %}{% if comma == true%},{% endif %}"{{ forloop.index0 }}": {
"title": "{{ page.title | replace: '&amp;', '&' }}",
"content": "{{ page.content | markdownify | replace: '</h', ' . </h' | replace: '<hr', ' . <hr' | replace: '</p', ' . </p' | replace: '</ul', ' . </ul' | replace: '</tr', ' . </tr' | replace: '</li', ' | </li' | replace: '</td', ' | </td' | strip_html | escape_once | remove: 'Table of contents' | remove: '```' | remove: '---' | replace: '\', ' ' | replace: ' . . . ', ' . ' | replace: ' . . ', ' . ' | normalize_whitespace }}",
"url": "{{ page.url | absolute_url }}",
"relUrl": "{{ page.url }}"
}{% assign comma = true %}
{% endif %}{% endfor %}
}

+ 0
- 6
docs/assets/js/vendor/lunr.min.js
File diff suppressed because it is too large
View File


+ 0
- 16
docs/bin/just-the-docs View File

@@ -1,16 +0,0 @@
#!/usr/bin/env ruby

gem_dir = File.expand_path("..",File.dirname(__FILE__))
$LOAD_PATH.unshift gem_dir # Look in gem directory for resources first.
exec_type = ARGV[0]

if exec_type == 'rake' then
require 'rake'
require 'pp'
pwd=Dir.pwd
Dir.chdir(gem_dir) # We'll load rakefile from the gem's dir.
Rake.application.init
Rake.application.load_rakefile
Dir.chdir(pwd) # Revert to original pwd for any path args passed to task.
Rake.application.invoke_task(ARGV[1])
end

+ 0
- 30
docs/docs/computers/computers.md View File

@@ -1,30 +0,0 @@
---
layout: default
title: Computers
has_children: false
nav_order: 4
---

# Supported Computers
{: .no_toc }

This is a list of Raspberry Pi versions validated to work with this image.
{: .fs-6 .fw-300 }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

## Vanilla Version (32-bit)
- Raspberry Pi Zero
- Raspberry Pi 1/1+
- Raspberry Pi 2
- Raspberry Pi 3/3+
- Raspberry Pi 4 (since v2.2)

## Performance Version (64-bit)
TBD

+ 0
- 46
docs/docs/radios/airspy_hf.md View File

@@ -1,46 +0,0 @@
---
layout: default
title: Airspy HF+ Discovery
parent: Radios
nav_order: 1
---

# Airspy HF+ Discovery
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

## Specifications

| Specification | Value |
|:----------------|:----------------|
| Frequency Range (HF Mode) | 0.5 kHz - 31 MHz |
| Frequency Range (VHF Mode) | 60 to 260 MHz |
| ADC Resolution | 16-bits (scaled from 18-bits) |
| USB Speed | 2.0 |
| TX Mode | No |
| Crystal | TCXO (0.5 ppm stable) |
| Bias-T | No |

## Device Fingerprint
```bash
$ lsusb
Bus 003 Device 004: ID 03eb:800c Atmel Corp. Airspy HF+
```

## Firmware Sources
```
https://github.com/airspy/airspyhf
```

## Supported Software
- GQRX
- SDRAngel
- GNURadio
- Soapy Remote

+ 0
- 46
docs/docs/radios/airspy_mini.md View File

@@ -1,46 +0,0 @@
---
layout: default
title: Airspy Mini
parent: Radios
nav_order: 2
---

# Airspy Mini
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

## Specifications

| Specification | Value |
|:----------------|:----------------|
| Frequency Range | 24 - 1700 MHz |
| Bandwidth | 3, 6 or 10 Msps |
| ADC Resolution | 8-bits |
| USB Speed | 2.0 |
| TX Mode | No |
| Crystal | TCXO (0.5 ppm stable) |
| Bias-T | Yes |

## Device Fingerprint
```bash
$ lsusb
Bus 001 Device 007: ID 1d50:60a1 OpenMoko, Inc. Airspy
```

## Firmware Sources
```
https://github.com/airspy/airspyone_host
```

## Supported Software
- GQRX
- SDRAngel
- GNURadio
- Soapy Remote

+ 0
- 46
docs/docs/radios/airspy_r2.md View File

@@ -1,46 +0,0 @@
---
layout: default
title: Airspy R2
parent: Radios
nav_order: 3
---

# Airspy R2
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

## Specifications

| Specification | Value |
|:----------------|:----------------|
| Frequency Range | 24 - 1700 MHz |
| Bandwidth | Up to 10 Msps |
| ADC Resolution | 8-bits |
| USB Speed | 2.0 |
| TX Mode | No |
| Crystal | TCXO (0.5 ppm stable) |
| Bias-T | Yes |

## Device Fingerprint
```bash
$ lsusb
Bus 003 Device 003: ID 1d50:60a1 OpenMoko, Inc. Airspy
```

## Firmware Sources
```
https://github.com/airspy/airspyone_host
```

## Supported Software
- GQRX
- SDRAngel
- GNURadio
- Soapy Remote

+ 0
- 42
docs/docs/radios/hackrf.md View File

@@ -1,42 +0,0 @@
---
layout: default
title: HackRF
parent: Radios
nav_order: 9
---

# HackRF One
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

## Specifications

| Specification | Value |
|:----------------|:----------------|
| Frequency Range | 1 - 6000 MHz |
| Bandwidth | Up to 20 Msps |
| ADC Resolution | 8-bits |
| USB Speed | 2.0 |
| TX Mode | Yes |
| Duplex | Half |
| Crystal | 20 ppm |
| Bias-T | No |

## Firmware Sources
```
https://github.com/mossmann/hackrf.git
https://github.com/pothosware/SoapyHackRF.git
```

## Supported Software
- GQRX
- SDRAngel
- GNURadio
- Soapy Remote

+ 0
- 50
docs/docs/radios/limenet_micro.md View File

@@ -1,50 +0,0 @@
---
layout: default
title: LimeNET Micro
parent: Radios
nav_order: 4
---

# LimeNET Micro
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

This device is a computer based on a Raspberry Pi 3B+ Compute Module with a built-in LimeSDR Micro. The SDR specifications are almost identical with some exceptions like the addition of a more precise oscillation crystal. This radio also has an GPSDO based on the Ublox NEO-M8T. More information about this device can be found on the [Myriad Wiki](https://wiki.myriadrf.org/LimeNET_Micro).

## Specifications

| Specification | Value |
|:----------------|:----------------|
| Frequency Range | 10 - 3500 MHz |
| Bandwidth | Up to 10 Msps (Stable) |
| ADC Resolution | 12-bits |
| USB Speed | 2.0 (FT601) |
| TX Mode | Yes |
| Duplex | Full |
| Crystal | Rakon OCXO (+/-5 ppb) |
| Bias-T | No |

## Firmware Sources
```
https://github.com/myriadrf/LimeSuite
https://github.com/myriadrf/gr-limesdr
https://github.com/myriadrf/pyLMS7002Soapy
```

## Supported Software
- GNURadio
- GQRX
- LimeUtil
- LimeVNA
- SDRAngel
- Soapy Remote

## Command Line Tools
- LimeQuickTest

+ 0
- 56
docs/docs/radios/limesdr_mini.md View File

@@ -1,56 +0,0 @@
---
layout: default
title: LimeSDR Mini
parent: Radios
nav_order: 5
---

# LimeSDR Mini
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

Smaller version of the LimeSDR USB with almost half the specifications. More information about this device can be found on the [Myriad Wiki](https://wiki.myriadrf.org/LimeSDR-Mini).

## Specifications

| Specification | Value |
|:----------------|:----------------|
| Frequency Range | 10 - 3500 MHz |
| Bandwidth | Up to 30.72 Msps (Stable) |
| ADC Resolution | 12-bits |
| USB Speed | 3.0 (FT601) |
| TX Mode | Yes |
| Duplex | Full |
| Crystal | Rakon TCXO (4.0 ppm stable) |
| Bias-T | No |

## Device Fingerprint
```bash
$ lsusb
Bus 020 Device 009: ID 0403:601f Future Technology Devices International Limited LimeSDR Mini Serial: XXXXXXXXXXXXXX
```

## Firmware Sources
```
https://github.com/myriadrf/LimeSuite
https://github.com/myriadrf/gr-limesdr
https://github.com/myriadrf/pyLMS7002Soapy
```

## Supported Software
- GNURadio
- GQRX
- LimeUtil
- LimeVNA
- SDRAngel
- Soapy Remote

## Command Line Tools
- LimeQuickTest

+ 0
- 56
docs/docs/radios/limesdr_usb.md View File

@@ -1,56 +0,0 @@
---
layout: default
title: LimeSDR USB
parent: Radios
nav_order: 6
---

# LimeSDR USB
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

More capable version of the LimeSDR Mini with double the specifications. More information about this device can be found on the [Myriad Wiki](https://wiki.myriadrf.org/LimeSDR-USB).

## Specifications

| Specification | Value |
|:----------------|:----------------|
| Frequency Range | 100 kHz - 3.8 GHz |
| Bandwidth | Up to 61.44 Msps (Stable) |
| ADC Resolution | 12-bits |
| USB Speed | 3.0 (CYUSB3014) |
| TX Mode | Yes |
| Duplex | Full (2x2 MIMO) |
| Crystal | Rakon TCXO (4.0 ppm stable) |
| Bias-T | No |

## Device Fingerprint
```bash
$ lsusb
Bus 020 Device 010: ID 1d50:6108 1d50 LimeSDR-USB Serial: XXXXXXXXXXXXXXXXX
```

## Firmware Sources
```
https://github.com/myriadrf/LimeSuite
https://github.com/myriadrf/gr-limesdr
https://github.com/myriadrf/pyLMS7002Soapy
```

## Supported Software
- GNURadio
- GQRX
- LimeUtil
- LimeVNA
- SDRAngel
- Soapy Remote

## Command Line Tools
- LimeQuickTest

+ 0
- 53
docs/docs/radios/plutosdr.md View File

@@ -1,53 +0,0 @@
---
layout: default
title: PlutoSDR
parent: Radios
nav_order: 7
---

# PlutoSDR
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

Software Defined Radio with a built-in ARM core based on the Xilinx Zync-7000 featuring the AD936x as the RF transceiver.

## Specifications

| Specification | Value |
|:----------------|:----------------|
| Frequency Range | 325 - 3800 MHz |
| Bandwidth | Up to 20 Msps (Stable) |
| ADC Resolution | 12-bits |
| USB Speed | 2.0 |
| TX Mode | Yes |
| Bias-T | No |

## Device Fingerprint
```bash
$ lsusb
Bus 001 Device 005: ID 0456:b673 Analog Devices, Inc. PlutoSDR (ADALM-PLUTO)
```

## Firmware Sources
```
https://github.com/analogdevicesinc/libiio
https://github.com/analogdevicesinc/libad9361-iio
https://github.com/analogdevicesinc/gr-iio
```

## Supported Software
- GQRX
- SDRAngel
- GNURadio
- Soapy Remote

## Command Line Tools
- iio_readdev
- iio_info

+ 0
- 15
docs/docs/radios/radios.md View File

@@ -1,15 +0,0 @@
---
layout: default
title: Radios
has_children: true
nav_order: 2
---

# Radio Support
{: .no_toc }

This is a list of software defined radios validated to work with the current version of this image.[^1]
{: .fs-6 .fw-300 }

---
[^1]: _The Airspy HF+ Discovery is currently not validated since my review unit still in the mail. But it should work without problems, please, contact me on [Twitter](https://twitter.com/luigifcruz) if not._

+ 0
- 61
docs/docs/radios/rtlsdr.md View File

@@ -1,61 +0,0 @@
---
layout: default
title: RTL-SDR
parent: Radios
nav_order: 8
---

# RTL-SDR
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

Currently, the most popular SDR device. Supported by the PiSDR with the modified library provided by the [RTL-SDR Blog](https://www.rtl-sdr.com). This library adds patches to improve performance within the L-Band, improves over-heating problems and enables the Bias-T on supported devices.

## Specifications

| Specification | Value |
|:----------------|:----------------|
| Frequency Range | 24 - 1766 MHz |
| Bandwidth | Up to 2.56 Msps (Stable) |
| ADC Resolution | 8-bits |
| USB Speed | 2.0 |
| TX Mode | No |
| Crystal | TCXO (0.5-1.0 ppm stable)[^1] |
| Bias-T | Yes[^1] |

## Device Fingerprint
```bash
$ lsusb
Bus 020 Device 006: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838UHIDIR Serial: 00000001
```

## Firmware Sources
```
https://github.com/osmocom/rtl-sdr
```

## Supported Software
- GQRX
- SDRAngel
- GNURadio
- Soapy Remote

## Command Line Tools
- rtl_adsb
- rtl_biast
- rtl_eeprom
- rtl_fm
- rtl_power
- rtl_sdr
- rtl_tcp
- rtl_test

---
[^1]: _Official model from the RTL-SDR blog._

+ 0
- 30
docs/docs/software/CygnusRFI.md View File

@@ -1,30 +0,0 @@
---
layout: default
title: CygnusRFI
parent: Software
nav_order: 9
---

# CygnusRFI
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

An open-source RFI analysis tool for Ground Stations & Radio Telescopes. Details are provided by the [GitHub Page](https://github.com/0xCoto/CygnusRFI).

## Specifications
- Installed Version: Master

## Sources
```
https://github.com/0xCoto/CygnusRFI
```

## Supported Radios
- GNURadio Supported Devices

+ 0
- 32
docs/docs/software/LeanSDR.md View File

@@ -1,32 +0,0 @@
---
layout: default
title: LeanSDR
parent: Software
nav_order: 7
---

# LeanSDR
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

Software meant to demodulate DVB-S/S2 transmissions. Details are provided by the [Documentation Page](http://www.pabr.org/radio/leandvb/leandvb.en.html).

## Specifications
- Installed Version: Master

## Sources
```
https://github.com/pabr/leansdr.git
```

## Supported Radios
- RTL-SDR
- PlutoSDR
- LimeSDR

+ 0
- 30
docs/docs/software/VIRGO.md View File

@@ -1,30 +0,0 @@
---
layout: default
title: VIRGO
parent: Software
nav_order: 8
---

# VIRGO
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

An open-source Spectrometer for Radio Astronomy. Details are provided by the [GitHub Page](https://github.com/0xCoto/VIRGO).

## Specifications
- Installed Version: Master

## Sources
```
https://github.com/0xCoto/VIRGO
```

## Supported Radios
- GNURadio Supported Devices

+ 0
- 32
docs/docs/software/acarsdec.md View File

@@ -1,32 +0,0 @@
---
layout: default
title: acarsdec
parent: Software
nav_order: 12
---

# acarsdec
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

A multi-channel ACARS decoder with built-in rtl_sdr, airspy front end or sdrplay device. Details are provided by the [GitHub Page](https://github.com/TLeconte/acarsdec).

## Specifications
- Installed Version: Master

## Sources
```
https://github.com/TLeconte/acarsdec
```

## Supported Radios
- RTL-SDR
- Airspy
- SDRPlay

+ 0
- 38
docs/docs/software/gnuradio.md View File

@@ -1,38 +0,0 @@
---
layout: default
title: GNURadio
parent: Software
nav_order: 1
---

# GNURadio
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

Open-source software meant to facilitate the construction of signal-processing pipelines using DSP blocks. Widely used by the hobbyist and professional community.

## Specifications
- Installed Version: 3.7

## Sources
```
sudo apt install gnuradio (Vanilla Version)
https://github.com/gnuradio/gnuradio (Performance Version)
```

## Supported Radios
- Airspy HF+ Discovery
- Airspy Mini
- Airspy R2
- LimeNET Micro
- LimeSDR Mini
- LimeSDR USB
- PlutoSDR
- RTL-SDR

+ 0
- 27
docs/docs/software/gpredict.md View File

@@ -1,27 +0,0 @@
---
layout: default
title: Gpredict
parent: Software
nav_order: 13
---

# Gpredict
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

Gpredict is a real time satellite tracking and orbit prediction program for the Linux desktop. Details are provided by the [GitHub Page](https://github.com/csete/gpredict.git).

## Specifications
- Installed Version: Master

## Sources
```
https://github.com/csete/gpredict.git
```

+ 0
- 40
docs/docs/software/gqrx.md View File

@@ -1,40 +0,0 @@
---
layout: default
title: GQRX
parent: Software
nav_order: 2
---

# GQRX
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

Famous signal analyzer front-end software for multiple radios. Radio interface based on the gr-osmocom library. This software can only receive signals.

## Specifications
- Installed Version: 2.11.5

## Sources
```
https://github.com/csete/gqrx
```

## Supported Radios
- Airspy HF+ Discovery
- Airspy Mini
- Airspy R2
- LimeNET Micro[^1]
- LimeSDR Mini[^1]
- LimeSDR USB[^1]
- PlutoSDR[^1]
- RTL-SDR

---
[^1]: _Supported via Soapy._

+ 0
- 32
docs/docs/software/limesuite.md View File

@@ -1,32 +0,0 @@
---
layout: default
title: LimeSuite
parent: Software
nav_order: 3
---

# LimeSuite
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

Software meant to control and configure LMS based devices.

## Specifications
- Installed Version: 19.04.0

## Sources
```
https://github.com/myriadrf/LimeSuite
```

## Supported Radios
- LimeNET Micro
- LimeSDR Mini
- LimeSDR USB

+ 0
- 29
docs/docs/software/limevna.md View File

@@ -1,29 +0,0 @@
---
layout: default
title: LimeVNA
parent: Software
nav_order: 4
---

# LimeVNA
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

Python toolkit to use an LMS based device (LimeSDR Mini or USB) as a Vector Network Analyzer. Details are provided by the [Github Repository](https://github.com/myriadrf/pyLMS7002Soapy).

## Sources
```
https://github.com/myriadrf/pyLMS7002Soapy
```

## Supported Radios
- LimeNET Micro
- LimeSDR Mini
- LimeSDR USB

+ 0
- 27
docs/docs/software/multimon-ng.md View File

@@ -1,27 +0,0 @@
---
layout: default
title: multimon-ng
parent: Software
nav_order: 14
---

# multimon-ng
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

A multi-mode decoder for digital transmissions. Details are provided by the [GitHub Page](https://github.com/EliasOenal/multimon-ng.git).

## Specifications
- Installed Version: Master

## Sources
```
https://github.com/EliasOenal/multimon-ng.git
```

+ 0
- 27
docs/docs/software/rpitx.md View File

@@ -1,27 +0,0 @@
---
layout: default
title: rpitx
parent: Software
nav_order: 10
---

# rpitx
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

A general radio frequency transmitter for Raspberry Pi which doesn't require any other hardware unless filter to avoid intererence. Details are provided by the [GitHub Page](https://github.com/F5OEO/rpitx.git).

## Specifications
- Installed Version: Master

## Sources
```
https://github.com/F5OEO/rpitx.git
```

+ 0
- 31
docs/docs/software/rtl_433.md View File

@@ -1,31 +0,0 @@
---
layout: default
title: rtl_433
parent: Software
nav_order: 11
---

# rtl_433
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

A generic data receiver, mainly for the 433.92 MHz, 868 MHz (SRD), 315 MHz, 345 MHz, and 915 MHz ISM bands. Details are provided by the [GitHub Page](https://github.com/merbanan/rtl_433.git).

## Specifications
- Installed Version: Master

## Sources
```
https://github.com/merbanan/rtl_433.git
```

## Supported Radios
- RTL-SDR
- SoapySDR Supported Devices

+ 0
- 37
docs/docs/software/sdrangel.md View File

@@ -1,37 +0,0 @@
---
layout: default
title: SDRAngel
parent: Software
nav_order: 5
---

# SDRAngel
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

Signal analyzer front-end software for multiple radios. Can handle TX and RX with MIMO. Multiple signal decoders/encoders are included, for example, SSB, FM, AM, DATV, and many more.

## Specifications
- Installed Version: 4.12.2

## Sources
```
https://github.com/f4exb/sdrangel
```

## Supported Radios
- Airspy HF+ Discovery
- Airspy Mini
- Airspy R2
- LimeNET Micro
- LimeSDR Mini
- LimeSDR USB
- PlutoSDR
- RTL-SDR

+ 0
- 44
docs/docs/software/soapy_remote.md View File

@@ -1,44 +0,0 @@
---
layout: default
title: Soapy Remote
parent: Software
nav_order: 6
---

# Soapy Remote
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

Software intended to share a SoapySDR compatible device with other computers through the network. More information about this program can be found on the [SoapySDR Wiki](https://github.com/pothosware/SoapyRemote/wiki).


## Usage Example
To start a new server accepting external IPv4 connections at port 8892:
``` bash
$ SoapySDRServer --bind="0.0.0.0:8892"
```

## Specifications
- Installed Version: 0.5.1

## Sources
```
https://github.com/pothosware/SoapyRemote
```

## Supported Radios
- Airspy HF+ Discovery
- Airspy Mini
- Airspy R2
- LimeNET Micro
- LimeSDR Mini
- LimeSDR USB
- PlutoSDR
- RTL-SDR

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save