diff --git a/404.html b/404.html new file mode 100644 index 0000000..1767566 --- /dev/null +++ b/404.html @@ -0,0 +1,48 @@ +--- +layout: default +title: 404 +permalink: /404.html +--- + +
+
+ +
+

404

+ +
+ Sorry but this page doesn't seem to exist. +
+ +
+ Home | + All Posts | + Search +
+ + {% include social_links.html %} + +
+ +
+ + + +
diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..79be368 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +www.sthope.dev diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..54d55a8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +This theme is Open Source under the GPLv3 license as stated below. The theme is intended +to be used for creating jekyll blogs where the author is expected to retain copyright +on their content and therefore the following files and directories are not included in +the GPLv3 license: + + * _config.yml + * _data/ + * _drafts/ + * _posts/ + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . diff --git a/README.md b/README.md index db3c442..b2c0959 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ -# sthope.dev +# Website +TODO: +- [ ] fix page icon (terminal logo) +- [ ] fix profile picture +- [x] upload and fix posts \ No newline at end of file diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..513e117 --- /dev/null +++ b/_config.yml @@ -0,0 +1,39 @@ +title: "Sthope" +url: "https://www.sthope.dev/" +description: "My adventures with electronics." + +baseurl: "" +google_analytics: +disqus_account: sthope-dev +github_repository: +addthis_id: +post_limit: 5 + +# profile_pic: "/assets/images/avatar-sthope.png" +gravatar: "95f364b924da6af7e7def150ebc68277" +sthopegit: "Sthope" +github: "Sthopeless" +reddit: "hopeless_automations" +email: "hopelessautomations@gmail.com" +discord: "365825462074605569" +twitter: "Sthope_dev" +facebook: "Sthope.dev" + +instagram_username: +linkedin_link: +google_plus_link: +stackoverflow_link: +xing_link: + +# footer_left: "Made with " +# footer_right: "</> on Sthope  " + +markdown: kramdown +kramdown: + input: GFM + syntax_highlighter: rouge + +include: ["_pages"] +permalink: /:title + +exclude: [vendor, changelog.md, LICENSE.txt, README.md, Gemfile, Gemfile.lock] diff --git a/_data/mydockercontainers.yml b/_data/mydockercontainers.yml new file mode 100644 index 0000000..12fa9e5 --- /dev/null +++ b/_data/mydockercontainers.yml @@ -0,0 +1,5 @@ +- name: tuya_doorlock +- name: randompwd +- name: randomport +- name: mqtt-broker +- name: dckrtmplt \ No newline at end of file diff --git a/_data/thumbnail.yml b/_data/thumbnail.yml new file mode 100644 index 0000000..8e2c8f4 --- /dev/null +++ b/_data/thumbnail.yml @@ -0,0 +1,11 @@ +gravatar: "https://www.gravatar.com/avatar/00000000000000000000000000000000?s=500&d=mm" +jekyll: "https://i.imgur.com/aRQcGSi.png" +# sthope.dev +sthope_logo: "/assets/images/avatar-sthope.png" +### Logos + +docker-logo: "/assets/images/docker-logo.png" + +jekyll-logo: "/assets/images/jekyll-logo.png" +portainer-logo: "/assets/images/portainer-logo.png" +proxmox-logo: "/assets/images/proxmox-logo.png" diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..a511919 --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,86 @@ + + + + + + + + + +{% if page.make-smaller-titles %} + +{% endif %} + +{% if site.google_analytics %} + +{% endif %} diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..a19ffc3 --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,37 @@ + + + + +{{ site.title }} + + + + + + + + + + + + + + + + + + + + + +{% if site.addthis_id %} + + +{% endif %} + +{% if page.content contains ' +{% endif %} + + diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 0000000..a4a117b --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,15 @@ + + diff --git a/_includes/social_links.html b/_includes/social_links.html new file mode 100644 index 0000000..944afde --- /dev/null +++ b/_includes/social_links.html @@ -0,0 +1,14 @@ + diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..4c9d94f --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,19 @@ + + + + {% include head.html %} + + + + {% include header.html %} + +
+
+ {{ content }} +
+
+ + {% include footer.html %} + + + diff --git a/_layouts/mydockerfile.html b/_layouts/mydockerfile.html new file mode 100644 index 0000000..ec974e1 --- /dev/null +++ b/_layouts/mydockerfile.html @@ -0,0 +1,60 @@ +--- +layout: default +--- + + +
docker
+ +
+ + + {{ page.title }} + +
+ + + +
    + {% for item in site.data.mydockercontainers %} +
  • + {{ item.name }} +
  • + {% endfor %} +
+ + + +
+
+ + +
+
diff --git a/_layouts/none.html b/_layouts/none.html new file mode 100644 index 0000000..cddd070 --- /dev/null +++ b/_layouts/none.html @@ -0,0 +1 @@ +{{ content }} diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 0000000..4d88b42 --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,12 @@ +--- +layout: default +--- + +
+
+

{{ page.title }}

+
+ {{ content }} +
+
+
diff --git a/_layouts/post.html b/_layouts/post.html new file mode 100644 index 0000000..486a28b --- /dev/null +++ b/_layouts/post.html @@ -0,0 +1,182 @@ +--- +layout: default +--- + +{% if page.minutes %} + {% assign minutes = page.minutes %} +{% else %} + {% assign minutes = content | number_of_words | divided_by: 180 %} + {% if minutes == 0 %}{% assign minutes = 1 %}{% endif %} +{% endif %} + +
+
+ +
+ {% if site.data.thumbnail[page.thumbnail] %} +
+ Thumbnail: {{ page.thumbnail }} +
+ + {% elsif page.thumbnail %} +
+ +
+ + + {% elsif page.image %} +
+ Image: {{ page.image }} +
+ {% endif %} + +

{{ page.title }}

+ +
+ + {% if page.author %} + by + + {% endif %} + on + +
+ +
+ + {{ minutes }} minute read + +
+ +
+ + {% if page.series %} + This post is part of the series '{{ page.series }}': +
    + {% for apost in site.posts reversed %} + {% if page.series == apost.series %} +
  1. + {% if page.title == apost.title %} + {% assign nextpost = true %} + {{ apost.title }} + {% else %} + {% if nextpost == true %} + {% assign seriesnext = apost %} + {% endif %} + {% assign nextpost = false %} + {{ apost.title }} + {% endif %} +
  2. + {% endif %} + {% endfor %} +
+ {% endif %} + + + {% if page.description %} +

{{ page.description }}

+ {% endif %} + + {{ content }} + + {% if page.series %} + {% if seriesnext %} + Next post in the series: {{ seriesnext.title }} + {% endif %} + {% endif %} + +
+ + {% if site.twitter and site.disqus_account %} + + {% elsif site.twitter %} + + {% elsif site.disqus_account %} + + {% endif %} + + {% if site.disqus_account %} +
+
+ + comments powered by Disqus +
+
+ {% endif %} + + {% if site.related_posts.length > 0 %} + + {% endif %} + +
+ +
+ +
+ +{% if site.disqus_account %} + +{% endif %} diff --git a/_pages/about.md b/_pages/about.md new file mode 100644 index 0000000..ebc9af7 --- /dev/null +++ b/_pages/about.md @@ -0,0 +1,22 @@ +--- +layout: page +title: About +permalink: /about +comments: false +--- + +``` +This website is a documentation of my adventures with electronics in general. There are various topics that I am interested in + +- Home Assistant +- Tasmota +- Tuya Devices +- Zigbee +- Node-Red +- CNC / 3D Printing +- Sonarr, Radarr, Bazarr, Lidarr +- and many others. +``` + + +Hello and welcome to my website, where I explorer the world of electronics and technology. \ No newline at end of file diff --git a/_pages/dockercontainers.md b/_pages/dockercontainers.md new file mode 100644 index 0000000..33e37ce --- /dev/null +++ b/_pages/dockercontainers.md @@ -0,0 +1,7 @@ +--- +layout: mydockerfile +title: My Docker Containers +permalink: /dockercontainers +comments: false +github_packages: "https://github.com/Sthopeless?tab=packages" +--- \ No newline at end of file diff --git a/_posts/2021-08-01-proxmox-docker-lxc.md b/_posts/2021-08-01-proxmox-docker-lxc.md new file mode 100644 index 0000000..8e74a64 --- /dev/null +++ b/_posts/2021-08-01-proxmox-docker-lxc.md @@ -0,0 +1,47 @@ +--- +layout: post +title: "Proxmox Docker LXC" +description: "Installing on Proxmox a Linux Container with Docker installed and Portainer, VScode and Watchtower container configured, all with 1 line command." +author: sthope +categories: [ Docker, Proxmox, Portainer ] +image: "proxmox-small-logo.png" +comments: true +--- + +# Setup the LXC + +- In the terminal of Proxmox enter: + +``` +clear; bash -c "$(wget -qLO - https://git.sthopeless.com/sthope/proxmox_portainer/raw/branch/master/create_container.sh)" + +``` + +It will configure and start a Debian LXC. After created you can rename the LXC and give it a static IP. + +
+# LXC configuration +- In the LXC terminal setup root password with + +``` +passwd +``` + +
+### Finish + +- Portainer should be running at: + +```http +http://{IP}:9000 +``` +- VSCode should be running at: + +```http +http://{IP}:8443 +``` +- WatchTower for auto updating the containers is also installed and if you want new containers to use it simply add the label: + +``` +com.centurylinklabs.watchtower.enable=true +``` diff --git a/_posts/2021-08-02-dockerfile-and-github.md b/_posts/2021-08-02-dockerfile-and-github.md new file mode 100644 index 0000000..a44da2b --- /dev/null +++ b/_posts/2021-08-02-dockerfile-and-github.md @@ -0,0 +1,54 @@ +--- +layout: post +title: "Dockerfile & Github" +description: "create a simple docker container and upload it to Github" +author: sthope +image: "dockergithub.png" +categories: [ Docker, Github ] +github_create_token: 'https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-token' +github_auth: 'https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#authenticating-to-the-container-registry' +docker_tempalte_repo: 'https://github.com/Sthopeless/dckrtmplt' +comments: true +--- + +![dockergithub](assets/images/dockergithub.png) + +## Setup and configure Github Token +1. [Create Github Token]({{page.github_create_token}}) and save the token. +2. [Authenticate]({{page.github_auth}}) with: + (replace 'YOUR_TOKEN' with token from last step) +``` +export CR_PAT=YOUR_TOKEN +``` + +3. Last sign in with: + (replace 'USERNAME' with your Github Username) +``` +echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin +``` + +## Setup container files + +1. [Download this repository]({{page.docker_tempalte_repo}}) +2. Open terminal, go to the repo location (eg: ~/Documents/dckrtmplt) and do: +``` +docker build -t dckrtmplt . ; \ +docker tag dckrtmplt ghcr.io/sthopeless/dckrtmplt:latest ; \ +docker push ghcr.io/sthopeless/dckrtmplt:latest +``` + +3. Your new Package should be visible at:
+ [https://github.com/Sthopeless?tab=packages](https://github.com/Sthopeless?tab=packages)
+ (replace 'Sthopeless' with your Github Username) +4. You can test running: +``` +docker run -it --rm ghcr.io/sthopeless/dckrtmplt:latest +``` +5. Set package visibility from Private to Visible, follow pictures: + +1.
+
+2.
+
+3.
+
diff --git a/_posts/2021-08-03-markdown.md b/_posts/2021-08-03-markdown.md new file mode 100644 index 0000000..34e7572 --- /dev/null +++ b/_posts/2021-08-03-markdown.md @@ -0,0 +1,26 @@ +--- +layout: post +title: "Markdown" +description: "Markdown Sheet, work in constant progress." +author: sthope +image: "markdown-logo.png" +categories: [ Markdown ] +comments: true +--- + +# Markdown Examples + +## 1. Headings + +``` +# Heading Example +## Heading Example +### Heading Example +``` + +## 2. Italic, Bold, etc.. + +Italic = `*example*` or `_example_`
+Bold = `**example**` or `__example__`
+Blockquote = `>` or `>>`
+Horizontal Lines = `---` or `***`
diff --git a/_posts/2021-08-05-tuya-zigbee-doorlocks.md b/_posts/2021-08-05-tuya-zigbee-doorlocks.md new file mode 100644 index 0000000..00d3a57 --- /dev/null +++ b/_posts/2021-08-05-tuya-zigbee-doorlocks.md @@ -0,0 +1,41 @@ +--- +layout: post +title: "Tuya Zigbee DoorLocks" +description: "Unlock Tuya Zigbee Doorlocks using the API" +author: sthope +image: "tuya-logo.png" +categories: [ Tuya, Zigbee, Docker ] +tyfiles: https://git.sthope.dev/sthope/Tuya_Zigbee_DoorLocks +comments: true +--- + +# Docker + +- Run Docker Container +``` +docker run -it \ +--name tuya_doorlock \ +ghcr.io/sthopeless/tuya_doorlock:latest +``` + +- Edit the env.py file with your details + Exit and Save (CTRL+X and Y) +``` +nano /home/tuya_doorlock/env.py +``` + +- Run python file and test unlocking the DoorLock +``` +python3 /home/tuya_doorlock/Zigbee_Doorlock.py +``` + +- Unlock via MQTT +``` +topic: TuyaLock/Doorlock +payload: unlock_door +``` + + +Raw files: [{{page.tyfiles}}]({{page.tyfiles}}) + + diff --git a/_posts/2021-08-06-docker-portainer.md b/_posts/2021-08-06-docker-portainer.md new file mode 100644 index 0000000..020ef82 --- /dev/null +++ b/_posts/2021-08-06-docker-portainer.md @@ -0,0 +1,52 @@ +--- +layout: post +title: "Docker Portainer" +description: "Docker Portainer" +author: sthope +image: "portainer-small-logo.png" +categories: [ Docker, Portainer ] +comments: true +--- + +# Portainer + +1. On the terminal create folder for Portainer, eg: + +``` +mkdir -p /docker/portainer +``` + +2. Create and start the container: + +``` +docker run -d \ +-p 8000:8000 \ +-p 9000:9000 \ +--name=portainer \ +--restart=always \ +-v /var/run/docker.sock:/var/run/docker.sock \ +-v /docker/portainer:/data \ +portainer/portainer-ce:latest +``` + +3. Open WebUI at: + +```http +http://{IP}:9000 +``` + +4. Create new User + + +5. Choose Docker + + +6. Select your instance + + +7. Open Endpoints and setup the host IP + + + + + diff --git a/_posts/2021-08-07-docker-watchtower.md b/_posts/2021-08-07-docker-watchtower.md new file mode 100644 index 0000000..37aa812 --- /dev/null +++ b/_posts/2021-08-07-docker-watchtower.md @@ -0,0 +1,31 @@ +--- +layout: post +title: "WatchTower" +description: "Docker WatchTower" +author: sthope +image: "watchtower-logo.png" +categories: [ Docker, WatchTower ] +comments: true +--- + +# WatchTower + +1. Create and run Portainer Stack: + +```yaml +--- +version: "3.8" +services: + watchtower: + container_name: watchtower + image: containrrr/watchtower + restart: unless-stopped + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - TZ=Europe/Amsterdam + - WATCHTOWER_CLEANUP=true + - WATCHTOWER_POLL_INTERVAL=86400 + - WATCHTOWER_LABEL_ENABLE=true +``` + diff --git a/_posts/2021-08-08-docker-nginx.md b/_posts/2021-08-08-docker-nginx.md new file mode 100644 index 0000000..c82e8af --- /dev/null +++ b/_posts/2021-08-08-docker-nginx.md @@ -0,0 +1,95 @@ +--- +layout: post +title: "Docker NGINX" +description: "Docker NGINX & Authelia" +author: sthope +image: "nginx-logo.png" +categories: [ Docker, NGINX, LinuxServer ] +env_file: https://git.sthope.dev/sthope/docker_portainer_stacks/src/branch/master/nginx/nginx.env +comments: true +--- + +- Create a file on your PC named `nginx.env` and paste this or [download this template]( {{page.env_file}} ) + +``` +domain=example.com +domain_subdomains=homeassistant,plex,nodered,jellyfin,sonarr,radarr +user_email=example@gmail.com +nginx_validation=dns +nginx_dnsplugin=cloudflare +#nginx_duckdnstoken= +nginx_container_name=nginx +authelia_container_name=authelia +PUID=1000 +PGID=1000 +TZ=Europe/Amsterdam +rst_mode=unless-stopped +maximunddb_license_key= +volume_nginx=/docker/nginx/nginx +volume_authelia=/docker/nginx/authelia +autoupdate_nginx=true +autoupdate_authelia=true +tag_nginx=latest +tag_authelia=latest +nginx_httpsPort=443 +nginx_httpPort=80 +``` + +Fill up according to your instalation + +- Create and run this Portainer Stack: + +```yaml +version: "3.8" + +networks: + nginx_network: + external: + name: nginx_network + default: + driver: bridge + +services: + nginx: + image: ghcr.io/linuxserver/swag:${tag_nginx} + container_name: ${nginx_container_name} + cap_add: + - NET_ADMIN + networks: + - nginx_network + environment: + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} + - URL=${nginx_domain} + - SUBDOMAINS=${nginx_subdomains} + - VALIDATION=${nginx_validation} + - DNSPLUGIN=${nginx_dnsplugin} + - EMAIL=${user_email} + - MAXMINDDB_LICENSE_KEY=${maximunddb_license_key} + - STAGING=false + - ONLY_SUBDOMAINS=false + volumes: + - ${volume_nginx}:/config + ports: + - ${nginx_httpsPort}:443 + - ${nginx_httpPort}:80 + restart: ${rst_mode} + labels: + - com.centurylinklabs.watchtower.enable=${autoupdate_nginx} + + authelia: + image: authelia/authelia:${tag_authelia} + container_name: ${authelia_container_name} + networks: + - nginx_network + environment: + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} + volumes: + - ${volume_authelia}:/config + restart: ${rst_mode} + labels: + - com.centurylinklabs.watchtower.enable=${autoupdate_authelia} +``` diff --git a/_posts/2021-08-29-custom-cmds-in-ubuntu.md b/_posts/2021-08-29-custom-cmds-in-ubuntu.md new file mode 100644 index 0000000..bd45215 --- /dev/null +++ b/_posts/2021-08-29-custom-cmds-in-ubuntu.md @@ -0,0 +1,53 @@ +--- +layout: post +title: "Custom cmds in Ubuntu" +description: "Create custom commands in Ubuntu (and other Linux distros)." +author: sthope +image: "bash-logo.png" +categories: [ Ubuntu, Linux ] +distro_tested: "Ubuntu 20.04" +comments: true +--- + + +⚠️⚠️⚠️ This was done using {{page.distro_tested}} but it should work on most Linux distros the same way. + + +

Create Folders

+On the terminal create folder to save your customs scripts eg: + +``` +mkdir -p ~/bin +``` + +

Create Scripts

+Inside the new folder created create a new file,eg: +`nano ~/bin/y2upgrade` + +

Edit the Scripts

+Edit the file with your commands and save, eg: + +``` +#!/bin/bash + +sudo apt-get update +sudo apt-get upgrade -y +``` + +

Set Access Permissions

+Use chmod to set files permissions. (should ask twice for sudo password) + +```sudo chmod +x ~/bin/*;su -l $USER``` + +

Testing

+Now you should be able to send your command from the terminal, the file name is the command name for example now when entering: `y2upgrade` it should first do `sudo apt-get update` and then `sudo apt-get upgrade -y`.
+
+`-y` simply means it will not ask you Y/n if you want to accept installing the upgrades in case there is any. + +

Extra

+SSH without asking for password.
+Create file named `sshnopwd` and paste the [contents of this file](https://git.sthope.dev/sthope/sthope_website_examples/raw/branch/master/custom-cmds-in-ubuntu/bin_examples/sshnopwd)
+ +now instead of using `ssh username@ip` and then entering password, simply run `sshnopwd password username@ip` and it will automatically login.
+ +Small collection with more examples can be found [here](https://git.sthope.dev/sthope/sthope_website_examples/src/branch/master/custom-cmds-in-ubuntu/bin_examples) \ No newline at end of file diff --git a/_posts/2021-08-30-portainer-stacks.md b/_posts/2021-08-30-portainer-stacks.md new file mode 100644 index 0000000..e772c3b --- /dev/null +++ b/_posts/2021-08-30-portainer-stacks.md @@ -0,0 +1,106 @@ +--- +layout: post +title: "Portainer Stacks" +description: "Install Docker containers using docker-compose files with Portainer Stacks." +author: sthope +image: portainer-logo.png +categories: [ Ubuntu, Linux ] +pic01: "/assets/images/portainer_stacks/1.jpg" +pic02: "/assets/images/portainer_stacks/2.jpg" +pic03: "/assets/images/portainer_stacks/3.jpg" +pic04: "/assets/images/portainer_stacks/4.jpg" +pic05: "/assets/images/portainer_stacks/5.jpg" +pic06: "/assets/images/portainer_stacks/6.jpg" +pic07: "/assets/images/portainer_stacks/7.jpg" +pic08: "/assets/images/portainer_stacks/8.jpg" +pic09: "/assets/images/portainer_stacks/9.jpg" +pic10: "/assets/images/portainer_stacks/10.jpg" +pic11: "/assets/images/portainer_stacks/11.jpg" +pic12: "/assets/images/portainer_stacks/12.jpg" +pic13: "/assets/images/portainer_stacks/13.jpg" +pic14: "/assets/images/portainer_stacks/14.jpg" +pic15: "/assets/images/portainer_stacks/15.jpg" +stack_example: "https://git.sthope.dev/sthope/docker_portainer_stacks/src/branch/master/libreoffice.yml" +comments: true +--- +### Installling Portainer + +There are a few ways of running docker containers, it should not matter which way your prefer most. +Here are some examples + +via Terminal, open the terminal and enter: +``` +docker volume create portainer_data; \ +docker run -d \ +-p 8000:8000 \ +-p 9000:9000 \ +--name=portainer \ +--restart=always \ +-v /var/run/docker.sock:/var/run/docker.sock \ +-v portainer_data:/data \ +--labels com.centurylinklabs.watchtower.enable=true \ +--network_mode=bridge \ +portainer/portainer-ce:latest +``` +
+
+via docker-compose.yml file +Create `docker-compose.yml` file, eg: `nano ~/docker/docker-compose.yml` and paste: + +``` +--- +version: "3.8" +services: + portainer: + container_name: "portainer" + image: "portainer/portainer-ce:latest" + restart: "always" + network_mode: "bridge" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock" + - "portainer_data:/data" + port: + - "8000:8000" + - "9000:9000" + labels: + - "com.centurylinklabs.watchtower.enable=true" + +volumes: + portainer_data: + external: false +``` + +
+### Portainer WebUI + +Portainer should now be available at: http://IP:9000.
+ +1. Configure `Username` and `Password` to `Create user`. +![]({{page.pic01}})
+2. Select `Docker` and `Connect`. +![]({{page.pic02}})
+3. Click in `local` to access your instance. +![]({{page.pic03}})
+4. Navigate to `Endpoints` on the left-side menu and click on `local` to edit. +![]({{page.pic04}})
+5. In `Public IP` put the IP address of Portainer. Bonus you can name it differently if you want. After `Public IP` configured press `Update Endpoint`. +![]({{page.pic05}})
+6. Navigate to `Stacks` on the left-side menu. +![]({{page.pic06}})
+7. Here you can paste most docker-compose.yml files or create your own. +![]({{page.pic07}})
+8. For example: +![]({{page.pic08}})
+9. Here you can upload Stacks directly from Github, Gitea and many others. +![]({{page.pic10}})
+10. Here is a example using [this personal Gitea server]({{page.stack_example}}). +![]({{page.pic11}})
+11. Stack running +![]({{page.pic12}})
+12. Inside the `Stack` +![]({{page.pic13}})
+13. Updating/Editing the `Stack` locally. +![]({{page.pic14}})
+14. Stack file can also be edited on Git and pushed again to assume the changes. +![]({{page.pic15}})
+ diff --git a/assets/css/highlightjs.piperita.scss b/assets/css/highlightjs.piperita.scss new file mode 100644 index 0000000..0f86678 --- /dev/null +++ b/assets/css/highlightjs.piperita.scss @@ -0,0 +1,114 @@ +--- +--- +/* Piperita - Theme */ +/* by Jacob Tomlinson () */ + +/* Colours */ +$base-white: #E6E6E6; +$base-red: #FF0028; +$light-black: #737373; +$dark-black: #4C4C4C; +$light-red: #FFA8BA; +$dark-red: #FF6685; +$light-green: #C5EBC5; +$dark-green: #A6EBA6; +$light-yellow: #F9F9A5; +$dark-yellow: #FFDC72; +$light-blue: #8DDBFF; +$dark-blue: #5DC6F5; +$light-purple: #FFABFF; +$dark-purple: #FF8FFF; +$light-aqua: #B0F0F0; +$dark-aqua: #86D1D7; +$light-white: #FFFFFF; +$dark-white: #DBDBDB; + + +/* Piperita Dark Title */ +.hljs-title { + color: $dark-white; +} + +/* Piperita Dark Green */ +.hljs-variable, +.hljs-attribute, +.hljs-tag, +.hljs-regexp, +.ruby .hljs-constant, +.xml .hljs-tag .hljs-title, +.xml .hljs-pi, +.xml .hljs-doctype, +.html .hljs-doctype, +.css .hljs-id, +.css .hljs-class, +.css .hljs-pseudo { + color: $dark-green; +} + +/* Piperita Dark Orange */ +.hljs-number, +.hljs-preprocessor, +.hljs-pragma, +.hljs-built_in, +.hljs-literal, +.hljs-params, +.hljs-constant { + color: #df5320; +} + +/* Piperita Dark Yellow */ +.hljs-ruby .hljs-class .hljs-title, +.css .hljs-rules .hljs-attribute { + color: $dark-yellow; +} + +/* Piperita Dark Red */ +.hljs-string, +.hljs-value, +.hljs-inheritance, +.hljs-header, +.ruby .hljs-symbol, +.xml .hljs-cdata { + color: $dark-red; +} + +/* Piperita Dark Aqua */ +.css .hljs-hexcolor { + color: $dark-aqua; +} + +/* Piperita Dark Blue */ +.hljs-function, +.hljs-comment, +.python .hljs-decorator, +.python .hljs-title, +.ruby .hljs-function .hljs-title, +.ruby .hljs-title .hljs-keyword, +.perl .hljs-sub, +.javascript .hljs-title, +.coffeescript .hljs-title { + color: $dark-blue; +} + +/* Piperita Dark Purple */ +.hljs-keyword, +.javascript .hljs-function { + color: $dark-purple; +} + +.hljs { + display: block; + overflow-x: auto; + color: $base-white; + -webkit-text-size-adjust: none; +} + +.coffeescript .javascript, +.javascript .xml, +.tex .hljs-formula, +.xml .javascript, +.xml .vbscript, +.xml .css, +.xml .hljs-cdata { + opacity: 0.5; +} diff --git a/assets/css/jquery.mmenu.all.css b/assets/css/jquery.mmenu.all.css new file mode 100644 index 0000000..9908b97 --- /dev/null +++ b/assets/css/jquery.mmenu.all.css @@ -0,0 +1,1399 @@ +/* + jQuery.mmenu CSS +*/ +/* + jQuery.mmenu panels CSS +*/ +.mm-menu.mm-horizontal > .mm-panel { + -webkit-transition: left 0.4s ease; + -moz-transition: left 0.4s ease; + -ms-transition: left 0.4s ease; + -o-transition: left 0.4s ease; + transition: left 0.4s ease; } + +.mm-menu .mm-hidden { + display: none; } + +.mm-wrapper { + overflow-x: hidden; + position: relative; } + +.mm-menu { + background: inherit; + display: block; + overflow: hidden; + width: 100%; + height: 100%; + padding: 0; + position: absolute; + left: 0; + top: 0; + z-index: 0; } + .mm-menu > .mm-panel { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + background: inherit; + -webkit-overflow-scrolling: touch; + overflow: scroll; + overflow-x: hidden; + overflow-y: auto; + width: 100%; + height: 100%; + padding: 20px; + position: absolute; + top: 0; + left: 100%; + z-index: 0; } + .mm-menu > .mm-panel.mm-opened { + left: 0%; } + .mm-menu > .mm-panel.mm-subopened { + left: -40%; } + .mm-menu > .mm-panel.mm-highest { + z-index: 1; } + .mm-menu .mm-list { + padding: 20px 0; } + .mm-menu > .mm-list { + padding: 20px 0 40px 0; } + +.mm-panel > .mm-list { + margin-left: -20px; + margin-right: -20px; } + .mm-panel > .mm-list:first-child { + padding-top: 0; } + +.mm-list, +.mm-list > li { + list-style: none; + display: block; + padding: 0; + margin: 0; } + +.mm-list { + font: inherit; + font-size: 14px; } + .mm-list a, + .mm-list a:hover { + text-decoration: none; } + .mm-list > li { + position: relative; } + .mm-list > li > a, + .mm-list > li > span { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + color: inherit; + line-height: 20px; + display: block; + padding: 10px 10px 10px 20px; + margin: 0; } + .mm-list > li:not(.mm-subtitle):not(.mm-label):not(.mm-search):not(.mm-noresults):after { + content: ''; + border-bottom-width: 1px; + border-bottom-style: solid; + display: block; + width: 100%; + position: absolute; + bottom: 0; + left: 0; } + .mm-list > li:not(.mm-subtitle):not(.mm-label):not(.mm-search):not(.mm-noresults):after { + width: auto; + margin-left: 20px; + position: relative; + left: auto; } + .mm-list a.mm-subopen { + width: 40px; + height: 100%; + padding: 0; + position: absolute; + right: 0; + top: 0; + z-index: 2; } + .mm-list a.mm-subopen:before { + content: ''; + border-left-width: 1px; + border-left-style: solid; + display: block; + height: 100%; + position: absolute; + left: 0; + top: 0; } + .mm-list a.mm-subopen.mm-fullsubopen { + width: 100%; } + .mm-list a.mm-subopen.mm-fullsubopen:before { + border-left: none; } + .mm-list a.mm-subopen + a, + .mm-list a.mm-subopen + span { + padding-right: 5px; + margin-right: 40px; } + .mm-list > li.mm-selected > a.mm-subopen { + background: transparent; } + .mm-list > li.mm-selected > a.mm-fullsubopen + a, + .mm-list > li.mm-selected > a.mm-fullsubopen + span { + padding-right: 45px; + margin-right: 0; } + .mm-list a.mm-subclose { + text-indent: 20px; + padding-top: 30px; + margin-top: -20px; } + .mm-list > li.mm-label { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + font-size: 10px; + text-transform: uppercase; + text-indent: 20px; + line-height: 25px; + padding-right: 5px; } + .mm-list > li.mm-spacer { + padding-top: 40px; } + .mm-list > li.mm-spacer.mm-label { + padding-top: 25px; } + .mm-list a.mm-subopen:after, + .mm-list a.mm-subclose:before { + content: ''; + border: 2px solid transparent; + display: block; + width: 7px; + height: 7px; + margin-bottom: -5px; + position: absolute; + bottom: 50%; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); } + .mm-list a.mm-subopen:after { + border-top: none; + border-left: none; + right: 18px; } + .mm-list a.mm-subclose:before { + border-right: none; + border-bottom: none; + margin-bottom: -15px; + left: 22px; } + +.mm-menu.mm-vertical .mm-list .mm-panel { + display: none; + padding: 10px 0 10px 10px; } + .mm-menu.mm-vertical .mm-list .mm-panel li:last-child:after { + border-color: transparent; } +.mm-menu.mm-vertical .mm-list li.mm-opened > .mm-panel { + display: block; } +.mm-menu.mm-vertical .mm-list > li.mm-opened > a.mm-subopen { + height: 40px; } + .mm-menu.mm-vertical .mm-list > li.mm-opened > a.mm-subopen:after { + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + top: 16px; + right: 16px; } + +html.mm-opened .mm-page { + box-shadow: 0 0 20px rgba(0, 0, 0, 0.5); } + +.mm-ismenu { + background: #333333; + color: rgba(255, 255, 255, 0.6); } + +.mm-menu .mm-list > li:after { + border-color: rgba(0, 0, 0, 0.15); } +.mm-menu .mm-list > li > a.mm-subclose { + background: rgba(0, 0, 0, 0.1); + color: rgba(255, 255, 255, 0.3); } +.mm-menu .mm-list > li > a.mm-subopen:after, .mm-menu .mm-list > li > a.mm-subclose:before { + border-color: rgba(255, 255, 255, 0.3); } +.mm-menu .mm-list > li > a.mm-subopen:before { + border-color: rgba(0, 0, 0, 0.15); } +.mm-menu .mm-list > li.mm-selected > a:not(.mm-subopen), +.mm-menu .mm-list > li.mm-selected > span { + background: rgba(0, 0, 0, 0.1); } +.mm-menu .mm-list > li.mm-label { + background: rgba(255, 255, 255, 0.05); } +.mm-menu.mm-vertical .mm-list li.mm-opened > a.mm-subopen, +.mm-menu.mm-vertical .mm-list li.mm-opened > ul { + background: rgba(255, 255, 255, 0.05); } + +/* + jQuery.mmenu offcanvas addon CSS +*/ +.mm-page, +.mm-fixed-top, +.mm-fixed-bottom { + -webkit-transition: none 0.4s ease; + -moz-transition: none 0.4s ease; + -ms-transition: none 0.4s ease; + -o-transition: none 0.4s ease; + transition: none 0.4s ease; + -webkit-transition-property: top, right, bottom, left, border; + -moz-transition-property: top, right, bottom, left, border; + -ms-transition-property: top, right, bottom, left, border; + -o-transition-property: top, right, bottom, left, border; + transition-property: top, right, bottom, left, border; } + +.mm-page, +#mm-blocker { + margin: 0; + top: 0; + right: 0; + bottom: 0; + left: 0; } + +.mm-page { + border: 0px solid rgba(0, 0, 0, 0); } + +html.mm-opening .mm-page { + border: 0px solid rgba(1, 1, 1, 0); } + +.mm-fixed-top, +.mm-fixed-bottom { + position: fixed; + left: 0; } + +.mm-fixed-top { + top: 0; } + +.mm-fixed-bottom { + bottom: 0; } + +html.mm-opened { + overflow: hidden; + position: relative; } + html.mm-opened body { + overflow: hidden; } + +html.mm-opened .mm-page { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + position: relative; } + +html.mm-background .mm-page { + background: inherit; } + +#mm-blocker { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==) transparent; + display: none; + width: 100%; + height: 100%; + position: fixed; + z-index: 999999; } + +html.mm-opened #mm-blocker, +html.mm-blocking #mm-blocker { + display: block; } + +.mm-menu.mm-offcanvas { + display: none; + position: fixed; } +.mm-menu.mm-current { + display: block; } + +html.mm-opening .mm-page, +html.mm-opening #mm-blocker, +html.mm-opening .mm-fixed-top, +html.mm-opening .mm-fixed-bottom { + left: 80%; } + +.mm-menu { + width: 80%; } + +@media all and (max-width: 175px) { + .mm-menu { + width: 140px; } + + html.mm-opening .mm-page, + html.mm-opening #mm-blocker, + html.mm-opening .mm-fixed-top, + html.mm-opening .mm-fixed-bottom { + left: 140px; } } +@media all and (min-width: 550px) { + .mm-menu { + width: 440px; } + + html.mm-opening .mm-page, + html.mm-opening #mm-blocker, + html.mm-opening .mm-fixed-top, + html.mm-opening .mm-fixed-bottom { + left: 440px; } } +/* + jQuery.mmenu counters addon CSS +*/ +em.mm-counter { + font: inherit; + font-size: 14px; + font-style: normal; + text-indent: 0; + line-height: 20px; + display: block; + margin-top: -10px; + position: absolute; + right: 40px; + top: 50%; } + em.mm-counter + a.mm-subopen { + padding-left: 40px; } + em.mm-counter + a.mm-subopen + a, + em.mm-counter + a.mm-subopen + span { + margin-right: 80px; } + em.mm-counter + a.mm-fullsubopen { + padding-left: 0; } + +.mm-vertical em.mm-counter { + top: 12px; + margin-top: 0; } + +.mm-nosubresults > em.mm-counter { + display: none; } + +.mm-menu em.mm-counter { + color: rgba(255, 255, 255, 0.3); } + +/* + jQuery.mmenu dragOpen addon CSS +*/ +html.mm-opened.mm-dragging .mm-menu, +html.mm-opened.mm-dragging .mm-page, +html.mm-opened.mm-dragging .mm-fixed-top, +html.mm-opened.mm-dragging .mm-fixed-bottom, +html.mm-opened.mm-dragging #mm-blocker { + -webkit-transition-duration: 0s; + -moz-transition-duration: 0s; + -ms-transition-duration: 0s; + -o-transition-duration: 0s; + transition-duration: 0s; } + +/* + jQuery.mmenu header addon CSS +*/ +.mm-header { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + background: inherit; + border-bottom: 1px solid transparent; + text-align: center; + line-height: 20px; + width: 100%; + height: 60px; + padding: 30px 40px 0 40px; + position: absolute; + z-index: 2; + top: 0; + left: 0; } + .mm-header .mm-title { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + display: inline-block; + width: 100%; + position: relative; + z-index: 1; } + .mm-header .mm-prev, + .mm-header .mm-next { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; + text-decoration: none; + display: block; + width: 40px; + height: 100%; + position: absolute; + bottom: 0; } + .mm-header .mm-prev:before, + .mm-header .mm-next:before { + content: ''; + border: 2px solid transparent; + display: block; + width: 7px; + height: 7px; + margin-bottom: -5px; + position: absolute; + bottom: 50%; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); + margin-bottom: -15px; } + .mm-header .mm-prev { + left: 0; } + .mm-header .mm-prev:before { + border-right: none; + border-bottom: none; + left: 22px; } + .mm-header .mm-next { + right: 0; } + .mm-header .mm-next:before { + border-top: none; + border-left: none; + right: 18px; } + +.mm-menu.mm-hassearch .mm-header { + height: 50px; + padding-top: 20px; + top: 50px; } + .mm-menu.mm-hassearch .mm-header .mm-prev:before, + .mm-menu.mm-hassearch .mm-header .mm-mext:before { + margin-bottom: -10px; } + +.mm-menu.mm-hasheader li.mm-subtitle { + display: none; } +.mm-menu.mm-hasheader > .mm-panel { + padding-top: 80px; } + .mm-menu.mm-hasheader > .mm-panel.mm-list { + padding-top: 60px; } + .mm-menu.mm-hasheader > .mm-panel > .mm-list:first-child { + margin-top: -20px; } +.mm-menu.mm-hasheader.mm-hassearch > .mm-panel { + padding-top: 120px; } + .mm-menu.mm-hasheader.mm-hassearch > .mm-panel.mm-list { + padding-top: 100px; } + +.mm-menu .mm-header { + border-color: rgba(0, 0, 0, 0.15); + color: rgba(255, 255, 255, 0.3); } + .mm-menu .mm-header a:before { + border-color: rgba(255, 255, 255, 0.3); } + +/* + jQuery.mmenu labels addon CSS +*/ +.mm-menu.mm-fixedlabels .mm-list { + background: inherit; } + .mm-menu.mm-fixedlabels .mm-list > li.mm-label { + background: inherit !important; + opacity: 0.97; + height: 25px; + overflow: visible; + position: relative; + z-index: 1; } + .mm-menu.mm-fixedlabels .mm-list > li.mm-label > div { + background: inherit; + width: 100%; + position: absolute; + left: 0; } + .mm-menu.mm-fixedlabels .mm-list > li.mm-label > div > div { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } + .mm-menu.mm-fixedlabels .mm-list > li.mm-label.mm-spacer > div > div { + padding-top: 25px; } + +.mm-list > li.mm-label > span { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + padding: 0; } +.mm-list > li.mm-label.mm-opened a.mm-subopen:after { + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + right: 17px; } +.mm-list > li.mm-collapsed { + display: none; } + +.mm-menu .mm-list li.mm-label > div > div { + background: rgba(255, 255, 255, 0.05); } + +/* + jQuery.mmenu searchfield addon CSS +*/ +.mm-search, +.mm-search input { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; } + +.mm-list > li.mm-search { + padding: 10px; + margin-top: -20px; } +.mm-list > li.mm-subtitle + li.mm-search { + margin-top: 0; } + +div.mm-panel > div.mm-search { + padding: 0 0 10px 0; } + +.mm-menu.mm-hasheader .mm-list > li.mm-search { + margin-top: 0; } + +.mm-search { + background: inherit; + width: 100%; + padding: 10px; + position: relative; + top: 0; + z-index: 2; } + .mm-search input { + border: none; + border-radius: 30px; + font: inherit; + font-size: 14px; + line-height: 30px; + outline: none; + display: block; + width: 100%; + height: 30px; + margin: 0; + padding: 0 10px; } + +.mm-menu .mm-noresultsmsg { + text-align: center; + font-size: 21px; + display: none; + padding: 60px 0; } + .mm-menu .mm-noresultsmsg:after { + border: none !important; } + +.mm-noresults .mm-noresultsmsg { + display: block; } + +.mm-menu li.mm-nosubresults > a.mm-subopen { + display: none; } + .mm-menu li.mm-nosubresults > a.mm-subopen + a, + .mm-menu li.mm-nosubresults > a.mm-subopen + span { + padding-right: 10px; } +.mm-menu.mm-hassearch > .mm-panel { + padding-top: 70px; } + .mm-menu.mm-hassearch > .mm-panel > .mm-list:first-child { + margin-top: -20px; } +.mm-menu.mm-hasheader > .mm-panel > div.mm-search:first-child { + margin-top: -10px; } + .mm-menu.mm-hasheader > .mm-panel > div.mm-search:first-child + .mm-list { + padding-top: 0; } + +.mm-menu .mm-search input { + background: rgba(255, 255, 255, 0.3); + color: rgba(255, 255, 255, 0.6); } +.mm-menu .mm-noresultsmsg { + color: rgba(255, 255, 255, 0.3); } + +/* + jQuery.mmenu toggles addon CSS +*/ +label.mm-toggle { + border-radius: 30px; + width: 50px; + height: 30px; + margin: -15px 0 0 0; + position: absolute; + top: 50%; + z-index: 1; } + label.mm-toggle div { + border-radius: 30px; + width: 28px; + height: 28px; + margin: 1px; } + +input.mm-toggle { + position: absolute; + left: -10000px; } + input.mm-toggle:checked ~ label.mm-toggle div { + float: right; } + +label.mm-toggle { + right: 20px; } + label.mm-toggle + a, + label.mm-toggle + span { + margin-right: 70px; } + +a.mm-subopen + label.mm-toggle { + right: 50px; } + a.mm-subopen + label.mm-toggle + a, + a.mm-subopen + label.mm-toggle + span { + margin-right: 100px; } + +em.mm-counter + a.mm-subopen + label.mm-toggle { + right: 90px; } + em.mm-counter + a.mm-subopen + label.mm-toggle + a, + em.mm-counter + a.mm-subopen + label.mm-toggle + span { + margin-right: 140px; } + +.mm-menu label.mm-toggle { + background: rgba(0, 0, 0, 0.15); } + .mm-menu label.mm-toggle div { + background: #333333; } +.mm-menu input.mm-toggle:checked ~ label.mm-toggle { + background: #4bd963; } + +/* + jQuery.mmenu effects extension CSS +*/ +html.mm-slide .mm-menu { + -webkit-transition: -webkit-transform 0.4s ease; + -moz-transition: -moz-transform 0.4s ease; + -o-transition: -o-transform 0.4s ease; + transition: transform 0.4s ease; } +html.mm-slide.mm-opened .mm-menu { + -webkit-transform: translateX(-40%); + -moz-transform: translateX(-40%); + -ms-transform: translateX(-40%); + -o-transform: translateX(-40%); + transform: translateX(-40%); } +html.mm-slide.mm-opening .mm-menu { + -webkit-transform: translateX(0%); + -moz-transform: translateX(0%); + -ms-transform: translateX(0%); + -o-transform: translateX(0%); + transform: translateX(0%); } +html.mm-slide.mm-right.mm-opened .mm-menu { + -webkit-transform: translateX(40%); + -moz-transform: translateX(40%); + -ms-transform: translateX(40%); + -o-transform: translateX(40%); + transform: translateX(40%); } +html.mm-slide.mm-right.mm-opening .mm-menu { + -webkit-transform: translateX(0%); + -moz-transform: translateX(0%); + -ms-transform: translateX(0%); + -o-transform: translateX(0%); + transform: translateX(0%); } +html.mm-slide.mm-top.mm-opened .mm-menu { + -webkit-transform: translateY(-40%); + -moz-transform: translateY(-40%); + -ms-transform: translateY(-40%); + -o-transform: translateY(-40%); + transform: translateY(-40%); } +html.mm-slide.mm-top.mm-opening .mm-menu { + -webkit-transform: translateY(0%); + -moz-transform: translateY(0%); + -ms-transform: translateY(0%); + -o-transform: translateY(0%); + transform: translateY(0%); } +html.mm-slide.mm-bottom.mm-opened .mm-menu { + -webkit-transform: translateY(40%); + -moz-transform: translateY(40%); + -ms-transform: translateY(40%); + -o-transform: translateY(40%); + transform: translateY(40%); } +html.mm-slide.mm-bottom.mm-opening .mm-menu { + -webkit-transform: translateY(0%); + -moz-transform: translateY(0%); + -ms-transform: translateY(0%); + -o-transform: translateY(0%); + transform: translateY(0%); } + +html.mm-zoom-menu .mm-menu { + -webkit-transition: -webkit-transform 0.4s ease; + -moz-transition: -moz-transform 0.4s ease; + -o-transition: -o-transform 0.4s ease; + transition: transform 0.4s ease; } +html.mm-zoom-menu.mm-opened .mm-menu { + -webkit-transform: scale(0.7, 0.7) translateX(-40%); + -moz-transform: scale(0.7, 0.7) translateX(-40%); + -ms-transform: scale(0.7, 0.7) translateX(-40%); + -o-transform: scale(0.7, 0.7) translateX(-40%); + transform: scale(0.7, 0.7) translateX(-40%); + -webkit-transform-origin: left center; + -moz-transform-origin: left center; + -ms-transform-origin: left center; + -o-transform-origin: left center; + transform-origin: left center; } +html.mm-zoom-menu.mm-opening .mm-menu { + -webkit-transform: scale(1, 1) translateX(0%); + -moz-transform: scale(1, 1) translateX(0%); + -ms-transform: scale(1, 1) translateX(0%); + -o-transform: scale(1, 1) translateX(0%); + transform: scale(1, 1) translateX(0%); } +html.mm-zoom-menu.mm-right.mm-opened .mm-menu { + -webkit-transform: scale(0.7, 0.7) translateX(40%); + -moz-transform: scale(0.7, 0.7) translateX(40%); + -ms-transform: scale(0.7, 0.7) translateX(40%); + -o-transform: scale(0.7, 0.7) translateX(40%); + transform: scale(0.7, 0.7) translateX(40%); + -webkit-transform-origin: right center; + -moz-transform-origin: right center; + -ms-transform-origin: right center; + -o-transform-origin: right center; + transform-origin: right center; } +html.mm-zoom-menu.mm-right.mm-opening .mm-menu { + -webkit-transform: scale(1, 1) translateX(0%); + -moz-transform: scale(1, 1) translateX(0%); + -ms-transform: scale(1, 1) translateX(0%); + -o-transform: scale(1, 1) translateX(0%); + transform: scale(1, 1) translateX(0%); } +html.mm-zoom-menu.mm-top.mm-opened .mm-menu { + -webkit-transform: scale(0.7, 0.7) translateY(-40%); + -moz-transform: scale(0.7, 0.7) translateY(-40%); + -ms-transform: scale(0.7, 0.7) translateY(-40%); + -o-transform: scale(0.7, 0.7) translateY(-40%); + transform: scale(0.7, 0.7) translateY(-40%); + -webkit-transform-origin: center top; + -moz-transform-origin: center top; + -ms-transform-origin: center top; + -o-transform-origin: center top; + transform-origin: center top; } +html.mm-zoom-menu.mm-top.mm-opening .mm-menu { + -webkit-transform: scale(1, 1) translateY(0%); + -moz-transform: scale(1, 1) translateY(0%); + -ms-transform: scale(1, 1) translateY(0%); + -o-transform: scale(1, 1) translateY(0%); + transform: scale(1, 1) translateY(0%); } +html.mm-zoom-menu.mm-bottom.mm-opened .mm-menu { + -webkit-transform: scale(0.7, 0.7) translateY(40%); + -moz-transform: scale(0.7, 0.7) translateY(40%); + -ms-transform: scale(0.7, 0.7) translateY(40%); + -o-transform: scale(0.7, 0.7) translateY(40%); + transform: scale(0.7, 0.7) translateY(40%); + -webkit-transform-origin: center bottom; + -moz-transform-origin: center bottom; + -ms-transform-origin: center bottom; + -o-transform-origin: center bottom; + transform-origin: center bottom; } +html.mm-zoom-menu.mm-bottom.mm-opening .mm-menu { + -webkit-transform: scale(1, 1) translateY(0%); + -moz-transform: scale(1, 1) translateY(0%); + -ms-transform: scale(1, 1) translateY(0%); + -o-transform: scale(1, 1) translateY(0%); + transform: scale(1, 1) translateY(0%); } + +html.mm-zoom-page .mm-page { + -webkit-transition-property: -webkit-transform, top, right, bottom, left, border; + -moz-transition-property: -moz-transform, top, right, bottom, left, border; + -ms-transition-property: -ms-transform, top, right, bottom, left, border; + -o-transition-property: -o-transform, top, right, bottom, left, border; + transition-property: transform, top, right, bottom, left, border; } +html.mm-zoom-page.mm-opened .mm-page { + -webkit-transform: scale(1, 1); + -moz-transform: scale(1, 1); + -ms-transform: scale(1, 1); + -o-transform: scale(1, 1); + transform: scale(1, 1); + -webkit-transform-origin: left center; + -moz-transform-origin: left center; + -ms-transform-origin: left center; + -o-transform-origin: left center; + transform-origin: left center; } +html.mm-zoom-page.mm-opening .mm-page { + -webkit-transform: scale(1.5, 1.5); + -moz-transform: scale(1.5, 1.5); + -ms-transform: scale(1.5, 1.5); + -o-transform: scale(1.5, 1.5); + transform: scale(1.5, 1.5); } +html.mm-zoom-page.mm-right.mm-opened .mm-page { + -webkit-transform-origin: right center; + -moz-transform-origin: right center; + -ms-transform-origin: right center; + -o-transform-origin: right center; + transform-origin: right center; } +html.mm-zoom-page.mm-top.mm-opened .mm-page { + -webkit-transform-origin: center top; + -moz-transform-origin: center top; + -ms-transform-origin: center top; + -o-transform-origin: center top; + transform-origin: center top; } +html.mm-zoom-page.mm-bottom.mm-opened .mm-page { + -webkit-transform-origin: center bottom; + -moz-transform-origin: center bottom; + -ms-transform-origin: center bottom; + -o-transform-origin: center bottom; + transform-origin: center bottom; } + +html.mm-zoom-panels .mm-menu.mm-horizontal > .mm-panel { + -webkit-transform: scale(1.5, 1.5); + -moz-transform: scale(1.5, 1.5); + -ms-transform: scale(1.5, 1.5); + -o-transform: scale(1.5, 1.5); + transform: scale(1.5, 1.5); + -webkit-transform-origin: left center; + -moz-transform-origin: left center; + -ms-transform-origin: left center; + -o-transform-origin: left center; + transform-origin: left center; + -webkit-transition-property: -webkit-transform, left; + -moz-transition-property: -moz-transform, left; + -ms-transition-property: -ms-transform, left; + -o-transition-property: -o-transform, left; + transition-property: transform, left; } + html.mm-zoom-panels .mm-menu.mm-horizontal > .mm-panel.mm-opened { + -webkit-transform: scale(1, 1); + -moz-transform: scale(1, 1); + -ms-transform: scale(1, 1); + -o-transform: scale(1, 1); + transform: scale(1, 1); } + html.mm-zoom-panels .mm-menu.mm-horizontal > .mm-panel.mm-opened.mm-subopened { + -webkit-transform: scale(0.7, 0.7); + -moz-transform: scale(0.7, 0.7); + -ms-transform: scale(0.7, 0.7); + -o-transform: scale(0.7, 0.7); + transform: scale(0.7, 0.7); } + +/* + jQuery.mmenu fullscreen extension CSS +*/ +html.mm-opening.mm-fullscreen .mm-page, +html.mm-opening.mm-fullscreen #mm-blocker, +html.mm-opening.mm-fullscreen .mm-fixed-top, +html.mm-opening.mm-fullscreen .mm-fixed-bottom { + left: 100%; } + +.mm-menu.mm-fullscreen { + width: 100%; } + +@media all and (max-width: 140px) { + .mm-menu.mm-fullscreen { + width: 140px; } + + html.mm-opening.mm-fullscreen .mm-page, + html.mm-opening.mm-fullscreen #mm-blocker, + html.mm-opening.mm-fullscreen .mm-fixed-top, + html.mm-opening.mm-fullscreen .mm-fixed-bottom { + left: 140px; } } +@media all and (min-width: 10000px) { + .mm-menu.mm-fullscreen { + width: 10000px; } + + html.mm-opening.mm-fullscreen .mm-page, + html.mm-opening.mm-fullscreen #mm-blocker, + html.mm-opening.mm-fullscreen .mm-fixed-top, + html.mm-opening.mm-fullscreen .mm-fixed-bottom { + left: 10000px; } } +.mm-menu.mm-top.mm-fullscreen { + height: 100%; } + +html.mm-top.mm-opening.mm-fullscreen .mm-page, +html.mm-top.mm-opening.mm-fullscreen #mm-blocker, +html.mm-top.mm-opening.mm-fullscreen .mm-fixed-top { + top: 100%; } +html.mm-top.mm-opening.mm-fullscreen .mm-fixed-bottom { + bottom: -100%; } + +@media all and (max-height: 140px) { + .mm-menu.mm-top.mm-fullscreen { + height: 140px; } + + html.mm-top.mm-opening.mm-fullscreen .mm-page, + html.mm-top.mm-opening.mm-fullscreen #mm-blocker, + html.mm-top.mm-opening.mm-fullscreen .mm-fixed-top { + top: 140px; } + html.mm-top.mm-opening.mm-fullscreen .mm-fixed-bottom { + bottom: -140px; } } +@media all and (min-height: 10000px) { + .mm-menu.mm-top.mm-fullscreen { + height: 10000px; } + + html.mm-top.mm-opening.mm-fullscreen .mm-page, + html.mm-top.mm-opening.mm-fullscreen #mm-blocker, + html.mm-top.mm-opening.mm-fullscreen .mm-fixed-top { + top: 10000px; } + html.mm-top.mm-opening.mm-fullscreen .mm-fixed-bottom { + bottom: -10000px; } } +.mm-menu.mm-right.mm-fullscreen { + width: 100%; } + +html.mm-right.mm-opening.mm-fullscreen .mm-page, +html.mm-right.mm-opening.mm-fullscreen #mm-blocker, +html.mm-right.mm-opening.mm-fullscreen .mm-fixed-top, +html.mm-right.mm-opening.mm-fullscreen .mm-fixed-bottom { + right: 100%; } + +@media all and (max-width: 140px) { + .mm-menu.mm-right.mm-fullscreen { + width: 140px; } + + html.mm-right.mm-opening.mm-fullscreen .mm-page, + html.mm-right.mm-opening.mm-fullscreen #mm-blocker, + html.mm-right.mm-opening.mm-fullscreen .mm-fixed-top, + html.mm-right.mm-opening.mm-fullscreen .mm-fixed-bottom { + right: 140px; } } +@media all and (min-width: 10000px) { + .mm-menu.mm-right.mm-fullscreen { + width: 10000px; } + + html.mm-right.mm-opening.mm-fullscreen .mm-page, + html.mm-right.mm-opening.mm-fullscreen #mm-blocker, + html.mm-right.mm-opening.mm-fullscreen .mm-fixed-top, + html.mm-right.mm-opening.mm-fullscreen .mm-fixed-bottom { + right: 10000px; } } +.mm-menu.mm-bottom.mm-fullscreen { + height: 100%; } + +html.mm-bottom.mm-opening.mm-fullscreen .mm-page, +html.mm-bottom.mm-opening.mm-fullscreen #mm-blocker, +html.mm-bottom.mm-opening.mm-fullscreen .mm-fixed-bottom { + bottom: 100%; } +html.mm-bottom.mm-opening.mm-fullscreen .mm-fixed-top { + top: -100%; } + +@media all and (max-height: 140px) { + .mm-menu.mm-bottom.mm-fullscreen { + height: 140px; } + + html.mm-bottom.mm-opening.mm-fullscreen .mm-page, + html.mm-bottom.mm-opening.mm-fullscreen #mm-blocker, + html.mm-bottom.mm-opening.mm-fullscreen .mm-fixed-bottom { + bottom: 140px; } + html.mm-bottom.mm-opening.mm-fullscreen .mm-fixed-top { + top: -140px; } } +@media all and (min-height: 10000px) { + .mm-menu.mm-bottom.mm-fullscreen { + height: 10000px; } + + html.mm-bottom.mm-opening.mm-fullscreen .mm-page, + html.mm-bottom.mm-opening.mm-fullscreen #mm-blocker, + html.mm-bottom.mm-opening.mm-fullscreen .mm-fixed-bottom { + bottom: 10000px; } + html.mm-bottom.mm-opening.mm-fullscreen .mm-fixed-top { + top: -10000px; } } +.mm-menu.mm-fullscreen.mm-front, .mm-menu.mm-fullscreen.mm-next { + left: -100%; } + +@media all and (max-width: 140px) { + .mm-menu.mm-fullscreen.mm-front, .mm-menu.mm-fullscreen.mm-next { + left: -140px; } } +@media all and (min-width: 10000px) { + .mm-menu.mm-fullscreen.mm-front, .mm-menu.mm-fullscreen.mm-next { + left: -10000px; } } +.mm-menu.mm-top.mm-fullscreen.mm-front, .mm-menu.mm-top.mm-fullscreen.mm-next { + top: -100%; } + +@media all and (max-height: 140px) { + .mm-menu.mm-top.mm-fullscreen.mm-front, .mm-menu.mm-top.mm-fullscreen.mm-next { + top: -140px; } } +@media all and (min-height: 10000px) { + .mm-menu.mm-top.mm-fullscreen.mm-front, .mm-menu.mm-top.mm-fullscreen.mm-next { + top: -10000px; } } +.mm-menu.mm-right.mm-fullscreen.mm-front, .mm-menu.mm-right.mm-fullscreen.mm-next { + right: -100%; } + +@media all and (max-width: 140px) { + .mm-menu.mm-right.mm-fullscreen.mm-front, .mm-menu.mm-right.mm-fullscreen.mm-next { + right: -140px; } } +@media all and (min-width: 10000px) { + .mm-menu.mm-right.mm-fullscreen.mm-front, .mm-menu.mm-right.mm-fullscreen.mm-next { + right: -10000px; } } +.mm-menu.mm-bottom.mm-fullscreen.mm-front, .mm-menu.mm-bottom.mm-fullscreen.mm-next { + bottom: -100%; } + +@media all and (max-height: 140px) { + .mm-menu.mm-bottom.mm-fullscreen.mm-front, .mm-menu.mm-bottom.mm-fullscreen.mm-next { + bottom: -140px; } } +@media all and (min-height: 10000px) { + .mm-menu.mm-bottom.mm-fullscreen.mm-front, .mm-menu.mm-bottom.mm-fullscreen.mm-next { + bottom: -10000px; } } +html.mm-front .mm-fixed-top, +html.mm-front .mm-fixed-bottom, +html.mm-opening.mm-front .mm-fixed-top, +html.mm-opening.mm-front .mm-fixed-bottom { + left: 0; + right: auto; } +html.mm-front .mm-fixed-top, +html.mm-opening.mm-front .mm-fixed-top { + top: 0; } +html.mm-front .mm-fixed-bottom, +html.mm-opening.mm-front .mm-fixed-bottom { + bottom: 0; } + +html.mm-opened.mm-fullscreen .mm-page { + box-shadow: none !important; } + +/* + jQuery.mmenu position extension CSS +*/ +.mm-menu.mm-top { + width: 100%; } + +html.mm-top.mm-opened .mm-page, +html.mm-top.mm-opened #mm-blocker { + top: 0%; } + +html.mm-top.mm-opened.mm-opening .mm-page, +html.mm-top.mm-opened.mm-opening #mm-blocker, +html.mm-top.mm-opened.mm-opening .mm-fixed-top, +html.mm-top.mm-opened.mm-opening .mm-fixed-bottom { + left: 0; } + +.mm-menu.mm-right { + left: auto; + right: 0; } + +html.mm-right.mm-opened .mm-page, +html.mm-right.mm-opened #mm-blocker, +html.mm-right.mm-opened .mm-fixed-top, +html.mm-right.mm-opened .mm-fixed-bottom { + left: auto; + right: 0%; } + +html.mm-right.mm-opened.mm-opening .mm-page, +html.mm-right.mm-opened.mm-opening #mm-blocker, +html.mm-right.mm-opened.mm-opening .mm-fixed-top, +html.mm-right.mm-opened.mm-opening .mm-fixed-bottom { + left: auto; } + +.mm-menu.mm-bottom { + width: 100%; + top: auto; + bottom: 0; } + +html.mm-bottom.mm-opened .mm-page, +html.mm-bottom.mm-opened #mm-blocker { + bottom: 0%; + top: auto; } + +html.mm-bottom.mm-opened.mm-opening .mm-page, +html.mm-bottom.mm-opened.mm-opening #mm-blocker, +html.mm-bottom.mm-opened.mm-opening .mm-fixed-top, +html.mm-bottom.mm-opened.mm-opening .mm-fixed-bottom { + top: auto; + left: 0; } + +.mm-menu.mm-top { + height: 80%; } + +html.mm-top.mm-opening .mm-page, +html.mm-top.mm-opening #mm-blocker, +html.mm-top.mm-opening .mm-fixed-top { + top: 80%; } +html.mm-top.mm-opening .mm-fixed-bottom { + bottom: -80%; } + +@media all and (max-height: 175px) { + .mm-menu.mm-top { + height: 140px; } + + html.mm-top.mm-opening .mm-page, + html.mm-top.mm-opening #mm-blocker, + html.mm-top.mm-opening .mm-fixed-top { + top: 140px; } + html.mm-top.mm-opening .mm-fixed-bottom { + bottom: -140px; } } +@media all and (min-height: 1100px) { + .mm-menu.mm-top { + height: 880px; } + + html.mm-top.mm-opening .mm-page, + html.mm-top.mm-opening #mm-blocker, + html.mm-top.mm-opening .mm-fixed-top { + top: 880px; } + html.mm-top.mm-opening .mm-fixed-bottom { + bottom: -880px; } } +.mm-menu.mm-right { + width: 80%; } + +html.mm-right.mm-opening .mm-page, +html.mm-right.mm-opening #mm-blocker, +html.mm-right.mm-opening .mm-fixed-top, +html.mm-right.mm-opening .mm-fixed-bottom { + right: 80%; } + +@media all and (max-width: 175px) { + .mm-menu.mm-right { + width: 140px; } + + html.mm-right.mm-opening .mm-page, + html.mm-right.mm-opening #mm-blocker, + html.mm-right.mm-opening .mm-fixed-top, + html.mm-right.mm-opening .mm-fixed-bottom { + right: 140px; } } +@media all and (min-width: 550px) { + .mm-menu.mm-right { + width: 440px; } + + html.mm-right.mm-opening .mm-page, + html.mm-right.mm-opening #mm-blocker, + html.mm-right.mm-opening .mm-fixed-top, + html.mm-right.mm-opening .mm-fixed-bottom { + right: 440px; } } +.mm-menu.mm-bottom { + height: 80%; } + +html.mm-bottom.mm-opening .mm-page, +html.mm-bottom.mm-opening #mm-blocker, +html.mm-bottom.mm-opening .mm-fixed-bottom { + bottom: 80%; } +html.mm-bottom.mm-opening .mm-fixed-top { + top: -80%; } + +@media all and (max-height: 175px) { + .mm-menu.mm-bottom { + height: 140px; } + + html.mm-bottom.mm-opening .mm-page, + html.mm-bottom.mm-opening #mm-blocker, + html.mm-bottom.mm-opening .mm-fixed-bottom { + bottom: 140px; } + html.mm-bottom.mm-opening .mm-fixed-top { + top: -140px; } } +@media all and (min-height: 1100px) { + .mm-menu.mm-bottom { + height: 880px; } + + html.mm-bottom.mm-opening .mm-page, + html.mm-bottom.mm-opening #mm-blocker, + html.mm-bottom.mm-opening .mm-fixed-bottom { + bottom: 880px; } + html.mm-bottom.mm-opening .mm-fixed-top { + top: -880px; } } +/* + jQuery.mmenu z-position extension CSS +*/ +html.mm-front.mm-opened .mm-page { + top: 0 !important; + right: 0 !important; + bottom: 0 !important; + left: 0 !important; } + +.mm-menu.mm-front, +.mm-menu.mm-next { + -webkit-transition: none 0.4s ease; + -moz-transition: none 0.4s ease; + -ms-transition: none 0.4s ease; + -o-transition: none 0.4s ease; + transition: none 0.4s ease; + -webkit-transition-property: top, right, bottom, left, -webkit-transform; + -moz-transition-property: top, right, bottom, left, -moz-transform; + -ms-transition-property: top, right, bottom, left, -o-transform; + -o-transition-property: top, right, bottom, left, -o-transform; + transition-property: top, right, bottom, left, transform; } + +html.mm-front .mm-page, +html.mm-front #mm-blocker { + z-index: 0; } + +.mm-menu.mm-front { + z-index: 1; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.5); } + +html.mm-opened.mm-next .mm-page { + box-shadow: none; } + +html.mm-opening .mm-menu.mm-front, html.mm-opening .mm-menu.mm-next { + left: 0%; } + +.mm-menu.mm-top.mm-front, .mm-menu.mm-top.mm-next { + left: 0; } + +html.mm-opening .mm-menu.mm-top.mm-front, html.mm-opening .mm-menu.mm-top.mm-next { + left: 0; + top: 0%; } + +.mm-menu.mm-right.mm-front, .mm-menu.mm-right.mm-next { + left: auto; } + +html.mm-opening .mm-menu.mm-right.mm-front, html.mm-opening .mm-menu.mm-right.mm-next { + left: auto; + right: 0%; } + +.mm-menu.mm-bottom.mm-front, .mm-menu.mm-bottom.mm-next { + top: auto; + left: 0; } + +html.mm-opening .mm-menu.mm-bottom.mm-front, html.mm-opening .mm-menu.mm-bottom.mm-next { + left: 0; + bottom: 0%; } + +.mm-menu.mm-front, .mm-menu.mm-next { + left: -80%; } + +@media all and (max-width: 175px) { + .mm-menu.mm-front, .mm-menu.mm-next { + left: -140px; } } +@media all and (min-width: 550px) { + .mm-menu.mm-front, .mm-menu.mm-next { + left: -440px; } } +.mm-menu.mm-top.mm-front, .mm-menu.mm-top.mm-next { + top: -80%; } + +@media all and (max-height: 175px) { + .mm-menu.mm-top.mm-front, .mm-menu.mm-top.mm-next { + top: -140px; } } +@media all and (min-height: 1100px) { + .mm-menu.mm-top.mm-front, .mm-menu.mm-top.mm-next { + top: -880px; } } +.mm-menu.mm-right.mm-front, .mm-menu.mm-right.mm-next { + right: -80%; } + +@media all and (max-width: 175px) { + .mm-menu.mm-right.mm-front, .mm-menu.mm-right.mm-next { + right: -140px; } } +@media all and (min-width: 550px) { + .mm-menu.mm-right.mm-front, .mm-menu.mm-right.mm-next { + right: -440px; } } +.mm-menu.mm-bottom.mm-front, .mm-menu.mm-bottom.mm-next { + bottom: -80%; } + +@media all and (max-height: 175px) { + .mm-menu.mm-bottom.mm-front, .mm-menu.mm-bottom.mm-next { + bottom: -140px; } } +@media all and (min-height: 1100px) { + .mm-menu.mm-bottom.mm-front, .mm-menu.mm-bottom.mm-next { + bottom: -880px; } } +html.mm-front .mm-fixed-top, +html.mm-front .mm-fixed-bottom, +html.mm-opening.mm-front .mm-fixed-top, +html.mm-opening.mm-front .mm-fixed-bottom { + left: 0; + right: auto; } +html.mm-front .mm-fixed-top, +html.mm-opening.mm-front .mm-fixed-top { + top: 0; } +html.mm-front .mm-fixed-bottom, +html.mm-opening.mm-front .mm-fixed-bottom { + bottom: 0; } + +/* + jQuery.mmenu themes extension CSS +*/ +html.mm-opened.mm-light .mm-page { + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); } + +.mm-ismenu.mm-light { + background: #f3f3f3; + color: rgba(0, 0, 0, 0.6); } + +.mm-menu.mm-light .mm-list > li:after { + border-color: rgba(0, 0, 0, 0.1); } +.mm-menu.mm-light .mm-list > li > a.mm-subclose { + background: rgba(255, 255, 255, 0.6); + color: rgba(0, 0, 0, 0.3); } +.mm-menu.mm-light .mm-list > li > a.mm-subopen:after, .mm-menu.mm-light .mm-list > li > a.mm-subclose:before { + border-color: rgba(0, 0, 0, 0.3); } +.mm-menu.mm-light .mm-list > li > a.mm-subopen:before { + border-color: rgba(0, 0, 0, 0.1); } +.mm-menu.mm-light .mm-list > li.mm-selected > a:not(.mm-subopen), +.mm-menu.mm-light .mm-list > li.mm-selected > span { + background: rgba(255, 255, 255, 0.6); } +.mm-menu.mm-light .mm-list > li.mm-label { + background: rgba(0, 0, 0, 0.03); } +.mm-menu.mm-light.mm-vertical .mm-list li.mm-opened > a.mm-subopen, +.mm-menu.mm-light.mm-vertical .mm-list li.mm-opened > ul { + background: rgba(0, 0, 0, 0.03); } + +.mm-menu.mm-light .mm-search input { + background: rgba(0, 0, 0, 0.1); + color: rgba(0, 0, 0, 0.6); } +.mm-menu.mm-light .mm-noresultsmsg { + color: rgba(0, 0, 0, 0.3); } + +.mm-menu.mm-light em.mm-counter { + color: rgba(0, 0, 0, 0.3); } + +.mm-menu.mm-light .mm-list li.mm-label > div > div { + background: rgba(0, 0, 0, 0.03); } + +.mm-menu.mm-light .mm-header { + border-color: rgba(0, 0, 0, 0.1); + color: rgba(0, 0, 0, 0.3); } + .mm-menu.mm-light .mm-header a:before { + border-color: rgba(0, 0, 0, 0.3); } + +.mm-menu.mm-light label.mm-toggle { + background: rgba(0, 0, 0, 0.1); } + .mm-menu.mm-light label.mm-toggle div { + background: #f3f3f3; } +.mm-menu.mm-light input.mm-toggle:checked ~ label.mm-toggle { + background: #4bd963; } + +html.mm-opened.mm-white .mm-page { + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); } + +.mm-ismenu.mm-white { + background: white; + color: rgba(0, 0, 0, 0.6); } + +.mm-menu.mm-white .mm-list > li:after { + border-color: rgba(0, 0, 0, 0.1); } +.mm-menu.mm-white .mm-list > li > a.mm-subclose { + background: rgba(0, 0, 0, 0.06); + color: rgba(0, 0, 0, 0.3); } +.mm-menu.mm-white .mm-list > li > a.mm-subopen:after, .mm-menu.mm-white .mm-list > li > a.mm-subclose:before { + border-color: rgba(0, 0, 0, 0.3); } +.mm-menu.mm-white .mm-list > li > a.mm-subopen:before { + border-color: rgba(0, 0, 0, 0.1); } +.mm-menu.mm-white .mm-list > li.mm-selected > a:not(.mm-subopen), +.mm-menu.mm-white .mm-list > li.mm-selected > span { + background: rgba(0, 0, 0, 0.06); } +.mm-menu.mm-white .mm-list > li.mm-label { + background: rgba(0, 0, 0, 0.03); } +.mm-menu.mm-white.mm-vertical .mm-list li.mm-opened > a.mm-subopen, +.mm-menu.mm-white.mm-vertical .mm-list li.mm-opened > ul { + background: rgba(0, 0, 0, 0.03); } + +.mm-menu.mm-white .mm-search input { + background: rgba(0, 0, 0, 0.1); + color: rgba(0, 0, 0, 0.6); } +.mm-menu.mm-white .mm-noresultsmsg { + color: rgba(0, 0, 0, 0.3); } + +.mm-menu.mm-white em.mm-counter { + color: rgba(0, 0, 0, 0.3); } + +.mm-menu.mm-white .mm-list li.mm-label > div > div { + background: rgba(0, 0, 0, 0.03); } + +.mm-menu.mm-white .mm-header { + border-color: rgba(0, 0, 0, 0.1); + color: rgba(0, 0, 0, 0.3); } + .mm-menu.mm-white .mm-header a:before { + border-color: rgba(0, 0, 0, 0.3); } + +.mm-menu.mm-white label.mm-toggle { + background: rgba(0, 0, 0, 0.1); } + .mm-menu.mm-white label.mm-toggle div { + background: white; } +.mm-menu.mm-white input.mm-toggle:checked ~ label.mm-toggle { + background: #4bd963; } + +html.mm-opened.mm-black .mm-page { + box-shadow: none; } + +.mm-ismenu.mm-black { + background: black; + color: rgba(255, 255, 255, 0.6); } + +.mm-menu.mm-black .mm-list > li:after { + border-color: rgba(255, 255, 255, 0.2); } +.mm-menu.mm-black .mm-list > li > a.mm-subclose { + background: rgba(255, 255, 255, 0.25); + color: rgba(255, 255, 255, 0.3); } +.mm-menu.mm-black .mm-list > li > a.mm-subopen:after, .mm-menu.mm-black .mm-list > li > a.mm-subclose:before { + border-color: rgba(255, 255, 255, 0.3); } +.mm-menu.mm-black .mm-list > li > a.mm-subopen:before { + border-color: rgba(255, 255, 255, 0.2); } +.mm-menu.mm-black .mm-list > li.mm-selected > a:not(.mm-subopen), +.mm-menu.mm-black .mm-list > li.mm-selected > span { + background: rgba(255, 255, 255, 0.25); } +.mm-menu.mm-black .mm-list > li.mm-label { + background: rgba(255, 255, 255, 0.15); } +.mm-menu.mm-black.mm-vertical .mm-list li.mm-opened > a.mm-subopen, +.mm-menu.mm-black.mm-vertical .mm-list li.mm-opened > ul { + background: rgba(255, 255, 255, 0.15); } + +.mm-menu.mm-black .mm-search input { + background: rgba(255, 255, 255, 0.3); + color: rgba(255, 255, 255, 0.6); } +.mm-menu.mm-black .mm-noresultsmsg { + color: rgba(255, 255, 255, 0.3); } + +.mm-menu.mm-black em.mm-counter { + color: rgba(255, 255, 255, 0.3); } + +.mm-menu.mm-black .mm-list li.mm-label > div > div { + background: rgba(255, 255, 255, 0.15); } + +.mm-menu.mm-black .mm-header { + border-color: rgba(255, 255, 255, 0.2); + color: rgba(255, 255, 255, 0.3); } + .mm-menu.mm-black .mm-header a:before { + border-color: rgba(255, 255, 255, 0.3); } + +.mm-menu.mm-black label.mm-toggle { + background: rgba(255, 255, 255, 0.2); } + .mm-menu.mm-black label.mm-toggle div { + background: black; } +.mm-menu.mm-black input.mm-toggle:checked ~ label.mm-toggle { + background: #4bd963; } diff --git a/assets/css/style.scss b/assets/css/style.scss new file mode 100644 index 0000000..8ee6438 --- /dev/null +++ b/assets/css/style.scss @@ -0,0 +1,908 @@ +--- +--- +@import url(https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,400,300,700); +@import url(https://fonts.googleapis.com/css?family=Montserrat); +@import url(https://fonts.googleapis.com/css?family=Anonymous+Pro:400,700); + +/* Colours */ +$twitter: #6dabda; +$linkedin: #2b77b1; +$xing: #006567; +$google-plus: #c95644; +$facebook: #365899; +$github: #f6c2a4; +$stack-overflow: #c98b3b; +$instagram: #cd486b; +$reddit: #cee3f8; +$rss: #eea33a; + +$darker: #21211E; +$dark: #2D2D29; +$medium: #3B3B35; +$light-medium: #969696; +$dark-blue: #215A6D; +$light-blue: #3CA2A2; +$green: #92C7A3; +$light: #DFECE6; +$white: #FFFFFF; +$dark-purple: #300030; +$medium-purple: #480048; +$regular-purple: #601848; +$red: #C04848; +$orange: #F07241; +/* Sthope Colours */ +$greenyellow: #a9ff30; + +/* Responsive sizes */ +$screen-sm-min: 768px; +$screen-md-min: 992px; +$screen-lg-min: 1200px; + +/* Globals */ + +html { + height: 100%; + overflow-x: hidden; +} + +body { + font-family: 'Open Sans', sans-serif; + font-weight: 300; + background-color: $dark; + color: $white; + font-size: 16px; + height: 100%; + width: 100% +} + +a, a:active { + color: $light-blue; + text-decoration: none; +} + +a:hover { + color: $dark-blue; + text-decoration: none; +} + +ul { + list-style-type: none; +} + +.navbar, .nav { + background-color: $dark-blue; + + .navbar-toggle { + margin-top: 10px; + padding-top: 0px; + padding-bottom: 20px; + } + + li { + + a, a:active { + color: $white; + } + + a:hover { + color: $dark-blue; + text-decoration: none; + } + } +} + +.clearfix:after { + content: " "; + display: block; + height: 0; + clear: both; +} + +.header { + font-size: 32px; + text-align: center; + margin-top: 20px; + margin-left: -0%; + width: 100%; + + @media (min-width: $screen-sm-min) { + font-size: 62px; + margin-left: -10%; + width: 120%; + } +} + +.menu-button { + color: $white; + font-size: 24px; + position: fixed; + top: 10px; + left: 20px; + cursor: pointer; + line-height: 1em; + padding: 10px; + background-color: $dark; + z-index: 100; + @media (min-width: $screen-sm-min) { + top: 20px; + left: 40px; + } +} + +.content-panel { + background-color: $medium; + padding-top: 20px; + padding-bottom: 20px; + padding-left: 30px; + padding-right: 30px; + margin-top: 20px; + box-shadow: 0px 0px 0px 0px, 0px 6px 12px rgba(0, 0, 0, 0.2); + border-bottom: 5px solid $greenyellow +} + +#my-menu { + + p { + margin-bottom: 5px; + } + + a, a:active { + color: $white; + } + + a:hover { + color: $light-blue; + } + + .pages { + + .fa { + margin-right: 10px; + } + } +} + +.links { + margin-top: 50px; + text-align: center; + + i { + padding-left: 5px; + padding-right: 5px; + + @media (min-width: $screen-sm-min) { + padding-left: 10px; + padding-right: 10px; + } + } + + .fa { + -webkit-transition: 0.3s; + -moz-transition: 0.3s; + transition: 0.3s; + } + + .fa-twitter:hover { + color: $twitter; + } + + .fa-linkedin:hover { + color: $linkedin; + } + + .fa-xing:hover { + color: $xing; + } + + .fa-google-plus:hover { + color: $google-plus; + } + + .fa-facebook:hover { + color: $facebook; + } + + .fa-github:hover { + color: $github; + } + + .fa-stack-overflow:hover { + color: $stack-overflow; + } + + .fa-instagram:hover { + color: $instagram; + } + + .fa-reddit-alien:hover { + color: $reddit; + } + + .fa-rss:hover { + color: $rss; + } +} + +/* Index */ + +.index { + height: 100%; + max-height: 100%; + width: 100%; + padding: 0px; + + @media (min-width: $screen-sm-min) { + width: 700px; + max-width:700px; + } + + .header { + margin-top: 10px; + margin-left: 0%; + margin-bottom: 0px; + font-size: 32px; + width: 100%; + + @media (min-width: $screen-lg-min) { + margin-left: -10%; + width: 120%; + } + } + + .categories { + font-size: 22px; + } + + .content-panel:nth-of-type(1) { + border-bottom: 10px solid $greenyellow; + } + + .author-header { + font-family: 'Montserrat', sans-serif; + color: $greenyellow; + margin-top: 0px; + padding-top: 15px; + font-size: 30px; + + @media (min-width: $screen-sm-min) { + font-size: 52px; + margin-top: 0px; + } + + @media (min-width: $screen-md-min) { + font-size: 60px; + margin-top: -20px; + } + } + + .row { + height: 100%; + max-height: 100%; + margin-top: 60px; + margin-left: 0px; + margin-right: 0px; + } + + .gravatar { + width: 100%; + margin-top: -80px; + text-align: center; + } + + .author-text { + text-align: center; + margin-top: 30px; + + b { + font-size: 32px; + } + } + + .links { + font-size: 2em; + } + + .articles { + text-align: center; + font-size: 20px; + + h2 { + margin-bottom: 30px; + color: $greenyellow; + font-size: 26px; + } + + ul { + + padding: 0px; + + li { + margin-bottom: 20px; + font-size: 24px; + + a:hover { + color: $light-medium; + } + + small { + font-size: 14px; + margin-top: -10px; + padding-top: 0px; + color: $light-medium; + } + + } + + li:nth-last-of-type(1) { + + small { + font-size: 16px; + } + + } + } + + a, a:active { + color: $white; + white-space: nowrap; + } + + a:hover { + color: $light-blue; + } + } + + .copyright { + margin-top: 50px; + text-align: center; + } + + .links { + a, a:active { + color: #FFFFFF; + } + } + + .menu { + margin-top: 250px; + margin-bottom: 20px; + font-size: 20px; + position: absolute; + bottom: 0px; + + a, a:active { + color: #FFFFFF; + } + + a:hover { + color: $light-blue; + } + + ul { + margin-bottom: 30px; + padding-left: 10px; + + ul { + padding-left: 50px; + list-style: none; + margin-left: 0; + text-indent: -0.6em; + } + } + } + +} + +.all-posts { + margin-left: 0px; + margin-right: 0px; + + @media (min-width: $screen-sm-min) { + #search-container { + padding-top: 75px; + padding-bottom: 150px; + } + } + + @media (min-width: $screen-md-min) { + margin-left: -15px; + margin-right: -15px; + + #search-container { + padding-bottom: 300px; + } + } + + #search-input { + position:relative; + width: 100%; + padding:6px 15px 6px 30px; + margin: 2px; + margin-top: 50px; + + color:$dark; + background-color:$white; + + border:1px solid #adc5cf; + border-radius:15px; + -moz-border-radius:15px; + -webkit-border-radius:15px; + } + + #search-input:focus { + outline: none; + } + + .content-panel { + padding-left: 10px; + padding-right: 10px; + @media (min-width: $screen-md-min) { + padding-left: 30px; + padding-right: 30px; + } + } +} + + +.single { + height:100%; + max-height: 100%; + + h1, h2, h3, h4, h5, h6 { + font-family: 'Montserrat', sans-serif; + margin-bottom: 10px; + } + + h2 { + font-size: 36px; + } + + h3 { + font-size: 28px; + } + + p { + margin-bottom: 10px; + + @media (min-width: $screen-sm-min) { + margin-bottom: 40px; + } + } + + .menu { + + background-color: $dark-blue; + + a, a:active { + color: $white; + } + + a:hover { + color: $light-blue; + } + + h4 { + margin-top: 20px; + } + + .share { + margin-top: 20px; + + h4 { + margin-bottom: 10px; + } + } + + .home { + margin-top: 10px; + font-size: 16px; + + a { + color: $white; + } + } + + .related { + ul { + padding: 0px; + } + li { + margin-bottom: 10px; + } + } + } + + .article { + width: 100%; + margin-left: 0%; + padding: 0px; + + @media (min-width: $screen-sm-min) { + width: 90%; + margin-left: 5%; + } + + @media (min-width: $screen-md-min) { + width: 70%; + margin-left: 15%; + } + + @media (min-width: $screen-lg-min) { + width: 50%; + margin-left: 25%; + } + + .thumb { + margin-top: 20px; + margin-bottom: 0px; + text-align: center; + + img { + height: 50px; + @media (min-width: $screen-sm-min) { + height: 70px; + } + } + } + + .author { + font-size: 20px; + text-align: center; + margin-bottom: 0px; + } + + .read-time { + font-size: 16px; + text-align: center; + margin-bottom: 10px; + font-weight: 400; + @media (min-width: $screen-sm-min) { + margin-bottom: 40px; + } + } + + .content { + font-size: 18px; + line-height: 170%; + padding-left: 15px; + padding-right: 15px; + padding-top: 10px; + padding-bottom: 10px; + + @media (min-width: $screen-sm-min) { + // Sthope Font Size + font-size: 15px; + padding-left: 30px; + padding-right: 30px; + padding-top: 40px; + padding-bottom: 20px; + } + + .series { + margin-bottom: 50px; + } + + img { + max-width: 100%; + padding: 10px; + display: block; + margin-left: auto; + margin-right: auto + } + + ul { + list-style-type: disc; + } + + ol { + list-style-type: decimal; + } + + blockquote { + position: relative; + width: 100%; + margin-left: -15px; + padding-right: 10px; + background-color: $darker; + color: white; + box-sizing: content-box; + // border: none; + border: 0.5rem outset pink; + font-size: 28px; + + @media (min-width: $screen-sm-min) { + margin-left: -30px; + padding-left: 45px; + padding-right: 15px; + } + + p { + margin: 0; + padding: 15px; + z-index: 0; + } + + :before { + font-family: "Times New Roman"; + color: $light-medium; + content: "“"; + position: absolute; + top: 15px; + left: 15px; + font-size: 65px; + font-weight: bold; + } + + } + + .alignright { + float: right; + } + + .aligncenter { + display: block; + margin: 5px auto 5px auto; + } + + figure.highlight, div.highlighter-rouge { + width: 100%; + margin-left: -15px; + padding-right: 10px; + box-sizing: content-box; + + @media (min-width: $screen-sm-min) { + // margin-left: -30px; + padding-right: 60px; + } + + pre { + // Sthope Code + // width: 100%; + font-family: 'Anonymous Pro'; + background-color: $darker; + display: block; + color: $white; + font-size: 13px; + border: none; + line-height: 1.42857143; + padding-left: 20px; + padding-right: 20px; + padding-top: 20px; + padding-bottom: 20px; + // box-sizing: content-box; + // border-radius: 0; + // margin-top: 10px; + + @media (min-width: $screen-sm-min) { + padding-left: 20px; + padding-right: 20px; + margin-bottom: 0px; + font-size: 13px; + } + } + } + + p, ul, ol { + + code { + // Sthope `` + font-family: 'Anonymous Pro'; + font-size: 15px; + background-color: $darker; + color: $white; + // padding: 0.5em; + vertical-align: middle; + } + + } + + .tags { + margin-top: 10px; + margin-bottom: 10px; + text-align: center; + + a, a:active { + color: $white; + } + + a:hover { + color: $light-blue; + } + + } + + .share { + margin-top: 20px; + margin-bottom: 10px; + text-align: center; + + } + + } + + .feedback { + text-align: center; + + .fa-heart { + color: $red; + } + + } + + .comments { + } + + } +} + +.related { + margin-top: 50px; + text-align: center; + + .related-header { + margin-top: -30px; + margin-bottom: 20px; + + a { + color: $white; + font-size: 18px; + width: auto; + padding: 10px 20px; + background-color: $darker; + box-shadow: 0px 0px 0px 0px, 0px 6px 12px rgba(0, 0, 0, 0.2); + } + + a:hover { + color: $dark-blue; + } + } + + .title { + padding-top:20px; + font-size: 24px; + margin-bottom: 20px; + + @media (min-width: $screen-sm-min) { + font-size: 36px; + } + + a { + color: $white; + } + + a:hover { + color: $light; + } + } + + p { + margin-bottom: 0px; + } + + .previous-next { + width: 50%; + + a { + color: $white; + } + + a:hover { + color: $light; + } + } + + .next { + float: right; + text-align: right; + } + + .previous { + float: left; + text-align: left; + } + + .date { + color: $light-medium; + } +} + +.search-hr { + width: 700px; + border-color: $light-medium; +} + +.error { + .error-text { + margin-top: 30px; + + a { + color: $light-blue; + } + } + + .links { + font-size: 1em; + } +} + +.footer { + width: 100%; + margin-left: 0%; + + .fa-heart { + color: $red; + } + + @media (min-width: $screen-sm-min) { + width: 90%; + margin-left: 5%; + } + + @media (min-width: $screen-md-min) { + width: 80%; + margin-left: 10%; + } + + @media (min-width: $screen-lg-min) { + width: 70%; + margin-left: 15%; + } + + div { + color: $light-medium; + text-align: center; + margin-top: 20px; + margin-bottom: 20px; + } +} + +.btn-categories { + background-color: $light-blue; + border-color: $light-blue; + color: $white; + &:hover { + background-color: $dark-blue; + border-color: $dark-blue; + color: $white; + } + &:active { + background-color: $dark-blue; + border-color: $dark-blue; + color: $white; + } + &:focus { + background-color: $dark-blue; + border-color: $dark-blue; + color: $white; + } +} + +.dropdown-menu { + background-color: $light-blue; + color: $white; + > li > a { + background-color: $light-blue; + color: $white; + &:hover { + background-color: $dark-blue; + color: $white; + } + } +} + +table{ + margin: 0 auto; + border-collapse: collapse; + border-spacing: 0; + border:2px solid $darker;; +} + +th{ + padding: 2px; + border:2px solid $darker;; +} + +td{ + padding: 2px; + border:1px solid $dark-blue;; +} diff --git a/assets/images/avatar-morty.png b/assets/images/avatar-morty.png new file mode 100644 index 0000000..d7d89c1 Binary files /dev/null and b/assets/images/avatar-morty.png differ diff --git a/assets/images/avatar-sthope.png b/assets/images/avatar-sthope.png new file mode 100644 index 0000000..0432e01 Binary files /dev/null and b/assets/images/avatar-sthope.png differ diff --git a/assets/images/bash-logo.png b/assets/images/bash-logo.png new file mode 100644 index 0000000..7d62a97 Binary files /dev/null and b/assets/images/bash-logo.png differ diff --git a/assets/images/docker-banner.png b/assets/images/docker-banner.png new file mode 100644 index 0000000..ad67f3e Binary files /dev/null and b/assets/images/docker-banner.png differ diff --git a/assets/images/docker-logo.png b/assets/images/docker-logo.png new file mode 100644 index 0000000..2ad2404 Binary files /dev/null and b/assets/images/docker-logo.png differ diff --git a/assets/images/docker-portainer/1.jpg b/assets/images/docker-portainer/1.jpg new file mode 100644 index 0000000..a3ca60f Binary files /dev/null and b/assets/images/docker-portainer/1.jpg differ diff --git a/assets/images/docker-portainer/2.jpg b/assets/images/docker-portainer/2.jpg new file mode 100644 index 0000000..c490204 Binary files /dev/null and b/assets/images/docker-portainer/2.jpg differ diff --git a/assets/images/docker-portainer/3.jpg b/assets/images/docker-portainer/3.jpg new file mode 100644 index 0000000..9459421 Binary files /dev/null and b/assets/images/docker-portainer/3.jpg differ diff --git a/assets/images/docker-portainer/4.jpg b/assets/images/docker-portainer/4.jpg new file mode 100644 index 0000000..59138ee Binary files /dev/null and b/assets/images/docker-portainer/4.jpg differ diff --git a/assets/images/docker-portainer/5.jpg b/assets/images/docker-portainer/5.jpg new file mode 100644 index 0000000..aac2309 Binary files /dev/null and b/assets/images/docker-portainer/5.jpg differ diff --git a/assets/images/dockergithub.png b/assets/images/dockergithub.png new file mode 100644 index 0000000..7e8df67 Binary files /dev/null and b/assets/images/dockergithub.png differ diff --git a/assets/images/favicon.ico b/assets/images/favicon.ico new file mode 100644 index 0000000..861e063 Binary files /dev/null and b/assets/images/favicon.ico differ diff --git a/assets/images/githubdocker/1.png b/assets/images/githubdocker/1.png new file mode 100644 index 0000000..fa723ed Binary files /dev/null and b/assets/images/githubdocker/1.png differ diff --git a/assets/images/githubdocker/2.png b/assets/images/githubdocker/2.png new file mode 100644 index 0000000..4c96689 Binary files /dev/null and b/assets/images/githubdocker/2.png differ diff --git a/assets/images/githubdocker/3.png b/assets/images/githubdocker/3.png new file mode 100644 index 0000000..860b4f1 Binary files /dev/null and b/assets/images/githubdocker/3.png differ diff --git a/assets/images/jekyll-logo.png b/assets/images/jekyll-logo.png new file mode 100644 index 0000000..d668a58 Binary files /dev/null and b/assets/images/jekyll-logo.png differ diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 0000000..11d011e Binary files /dev/null and b/assets/images/logo.png differ diff --git a/assets/images/markdown-logo.png b/assets/images/markdown-logo.png new file mode 100644 index 0000000..f646fb9 Binary files /dev/null and b/assets/images/markdown-logo.png differ diff --git a/assets/images/nginx-logo.png b/assets/images/nginx-logo.png new file mode 100644 index 0000000..51effea Binary files /dev/null and b/assets/images/nginx-logo.png differ diff --git a/assets/images/pirate.jpg b/assets/images/pirate.jpg new file mode 100644 index 0000000..4cdcbbf Binary files /dev/null and b/assets/images/pirate.jpg differ diff --git a/assets/images/pirate_logo.png b/assets/images/pirate_logo.png new file mode 100644 index 0000000..34aef67 Binary files /dev/null and b/assets/images/pirate_logo.png differ diff --git a/assets/images/portainer-logo.png b/assets/images/portainer-logo.png new file mode 100644 index 0000000..6331853 Binary files /dev/null and b/assets/images/portainer-logo.png differ diff --git a/assets/images/portainer-small-logo.png b/assets/images/portainer-small-logo.png new file mode 100644 index 0000000..035cbd5 Binary files /dev/null and b/assets/images/portainer-small-logo.png differ diff --git a/assets/images/portainer_stacks/1.jpg b/assets/images/portainer_stacks/1.jpg new file mode 100644 index 0000000..93e9609 Binary files /dev/null and b/assets/images/portainer_stacks/1.jpg differ diff --git a/assets/images/portainer_stacks/10.jpg b/assets/images/portainer_stacks/10.jpg new file mode 100644 index 0000000..d648390 Binary files /dev/null and b/assets/images/portainer_stacks/10.jpg differ diff --git a/assets/images/portainer_stacks/11.jpg b/assets/images/portainer_stacks/11.jpg new file mode 100644 index 0000000..9fadee4 Binary files /dev/null and b/assets/images/portainer_stacks/11.jpg differ diff --git a/assets/images/portainer_stacks/12.jpg b/assets/images/portainer_stacks/12.jpg new file mode 100644 index 0000000..ac72aa2 Binary files /dev/null and b/assets/images/portainer_stacks/12.jpg differ diff --git a/assets/images/portainer_stacks/13.jpg b/assets/images/portainer_stacks/13.jpg new file mode 100644 index 0000000..9052d7a Binary files /dev/null and b/assets/images/portainer_stacks/13.jpg differ diff --git a/assets/images/portainer_stacks/14.jpg b/assets/images/portainer_stacks/14.jpg new file mode 100644 index 0000000..e3b8cb4 Binary files /dev/null and b/assets/images/portainer_stacks/14.jpg differ diff --git a/assets/images/portainer_stacks/15.jpg b/assets/images/portainer_stacks/15.jpg new file mode 100644 index 0000000..8940783 Binary files /dev/null and b/assets/images/portainer_stacks/15.jpg differ diff --git a/assets/images/portainer_stacks/2.jpg b/assets/images/portainer_stacks/2.jpg new file mode 100644 index 0000000..81912f8 Binary files /dev/null and b/assets/images/portainer_stacks/2.jpg differ diff --git a/assets/images/portainer_stacks/3.jpg b/assets/images/portainer_stacks/3.jpg new file mode 100644 index 0000000..7c71f89 Binary files /dev/null and b/assets/images/portainer_stacks/3.jpg differ diff --git a/assets/images/portainer_stacks/4.jpg b/assets/images/portainer_stacks/4.jpg new file mode 100644 index 0000000..184fe8d Binary files /dev/null and b/assets/images/portainer_stacks/4.jpg differ diff --git a/assets/images/portainer_stacks/5.jpg b/assets/images/portainer_stacks/5.jpg new file mode 100644 index 0000000..0b24563 Binary files /dev/null and b/assets/images/portainer_stacks/5.jpg differ diff --git a/assets/images/portainer_stacks/6.jpg b/assets/images/portainer_stacks/6.jpg new file mode 100644 index 0000000..782340c Binary files /dev/null and b/assets/images/portainer_stacks/6.jpg differ diff --git a/assets/images/portainer_stacks/7.jpg b/assets/images/portainer_stacks/7.jpg new file mode 100644 index 0000000..0b76c1b Binary files /dev/null and b/assets/images/portainer_stacks/7.jpg differ diff --git a/assets/images/portainer_stacks/8.jpg b/assets/images/portainer_stacks/8.jpg new file mode 100644 index 0000000..5685962 Binary files /dev/null and b/assets/images/portainer_stacks/8.jpg differ diff --git a/assets/images/portainer_stacks/9.jpg b/assets/images/portainer_stacks/9.jpg new file mode 100644 index 0000000..5d8e512 Binary files /dev/null and b/assets/images/portainer_stacks/9.jpg differ diff --git a/assets/images/proxmox-logo.png b/assets/images/proxmox-logo.png new file mode 100644 index 0000000..1593624 Binary files /dev/null and b/assets/images/proxmox-logo.png differ diff --git a/assets/images/proxmox-small-logo.png b/assets/images/proxmox-small-logo.png new file mode 100644 index 0000000..91fc564 Binary files /dev/null and b/assets/images/proxmox-small-logo.png differ diff --git a/assets/images/skull.png b/assets/images/skull.png new file mode 100644 index 0000000..68e6f20 Binary files /dev/null and b/assets/images/skull.png differ diff --git a/assets/images/terminallogo.png b/assets/images/terminallogo.png new file mode 100644 index 0000000..11d011e Binary files /dev/null and b/assets/images/terminallogo.png differ diff --git a/assets/images/tuya-logo.png b/assets/images/tuya-logo.png new file mode 100644 index 0000000..dd877c7 Binary files /dev/null and b/assets/images/tuya-logo.png differ diff --git a/assets/images/watchtower-logo.png b/assets/images/watchtower-logo.png new file mode 100644 index 0000000..b445fa9 Binary files /dev/null and b/assets/images/watchtower-logo.png differ diff --git a/assets/js/jekyll-search.js b/assets/js/jekyll-search.js new file mode 100644 index 0000000..d884a24 --- /dev/null +++ b/assets/js/jekyll-search.js @@ -0,0 +1 @@ +!function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o=0}var self=this;self.matches=function(string,crit){return"string"!=typeof string?!1:(string=string.trim(),doMatch(string,crit))}}module.exports=new LiteralSearchStrategy},{}],4:[function(require,module){module.exports=function(){function findMatches(store,crit,strategy){for(var data=store.get(),i=0;i{title}',noResultsText:"No results found",limit:10,fuzzy:!1};self.init=function(_opt){validateOptions(_opt),assignOptions(_opt),isJSON(opt.dataSource)?initWithJSON(opt.dataSource):initWithURL(opt.dataSource)}}var Searcher=require("./Searcher"),Templater=require("./Templater"),Store=require("./Store"),JSONLoader=require("./JSONLoader"),searcher=new Searcher,templater=new Templater,store=new Store,jsonLoader=new JSONLoader;window.SimpleJekyllSearch=new SimpleJekyllSearch}(window,document)},{"./JSONLoader":1,"./Searcher":4,"./Store":5,"./Templater":6}]},{},[7]); diff --git a/assets/js/jquery.mmenu.min.all.js b/assets/js/jquery.mmenu.min.all.js new file mode 100644 index 0000000..0f3068c --- /dev/null +++ b/assets/js/jquery.mmenu.min.all.js @@ -0,0 +1,69 @@ +/* + * jQuery mmenu v4.3.6 + * @requires jQuery 1.7.0 or later + * + * mmenu.frebsite.nl + * + * Copyright (c) Fred Heusschen + * www.frebsite.nl + * + * Dual licensed under the MIT license: + * http://en.wikipedia.org/wiki/MIT_License + */ +!function(e){function n(n,s,t){if(t){if("object"!=typeof n&&(n={}),"boolean"!=typeof n.isMenu){var o=t.children();n.isMenu=1==o.length&&o.is(s.panelNodetype)}return n}n=e.extend(!0,{},e[i].defaults,n),("top"==n.position||"bottom"==n.position)&&("back"==n.zposition||"next"==n.zposition)&&(e[i].deprecated('Using position "'+n.position+'" in combination with zposition "'+n.zposition+'"','zposition "front"'),n.zposition="front");for(var a=["position","zposition","modal","moveBackground"],l=0,d=a.length;d>l;l++)"undefined"!=typeof n[a[l]]&&(e[i].deprecated('The option "'+a[l]+'"',"offCanvas."+a[l]),n.offCanvas=n.offCanvas||{},n.offCanvas[a[l]]=n[a[l]]);return n}function s(n){n=e.extend(!0,{},e[i].configuration,n);for(var s=["panel","list","selected","label","spacer"],t=0,o=s.length;o>t;t++)"undefined"!=typeof n[s[t]+"Class"]&&(e[i].deprecated('The configuration option "'+s[t]+'Class"',"classNames."+s[t]),n.classNames[s[t]]=n[s[t]+"Class"]);if("undefined"!=typeof n.counterClass&&(e[i].deprecated('The configuration option "counterClass"',"classNames.counters.counter"),n.classNames.counters=n.classNames.counters||{},n.classNames.counters.counter=n.counterClass),"undefined"!=typeof n.collapsedClass&&(e[i].deprecated('The configuration option "collapsedClass"',"classNames.labels.collapsed"),n.classNames.labels=n.classNames.labels||{},n.classNames.labels.collapsed=n.collapsedClass),"undefined"!=typeof n.header)for(var s=["panelHeader","panelNext","panelPrev"],t=0,o=s.length;o>t;t++)"undefined"!=typeof n.header[s[t]+"Class"]&&(e[i].deprecated('The configuration option "header.'+s[t]+'Class"',"classNames.header."+s[t]),n.classNames.header=n.classNames.header||{},n.classNames.header[s[t]]=n.header[s[t]+"Class"]);for(var s=["pageNodetype","pageSelector","menuWrapperSelector","menuInjectMethod"],t=0,o=s.length;o>t;t++)"undefined"!=typeof n[s[t]]&&(e[i].deprecated('The configuration option "'+s[t]+'"',"offCanvas."+s[t]),n.offCanvas=n.offCanvas||{},n.offCanvas[s[t]]=n[s[t]]);return n}function t(){r=!0,u.$wndw=e(window),u.$html=e("html"),u.$body=e("body"),e.each([a,l,d],function(e,n){n.add=function(e){e=e.split(" ");for(var s in e)n[e[s]]=n.mm(e[s])}}),a.mm=function(e){return"mm-"+e},a.add("wrapper menu ismenu inline panel list subtitle selected label spacer current highest hidden opened subopened subopen fullsubopen subclose"),a.umm=function(e){return"mm-"==e.slice(0,3)&&(e=e.slice(3)),e},l.mm=function(e){return"mm-"+e},l.add("parent"),d.mm=function(e){return e+".mm"},d.add("toggle open close setSelected transitionend webkitTransitionEnd mousedown mouseup touchstart touchmove touchend scroll resize click keydown keyup"),e[i]._c=a,e[i]._d=l,e[i]._e=d,e[i].glbl=u}var i="mmenu",o="4.3.6";if(!e[i]){var a={},l={},d={},r=!1,u={$wndw:null,$html:null,$body:null};e[i]=function(e,n,s){return this.$menu=e,this.opts=n,this.conf=s,this.vars={},this._init(),this},e[i].uniqueId=0,e[i].prototype={_init:function(){if(this.opts=n(this.opts,this.conf,this.$menu),this._initMenu(),this._initPanels(),this._initLinks(),this._bindCustomEvents(),e[i].addons)for(var s=0;s li",this.$menu);this.__refactorClass(s,this.conf.classNames.selected,"selected"),this.__refactorClass(s,this.conf.classNames.label,"label"),this.__refactorClass(s,this.conf.classNames.spacer,"spacer"),s.off(d.setSelected).on(d.setSelected,function(n,t){n.stopPropagation(),s.removeClass(a.selected),"boolean"!=typeof t&&(t=!0),t&&e(this).addClass(a.selected)}),this.__refactorClass(e("."+this.conf.classNames.panel,this.$menu),this.conf.classNames.panel,"panel"),this.$menu.children().filter(this.conf.panelNodetype).add(this.$menu.find("."+a.list).children().children().filter(this.conf.panelNodetype)).addClass(a.panel);var t=e("."+a.panel,this.$menu);t.each(function(){var s=e(this),t=s.attr("id")||n.__getUniqueId();s.attr("id",t)}),t.find("."+a.panel).each(function(){var s=e(this),t=s.is("ul, ol")?s:s.find("ul ,ol").first(),i=s.parent(),o=i.find("> a, > span"),d=i.closest("."+a.panel);if(s.data(l.parent,i),i.parent().is("."+a.list)){var r=e('').insertBefore(o);o.is("a")||r.addClass(a.fullsubopen),n.opts.slidingSubmenus&&t.prepend('
  • '+o.text()+"
  • ")}});var i=this.opts.slidingSubmenus?d.open:d.toggle;if(t.each(function(){var s=e(this),t=s.attr("id");e('a[href="#'+t+'"]',n.$menu).off(d.click).on(d.click,function(e){e.preventDefault(),s.trigger(i)})}),this.opts.slidingSubmenus){var o=e("."+a.list+" > li."+a.selected,this.$menu);o.parents("li").removeClass(a.selected).end().add(o.parents("li")).each(function(){var n=e(this),s=n.find("> ."+a.panel);s.length&&(n.parents("."+a.panel).addClass(a.subopened),s.addClass(a.opened))}).closest("."+a.panel).addClass(a.opened).parents("."+a.panel).addClass(a.subopened)}else{var o=e("li."+a.selected,this.$menu);o.parents("li").removeClass(a.selected).end().add(o.parents("li")).addClass(a.opened)}var r=t.filter("."+a.opened);r.length||(r=t.first()),r.addClass(a.opened).last().addClass(a.current),this.opts.slidingSubmenus&&t.not(r.last()).addClass(a.hidden).end().find("."+a.panel).appendTo(this.$menu)},_initLinks:function(){var n=this;e("."+a.list+" > li > a",this.$menu).not("."+a.subopen).not("."+a.subclose).not('[rel="external"]').not('[target="_blank"]').off(d.click).on(d.click,function(s){var t=e(this),i=t.attr("href")||"";n.__valueOrFn(n.opts.onClick.setSelected,t)&&t.parent().trigger(d.setSelected);var o=n.__valueOrFn(n.opts.onClick.preventDefault,t,"#"==i.slice(0,1));o&&s.preventDefault(),n.__valueOrFn(n.opts.onClick.blockUI,t,!o)&&u.$html.addClass(a.blocking),n.__valueOrFn(n.opts.onClick.close,t,o)&&n.$menu.triggerHandler(d.close)})},_openSubmenuHorizontal:function(n){if(n.hasClass(a.current))return!1;var s=e("."+a.panel,this.$menu),t=s.filter("."+a.current);return s.removeClass(a.highest).removeClass(a.current).not(n).not(t).addClass(a.hidden),n.hasClass(a.opened)?t.addClass(a.highest).removeClass(a.opened).removeClass(a.subopened):(n.addClass(a.highest),t.addClass(a.subopened)),n.removeClass(a.hidden).addClass(a.current),setTimeout(function(){n.removeClass(a.subopened).addClass(a.opened)},this.conf.openingInterval),"open"},_update:function(e){if(this.updates||(this.updates=[]),"function"==typeof e)this.updates.push(e);else for(var n=0,s=this.updates.length;s>n;n++)this.updates[n].call(this,e)},__valueOrFn:function(e,n,s){return"function"==typeof e?e.call(n[0]):"undefined"==typeof e&&"undefined"!=typeof s?s:e},__refactorClass:function(e,n,s){e.filter("."+n).removeClass(n).addClass(a[s])},__transitionend:function(e,n,s){var t=!1,i=function(){t||n.call(e[0]),t=!0};e.one(d.transitionend,i),e.one(d.webkitTransitionEnd,i),setTimeout(i,1.1*s)},__getUniqueId:function(){return a.mm(e[i].uniqueId++)}},e.fn[i]=function(o,a){return r||t(),o=n(o,a),a=s(a),this.each(function(){var n=e(this);n.data(i)||n.data(i,new e[i](n,o,a))})},e[i].version=o,e[i].defaults={classes:"",slidingSubmenus:!0,onClick:{setSelected:!0}},e[i].configuration={panelNodetype:"ul, ol, div",transitionDuration:400,openingInterval:25,classNames:{panel:"Panle",list:"List",selected:"Selected",label:"Label",spacer:"Spacer"}},function(){var n=window.document,s=window.navigator.userAgent,t="ontouchstart"in n,o="WebkitOverflowScrolling"in n.documentElement.style,a=function(){return s.indexOf("Android")>=0?2.4>parseFloat(s.slice(s.indexOf("Android")+8)):!1}();e[i].support={touch:t,oldAndroidBrowser:a,overflowscrolling:function(){return t?o?!0:a?!1:!0:!0}()}}(),e[i].debug=function(){},e[i].deprecated=function(e,n){"undefined"!=typeof console&&"undefined"!=typeof console.warn&&console.warn("MMENU: "+e+" is deprecated, use "+n+" instead.")}}}(jQuery); +/* + * jQuery mmenu offCanvas addon + * mmenu.frebsite.nl + * + * Copyright (c) Fred Heusschen + * www.frebsite.nl + */ +!function(e){function o(e){return e}function t(e){return"string"!=typeof e.pageSelector&&(e.pageSelector="> "+e.pageNodetype),e}function n(){d=!0,s=e[r]._c,i=e[r]._d,a=e[r]._e,s.add("offcanvas modal background opening blocker page"),i.add("style"),a.add("opening opened closing closed setPage"),p=e[r].glbl,p.$allMenus=(p.$allMenus||e()).add(this.$menu),p.$wndw.on(a.keydown,function(e){return p.$html.hasClass(s.opened)&&9==e.keyCode?(e.preventDefault(),!1):void 0});var o=0;p.$wndw.on(a.resize,function(e,t){if(t||p.$html.hasClass(s.opened)){var n=p.$wndw.height();(t||n!=o)&&(o=n,p.$page.css("minHeight",n))}})}var s,i,a,p,r="mmenu",l="offCanvas",d=!1;e[r].prototype["_addon_"+l]=function(){if(!this.opts[l])return this;d||n(),this.opts[l]=o(this.opts[l]),this.conf[l]=t(this.conf[l]),"boolean"!=typeof this.vars.opened&&(this.vars.opened=!1);var e=this.opts[l],i=this.conf[l],a=[s.offcanvas];"left"!=e.position&&a.push(s.mm(e.position)),"back"!=e.zposition&&a.push(s.mm(e.zposition)),this.$menu.addClass(a.join(" ")).parent().removeClass(s.wrapper),this[l+"_initPage"](p.$page),this[l+"_initBlocker"](),this[l+"_initOpenClose"](),this[l+"_bindCustomEvents"](),this.$menu[i.menuInjectMethod+"To"](i.menuWrapperSelector)},e[r].addons=e[r].addons||[],e[r].addons.push(l),e[r].defaults[l]={position:"left",zposition:"back",modal:!1,moveBackground:!0},e[r].configuration[l]={pageNodetype:"div",pageSelector:null,menuWrapperSelector:"body",menuInjectMethod:"prepend"},e[r].prototype.open=function(){if(this.vars.opened)return!1;var e=this;return this._openSetup(),setTimeout(function(){e._openFinish()},25),"open"},e[r].prototype._openSetup=function(){p.$allMenus.not(this.$menu).trigger(a.close),p.$page.data(i.style,p.$page.attr("style")||""),p.$wndw.trigger(a.resize,[!0]);var e=[s.opened];this.opts[l].modal&&e.push(s.modal),this.opts[l].moveBackground&&e.push(s.background),"left"!=this.opts[l].position&&e.push(s.mm(this.opts[l].position)),"back"!=this.opts[l].zposition&&e.push(s.mm(this.opts[l].zposition)),this.opts.classes&&e.push(this.opts.classes),p.$html.addClass(e.join(" ")),this.$menu.addClass(s.current+" "+s.opened)},e[r].prototype._openFinish=function(){var e=this;this.__transitionend(p.$page,function(){e.$menu.trigger(a.opened)},this.conf.transitionDuration),this.vars.opened=!0,p.$html.addClass(s.opening),this.$menu.trigger(a.opening)},e[r].prototype.close=function(){if(!this.vars.opened)return!1;var e=this;return this.__transitionend(p.$page,function(){e.$menu.removeClass(s.current).removeClass(s.opened),p.$html.removeClass(s.opened).removeClass(s.modal).removeClass(s.background).removeClass(s.mm(e.opts[l].position)).removeClass(s.mm(e.opts[l].zposition)),e.opts.classes&&p.$html.removeClass(e.opts.classes),p.$page.attr("style",p.$page.data(i.style)),e.vars.opened=!1,e.$menu.trigger(a.closed)},this.conf.transitionDuration),p.$html.removeClass(s.opening),this.$menu.trigger(a.closing),"close"},e[r].prototype[l+"_initBlocker"]=function(){var o=this;p.$blck||(p.$blck=e('
    ').appendTo(p.$body)),p.$blck.off(a.touchstart).on(a.touchstart,function(e){e.preventDefault(),e.stopPropagation(),p.$blck.trigger(a.mousedown)}).on(a.mousedown,function(e){e.preventDefault(),p.$html.hasClass(s.modal)||o.close()})},e[r].prototype[l+"_initPage"]=function(o){o||(o=e(this.conf[l].pageSelector,p.$body),o.length>1&&(e[r].debug("Multiple nodes found for the page-node, all nodes are wrapped in one <"+this.conf[l].pageNodetype+">."),o=o.wrapAll("<"+this.conf[l].pageNodetype+" />").parent())),o.addClass(s.page),p.$page=o},e[r].prototype[l+"_initOpenClose"]=function(){var o=this,t=this.$menu.attr("id");t&&t.length&&(this.conf.clone&&(t=s.umm(t)),e('a[href="#'+t+'"]').off(a.click).on(a.click,function(e){e.preventDefault(),o.open()}));var t=p.$page.attr("id");t&&t.length&&e('a[href="#'+t+'"]').on(a.click,function(e){e.preventDefault(),o.close()})},e[r].prototype[l+"_bindCustomEvents"]=function(){var e=this,o=a.open+" "+a.opening+" "+a.opened+" "+a.close+" "+a.closing+" "+a.closed+" "+a.setPage;this.$menu.off(o).on(o,function(e){e.stopPropagation()}),this.$menu.on(a.open,function(){e.open()}).on(a.close,function(){e.close()}).on(a.setPage,function(o,t){e[l+"_initPage"](t),e[l+"_initOpenClose"]()})}}(jQuery); +/* + * jQuery mmenu counters addon + * mmenu.frebsite.nl + * + * Copyright (c) Fred Heusschen + * www.frebsite.nl + */ +!function(t){function n(n){return"boolean"==typeof n&&(n={add:n,update:n}),"object"!=typeof n&&(n={}),n=t.extend(!0,{},t[i].defaults[c],n),n.count&&(t[i].deprecated('the option "count" for counters','the option "update"'),n.update=n.count),n}function e(t){return t}function o(){d=!0,s=t[i]._c,a=t[i]._d,u=t[i]._e,s.add("counter search noresultsmsg"),r=t[i].glbl}var s,a,u,r,i="mmenu",c="counters",d=!1;t[i].prototype["_addon_"+c]=function(){d||o(),this.opts[c]=n(this.opts[c]),this.conf[c]=e(this.conf[c]);var u=this,r=this.opts[c];if(this.conf[c],this.__refactorClass(t("em",this.$menu),this.conf.classNames[c].counter,"counter"),r.add&&t("."+s.panel,this.$menu).each(function(){var n=t(this),e=n.data(a.parent);if(e){var o=t(''),u=e.find("> a."+s.subopen);u.parent().find("em."+s.counter).length||u.before(o)}}),r.update){var i=t("em."+s.counter,this.$menu);i.each(function(){var n=t(this),e=t(n.next().attr("href"),u.$menu);if(e.is("."+s.list)||(e=e.find("> ."+s.list)),e.length){var o=function(){var t=e.children().not("."+s.label).not("."+s.subtitle).not("."+s.hidden).not("."+s.search).not("."+s.noresultsmsg);n.html(t.length)};o(),u._update(o)}})}},t[i].addons=t[i].addons||[],t[i].addons.push(c),t[i].defaults[c]={add:!1,update:!1},t[i].configuration.classNames[c]={counter:"Counter"}}(jQuery); +/* + * jQuery mmenu dragOpen addon + * mmenu.frebsite.nl + * + * Copyright (c) Fred Heusschen + * www.frebsite.nl + */ +!function(e){function t(t){return"boolean"==typeof t&&(t={open:t}),"object"!=typeof t&&(t={}),t=e.extend(!0,{},e[p].defaults[g],t)}function a(e){return e}function o(){f=!0,s=e[p]._c,i=e[p]._d,r=e[p]._e,s.add("dragging"),r.add("dragleft dragright dragup dragdown dragend"),d=e[p].glbl}function n(e,t,a){return t>e&&(e=t),e>a&&(e=a),e}var s,i,r,d,p="mmenu",g="dragOpen",f=!1;e[p].prototype["_addon_"+g]=function(){if(e.fn.hammer){f||o(),this.opts[g]=t(this.opts[g]),this.conf[g]=a(this.conf[g]);var i=this,p=this.opts[g],h=this.conf[g];if(p.open){var c=0,l=!1,u=0,v=0,m="width";switch(this.opts.offCanvas.position){case"left":case"right":m="width";break;default:m="height"}switch(this.opts.offCanvas.position){case"left":var _={events:r.dragleft+" "+r.dragright,open_dir:"right",close_dir:"left",delta:"deltaX",page:"pageX",negative:!1};break;case"right":var _={events:r.dragleft+" "+r.dragright,open_dir:"left",close_dir:"right",delta:"deltaX",page:"pageX",negative:!0};break;case"top":var _={events:r.dragup+" "+r.dragdown,open_dir:"down",close_dir:"up",delta:"deltaY",page:"pageY",negative:!1};break;case"bottom":var _={events:r.dragup+" "+r.dragdown,open_dir:"up",close_dir:"down",delta:"deltaY",page:"pageY",negative:!0}}var w=this.__valueOrFn(p.pageNode,this.$menu,d.$page);"string"==typeof w&&(w=e(w));var b=d.$page.find("."+s.mm("fixed-top")+", ."+s.mm("fixed-bottom")),$=d.$page;switch(this.opts.offCanvas.zposition){case"back":$=$.add(b);break;case"front":$=this.$menu;break;case"next":$=$.add(this.$menu).add(b)}w.hammer().on(r.touchstart+" "+r.mousedown,function(e){if("touchstart"==e.type)var t=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a=t[_.page];else if("mousedown"==e.type)var a=e[_.page];switch(i.opts.offCanvas.position){case"right":case"bottom":a>=d.$wndw[m]()-p.maxStartPos&&(c=1);break;default:a<=p.maxStartPos&&(c=1)}}).on(_.events+" "+r.dragend,function(e){c>0&&(e.gesture.preventDefault(),e.stopPropagation())}).on(_.events,function(e){var t=_.negative?-e.gesture[_.delta]:e.gesture[_.delta];if(l=t>u?_.open_dir:_.close_dir,u=t,u>p.threshold&&1==c){if(d.$html.hasClass(s.opened))return;c=2,i._openSetup(),i.vars.opened=!0,d.$html.addClass(s.dragging),v=n(d.$wndw[m]()*h[m].perc,h[m].min,h[m].max)}2==c&&$.css(i.opts.offCanvas.position,n(u,10,v)-("front"==i.opts.offCanvas.zposition?v:0))}).on(r.dragend,function(){2==c&&(d.$html.removeClass(s.dragging),$.css(i.opts.offCanvas.position,""),l==_.open_dir?i._openFinish():i.close()),c=0})}}},e[p].addons=e[p].addons||[],e[p].addons.push(g),e[p].defaults[g]={open:!1,maxStartPos:100,threshold:50},e[p].configuration[g]={width:{perc:.8,min:140,max:440},height:{perc:.8,min:140,max:880}}}(jQuery); +/* + * jQuery mmenu header addon + * mmenu.frebsite.nl + * + * Copyright (c) Fred Heusschen + * www.frebsite.nl + */ +!function(e){function t(t){return"boolean"==typeof t&&(t={add:t,update:t}),"object"!=typeof t&&(t={}),t=e.extend(!0,{},e[i].defaults[h],t)}function a(e){return e}function n(){c=!0,s=e[i]._c,r=e[i]._d,o=e[i]._e,s.add("header hasheader prev next title titletext"),d=e[i].glbl}var s,r,o,d,i="mmenu",h="header",c=!1;e[i].prototype["_addon_"+h]=function(){c||n(),this.opts[h]=t(this.opts[h]),this.conf[h]=a(this.conf[h]);var r=this,i=this.opts[h];if(this.conf[h],i.add){var l=i.content?i.content:'';e('
    ').prependTo(this.$menu).append(l)}var f=e("div."+s.header,this.$menu);if(f.length&&this.$menu.addClass(s.hasheader),i.update&&f.length){var p=f.find("."+s.title),u=f.find("."+s.prev),v=f.find("."+s.next),m=!1;d.$page&&(m="#"+d.$page.attr("id")),u.add(v).on(o.click,function(t){t.preventDefault(),t.stopPropagation();var a=e(this).attr("href");"#"!==a&&(m&&a==m?r.$menu.trigger(o.close):e(a,r.$menu).trigger(o.open))}),e("."+s.panel,this.$menu).each(function(){var t=e(this),a=e("."+r.conf.classNames[h].panelHeader,t).text(),n=e("."+r.conf.classNames[h].panelPrev,t).attr("href"),d=e("."+r.conf.classNames[h].panelNext,t).attr("href");a||(a=e("."+s.subclose,t).text()),a||(a=i.title),n||(n=e("."+s.subclose,t).attr("href"));var c=function(){p[a?"show":"hide"]().text(a),u[n?"show":"hide"]().attr("href",n),v[d?"show":"hide"]().attr("href",d)};t.on(o.open,function(){c()}),t.hasClass(s.current)&&c()})}},e[i].addons=e[i].addons||[],e[i].addons.push(h),e[i].defaults[h]={add:!1,content:!1,update:!1,title:"Menu"},e[i].configuration.classNames[h]={panelHeader:"Header",panelNext:"Next",panelPrev:"Prev"}}(jQuery); +/* + * jQuery mmenu labels addon + * mmenu.frebsite.nl + * + * Copyright (c) Fred Heusschen + * www.frebsite.nl + */ +!function(l){function s(s){return"boolean"==typeof s&&(s={collapse:s}),"object"!=typeof s&&(s={}),s=l.extend(!0,{},l[p].defaults[d],s)}function e(l){return l}function a(){i=!0,o=l[p]._c,n=l[p]._d,t=l[p]._e,o.add("collapsed"),c=l[p].glbl}var o,n,t,c,p="mmenu",d="labels",i=!1;l[p].prototype["_addon_"+d]=function(){i||a(),this.opts[d]=s(this.opts[d]),this.conf[d]=e(this.conf[d]);var n=this.opts[d];this.conf[d],n.collapse&&(this.__refactorClass(l("li",this.$menu),this.conf.classNames[d].collapsed,"collapsed"),l("."+o.label,this.$menu).each(function(){var s=l(this),e=s.nextUntil("."+o.label,"all"==n.collapse?null:"."+o.collapsed);"all"==n.collapse&&(s.addClass(o.opened),e.removeClass(o.collapsed)),e.length&&(s.wrapInner(""),l('').prependTo(s).on(t.click,function(l){l.preventDefault(),s.toggleClass(o.opened),e[s.hasClass(o.opened)?"removeClass":"addClass"](o.collapsed)}))}))},l[p].addons=l[p].addons||[],l[p].addons.push(d),l[p].defaults[d]={collapse:!1},l[p].configuration.classNames[d]={collapsed:"Collapsed"}}(jQuery); +/* + * jQuery mmenu searchfield addon + * mmenu.frebsite.nl + * + * Copyright (c) Fred Heusschen + * www.frebsite.nl + */ +!function(e){function s(s){return"boolean"==typeof s&&(s={add:s,search:s}),"object"!=typeof s&&(s={}),s=e.extend(!0,{},e[d].defaults[c],s),"boolean"!=typeof s.showLinksOnly&&(s.showLinksOnly="menu"==s.addTo),s}function n(e){return e}function t(){h=!0,o=e[d]._c,r=e[d]._d,i=e[d]._e,o.add("search hassearch noresultsmsg noresults nosubresults counter"),i.add("search reset change"),l=e[d].glbl}function a(e){switch(e){case 9:case 16:case 17:case 18:case 37:case 38:case 39:case 40:return!0}return!1}var o,r,i,l,d="mmenu",c="searchfield",h=!1;e[d].prototype["_addon_"+c]=function(){h||t(),this.opts[c]=s(this.opts[c]),this.conf[c]=n(this.conf[c]);var l=this,d=this.opts[c];if(this.conf[c],d.add){switch(d.addTo){case"menu":var u=this.$menu;break;case"panels":var u=e("."+o.panel,this.$menu);break;default:var u=e(d.addTo,this.$menu).filter("."+o.panel)}u.length&&u.each(function(){var s=e(this),n=s.is("."+o.list)?"li":"div",t=e("<"+n+' class="'+o.search+'" />');if(t.append(''),s.is("."+o.menu))t.prependTo(l.$menu);else{var a=s.children().first(),r=a.is("."+o.subtitle)?"After":"Before";t["insert"+r](a)}d.noResults&&(s.is("."+o.menu)&&(s=s.find("."+o.panel).first()),n=s.is("."+o.list)?"li":"div",e("<"+n+' class="'+o.noresultsmsg+'" />').html(d.noResults).appendTo(s))})}if(this.$menu.children("div."+o.search).length&&this.$menu.addClass(o.hassearch),d.search){var f=e("."+o.search,this.$menu);f.length&&f.each(function(){var s=e(this);if("menu"==d.addTo)var n=e("."+o.panel,l.$menu),t=l.$menu;else var n=s.closest("."+o.panel),t=n;var c=n.add(n.children("."+o.list)),h=s.find("input"),u=e("> li",c),f=u.filter("."+o.label),p=u.not("."+o.subtitle).not("."+o.label).not("."+o.search).not("."+o.noresultsmsg),m="> a";d.showLinksOnly||(m+=", > span"),h.off(i.keyup+" "+i.change).on(i.keyup,function(e){a(e.keyCode)||s.trigger(i.search)}).on(i.change,function(){s.trigger(i.search)}),s.off(i.reset+" "+i.search).on(i.reset+" "+i.search,function(e){e.stopPropagation()}).on(i.reset,function(){s.trigger(i.search,[""])}).on(i.search,function(s,a){"string"==typeof a?h.val(a):a=h.val(),a=a.toLowerCase(),n.scrollTop(0),p.add(f).addClass(o.hidden),p.each(function(){var s=e(this);e(m,s).text().toLowerCase().indexOf(a)>-1&&s.add(s.prevAll("."+o.label).first()).removeClass(o.hidden)}),e(n.get().reverse()).each(function(s){var n=e(this),t=n.data(r.parent);if(t){var a=n.add(n.find("> ."+o.list)).find("> li").not("."+o.subtitle).not("."+o.search).not("."+o.noresultsmsg).not("."+o.label).not("."+o.hidden);a.length?t.removeClass(o.hidden).removeClass(o.nosubresults).prevAll("."+o.label).first().removeClass(o.hidden):"menu"==d.addTo&&(n.hasClass(o.opened)&&setTimeout(function(){t.trigger(i.open)},1.5*(s+1)*l.conf.openingInterval),t.addClass(o.nosubresults))}}),t[p.not("."+o.hidden).length?"removeClass":"addClass"](o.noresults),l._update()})})}},e[d].addons=e[d].addons||[],e[d].addons.push(c),e[d].defaults[c]={add:!1,addTo:"menu",search:!1,placeholder:"Search",noResults:"No results found."}}(jQuery); +/* + * jQuery mmenu toggles addon + * mmenu.frebsite.nl + * + * Copyright (c) Fred Heusschen + * www.frebsite.nl + */ +!function(t){function n(t){return t}function s(t){return t}function e(){g=!0,o=t[r]._c,i=t[r]._d,a=t[r]._e,o.add("toggle"),l=t[r].glbl}var o,i,a,l,r="mmenu",d="toggles",g=!1;t[r].prototype["_addon_"+d]=function(){g||e(),this.opts[d]=n(this.opts[d]),this.conf[d]=s(this.conf[d]);var i=this;this.opts[d],this.conf[d],this.__refactorClass(t("input",this.$menu),this.conf.classNames[d].toggle,"toggle"),t("."+o.toggle,this.$menu).each(function(){var n=t(this),s=n.parent(),e=n.attr("id")||i.__getUniqueId();n.attr("id",e),s.prepend(n),t('').insertBefore(s.children().last())})},t[r].addons=t[r].addons||[],t[r].addons.push(d),t[r].defaults[d]={},t[r].configuration.classNames[d]={toggle:"Toggle"}}(jQuery); diff --git a/by-categories.html b/by-categories.html new file mode 100644 index 0000000..fff7010 --- /dev/null +++ b/by-categories.html @@ -0,0 +1,42 @@ +--- +layout: default +make-smaller-titles: true +--- + + +
    +
    + +

    {{ site.author_name }}

    +

    All posts

    +

    grouped by + + + +

    + {% for category in site.categories %} +
    +

    {{ category | first }}

    +
      + {% for posts in category %} + {% for post in posts %} +
    • + {{ post.title }} + +
    • + {% endfor %} + {% endfor %} + +
    +
    + {% endfor %} + +
    +
    diff --git a/by-year.html b/by-year.html new file mode 100644 index 0000000..c65ca53 --- /dev/null +++ b/by-year.html @@ -0,0 +1,55 @@ +--- +layout: default +make-smaller-titles: true +--- + + +
    +
    + +

    {{ site.author_name }}

    +

    All posts

    +

    grouped by + + + +

    + + {% for post in site.posts %} + {% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %} + {% capture next_year %}{{ post.previous.date | date: "%Y" }}{% endcapture %} + + {% if forloop.first %} +
    +

    {{ this_year }}

    +
      + {% endif %} + +
    • + {{ post.title }} + +
    • + {% if forloop.last %} +
    +
    + {% else %} + {% if this_year != next_year %} + +
    +
    +

    {{next_year}}

    +
      + {% endif %} + {% endif %} + + {% endfor %} +
    + +
    diff --git a/favicons/README.md b/favicons/README.md new file mode 100644 index 0000000..99e41a9 --- /dev/null +++ b/favicons/README.md @@ -0,0 +1,8 @@ +# Favicons + +These sample favicons have been generated at http://realfavicongenerator.net/. + +To add your own simply visit http://realfavicongenerator.net/ and +generate a new set of favicons (change the path option to `/favicons/`) +and replace all of the files in this folder. Then update the favicon section in +the [head.html](../_includes/head.html) include with the generated meta tags. diff --git a/favicons/android-chrome-192x192.png b/favicons/android-chrome-192x192.png new file mode 100644 index 0000000..b17a536 Binary files /dev/null and b/favicons/android-chrome-192x192.png differ diff --git a/favicons/android-chrome-512x512.png b/favicons/android-chrome-512x512.png new file mode 100644 index 0000000..d8a302b Binary files /dev/null and b/favicons/android-chrome-512x512.png differ diff --git a/favicons/apple-touch-icon-180x180.png b/favicons/apple-touch-icon-180x180.png new file mode 100644 index 0000000..1ef6029 Binary files /dev/null and b/favicons/apple-touch-icon-180x180.png differ diff --git a/favicons/browserconfig.xml b/favicons/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/favicons/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/favicons/favicon-16x16.png b/favicons/favicon-16x16.png new file mode 100644 index 0000000..eb0569b Binary files /dev/null and b/favicons/favicon-16x16.png differ diff --git a/favicons/favicon-32x32.png b/favicons/favicon-32x32.png new file mode 100644 index 0000000..fff2a5e Binary files /dev/null and b/favicons/favicon-32x32.png differ diff --git a/favicons/favicon.ico b/favicons/favicon.ico new file mode 100644 index 0000000..5cfa27c Binary files /dev/null and b/favicons/favicon.ico differ diff --git a/favicons/mstile-150x150.png b/favicons/mstile-150x150.png new file mode 100644 index 0000000..5b5c21c Binary files /dev/null and b/favicons/mstile-150x150.png differ diff --git a/favicons/safari-pinned-tab.svg b/favicons/safari-pinned-tab.svg new file mode 100644 index 0000000..19ca12b --- /dev/null +++ b/favicons/safari-pinned-tab.svg @@ -0,0 +1,23 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + diff --git a/favicons/site.webmanifest b/favicons/site.webmanifest new file mode 100644 index 0000000..b20abb7 --- /dev/null +++ b/favicons/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/feed.xml b/feed.xml new file mode 100644 index 0000000..ae253f9 --- /dev/null +++ b/feed.xml @@ -0,0 +1,29 @@ +--- +--- + + + + {{ site.title | xml_escape }} + {{ site.description | xml_escape }} + {{ site.url }}{{ site.baseurl }}/ + + {{ site.time | date_to_rfc822 }} + {{ site.time | date_to_rfc822 }} + Jekyll v{{ jekyll.version }} + {% for post in site.posts limit:10 %} + + {{ post.title | xml_escape }} + {{ post.content | xml_escape }} + {{ post.date | date_to_rfc822 }} + {{ post.url | prepend: site.baseurl | prepend: site.url }} + {{ post.url | prepend: site.baseurl | prepend: site.url }} + {% for tag in post.tags %} + {{ tag | xml_escape }} + {% endfor %} + {% for cat in post.categories %} + {{ cat | xml_escape }} + {% endfor %} + + {% endfor %} + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..a8b465d --- /dev/null +++ b/index.html @@ -0,0 +1,55 @@ +--- +layout: default +make-smaller-titles: true +--- + + +
    +
    + +
    + + {% if site.gravatar %} +
    + {{ site.title }} +
    + {% elsif site.profile_pic %} +
    + {{ site.title }} +
    + {% endif %} + +

    {{ site.title }}

    + +
    + {{ site.description }} +
    + + +
    +
    + +
    + +

    Latest Articles

    + +
      + {% for post in site.posts limit: site.post_limit %} + +
    • + {{ post.title }} + +
    • + + {% endfor %} +
    • + more... +
    • +
    + +
    + +
    + +
    +
    diff --git a/search.html b/search.html new file mode 100644 index 0000000..2ffb6bd --- /dev/null +++ b/search.html @@ -0,0 +1,34 @@ +--- +layout: default +--- + +
    +
    + +

    Search

    + +
    + +
    +
      Start typing to see some results
    +
    +
    + +
    +
    + +
    + + + + diff --git a/search.json b/search.json new file mode 100644 index 0000000..31532f0 --- /dev/null +++ b/search.json @@ -0,0 +1,14 @@ +--- +layout: none +--- +[ + {% for post in site.posts %} + { + "title" : "{{ post.title | escape }}", + "category" : "{{ post.category }}", + "tags" : "{{ post.tags | join: ', ' }}", + "url" : "{{ site.baseurl }}{{ post.url }}", + "date" : "{{ post.date }}" + } {% unless forloop.last %},{% endunless %} + {% endfor %} + ]