Browse Source

Merge branch 'master' into v3

v3
Sameer Rahmani 11 months ago
parent
commit
ebc22c363f
  1. 12
      .gitignore
  2. 17
      .gitlab-ci.yml
  3. 1
      lib/extensions/development/init.el
  4. 5
      lib/extensions/editor/init.el
  5. 1
      lib/extensions/go.el
  6. 7
      lib/extensions/go/init.el
  7. 1
      lib/fpkg.el
  8. 75
      website/Makefile
  9. 43
      website/README.md
  10. 21
      website/content/docs.md
  11. BIN
      website/content/pages/.404.md.swp
  12. 23
      website/content/pages/404.md
  13. 20
      website/content/pages/release-notes.md
  14. 59
      website/pelicanconf.py
  15. 27
      website/publishconf.py
  16. 17
      website/requirements.txt
  17. 312
      website/sass/bulma.sass
  18. BIN
      website/sass/sass/.DS_Store
  19. 5
      website/sass/sass/base/_all.sass
  20. 142
      website/sass/sass/base/generic.sass
  21. 281
      website/sass/sass/base/helpers.sass
  22. 85
      website/sass/sass/base/minireset.sass
  23. 15
      website/sass/sass/components/_all.sass
  24. 75
      website/sass/sass/components/breadcrumb.sass
  25. 79
      website/sass/sass/components/card.sass
  26. 81
      website/sass/sass/components/dropdown.sass
  27. 77
      website/sass/sass/components/level.sass
  28. 39
      website/sass/sass/components/list.sass
  29. 48
      website/sass/sass/components/media.sass
  30. 57
      website/sass/sass/components/menu.sass
  31. 87
      website/sass/sass/components/message.sass
  32. 113
      website/sass/sass/components/modal.sass
  33. 443
      website/sass/sass/components/navbar.sass
  34. 149
      website/sass/sass/components/pagination.sass
  35. 103
      website/sass/sass/components/panel.sass
  36. 151
      website/sass/sass/components/tabs.sass
  37. 15
      website/sass/sass/elements/_all.sass
  38. 24
      website/sass/sass/elements/box.sass
  39. 305
      website/sass/sass/elements/button.sass
  40. 23
      website/sass/sass/elements/container.sass
  41. 155
      website/sass/sass/elements/content.sass
  42. 1
      website/sass/sass/elements/form.sass
  43. 21
      website/sass/sass/elements/icon.sass
  44. 69
      website/sass/sass/elements/image.sass
  45. 35
      website/sass/sass/elements/notification.sass
  46. 39
      website/sass/sass/elements/other.sass
  47. 67
      website/sass/sass/elements/progress.sass
  48. 127
      website/sass/sass/elements/table.sass
  49. 121
      website/sass/sass/elements/tag.sass
  50. 70
      website/sass/sass/elements/title.sass
  51. 8
      website/sass/sass/form/_all.sass
  52. 21
      website/sass/sass/form/checkbox-radio.sass
  53. 180
      website/sass/sass/form/file.sass
  54. 60
      website/sass/sass/form/input-textarea.sass
  55. 85
      website/sass/sass/form/select.sass
  56. 55
      website/sass/sass/form/shared.sass
  57. 205
      website/sass/sass/form/tools.sass
  58. 4
      website/sass/sass/grid/_all.sass
  59. 504
      website/sass/sass/grid/columns.sass
  60. 34
      website/sass/sass/grid/tiles.sass
  61. 5
      website/sass/sass/layout/_all.sass
  62. 9
      website/sass/sass/layout/footer.sass
  63. 143
      website/sass/sass/layout/hero.sass
  64. 13
      website/sass/sass/layout/section.sass
  65. 8
      website/sass/sass/utilities/_all.sass
  66. 5
      website/sass/sass/utilities/animations.sass
  67. 50
      website/sass/sass/utilities/controls.sass
  68. 85
      website/sass/sass/utilities/derived-variables.sass
  69. 62
      website/sass/sass/utilities/functions.sass
  70. 76
      website/sass/sass/utilities/initial-variables.sass
  71. 262
      website/sass/sass/utilities/mixins.sass
  72. 109
      website/tasks.py
  73. 0
      website/theme/static/css/init
  74. 72
      website/theme/static/css/pygment.css
  75. 1
      website/theme/static/css/pygment.min.css
  76. BIN
      website/theme/static/fonts/Quicksand/Quicksand-Light.woff2
  77. BIN
      website/theme/static/fonts/Quicksand/Quicksand-Medium.woff2
  78. BIN
      website/theme/static/fonts/Roboto/Roboto-Bold.woff2
  79. BIN
      website/theme/static/fonts/Roboto/Roboto-Italic.woff2
  80. BIN
      website/theme/static/fonts/Roboto/Roboto-Regular.woff2
  81. BIN
      website/theme/static/fonts/Ubuntu_Mono/UbuntuMono-Bold.woff2
  82. BIN
      website/theme/static/fonts/Ubuntu_Mono/UbuntuMono-Regular.woff2
  83. 0
      website/theme/static/images/articles/.init
  84. BIN
      website/theme/static/images/articles/docs.png
  85. BIN
      website/theme/static/images/favicon/android-chrome-192x192.png
  86. BIN
      website/theme/static/images/favicon/android-chrome-512x512.png
  87. BIN
      website/theme/static/images/favicon/apple-touch-icon.png
  88. BIN
      website/theme/static/images/favicon/favicon-16x16.png
  89. BIN
      website/theme/static/images/favicon/favicon-32x32.png
  90. 1
      website/theme/static/images/favicon/favicon.svg
  91. 1
      website/theme/static/images/favicon/site.webmanifest
  92. BIN
      website/theme/static/images/logo.png
  93. BIN
      website/theme/static/images/pages/404.jpg
  94. BIN
      website/theme/static/images/pages/pgp.jpg
  95. BIN
      website/theme/static/images/pages/release-notes.png
  96. 1
      website/theme/static/js/fa.min.js
  97. 50
      website/theme/static/js/main.js
  98. 3
      website/theme/static/js/main.min.js
  99. 22
      website/theme/templates/archives.html
  100. 120
      website/theme/templates/article.html

12
.gitignore

@ -30,3 +30,15 @@ smex-items
elpa/
bm-repository
.fpkg-v3/
website/__pycache__/
website/*.pyc
website/.sass-cache/
website/theme/static/css/bulma.css
website/output/
website/public/
website/*.old.jpg
website/pelican-plugins/
website/.*.swp
website/*~
#*#

17
.gitlab-ci.yml

@ -11,6 +11,7 @@ stages:
script:
- cd ~/.fg42/ && fg42 -nw --script build.el
.build-v3:
image: debian:stable-slim
stage: build
@ -24,8 +25,20 @@ build-branches-v3:
extends: .build-v3
only:
- branches
except:
- tags
build-branches:
extends: .build
script:
- cd /root/.fg42/ && fg42 -nw --script build.el
- cd /root/ && tar zcf ~/fg42.$CI_COMMIT_REF_NAME.tar.gz .fg42/
- mv ~/fg42.$CI_COMMIT_REF_NAME.tar.gz /builds/$CI_PROJECT_PATH/
artifacts:
name: "fg42.$CI_COMMIT_REF_SLUG"
when: on_success
paths:
- fg42.$CI_COMMIT_REF_NAME.tar.gz
only:
- branches
build-branches:
extends: .build

1
lib/extensions/development/init.el

@ -258,6 +258,7 @@
(ability yaml ()
"YAML editor."
(require 'yaml-mode)
(add-hook 'yaml-mode-hook (lambda () (interactive) (whitespace-mode 1)))
(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode))
(add-to-list 'auto-mode-alist '("\\.sls\\'" . yaml-mode)))

5
lib/extensions/editor/init.el

@ -290,8 +290,9 @@
(ido-mode t)
(smex-initialize)
(global-set-key (kbd "M-x") 'smex)
(ability smex ()
(smex-initialize)
(global-set-key (kbd "M-x") 'smex))
(flx-ido-mode 1)
(setq ido-use-faces nil)

1
lib/extensions/go.el

@ -10,7 +10,6 @@
(depends-on 'go-mode)
(depends-on 'go-add-tags)
(depends-on 'go-stacktracer)
(depends-on 'go-eldoc)
(depends-on 'gotest)
(depends-on 'exec-path-from-shell)

7
lib/extensions/go/init.el

@ -5,12 +5,15 @@
(defun fg42-go-hook ()
;; move to action
"Set's up emacs hooks and turn necessary modes on."
(lsp-register-custom-settings
'(("gopls.completeUnimported" t t)
("gopls.staticcheck" t t)))
(lsp)
(with-ability yas
(yas-minor-mode-on))
(yas-minor-mode-on))
(setq-local company-backends '(company-capf company-dabbrev company-dabbrev-code))
(add-hook 'before-save-hook #'lsp-format-buffer t t)
(add-hook 'before-save-hook #'lsp-organize-imports t t)
(add-hook 'go-mode-hook 'go-eldoc-setup)
(local-set-key (kbd "M-.") #'godef-jump)
(local-set-key (kbd "M-*") 'pop-tag-mark))

1
lib/fpkg.el

@ -100,6 +100,7 @@
(fpkg-initialize)))
(defun official-extension-p (args)
"Predicate to say if ARGS is an official FG42 extension."
(member args fg42/extensions))

75
website/Makefile

@ -0,0 +1,75 @@
PY?=python3
PELICAN?=pelican
PELICANOPTS=
BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/public
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py
DEBUG ?= 0
ifeq ($(DEBUG), 1)
PELICANOPTS += -D
endif
RELATIVE ?= 0
ifeq ($(RELATIVE), 1)
PELICANOPTS += --relative-urls
endif
help:
@echo 'Makefile for a pelican Web site '
@echo ' '
@echo 'Usage: '
@echo ' make html (re)generate the web site '
@echo ' make clean remove the generated files '
@echo ' make regenerate regenerate files upon modification '
@echo ' make publish generate using production settings '
@echo ' make serve [PORT=8000] serve site at http://localhost:8000'
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
@echo ' make devserver [PORT=8000] serve and regenerate together '
@echo ' make ssh_upload upload the web site via SSH '
@echo ' make rsync_upload upload the web site via rsync+ssh '
@echo ' '
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
@echo ' '
html:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
clean:
[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
regenerate:
$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
serve:
ifdef PORT
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
else
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
endif
serve-global:
ifdef SERVER
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b $(SERVER)
else
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b 0.0.0.0
endif
devserver:
ifdef PORT
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
else
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
endif
publish:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
.PHONY: html help clean regenerate serve serve-global devserver publish

43
website/README.md

@ -0,0 +1,43 @@
![Build Status](https://gitlab.com/pouya-abbassi/pouyacode/badges/master/build.svg)
---
[FG42](https://fg42.org) built using [Pelican](https://blog.getpelican.com) & [Bulma](https://bulma.io).
## Build
```
pip install -r requirements.txt
git clone git@github.com:getpelican/pelican-plugins.git
make publish
```
This will create `public` directory contaning all static files.
## Email Obfuscation
I use [ROT13](https://en.wikipedia.org/wiki/ROT13) to obfuscate email adresses.
So email adresses that would be visible to users should be generated using this command (or similar tools):
```
echo "pcode@protonmail.com" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
#or
tr 'A-Za-z' 'N-ZA-Mn-za-m' <<< "pcode@protonmail.com"
```
They are then processed on user's browser using a simple js function.
## Sample Pages
There is a sample page at `content/docs.md` that has a metadata `status: hidden`.
Remove this metadata to see it in the index page. This page is just for demo purpose.
Also there are two pages inside `content/pages/` directory with metadata `error: true`.
This makes the background to stretch and fill the page.
The `content/pages/release-notes.md` is also just for demo purpose.
## Images
Images for articles and pages should be stored at `theme/static/images/articles/` and `theme/static/images/pages/` directory.
These images should be named after their page title so it would be easier to manage.
## Configs
Development config file is `pelicanconf.py` and the deployment config file is `publishconf.py`.
`SITEURL` and `PLUGINS` are two most important lines of those files.

21
website/content/docs.md

@ -0,0 +1,21 @@
Title: Docs
Description: of Future Gadget 42
Date: 2020-05-28 05:57:59
category: Docs
image: docs.png
icon: far fa-clipboard
status: hidden
## Title
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
| Syntax | Description |
| ----------- | ----------- |
| Header | Title |
| Paragraph | Text |
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
---
*Image was the preceding FG42 logo.*

BIN
website/content/pages/.404.md.swp

Binary file not shown.

23
website/content/pages/404.md

@ -0,0 +1,23 @@
Title: 404
Description: You seem lost.
Modified: 2010-12-05 19:30
image: 404.jpg
icon: far fa-frown
Status: hidden
error:true
Save_as: 404.html
> The universe has a beginning, but no end. โ€” Infinity.
> Stars, too, have their own beginnings, but their own power results in their destruction. โ€” Finite.
> It is those who possess wisdom who are the greatest fools. History has shown us this.
> You could say that this is the final warning from God to those who resist.
Okabe Rintarou โ€” Steins;Gate
---
*The requested item could not be located. Perhaps you might want to check the [Archives](/archives.html)?*
*Image from [Freepik](https://www.freepik.com/free-vector/space-background-with-planets_1229807.htm).*

20
website/content/pages/release-notes.md

@ -0,0 +1,20 @@
Title: Release Notes
Description: of the Future Gadget 42
Modified: 2010-12-05 19:30
image: release-notes.png
icon: far fa-clipboard
Status: hidden
error:true
Save_as: release-notes.html
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
| Syntax | Description |
| ----------- | ----------- |
| Header | Title |
| Paragraph | Text |
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
---
*Image was the preceding FG42 logo.*

59
website/pelicanconf.py

@ -0,0 +1,59 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
from jsmin import jsmin
import sass, os
AUTHOR = 'Sameer Rahmani'
SITENAME = 'Future Gadgets 42'
DESCRIPTION = 'Ultimate Emacs based IDE for true believers'
EMAIL_ROT13 = 'znvygb:ykfnzrre@tah.bet' # ROT13
SITEURL = 'http://localhost:8000'
PATH = 'content'
TIMEZONE = 'Asia/Tehran'
DEFAULT_LANG = 'en'
PELICAN_VERSION = os.popen('pelican --version').readline().strip()
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
# Social widget
SOCIAL = (
('Email', EMAIL_ROT13, 'fas fa-at'),
('Atom feed', FEED_ALL_ATOM, 'fas fa-rss'),
)
DEFAULT_PAGINATION = 10
# Uncomment following line if you want document-relative URLs when developing
RELATIVE_URLS = False
# Theme
THEME = 'theme'
PLUGIN_PATHS = ['pelican-plugins']
PLUGINS = ['readtime', 'share_post', 'neighbors']
SITEMAP = {'format': 'xml'}
# Sass compile
with open(THEME + '/static/css/bulma.css', 'w') as css:
style = sass.compile(filename=('sass/bulma.sass'), output_style='compressed')
css.write(style)
css.close()
# JS minifier
with open('theme/static/js/main.js') as js_file:
with open('theme/static/js/main.min.js','w') as min_file:
minified = jsmin(js_file.read())
min_file.write(minified)
min_file.close()

27
website/publishconf.py

@ -0,0 +1,27 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
# This file is only used if you use `make publish` or
# explicitly specify it as your config file.
import os
import sys
sys.path.append(os.curdir)
from pelicanconf import *
# If your site is available via HTTPS, make sure SITEURL begins with https://
SITEURL = 'https://fg42.org'
RELATIVE_URLS = False
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
DELETE_OUTPUT_DIRECTORY = True
PLUGINS += ['sitemap', 'optimize_images']
# Following items are often useful when publishing
#DISQUS_SITENAME = ""
#GOOGLE_ANALYTICS = ""

17
website/requirements.txt

@ -0,0 +1,17 @@
beautifulsoup4==4.8.1
blinker==1.4
bs4==0.0.1
docutils==0.15.2
feedgenerator==1.9
Jinja2==2.10.3
jsmin==2.2.2
libsass==0.19.4
Markdown==3.1.1
MarkupSafe==1.1.1
pelican==4.2.0
Pygments==2.5.2
python-dateutil==2.8.1
pytz==2019.3
six==1.13.0
soupsieve==1.9.5
Unidecode==1.1.1

312
website/sass/bulma.sass

@ -0,0 +1,312 @@
@charset "utf-8"
@font-face
font-family: 'Roboto'
font-style: normal
font-weight: 400
src: local('Roboto')
src: local('Roboto-Regular')
src: url(/theme/fonts/Roboto/Roboto-Regular.woff2) format('woff2')
font-display: fallback
@font-face
font-family: 'Roboto'
font-style: italic
font-weight: 400
src: local('Roboto Italic')
src: local('Roboto-Italic')
src: url(/theme/fonts/Roboto/Roboto-Italic.woff2) format('woff2')
font-display: fallback
@font-face
font-family: 'Roboto'
font-style: normal
font-weight: 700
src: local('Roboto Bold')
src: local('Roboto-Bold')
src: url(/theme/fonts/Roboto/Roboto-Bold.woff2) format('woff2')
font-display: fallback
@font-face
font-family: 'Quicksand'
font-style: normal
font-weight: 500
src: local('Quicksand Medium')
src: local('Quicksand-Medium')
src: url(/theme/fonts/Quicksand/Quicksand-Medium.woff2) format('woff2')
font-display: fallback
@font-face
font-family: 'Quicksand'
font-style: normal
font-weight: 300
src: local('Quicksand Light')
src: local('Quicksand-Light')
src: url(/theme/fonts/Quicksand/Quicksand-Light.woff2) format('woff2')
font-display: fallback
@font-face
font-family: 'Ubuntu Mono'
font-style: normal
font-weight: 400
src: local('Ubuntu Mono')
src: local('UbuntuMono-Regular')
src: url(/theme/fonts/Ubuntu_Mono/UbuntuMono-Regular.woff2) format('woff2')
font-display: fallback
@font-face
font-family: 'Ubuntu Mono'
font-style: normal
font-weight: 700
src: local('Ubuntu Mono Bold')
src: local('UbuntuMono-Bold')
src: url(/theme/fonts/Ubuntu_Mono/UbuntuMono-Bold.woff2) format('woff2')
font-display: fallback
$family-sans-serif: 'Roboto', Arial, Helvetica, sans-serif
$family-serif: 'Quicksand', Times, serif
$family-monospace: 'ubuntu mono', hack
$family-primary: $family-sans-serif
$family-secondary: $family-serif
$primary-background: #222225
$primary-color: #FFFFEE
$secondary-background: #333336
$secondary-color: #FFFFEE
$primary: $primary-background
$primary-invert: $primary-color
$nav-background: $secondary-background
$nav-primary: $secondary-color
$navbar-dropdown-background-color: $nav-background
$navbar-dropdown-arrow: $nav-primary
$navbar-background-color: $nav-background
$navbar-item-color: $nav-primary
$navbar-item-hover-color: $primary-color
$navbar-item-hover-background-color: $primary-background
$navbar-dropdown-item-active-color: $primary-color
$navbar-dropdown-item-active-background-color: $primary-background
$navbar-dropdown-item-hover-color: $primary-color
$navbar-dropdown-item-hover-background-color: $primary-background
$title-family: $family-serif
$subtitle-family: $family-serif
$footer-background-color: $nav-background
$footer-color: $nav-primary
$code: #AAEEAA
$code-background: #333333AA
$pre: #AAEEAA
$pre-background: #333333AA
/*! bulma.io v0.7.5 | MIT License | github.com/jgthms/bulma */
@import "sass/utilities/_all"
@import "sass/base/_all"
@import "sass/elements/_all"
@import "sass/form/_all"
@import "sass/components/_all"
@import "sass/grid/_all"
@import "sass/layout/_all"
html, body
scrollbar-width: thin
scrollbar-color: #000000 #222222
background: $primary-background
color: $primary-color
pre, .code
font-family: $family-monospace
.avatar
margin: inherit
.column.is-three-fifths
margin: auto
a.article-title
color: $secondary-color
&:hover
color: $primary-color
text-decoration: underline
article.content
padding: 1rem
border: 1px solid $primary-background
border-radius: 1rem
&:hover
border: 1px solid $secondary-background
background: $secondary-background
box-shadow: inset 0 0 3rem 2rem $primary-background
.title, h1, h2, h1 a, h2 a
font-weight: 300
.title strong
font-weight: 500
.subtitle, h1 small, h2 small
color: $secondary-color
font-weight: 500
.tag:not(body).is-primary
border: 1px solid
background: transparent
.tag:not(body)
color: $primary-background
background: $primary-color
.tag:not(body).is-primary
color: $primary-color
border: 1px solid
background: transparent
.input
color: $primary-color
border: 1px solid
background: transparent
&:hover
color: $primary-color
border: 1px solid
background: $secondary-background
&:focus
color: $primary-color
border: 1px solid
background: transparent
&:active
color: $primary-color
border: 1px solid
background: $secondary-background
@include placeholder
color: $primary-color
.button.is-primary
color: $primary-color
border: 1px solid
background: transparent
&:hover
color: $primary-color
border: 1px solid
background: $secondary-background
&:focus
color: $primary-color
border: 1px solid
background: transparent
#subscription
max-width: max-content
border: 2px solid
border-radius: 1rem
margin: 2rem auto 0px auto
padding: 1rem
.button.article-image
float: right
.blog-content
font-size: 1.2rem
p
img
width: 100%
.navbar-item
img
max-height: 3rem
width: auto
.bar-top
height: 2px
width: 100vw
background-image: linear-gradient(to right, #ed5017 , #f68f1d)
.bar-bottom
height: 2px
width: 100vw
background-image: linear-gradient(to right, #18bfdc , #023d6b)
.footer
padding-bottom: 3rem
.table
background: transparent
.table th
color: $primary-color
.content table thead th
color: $primary-color
strong
color: $primary-color
a
color: $primary-color
&:hover
color: $primary-color
text-decoration: underline
.content a, table a
text-decoration: underline dotted
&:hover
text-decoration: underline
.content h1, .content h2, .content h3, .content h4, .content h5, .content h6
color: $primary-color
font-family: $title-family
.content blockquote
border-left: 0.25rem wavy $primary-color
background: #2228
background-opacity: 0.4
padding: 1rem
blockquote p
padding: 0
hr
background: $primary-color
.pagination-previous, .pagination-next, .pagination-link
color: $primary-color
font-family: $title-family
border-color: $primary-color
&:hover
color: $primary-color
text-decoration: underline
&:focus
border-color: $primary-color
p.readtime
opacity: 0.8
font-family: $title-family
.share
text-align: right
#feedback
font-family: $title-family
a
text-decoration: underline dotted
&:hover
text-decoration: underline
span, i
display: none
.button.is-text
color: $primary-color
// Scrollbar Width
::-webkit-scrollbar
width: 6px
// Scrollbar Track
::-webkit-scrollbar-track
background: #222
// Scrollbar Handle
::-webkit-scrollbar-thumb
background: #000

BIN
website/sass/sass/.DS_Store

Binary file not shown.

5
website/sass/sass/base/_all.sass

@ -0,0 +1,5 @@
@charset "utf-8"
@import "minireset.sass"
@import "generic.sass"
@import "helpers.sass"

142
website/sass/sass/base/generic.sass

@ -0,0 +1,142 @@
$body-background-color: $white !default
$body-size: 16px !default
$body-min-width: 300px !default
$body-rendering: optimizeLegibility !default
$body-family: $family-primary !default
$body-overflow-x: hidden !default
$body-overflow-y: scroll !default
$body-color: $text !default
$body-font-size: 1em !default
$body-weight: $weight-normal !default
$body-line-height: 1.5 !default
$code-family: $family-code !default
$code-padding: 0.25em 0.5em 0.25em !default
$code-weight: normal !default
$code-size: 0.875em !default
$small-font-size: 0.875em !default
$hr-background-color: $background !default
$hr-height: 2px !default
$hr-margin: 1.5rem 0 !default
$strong-color: $text-strong !default
$strong-weight: $weight-bold !default
$pre-font-size: 0.875em !default
$pre-padding: 1.25rem 1.5rem !default
$pre-code-font-size: 1em !default
html
background-color: $body-background-color
font-size: $body-size
-moz-osx-font-smoothing: grayscale
-webkit-font-smoothing: antialiased
min-width: $body-min-width
overflow-x: $body-overflow-x
overflow-y: $body-overflow-y
text-rendering: $body-rendering
text-size-adjust: 100%
article,
aside,
figure,
footer,
header,
hgroup,
section
display: block
body,
button,
input,
select,
textarea
font-family: $body-family
code,
pre
-moz-osx-font-smoothing: auto
-webkit-font-smoothing: auto
font-family: $code-family
body
color: $body-color
font-size: $body-font-size
font-weight: $body-weight
line-height: $body-line-height
// Inline
a
color: $link
cursor: pointer
text-decoration: none
strong
color: currentColor
&:hover
color: $link-hover
code
background-color: $code-background
color: $code
font-size: $code-size
font-weight: $code-weight
padding: $code-padding
hr
background-color: $hr-background-color
border: none
display: block
height: $hr-height
margin: $hr-margin
img
height: auto
max-width: 100%
input[type="checkbox"],
input[type="radio"]
vertical-align: baseline
small
font-size: $small-font-size
span
font-style: inherit
font-weight: inherit
strong
color: $strong-color
font-weight: $strong-weight
// Block
fieldset
border: none
pre
+overflow-touch
background-color: $pre-background
color: $pre
font-size: $pre-font-size
overflow-x: auto
padding: $pre-padding
white-space: pre
word-wrap: normal
code
background-color: transparent
color: currentColor
font-size: $pre-code-font-size
padding: 0
table
td,
th
vertical-align: top
&:not([align])
text-align: left
th
color: $text-strong

281
website/sass/sass/base/helpers.sass

@ -0,0 +1,281 @@
// Float
.is-clearfix
+clearfix
.is-pulled-left
float: left !important
.is-pulled-right
float: right !important
// Overflow
.is-clipped
overflow: hidden !important
// Overlay
.is-overlay
@extend %overlay
// Typography
=typography-size($target:'')
@each $size in $sizes
$i: index($sizes, $size)
.is-size-#{$i}#{if($target == '', '', '-' + $target)}
font-size: $size !important
+typography-size()
+mobile
+typography-size('mobile')
+tablet
+typography-size('tablet')
+touch
+typography-size('touch')
+desktop
+typography-size('desktop')
+widescreen
+typography-size('widescreen')
+fullhd
+typography-size('fullhd')
$alignments: ('centered': 'center', 'justified': 'justify', 'left': 'left', 'right': 'right')
@each $alignment, $text-align in $alignments
.has-text-#{$alignment}
text-align: #{$text-align} !important
@each $alignment, $text-align in $alignments
+mobile
.has-text-#{$alignment}-mobile
text-align: #{$text-align} !important
+tablet
.has-text-#{$alignment}-tablet
text-align: #{$text-align} !important
+tablet-only
.has-text-#{$alignment}-tablet-only
text-align: #{$text-align} !important
+touch
.has-text-#{$alignment}-touch
text-align: #{$text-align} !important
+desktop
.has-text-#{$alignment}-desktop
text-align: #{$text-align} !important
+desktop-only
.has-text-#{$alignment}-desktop-only
text-align: #{$text-align} !important
+widescreen
.has-text-#{$alignment}-widescreen
text-align: #{$text-align} !important
+widescreen-only
.has-text-#{$alignment}-widescreen-only
text-align: #{$text-align} !important
+fullhd
.has-text-#{$alignment}-fullhd
text-align: #{$text-align} !important
.is-capitalized
text-transform: capitalize !important
.is-lowercase
text-transform: lowercase !important
.is-uppercase
text-transform: uppercase !important
.is-italic
font-style: italic !important
@each $name, $pair in $colors
$color: nth($pair, 1)
.has-text-#{$name}
color: $color !important
a.has-text-#{$name}
&:hover,
&:focus
color: darken($color, 10%) !important
.has-background-#{$name}
background-color: $color !important
@each $name, $shade in $shades
.has-text-#{$name}
color: $shade !important
.has-background-#{$name}
background-color: $shade !important
.has-text-weight-light
font-weight: $weight-light !important
.has-text-weight-normal
font-weight: $weight-normal !important
.has-text-weight-medium
font-weight: $weight-medium !important
.has-text-weight-semibold
font-weight: $weight-semibold !important
.has-text-weight-bold
font-weight: $weight-bold !important
.is-family-primary
font-family: $family-primary !important
.is-family-secondary
font-family: $family-secondary !important
.is-family-sans-serif
font-family: $family-sans-serif !important
.is-family-monospace
font-family: $family-monospace !important
.is-family-code
font-family: $family-code !important
// Visibility
$displays: 'block' 'flex' 'inline' 'inline-block' 'inline-flex'
@each $display in $displays
.is-#{$display}
display: #{$display} !important
+mobile
.is-#{$display}-mobile
display: #{$display} !important
+tablet
.is-#{$display}-tablet
display: #{$display} !important
+tablet-only
.is-#{$display}-tablet-only
display: #{$display} !important
+touch
.is-#{$display}-touch
display: #{$display} !important
+desktop
.is-#{$display}-desktop
display: #{$display} !important
+desktop-only
.is-#{$display}-desktop-only
display: #{$display} !important
+widescreen
.is-#{$display}-widescreen
display: #{$display} !important
+widescreen-only
.is-#{$display}-widescreen-only
display: #{$display} !important
+fullhd
.is-#{$display}-fullhd
display: #{$display} !important
.is-hidden
display: none !important
.is-sr-only
border: none !important
clip: rect(0, 0, 0, 0) !important
height: 0.01em !important
overflow: hidden !important
padding: 0 !important
position: absolute !important
white-space: nowrap !important
width: 0.01em !important
+mobile
.is-hidden-mobile
display: none !important
+tablet
.is-hidden-tablet
display: none !important
+tablet-only
.is-hidden-tablet-only
display: none !important
+touch
.is-hidden-touch
display: none !important
+desktop
.is-hidden-desktop
display: none !important
+desktop-only
.is-hidden-desktop-only
display: none !important
+widescreen
.is-hidden-widescreen
display: none !important
+widescreen-only
.is-hidden-widescreen-only
display: none !important
+fullhd
.is-hidden-fullhd
display: none !important
.is-invisible
visibility: hidden !important
+mobile
.is-invisible-mobile
visibility: hidden !important
+tablet
.is-invisible-tablet
visibility: hidden !important
+tablet-only
.is-invisible-tablet-only
visibility: hidden !important
+touch
.is-invisible-touch
visibility: hidden !important
+desktop
.is-invisible-desktop
visibility: hidden !important
+desktop-only
.is-invisible-desktop-only
visibility: hidden !important
+widescreen
.is-invisible-widescreen
visibility: hidden !important
+widescreen-only
.is-invisible-widescreen-only
visibility: hidden !important
+fullhd
.is-invisible-fullhd
visibility: hidden !important
// Other
.is-marginless
margin: 0 !important
.is-paddingless
padding: 0 !important
.is-radiusless
border-radius: 0 !important
.is-shadowless
box-shadow: none !important
.is-unselectable
@extend %unselectable
.is-relative
position: relative !important

85
website/sass/sass/base/minireset.sass

@ -0,0 +1,85 @@
/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */
// Blocks
html,
body,
p,
ol,
ul,
li,
dl,
dt,
dd,
blockquote,
figure,
fieldset,
legend,
textarea,
pre,
iframe,
hr,
h1,
h2,
h3,
h4,
h5,
h6
margin: 0
padding: 0
// Headings
h1,
h2,
h3,
h4,
h5,
h6
font-size: 100%
font-weight: normal
// List
ul
list-style: none
// Form
button,
input,
select,
textarea
margin: 0
// Box sizing
html
box-sizing: border-box
*
&,
&::before,
&::after
box-sizing: inherit
// Media
img,
embed,
iframe,
object,
video
height: auto
max-width: 100%
audio
max-width: 100%
// Iframe
iframe
border: 0
// Table
table
border-collapse: collapse
border-spacing: 0
td,
th
padding: 0
&:not([align])
text-align: left

15
website/sass/sass/components/_all.sass

@ -0,0 +1,15 @@
@charset "utf-8"
@import "breadcrumb.sass"
@import "card.sass"
@import "dropdown.sass"
@import "level.sass"
@import "list.sass"
@import "media.sass"
@import "menu.sass"
@import "message.sass"
@import "modal.sass"
@import "navbar.sass"
@import "pagination.sass"
@import "panel.sass"
@import "tabs.sass"

75
website/sass/sass/components/breadcrumb.sass

@ -0,0 +1,75 @@
$breadcrumb-item-color: $link !default
$breadcrumb-item-hover-color: $link-hover !default
$breadcrumb-item-active-color: $text-strong !default
$breadcrumb-item-padding-vertical: 0 !default
$breadcrumb-item-padding-horizontal: 0.75em !default
$breadcrumb-item-separator-color: $grey-light !default
.breadcrumb
@extend %block
@extend %unselectable
font-size: $size-normal
white-space: nowrap
a
align-items: center
color: $breadcrumb-item-color
display: flex
justify-content: center
padding: $breadcrumb-item-padding-vertical $breadcrumb-item-padding-horizontal
&:hover
color: $breadcrumb-item-hover-color
li
align-items: center
display: flex
&:first-child a
padding-left: 0
&.is-active
a
color: $breadcrumb-item-active-color
cursor: default
pointer-events: none
& + li::before
color: $breadcrumb-item-separator-color
content: "\0002f"
ul,
ol
align-items: flex-start
display: flex
flex-wrap: wrap
justify-content: flex-start
.icon
&:first-child
margin-right: 0.5em
&:last-child
margin-left: 0.5em
// Alignment
&.is-centered
ol,
ul
justify-content: center
&.is-right
ol,
ul
justify-content: flex-end
// Sizes
&.is-small
font-size: $size-small
&.is-medium
font-size: $size-medium
&.is-large
font-size: $size-large
// Styles
&.has-arrow-separator
li + li::before
content: "\02192"
&.has-bullet-separator
li + li::before
content: "\02022"
&.has-dot-separator
li + li::before
content: "\000b7"
&.has-succeeds-separator
li + li::before
content: "\0227B"

79
website/sass/sass/components/card.sass

@ -0,0 +1,79 @@
$card-color: $text !default
$card-background-color: $white !default
$card-shadow: 0 2px 3px rgba($black, 0.1), 0 0 0 1px rgba($black, 0.1) !default
$card-header-background-color: transparent !default
$card-header-color: $text-strong !default
$card-header-padding: 0.75rem !default
$card-header-shadow: 0 1px 2px rgba($black, 0.1) !default
$card-header-weight: $weight-bold !default
$card-content-background-color: transparent !default
$card-content-padding: 1.5rem !default
$card-footer-background-color: transparent !default
$card-footer-border-top: 1px solid $border !default
$card-footer-padding: 0.75rem !default
$card-media-margin: $block-spacing !default
.card
background-color: $card-background-color
box-shadow: $card-shadow
color: $card-color
max-width: 100%
position: relative
.card-header
background-color: $card-header-background-color
align-items: stretch
box-shadow: $card-header-shadow
display: flex
.card-header-title
align-items: center
color: $card-header-color
display: flex
flex-grow: 1
font-weight: $card-header-weight
padding: $card-header-padding
&.is-centered
justify-content: center
.card-header-icon
align-items: center
cursor: pointer
display: flex
justify-content: center
padding: $card-header-padding
.card-image
display: block
position: relative
.card-content
background-color: $card-content-background-color
padding: $card-content-padding
.card-footer
background-color: $card-footer-background-color
border-top: $card-footer-border-top
align-items: stretch
display: flex
.card-footer-item
align-items: center
display: flex
flex-basis: 0
flex-grow: 1
flex-shrink: 0
justify-content: center
padding: $card-footer-padding
&:not(:last-child)
border-right: $card-footer-border-top
// Combinations
.card
.media:not(:last-child)
margin-bottom: $card-media-margin

81
website/sass/sass/components/dropdown.sass

@ -0,0 +1,81 @@
$dropdown-menu-min-width: 12rem !default
$dropdown-content-background-color: $white !default
$dropdown-content-arrow: $link !default
$dropdown-content-offset: 4px !default
$dropdown-content-padding-bottom: 0.5rem !default
$dropdown-content-padding-top: 0.5rem !default
$dropdown-content-radius: $radius !default
$dropdown-content-shadow: 0 2px 3px rgba($black, 0.1), 0 0 0 1px rgba($black, 0.1) !default
$dropdown-content-z: 20 !default
$dropdown-item-color: $grey-dark !default
$dropdown-item-hover-color: $black !default
$dropdown-item-hover-background-color: $background !default
$dropdown-item-active-color: $link-invert !default
$dropdown-item-active-background-color: $link !default
$dropdown-divider-background-color: $border !default
.dropdown
display: inline-flex
position: relative
vertical-align: top
&.is-active,
&.is-hoverable:hover
.dropdown-menu
display: block
&.is-right
.dropdown-menu
left: auto
right: 0
&.is-up
.dropdown-menu
bottom: 100%
padding-bottom: $dropdown-content-offset
padding-top: initial
top: auto
.dropdown-menu
display: none
left: 0
min-width: $dropdown-menu-min-width
padding-top: $dropdown-content-offset
position: absolute
top: 100%
z-index: $dropdown-content-z
.dropdown-content
background-color: $dropdown-content-background-color
border-radius: $dropdown-content-radius
box-shadow: $dropdown-content-shadow
padding-bottom: $dropdown-content-padding-bottom
padding-top: $dropdown-content-padding-top
.dropdown-item
color: $dropdown-item-color
display: block
font-size: 0.875rem
line-height: 1.5
padding: 0.375rem 1rem
position: relative
a.dropdown-item,
button.dropdown-item
padding-right: 3rem
text-align: left
white-space: nowrap
width: 100%
&:hover
background-color: $dropdown-item-hover-background-color
color: $dropdown-item-hover-color
&.is-active
background-color: $dropdown-item-active-background-color
color: $dropdown-item-active-color
.dropdown-divider
background-color: $dropdown-divider-background-color
border: none
display: block
height: 1px
margin: 0.5rem 0

77
website/sass/sass/components/level.sass

@ -0,0 +1,77 @@
$level-item-spacing: ($block-spacing / 2) !default
.level
@extend %block
align-items: center
justify-content: space-between
code
border-radius: $radius
img
display: inline-block
vertical-align: top
// Modifiers
&.is-mobile
display: flex
.level-left,
.level-right
display: flex
.level-left + .level-right
margin-top: 0
.level-item
&:not(:last-child)
margin-bottom: 0
margin-right: $level-item-spacing
&:not(.is-narrow)
flex-grow: 1
// Responsiveness
+tablet
display: flex
& > .level-item
&:not(.is-narrow)
flex-grow: 1
.level-item
align-items: center
display: flex
flex-basis: auto
flex-grow: 0
flex-shrink: 0
justify-content: center
.title,
.subtitle
margin-bottom: 0
// Responsiveness
+mobile
&:not(:last-child)
margin-bottom: $level-item-spacing
.level-left,
.level-right
flex-basis: auto
flex-grow: 0
flex-shrink: 0
.level-item
/