├── .github ├── pr-commenter.yml └── workflows │ ├── main.yaml │ ├── pr-close.yaml │ └── pr-open.yaml ├── .gitignore ├── Dockerfile ├── Makefile ├── README.md ├── archetypes └── default.md ├── config.toml ├── content ├── .DS_Store ├── img │ ├── .DS_Store │ ├── banner.jpg │ ├── canary-small.jpg │ ├── canary-smaller.jpg │ ├── catalog-small.jpg │ ├── catalog-smaller.jpg │ ├── chaos-small.jpg │ ├── chaos-smaller.jpg │ ├── devops20-small.jpg │ ├── devops20-smaller.jpg │ ├── devops21-small.png │ ├── devops21-smaller.png │ ├── devops22-small.jpg │ ├── devops22-smaller.jpg │ ├── devops23-small.jpg │ ├── devops23-smaller.jpg │ ├── devops24-small.jpg │ ├── devops24-small.png │ ├── devops24-smaller.jpg │ ├── devops24-smaller.png │ ├── devops25-small.jpg │ ├── devops25-small.png │ ├── devops25-smaller.jpg │ ├── devops26-small.jpg │ ├── devops26-smaller.jpg │ ├── youtube-small.png │ └── youtube.png └── posts │ ├── canary.md │ ├── catalog.md │ ├── chaos.md │ ├── devops-20.md │ ├── devops-21.md │ ├── devops-22.md │ ├── devops-23.md │ ├── devops-24.md │ ├── devops-25.md │ ├── devops-26.md │ └── youtube.md ├── devspace.yaml ├── devspace_start.sh ├── helm-values.yaml ├── k3d.yaml ├── kustomize ├── base │ ├── deployment.yaml │ ├── kustomization.yaml │ └── service.yaml └── overlays │ ├── dev │ ├── ingress.yaml │ └── kustomization.yaml │ ├── preview │ ├── ingress.yaml │ └── kustomization.yaml │ └── production │ ├── ingress.yaml │ └── kustomization.yaml ├── layouts └── partials │ └── header.html ├── public ├── .DS_Store ├── 404.html ├── categories │ ├── index.html │ └── index.xml ├── css-dimension │ ├── bg.jpg │ ├── font-awesome.min.css │ ├── ie9.css │ ├── main.css │ ├── noscript.css │ ├── overlay.png │ └── project.css ├── css │ ├── font-awesome.min.css │ ├── ie8.css │ ├── ie9.css │ └── main.css ├── elements.html ├── fonts-dimension │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── images │ ├── devops22-small.jpg │ ├── devops22.jpg │ ├── devops23-small.jpg │ └── viktor.png ├── img │ ├── banner.jpg │ ├── canary-small.jpg │ ├── canary-smaller.jpg │ ├── catalog-small.jpg │ ├── catalog-smaller.jpg │ ├── chaos-small.jpg │ ├── chaos-smaller.jpg │ ├── devops20-small.jpg │ ├── devops20-smaller.jpg │ ├── devops21-small.png │ ├── devops21-smaller.png │ ├── devops22-small.jpg │ ├── devops22-smaller.jpg │ ├── devops23-small.jpg │ ├── devops23-smaller.jpg │ ├── devops24-small.jpg │ ├── devops24-small.png │ ├── devops24-smaller.jpg │ ├── devops24-smaller.png │ ├── devops25-small.jpg │ ├── devops25-small.png │ ├── devops25-smaller.jpg │ ├── devops26-small.jpg │ ├── devops26-smaller.jpg │ ├── pic01.jpg │ ├── pic02.jpg │ ├── pic03.jpg │ ├── pic04.jpg │ ├── pic05.jpg │ ├── pic06.jpg │ ├── youtube-small.png │ └── youtube.png ├── index.html ├── index.xml ├── js-dimension │ ├── jquery.min.js │ ├── main.js │ ├── skel.min.js │ └── util.js ├── js │ ├── ie │ │ ├── backgroundsize.min.htc │ │ ├── html5shiv.js │ │ └── respond.min.js │ ├── jquery.min.js │ ├── jquery.scrollex.min.js │ ├── jquery.scrolly.min.js │ ├── main.js │ ├── skel.min.js │ └── util.js ├── posts │ ├── canary │ │ └── index.html │ ├── catalog │ │ └── index.html │ ├── chaos │ │ └── index.html │ ├── devops-20 │ │ └── index.html │ ├── devops-21 │ │ └── index.html │ ├── devops-22 │ │ └── index.html │ ├── devops-23 │ │ └── index.html │ ├── devops-24 │ │ └── index.html │ ├── devops-25 │ │ └── index.html │ ├── devops-26 │ │ └── index.html │ ├── index.html │ ├── index.xml │ └── youtube │ │ └── index.html ├── sass-dimension │ ├── base │ │ ├── _page.scss │ │ └── _typography.scss │ ├── components │ │ ├── _box.scss │ │ ├── _button.scss │ │ ├── _form.scss │ │ ├── _icon.scss │ │ ├── _image.scss │ │ ├── _list.scss │ │ └── _table.scss │ ├── ie9.scss │ ├── layout │ │ ├── _bg.scss │ │ ├── _footer.scss │ │ ├── _header.scss │ │ ├── _main.scss │ │ └── _wrapper.scss │ ├── libs │ │ ├── _functions.scss │ │ ├── _mixins.scss │ │ ├── _skel.scss │ │ └── _vars.scss │ ├── main.scss │ └── noscript.scss ├── sass │ ├── base │ │ ├── _page.scss │ │ └── _typography.scss │ ├── components │ │ ├── _box.scss │ │ ├── _button.scss │ │ ├── _contact-method.scss │ │ ├── _form.scss │ │ ├── _icon.scss │ │ ├── _image.scss │ │ ├── _list.scss │ │ ├── _section.scss │ │ ├── _spotlights.scss │ │ ├── _table.scss │ │ └── _tiles.scss │ ├── ie8.scss │ ├── ie9.scss │ ├── layout │ │ ├── _banner.scss │ │ ├── _contact.scss │ │ ├── _footer.scss │ │ ├── _header.scss │ │ ├── _main.scss │ │ ├── _menu.scss │ │ └── _wrapper.scss │ ├── libs │ │ ├── _functions.scss │ │ ├── _mixins.scss │ │ ├── _skel.scss │ │ └── _vars.scss │ └── main.scss ├── sitemap.xml └── tags │ ├── index.html │ └── index.xml ├── static ├── .DS_Store ├── css-dimension │ ├── bg.jpg │ ├── font-awesome.min.css │ ├── ie9.css │ ├── main.css │ ├── noscript.css │ ├── overlay.png │ └── project.css ├── css │ ├── font-awesome.min.css │ ├── ie8.css │ ├── ie9.css │ └── main.css ├── fonts-dimension │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── images │ ├── devops22-small.jpg │ ├── devops22.jpg │ ├── devops23-small.jpg │ └── viktor.png ├── js-dimension │ ├── jquery.min.js │ ├── main.js │ ├── skel.min.js │ └── util.js ├── js │ ├── ie │ │ ├── backgroundsize.min.htc │ │ ├── html5shiv.js │ │ └── respond.min.js │ ├── jquery.min.js │ ├── jquery.scrollex.min.js │ ├── jquery.scrolly.min.js │ ├── main.js │ ├── skel.min.js │ └── util.js ├── sass-dimension │ ├── base │ │ ├── _page.scss │ │ └── _typography.scss │ ├── components │ │ ├── _box.scss │ │ ├── _button.scss │ │ ├── _form.scss │ │ ├── _icon.scss │ │ ├── _image.scss │ │ ├── _list.scss │ │ └── _table.scss │ ├── ie9.scss │ ├── layout │ │ ├── _bg.scss │ │ ├── _footer.scss │ │ ├── _header.scss │ │ ├── _main.scss │ │ └── _wrapper.scss │ ├── libs │ │ ├── _functions.scss │ │ ├── _mixins.scss │ │ ├── _skel.scss │ │ └── _vars.scss │ ├── main.scss │ └── noscript.scss └── sass │ ├── base │ ├── _page.scss │ └── _typography.scss │ ├── components │ ├── _box.scss │ ├── _button.scss │ ├── _contact-method.scss │ ├── _form.scss │ ├── _icon.scss │ ├── _image.scss │ ├── _list.scss │ ├── _section.scss │ ├── _spotlights.scss │ ├── _table.scss │ └── _tiles.scss │ ├── ie8.scss │ ├── ie9.scss │ ├── layout │ ├── _banner.scss │ ├── _contact.scss │ ├── _footer.scss │ ├── _header.scss │ ├── _main.scss │ ├── _menu.scss │ └── _wrapper.scss │ ├── libs │ ├── _functions.scss │ ├── _mixins.scss │ ├── _skel.scss │ └── _vars.scss │ └── main.scss ├── themes ├── .DS_Store └── forty │ ├── .gitattributes │ ├── .gitignore │ ├── LICENSE.md │ ├── README.md │ ├── archetypes │ └── default.md │ ├── exampleSite │ ├── archetypes │ │ └── default.md │ ├── config.toml │ ├── content │ │ └── blogs │ │ │ ├── _index.md │ │ │ ├── blog1.md │ │ │ ├── blog2.md │ │ │ ├── blog3.md │ │ │ └── blog4.md │ ├── netlify.toml │ └── static │ │ └── img │ │ └── blogs │ │ ├── pic07.jpg │ │ ├── pic08.jpg │ │ ├── pic09.jpg │ │ └── pic10.jpg │ ├── images │ ├── screenshot.png │ └── tn.png │ ├── layouts │ ├── 404.html │ ├── _default │ │ ├── list.html │ │ └── single.html │ ├── index.html │ └── partials │ │ ├── banner.html │ │ ├── contact.html │ │ ├── disqus.html │ │ ├── footer.html │ │ ├── header.html │ │ ├── js.html │ │ ├── nav.html │ │ ├── tile.html │ │ └── two.html │ ├── static │ ├── css │ │ ├── font-awesome.min.css │ │ ├── ie8.css │ │ ├── ie9.css │ │ └── main.css │ ├── elements.html │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 │ ├── img │ │ ├── banner.jpg │ │ ├── pic01.jpg │ │ ├── pic02.jpg │ │ ├── pic03.jpg │ │ ├── pic04.jpg │ │ ├── pic05.jpg │ │ └── pic06.jpg │ ├── js │ │ ├── ie │ │ │ ├── backgroundsize.min.htc │ │ │ ├── html5shiv.js │ │ │ └── respond.min.js │ │ ├── jquery.min.js │ │ ├── jquery.scrollex.min.js │ │ ├── jquery.scrolly.min.js │ │ ├── main.js │ │ ├── skel.min.js │ │ └── util.js │ └── sass │ │ ├── base │ │ ├── _page.scss │ │ └── _typography.scss │ │ ├── components │ │ ├── _box.scss │ │ ├── _button.scss │ │ ├── _contact-method.scss │ │ ├── _form.scss │ │ ├── _icon.scss │ │ ├── _image.scss │ │ ├── _list.scss │ │ ├── _section.scss │ │ ├── _spotlights.scss │ │ ├── _table.scss │ │ └── _tiles.scss │ │ ├── ie8.scss │ │ ├── ie9.scss │ │ ├── layout │ │ ├── _banner.scss │ │ ├── _contact.scss │ │ ├── _footer.scss │ │ ├── _header.scss │ │ ├── _main.scss │ │ ├── _menu.scss │ │ └── _wrapper.scss │ │ ├── libs │ │ ├── _functions.scss │ │ ├── _mixins.scss │ │ ├── _skel.scss │ │ └── _vars.scss │ │ └── main.scss │ └── theme.toml └── vcluster-service.yaml /.github/pr-commenter.yml: -------------------------------------------------------------------------------- 1 | comment: 2 | header: | 3 | Thank you for contributing to this repository :tada:. 4 | 5 | footer: | 6 | --- 7 | Automated comment created by [PR Commenter](https://github.com/exercism/pr-commenter-action) :robot:. 8 | 9 | snippets: 10 | - id: any-markdown-file-changed 11 | files: 12 | - '*.md' 13 | - '**/*.md' 14 | body: | 15 | It looks like you're changing a Markdown file. 16 | Make sure your changes follow our [language guidelines](some-link) when writing documentation. 17 | -------------------------------------------------------------------------------- /.github/workflows/main.yaml: -------------------------------------------------------------------------------- 1 | name: main 2 | on: 3 | push: 4 | branches: 5 | - main 6 | jobs: 7 | release: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Checkout 11 | uses: actions/checkout@v2 12 | with: 13 | submodules: recursive 14 | - name: Set up QEMU 15 | uses: docker/setup-qemu-action@v1 16 | - name: Set up Docker Buildx 17 | uses: docker/setup-buildx-action@v1 18 | - name: Login to DockerHub 19 | uses: docker/login-action@v1 20 | with: 21 | username: ${{ secrets.DOCKERHUB_USERNAME }} 22 | password: ${{ secrets.DOCKERHUB_TOKEN }} 23 | - name: Build and push container image 24 | uses: docker/build-push-action@v2 25 | with: 26 | push: true 27 | tags: | 28 | ${{ secrets.DOCKERHUB_USERNAME }}/devops-toolkit:latest 29 | ${{ secrets.DOCKERHUB_USERNAME }}/devops-toolkit:${{ github.sha }} 30 | - name: Checkout prod 31 | uses: actions/checkout@v2 32 | with: 33 | repository: ${{ secrets.GH_ORG }}/devspace-vcluster-argocd-prod 34 | persist-credentials: false 35 | fetch-depth: 0 36 | - name: Update manifests 37 | run: | 38 | sleep 1 39 | cat production/devops-toolkit.yaml | sed -e "s@- ${{ secrets.DOCKERHUB_USERNAME }}/devops-toolkit:.*@- ${{ secrets.DOCKERHUB_USERNAME }}/devops-toolkit:${{ github.sha }}@g" | tee production/devops-toolkit.yaml 40 | git config --global user.email "${{ secrets.GH_ORG }}@farcic.com" 41 | git config --global user.name "${{ secrets.GH_ORG }}" 42 | git add . 43 | git commit -m "Promoting devops-toolkit ${{ github.sha }}" 44 | - name: Push prod 45 | uses: ad-m/github-push-action@master 46 | with: 47 | github_token: ${{ secrets.GH_TOKEN }} 48 | repository: ${{ secrets.GH_ORG }}/devspace-vcluster-argocd-prod 49 | -------------------------------------------------------------------------------- /.github/workflows/pr-close.yaml: -------------------------------------------------------------------------------- 1 | name: pr 2 | on: 3 | pull_request: 4 | types: [ closed ] 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: Checkout 10 | uses: actions/checkout@v2 11 | with: 12 | submodules: recursive 13 | - name: Setup Kube config 14 | uses: azure/k8s-set-context@v1 15 | with: 16 | method: kubeconfig 17 | kubeconfig: ${{ secrets.KUBE_CONFIG }} 18 | - name: Delete preview 19 | run: | 20 | # Install vCluster 21 | curl -s -L "https://github.com/loft-sh/vcluster/releases/latest" | sed -nE 's!.*"([^"]*vcluster-linux-amd64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o vcluster && chmod +x vcluster; 22 | sudo mv vcluster /usr/local/bin; 23 | 24 | # Delete the cluster 25 | vcluster delete devops-toolkit-pr-${{ github.event.pull_request.number }} --namespace prs 26 | -------------------------------------------------------------------------------- /.github/workflows/pr-open.yaml: -------------------------------------------------------------------------------- 1 | name: pr 2 | on: 3 | pull_request: 4 | branches: 5 | - main 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Checkout 11 | uses: actions/checkout@v2 12 | with: 13 | submodules: recursive 14 | - name: Set up QEMU 15 | uses: docker/setup-qemu-action@v1 16 | - name: Set up Docker Buildx 17 | uses: docker/setup-buildx-action@v1 18 | - name: Login to DockerHub 19 | uses: docker/login-action@v1 20 | with: 21 | username: ${{ secrets.DOCKERHUB_USERNAME }} 22 | password: ${{ secrets.DOCKERHUB_TOKEN }} 23 | - name: Build and push container image 24 | uses: docker/build-push-action@v2 25 | with: 26 | push: true 27 | tags: | 28 | ${{ secrets.DOCKERHUB_USERNAME }}/devops-toolkit:pr-${{ github.event.pull_request.number }} 29 | - name: Setup Kube config 30 | uses: azure/k8s-set-context@v1 31 | with: 32 | method: kubeconfig 33 | kubeconfig: ${{ secrets.KUBE_CONFIG }} 34 | - name: Deploy preview 35 | run: | 36 | # Install vCluster 37 | curl -s -L "https://github.com/loft-sh/vcluster/releases/latest" | sed -nE 's!.*"([^"]*vcluster-linux-amd64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o vcluster && chmod +x vcluster; 38 | sudo mv vcluster /usr/local/bin; 39 | 40 | # Create a cluster 41 | vcluster create devops-toolkit-pr-${{ github.event.pull_request.number }} --namespace prs --expose 42 | vcluster connect devops-toolkit-pr-${{ github.event.pull_request.number }} --namespace prs 43 | export KUBECONFIG=$PWD/kubeconfig.yaml 44 | sleep 5 45 | kubectl get ingresses 46 | 47 | # Deploy 48 | cd kustomize/overlays/preview 49 | kustomize edit set image vfarcic/devops-toolkit=${{ secrets.DOCKERHUB_USERNAME }}/devops-toolkit:pr-${{ github.event.pull_request.number }} 50 | kustomize build | kubectl apply --filename - 51 | kubectl rollout status deployment devops-toolkit 52 | - name: Test 53 | run: | 54 | echo "I was to lazy to write tests" 55 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /creds 2 | /kubeconfig.yaml 3 | 4 | # Ignore DevSpace cache and log folder 5 | .devspace/ 6 | 7 | 8 | # Ignore DevSpace cache and log folder 9 | .devspace/ 10 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM klakegg/hugo:0.78.2-alpine AS build 2 | RUN apk add -U git 3 | COPY . /src 4 | RUN make init 5 | RUN make build 6 | 7 | FROM nginx:1.19.4-alpine 8 | RUN mv /usr/share/nginx/html/index.html /usr/share/nginx/html/old-index.html 9 | COPY --from=build /src/public /usr/share/nginx/html 10 | EXPOSE 80 11 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | SHELL := /bin/bash 2 | 3 | init: 4 | cp content/img/banner.jpg themes/forty/static/img/. 5 | 6 | build: 7 | hugo 8 | 9 | dev: 10 | hugo server 11 | 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [KubeSphere - Kubernetes Platform For Cloud-Native App Management](https://youtu.be/1OOLeCVWTXE) 2 | -------------------------------------------------------------------------------- /archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .TranslationBaseName "-" " " | title }}" 3 | date: {{ .Date }} 4 | draft: true 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /content/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/.DS_Store -------------------------------------------------------------------------------- /content/img/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/.DS_Store -------------------------------------------------------------------------------- /content/img/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/banner.jpg -------------------------------------------------------------------------------- /content/img/canary-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/canary-small.jpg -------------------------------------------------------------------------------- /content/img/canary-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/canary-smaller.jpg -------------------------------------------------------------------------------- /content/img/catalog-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/catalog-small.jpg -------------------------------------------------------------------------------- /content/img/catalog-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/catalog-smaller.jpg -------------------------------------------------------------------------------- /content/img/chaos-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/chaos-small.jpg -------------------------------------------------------------------------------- /content/img/chaos-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/chaos-smaller.jpg -------------------------------------------------------------------------------- /content/img/devops20-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops20-small.jpg -------------------------------------------------------------------------------- /content/img/devops20-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops20-smaller.jpg -------------------------------------------------------------------------------- /content/img/devops21-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops21-small.png -------------------------------------------------------------------------------- /content/img/devops21-smaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops21-smaller.png -------------------------------------------------------------------------------- /content/img/devops22-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops22-small.jpg -------------------------------------------------------------------------------- /content/img/devops22-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops22-smaller.jpg -------------------------------------------------------------------------------- /content/img/devops23-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops23-small.jpg -------------------------------------------------------------------------------- /content/img/devops23-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops23-smaller.jpg -------------------------------------------------------------------------------- /content/img/devops24-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops24-small.jpg -------------------------------------------------------------------------------- /content/img/devops24-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops24-small.png -------------------------------------------------------------------------------- /content/img/devops24-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops24-smaller.jpg -------------------------------------------------------------------------------- /content/img/devops24-smaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops24-smaller.png -------------------------------------------------------------------------------- /content/img/devops25-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops25-small.jpg -------------------------------------------------------------------------------- /content/img/devops25-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops25-small.png -------------------------------------------------------------------------------- /content/img/devops25-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops25-smaller.jpg -------------------------------------------------------------------------------- /content/img/devops26-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops26-small.jpg -------------------------------------------------------------------------------- /content/img/devops26-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/devops26-smaller.jpg -------------------------------------------------------------------------------- /content/img/youtube-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/youtube-small.png -------------------------------------------------------------------------------- /content/img/youtube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/content/img/youtube.png -------------------------------------------------------------------------------- /content/posts/canary.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Canary Deployments To Kubernetes Using Istio and Friends" 3 | date: 2018-11-09T01:24:49+02:00 4 | draft: false 5 | --- 6 | 7 | ## Udemy Course 8 | 9 | Preview it or buy it now at **[Udemy](https://www.udemy.com/course/canary-deployments-to-kubernetes-using-istio-and-friends/?referralCode=75549ECDBC41B27D94C4)**. 10 | 11 | ![](/img/canary-smaller.jpg#floatright) 12 | 13 | Kubernetes provides a few "decent" deployment strategies out of the box. However, they might not be enough. Canary is missing. 14 | 15 | What is the canary deployments process? How should we implement it in Kubernetes? Which tools should we use? We'll try to answer those and quite a few other questions. 16 | 17 | This talk will guide you through the journey of practical implementation of canary deployments. We'll use Kubernetes because it makes many things easier than any other platform before it. We'll need service mesh because, after all, most of the canary process is controlled through networking and changes to Kubernetes definitions. We'll need a few other tools, and we might even need to write our own scripts to glue everything into a cohesive process. 18 | 19 | The end result will be a set of instructions and a live demo of a fully operational canary deployment process that can be plugged into any continuous delivery tool. We'll define the process, and we'll choose some tools. Nevertheless, we'll do all that while making the process agnostic and applicable to any toolset you might pick. 20 | 21 | Preview it or buy it now at **[Udemy](https://www.udemy.com/course/canary-deployments-to-kubernetes-using-istio-and-friends/?referralCode=75549ECDBC41B27D94C4)**. 22 | -------------------------------------------------------------------------------- /content/posts/catalog.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "The DevOps Toolkit" 3 | date: 2018-11-09T01:24:49+02:00 4 | draft: false 5 | --- 6 | 7 | ## Catalog, Patterns, And Blueprints 8 | 9 | The **video course** is available in **[Udemy](https://www.udemy.com/course/devops-catalog/?referralCode=4F332F3B87309FE1C2EF)**. 10 | 11 | The **book** is currently available only from **[LeanPub](https://leanpub.com/the-devops-toolkit-catalog)**. 12 | 13 | ![](/img/catalog-smaller.jpg#floatright) 14 | 15 | Unlike my other books and courses where I typically dive into a single tool or a single process, this time, I chose a different approach. Instead of going to great lengths trying to help someone become proficient in one thing, this time, I am trying to give you a quick introduction into many different tools and processes. We will skip the potentially lengthy discussions and in-depth exercises. What I want, this time, is to help you make decisions. Which tool works the best for a given task? What should we explore in more depth, and what is a waste of time? The goal is not to learn everything about a tool in detail but rather to dive into many concepts and a plethora of tools right away. The aim is to get you up-to-speed fast while producing useful "real world" results. Think of each chapter as a crash-course into something with the outcome that you can use right away. 16 | 17 | I will assume that you don't have time to read hundreds of pages to learn something that you are not even sure is useful. Instead, I will guess that you got up to one hour to read a summary, and then decide if a tool is worthwhile a more significant investment. 18 | 19 | This is a catalog of the tools, and the processes I believe are useful in this day and age. I will try to transfer what I think works well and what might have been the right choice in the past but is not optimal anymore. 20 | 21 | Nevertheless, even if the scope of this book/course is different than others, some things are still the same. This is not a book/course with lots of theory. Sure, there will be some text you might need to read, but most of the content consists of hands-on exercises. I always believed that the best way to learn something is through practice, and I am not giving up on that. This is a book/course full of real-world hands-on examples, and each chapter will let you dive into a different tool or a process. At the end of each, you will be able to say, "now I know what this is about, and now I can make a decision whether it is a worthwhile investment." 22 | 23 | Think of this book/course as a catalog, combined with patterns and blueprints. 24 | 25 | The **video course** is available in **[Udemy](https://www.udemy.com/course/devops-catalog/?referralCode=4F332F3B87309FE1C2EF)**. 26 | 27 | The **book** is currently available only from **[LeanPub](https://leanpub.com/the-devops-toolkit-catalog)**. 28 | -------------------------------------------------------------------------------- /content/posts/chaos.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Kubernetes Chaos Engineering" 3 | date: 2018-11-09T01:24:49+02:00 4 | draft: false 5 | --- 6 | 7 | ## Kubernetes Chaos Engineering With Chaos Toolkit And Istio 8 | 9 | The **video course** is available in **[Udemy](https://www.udemy.com/course/kubernetes-chaos-engineering-with-chaos-toolkit-and-istio/?referralCode=02D178244316CE05E24A)**. 10 | 11 | The **book** is available from **[Amazon](https://amzn.to/2xUscyO)**, **[LeanPub](https://leanpub.com/the-devops-2-7-toolkit)**, and (probably) through your favorite book seller. 12 | 13 | ![](/img/chaos-smaller.jpg#floatright) 14 | 15 | There are very few things as satisfying as destruction, especially when we're frustrated. 16 | 17 | How often did it happen that you have an issue that you cannot solve and that you just want to scream or destroy things? Did you ever have a problem in production that is negatively affecting a lot of users? Were you under a lot of pressure to solve it, but you could not "crack" it as fast as you should. It must have happened, at least once, that you wanted to take a hammer and destroy servers in your datacenter. If something like that never happened to you, then you were probably never in a position under a lot of pressure. In my case, there were countless times when I wanted to destroy things. But I didn't, for quite a few reasons. Destruction rarely solves problems, and it usually leads to negative consequences. I cannot just go and destroy a server and expect that I will not be punished. I cannot hope to be rewarded for such behavior. 18 | 19 | What would you say if I tell you that we can be rewarded for destruction and that we can do a lot of good things by destroying stuff? If you don't believe me, you will soon. That's what chaos engineering is about. It is about destroying, obstructing, and delaying things in our servers and in our clusters. And we're doing all that, and many other things, for a very positive outcome. 20 | 21 | Chaos engineering tries to find the limits of our system. It helps us deduce what are the consequences when bad things happen. We are trying to simulate the adverse effects in a controlled way. We are trying to do that as a way to improve our systems to make them more resilient and capable of recuperating and resisting harmful and unpredictable events. 22 | 23 | That's our mission. We will try to find ways how we can improve our systems based on the knowledge that we will obtain through the chaos. 24 | 25 | The **video course** is available in **[Udemy](https://www.udemy.com/course/kubernetes-chaos-engineering-with-chaos-toolkit-and-istio/?referralCode=02D178244316CE05E24A)**. 26 | 27 | The **book** is available from **[Amazon](https://amzn.to/2xUscyO)**, **[LeanPub](https://leanpub.com/the-devops-2-7-toolkit)**, and (probably) through your favorite book seller. 28 | -------------------------------------------------------------------------------- /content/posts/devops-20.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "The DevOps 2.0 Toolkit" 3 | date: 2017-09-21T13:31:31+02:00 4 | draft: false 5 | --- 6 | 7 | ### Automating the Continuous Deployment Pipeline with Containerized Microservices 8 | 9 | **This book is based on very old technology and the code behind it is not maintained anymore.** 10 | 11 | -------------------------------------------------------------------------------- /content/posts/devops-21.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "The DevOps 2.1 Toolkit" 3 | date: 2017-09-21T15:12:25+02:00 4 | draft: false 5 | --- 6 | 7 | ### Building, testing, deploying, and monitoring services inside Docker Swarm clusters 8 | 9 | **This book is based on very old technology and the code behind it is not maintained anymore.** 10 | -------------------------------------------------------------------------------- /content/posts/devops-22.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "The DevOps 2.2 Toolkit" 3 | date: 2017-09-21T15:17:10+02:00 4 | draft: false 5 | --- 6 | 7 | ### Building Self-Adaptive And Self-Healing Docker Clusters 8 | 9 | **This book is based on very old technology and the code behind it is not maintained anymore.** 10 | -------------------------------------------------------------------------------- /content/posts/devops-23.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "The DevOps 2.3 Toolkit" 3 | date: 2017-12-14T15:17:10+02:00 4 | draft: false 5 | --- 6 | 7 | ## Kubernetes 8 | 9 | ### Deploying and managing highly-available and fault-tolerant applications at scale 10 | 11 | Buy it now from **[Amazon](https://amzn.to/2GvzDjy)**, **[LeanPub](https://leanpub.com/the-devops-2-3-toolkit)**, or look for it through your favorite book seller. 12 | 13 | ![](/img/devops23-smaller.jpg#floatright) 14 | 15 | The goal of this book is not to convince you to adopt Kubernetes but to provide a detailed overview of its features. I want you to become confident in your Kubernetes knowledge and only then choose whether to embrace it. That is, unless you already made up your mind and stumbled upon this book in search of Kubernetes guidance. 16 | 17 | The plan is to cover all aspects behind Kubernetes, from basic to advanced features. We'll go not only through the tools behind the official project but also third-party add-ons. I hope that, by the time you finish reading this book, you will be able to call yourself "Kubernetes ninja". I cannot say that you will know everything there is to know about the Kubernetes ecosystem. That would be impossible to accomplish since its growing faster than any single person could follow. What I can say is that you will be very confident in running a Kubernetes cluster of any scale in production. 18 | 19 | Like all my other books, this one is very hands-on. There will be just enough theory for you to understand the principles behind each topic. The book is packed with examples, so I need to give you a heads up. Do not buy this book if you're planning to read it on a bus or in bed before going to sleep. You will need to be in front of your computer. A terminal will be your best friend. `kubectl` will be your lover. 20 | 21 | The book assumes that you feel comfortable with containers, especially Docker. We won't go into details how to build an image, what is container registry, and how to write Dockerfile. I hope you already know all that. If that's not the case, you might want to postpone reading this and learn at least basic container operations. This book is about things that happen after you built your images and stored them in a registry. 22 | 23 | This book is about running containers at scale and not panicking when problems arise. It is about the present and the future of software deployment and monitoring. It's about embracing the challenges and staying ahead of the curve. 24 | 25 | Buy it now from **[Amazon](https://amzn.to/2GvzDjy)**, **[LeanPub](https://leanpub.com/the-devops-2-3-toolkit)**, or look for it through your favorite book seller. 26 | -------------------------------------------------------------------------------- /content/posts/devops-24.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "The DevOps 2.4 Toolkit" 3 | date: 2018-08-23T01:24:49+02:00 4 | draft: false 5 | image: devops24-smaller.png 6 | --- 7 | 8 | ## Continuous Deployment To Kubernetes 9 | 10 | This book was removed from sales and the repository with the manuscript ([vfarcic/devops24](https://github.com/vfarcic/devops24)) has been donated to the community. 11 | -------------------------------------------------------------------------------- /content/posts/devops-26.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "The DevOps 2.6 Toolkit" 3 | date: 2018-11-09T01:24:49+02:00 4 | draft: false 5 | --- 6 | 7 | ## Jenkins X 8 | 9 | ### Cloud-Native Kubernetes-First Continuous Delivery 10 | 11 | This book was removed from sales and the repository with the manuscript ([vfarcic/devops26](https://github.com/vfarcic/devops26)) has been donated to the community. 12 | -------------------------------------------------------------------------------- /content/posts/youtube.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "The YouTube Channel" 3 | date: 2020-04-23T01:24:49+02:00 4 | draft: false 5 | --- 6 | 7 | ## [DevOps Toolkit](https://youtube.com/c/devopstoolkit) 8 | 9 | [![](/img/youtube-small.png#floatright)](https://youtube.com/c/devopstoolkit) 10 | 11 | We started the [YouTube channel](https://youtube.com/c/devopstoolkit) out of desire to help others learn the tools and the processes that we should be using and applying in our day-to-day jobs. 12 | 13 | We want to help you make decisions. What works well, what doesn't work, why you should choose one tool over the other, and how to get up-to-speed quickly. Which tool works the best for a given task? What should we explore in more depth, and what is a waste of time? 14 | 15 | This channel has DevOps in the name because we believe that the only way forward is to combine different types of expertise. Ultimately, we need to be able to develop, test, deploy, and operate our systems without friction caused by silos formed around distinct types of expertise. Hence, our focus is on bridging the gap by focusing on the topics that allow developers, operators, and everyone else works together by adopting tools and processes that are relevant today and foster collaboration. 16 | 17 | Viktor Farcic & Daring Pope 18 | 19 | Please visit the **[DevOps Toolkit](https://youtube.com/c/devopstoolkit)** YouTube channel and let us know what you think. 20 | 21 | -------------------------------------------------------------------------------- /devspace_start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set +e # Continue on errors 3 | 4 | export NODE_ENV=development 5 | if [ -f "yarn.lock" ]; then 6 | echo "Installing Yarn Dependencies" 7 | yarn 8 | else 9 | if [ -f "package.json" ]; then 10 | echo "Installing NPM Dependencies" 11 | npm install 12 | fi 13 | fi 14 | 15 | COLOR_CYAN="\033[0;36m" 16 | COLOR_RESET="\033[0m" 17 | 18 | echo -e "${COLOR_CYAN} 19 | ____ ____ 20 | | _ \ _____ __/ ___| _ __ __ _ ___ ___ 21 | | | | |/ _ \ \ / /\___ \| '_ \ / _\` |/ __/ _ \\ 22 | | |_| | __/\ V / ___) | |_) | (_| | (_| __/ 23 | |____/ \___| \_/ |____/| .__/ \__,_|\___\___| 24 | |_| 25 | ${COLOR_RESET} 26 | Welcome to your development container! 27 | 28 | This is how you can work with it: 29 | - Run \`${COLOR_CYAN}npm start${COLOR_RESET}\` to start the application 30 | - Run \`${COLOR_CYAN}npm run dev${COLOR_RESET}\` to start hot reloading 31 | - ${COLOR_CYAN}Files will be synchronized${COLOR_RESET} between your local machine and this container 32 | - Some ports will be forwarded, so you can access this container on your local machine via ${COLOR_CYAN}localhost${COLOR_RESET}: 33 | " 34 | 35 | hugo server --port 80 36 | 37 | bash 38 | -------------------------------------------------------------------------------- /helm-values.yaml: -------------------------------------------------------------------------------- 1 | syncer: 2 | extraArgs: 3 | - --tls-san=143.244.214.91 -------------------------------------------------------------------------------- /k3d.yaml: -------------------------------------------------------------------------------- 1 | kind: Simple 2 | apiVersion: k3d.io/v1alpha2 3 | name: devops-toolkit 4 | image: rancher/k3s:v1.20.4-k3s1 5 | ports: 6 | - port: 80:80 7 | nodeFilters: 8 | - loadbalancer 9 | -------------------------------------------------------------------------------- /kustomize/base/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: devops-toolkit 5 | labels: 6 | app: devops-toolkit 7 | component: web 8 | spec: 9 | selector: 10 | matchLabels: 11 | app: devops-toolkit 12 | component: web 13 | template: 14 | metadata: 15 | labels: 16 | app: devops-toolkit 17 | component: web 18 | spec: 19 | containers: 20 | - name: devops-toolkit 21 | image: vfarcic/devops-toolkit 22 | ports: 23 | - containerPort: 80 24 | resources: 25 | limits: 26 | cpu: 1000m 27 | memory: 1Gi 28 | requests: 29 | cpu: 500m 30 | memory: 512Mi 31 | 32 | -------------------------------------------------------------------------------- /kustomize/base/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - deployment.yaml 5 | - service.yaml 6 | -------------------------------------------------------------------------------- /kustomize/base/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: devops-toolkit 5 | labels: 6 | app: devops-toolkit 7 | spec: 8 | type: ClusterIP 9 | ports: 10 | - port: 80 11 | targetPort: 80 12 | protocol: TCP 13 | name: http 14 | selector: 15 | app: devops-toolkit 16 | -------------------------------------------------------------------------------- /kustomize/overlays/dev/ingress.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.k8s.io/v1 2 | kind: Ingress 3 | metadata: 4 | name: devops-toolkit 5 | annotations: 6 | ingress.kubernetes.io/ssl-redirect: "false" 7 | spec: 8 | rules: 9 | - http: 10 | paths: 11 | - path: / 12 | pathType: Prefix 13 | backend: 14 | service: 15 | name: devops-toolkit 16 | port: 17 | number: 80 18 | -------------------------------------------------------------------------------- /kustomize/overlays/dev/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ../../base 5 | - ingress.yaml 6 | -------------------------------------------------------------------------------- /kustomize/overlays/preview/ingress.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.k8s.io/v1 2 | kind: Ingress 3 | metadata: 4 | name: devops-toolkit 5 | annotations: 6 | ingress.kubernetes.io/ssl-redirect: "false" 7 | spec: 8 | rules: 9 | - http: 10 | paths: 11 | - path: / 12 | pathType: Prefix 13 | backend: 14 | service: 15 | name: devops-toolkit 16 | port: 17 | number: 80 18 | -------------------------------------------------------------------------------- /kustomize/overlays/preview/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ../../base 5 | - ingress.yaml 6 | 7 | -------------------------------------------------------------------------------- /kustomize/overlays/production/ingress.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.k8s.io/v1 2 | kind: Ingress 3 | metadata: 4 | name: devops-toolkit 5 | annotations: 6 | ingress.kubernetes.io/ssl-redirect: "false" 7 | spec: 8 | rules: 9 | - http: 10 | paths: 11 | - path: / 12 | pathType: Prefix 13 | backend: 14 | service: 15 | name: devops-toolkit 16 | port: 17 | number: 80 18 | host: devops-toolkit.168.61.47.186.nip.io 19 | -------------------------------------------------------------------------------- /kustomize/overlays/production/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ../../base 5 | - ingress.yaml 6 | -------------------------------------------------------------------------------- /layouts/partials/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ with .Site.Params.description }}{{ end }} 6 | {{ with .Site.Params.name }}{{ end }} 7 | {{ hugo.Generator }} 8 | {{ .Title }}{{ if not .IsHome }} · {{ .Site.Title }}{{ end }} 9 | {{ "" | safeHTML }} 10 | 11 | 12 | 13 | 14 | 15 | {{ range .Site.Params.custom_css }} 16 | 17 | {{ end }} 18 | 19 | {{ "" | safeHTML }} 20 | 21 | 22 | {{ with .Site.Params.favicon }} 23 | 24 | 25 | {{ end }} 26 | 27 | {{ "" | safeHTML }} 28 | {{ "" | safeHTML }} 29 | {{ "" | safeHTML }} 33 | {{ template "_internal/google_analytics.html" . }} 34 | 35 | -------------------------------------------------------------------------------- /public/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/.DS_Store -------------------------------------------------------------------------------- /public/categories/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Categories on The DevOps Toolkit Series 5 | /categories/ 6 | Recent content in Categories on The DevOps Toolkit Series 7 | Hugo -- gohugo.io 8 | en-us 9 | 10 | 11 | -------------------------------------------------------------------------------- /public/css-dimension/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/css-dimension/bg.jpg -------------------------------------------------------------------------------- /public/css-dimension/ie9.css: -------------------------------------------------------------------------------- 1 | /* 2 | Dimension by HTML5 UP 3 | html5up.net | @ajlkn 4 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | */ 6 | 7 | /* BG */ 8 | 9 | #bg:before { 10 | background: rgba(19, 21, 25, 0.5); 11 | } 12 | 13 | /* Header */ 14 | 15 | #header .logo { 16 | margin: 0 auto; 17 | } 18 | 19 | #header .content { 20 | display: inline-block; 21 | } 22 | 23 | #header nav ul { 24 | display: inline-block; 25 | } 26 | 27 | #header nav ul li { 28 | display: inline-block; 29 | } 30 | 31 | /* Main */ 32 | 33 | #main article { 34 | margin: 0 auto; 35 | } -------------------------------------------------------------------------------- /public/css-dimension/noscript.css: -------------------------------------------------------------------------------- 1 | /* 2 | Dimension by HTML5 UP 3 | html5up.net | @ajlkn 4 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | */ 6 | 7 | /* Main */ 8 | 9 | #main article { 10 | opacity: 1; 11 | margin: 4rem 0 0 0; 12 | } -------------------------------------------------------------------------------- /public/css-dimension/overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/css-dimension/overlay.png -------------------------------------------------------------------------------- /public/css-dimension/project.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/css-dimension/project.css -------------------------------------------------------------------------------- /public/css/ie8.css: -------------------------------------------------------------------------------- 1 | /* Button */ 2 | 3 | .button { 4 | border: solid 2px !important; 5 | } 6 | 7 | .button.next { 8 | padding-right: 1.75em; 9 | } 10 | 11 | .button.next:before, .button.next:after { 12 | display: none; 13 | } 14 | 15 | /* Tiles */ 16 | 17 | .tiles article { 18 | width: 50%; 19 | -ms-behavior: url("assets/js/ie/backgroundsize.min.htc"); 20 | background-size: cover; 21 | } 22 | 23 | /* Banner */ 24 | 25 | #banner { 26 | -ms-behavior: url("assets/js/ie/backgroundsize.min.htc"); 27 | } 28 | 29 | #banner:after { 30 | display: none; 31 | } 32 | 33 | /* Menu */ 34 | 35 | #menu { 36 | background: #242943; 37 | } -------------------------------------------------------------------------------- /public/css/ie9.css: -------------------------------------------------------------------------------- 1 | /* Spotlights */ 2 | 3 | .spotlights > section:after { 4 | content: ''; 5 | display: block; 6 | clear: both; 7 | } 8 | 9 | .spotlights > section > .image { 10 | float: left; 11 | } 12 | 13 | .spotlights > section > .content { 14 | float: left; 15 | } 16 | 17 | /* Tiles */ 18 | 19 | .tiles:after { 20 | content: ''; 21 | display: block; 22 | clear: both; 23 | } 24 | 25 | .tiles article { 26 | padding: 8em 4em 6em 4em ; 27 | float: left; 28 | height: auto; 29 | max-height: none; 30 | min-height: 0; 31 | } 32 | 33 | /* Header */ 34 | 35 | #header .logo { 36 | position: absolute; 37 | top: 0; 38 | left: 0; 39 | } 40 | 41 | #header nav { 42 | position: absolute; 43 | top: 0; 44 | right: 0; 45 | } 46 | 47 | /* Banner */ 48 | 49 | #banner { 50 | padding: 7em 0 4em 0 ; 51 | background-attachment: scroll; 52 | height: auto; 53 | max-height: none; 54 | min-height: 0; 55 | } 56 | 57 | #banner > .inner .content { 58 | display: block; 59 | } 60 | 61 | #banner > .inner .content > * { 62 | margin-left: 0; 63 | margin: 0 0 2em 0; 64 | } 65 | 66 | #banner.major { 67 | height: auto; 68 | max-height: none; 69 | min-height: 0; 70 | } 71 | 72 | /* Contact */ 73 | 74 | #contact:after { 75 | content: ''; 76 | display: block; 77 | clear: both; 78 | } 79 | 80 | #contact > .inner > * { 81 | float: left; 82 | } 83 | 84 | /* Menu */ 85 | 86 | #menu .inner { 87 | margin: 0 auto; 88 | } -------------------------------------------------------------------------------- /public/fonts-dimension/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/fonts-dimension/FontAwesome.otf -------------------------------------------------------------------------------- /public/fonts-dimension/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/fonts-dimension/fontawesome-webfont.eot -------------------------------------------------------------------------------- /public/fonts-dimension/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/fonts-dimension/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /public/fonts-dimension/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/fonts-dimension/fontawesome-webfont.woff -------------------------------------------------------------------------------- /public/fonts-dimension/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/fonts-dimension/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /public/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /public/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /public/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /public/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /public/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /public/images/devops22-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/images/devops22-small.jpg -------------------------------------------------------------------------------- /public/images/devops22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/images/devops22.jpg -------------------------------------------------------------------------------- /public/images/devops23-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/images/devops23-small.jpg -------------------------------------------------------------------------------- /public/images/viktor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/images/viktor.png -------------------------------------------------------------------------------- /public/img/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/banner.jpg -------------------------------------------------------------------------------- /public/img/canary-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/canary-small.jpg -------------------------------------------------------------------------------- /public/img/canary-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/canary-smaller.jpg -------------------------------------------------------------------------------- /public/img/catalog-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/catalog-small.jpg -------------------------------------------------------------------------------- /public/img/catalog-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/catalog-smaller.jpg -------------------------------------------------------------------------------- /public/img/chaos-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/chaos-small.jpg -------------------------------------------------------------------------------- /public/img/chaos-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/chaos-smaller.jpg -------------------------------------------------------------------------------- /public/img/devops20-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops20-small.jpg -------------------------------------------------------------------------------- /public/img/devops20-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops20-smaller.jpg -------------------------------------------------------------------------------- /public/img/devops21-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops21-small.png -------------------------------------------------------------------------------- /public/img/devops21-smaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops21-smaller.png -------------------------------------------------------------------------------- /public/img/devops22-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops22-small.jpg -------------------------------------------------------------------------------- /public/img/devops22-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops22-smaller.jpg -------------------------------------------------------------------------------- /public/img/devops23-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops23-small.jpg -------------------------------------------------------------------------------- /public/img/devops23-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops23-smaller.jpg -------------------------------------------------------------------------------- /public/img/devops24-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops24-small.jpg -------------------------------------------------------------------------------- /public/img/devops24-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops24-small.png -------------------------------------------------------------------------------- /public/img/devops24-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops24-smaller.jpg -------------------------------------------------------------------------------- /public/img/devops24-smaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops24-smaller.png -------------------------------------------------------------------------------- /public/img/devops25-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops25-small.jpg -------------------------------------------------------------------------------- /public/img/devops25-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops25-small.png -------------------------------------------------------------------------------- /public/img/devops25-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops25-smaller.jpg -------------------------------------------------------------------------------- /public/img/devops26-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops26-small.jpg -------------------------------------------------------------------------------- /public/img/devops26-smaller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/devops26-smaller.jpg -------------------------------------------------------------------------------- /public/img/pic01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/pic01.jpg -------------------------------------------------------------------------------- /public/img/pic02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/pic02.jpg -------------------------------------------------------------------------------- /public/img/pic03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/pic03.jpg -------------------------------------------------------------------------------- /public/img/pic04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/pic04.jpg -------------------------------------------------------------------------------- /public/img/pic05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/pic05.jpg -------------------------------------------------------------------------------- /public/img/pic06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/pic06.jpg -------------------------------------------------------------------------------- /public/img/youtube-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/youtube-small.png -------------------------------------------------------------------------------- /public/img/youtube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/public/img/youtube.png -------------------------------------------------------------------------------- /public/js/ie/html5shiv.js: -------------------------------------------------------------------------------- 1 | /* 2 | HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); 5 | a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; 6 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| 7 | "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment(); 8 | for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d1){for(var r=0;r=i&&o>=t};break;case"bottom":h=function(t,e,n,i,o){return n>=i&&o>=n};break;case"middle":h=function(t,e,n,i,o){return e>=i&&o>=e};break;case"top-only":h=function(t,e,n,i,o){return i>=t&&n>=i};break;case"bottom-only":h=function(t,e,n,i,o){return n>=o&&o>=t};break;default:case"default":h=function(t,e,n,i,o){return n>=i&&o>=t}}return c=function(t){var i,o,l,s,r,a,u=this.state,h=!1,c=this.$element.offset();i=n.height(),o=t+i/2,l=t+i,s=this.$element.outerHeight(),r=c.top+e(this.options.top,s,i),a=c.top+s-e(this.options.bottom,s,i),h=this.test(t,o,l,r,a),h!=u&&(this.state=h,h?this.options.enter&&this.options.enter.apply(this.element):this.options.leave&&this.options.leave.apply(this.element)),this.options.scroll&&this.options.scroll.apply(this.element,[(o-r)/(a-r)])},p={id:a,options:u,test:h,handler:c,state:null,element:this,$element:s,timeoutId:null},o[a]=p,s.data("_scrollexId",p.id),p.options.initialize&&p.options.initialize.apply(this),s},jQuery.fn.unscrollex=function(){var e=t(this);if(0==this.length)return e;if(this.length>1){for(var n=0;n1){for(o=0;o=320px. 15 | @include breakpoint(xsmall) { 16 | html, body { 17 | min-width: 320px; 18 | } 19 | } 20 | 21 | body { 22 | background: _palette(bg); 23 | 24 | // Prevents animation/transition "flicker" on page load. 25 | // Automatically added/removed by js/main.js. 26 | &.is-loading, 27 | &.is-switching { 28 | *, *:before, *:after { 29 | @include vendor('animation', 'none !important'); 30 | @include vendor('transition', 'none !important'); 31 | @include vendor('transition-delay', 'none !important'); 32 | } 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /public/sass-dimension/components/_box.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Box */ 8 | 9 | .box { 10 | border-radius: _size(border-radius); 11 | border: solid _size(border-width) _palette(border); 12 | margin-bottom: _size(element-margin); 13 | padding: 1.5em; 14 | 15 | > :last-child, 16 | > :last-child > :last-child, 17 | > :last-child > :last-child > :last-child { 18 | margin-bottom: 0; 19 | } 20 | 21 | &.alt { 22 | border: 0; 23 | border-radius: 0; 24 | padding: 0; 25 | } 26 | } -------------------------------------------------------------------------------- /public/sass-dimension/components/_button.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Button */ 8 | 9 | input[type="submit"], 10 | input[type="reset"], 11 | input[type="button"], 12 | button, 13 | .button { 14 | @include vendor('appearance', 'none'); 15 | @include vendor('transition', 'background-color #{_duration(transition)} ease-in-out, color #{_duration(transition)} ease-in-out'); 16 | background-color: transparent; 17 | border-radius: _size(border-radius); 18 | border: 0; 19 | box-shadow: inset 0 0 0 _size(border-width) _palette(border); 20 | color: _palette(fg-bold) !important; 21 | cursor: pointer; 22 | display: inline-block; 23 | font-size: 0.8rem; 24 | font-weight: _font(weight); 25 | height: _size(element-height); 26 | letter-spacing: _font(letter-spacing); 27 | line-height: _size(element-height); 28 | outline: 0; 29 | padding: 0 1.25rem 0 (1.25rem + (_font(letter-spacing) * 0.5)); 30 | text-align: center; 31 | text-decoration: none; 32 | text-transform: uppercase; 33 | white-space: nowrap; 34 | 35 | &:hover { 36 | background-color: _palette(border-bg); 37 | } 38 | 39 | &:active { 40 | background-color: _palette(border-bg-alt); 41 | } 42 | 43 | &.icon { 44 | &:before { 45 | margin-right: 0.5em; 46 | } 47 | } 48 | 49 | &.fit { 50 | display: block; 51 | margin: 0 0 (_size(element-margin) * 0.5) 0; 52 | width: 100%; 53 | } 54 | 55 | &.special { 56 | background-color: _palette(fg-bold); 57 | color: _palette(bg) !important; 58 | font-weight: _font(weight-bold); 59 | 60 | &:hover { 61 | } 62 | 63 | &:active { 64 | } 65 | } 66 | 67 | &.disabled, 68 | &:disabled { 69 | @include vendor('pointer-events', 'none'); 70 | cursor: default; 71 | opacity: 0.25; 72 | } 73 | } 74 | 75 | input[type="submit"], 76 | input[type="reset"], 77 | input[type="button"], 78 | button { 79 | line-height: calc(#{_size(element-height)} - 2px); 80 | } -------------------------------------------------------------------------------- /public/sass-dimension/components/_icon.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Icon */ 8 | 9 | .icon { 10 | @include icon; 11 | border-bottom: none; 12 | position: relative; 13 | 14 | > .label { 15 | display: none; 16 | } 17 | } -------------------------------------------------------------------------------- /public/sass-dimension/components/_image.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Image */ 8 | 9 | .image { 10 | border-radius: _size(border-radius); 11 | border: 0; 12 | display: inline-block; 13 | position: relative; 14 | 15 | &:before { 16 | @include vendor('pointer-events', 'none'); 17 | background-image: url('/images/overlay.png'); 18 | background-color: _palette(bg-overlay); 19 | border-radius: _size(border-radius); 20 | content: ''; 21 | display: block; 22 | height: 100%; 23 | left: 0; 24 | opacity: 0.5; 25 | position: absolute; 26 | top: 0; 27 | width: 100%; 28 | } 29 | 30 | img { 31 | border-radius: _size(border-radius); 32 | display: block; 33 | } 34 | 35 | &.left, 36 | &.right { 37 | max-width: 40%; 38 | 39 | img { 40 | width: 100%; 41 | } 42 | } 43 | 44 | &.left { 45 | float: left; 46 | padding: 0 1.5em 1em 0; 47 | top: 0.25em; 48 | } 49 | 50 | &.right { 51 | float: right; 52 | padding: 0 0 1em 1.5em; 53 | top: 0.25em; 54 | } 55 | 56 | &.fit { 57 | display: block; 58 | margin: 0 0 _size(element-margin) 0; 59 | width: 100%; 60 | 61 | img { 62 | width: 100%; 63 | } 64 | } 65 | 66 | &.main { 67 | display: block; 68 | margin: (_size(element-margin) * 1.25) 0; 69 | width: 100%; 70 | 71 | img { 72 | width: 100%; 73 | } 74 | } 75 | 76 | @include breakpoint(small) { 77 | &.main { 78 | margin: (_size(element-margin) * 1) 0; 79 | } 80 | } 81 | 82 | @include breakpoint(xsmall) { 83 | &.main { 84 | margin: (_size(element-margin) * 0.75) 0; 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /public/sass-dimension/components/_table.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Table */ 8 | 9 | .table-wrapper { 10 | -webkit-overflow-scrolling: touch; 11 | overflow-x: auto; 12 | } 13 | 14 | table { 15 | margin: 0 0 _size(element-margin) 0; 16 | width: 100%; 17 | 18 | tbody { 19 | tr { 20 | border: solid _size(border-width) _palette(border); 21 | border-left: 0; 22 | border-right: 0; 23 | 24 | &:nth-child(2n + 1) { 25 | background-color: _palette(border-bg); 26 | } 27 | } 28 | } 29 | 30 | td { 31 | padding: 0.75em 0.75em; 32 | } 33 | 34 | th { 35 | color: _palette(fg-bold); 36 | font-size: 0.9em; 37 | font-weight: _font(weight-bold); 38 | padding: 0 0.75em 0.75em 0.75em; 39 | text-align: left; 40 | } 41 | 42 | thead { 43 | border-bottom: solid (_size(border-width) * 2) _palette(border); 44 | } 45 | 46 | tfoot { 47 | border-top: solid (_size(border-width) * 2) _palette(border); 48 | } 49 | 50 | &.alt { 51 | border-collapse: separate; 52 | 53 | tbody { 54 | tr { 55 | td { 56 | border: solid _size(border-width) _palette(border); 57 | border-left-width: 0; 58 | border-top-width: 0; 59 | 60 | &:first-child { 61 | border-left-width: _size(border-width); 62 | } 63 | } 64 | 65 | &:first-child { 66 | td { 67 | border-top-width: _size(border-width); 68 | } 69 | } 70 | } 71 | } 72 | 73 | thead { 74 | border-bottom: 0; 75 | } 76 | 77 | tfoot { 78 | border-top: 0; 79 | } 80 | } 81 | } -------------------------------------------------------------------------------- /public/sass-dimension/ie9.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | 6 | /* 7 | Dimension by HTML5 UP 8 | html5up.net | @ajlkn 9 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 10 | */ 11 | 12 | /* BG */ 13 | 14 | #bg { 15 | &:before { 16 | background: _palette(bg-overlay); 17 | } 18 | } 19 | 20 | /* Header */ 21 | 22 | #header { 23 | .logo { 24 | margin: 0 auto; 25 | } 26 | 27 | .content { 28 | display: inline-block; 29 | } 30 | 31 | nav { 32 | ul { 33 | display: inline-block; 34 | 35 | li { 36 | display: inline-block; 37 | } 38 | } 39 | } 40 | } 41 | 42 | /* Main */ 43 | 44 | #main { 45 | article { 46 | margin: 0 auto; 47 | } 48 | } -------------------------------------------------------------------------------- /public/sass-dimension/layout/_bg.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* BG */ 8 | 9 | #bg { 10 | @include vendor('transform', 'scale(1.0)'); 11 | -webkit-backface-visibility: hidden; 12 | position: fixed; 13 | top: 0; 14 | left: 0; 15 | width: 100%; 16 | height: 100vh; 17 | z-index: 1; 18 | 19 | &:before, &:after { 20 | content: ''; 21 | display: block; 22 | position: absolute; 23 | top: 0; 24 | left: 0; 25 | width: 100%; 26 | height: 100%; 27 | } 28 | 29 | &:before { 30 | @include vendor('transition', 'background-color #{_duration(bg)} ease-in-out'); 31 | @include vendor('transition-delay', '#{_duration(intro)}'); 32 | background-image: linear-gradient(to top, #{_palette(bg-overlay)}, #{_palette(bg-overlay)}), 33 | url('/images/overlay.png'); 34 | background-size: auto, 35 | 256px 256px; 36 | background-position: center, 37 | center; 38 | background-repeat: no-repeat, 39 | repeat; 40 | z-index: 2; 41 | } 42 | 43 | &:after { 44 | @include vendor('transform', 'scale(1.125)'); 45 | @include vendor('transition', ( 46 | 'transform #{_duration(article)} ease-in-out', 47 | 'filter #{_duration(article)} ease-in-out' 48 | )); 49 | background-image: url('/images/bg.jpg'); 50 | background-position: center; 51 | background-size: cover; 52 | background-repeat: no-repeat; 53 | z-index: 1; 54 | } 55 | 56 | body.is-article-visible & { 57 | &:after { 58 | @include vendor('transform', 'scale(1.0825)'); 59 | @include vendor('filter', 'blur(0.2rem)'); 60 | } 61 | } 62 | 63 | body.is-loading & { 64 | &:before { 65 | background-color: _palette(bg-alt); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /public/sass-dimension/layout/_footer.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Footer */ 8 | 9 | #footer { 10 | @include vendor('transition', ( 11 | 'transform #{_duration(article)} ease-in-out', 12 | 'filter #{_duration(article)} ease-in-out', 13 | 'opacity #{_duration(article)} ease-in-out', 14 | )); 15 | width: 100%; 16 | max-width: 100%; 17 | margin-top: 2rem; 18 | text-align: center; 19 | 20 | .copyright { 21 | letter-spacing: _font(letter-spacing); 22 | font-size: 0.6rem; 23 | opacity: 0.75; 24 | margin-bottom: 0; 25 | text-transform: uppercase; 26 | } 27 | 28 | body.is-article-visible & { 29 | @include vendor('transform', 'scale(0.95)'); 30 | @include vendor('filter', 'blur(0.1rem)'); 31 | opacity: 0; 32 | } 33 | 34 | body.is-loading & { 35 | opacity: 0; 36 | } 37 | } -------------------------------------------------------------------------------- /public/sass-dimension/layout/_main.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Main */ 8 | 9 | #main { 10 | @include vendor('flex-grow', '1'); 11 | @include vendor('flex-shrink', '1'); 12 | @include vendor('display', 'flex'); 13 | @include vendor('align-items', 'center'); 14 | @include vendor('justify-content', 'center'); 15 | @include vendor('flex-direction', 'column'); 16 | position: relative; 17 | max-width: 100%; 18 | z-index: 3; 19 | 20 | article { 21 | @include vendor('transform', 'translateY(0.25rem)'); 22 | @include vendor('transition', ( 23 | 'opacity #{_duration(article)} ease-in-out', 24 | 'transform #{_duration(article)} ease-in-out' 25 | )); 26 | @include padding(2.5rem, 2.5rem, (2rem, 0, 1rem, 0)); 27 | position: relative; 28 | width: 40rem; 29 | max-width: 100%; 30 | background-color: transparentize(_palette(bg), 0.15); 31 | border-radius: _size(border-radius); 32 | opacity: 0; 33 | 34 | &.active { 35 | @include vendor('transform', 'translateY(0)'); 36 | opacity: 1; 37 | } 38 | 39 | .close { 40 | display: block; 41 | position: absolute; 42 | top: 0; 43 | right: 0; 44 | width: 4rem; 45 | height: 4rem; 46 | cursor: pointer; 47 | text-indent: 4rem; 48 | overflow: hidden; 49 | white-space: nowrap; 50 | 51 | &:before { 52 | @include vendor('transition', 'background-color #{_duration(transition)} ease-in-out'); 53 | content: ''; 54 | display: block; 55 | position: absolute; 56 | top: 0.75rem; 57 | left: 0.75rem; 58 | width: 2.5rem; 59 | height: 2.5rem; 60 | border-radius: 100%; 61 | background-position: center; 62 | background-image: svg-url(''); 63 | background-size: 20px 20px; 64 | background-repeat: no-repeat; 65 | } 66 | 67 | &:hover { 68 | &:before { 69 | background-color: _palette(border-bg); 70 | } 71 | } 72 | 73 | &:active { 74 | &:before { 75 | background-color: _palette(border-bg-alt); 76 | } 77 | } 78 | } 79 | } 80 | 81 | @include breakpoint(small) { 82 | article { 83 | @include padding(2rem, 2rem, (1.5rem, 0, 0.5rem, 0)); 84 | 85 | .close { 86 | &:before { 87 | top: 0.875rem; 88 | left: 0.875rem; 89 | width: 2.25rem; 90 | height: 2.25rem; 91 | background-size: 14px 14px; 92 | } 93 | } 94 | } 95 | } 96 | 97 | @include breakpoint(xsmall) { 98 | article { 99 | @include padding(2rem, 1.5rem, (1rem, 0, 0.5rem, 0)); 100 | } 101 | } 102 | } -------------------------------------------------------------------------------- /public/sass-dimension/layout/_wrapper.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Wrapper */ 8 | 9 | #wrapper { 10 | @include vendor('display', 'flex'); 11 | @include vendor('flex-direction', 'column'); 12 | @include vendor('align-items', 'center'); 13 | @include vendor('justify-content', 'space-between'); 14 | position: relative; 15 | min-height: 100vh; 16 | width: 100%; 17 | padding: 4rem 2rem; 18 | z-index: 3; 19 | 20 | &:before { 21 | content: ''; 22 | display: block; 23 | } 24 | 25 | @include breakpoint(xlarge) { 26 | padding: 3rem 2rem; 27 | } 28 | 29 | @include breakpoint(small) { 30 | padding: 2rem 1rem; 31 | } 32 | 33 | @include breakpoint(xsmall) { 34 | padding: 1rem; 35 | } 36 | } -------------------------------------------------------------------------------- /public/sass-dimension/libs/_functions.scss: -------------------------------------------------------------------------------- 1 | /// Gets a duration value. 2 | /// @param {string} $keys Key(s). 3 | /// @return {string} Value. 4 | @function _duration($keys...) { 5 | @return val($duration, $keys...); 6 | } 7 | 8 | /// Gets a font value. 9 | /// @param {string} $keys Key(s). 10 | /// @return {string} Value. 11 | @function _font($keys...) { 12 | @return val($font, $keys...); 13 | } 14 | 15 | /// Gets a misc value. 16 | /// @param {string} $keys Key(s). 17 | /// @return {string} Value. 18 | @function _misc($keys...) { 19 | @return val($misc, $keys...); 20 | } 21 | 22 | /// Gets a palette value. 23 | /// @param {string} $keys Key(s). 24 | /// @return {string} Value. 25 | @function _palette($keys...) { 26 | @return val($palette, $keys...); 27 | } 28 | 29 | /// Gets a size value. 30 | /// @param {string} $keys Key(s). 31 | /// @return {string} Value. 32 | @function _size($keys...) { 33 | @return val($size, $keys...); 34 | } -------------------------------------------------------------------------------- /public/sass-dimension/libs/_mixins.scss: -------------------------------------------------------------------------------- 1 | /// Makes an element's :before pseudoelement a FontAwesome icon. 2 | /// @param {string} $content Optional content value to use. 3 | /// @param {string} $where Optional pseudoelement to target (before or after). 4 | @mixin icon($content: false, $where: before) { 5 | 6 | text-decoration: none; 7 | 8 | &:#{$where} { 9 | 10 | @if $content { 11 | content: $content; 12 | } 13 | 14 | -moz-osx-font-smoothing: grayscale; 15 | -webkit-font-smoothing: antialiased; 16 | font-family: FontAwesome; 17 | font-style: normal; 18 | font-weight: normal; 19 | text-transform: none !important; 20 | 21 | } 22 | 23 | } 24 | 25 | /// Applies padding to an element, taking the current element-margin value into account. 26 | /// @param {mixed} $tb Top/bottom padding. 27 | /// @param {mixed} $lr Left/right padding. 28 | /// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left) 29 | /// @param {bool} $important If true, adds !important. 30 | @mixin padding($tb, $lr, $pad: (0,0,0,0), $important: null) { 31 | 32 | @if $important { 33 | $important: '!important'; 34 | } 35 | 36 | $x: 0.1em; 37 | 38 | @if unit(_size(element-margin)) == 'rem' { 39 | $x: 0.1rem; 40 | } 41 | 42 | padding: ($tb + nth($pad,1)) ($lr + nth($pad,2)) max($x, $tb - _size(element-margin) + nth($pad,3)) ($lr + nth($pad,4)) #{$important}; 43 | 44 | } 45 | 46 | /// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp). 47 | /// @param {string} $svg SVG data URL. 48 | /// @return {string} Encoded SVG data URL. 49 | @function svg-url($svg) { 50 | 51 | $svg: str-replace($svg, '"', '\''); 52 | $svg: str-replace($svg, '<', '%3C'); 53 | $svg: str-replace($svg, '>', '%3E'); 54 | $svg: str-replace($svg, '&', '%26'); 55 | $svg: str-replace($svg, '#', '%23'); 56 | $svg: str-replace($svg, '{', '%7B'); 57 | $svg: str-replace($svg, '}', '%7D'); 58 | $svg: str-replace($svg, ';', '%3B'); 59 | 60 | @return url("data:image/svg+xml;charset=utf8,#{$svg}"); 61 | 62 | } -------------------------------------------------------------------------------- /public/sass-dimension/libs/_vars.scss: -------------------------------------------------------------------------------- 1 | // Misc. 2 | $misc: ( 3 | z-index-base: 10000 4 | ); 5 | 6 | // Duration. 7 | $duration: ( 8 | transition: 0.2s, 9 | bg: 2.5s, 10 | intro: 0.75s, 11 | article: 0.325s 12 | ); 13 | 14 | // Size. 15 | $size: ( 16 | border-radius: 4px, 17 | border-width: 1px, 18 | element-height: 2.75rem, 19 | element-margin: 2rem 20 | ); 21 | 22 | // Font. 23 | $font: ( 24 | family: ('Source Sans Pro', sans-serif), 25 | family-fixed: ('Courier New', monospace), 26 | weight: 300, 27 | weight-bold: 600, 28 | letter-spacing: 0.2rem, 29 | letter-spacing-heading: 0.5rem 30 | ); 31 | 32 | // Palette. 33 | $palette: ( 34 | bg: #1b1f22, 35 | bg-alt: #000000, 36 | bg-overlay: rgba(19,21,25,0.5), 37 | fg: #ffffff, 38 | fg-bold: #ffffff, 39 | fg-light: rgba(255,255,255,0.5), 40 | border: #ffffff, 41 | border-bg: rgba(255,255,255,0.075), 42 | border-bg-alt: rgba(255,255,255,0.175) 43 | ); -------------------------------------------------------------------------------- /public/sass-dimension/main.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | @import 'font-awesome.min.css'; 6 | @import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:300italic,600italic,300,600'); 7 | 8 | /* 9 | Dimension by HTML5 UP 10 | html5up.net | @ajlkn 11 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 12 | */ 13 | 14 | @include skel-breakpoints(( 15 | xlarge: '(max-width: 1680px)', 16 | large: '(max-width: 1280px)', 17 | medium: '(max-width: 980px)', 18 | small: '(max-width: 736px)', 19 | xsmall: '(max-width: 480px)', 20 | xxsmall: '(max-width: 360px)' 21 | )); 22 | 23 | @include skel-layout(( 24 | reset: 'full', 25 | boxModel: 'border' 26 | )); 27 | 28 | // Base. 29 | 30 | @import 'base/page'; 31 | @import 'base/typography'; 32 | 33 | // Component. 34 | 35 | @import 'components/form'; 36 | @import 'components/box'; 37 | @import 'components/icon'; 38 | @import 'components/image'; 39 | @import 'components/list'; 40 | @import 'components/table'; 41 | @import 'components/button'; 42 | 43 | // Layout. 44 | 45 | @import 'layout/bg'; 46 | @import 'layout/wrapper'; 47 | @import 'layout/header'; 48 | @import 'layout/main'; 49 | @import 'layout/footer'; -------------------------------------------------------------------------------- /public/sass-dimension/noscript.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | 6 | /* 7 | Dimension by HTML5 UP 8 | html5up.net | @ajlkn 9 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 10 | */ 11 | 12 | /* Main */ 13 | 14 | #main { 15 | article { 16 | opacity: 1; 17 | margin: (_size(element-margin) * 2) 0 0 0; 18 | } 19 | } -------------------------------------------------------------------------------- /public/sass/base/_page.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Basic */ 8 | 9 | // MSIE: Required for IEMobile. 10 | @-ms-viewport { 11 | width: device-width; 12 | } 13 | 14 | // MSIE: Prevents scrollbar from overlapping content. 15 | body { 16 | -ms-overflow-style: scrollbar; 17 | } 18 | 19 | // Ensures page width is always >=320px. 20 | @include breakpoint(xsmall) { 21 | html, body { 22 | min-width: 320px; 23 | } 24 | } 25 | 26 | body { 27 | background: _palette(bg); 28 | 29 | // Prevents animation/transition "flicker" on page load. 30 | // Automatically added/removed by js/main.js. 31 | &.is-loading { 32 | *, *:before, *:after { 33 | @include vendor('animation', 'none !important'); 34 | @include vendor('transition', 'none !important'); 35 | } 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /public/sass/components/_box.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Box */ 8 | 9 | .box { 10 | border: solid 1px _palette(border); 11 | margin-bottom: _size(element-margin); 12 | padding: 1.5em; 13 | 14 | > :last-child, 15 | > :last-child > :last-child, 16 | > :last-child > :last-child > :last-child { 17 | margin-bottom: 0; 18 | } 19 | 20 | &.alt { 21 | border: 0; 22 | border-radius: 0; 23 | padding: 0; 24 | } 25 | } -------------------------------------------------------------------------------- /public/sass/components/_contact-method.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Contact Method */ 8 | 9 | .contact-method { 10 | margin: 0 0 _size(element-margin) 0; 11 | padding-left: 3.25em; 12 | position: relative; 13 | 14 | .icon { 15 | left: 0; 16 | position: absolute; 17 | top: 0; 18 | } 19 | 20 | h3 { 21 | margin: 0 0 (_size(element-margin) * 0.25) 0; 22 | } 23 | } -------------------------------------------------------------------------------- /public/sass/components/_icon.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Icon */ 8 | 9 | .icon { 10 | @include icon; 11 | border-bottom: none; 12 | position: relative; 13 | 14 | > .label { 15 | display: none; 16 | } 17 | 18 | &.alt { 19 | &:before { 20 | background-color: _palette(fg-bold); 21 | border-radius: 100%; 22 | color: _palette(bg); 23 | display: inline-block; 24 | height: 2em; 25 | line-height: 2em; 26 | text-align: center; 27 | width: 2em; 28 | } 29 | } 30 | } 31 | 32 | a.icon { 33 | &.alt { 34 | &:before { 35 | @include vendor('transition', 'background-color #{_duration(transition)} ease-in-out'); 36 | } 37 | 38 | &:hover { 39 | &:before { 40 | background-color: _palette(accent1); 41 | } 42 | } 43 | 44 | &:active { 45 | &:before { 46 | background-color: desaturate(darken(_palette(accent1), 15), 5); 47 | } 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /public/sass/components/_image.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Image */ 8 | 9 | .image { 10 | border: 0; 11 | display: inline-block; 12 | position: relative; 13 | 14 | img { 15 | display: block; 16 | } 17 | 18 | &.left, 19 | &.right { 20 | max-width: 30%; 21 | 22 | img { 23 | width: 100%; 24 | } 25 | } 26 | 27 | &.left { 28 | float: left; 29 | margin: 0 1.5em 1.25em 0; 30 | top: 0.25em; 31 | } 32 | 33 | &.right { 34 | float: right; 35 | margin: 0 0 1.25em 1.5em; 36 | top: 0.25em; 37 | } 38 | 39 | &.fit { 40 | display: block; 41 | margin: 0 0 _size(element-margin) 0; 42 | width: 100%; 43 | 44 | img { 45 | width: 100%; 46 | } 47 | } 48 | 49 | &.main { 50 | display: block; 51 | margin: (_size(element-margin) * 1.25) 0; 52 | width: 100%; 53 | 54 | img { 55 | width: 100%; 56 | } 57 | 58 | @include breakpoint(small) { 59 | margin: (_size(element-margin) * 0.75) 0; 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /public/sass/components/_section.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Section/Article */ 8 | 9 | section, article { 10 | &.special { 11 | text-align: center; 12 | } 13 | } 14 | 15 | header { 16 | &.major { 17 | width: -moz-max-content; 18 | width: -webkit-max-content; 19 | width: -ms-max-content; 20 | width: max-content; 21 | margin-bottom: _size(element-margin); 22 | 23 | > :first-child { 24 | margin-bottom: 0; 25 | width: calc(100% + 0.5em); 26 | 27 | &:after { 28 | content: ''; 29 | background-color: _palette(fg-bold); 30 | display: block; 31 | height: 2px; 32 | margin: 0.325em 0 0.5em 0; 33 | width: 100%; 34 | } 35 | } 36 | 37 | > p { 38 | font-size: 0.7em; 39 | font-weight: _font(weight-bold); 40 | letter-spacing: _font(letter-spacing-alt); 41 | margin-bottom: 0; 42 | text-transform: uppercase; 43 | } 44 | 45 | body.is-ie & { 46 | > :first-child { 47 | &:after { 48 | max-width: 9em; 49 | } 50 | } 51 | 52 | > h1 { 53 | &:after { 54 | max-width: 100% !important; 55 | } 56 | } 57 | } 58 | } 59 | 60 | @include breakpoint(small) { 61 | &.major { 62 | > p { 63 | br { 64 | display: none; 65 | } 66 | } 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /public/sass/components/_spotlights.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Spotlights */ 8 | 9 | .spotlights { 10 | border-top: 0 !important; 11 | 12 | & + * { 13 | border-top: 0 !important; 14 | } 15 | 16 | > section { 17 | @include vendor('display', 'flex'); 18 | @include vendor('flex-direction', 'row'); 19 | background-color: desaturate(lighten(_palette(bg-alt), 2), 1); 20 | 21 | > .image { 22 | background-position: center center; 23 | background-size: cover; 24 | border-radius: 0; 25 | display: block; 26 | position: relative; 27 | width: 30%; 28 | 29 | img { 30 | border-radius: 0; 31 | display: block; 32 | width: 100%; 33 | } 34 | 35 | &:before { 36 | background: transparentize(_palette(bg), 0.1); 37 | content: ''; 38 | display: block; 39 | height: 100%; 40 | left: 0; 41 | opacity: 0; 42 | position: absolute; 43 | top: 0; 44 | width: 100%; 45 | } 46 | } 47 | 48 | > .content { 49 | @include vendor('display', 'flex'); 50 | @include vendor('flex-direction', 'column'); 51 | @include vendor('justify-content', 'center'); 52 | @include vendor('align-items', 'center'); 53 | @include padding(2em, 3em); 54 | width: 70%; 55 | 56 | > .inner { 57 | margin: 0 auto; 58 | max-width: 100%; 59 | width: _size(inner); 60 | } 61 | } 62 | 63 | &:nth-child(2n) { 64 | @include vendor('flex-direction', 'row-reverse'); 65 | background-color: desaturate(lighten(_palette(bg-alt), 4), 2); 66 | 67 | > .content { 68 | @include vendor('align-items', 'flex-end'); 69 | } 70 | } 71 | } 72 | 73 | @include breakpoint(xlarge) { 74 | > section { 75 | > .image { 76 | width: 40%; 77 | } 78 | 79 | > .content { 80 | width: 60%; 81 | } 82 | } 83 | } 84 | 85 | @include breakpoint(large) { 86 | > section { 87 | > .image { 88 | width: 45%; 89 | } 90 | 91 | > .content { 92 | width: 55%; 93 | } 94 | } 95 | } 96 | 97 | @include breakpoint(medium) { 98 | > section { 99 | display: block; 100 | 101 | > .image { 102 | width: 100%; 103 | } 104 | 105 | > .content { 106 | @include padding(4em, 3em); 107 | width: 100%; 108 | } 109 | } 110 | } 111 | 112 | @include breakpoint(small) { 113 | > section { 114 | > .content { 115 | @include padding(3em, 1.5em); 116 | } 117 | } 118 | } 119 | } -------------------------------------------------------------------------------- /public/sass/components/_table.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Table */ 8 | 9 | .table-wrapper { 10 | -webkit-overflow-scrolling: touch; 11 | overflow-x: auto; 12 | } 13 | 14 | table { 15 | margin: 0 0 _size(element-margin) 0; 16 | width: 100%; 17 | 18 | tbody { 19 | tr { 20 | border: solid 1px _palette(border); 21 | border-left: 0; 22 | border-right: 0; 23 | 24 | &:nth-child(2n + 1) { 25 | background-color: _palette(border-bg); 26 | } 27 | } 28 | } 29 | 30 | td { 31 | padding: 0.75em 0.75em; 32 | } 33 | 34 | th { 35 | color: _palette(fg-bold); 36 | font-size: 0.9em; 37 | font-weight: _font(weight-bold); 38 | padding: 0 0.75em 0.75em 0.75em; 39 | text-align: left; 40 | } 41 | 42 | thead { 43 | border-bottom: solid 2px _palette(border); 44 | } 45 | 46 | tfoot { 47 | border-top: solid 2px _palette(border); 48 | } 49 | 50 | &.alt { 51 | border-collapse: separate; 52 | 53 | tbody { 54 | tr { 55 | td { 56 | border: solid 1px _palette(border); 57 | border-left-width: 0; 58 | border-top-width: 0; 59 | 60 | &:first-child { 61 | border-left-width: 1px; 62 | } 63 | } 64 | 65 | &:first-child { 66 | td { 67 | border-top-width: 1px; 68 | } 69 | } 70 | } 71 | } 72 | 73 | thead { 74 | border-bottom: 0; 75 | } 76 | 77 | tfoot { 78 | border-top: 0; 79 | } 80 | } 81 | } -------------------------------------------------------------------------------- /public/sass/ie8.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | 6 | /* 7 | Forty by HTML5 UP 8 | html5up.net | @ajlkn 9 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 10 | */ 11 | 12 | /* Button */ 13 | 14 | .button { 15 | border: solid 2px !important; 16 | 17 | &.next { 18 | padding-right: 1.75em; 19 | 20 | &:before, &:after { 21 | display: none; 22 | } 23 | } 24 | } 25 | 26 | /* Tiles */ 27 | 28 | .tiles { 29 | article { 30 | width: 50%; 31 | -ms-behavior: url('assets/js/ie/backgroundsize.min.htc'); 32 | background-size: cover; 33 | } 34 | } 35 | 36 | /* Banner */ 37 | 38 | #banner { 39 | -ms-behavior: url('assets/js/ie/backgroundsize.min.htc'); 40 | 41 | &:after { 42 | display: none; 43 | } 44 | } 45 | 46 | /* Menu */ 47 | 48 | #menu { 49 | background: _palette(bg); 50 | } -------------------------------------------------------------------------------- /public/sass/ie9.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | 6 | /* 7 | Forty by HTML5 UP 8 | html5up.net | @ajlkn 9 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 10 | */ 11 | 12 | /* Spotlights */ 13 | 14 | .spotlights { 15 | > section { 16 | &:after { 17 | content: ''; 18 | display: block; 19 | clear: both; 20 | } 21 | 22 | > .image { 23 | float: left; 24 | } 25 | 26 | > .content { 27 | float: left; 28 | } 29 | } 30 | } 31 | 32 | /* Tiles */ 33 | 34 | .tiles { 35 | &:after { 36 | content: ''; 37 | display: block; 38 | clear: both; 39 | } 40 | 41 | article { 42 | @include padding(8em, 4em); 43 | float: left; 44 | height: auto; 45 | max-height: none; 46 | min-height: 0; 47 | } 48 | } 49 | 50 | /* Header */ 51 | 52 | #header { 53 | .logo { 54 | position: absolute; 55 | top: 0; 56 | left: 0; 57 | } 58 | 59 | nav { 60 | position: absolute; 61 | top: 0; 62 | right: 0; 63 | } 64 | } 65 | 66 | /* Banner */ 67 | 68 | #banner { 69 | @include padding(6em, 0, (1em, 0, 0, 0)); 70 | background-attachment: scroll; 71 | height: auto; 72 | max-height: none; 73 | min-height: 0; 74 | 75 | > .inner { 76 | .content { 77 | display: block; 78 | 79 | > * { 80 | margin-left: 0; 81 | margin: 0 0 _size(element-margin) 0; 82 | } 83 | } 84 | } 85 | 86 | &.major { 87 | height: auto; 88 | max-height: none; 89 | min-height: 0; 90 | } 91 | } 92 | 93 | /* Contact */ 94 | 95 | #contact { 96 | &:after { 97 | content: ''; 98 | display: block; 99 | clear: both; 100 | } 101 | 102 | > .inner { 103 | > * { 104 | float: left; 105 | } 106 | } 107 | } 108 | 109 | /* Menu */ 110 | 111 | #menu { 112 | .inner { 113 | margin: 0 auto; 114 | } 115 | } -------------------------------------------------------------------------------- /public/sass/layout/_contact.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Contact */ 8 | 9 | #contact { 10 | border-bottom: solid 1px _palette(border); 11 | overflow-x: hidden; 12 | 13 | > .inner { 14 | @include vendor('display', 'flex'); 15 | padding: 0 !important; 16 | 17 | > :nth-child(2n - 1) { 18 | @include padding(4em, 0, (0, 3em, 0, 0)); 19 | border-right: solid 1px _palette(border); 20 | width: 60%; 21 | } 22 | 23 | > :nth-child(2n) { 24 | padding-left: 3em; 25 | width: 40%; 26 | } 27 | 28 | > .split { 29 | padding: 0; 30 | 31 | > * { 32 | @include padding(3em, 0, (0, 0, 0, 3em)); 33 | position: relative; 34 | 35 | &:before { 36 | border-top: solid 1px _palette(border); 37 | content: ''; 38 | display: block; 39 | margin-left: -3em; 40 | position: absolute; 41 | top: 0; 42 | width: calc(100vw + 3em); 43 | } 44 | } 45 | 46 | > :first-child { 47 | &:before { 48 | display: none; 49 | } 50 | } 51 | } 52 | } 53 | 54 | @include breakpoint(medium) { 55 | > .inner { 56 | display: block; 57 | 58 | > :nth-child(2n - 1) { 59 | @include padding(4em, 0, (0, 0, 0, 0)); 60 | border-right: 0; 61 | width: 100%; 62 | } 63 | 64 | > :nth-child(2n) { 65 | padding-left: 0; 66 | width: 100%; 67 | } 68 | 69 | > .split { 70 | > * { 71 | @include padding(3em, 0, (0, 0, 0, 0)); 72 | 73 | &:before { 74 | } 75 | } 76 | 77 | > :first-child { 78 | &:before { 79 | display: block; 80 | } 81 | } 82 | } 83 | } 84 | } 85 | 86 | @include breakpoint(small) { 87 | > .inner { 88 | > :nth-child(2n - 1) { 89 | @include padding(3em, 0, (0, 0, 0, 0)); 90 | } 91 | } 92 | } 93 | } -------------------------------------------------------------------------------- /public/sass/layout/_footer.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Footer */ 8 | 9 | #footer { 10 | .copyright { 11 | font-size: 0.8em; 12 | list-style: none; 13 | padding-left: 0; 14 | 15 | li { 16 | border-left: solid 1px _palette(border); 17 | color: _palette(fg-light); 18 | display: inline-block; 19 | line-height: 1; 20 | margin-left: 1em; 21 | padding-left: 1em; 22 | 23 | &:first-child { 24 | border-left: 0; 25 | margin-left: 0; 26 | padding-left: 0; 27 | } 28 | } 29 | } 30 | 31 | @include breakpoint(xsmall) { 32 | .copyright { 33 | li { 34 | display: block; 35 | border-left: 0; 36 | margin-left: 0; 37 | padding-left: 0; 38 | line-height: inherit; 39 | } 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /public/sass/layout/_main.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Main */ 8 | 9 | #main { 10 | background-color: _palette(bg-alt); 11 | 12 | > * { 13 | border-top: solid 1px _palette(border); 14 | 15 | &:first-child { 16 | border-top: 0; 17 | } 18 | 19 | @include inner; 20 | } 21 | 22 | &.alt { 23 | background-color: transparent; 24 | border-bottom: solid 1px _palette(border); 25 | } 26 | } -------------------------------------------------------------------------------- /public/sass/layout/_wrapper.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Wrapper */ 8 | 9 | #wrapper { 10 | @include vendor('transition', ( 11 | 'filter #{_duration(menu)} ease', 12 | '-webkit-filter #{_duration(menu)} ease', 13 | 'opacity 0.375s ease-out' 14 | )); 15 | padding-top: 3.25em; 16 | 17 | &.is-transitioning { 18 | opacity: 0; 19 | } 20 | 21 | > * { 22 | @include inner; 23 | } 24 | 25 | @include breakpoint(small) { 26 | padding-top: 2.75em; 27 | } 28 | } -------------------------------------------------------------------------------- /public/sass/libs/_functions.scss: -------------------------------------------------------------------------------- 1 | /// Gets a duration value. 2 | /// @param {string} $keys Key(s). 3 | /// @return {string} Value. 4 | @function _duration($keys...) { 5 | @return val($duration, $keys...); 6 | } 7 | 8 | /// Gets a font value. 9 | /// @param {string} $keys Key(s). 10 | /// @return {string} Value. 11 | @function _font($keys...) { 12 | @return val($font, $keys...); 13 | } 14 | 15 | /// Gets a misc value. 16 | /// @param {string} $keys Key(s). 17 | /// @return {string} Value. 18 | @function _misc($keys...) { 19 | @return val($misc, $keys...); 20 | } 21 | 22 | /// Gets a palette value. 23 | /// @param {string} $keys Key(s). 24 | /// @return {string} Value. 25 | @function _palette($keys...) { 26 | @return val($palette, $keys...); 27 | } 28 | 29 | /// Gets a size value. 30 | /// @param {string} $keys Key(s). 31 | /// @return {string} Value. 32 | @function _size($keys...) { 33 | @return val($size, $keys...); 34 | } -------------------------------------------------------------------------------- /public/sass/libs/_vars.scss: -------------------------------------------------------------------------------- 1 | // Misc. 2 | $misc: ( 3 | z-index-base: 10000 4 | ); 5 | 6 | // Duration. 7 | $duration: ( 8 | menu: 0.35s, 9 | transition: 0.2s, 10 | banner: 2.5s 11 | ); 12 | 13 | // Size. 14 | $size: ( 15 | border-radius: 4px, 16 | element-height: 2.75em, 17 | element-margin: 2em, 18 | inner: 65em 19 | ); 20 | 21 | // Font. 22 | $font: ( 23 | family: ('Source Sans Pro', Helvetica, sans-serif), 24 | family-fixed: ('Courier New', monospace), 25 | weight: 300, 26 | weight-bold: 600, 27 | letter-spacing: 0.025em, 28 | letter-spacing-alt: 0.25em 29 | ); 30 | 31 | // Palette. 32 | $palette: ( 33 | bg: #242943, 34 | bg-alt: #2a2f4a, 35 | fg: #ffffff, 36 | fg-bold: #ffffff, 37 | fg-light: rgba(244,244,255,0.2), 38 | border: rgba(212,212,255,0.1), 39 | border-bg: rgba(212,212,255,0.035), 40 | highlight: #9bf1ff, 41 | accent1: #6fc3df, 42 | accent2: #8d82c4, 43 | accent3: #ec8d81, 44 | accent4: #e7b788, 45 | accent5: #8ea9e8, 46 | accent6: #87c5a4 47 | ); -------------------------------------------------------------------------------- /public/sass/main.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | @import 'font-awesome.min.css'; 6 | @import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300italic,600,600italic'); 7 | 8 | /* 9 | Forty by HTML5 UP 10 | html5up.net | @ajlkn 11 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 12 | */ 13 | 14 | @include skel-breakpoints(( 15 | xlarge: '(max-width: 1680px)', 16 | large: '(max-width: 1280px)', 17 | medium: '(max-width: 980px)', 18 | small: '(max-width: 736px)', 19 | xsmall: '(max-width: 480px)', 20 | xxsmall: '(max-width: 360px)' 21 | )); 22 | 23 | @include skel-layout(( 24 | reset: 'full', 25 | boxModel: 'border', 26 | grid: ( gutters: 2em ), 27 | breakpoints: ( 28 | large: ( 29 | grid: ( gutters: 1.5em ) 30 | ), 31 | small: ( 32 | grid: ( gutters: 1.25em ) 33 | ) 34 | ) 35 | )); 36 | 37 | @mixin inner { 38 | > .inner { 39 | @include padding(4em, 0); 40 | margin: 0 auto; 41 | max-width: _size(inner); 42 | width: calc(100% - 6em); 43 | 44 | @include breakpoint(small) { 45 | @include padding(3em, 0); 46 | width: calc(100% - 3em); 47 | } 48 | } 49 | } 50 | 51 | // Base. 52 | 53 | @import 'base/page'; 54 | @import 'base/typography'; 55 | 56 | // Component. 57 | 58 | @import 'components/section'; 59 | @import 'components/form'; 60 | @import 'components/box'; 61 | @import 'components/icon'; 62 | @import 'components/image'; 63 | @import 'components/list'; 64 | @import 'components/table'; 65 | @import 'components/button'; 66 | @import 'components/tiles'; 67 | @import 'components/contact-method'; 68 | @import 'components/spotlights'; 69 | 70 | // Layout. 71 | 72 | @import 'layout/header'; 73 | @import 'layout/banner'; 74 | @import 'layout/main'; 75 | @import 'layout/contact'; 76 | @import 'layout/footer'; 77 | @import 'layout/wrapper'; 78 | @import 'layout/menu'; -------------------------------------------------------------------------------- /public/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | /posts/ 7 | 2020-04-23T01:24:49+02:00 8 | 9 | 10 | 11 | / 12 | 2020-04-23T01:24:49+02:00 13 | 14 | 15 | 16 | /posts/youtube/ 17 | 2020-04-23T01:24:49+02:00 18 | 19 | 20 | 21 | /posts/canary/ 22 | 2018-11-09T01:24:49+02:00 23 | 24 | 25 | 26 | /posts/chaos/ 27 | 2018-11-09T01:24:49+02:00 28 | 29 | 30 | 31 | /posts/devops-25/ 32 | 2018-11-09T01:24:49+02:00 33 | 34 | 35 | 36 | /posts/devops-26/ 37 | 2018-11-09T01:24:49+02:00 38 | 39 | 40 | 41 | /posts/catalog/ 42 | 2018-11-09T01:24:49+02:00 43 | 44 | 45 | 46 | /posts/devops-24/ 47 | 2018-08-23T01:24:49+02:00 48 | 49 | 50 | 51 | /posts/devops-23/ 52 | 2017-12-14T15:17:10+02:00 53 | 54 | 55 | 56 | /posts/devops-22/ 57 | 2017-09-21T15:17:10+02:00 58 | 59 | 60 | 61 | /posts/devops-21/ 62 | 2017-09-21T15:12:25+02:00 63 | 64 | 65 | 66 | /posts/devops-20/ 67 | 2017-09-21T13:31:31+02:00 68 | 69 | 70 | 71 | /categories/ 72 | 73 | 74 | 75 | /tags/ 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /public/tags/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Tags on The DevOps Toolkit Series 5 | /tags/ 6 | Recent content in Tags on The DevOps Toolkit Series 7 | Hugo -- gohugo.io 8 | en-us 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/.DS_Store -------------------------------------------------------------------------------- /static/css-dimension/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/css-dimension/bg.jpg -------------------------------------------------------------------------------- /static/css-dimension/ie9.css: -------------------------------------------------------------------------------- 1 | /* 2 | Dimension by HTML5 UP 3 | html5up.net | @ajlkn 4 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | */ 6 | 7 | /* BG */ 8 | 9 | #bg:before { 10 | background: rgba(19, 21, 25, 0.5); 11 | } 12 | 13 | /* Header */ 14 | 15 | #header .logo { 16 | margin: 0 auto; 17 | } 18 | 19 | #header .content { 20 | display: inline-block; 21 | } 22 | 23 | #header nav ul { 24 | display: inline-block; 25 | } 26 | 27 | #header nav ul li { 28 | display: inline-block; 29 | } 30 | 31 | /* Main */ 32 | 33 | #main article { 34 | margin: 0 auto; 35 | } -------------------------------------------------------------------------------- /static/css-dimension/noscript.css: -------------------------------------------------------------------------------- 1 | /* 2 | Dimension by HTML5 UP 3 | html5up.net | @ajlkn 4 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | */ 6 | 7 | /* Main */ 8 | 9 | #main article { 10 | opacity: 1; 11 | margin: 4rem 0 0 0; 12 | } -------------------------------------------------------------------------------- /static/css-dimension/overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/css-dimension/overlay.png -------------------------------------------------------------------------------- /static/css-dimension/project.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/css-dimension/project.css -------------------------------------------------------------------------------- /static/css/ie8.css: -------------------------------------------------------------------------------- 1 | /* Button */ 2 | 3 | .button { 4 | border: solid 2px !important; 5 | } 6 | 7 | .button.next { 8 | padding-right: 1.75em; 9 | } 10 | 11 | .button.next:before, .button.next:after { 12 | display: none; 13 | } 14 | 15 | /* Tiles */ 16 | 17 | .tiles article { 18 | width: 50%; 19 | -ms-behavior: url("assets/js/ie/backgroundsize.min.htc"); 20 | background-size: cover; 21 | } 22 | 23 | /* Banner */ 24 | 25 | #banner { 26 | -ms-behavior: url("assets/js/ie/backgroundsize.min.htc"); 27 | } 28 | 29 | #banner:after { 30 | display: none; 31 | } 32 | 33 | /* Menu */ 34 | 35 | #menu { 36 | background: #242943; 37 | } -------------------------------------------------------------------------------- /static/css/ie9.css: -------------------------------------------------------------------------------- 1 | /* Spotlights */ 2 | 3 | .spotlights > section:after { 4 | content: ''; 5 | display: block; 6 | clear: both; 7 | } 8 | 9 | .spotlights > section > .image { 10 | float: left; 11 | } 12 | 13 | .spotlights > section > .content { 14 | float: left; 15 | } 16 | 17 | /* Tiles */ 18 | 19 | .tiles:after { 20 | content: ''; 21 | display: block; 22 | clear: both; 23 | } 24 | 25 | .tiles article { 26 | padding: 8em 4em 6em 4em ; 27 | float: left; 28 | height: auto; 29 | max-height: none; 30 | min-height: 0; 31 | } 32 | 33 | /* Header */ 34 | 35 | #header .logo { 36 | position: absolute; 37 | top: 0; 38 | left: 0; 39 | } 40 | 41 | #header nav { 42 | position: absolute; 43 | top: 0; 44 | right: 0; 45 | } 46 | 47 | /* Banner */ 48 | 49 | #banner { 50 | padding: 7em 0 4em 0 ; 51 | background-attachment: scroll; 52 | height: auto; 53 | max-height: none; 54 | min-height: 0; 55 | } 56 | 57 | #banner > .inner .content { 58 | display: block; 59 | } 60 | 61 | #banner > .inner .content > * { 62 | margin-left: 0; 63 | margin: 0 0 2em 0; 64 | } 65 | 66 | #banner.major { 67 | height: auto; 68 | max-height: none; 69 | min-height: 0; 70 | } 71 | 72 | /* Contact */ 73 | 74 | #contact:after { 75 | content: ''; 76 | display: block; 77 | clear: both; 78 | } 79 | 80 | #contact > .inner > * { 81 | float: left; 82 | } 83 | 84 | /* Menu */ 85 | 86 | #menu .inner { 87 | margin: 0 auto; 88 | } -------------------------------------------------------------------------------- /static/fonts-dimension/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/fonts-dimension/FontAwesome.otf -------------------------------------------------------------------------------- /static/fonts-dimension/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/fonts-dimension/fontawesome-webfont.eot -------------------------------------------------------------------------------- /static/fonts-dimension/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/fonts-dimension/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /static/fonts-dimension/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/fonts-dimension/fontawesome-webfont.woff -------------------------------------------------------------------------------- /static/fonts-dimension/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/fonts-dimension/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /static/images/devops22-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/images/devops22-small.jpg -------------------------------------------------------------------------------- /static/images/devops22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/images/devops22.jpg -------------------------------------------------------------------------------- /static/images/devops23-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/images/devops23-small.jpg -------------------------------------------------------------------------------- /static/images/viktor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/static/images/viktor.png -------------------------------------------------------------------------------- /static/js/ie/html5shiv.js: -------------------------------------------------------------------------------- 1 | /* 2 | HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); 5 | a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; 6 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| 7 | "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment(); 8 | for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d1){for(var r=0;r=i&&o>=t};break;case"bottom":h=function(t,e,n,i,o){return n>=i&&o>=n};break;case"middle":h=function(t,e,n,i,o){return e>=i&&o>=e};break;case"top-only":h=function(t,e,n,i,o){return i>=t&&n>=i};break;case"bottom-only":h=function(t,e,n,i,o){return n>=o&&o>=t};break;default:case"default":h=function(t,e,n,i,o){return n>=i&&o>=t}}return c=function(t){var i,o,l,s,r,a,u=this.state,h=!1,c=this.$element.offset();i=n.height(),o=t+i/2,l=t+i,s=this.$element.outerHeight(),r=c.top+e(this.options.top,s,i),a=c.top+s-e(this.options.bottom,s,i),h=this.test(t,o,l,r,a),h!=u&&(this.state=h,h?this.options.enter&&this.options.enter.apply(this.element):this.options.leave&&this.options.leave.apply(this.element)),this.options.scroll&&this.options.scroll.apply(this.element,[(o-r)/(a-r)])},p={id:a,options:u,test:h,handler:c,state:null,element:this,$element:s,timeoutId:null},o[a]=p,s.data("_scrollexId",p.id),p.options.initialize&&p.options.initialize.apply(this),s},jQuery.fn.unscrollex=function(){var e=t(this);if(0==this.length)return e;if(this.length>1){for(var n=0;n1){for(o=0;o=320px. 15 | @include breakpoint(xsmall) { 16 | html, body { 17 | min-width: 320px; 18 | } 19 | } 20 | 21 | body { 22 | background: _palette(bg); 23 | 24 | // Prevents animation/transition "flicker" on page load. 25 | // Automatically added/removed by js/main.js. 26 | &.is-loading, 27 | &.is-switching { 28 | *, *:before, *:after { 29 | @include vendor('animation', 'none !important'); 30 | @include vendor('transition', 'none !important'); 31 | @include vendor('transition-delay', 'none !important'); 32 | } 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /static/sass-dimension/components/_box.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Box */ 8 | 9 | .box { 10 | border-radius: _size(border-radius); 11 | border: solid _size(border-width) _palette(border); 12 | margin-bottom: _size(element-margin); 13 | padding: 1.5em; 14 | 15 | > :last-child, 16 | > :last-child > :last-child, 17 | > :last-child > :last-child > :last-child { 18 | margin-bottom: 0; 19 | } 20 | 21 | &.alt { 22 | border: 0; 23 | border-radius: 0; 24 | padding: 0; 25 | } 26 | } -------------------------------------------------------------------------------- /static/sass-dimension/components/_button.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Button */ 8 | 9 | input[type="submit"], 10 | input[type="reset"], 11 | input[type="button"], 12 | button, 13 | .button { 14 | @include vendor('appearance', 'none'); 15 | @include vendor('transition', 'background-color #{_duration(transition)} ease-in-out, color #{_duration(transition)} ease-in-out'); 16 | background-color: transparent; 17 | border-radius: _size(border-radius); 18 | border: 0; 19 | box-shadow: inset 0 0 0 _size(border-width) _palette(border); 20 | color: _palette(fg-bold) !important; 21 | cursor: pointer; 22 | display: inline-block; 23 | font-size: 0.8rem; 24 | font-weight: _font(weight); 25 | height: _size(element-height); 26 | letter-spacing: _font(letter-spacing); 27 | line-height: _size(element-height); 28 | outline: 0; 29 | padding: 0 1.25rem 0 (1.25rem + (_font(letter-spacing) * 0.5)); 30 | text-align: center; 31 | text-decoration: none; 32 | text-transform: uppercase; 33 | white-space: nowrap; 34 | 35 | &:hover { 36 | background-color: _palette(border-bg); 37 | } 38 | 39 | &:active { 40 | background-color: _palette(border-bg-alt); 41 | } 42 | 43 | &.icon { 44 | &:before { 45 | margin-right: 0.5em; 46 | } 47 | } 48 | 49 | &.fit { 50 | display: block; 51 | margin: 0 0 (_size(element-margin) * 0.5) 0; 52 | width: 100%; 53 | } 54 | 55 | &.special { 56 | background-color: _palette(fg-bold); 57 | color: _palette(bg) !important; 58 | font-weight: _font(weight-bold); 59 | 60 | &:hover { 61 | } 62 | 63 | &:active { 64 | } 65 | } 66 | 67 | &.disabled, 68 | &:disabled { 69 | @include vendor('pointer-events', 'none'); 70 | cursor: default; 71 | opacity: 0.25; 72 | } 73 | } 74 | 75 | input[type="submit"], 76 | input[type="reset"], 77 | input[type="button"], 78 | button { 79 | line-height: calc(#{_size(element-height)} - 2px); 80 | } -------------------------------------------------------------------------------- /static/sass-dimension/components/_icon.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Icon */ 8 | 9 | .icon { 10 | @include icon; 11 | border-bottom: none; 12 | position: relative; 13 | 14 | > .label { 15 | display: none; 16 | } 17 | } -------------------------------------------------------------------------------- /static/sass-dimension/components/_image.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Image */ 8 | 9 | .image { 10 | border-radius: _size(border-radius); 11 | border: 0; 12 | display: inline-block; 13 | position: relative; 14 | 15 | &:before { 16 | @include vendor('pointer-events', 'none'); 17 | background-image: url('/images/overlay.png'); 18 | background-color: _palette(bg-overlay); 19 | border-radius: _size(border-radius); 20 | content: ''; 21 | display: block; 22 | height: 100%; 23 | left: 0; 24 | opacity: 0.5; 25 | position: absolute; 26 | top: 0; 27 | width: 100%; 28 | } 29 | 30 | img { 31 | border-radius: _size(border-radius); 32 | display: block; 33 | } 34 | 35 | &.left, 36 | &.right { 37 | max-width: 40%; 38 | 39 | img { 40 | width: 100%; 41 | } 42 | } 43 | 44 | &.left { 45 | float: left; 46 | padding: 0 1.5em 1em 0; 47 | top: 0.25em; 48 | } 49 | 50 | &.right { 51 | float: right; 52 | padding: 0 0 1em 1.5em; 53 | top: 0.25em; 54 | } 55 | 56 | &.fit { 57 | display: block; 58 | margin: 0 0 _size(element-margin) 0; 59 | width: 100%; 60 | 61 | img { 62 | width: 100%; 63 | } 64 | } 65 | 66 | &.main { 67 | display: block; 68 | margin: (_size(element-margin) * 1.25) 0; 69 | width: 100%; 70 | 71 | img { 72 | width: 100%; 73 | } 74 | } 75 | 76 | @include breakpoint(small) { 77 | &.main { 78 | margin: (_size(element-margin) * 1) 0; 79 | } 80 | } 81 | 82 | @include breakpoint(xsmall) { 83 | &.main { 84 | margin: (_size(element-margin) * 0.75) 0; 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /static/sass-dimension/components/_table.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Table */ 8 | 9 | .table-wrapper { 10 | -webkit-overflow-scrolling: touch; 11 | overflow-x: auto; 12 | } 13 | 14 | table { 15 | margin: 0 0 _size(element-margin) 0; 16 | width: 100%; 17 | 18 | tbody { 19 | tr { 20 | border: solid _size(border-width) _palette(border); 21 | border-left: 0; 22 | border-right: 0; 23 | 24 | &:nth-child(2n + 1) { 25 | background-color: _palette(border-bg); 26 | } 27 | } 28 | } 29 | 30 | td { 31 | padding: 0.75em 0.75em; 32 | } 33 | 34 | th { 35 | color: _palette(fg-bold); 36 | font-size: 0.9em; 37 | font-weight: _font(weight-bold); 38 | padding: 0 0.75em 0.75em 0.75em; 39 | text-align: left; 40 | } 41 | 42 | thead { 43 | border-bottom: solid (_size(border-width) * 2) _palette(border); 44 | } 45 | 46 | tfoot { 47 | border-top: solid (_size(border-width) * 2) _palette(border); 48 | } 49 | 50 | &.alt { 51 | border-collapse: separate; 52 | 53 | tbody { 54 | tr { 55 | td { 56 | border: solid _size(border-width) _palette(border); 57 | border-left-width: 0; 58 | border-top-width: 0; 59 | 60 | &:first-child { 61 | border-left-width: _size(border-width); 62 | } 63 | } 64 | 65 | &:first-child { 66 | td { 67 | border-top-width: _size(border-width); 68 | } 69 | } 70 | } 71 | } 72 | 73 | thead { 74 | border-bottom: 0; 75 | } 76 | 77 | tfoot { 78 | border-top: 0; 79 | } 80 | } 81 | } -------------------------------------------------------------------------------- /static/sass-dimension/ie9.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | 6 | /* 7 | Dimension by HTML5 UP 8 | html5up.net | @ajlkn 9 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 10 | */ 11 | 12 | /* BG */ 13 | 14 | #bg { 15 | &:before { 16 | background: _palette(bg-overlay); 17 | } 18 | } 19 | 20 | /* Header */ 21 | 22 | #header { 23 | .logo { 24 | margin: 0 auto; 25 | } 26 | 27 | .content { 28 | display: inline-block; 29 | } 30 | 31 | nav { 32 | ul { 33 | display: inline-block; 34 | 35 | li { 36 | display: inline-block; 37 | } 38 | } 39 | } 40 | } 41 | 42 | /* Main */ 43 | 44 | #main { 45 | article { 46 | margin: 0 auto; 47 | } 48 | } -------------------------------------------------------------------------------- /static/sass-dimension/layout/_bg.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* BG */ 8 | 9 | #bg { 10 | @include vendor('transform', 'scale(1.0)'); 11 | -webkit-backface-visibility: hidden; 12 | position: fixed; 13 | top: 0; 14 | left: 0; 15 | width: 100%; 16 | height: 100vh; 17 | z-index: 1; 18 | 19 | &:before, &:after { 20 | content: ''; 21 | display: block; 22 | position: absolute; 23 | top: 0; 24 | left: 0; 25 | width: 100%; 26 | height: 100%; 27 | } 28 | 29 | &:before { 30 | @include vendor('transition', 'background-color #{_duration(bg)} ease-in-out'); 31 | @include vendor('transition-delay', '#{_duration(intro)}'); 32 | background-image: linear-gradient(to top, #{_palette(bg-overlay)}, #{_palette(bg-overlay)}), 33 | url('/images/overlay.png'); 34 | background-size: auto, 35 | 256px 256px; 36 | background-position: center, 37 | center; 38 | background-repeat: no-repeat, 39 | repeat; 40 | z-index: 2; 41 | } 42 | 43 | &:after { 44 | @include vendor('transform', 'scale(1.125)'); 45 | @include vendor('transition', ( 46 | 'transform #{_duration(article)} ease-in-out', 47 | 'filter #{_duration(article)} ease-in-out' 48 | )); 49 | background-image: url('/images/bg.jpg'); 50 | background-position: center; 51 | background-size: cover; 52 | background-repeat: no-repeat; 53 | z-index: 1; 54 | } 55 | 56 | body.is-article-visible & { 57 | &:after { 58 | @include vendor('transform', 'scale(1.0825)'); 59 | @include vendor('filter', 'blur(0.2rem)'); 60 | } 61 | } 62 | 63 | body.is-loading & { 64 | &:before { 65 | background-color: _palette(bg-alt); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /static/sass-dimension/layout/_footer.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Footer */ 8 | 9 | #footer { 10 | @include vendor('transition', ( 11 | 'transform #{_duration(article)} ease-in-out', 12 | 'filter #{_duration(article)} ease-in-out', 13 | 'opacity #{_duration(article)} ease-in-out', 14 | )); 15 | width: 100%; 16 | max-width: 100%; 17 | margin-top: 2rem; 18 | text-align: center; 19 | 20 | .copyright { 21 | letter-spacing: _font(letter-spacing); 22 | font-size: 0.6rem; 23 | opacity: 0.75; 24 | margin-bottom: 0; 25 | text-transform: uppercase; 26 | } 27 | 28 | body.is-article-visible & { 29 | @include vendor('transform', 'scale(0.95)'); 30 | @include vendor('filter', 'blur(0.1rem)'); 31 | opacity: 0; 32 | } 33 | 34 | body.is-loading & { 35 | opacity: 0; 36 | } 37 | } -------------------------------------------------------------------------------- /static/sass-dimension/layout/_main.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Main */ 8 | 9 | #main { 10 | @include vendor('flex-grow', '1'); 11 | @include vendor('flex-shrink', '1'); 12 | @include vendor('display', 'flex'); 13 | @include vendor('align-items', 'center'); 14 | @include vendor('justify-content', 'center'); 15 | @include vendor('flex-direction', 'column'); 16 | position: relative; 17 | max-width: 100%; 18 | z-index: 3; 19 | 20 | article { 21 | @include vendor('transform', 'translateY(0.25rem)'); 22 | @include vendor('transition', ( 23 | 'opacity #{_duration(article)} ease-in-out', 24 | 'transform #{_duration(article)} ease-in-out' 25 | )); 26 | @include padding(2.5rem, 2.5rem, (2rem, 0, 1rem, 0)); 27 | position: relative; 28 | width: 40rem; 29 | max-width: 100%; 30 | background-color: transparentize(_palette(bg), 0.15); 31 | border-radius: _size(border-radius); 32 | opacity: 0; 33 | 34 | &.active { 35 | @include vendor('transform', 'translateY(0)'); 36 | opacity: 1; 37 | } 38 | 39 | .close { 40 | display: block; 41 | position: absolute; 42 | top: 0; 43 | right: 0; 44 | width: 4rem; 45 | height: 4rem; 46 | cursor: pointer; 47 | text-indent: 4rem; 48 | overflow: hidden; 49 | white-space: nowrap; 50 | 51 | &:before { 52 | @include vendor('transition', 'background-color #{_duration(transition)} ease-in-out'); 53 | content: ''; 54 | display: block; 55 | position: absolute; 56 | top: 0.75rem; 57 | left: 0.75rem; 58 | width: 2.5rem; 59 | height: 2.5rem; 60 | border-radius: 100%; 61 | background-position: center; 62 | background-image: svg-url(''); 63 | background-size: 20px 20px; 64 | background-repeat: no-repeat; 65 | } 66 | 67 | &:hover { 68 | &:before { 69 | background-color: _palette(border-bg); 70 | } 71 | } 72 | 73 | &:active { 74 | &:before { 75 | background-color: _palette(border-bg-alt); 76 | } 77 | } 78 | } 79 | } 80 | 81 | @include breakpoint(small) { 82 | article { 83 | @include padding(2rem, 2rem, (1.5rem, 0, 0.5rem, 0)); 84 | 85 | .close { 86 | &:before { 87 | top: 0.875rem; 88 | left: 0.875rem; 89 | width: 2.25rem; 90 | height: 2.25rem; 91 | background-size: 14px 14px; 92 | } 93 | } 94 | } 95 | } 96 | 97 | @include breakpoint(xsmall) { 98 | article { 99 | @include padding(2rem, 1.5rem, (1rem, 0, 0.5rem, 0)); 100 | } 101 | } 102 | } -------------------------------------------------------------------------------- /static/sass-dimension/layout/_wrapper.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Dimension by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Wrapper */ 8 | 9 | #wrapper { 10 | @include vendor('display', 'flex'); 11 | @include vendor('flex-direction', 'column'); 12 | @include vendor('align-items', 'center'); 13 | @include vendor('justify-content', 'space-between'); 14 | position: relative; 15 | min-height: 100vh; 16 | width: 100%; 17 | padding: 4rem 2rem; 18 | z-index: 3; 19 | 20 | &:before { 21 | content: ''; 22 | display: block; 23 | } 24 | 25 | @include breakpoint(xlarge) { 26 | padding: 3rem 2rem; 27 | } 28 | 29 | @include breakpoint(small) { 30 | padding: 2rem 1rem; 31 | } 32 | 33 | @include breakpoint(xsmall) { 34 | padding: 1rem; 35 | } 36 | } -------------------------------------------------------------------------------- /static/sass-dimension/libs/_functions.scss: -------------------------------------------------------------------------------- 1 | /// Gets a duration value. 2 | /// @param {string} $keys Key(s). 3 | /// @return {string} Value. 4 | @function _duration($keys...) { 5 | @return val($duration, $keys...); 6 | } 7 | 8 | /// Gets a font value. 9 | /// @param {string} $keys Key(s). 10 | /// @return {string} Value. 11 | @function _font($keys...) { 12 | @return val($font, $keys...); 13 | } 14 | 15 | /// Gets a misc value. 16 | /// @param {string} $keys Key(s). 17 | /// @return {string} Value. 18 | @function _misc($keys...) { 19 | @return val($misc, $keys...); 20 | } 21 | 22 | /// Gets a palette value. 23 | /// @param {string} $keys Key(s). 24 | /// @return {string} Value. 25 | @function _palette($keys...) { 26 | @return val($palette, $keys...); 27 | } 28 | 29 | /// Gets a size value. 30 | /// @param {string} $keys Key(s). 31 | /// @return {string} Value. 32 | @function _size($keys...) { 33 | @return val($size, $keys...); 34 | } -------------------------------------------------------------------------------- /static/sass-dimension/libs/_mixins.scss: -------------------------------------------------------------------------------- 1 | /// Makes an element's :before pseudoelement a FontAwesome icon. 2 | /// @param {string} $content Optional content value to use. 3 | /// @param {string} $where Optional pseudoelement to target (before or after). 4 | @mixin icon($content: false, $where: before) { 5 | 6 | text-decoration: none; 7 | 8 | &:#{$where} { 9 | 10 | @if $content { 11 | content: $content; 12 | } 13 | 14 | -moz-osx-font-smoothing: grayscale; 15 | -webkit-font-smoothing: antialiased; 16 | font-family: FontAwesome; 17 | font-style: normal; 18 | font-weight: normal; 19 | text-transform: none !important; 20 | 21 | } 22 | 23 | } 24 | 25 | /// Applies padding to an element, taking the current element-margin value into account. 26 | /// @param {mixed} $tb Top/bottom padding. 27 | /// @param {mixed} $lr Left/right padding. 28 | /// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left) 29 | /// @param {bool} $important If true, adds !important. 30 | @mixin padding($tb, $lr, $pad: (0,0,0,0), $important: null) { 31 | 32 | @if $important { 33 | $important: '!important'; 34 | } 35 | 36 | $x: 0.1em; 37 | 38 | @if unit(_size(element-margin)) == 'rem' { 39 | $x: 0.1rem; 40 | } 41 | 42 | padding: ($tb + nth($pad,1)) ($lr + nth($pad,2)) max($x, $tb - _size(element-margin) + nth($pad,3)) ($lr + nth($pad,4)) #{$important}; 43 | 44 | } 45 | 46 | /// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp). 47 | /// @param {string} $svg SVG data URL. 48 | /// @return {string} Encoded SVG data URL. 49 | @function svg-url($svg) { 50 | 51 | $svg: str-replace($svg, '"', '\''); 52 | $svg: str-replace($svg, '<', '%3C'); 53 | $svg: str-replace($svg, '>', '%3E'); 54 | $svg: str-replace($svg, '&', '%26'); 55 | $svg: str-replace($svg, '#', '%23'); 56 | $svg: str-replace($svg, '{', '%7B'); 57 | $svg: str-replace($svg, '}', '%7D'); 58 | $svg: str-replace($svg, ';', '%3B'); 59 | 60 | @return url("data:image/svg+xml;charset=utf8,#{$svg}"); 61 | 62 | } -------------------------------------------------------------------------------- /static/sass-dimension/libs/_vars.scss: -------------------------------------------------------------------------------- 1 | // Misc. 2 | $misc: ( 3 | z-index-base: 10000 4 | ); 5 | 6 | // Duration. 7 | $duration: ( 8 | transition: 0.2s, 9 | bg: 2.5s, 10 | intro: 0.75s, 11 | article: 0.325s 12 | ); 13 | 14 | // Size. 15 | $size: ( 16 | border-radius: 4px, 17 | border-width: 1px, 18 | element-height: 2.75rem, 19 | element-margin: 2rem 20 | ); 21 | 22 | // Font. 23 | $font: ( 24 | family: ('Source Sans Pro', sans-serif), 25 | family-fixed: ('Courier New', monospace), 26 | weight: 300, 27 | weight-bold: 600, 28 | letter-spacing: 0.2rem, 29 | letter-spacing-heading: 0.5rem 30 | ); 31 | 32 | // Palette. 33 | $palette: ( 34 | bg: #1b1f22, 35 | bg-alt: #000000, 36 | bg-overlay: rgba(19,21,25,0.5), 37 | fg: #ffffff, 38 | fg-bold: #ffffff, 39 | fg-light: rgba(255,255,255,0.5), 40 | border: #ffffff, 41 | border-bg: rgba(255,255,255,0.075), 42 | border-bg-alt: rgba(255,255,255,0.175) 43 | ); -------------------------------------------------------------------------------- /static/sass-dimension/main.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | @import 'font-awesome.min.css'; 6 | @import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:300italic,600italic,300,600'); 7 | 8 | /* 9 | Dimension by HTML5 UP 10 | html5up.net | @ajlkn 11 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 12 | */ 13 | 14 | @include skel-breakpoints(( 15 | xlarge: '(max-width: 1680px)', 16 | large: '(max-width: 1280px)', 17 | medium: '(max-width: 980px)', 18 | small: '(max-width: 736px)', 19 | xsmall: '(max-width: 480px)', 20 | xxsmall: '(max-width: 360px)' 21 | )); 22 | 23 | @include skel-layout(( 24 | reset: 'full', 25 | boxModel: 'border' 26 | )); 27 | 28 | // Base. 29 | 30 | @import 'base/page'; 31 | @import 'base/typography'; 32 | 33 | // Component. 34 | 35 | @import 'components/form'; 36 | @import 'components/box'; 37 | @import 'components/icon'; 38 | @import 'components/image'; 39 | @import 'components/list'; 40 | @import 'components/table'; 41 | @import 'components/button'; 42 | 43 | // Layout. 44 | 45 | @import 'layout/bg'; 46 | @import 'layout/wrapper'; 47 | @import 'layout/header'; 48 | @import 'layout/main'; 49 | @import 'layout/footer'; -------------------------------------------------------------------------------- /static/sass-dimension/noscript.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | 6 | /* 7 | Dimension by HTML5 UP 8 | html5up.net | @ajlkn 9 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 10 | */ 11 | 12 | /* Main */ 13 | 14 | #main { 15 | article { 16 | opacity: 1; 17 | margin: (_size(element-margin) * 2) 0 0 0; 18 | } 19 | } -------------------------------------------------------------------------------- /static/sass/base/_page.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Basic */ 8 | 9 | // MSIE: Required for IEMobile. 10 | @-ms-viewport { 11 | width: device-width; 12 | } 13 | 14 | // MSIE: Prevents scrollbar from overlapping content. 15 | body { 16 | -ms-overflow-style: scrollbar; 17 | } 18 | 19 | // Ensures page width is always >=320px. 20 | @include breakpoint(xsmall) { 21 | html, body { 22 | min-width: 320px; 23 | } 24 | } 25 | 26 | body { 27 | background: _palette(bg); 28 | 29 | // Prevents animation/transition "flicker" on page load. 30 | // Automatically added/removed by js/main.js. 31 | &.is-loading { 32 | *, *:before, *:after { 33 | @include vendor('animation', 'none !important'); 34 | @include vendor('transition', 'none !important'); 35 | } 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /static/sass/components/_box.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Box */ 8 | 9 | .box { 10 | border: solid 1px _palette(border); 11 | margin-bottom: _size(element-margin); 12 | padding: 1.5em; 13 | 14 | > :last-child, 15 | > :last-child > :last-child, 16 | > :last-child > :last-child > :last-child { 17 | margin-bottom: 0; 18 | } 19 | 20 | &.alt { 21 | border: 0; 22 | border-radius: 0; 23 | padding: 0; 24 | } 25 | } -------------------------------------------------------------------------------- /static/sass/components/_contact-method.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Contact Method */ 8 | 9 | .contact-method { 10 | margin: 0 0 _size(element-margin) 0; 11 | padding-left: 3.25em; 12 | position: relative; 13 | 14 | .icon { 15 | left: 0; 16 | position: absolute; 17 | top: 0; 18 | } 19 | 20 | h3 { 21 | margin: 0 0 (_size(element-margin) * 0.25) 0; 22 | } 23 | } -------------------------------------------------------------------------------- /static/sass/components/_icon.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Icon */ 8 | 9 | .icon { 10 | @include icon; 11 | border-bottom: none; 12 | position: relative; 13 | 14 | > .label { 15 | display: none; 16 | } 17 | 18 | &.alt { 19 | &:before { 20 | background-color: _palette(fg-bold); 21 | border-radius: 100%; 22 | color: _palette(bg); 23 | display: inline-block; 24 | height: 2em; 25 | line-height: 2em; 26 | text-align: center; 27 | width: 2em; 28 | } 29 | } 30 | } 31 | 32 | a.icon { 33 | &.alt { 34 | &:before { 35 | @include vendor('transition', 'background-color #{_duration(transition)} ease-in-out'); 36 | } 37 | 38 | &:hover { 39 | &:before { 40 | background-color: _palette(accent1); 41 | } 42 | } 43 | 44 | &:active { 45 | &:before { 46 | background-color: desaturate(darken(_palette(accent1), 15), 5); 47 | } 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /static/sass/components/_image.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Image */ 8 | 9 | .image { 10 | border: 0; 11 | display: inline-block; 12 | position: relative; 13 | 14 | img { 15 | display: block; 16 | } 17 | 18 | &.left, 19 | &.right { 20 | max-width: 30%; 21 | 22 | img { 23 | width: 100%; 24 | } 25 | } 26 | 27 | &.left { 28 | float: left; 29 | margin: 0 1.5em 1.25em 0; 30 | top: 0.25em; 31 | } 32 | 33 | &.right { 34 | float: right; 35 | margin: 0 0 1.25em 1.5em; 36 | top: 0.25em; 37 | } 38 | 39 | &.fit { 40 | display: block; 41 | margin: 0 0 _size(element-margin) 0; 42 | width: 100%; 43 | 44 | img { 45 | width: 100%; 46 | } 47 | } 48 | 49 | &.main { 50 | display: block; 51 | margin: (_size(element-margin) * 1.25) 0; 52 | width: 100%; 53 | 54 | img { 55 | width: 100%; 56 | } 57 | 58 | @include breakpoint(small) { 59 | margin: (_size(element-margin) * 0.75) 0; 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /static/sass/components/_section.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Section/Article */ 8 | 9 | section, article { 10 | &.special { 11 | text-align: center; 12 | } 13 | } 14 | 15 | header { 16 | &.major { 17 | width: -moz-max-content; 18 | width: -webkit-max-content; 19 | width: -ms-max-content; 20 | width: max-content; 21 | margin-bottom: _size(element-margin); 22 | 23 | > :first-child { 24 | margin-bottom: 0; 25 | width: calc(100% + 0.5em); 26 | 27 | &:after { 28 | content: ''; 29 | background-color: _palette(fg-bold); 30 | display: block; 31 | height: 2px; 32 | margin: 0.325em 0 0.5em 0; 33 | width: 100%; 34 | } 35 | } 36 | 37 | > p { 38 | font-size: 0.7em; 39 | font-weight: _font(weight-bold); 40 | letter-spacing: _font(letter-spacing-alt); 41 | margin-bottom: 0; 42 | text-transform: uppercase; 43 | } 44 | 45 | body.is-ie & { 46 | > :first-child { 47 | &:after { 48 | max-width: 9em; 49 | } 50 | } 51 | 52 | > h1 { 53 | &:after { 54 | max-width: 100% !important; 55 | } 56 | } 57 | } 58 | } 59 | 60 | @include breakpoint(small) { 61 | &.major { 62 | > p { 63 | br { 64 | display: none; 65 | } 66 | } 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /static/sass/components/_spotlights.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Spotlights */ 8 | 9 | .spotlights { 10 | border-top: 0 !important; 11 | 12 | & + * { 13 | border-top: 0 !important; 14 | } 15 | 16 | > section { 17 | @include vendor('display', 'flex'); 18 | @include vendor('flex-direction', 'row'); 19 | background-color: desaturate(lighten(_palette(bg-alt), 2), 1); 20 | 21 | > .image { 22 | background-position: center center; 23 | background-size: cover; 24 | border-radius: 0; 25 | display: block; 26 | position: relative; 27 | width: 30%; 28 | 29 | img { 30 | border-radius: 0; 31 | display: block; 32 | width: 100%; 33 | } 34 | 35 | &:before { 36 | background: transparentize(_palette(bg), 0.1); 37 | content: ''; 38 | display: block; 39 | height: 100%; 40 | left: 0; 41 | opacity: 0; 42 | position: absolute; 43 | top: 0; 44 | width: 100%; 45 | } 46 | } 47 | 48 | > .content { 49 | @include vendor('display', 'flex'); 50 | @include vendor('flex-direction', 'column'); 51 | @include vendor('justify-content', 'center'); 52 | @include vendor('align-items', 'center'); 53 | @include padding(2em, 3em); 54 | width: 70%; 55 | 56 | > .inner { 57 | margin: 0 auto; 58 | max-width: 100%; 59 | width: _size(inner); 60 | } 61 | } 62 | 63 | &:nth-child(2n) { 64 | @include vendor('flex-direction', 'row-reverse'); 65 | background-color: desaturate(lighten(_palette(bg-alt), 4), 2); 66 | 67 | > .content { 68 | @include vendor('align-items', 'flex-end'); 69 | } 70 | } 71 | } 72 | 73 | @include breakpoint(xlarge) { 74 | > section { 75 | > .image { 76 | width: 40%; 77 | } 78 | 79 | > .content { 80 | width: 60%; 81 | } 82 | } 83 | } 84 | 85 | @include breakpoint(large) { 86 | > section { 87 | > .image { 88 | width: 45%; 89 | } 90 | 91 | > .content { 92 | width: 55%; 93 | } 94 | } 95 | } 96 | 97 | @include breakpoint(medium) { 98 | > section { 99 | display: block; 100 | 101 | > .image { 102 | width: 100%; 103 | } 104 | 105 | > .content { 106 | @include padding(4em, 3em); 107 | width: 100%; 108 | } 109 | } 110 | } 111 | 112 | @include breakpoint(small) { 113 | > section { 114 | > .content { 115 | @include padding(3em, 1.5em); 116 | } 117 | } 118 | } 119 | } -------------------------------------------------------------------------------- /static/sass/components/_table.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Table */ 8 | 9 | .table-wrapper { 10 | -webkit-overflow-scrolling: touch; 11 | overflow-x: auto; 12 | } 13 | 14 | table { 15 | margin: 0 0 _size(element-margin) 0; 16 | width: 100%; 17 | 18 | tbody { 19 | tr { 20 | border: solid 1px _palette(border); 21 | border-left: 0; 22 | border-right: 0; 23 | 24 | &:nth-child(2n + 1) { 25 | background-color: _palette(border-bg); 26 | } 27 | } 28 | } 29 | 30 | td { 31 | padding: 0.75em 0.75em; 32 | } 33 | 34 | th { 35 | color: _palette(fg-bold); 36 | font-size: 0.9em; 37 | font-weight: _font(weight-bold); 38 | padding: 0 0.75em 0.75em 0.75em; 39 | text-align: left; 40 | } 41 | 42 | thead { 43 | border-bottom: solid 2px _palette(border); 44 | } 45 | 46 | tfoot { 47 | border-top: solid 2px _palette(border); 48 | } 49 | 50 | &.alt { 51 | border-collapse: separate; 52 | 53 | tbody { 54 | tr { 55 | td { 56 | border: solid 1px _palette(border); 57 | border-left-width: 0; 58 | border-top-width: 0; 59 | 60 | &:first-child { 61 | border-left-width: 1px; 62 | } 63 | } 64 | 65 | &:first-child { 66 | td { 67 | border-top-width: 1px; 68 | } 69 | } 70 | } 71 | } 72 | 73 | thead { 74 | border-bottom: 0; 75 | } 76 | 77 | tfoot { 78 | border-top: 0; 79 | } 80 | } 81 | } -------------------------------------------------------------------------------- /static/sass/ie8.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | 6 | /* 7 | Forty by HTML5 UP 8 | html5up.net | @ajlkn 9 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 10 | */ 11 | 12 | /* Button */ 13 | 14 | .button { 15 | border: solid 2px !important; 16 | 17 | &.next { 18 | padding-right: 1.75em; 19 | 20 | &:before, &:after { 21 | display: none; 22 | } 23 | } 24 | } 25 | 26 | /* Tiles */ 27 | 28 | .tiles { 29 | article { 30 | width: 50%; 31 | -ms-behavior: url('assets/js/ie/backgroundsize.min.htc'); 32 | background-size: cover; 33 | } 34 | } 35 | 36 | /* Banner */ 37 | 38 | #banner { 39 | -ms-behavior: url('assets/js/ie/backgroundsize.min.htc'); 40 | 41 | &:after { 42 | display: none; 43 | } 44 | } 45 | 46 | /* Menu */ 47 | 48 | #menu { 49 | background: _palette(bg); 50 | } -------------------------------------------------------------------------------- /static/sass/ie9.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | 6 | /* 7 | Forty by HTML5 UP 8 | html5up.net | @ajlkn 9 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 10 | */ 11 | 12 | /* Spotlights */ 13 | 14 | .spotlights { 15 | > section { 16 | &:after { 17 | content: ''; 18 | display: block; 19 | clear: both; 20 | } 21 | 22 | > .image { 23 | float: left; 24 | } 25 | 26 | > .content { 27 | float: left; 28 | } 29 | } 30 | } 31 | 32 | /* Tiles */ 33 | 34 | .tiles { 35 | &:after { 36 | content: ''; 37 | display: block; 38 | clear: both; 39 | } 40 | 41 | article { 42 | @include padding(8em, 4em); 43 | float: left; 44 | height: auto; 45 | max-height: none; 46 | min-height: 0; 47 | } 48 | } 49 | 50 | /* Header */ 51 | 52 | #header { 53 | .logo { 54 | position: absolute; 55 | top: 0; 56 | left: 0; 57 | } 58 | 59 | nav { 60 | position: absolute; 61 | top: 0; 62 | right: 0; 63 | } 64 | } 65 | 66 | /* Banner */ 67 | 68 | #banner { 69 | @include padding(6em, 0, (1em, 0, 0, 0)); 70 | background-attachment: scroll; 71 | height: auto; 72 | max-height: none; 73 | min-height: 0; 74 | 75 | > .inner { 76 | .content { 77 | display: block; 78 | 79 | > * { 80 | margin-left: 0; 81 | margin: 0 0 _size(element-margin) 0; 82 | } 83 | } 84 | } 85 | 86 | &.major { 87 | height: auto; 88 | max-height: none; 89 | min-height: 0; 90 | } 91 | } 92 | 93 | /* Contact */ 94 | 95 | #contact { 96 | &:after { 97 | content: ''; 98 | display: block; 99 | clear: both; 100 | } 101 | 102 | > .inner { 103 | > * { 104 | float: left; 105 | } 106 | } 107 | } 108 | 109 | /* Menu */ 110 | 111 | #menu { 112 | .inner { 113 | margin: 0 auto; 114 | } 115 | } -------------------------------------------------------------------------------- /static/sass/layout/_contact.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Contact */ 8 | 9 | #contact { 10 | border-bottom: solid 1px _palette(border); 11 | overflow-x: hidden; 12 | 13 | > .inner { 14 | @include vendor('display', 'flex'); 15 | padding: 0 !important; 16 | 17 | > :nth-child(2n - 1) { 18 | @include padding(4em, 0, (0, 3em, 0, 0)); 19 | border-right: solid 1px _palette(border); 20 | width: 60%; 21 | } 22 | 23 | > :nth-child(2n) { 24 | padding-left: 3em; 25 | width: 40%; 26 | } 27 | 28 | > .split { 29 | padding: 0; 30 | 31 | > * { 32 | @include padding(3em, 0, (0, 0, 0, 3em)); 33 | position: relative; 34 | 35 | &:before { 36 | border-top: solid 1px _palette(border); 37 | content: ''; 38 | display: block; 39 | margin-left: -3em; 40 | position: absolute; 41 | top: 0; 42 | width: calc(100vw + 3em); 43 | } 44 | } 45 | 46 | > :first-child { 47 | &:before { 48 | display: none; 49 | } 50 | } 51 | } 52 | } 53 | 54 | @include breakpoint(medium) { 55 | > .inner { 56 | display: block; 57 | 58 | > :nth-child(2n - 1) { 59 | @include padding(4em, 0, (0, 0, 0, 0)); 60 | border-right: 0; 61 | width: 100%; 62 | } 63 | 64 | > :nth-child(2n) { 65 | padding-left: 0; 66 | width: 100%; 67 | } 68 | 69 | > .split { 70 | > * { 71 | @include padding(3em, 0, (0, 0, 0, 0)); 72 | 73 | &:before { 74 | } 75 | } 76 | 77 | > :first-child { 78 | &:before { 79 | display: block; 80 | } 81 | } 82 | } 83 | } 84 | } 85 | 86 | @include breakpoint(small) { 87 | > .inner { 88 | > :nth-child(2n - 1) { 89 | @include padding(3em, 0, (0, 0, 0, 0)); 90 | } 91 | } 92 | } 93 | } -------------------------------------------------------------------------------- /static/sass/layout/_footer.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Footer */ 8 | 9 | #footer { 10 | .copyright { 11 | font-size: 0.8em; 12 | list-style: none; 13 | padding-left: 0; 14 | 15 | li { 16 | border-left: solid 1px _palette(border); 17 | color: _palette(fg-light); 18 | display: inline-block; 19 | line-height: 1; 20 | margin-left: 1em; 21 | padding-left: 1em; 22 | 23 | &:first-child { 24 | border-left: 0; 25 | margin-left: 0; 26 | padding-left: 0; 27 | } 28 | } 29 | } 30 | 31 | @include breakpoint(xsmall) { 32 | .copyright { 33 | li { 34 | display: block; 35 | border-left: 0; 36 | margin-left: 0; 37 | padding-left: 0; 38 | line-height: inherit; 39 | } 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /static/sass/layout/_main.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Main */ 8 | 9 | #main { 10 | background-color: _palette(bg-alt); 11 | 12 | > * { 13 | border-top: solid 1px _palette(border); 14 | 15 | &:first-child { 16 | border-top: 0; 17 | } 18 | 19 | @include inner; 20 | } 21 | 22 | &.alt { 23 | background-color: transparent; 24 | border-bottom: solid 1px _palette(border); 25 | } 26 | } -------------------------------------------------------------------------------- /static/sass/layout/_wrapper.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Wrapper */ 8 | 9 | #wrapper { 10 | @include vendor('transition', ( 11 | 'filter #{_duration(menu)} ease', 12 | '-webkit-filter #{_duration(menu)} ease', 13 | 'opacity 0.375s ease-out' 14 | )); 15 | padding-top: 3.25em; 16 | 17 | &.is-transitioning { 18 | opacity: 0; 19 | } 20 | 21 | > * { 22 | @include inner; 23 | } 24 | 25 | @include breakpoint(small) { 26 | padding-top: 2.75em; 27 | } 28 | } -------------------------------------------------------------------------------- /static/sass/libs/_functions.scss: -------------------------------------------------------------------------------- 1 | /// Gets a duration value. 2 | /// @param {string} $keys Key(s). 3 | /// @return {string} Value. 4 | @function _duration($keys...) { 5 | @return val($duration, $keys...); 6 | } 7 | 8 | /// Gets a font value. 9 | /// @param {string} $keys Key(s). 10 | /// @return {string} Value. 11 | @function _font($keys...) { 12 | @return val($font, $keys...); 13 | } 14 | 15 | /// Gets a misc value. 16 | /// @param {string} $keys Key(s). 17 | /// @return {string} Value. 18 | @function _misc($keys...) { 19 | @return val($misc, $keys...); 20 | } 21 | 22 | /// Gets a palette value. 23 | /// @param {string} $keys Key(s). 24 | /// @return {string} Value. 25 | @function _palette($keys...) { 26 | @return val($palette, $keys...); 27 | } 28 | 29 | /// Gets a size value. 30 | /// @param {string} $keys Key(s). 31 | /// @return {string} Value. 32 | @function _size($keys...) { 33 | @return val($size, $keys...); 34 | } -------------------------------------------------------------------------------- /static/sass/libs/_vars.scss: -------------------------------------------------------------------------------- 1 | // Misc. 2 | $misc: ( 3 | z-index-base: 10000 4 | ); 5 | 6 | // Duration. 7 | $duration: ( 8 | menu: 0.35s, 9 | transition: 0.2s, 10 | banner: 2.5s 11 | ); 12 | 13 | // Size. 14 | $size: ( 15 | border-radius: 4px, 16 | element-height: 2.75em, 17 | element-margin: 2em, 18 | inner: 65em 19 | ); 20 | 21 | // Font. 22 | $font: ( 23 | family: ('Source Sans Pro', Helvetica, sans-serif), 24 | family-fixed: ('Courier New', monospace), 25 | weight: 300, 26 | weight-bold: 600, 27 | letter-spacing: 0.025em, 28 | letter-spacing-alt: 0.25em 29 | ); 30 | 31 | // Palette. 32 | $palette: ( 33 | bg: #242943, 34 | bg-alt: #2a2f4a, 35 | fg: #ffffff, 36 | fg-bold: #ffffff, 37 | fg-light: rgba(244,244,255,0.2), 38 | border: rgba(212,212,255,0.1), 39 | border-bg: rgba(212,212,255,0.035), 40 | highlight: #9bf1ff, 41 | accent1: #6fc3df, 42 | accent2: #8d82c4, 43 | accent3: #ec8d81, 44 | accent4: #e7b788, 45 | accent5: #8ea9e8, 46 | accent6: #87c5a4 47 | ); -------------------------------------------------------------------------------- /static/sass/main.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | @import 'font-awesome.min.css'; 6 | @import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300italic,600,600italic'); 7 | 8 | /* 9 | Forty by HTML5 UP 10 | html5up.net | @ajlkn 11 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 12 | */ 13 | 14 | @include skel-breakpoints(( 15 | xlarge: '(max-width: 1680px)', 16 | large: '(max-width: 1280px)', 17 | medium: '(max-width: 980px)', 18 | small: '(max-width: 736px)', 19 | xsmall: '(max-width: 480px)', 20 | xxsmall: '(max-width: 360px)' 21 | )); 22 | 23 | @include skel-layout(( 24 | reset: 'full', 25 | boxModel: 'border', 26 | grid: ( gutters: 2em ), 27 | breakpoints: ( 28 | large: ( 29 | grid: ( gutters: 1.5em ) 30 | ), 31 | small: ( 32 | grid: ( gutters: 1.25em ) 33 | ) 34 | ) 35 | )); 36 | 37 | @mixin inner { 38 | > .inner { 39 | @include padding(4em, 0); 40 | margin: 0 auto; 41 | max-width: _size(inner); 42 | width: calc(100% - 6em); 43 | 44 | @include breakpoint(small) { 45 | @include padding(3em, 0); 46 | width: calc(100% - 3em); 47 | } 48 | } 49 | } 50 | 51 | // Base. 52 | 53 | @import 'base/page'; 54 | @import 'base/typography'; 55 | 56 | // Component. 57 | 58 | @import 'components/section'; 59 | @import 'components/form'; 60 | @import 'components/box'; 61 | @import 'components/icon'; 62 | @import 'components/image'; 63 | @import 'components/list'; 64 | @import 'components/table'; 65 | @import 'components/button'; 66 | @import 'components/tiles'; 67 | @import 'components/contact-method'; 68 | @import 'components/spotlights'; 69 | 70 | // Layout. 71 | 72 | @import 'layout/header'; 73 | @import 'layout/banner'; 74 | @import 'layout/main'; 75 | @import 'layout/contact'; 76 | @import 'layout/footer'; 77 | @import 'layout/wrapper'; 78 | @import 'layout/menu'; -------------------------------------------------------------------------------- /themes/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/.DS_Store -------------------------------------------------------------------------------- /themes/forty/.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto -------------------------------------------------------------------------------- /themes/forty/.gitignore: -------------------------------------------------------------------------------- 1 | backups/ -------------------------------------------------------------------------------- /themes/forty/archetypes/default.md: -------------------------------------------------------------------------------- 1 | +++ 2 | +++ -------------------------------------------------------------------------------- /themes/forty/exampleSite/archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .TranslationBaseName "-" " " | title }}" 3 | description: "" 4 | slug: "" 5 | image: "" 6 | keywords: "" 7 | categories: 8 | - "{{ replace .TranslationBaseName "-" " " | title }}" 9 | - "" 10 | date: {{ .Date }} 11 | draft: false 12 | --- 13 | -------------------------------------------------------------------------------- /themes/forty/exampleSite/content/blogs/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Lifestyle" 3 | slug: "blogs" 4 | image: pic02.jpg 5 | date: 2017-10-31T22:27:21-05:00 6 | draft: false 7 | --- 8 | 9 | My blogs about technology and lifestyle. -------------------------------------------------------------------------------- /themes/forty/exampleSite/content/blogs/blog1.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Ipsum" 3 | description: "" 4 | slug: "ipsum" 5 | image: pic10.jpg 6 | keywords: "" 7 | categories: 8 | - "" 9 | - "" 10 | date: 2017-10-31T21:28:43-05:00 11 | draft: false 12 | --- 13 | 14 | Nullam et orci eu lorem consequat tincidunt vivamus et sagittis magna sed nunc rhoncus condimentum sem. In efficitur ligula tate urna. Maecenas massa sed magna lacinia magna pellentesque lorem ipsum dolor. Nullam et orci eu lorem consequat tincidunt. Vivamus et sagittis tempus. -------------------------------------------------------------------------------- /themes/forty/exampleSite/content/blogs/blog2.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Magna" 3 | description: "Lorem Etiam Nullam" 4 | slug: "magna" 5 | image: pic09.jpg 6 | keywords: "" 7 | categories: 8 | - "" 9 | - "" 10 | date: 2017-10-31T22:26:09-05:00 11 | draft: false 12 | --- 13 | -------------------------------------------------------------------------------- /themes/forty/exampleSite/content/blogs/blog3.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Tempus" 3 | description: "Nullam et orci eu lorem consequat tincidunt vivamus et sagittis magna sed nunc rhoncus condimentum sem. In efficitur ligula tate urna. Maecenas massa sed magna lacinia magna pellentesque lorem ipsum dolor. Nullam et orci eu lorem consequat tincidunt. Vivamus et sagittis tempus." 4 | slug: "tempus" 5 | image: pic08.jpg 6 | keywords: "" 7 | categories: 8 | - "" 9 | - "" 10 | date: 2017-10-31T22:26:13-05:00 11 | draft: false 12 | --- 13 | -------------------------------------------------------------------------------- /themes/forty/exampleSite/content/blogs/blog4.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Aliquam" 3 | description: "Nullam et orci eu lorem consequat tincidunt vivamus et sagittis magna sed nunc rhoncus condimentum sem. In efficitur ligula tate urna. Maecenas massa sed magna lacinia magna pellentesque lorem ipsum dolor. Nullam et orci eu lorem consequat tincidunt. Vivamus et sagittis tempus." 4 | slug: "aliquam" 5 | image: pic07.jpg 6 | keywords: "" 7 | categories: 8 | - "" 9 | - "" 10 | date: 2017-10-31T22:42:51-05:00 11 | draft: false 12 | --- 13 | -------------------------------------------------------------------------------- /themes/forty/exampleSite/netlify.toml: -------------------------------------------------------------------------------- 1 | [context.production.environment] 2 | HUGO_VERSION = "0.31" 3 | 4 | [context.deploy-preview.environment] 5 | HUGO_VERSION = "0.31" 6 | -------------------------------------------------------------------------------- /themes/forty/exampleSite/static/img/blogs/pic07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/exampleSite/static/img/blogs/pic07.jpg -------------------------------------------------------------------------------- /themes/forty/exampleSite/static/img/blogs/pic08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/exampleSite/static/img/blogs/pic08.jpg -------------------------------------------------------------------------------- /themes/forty/exampleSite/static/img/blogs/pic09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/exampleSite/static/img/blogs/pic09.jpg -------------------------------------------------------------------------------- /themes/forty/exampleSite/static/img/blogs/pic10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/exampleSite/static/img/blogs/pic10.jpg -------------------------------------------------------------------------------- /themes/forty/images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/images/screenshot.png -------------------------------------------------------------------------------- /themes/forty/images/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/images/tn.png -------------------------------------------------------------------------------- /themes/forty/layouts/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ partial "header.html" . }} 6 | 7 | 8 | {{ "" | safeHTML }} 9 |
10 | 11 | {{ partial "nav.html" . }} 12 | 13 | {{ "" | safeHTML }} 14 |
15 |
16 |

{{ .Site.Params.Error404.heading }}

17 |

{{ .Site.Params.Error404.text | markdownify }}

18 |
19 |
20 | 21 | {{ "" | safeHTML}} 22 | {{ if .Site.Params.Footer.enable }} 23 | {{ partial "footer.html" . }} 24 | {{ end }} 25 | 26 |
27 | 28 | {{ "" | safeHTML}} 29 | {{ partial "js.html" . }} 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /themes/forty/layouts/_default/list.html: -------------------------------------------------------------------------------- 1 | 2 | {{ "" | safeHTML }} 3 | {{ partial "header.html" . }} 4 | 5 | 6 | 7 | {{ "" | safeHTML }} 8 |
9 | 10 | {{ partial "nav.html" . }} 11 | 12 | {{ "" | safeHTML }} 13 |
14 | 15 | 30 | 31 |
32 | {{ range .Pages }} 33 |
34 | 35 | 36 | 37 |
38 |
39 |
40 |

{{ .Title }}

41 |
42 |

{{ .Description }}

43 | 46 |
47 |
48 |
49 | {{ end }} 50 |
51 |
52 | 53 | {{ "" | safeHTML}} 54 | {{ if .Site.Params.footer.enable }} 55 | {{ partial "footer.html" . }} 56 | {{ end }} 57 | 58 |
59 | 60 | {{ "" | safeHTML}} 61 | {{ partial "js.html" . }} 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /themes/forty/layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ partial "header.html" . }} 5 | 6 | 7 | {{ "" | safeHTML }} 8 |
9 | 10 | {{ partial "nav.html" . }} 11 | 12 | {{ "" | safeHTML }} 13 |
14 | 15 | 16 |
17 |
18 |
19 |

{{ .Title}}

20 |
21 | {{ if .Params.image }} 22 | 23 | {{ end }} 24 | {{ .Content }} 25 |
26 |
27 | {{ "" | safeHTML }} 28 | {{ if .Site.DisqusShortname }} 29 | {{ partial "disqus.html" . }} 30 | {{ end }} 31 |
32 | 33 | {{ "" | safeHTML}} 34 | {{ if .Site.Params.footer.enable }} 35 | {{ partial "footer.html" . }} 36 | {{ end }} 37 |
38 | 39 | {{ "" | safeHTML}} 40 | {{ partial "js.html" . }} 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /themes/forty/layouts/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ partial "header.html" . }} 5 | 6 | 7 | {{ "" | safeHTML }} 8 |
9 | 10 | {{ partial "nav.html" . }} 11 | 12 | {{ partial "banner.html" . }} 13 | 14 | {{ "" | safeHTML }} 15 |
16 | 17 | {{ if .Site.Params.Tiles.enable }} 18 | {{ partial "tile.html" . }} 19 | {{ end }} 20 | 21 | {{ if .Site.Params.Two.enable }} 22 | {{ partial "two.html" . }} 23 | {{ end }} 24 | 25 |
26 | 27 | {{ "" | safeHTML}} 28 | {{ if .Site.Params.Contact.enable }} 29 | {{ partial "contact.html" . }} 30 | {{ end }} 31 | 32 | {{ "" | safeHTML}} 33 | {{ if .Site.Params.Footer.enable }} 34 | {{ partial "footer.html" . }} 35 | {{ end }} 36 | 37 |
38 | 39 | {{ "" | safeHTML}} 40 | {{ partial "js.html" . }} 41 | 42 | 43 | -------------------------------------------------------------------------------- /themes/forty/layouts/partials/banner.html: -------------------------------------------------------------------------------- 1 | {{ "" | safeHTML}} 2 | -------------------------------------------------------------------------------- /themes/forty/layouts/partials/disqus.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 17 | 18 | 19 |
-------------------------------------------------------------------------------- /themes/forty/layouts/partials/footer.html: -------------------------------------------------------------------------------- 1 | {{ "" | safeHTML}} 2 |
3 |
4 |
    5 | {{ range .Site.Params.Footer.social }} 6 |
  • {{ .label }}
  • 7 | {{ end }} 8 |
9 | 15 |
16 |
17 | -------------------------------------------------------------------------------- /themes/forty/layouts/partials/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ with .Site.Params.description }}{{ end }} 6 | {{ with .Site.Params.name }}{{ end }} 7 | {{ hugo.Generator }} 8 | {{ .Title }}{{ if not .IsHome }} · {{ .Site.Title }}{{ end }} 9 | {{ "" | safeHTML }} 10 | 11 | 12 | 13 | 14 | 15 | {{ range .Site.Params.custom_css }} 16 | 17 | {{ end }} 18 | 19 | {{ "" | safeHTML }} 20 | 21 | 22 | {{ with .Site.Params.favicon }} 23 | 24 | 25 | {{ end }} 26 | 27 | {{ "" | safeHTML }} 28 | {{ "" | safeHTML }} 29 | {{ "" | safeHTML }} 33 | 34 | -------------------------------------------------------------------------------- /themes/forty/layouts/partials/js.html: -------------------------------------------------------------------------------- 1 | {{ "" | safeHTML}} 2 | {{ "" | safeHTML }} 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | {{ "" | safeHTML }} 12 | 13 | 14 | {{ template "_internal/google_analytics_async.html" . }} 15 | 16 | {{ range .Site.Params.custom_js }} 17 | 18 | {{ end }} -------------------------------------------------------------------------------- /themes/forty/layouts/partials/nav.html: -------------------------------------------------------------------------------- 1 | {{ "" | safeHTML }} 2 | 8 | 9 | {{ "" | safeHTML }} 10 | -------------------------------------------------------------------------------- /themes/forty/layouts/partials/tile.html: -------------------------------------------------------------------------------- 1 | {{ "" | safeHTML }} 2 |
3 | {{ range .Site.Params.Tiles.showcase }} 4 |
5 | 6 | 7 | 8 |
9 |

{{ .title }}

10 |

{{ .subtitle }}

11 |
12 |
13 | {{ end }} 14 |
-------------------------------------------------------------------------------- /themes/forty/layouts/partials/two.html: -------------------------------------------------------------------------------- 1 | {{ "" | safeHTML}} 2 |
3 |
4 |
5 |

{{ .Site.Params.Two.title}}

6 |
7 |

{{ .Site.Params.Two.subtitle }}

8 | 11 |
12 |
-------------------------------------------------------------------------------- /themes/forty/static/css/ie8.css: -------------------------------------------------------------------------------- 1 | /* Button */ 2 | 3 | .button { 4 | border: solid 2px !important; 5 | } 6 | 7 | .button.next { 8 | padding-right: 1.75em; 9 | } 10 | 11 | .button.next:before, .button.next:after { 12 | display: none; 13 | } 14 | 15 | /* Tiles */ 16 | 17 | .tiles article { 18 | width: 50%; 19 | -ms-behavior: url("assets/js/ie/backgroundsize.min.htc"); 20 | background-size: cover; 21 | } 22 | 23 | /* Banner */ 24 | 25 | #banner { 26 | -ms-behavior: url("assets/js/ie/backgroundsize.min.htc"); 27 | } 28 | 29 | #banner:after { 30 | display: none; 31 | } 32 | 33 | /* Menu */ 34 | 35 | #menu { 36 | background: #242943; 37 | } -------------------------------------------------------------------------------- /themes/forty/static/css/ie9.css: -------------------------------------------------------------------------------- 1 | /* Spotlights */ 2 | 3 | .spotlights > section:after { 4 | content: ''; 5 | display: block; 6 | clear: both; 7 | } 8 | 9 | .spotlights > section > .image { 10 | float: left; 11 | } 12 | 13 | .spotlights > section > .content { 14 | float: left; 15 | } 16 | 17 | /* Tiles */ 18 | 19 | .tiles:after { 20 | content: ''; 21 | display: block; 22 | clear: both; 23 | } 24 | 25 | .tiles article { 26 | padding: 8em 4em 6em 4em ; 27 | float: left; 28 | height: auto; 29 | max-height: none; 30 | min-height: 0; 31 | } 32 | 33 | /* Header */ 34 | 35 | #header .logo { 36 | position: absolute; 37 | top: 0; 38 | left: 0; 39 | } 40 | 41 | #header nav { 42 | position: absolute; 43 | top: 0; 44 | right: 0; 45 | } 46 | 47 | /* Banner */ 48 | 49 | #banner { 50 | padding: 7em 0 4em 0 ; 51 | background-attachment: scroll; 52 | height: auto; 53 | max-height: none; 54 | min-height: 0; 55 | } 56 | 57 | #banner > .inner .content { 58 | display: block; 59 | } 60 | 61 | #banner > .inner .content > * { 62 | margin-left: 0; 63 | margin: 0 0 2em 0; 64 | } 65 | 66 | #banner.major { 67 | height: auto; 68 | max-height: none; 69 | min-height: 0; 70 | } 71 | 72 | /* Contact */ 73 | 74 | #contact:after { 75 | content: ''; 76 | display: block; 77 | clear: both; 78 | } 79 | 80 | #contact > .inner > * { 81 | float: left; 82 | } 83 | 84 | /* Menu */ 85 | 86 | #menu .inner { 87 | margin: 0 auto; 88 | } -------------------------------------------------------------------------------- /themes/forty/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /themes/forty/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /themes/forty/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /themes/forty/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /themes/forty/static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /themes/forty/static/img/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/static/img/banner.jpg -------------------------------------------------------------------------------- /themes/forty/static/img/pic01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/static/img/pic01.jpg -------------------------------------------------------------------------------- /themes/forty/static/img/pic02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/static/img/pic02.jpg -------------------------------------------------------------------------------- /themes/forty/static/img/pic03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/static/img/pic03.jpg -------------------------------------------------------------------------------- /themes/forty/static/img/pic04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/static/img/pic04.jpg -------------------------------------------------------------------------------- /themes/forty/static/img/pic05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/static/img/pic05.jpg -------------------------------------------------------------------------------- /themes/forty/static/img/pic06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vfarcic/devspace-vcluster-argocd-demo/3d6a70881b787575d65b5e0d278cefefc05caeec/themes/forty/static/img/pic06.jpg -------------------------------------------------------------------------------- /themes/forty/static/js/ie/html5shiv.js: -------------------------------------------------------------------------------- 1 | /* 2 | HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); 5 | a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; 6 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| 7 | "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment(); 8 | for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d1){for(var r=0;r=i&&o>=t};break;case"bottom":h=function(t,e,n,i,o){return n>=i&&o>=n};break;case"middle":h=function(t,e,n,i,o){return e>=i&&o>=e};break;case"top-only":h=function(t,e,n,i,o){return i>=t&&n>=i};break;case"bottom-only":h=function(t,e,n,i,o){return n>=o&&o>=t};break;default:case"default":h=function(t,e,n,i,o){return n>=i&&o>=t}}return c=function(t){var i,o,l,s,r,a,u=this.state,h=!1,c=this.$element.offset();i=n.height(),o=t+i/2,l=t+i,s=this.$element.outerHeight(),r=c.top+e(this.options.top,s,i),a=c.top+s-e(this.options.bottom,s,i),h=this.test(t,o,l,r,a),h!=u&&(this.state=h,h?this.options.enter&&this.options.enter.apply(this.element):this.options.leave&&this.options.leave.apply(this.element)),this.options.scroll&&this.options.scroll.apply(this.element,[(o-r)/(a-r)])},p={id:a,options:u,test:h,handler:c,state:null,element:this,$element:s,timeoutId:null},o[a]=p,s.data("_scrollexId",p.id),p.options.initialize&&p.options.initialize.apply(this),s},jQuery.fn.unscrollex=function(){var e=t(this);if(0==this.length)return e;if(this.length>1){for(var n=0;n1){for(o=0;o=320px. 20 | @include breakpoint(xsmall) { 21 | html, body { 22 | min-width: 320px; 23 | } 24 | } 25 | 26 | body { 27 | background: _palette(bg); 28 | 29 | // Prevents animation/transition "flicker" on page load. 30 | // Automatically added/removed by js/main.js. 31 | &.is-loading { 32 | *, *:before, *:after { 33 | @include vendor('animation', 'none !important'); 34 | @include vendor('transition', 'none !important'); 35 | } 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/components/_box.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Box */ 8 | 9 | .box { 10 | border: solid 1px _palette(border); 11 | margin-bottom: _size(element-margin); 12 | padding: 1.5em; 13 | 14 | > :last-child, 15 | > :last-child > :last-child, 16 | > :last-child > :last-child > :last-child { 17 | margin-bottom: 0; 18 | } 19 | 20 | &.alt { 21 | border: 0; 22 | border-radius: 0; 23 | padding: 0; 24 | } 25 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/components/_contact-method.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Contact Method */ 8 | 9 | .contact-method { 10 | margin: 0 0 _size(element-margin) 0; 11 | padding-left: 3.25em; 12 | position: relative; 13 | 14 | .icon { 15 | left: 0; 16 | position: absolute; 17 | top: 0; 18 | } 19 | 20 | h3 { 21 | margin: 0 0 (_size(element-margin) * 0.25) 0; 22 | } 23 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/components/_icon.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Icon */ 8 | 9 | .icon { 10 | @include icon; 11 | border-bottom: none; 12 | position: relative; 13 | 14 | > .label { 15 | display: none; 16 | } 17 | 18 | &.alt { 19 | &:before { 20 | background-color: _palette(fg-bold); 21 | border-radius: 100%; 22 | color: _palette(bg); 23 | display: inline-block; 24 | height: 2em; 25 | line-height: 2em; 26 | text-align: center; 27 | width: 2em; 28 | } 29 | } 30 | } 31 | 32 | a.icon { 33 | &.alt { 34 | &:before { 35 | @include vendor('transition', 'background-color #{_duration(transition)} ease-in-out'); 36 | } 37 | 38 | &:hover { 39 | &:before { 40 | background-color: _palette(accent1); 41 | } 42 | } 43 | 44 | &:active { 45 | &:before { 46 | background-color: desaturate(darken(_palette(accent1), 15), 5); 47 | } 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/components/_image.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Image */ 8 | 9 | .image { 10 | border: 0; 11 | display: inline-block; 12 | position: relative; 13 | 14 | img { 15 | display: block; 16 | } 17 | 18 | &.left, 19 | &.right { 20 | max-width: 30%; 21 | 22 | img { 23 | width: 100%; 24 | } 25 | } 26 | 27 | &.left { 28 | float: left; 29 | margin: 0 1.5em 1.25em 0; 30 | top: 0.25em; 31 | } 32 | 33 | &.right { 34 | float: right; 35 | margin: 0 0 1.25em 1.5em; 36 | top: 0.25em; 37 | } 38 | 39 | &.fit { 40 | display: block; 41 | margin: 0 0 _size(element-margin) 0; 42 | width: 100%; 43 | 44 | img { 45 | width: 100%; 46 | } 47 | } 48 | 49 | &.main { 50 | display: block; 51 | margin: (_size(element-margin) * 1.25) 0; 52 | width: 100%; 53 | 54 | img { 55 | width: 100%; 56 | } 57 | 58 | @include breakpoint(small) { 59 | margin: (_size(element-margin) * 0.75) 0; 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/components/_section.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Section/Article */ 8 | 9 | section, article { 10 | &.special { 11 | text-align: center; 12 | } 13 | } 14 | 15 | header { 16 | &.major { 17 | width: -moz-max-content; 18 | width: -webkit-max-content; 19 | width: -ms-max-content; 20 | width: max-content; 21 | margin-bottom: _size(element-margin); 22 | 23 | > :first-child { 24 | margin-bottom: 0; 25 | width: calc(100% + 0.5em); 26 | 27 | &:after { 28 | content: ''; 29 | background-color: _palette(fg-bold); 30 | display: block; 31 | height: 2px; 32 | margin: 0.325em 0 0.5em 0; 33 | width: 100%; 34 | } 35 | } 36 | 37 | > p { 38 | font-size: 0.7em; 39 | font-weight: _font(weight-bold); 40 | letter-spacing: _font(letter-spacing-alt); 41 | margin-bottom: 0; 42 | text-transform: uppercase; 43 | } 44 | 45 | body.is-ie & { 46 | > :first-child { 47 | &:after { 48 | max-width: 9em; 49 | } 50 | } 51 | 52 | > h1 { 53 | &:after { 54 | max-width: 100% !important; 55 | } 56 | } 57 | } 58 | } 59 | 60 | @include breakpoint(small) { 61 | &.major { 62 | > p { 63 | br { 64 | display: none; 65 | } 66 | } 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/components/_spotlights.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Spotlights */ 8 | 9 | .spotlights { 10 | border-top: 0 !important; 11 | 12 | & + * { 13 | border-top: 0 !important; 14 | } 15 | 16 | > section { 17 | @include vendor('display', 'flex'); 18 | @include vendor('flex-direction', 'row'); 19 | background-color: desaturate(lighten(_palette(bg-alt), 2), 1); 20 | 21 | > .image { 22 | background-position: center center; 23 | background-size: cover; 24 | border-radius: 0; 25 | display: block; 26 | position: relative; 27 | width: 30%; 28 | 29 | img { 30 | border-radius: 0; 31 | display: block; 32 | width: 100%; 33 | } 34 | 35 | &:before { 36 | background: transparentize(_palette(bg), 0.1); 37 | content: ''; 38 | display: block; 39 | height: 100%; 40 | left: 0; 41 | opacity: 0; 42 | position: absolute; 43 | top: 0; 44 | width: 100%; 45 | } 46 | } 47 | 48 | > .content { 49 | @include vendor('display', 'flex'); 50 | @include vendor('flex-direction', 'column'); 51 | @include vendor('justify-content', 'center'); 52 | @include vendor('align-items', 'center'); 53 | @include padding(2em, 3em); 54 | width: 70%; 55 | 56 | > .inner { 57 | margin: 0 auto; 58 | max-width: 100%; 59 | width: _size(inner); 60 | } 61 | } 62 | 63 | &:nth-child(2n) { 64 | @include vendor('flex-direction', 'row-reverse'); 65 | background-color: desaturate(lighten(_palette(bg-alt), 4), 2); 66 | 67 | > .content { 68 | @include vendor('align-items', 'flex-end'); 69 | } 70 | } 71 | } 72 | 73 | @include breakpoint(xlarge) { 74 | > section { 75 | > .image { 76 | width: 40%; 77 | } 78 | 79 | > .content { 80 | width: 60%; 81 | } 82 | } 83 | } 84 | 85 | @include breakpoint(large) { 86 | > section { 87 | > .image { 88 | width: 45%; 89 | } 90 | 91 | > .content { 92 | width: 55%; 93 | } 94 | } 95 | } 96 | 97 | @include breakpoint(medium) { 98 | > section { 99 | display: block; 100 | 101 | > .image { 102 | width: 100%; 103 | } 104 | 105 | > .content { 106 | @include padding(4em, 3em); 107 | width: 100%; 108 | } 109 | } 110 | } 111 | 112 | @include breakpoint(small) { 113 | > section { 114 | > .content { 115 | @include padding(3em, 1.5em); 116 | } 117 | } 118 | } 119 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/components/_table.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Table */ 8 | 9 | .table-wrapper { 10 | -webkit-overflow-scrolling: touch; 11 | overflow-x: auto; 12 | } 13 | 14 | table { 15 | margin: 0 0 _size(element-margin) 0; 16 | width: 100%; 17 | 18 | tbody { 19 | tr { 20 | border: solid 1px _palette(border); 21 | border-left: 0; 22 | border-right: 0; 23 | 24 | &:nth-child(2n + 1) { 25 | background-color: _palette(border-bg); 26 | } 27 | } 28 | } 29 | 30 | td { 31 | padding: 0.75em 0.75em; 32 | } 33 | 34 | th { 35 | color: _palette(fg-bold); 36 | font-size: 0.9em; 37 | font-weight: _font(weight-bold); 38 | padding: 0 0.75em 0.75em 0.75em; 39 | text-align: left; 40 | } 41 | 42 | thead { 43 | border-bottom: solid 2px _palette(border); 44 | } 45 | 46 | tfoot { 47 | border-top: solid 2px _palette(border); 48 | } 49 | 50 | &.alt { 51 | border-collapse: separate; 52 | 53 | tbody { 54 | tr { 55 | td { 56 | border: solid 1px _palette(border); 57 | border-left-width: 0; 58 | border-top-width: 0; 59 | 60 | &:first-child { 61 | border-left-width: 1px; 62 | } 63 | } 64 | 65 | &:first-child { 66 | td { 67 | border-top-width: 1px; 68 | } 69 | } 70 | } 71 | } 72 | 73 | thead { 74 | border-bottom: 0; 75 | } 76 | 77 | tfoot { 78 | border-top: 0; 79 | } 80 | } 81 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/ie8.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | 6 | /* 7 | Forty by HTML5 UP 8 | html5up.net | @ajlkn 9 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 10 | */ 11 | 12 | /* Button */ 13 | 14 | .button { 15 | border: solid 2px !important; 16 | 17 | &.next { 18 | padding-right: 1.75em; 19 | 20 | &:before, &:after { 21 | display: none; 22 | } 23 | } 24 | } 25 | 26 | /* Tiles */ 27 | 28 | .tiles { 29 | article { 30 | width: 50%; 31 | -ms-behavior: url('assets/js/ie/backgroundsize.min.htc'); 32 | background-size: cover; 33 | } 34 | } 35 | 36 | /* Banner */ 37 | 38 | #banner { 39 | -ms-behavior: url('assets/js/ie/backgroundsize.min.htc'); 40 | 41 | &:after { 42 | display: none; 43 | } 44 | } 45 | 46 | /* Menu */ 47 | 48 | #menu { 49 | background: _palette(bg); 50 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/ie9.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | 6 | /* 7 | Forty by HTML5 UP 8 | html5up.net | @ajlkn 9 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 10 | */ 11 | 12 | /* Spotlights */ 13 | 14 | .spotlights { 15 | > section { 16 | &:after { 17 | content: ''; 18 | display: block; 19 | clear: both; 20 | } 21 | 22 | > .image { 23 | float: left; 24 | } 25 | 26 | > .content { 27 | float: left; 28 | } 29 | } 30 | } 31 | 32 | /* Tiles */ 33 | 34 | .tiles { 35 | &:after { 36 | content: ''; 37 | display: block; 38 | clear: both; 39 | } 40 | 41 | article { 42 | @include padding(8em, 4em); 43 | float: left; 44 | height: auto; 45 | max-height: none; 46 | min-height: 0; 47 | } 48 | } 49 | 50 | /* Header */ 51 | 52 | #header { 53 | .logo { 54 | position: absolute; 55 | top: 0; 56 | left: 0; 57 | } 58 | 59 | nav { 60 | position: absolute; 61 | top: 0; 62 | right: 0; 63 | } 64 | } 65 | 66 | /* Banner */ 67 | 68 | #banner { 69 | @include padding(6em, 0, (1em, 0, 0, 0)); 70 | background-attachment: scroll; 71 | height: auto; 72 | max-height: none; 73 | min-height: 0; 74 | 75 | > .inner { 76 | .content { 77 | display: block; 78 | 79 | > * { 80 | margin-left: 0; 81 | margin: 0 0 _size(element-margin) 0; 82 | } 83 | } 84 | } 85 | 86 | &.major { 87 | height: auto; 88 | max-height: none; 89 | min-height: 0; 90 | } 91 | } 92 | 93 | /* Contact */ 94 | 95 | #contact { 96 | &:after { 97 | content: ''; 98 | display: block; 99 | clear: both; 100 | } 101 | 102 | > .inner { 103 | > * { 104 | float: left; 105 | } 106 | } 107 | } 108 | 109 | /* Menu */ 110 | 111 | #menu { 112 | .inner { 113 | margin: 0 auto; 114 | } 115 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/layout/_contact.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Contact */ 8 | 9 | #contact { 10 | border-bottom: solid 1px _palette(border); 11 | overflow-x: hidden; 12 | 13 | > .inner { 14 | @include vendor('display', 'flex'); 15 | padding: 0 !important; 16 | 17 | > :nth-child(2n - 1) { 18 | @include padding(4em, 0, (0, 3em, 0, 0)); 19 | border-right: solid 1px _palette(border); 20 | width: 60%; 21 | } 22 | 23 | > :nth-child(2n) { 24 | padding-left: 3em; 25 | width: 40%; 26 | } 27 | 28 | > .split { 29 | padding: 0; 30 | 31 | > * { 32 | @include padding(3em, 0, (0, 0, 0, 3em)); 33 | position: relative; 34 | 35 | &:before { 36 | border-top: solid 1px _palette(border); 37 | content: ''; 38 | display: block; 39 | margin-left: -3em; 40 | position: absolute; 41 | top: 0; 42 | width: calc(100vw + 3em); 43 | } 44 | } 45 | 46 | > :first-child { 47 | &:before { 48 | display: none; 49 | } 50 | } 51 | } 52 | } 53 | 54 | @include breakpoint(medium) { 55 | > .inner { 56 | display: block; 57 | 58 | > :nth-child(2n - 1) { 59 | @include padding(4em, 0, (0, 0, 0, 0)); 60 | border-right: 0; 61 | width: 100%; 62 | } 63 | 64 | > :nth-child(2n) { 65 | padding-left: 0; 66 | width: 100%; 67 | } 68 | 69 | > .split { 70 | > * { 71 | @include padding(3em, 0, (0, 0, 0, 0)); 72 | 73 | &:before { 74 | } 75 | } 76 | 77 | > :first-child { 78 | &:before { 79 | display: block; 80 | } 81 | } 82 | } 83 | } 84 | } 85 | 86 | @include breakpoint(small) { 87 | > .inner { 88 | > :nth-child(2n - 1) { 89 | @include padding(3em, 0, (0, 0, 0, 0)); 90 | } 91 | } 92 | } 93 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/layout/_footer.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Footer */ 8 | 9 | #footer { 10 | .copyright { 11 | font-size: 0.8em; 12 | list-style: none; 13 | padding-left: 0; 14 | 15 | li { 16 | border-left: solid 1px _palette(border); 17 | color: _palette(fg-light); 18 | display: inline-block; 19 | line-height: 1; 20 | margin-left: 1em; 21 | padding-left: 1em; 22 | 23 | &:first-child { 24 | border-left: 0; 25 | margin-left: 0; 26 | padding-left: 0; 27 | } 28 | } 29 | } 30 | 31 | @include breakpoint(xsmall) { 32 | .copyright { 33 | li { 34 | display: block; 35 | border-left: 0; 36 | margin-left: 0; 37 | padding-left: 0; 38 | line-height: inherit; 39 | } 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/layout/_main.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Main */ 8 | 9 | #main { 10 | background-color: _palette(bg-alt); 11 | 12 | > * { 13 | border-top: solid 1px _palette(border); 14 | 15 | &:first-child { 16 | border-top: 0; 17 | } 18 | 19 | @include inner; 20 | } 21 | 22 | &.alt { 23 | background-color: transparent; 24 | border-bottom: solid 1px _palette(border); 25 | } 26 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/layout/_wrapper.scss: -------------------------------------------------------------------------------- 1 | /// 2 | /// Forty by HTML5 UP 3 | /// html5up.net | @ajlkn 4 | /// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 5 | /// 6 | 7 | /* Wrapper */ 8 | 9 | #wrapper { 10 | @include vendor('transition', ( 11 | 'filter #{_duration(menu)} ease', 12 | '-webkit-filter #{_duration(menu)} ease', 13 | 'opacity 0.375s ease-out' 14 | )); 15 | padding-top: 3.25em; 16 | 17 | &.is-transitioning { 18 | opacity: 0; 19 | } 20 | 21 | > * { 22 | @include inner; 23 | } 24 | 25 | @include breakpoint(small) { 26 | padding-top: 2.75em; 27 | } 28 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/libs/_functions.scss: -------------------------------------------------------------------------------- 1 | /// Gets a duration value. 2 | /// @param {string} $keys Key(s). 3 | /// @return {string} Value. 4 | @function _duration($keys...) { 5 | @return val($duration, $keys...); 6 | } 7 | 8 | /// Gets a font value. 9 | /// @param {string} $keys Key(s). 10 | /// @return {string} Value. 11 | @function _font($keys...) { 12 | @return val($font, $keys...); 13 | } 14 | 15 | /// Gets a misc value. 16 | /// @param {string} $keys Key(s). 17 | /// @return {string} Value. 18 | @function _misc($keys...) { 19 | @return val($misc, $keys...); 20 | } 21 | 22 | /// Gets a palette value. 23 | /// @param {string} $keys Key(s). 24 | /// @return {string} Value. 25 | @function _palette($keys...) { 26 | @return val($palette, $keys...); 27 | } 28 | 29 | /// Gets a size value. 30 | /// @param {string} $keys Key(s). 31 | /// @return {string} Value. 32 | @function _size($keys...) { 33 | @return val($size, $keys...); 34 | } -------------------------------------------------------------------------------- /themes/forty/static/sass/libs/_vars.scss: -------------------------------------------------------------------------------- 1 | // Misc. 2 | $misc: ( 3 | z-index-base: 10000 4 | ); 5 | 6 | // Duration. 7 | $duration: ( 8 | menu: 0.35s, 9 | transition: 0.2s, 10 | banner: 2.5s 11 | ); 12 | 13 | // Size. 14 | $size: ( 15 | border-radius: 4px, 16 | element-height: 2.75em, 17 | element-margin: 2em, 18 | inner: 65em 19 | ); 20 | 21 | // Font. 22 | $font: ( 23 | family: ('Source Sans Pro', Helvetica, sans-serif), 24 | family-fixed: ('Courier New', monospace), 25 | weight: 300, 26 | weight-bold: 600, 27 | letter-spacing: 0.025em, 28 | letter-spacing-alt: 0.25em 29 | ); 30 | 31 | // Palette. 32 | $palette: ( 33 | bg: #242943, 34 | bg-alt: #2a2f4a, 35 | fg: #ffffff, 36 | fg-bold: #ffffff, 37 | fg-light: rgba(244,244,255,0.2), 38 | border: rgba(212,212,255,0.1), 39 | border-bg: rgba(212,212,255,0.035), 40 | highlight: #9bf1ff, 41 | accent1: #6fc3df, 42 | accent2: #8d82c4, 43 | accent3: #ec8d81, 44 | accent4: #e7b788, 45 | accent5: #8ea9e8, 46 | accent6: #87c5a4 47 | ); -------------------------------------------------------------------------------- /themes/forty/static/sass/main.scss: -------------------------------------------------------------------------------- 1 | @import 'libs/vars'; 2 | @import 'libs/functions'; 3 | @import 'libs/mixins'; 4 | @import 'libs/skel'; 5 | @import 'font-awesome.min.css'; 6 | @import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300italic,600,600italic'); 7 | 8 | /* 9 | Forty by HTML5 UP 10 | html5up.net | @ajlkn 11 | Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) 12 | */ 13 | 14 | @include skel-breakpoints(( 15 | xlarge: '(max-width: 1680px)', 16 | large: '(max-width: 1280px)', 17 | medium: '(max-width: 980px)', 18 | small: '(max-width: 736px)', 19 | xsmall: '(max-width: 480px)', 20 | xxsmall: '(max-width: 360px)' 21 | )); 22 | 23 | @include skel-layout(( 24 | reset: 'full', 25 | boxModel: 'border', 26 | grid: ( gutters: 2em ), 27 | breakpoints: ( 28 | large: ( 29 | grid: ( gutters: 1.5em ) 30 | ), 31 | small: ( 32 | grid: ( gutters: 1.25em ) 33 | ) 34 | ) 35 | )); 36 | 37 | @mixin inner { 38 | > .inner { 39 | @include padding(4em, 0); 40 | margin: 0 auto; 41 | max-width: _size(inner); 42 | width: calc(100% - 6em); 43 | 44 | @include breakpoint(small) { 45 | @include padding(3em, 0); 46 | width: calc(100% - 3em); 47 | } 48 | } 49 | } 50 | 51 | // Base. 52 | 53 | @import 'base/page'; 54 | @import 'base/typography'; 55 | 56 | // Component. 57 | 58 | @import 'components/section'; 59 | @import 'components/form'; 60 | @import 'components/box'; 61 | @import 'components/icon'; 62 | @import 'components/image'; 63 | @import 'components/list'; 64 | @import 'components/table'; 65 | @import 'components/button'; 66 | @import 'components/tiles'; 67 | @import 'components/contact-method'; 68 | @import 'components/spotlights'; 69 | 70 | // Layout. 71 | 72 | @import 'layout/header'; 73 | @import 'layout/banner'; 74 | @import 'layout/main'; 75 | @import 'layout/contact'; 76 | @import 'layout/footer'; 77 | @import 'layout/wrapper'; 78 | @import 'layout/menu'; -------------------------------------------------------------------------------- /themes/forty/theme.toml: -------------------------------------------------------------------------------- 1 | name = "Forty" 2 | license = "Creative Commons Attribution 3.0" 3 | licenselink = "https://github.com/MarcusVirg/forty/blob/master/LICENSE.md" 4 | description = "A portfolio/blog website built for companies or personal freelancers." 5 | homepage = "//github.com/MarcusVirg/forty" 6 | tags = ["portfolio", "company", "contact form", "google analytics", "blog"] 7 | features = ["blog"] 8 | min_version = "0.55" 9 | 10 | [author] 11 | name = "Marcus Virginia" 12 | homepage = "https://marcusv.me" 13 | 14 | # If porting an existing theme 15 | [original] 16 | author = "AJ" 17 | name = "HTML5 Up" 18 | homepage = "https://html5up.net/forty" 19 | -------------------------------------------------------------------------------- /vcluster-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: a-team-cluster 5 | spec: 6 | selector: 7 | app: vcluster 8 | release: a-team 9 | ports: 10 | - name: https 11 | port: 443 12 | targetPort: 8443 13 | protocol: TCP 14 | type: LoadBalancer --------------------------------------------------------------------------------