diff --git a/-/fastn-community.github.io/code-block/static/copy-dark.svg b/-/fastn-community.github.io/code-block/static/copy-dark.svg new file mode 100644 index 0000000..bbe1ce2 --- /dev/null +++ b/-/fastn-community.github.io/code-block/static/copy-dark.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/-/fastn-community.github.io/code-block/static/copy-hover-dark.svg b/-/fastn-community.github.io/code-block/static/copy-hover-dark.svg new file mode 100644 index 0000000..340c659 --- /dev/null +++ b/-/fastn-community.github.io/code-block/static/copy-hover-dark.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/-/fastn-community.github.io/code-block/static/copy-hover.svg b/-/fastn-community.github.io/code-block/static/copy-hover.svg new file mode 100644 index 0000000..6b5d2c7 --- /dev/null +++ b/-/fastn-community.github.io/code-block/static/copy-hover.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/-/fastn-community.github.io/code-block/static/copy.svg b/-/fastn-community.github.io/code-block/static/copy.svg new file mode 100644 index 0000000..fe86715 --- /dev/null +++ b/-/fastn-community.github.io/code-block/static/copy.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/-/fastn-community.github.io/code-block/static/download-dark.svg b/-/fastn-community.github.io/code-block/static/download-dark.svg new file mode 100644 index 0000000..3a7d32b --- /dev/null +++ b/-/fastn-community.github.io/code-block/static/download-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/-/fastn-community.github.io/code-block/static/download-hover-dark.svg b/-/fastn-community.github.io/code-block/static/download-hover-dark.svg new file mode 100644 index 0000000..ac5ef79 --- /dev/null +++ b/-/fastn-community.github.io/code-block/static/download-hover-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/-/fastn-community.github.io/code-block/static/download-hover.svg b/-/fastn-community.github.io/code-block/static/download-hover.svg new file mode 100644 index 0000000..782473e --- /dev/null +++ b/-/fastn-community.github.io/code-block/static/download-hover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/-/fastn-community.github.io/code-block/static/download.svg b/-/fastn-community.github.io/code-block/static/download.svg new file mode 100644 index 0000000..04493b6 --- /dev/null +++ b/-/fastn-community.github.io/code-block/static/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/-/fastn-community.github.io/code-block/static/tick.svg b/-/fastn-community.github.io/code-block/static/tick.svg new file mode 100644 index 0000000..b142da8 --- /dev/null +++ b/-/fastn-community.github.io/code-block/static/tick.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/-/fastn-community.github.io/dark-mode-switcher/static/dark-mode-active-dark.png b/-/fastn-community.github.io/dark-mode-switcher/static/dark-mode-active-dark.png new file mode 100644 index 0000000..ba1e665 Binary files /dev/null and b/-/fastn-community.github.io/dark-mode-switcher/static/dark-mode-active-dark.png differ diff --git a/-/fastn-community.github.io/dark-mode-switcher/static/light-mode-active-dark.png b/-/fastn-community.github.io/dark-mode-switcher/static/light-mode-active-dark.png new file mode 100644 index 0000000..9e45a2a Binary files /dev/null and b/-/fastn-community.github.io/dark-mode-switcher/static/light-mode-active-dark.png differ diff --git a/-/fastn-community.github.io/dark-mode-switcher/static/light-mode-active.png b/-/fastn-community.github.io/dark-mode-switcher/static/light-mode-active.png new file mode 100644 index 0000000..9e45a2a Binary files /dev/null and b/-/fastn-community.github.io/dark-mode-switcher/static/light-mode-active.png differ diff --git a/-/fastn-community.github.io/dark-mode-switcher/static/system-mode-active-dark.png b/-/fastn-community.github.io/dark-mode-switcher/static/system-mode-active-dark.png new file mode 100644 index 0000000..cf1bd6c Binary files /dev/null and b/-/fastn-community.github.io/dark-mode-switcher/static/system-mode-active-dark.png differ diff --git a/-/fastn-community.github.io/dark-mode-switcher/static/system-mode-active.png b/-/fastn-community.github.io/dark-mode-switcher/static/system-mode-active.png new file mode 100644 index 0000000..cf1bd6c Binary files /dev/null and b/-/fastn-community.github.io/dark-mode-switcher/static/system-mode-active.png differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-100-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..40f0cf0 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-100-normal-cyrillic.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-cyrillic.woff2 new file mode 100644 index 0000000..ef0875f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-100-normal-greek-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-greek-ext.woff2 new file mode 100644 index 0000000..c7f59a6 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-100-normal-greek.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-greek.woff2 new file mode 100644 index 0000000..9d9d516 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-100-normal-latin-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-latin-ext.woff2 new file mode 100644 index 0000000..0a8a85f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-100-normal-latin.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-latin.woff2 new file mode 100644 index 0000000..bc59274 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-100-normal-vietnamese.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-vietnamese.woff2 new file mode 100644 index 0000000..56f9a45 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-100-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-200-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..40f0cf0 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-200-normal-cyrillic.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-cyrillic.woff2 new file mode 100644 index 0000000..ef0875f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-200-normal-greek-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-greek-ext.woff2 new file mode 100644 index 0000000..c7f59a6 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-200-normal-greek.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-greek.woff2 new file mode 100644 index 0000000..9d9d516 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-200-normal-latin-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-latin-ext.woff2 new file mode 100644 index 0000000..0a8a85f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-200-normal-latin.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-latin.woff2 new file mode 100644 index 0000000..bc59274 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-200-normal-vietnamese.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-vietnamese.woff2 new file mode 100644 index 0000000..56f9a45 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-200-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-300-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..40f0cf0 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-300-normal-cyrillic.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-cyrillic.woff2 new file mode 100644 index 0000000..ef0875f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-300-normal-greek-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-greek-ext.woff2 new file mode 100644 index 0000000..c7f59a6 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-300-normal-greek.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-greek.woff2 new file mode 100644 index 0000000..9d9d516 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-300-normal-latin-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-latin-ext.woff2 new file mode 100644 index 0000000..0a8a85f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-300-normal-latin.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-latin.woff2 new file mode 100644 index 0000000..bc59274 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-300-normal-vietnamese.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-vietnamese.woff2 new file mode 100644 index 0000000..56f9a45 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-300-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-400-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..40f0cf0 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-400-normal-cyrillic.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-cyrillic.woff2 new file mode 100644 index 0000000..ef0875f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-400-normal-greek-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-greek-ext.woff2 new file mode 100644 index 0000000..c7f59a6 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-400-normal-greek.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-greek.woff2 new file mode 100644 index 0000000..9d9d516 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-400-normal-latin-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-latin-ext.woff2 new file mode 100644 index 0000000..0a8a85f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-400-normal-latin.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-latin.woff2 new file mode 100644 index 0000000..bc59274 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-400-normal-vietnamese.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-vietnamese.woff2 new file mode 100644 index 0000000..56f9a45 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-400-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-500-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..40f0cf0 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-500-normal-cyrillic.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-cyrillic.woff2 new file mode 100644 index 0000000..ef0875f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-500-normal-greek-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-greek-ext.woff2 new file mode 100644 index 0000000..c7f59a6 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-500-normal-greek.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-greek.woff2 new file mode 100644 index 0000000..9d9d516 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-500-normal-latin-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-latin-ext.woff2 new file mode 100644 index 0000000..0a8a85f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-500-normal-latin.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-latin.woff2 new file mode 100644 index 0000000..bc59274 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-500-normal-vietnamese.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-vietnamese.woff2 new file mode 100644 index 0000000..56f9a45 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-500-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-600-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..40f0cf0 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-600-normal-cyrillic.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-cyrillic.woff2 new file mode 100644 index 0000000..ef0875f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-600-normal-greek-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-greek-ext.woff2 new file mode 100644 index 0000000..c7f59a6 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-600-normal-greek.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-greek.woff2 new file mode 100644 index 0000000..9d9d516 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-600-normal-latin-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-latin-ext.woff2 new file mode 100644 index 0000000..0a8a85f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-600-normal-latin.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-latin.woff2 new file mode 100644 index 0000000..bc59274 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-600-normal-vietnamese.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-vietnamese.woff2 new file mode 100644 index 0000000..56f9a45 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-600-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-700-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..40f0cf0 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-700-normal-cyrillic.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-cyrillic.woff2 new file mode 100644 index 0000000..ef0875f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-700-normal-greek-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-greek-ext.woff2 new file mode 100644 index 0000000..c7f59a6 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-700-normal-greek.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-greek.woff2 new file mode 100644 index 0000000..9d9d516 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-700-normal-latin-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-latin-ext.woff2 new file mode 100644 index 0000000..0a8a85f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-700-normal-latin.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-latin.woff2 new file mode 100644 index 0000000..bc59274 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-700-normal-vietnamese.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-vietnamese.woff2 new file mode 100644 index 0000000..56f9a45 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-700-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-800-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..40f0cf0 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-800-normal-cyrillic.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-cyrillic.woff2 new file mode 100644 index 0000000..ef0875f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-800-normal-greek-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-greek-ext.woff2 new file mode 100644 index 0000000..c7f59a6 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-800-normal-greek.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-greek.woff2 new file mode 100644 index 0000000..9d9d516 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-800-normal-latin-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-latin-ext.woff2 new file mode 100644 index 0000000..0a8a85f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-800-normal-latin.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-latin.woff2 new file mode 100644 index 0000000..bc59274 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-800-normal-vietnamese.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-vietnamese.woff2 new file mode 100644 index 0000000..56f9a45 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-800-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-900-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..40f0cf0 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-900-normal-cyrillic.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-cyrillic.woff2 new file mode 100644 index 0000000..ef0875f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-900-normal-greek-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-greek-ext.woff2 new file mode 100644 index 0000000..c7f59a6 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-900-normal-greek.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-greek.woff2 new file mode 100644 index 0000000..9d9d516 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-900-normal-latin-ext.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-latin-ext.woff2 new file mode 100644 index 0000000..0a8a85f Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-900-normal-latin.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-latin.woff2 new file mode 100644 index 0000000..bc59274 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/inter-font/static/Inter-900-normal-vietnamese.woff2 b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-vietnamese.woff2 new file mode 100644 index 0000000..56f9a45 Binary files /dev/null and b/-/fastn-community.github.io/inter-font/static/Inter-900-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-cyrillic-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-cyrillic-ext.woff2 new file mode 100644 index 0000000..9f1effc Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-cyrillic.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-cyrillic.woff2 new file mode 100644 index 0000000..e61202e Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-greek-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-greek-ext.woff2 new file mode 100644 index 0000000..f0f919c Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-greek.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-greek.woff2 new file mode 100644 index 0000000..dfe5beb Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-greek.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-hebrew.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-hebrew.woff2 new file mode 100644 index 0000000..a133fc6 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-hebrew.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-latin-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-latin-ext.woff2 new file mode 100644 index 0000000..dfb24a5 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-latin.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-latin.woff2 new file mode 100644 index 0000000..42285c6 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-latin.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-vietnamese.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-vietnamese.woff2 new file mode 100644 index 0000000..ea70742 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-italic-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..beb6c24 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-cyrillic.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-cyrillic.woff2 new file mode 100644 index 0000000..7cded31 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-greek-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-greek-ext.woff2 new file mode 100644 index 0000000..a886b87 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-greek.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-greek.woff2 new file mode 100644 index 0000000..aa05f66 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-hebrew.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-hebrew.woff2 new file mode 100644 index 0000000..98ec85c Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-hebrew.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-latin-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-latin-ext.woff2 new file mode 100644 index 0000000..7f6c5d2 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-latin.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-latin.woff2 new file mode 100644 index 0000000..cf5fbf9 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-vietnamese.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-vietnamese.woff2 new file mode 100644 index 0000000..cae4822 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-300-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-cyrillic-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-cyrillic-ext.woff2 new file mode 100644 index 0000000..9f1effc Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-cyrillic.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-cyrillic.woff2 new file mode 100644 index 0000000..e61202e Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-greek-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-greek-ext.woff2 new file mode 100644 index 0000000..f0f919c Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-greek.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-greek.woff2 new file mode 100644 index 0000000..dfe5beb Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-greek.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-hebrew.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-hebrew.woff2 new file mode 100644 index 0000000..a133fc6 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-hebrew.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-latin-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-latin-ext.woff2 new file mode 100644 index 0000000..dfb24a5 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-latin.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-latin.woff2 new file mode 100644 index 0000000..42285c6 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-latin.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-vietnamese.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-vietnamese.woff2 new file mode 100644 index 0000000..ea70742 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-italic-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..beb6c24 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-cyrillic.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-cyrillic.woff2 new file mode 100644 index 0000000..7cded31 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-greek-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-greek-ext.woff2 new file mode 100644 index 0000000..a886b87 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-greek.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-greek.woff2 new file mode 100644 index 0000000..aa05f66 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-hebrew.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-hebrew.woff2 new file mode 100644 index 0000000..98ec85c Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-hebrew.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-latin-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-latin-ext.woff2 new file mode 100644 index 0000000..7f6c5d2 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-latin.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-latin.woff2 new file mode 100644 index 0000000..cf5fbf9 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-vietnamese.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-vietnamese.woff2 new file mode 100644 index 0000000..cae4822 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-400-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-cyrillic-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-cyrillic-ext.woff2 new file mode 100644 index 0000000..9f1effc Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-cyrillic.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-cyrillic.woff2 new file mode 100644 index 0000000..e61202e Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-greek-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-greek-ext.woff2 new file mode 100644 index 0000000..f0f919c Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-greek.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-greek.woff2 new file mode 100644 index 0000000..dfe5beb Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-greek.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-hebrew.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-hebrew.woff2 new file mode 100644 index 0000000..a133fc6 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-hebrew.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-latin-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-latin-ext.woff2 new file mode 100644 index 0000000..dfb24a5 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-latin.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-latin.woff2 new file mode 100644 index 0000000..42285c6 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-latin.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-vietnamese.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-vietnamese.woff2 new file mode 100644 index 0000000..ea70742 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-italic-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..beb6c24 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-cyrillic.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-cyrillic.woff2 new file mode 100644 index 0000000..7cded31 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-greek-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-greek-ext.woff2 new file mode 100644 index 0000000..a886b87 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-greek.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-greek.woff2 new file mode 100644 index 0000000..aa05f66 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-hebrew.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-hebrew.woff2 new file mode 100644 index 0000000..98ec85c Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-hebrew.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-latin-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-latin-ext.woff2 new file mode 100644 index 0000000..7f6c5d2 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-latin.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-latin.woff2 new file mode 100644 index 0000000..cf5fbf9 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-vietnamese.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-vietnamese.woff2 new file mode 100644 index 0000000..cae4822 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-500-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-cyrillic-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-cyrillic-ext.woff2 new file mode 100644 index 0000000..9f1effc Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-cyrillic.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-cyrillic.woff2 new file mode 100644 index 0000000..e61202e Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-greek-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-greek-ext.woff2 new file mode 100644 index 0000000..f0f919c Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-greek.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-greek.woff2 new file mode 100644 index 0000000..dfe5beb Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-greek.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-hebrew.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-hebrew.woff2 new file mode 100644 index 0000000..a133fc6 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-hebrew.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-latin-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-latin-ext.woff2 new file mode 100644 index 0000000..dfb24a5 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-latin.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-latin.woff2 new file mode 100644 index 0000000..42285c6 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-latin.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-vietnamese.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-vietnamese.woff2 new file mode 100644 index 0000000..ea70742 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-italic-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..beb6c24 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-cyrillic.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-cyrillic.woff2 new file mode 100644 index 0000000..7cded31 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-greek-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-greek-ext.woff2 new file mode 100644 index 0000000..a886b87 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-greek.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-greek.woff2 new file mode 100644 index 0000000..aa05f66 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-hebrew.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-hebrew.woff2 new file mode 100644 index 0000000..98ec85c Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-hebrew.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-latin-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-latin-ext.woff2 new file mode 100644 index 0000000..7f6c5d2 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-latin.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-latin.woff2 new file mode 100644 index 0000000..cf5fbf9 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-vietnamese.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-vietnamese.woff2 new file mode 100644 index 0000000..cae4822 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-600-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-cyrillic-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-cyrillic-ext.woff2 new file mode 100644 index 0000000..9f1effc Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-cyrillic.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-cyrillic.woff2 new file mode 100644 index 0000000..e61202e Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-greek-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-greek-ext.woff2 new file mode 100644 index 0000000..f0f919c Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-greek.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-greek.woff2 new file mode 100644 index 0000000..dfe5beb Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-greek.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-hebrew.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-hebrew.woff2 new file mode 100644 index 0000000..a133fc6 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-hebrew.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-latin-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-latin-ext.woff2 new file mode 100644 index 0000000..dfb24a5 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-latin.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-latin.woff2 new file mode 100644 index 0000000..42285c6 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-latin.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-vietnamese.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-vietnamese.woff2 new file mode 100644 index 0000000..ea70742 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-italic-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..beb6c24 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-cyrillic.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-cyrillic.woff2 new file mode 100644 index 0000000..7cded31 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-greek-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-greek-ext.woff2 new file mode 100644 index 0000000..a886b87 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-greek.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-greek.woff2 new file mode 100644 index 0000000..aa05f66 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-hebrew.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-hebrew.woff2 new file mode 100644 index 0000000..98ec85c Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-hebrew.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-latin-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-latin-ext.woff2 new file mode 100644 index 0000000..7f6c5d2 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-latin.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-latin.woff2 new file mode 100644 index 0000000..cf5fbf9 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-vietnamese.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-vietnamese.woff2 new file mode 100644 index 0000000..cae4822 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-700-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-cyrillic-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-cyrillic-ext.woff2 new file mode 100644 index 0000000..9f1effc Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-cyrillic.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-cyrillic.woff2 new file mode 100644 index 0000000..e61202e Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-greek-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-greek-ext.woff2 new file mode 100644 index 0000000..f0f919c Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-greek.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-greek.woff2 new file mode 100644 index 0000000..dfe5beb Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-greek.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-hebrew.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-hebrew.woff2 new file mode 100644 index 0000000..a133fc6 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-hebrew.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-latin-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-latin-ext.woff2 new file mode 100644 index 0000000..dfb24a5 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-latin.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-latin.woff2 new file mode 100644 index 0000000..42285c6 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-latin.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-vietnamese.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-vietnamese.woff2 new file mode 100644 index 0000000..ea70742 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-italic-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-cyrillic-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-cyrillic-ext.woff2 new file mode 100644 index 0000000..beb6c24 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-cyrillic-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-cyrillic.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-cyrillic.woff2 new file mode 100644 index 0000000..7cded31 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-cyrillic.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-greek-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-greek-ext.woff2 new file mode 100644 index 0000000..a886b87 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-greek-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-greek.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-greek.woff2 new file mode 100644 index 0000000..aa05f66 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-greek.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-hebrew.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-hebrew.woff2 new file mode 100644 index 0000000..98ec85c Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-hebrew.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-latin-ext.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-latin-ext.woff2 new file mode 100644 index 0000000..7f6c5d2 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-latin-ext.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-latin.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-latin.woff2 new file mode 100644 index 0000000..cf5fbf9 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-latin.woff2 differ diff --git a/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-vietnamese.woff2 b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-vietnamese.woff2 new file mode 100644 index 0000000..cae4822 Binary files /dev/null and b/-/fastn-community.github.io/opensans-font/static/Open-Sans-800-normal-vietnamese.woff2 differ diff --git a/-/fastn-community.github.io/site-doc/static/copy-dark.svg b/-/fastn-community.github.io/site-doc/static/copy-dark.svg new file mode 100644 index 0000000..bbe1ce2 --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/copy-dark.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/-/fastn-community.github.io/site-doc/static/copy.svg b/-/fastn-community.github.io/site-doc/static/copy.svg new file mode 100644 index 0000000..6bd7ed0 --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/copy.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/-/fastn-community.github.io/site-doc/static/cross-dark.svg b/-/fastn-community.github.io/site-doc/static/cross-dark.svg new file mode 100644 index 0000000..f35b1c6 --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/cross-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/-/fastn-community.github.io/site-doc/static/cross.svg b/-/fastn-community.github.io/site-doc/static/cross.svg new file mode 100644 index 0000000..f35b1c6 --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/cross.svg @@ -0,0 +1,3 @@ + + + diff --git a/-/fastn-community.github.io/site-doc/static/hamburger-dark.svg b/-/fastn-community.github.io/site-doc/static/hamburger-dark.svg new file mode 100644 index 0000000..ee4df89 --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/hamburger-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/-/fastn-community.github.io/site-doc/static/hamburger.svg b/-/fastn-community.github.io/site-doc/static/hamburger.svg new file mode 100644 index 0000000..565923a --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/hamburger.svg @@ -0,0 +1,3 @@ + + + diff --git a/-/fastn-community.github.io/site-doc/static/icon-github-dark.svg b/-/fastn-community.github.io/site-doc/static/icon-github-dark.svg new file mode 100644 index 0000000..7455dd7 --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/icon-github-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/-/fastn-community.github.io/site-doc/static/icon-github.svg b/-/fastn-community.github.io/site-doc/static/icon-github.svg new file mode 100644 index 0000000..7c760e4 --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/icon-github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/-/fastn-community.github.io/site-doc/static/link-dark.svg b/-/fastn-community.github.io/site-doc/static/link-dark.svg new file mode 100644 index 0000000..a8006fa --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/link-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/-/fastn-community.github.io/site-doc/static/link.svg b/-/fastn-community.github.io/site-doc/static/link.svg new file mode 100644 index 0000000..0b788ff --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/-/fastn-community.github.io/site-doc/static/minify-icon-dark.svg b/-/fastn-community.github.io/site-doc/static/minify-icon-dark.svg new file mode 100644 index 0000000..6391c5b --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/minify-icon-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/-/fastn-community.github.io/site-doc/static/minify-icon.svg b/-/fastn-community.github.io/site-doc/static/minify-icon.svg new file mode 100644 index 0000000..7e90547 --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/minify-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/-/fastn-community.github.io/site-doc/static/tick-dark.svg b/-/fastn-community.github.io/site-doc/static/tick-dark.svg new file mode 100644 index 0000000..b142da8 --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/tick-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/-/fastn-community.github.io/site-doc/static/tick.svg b/-/fastn-community.github.io/site-doc/static/tick.svg new file mode 100644 index 0000000..b142da8 --- /dev/null +++ b/-/fastn-community.github.io/site-doc/static/tick.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/FASTN.ftd b/FASTN.ftd new file mode 100644 index 0000000..4d6d4de --- /dev/null +++ b/FASTN.ftd @@ -0,0 +1,26 @@ +-- import: fastn + +-- fastn.package: .github.io/ + +-- fastn.dependency: fastn-community.github.io/site-doc +-- fastn.dependency: fastn-community.github.io/code-block +-- fastn.dependency: fastn-community.github.io/footer +;; replace inter-font package name with font package name you want to create +;; typography document for: +-- fastn.dependency: fastn-community.github.io/inter-font + +-- fastn.auto-import: fastn-community.github.io/site-doc +-- fastn.auto-import: fastn-community.github.io/code-block as cb + + + +-- fastn.sitemap: + + +# Home: index.html + +- fastn typography: fastn-typography/ + + +# GitHub + url: https://github.com// diff --git a/default-C5FF83A8B3723F00CC5D810569E9D4ADF83311143685244B4504BD9A34F6904F.css b/default-C5FF83A8B3723F00CC5D810569E9D4ADF83311143685244B4504BD9A34F6904F.css new file mode 100644 index 0000000..c1649be --- /dev/null +++ b/default-C5FF83A8B3723F00CC5D810569E9D4ADF83311143685244B4504BD9A34F6904F.css @@ -0,0 +1,196 @@ +*, :after, :before { + box-sizing: inherit; +} + +*, pre, div { + padding: 0; + margin: 0; + gap: 0; + outline: none; +} + + +body, ol ol, ol ul, ul ol, ul ul { + margin:0 +} +pre, table{ + overflow:auto +} +html { + height: 100%; + width: 100%; +} + +body { + height: 100%; + width: 100%; +} + +input, code { + vertical-align: middle; +} +pre { + white-space: break-spaces; + word-wrap: break-word; +} +html { + -webkit-font-smoothing: antialiased; + text-rendering: optimizelegibility; + -webkit-text-size-adjust: 100%; + text-size-adjust: 100%; +} +iframe { + border: 0; + color-scheme: auto; +} + +pre code { + overflow-x: auto; + display: block; + padding: 10px !important; +} + +/* Common styles */ +.ft_common{ + text-decoration: none; + box-sizing: border-box; + border-top-width: 0px; + border-bottom-width: 0px; + border-left-width: 0px; + border-right-width: 0px; + border-style: solid; + height: auto; + width: auto; +} + +/* Common container attributes */ +.ft_row, .ft_column { + display: flex; + align-items: start; + justify-content: start +} + +.ft_row { + flex-direction: row; +} + +.ft_column { + flex-direction: column; +} + +.ft_md ul, +.ft_md ol{ + margin: 10px 0; +} + +.ft_md ul ul, +.ft_md ul ol, +.ft_md ol ul, +.ft_md ol ol { + margin: 0; +} + +.ft_md ul li, +.ft_md ol li, +.ft_md ul ol li .ft_md ul ul li .ft_md ol ul li .ft_md ol ol li { + position: relative; + padding-left: 32px; + margin: 4px 0; +} + +.ft_md ul { + list-style: none; + padding-left: 0; +} + +.ft_md ol { + list-style: none; + padding-left: 0; + counter-reset: item; +} + +.ft_md ol li:before, +.ft_md ol ol li:before, +.ft_md ul ol li:before { + content: counter(item); + counter-increment: item; + font-size: 11px; + line-height: 10px; + text-align: center; + padding: 4px 0; + height: 10px; + width: 18px; + border-radius: 10px; + position: absolute; + left: 0; + top: 5px; +} + +.ft_md ul li::before, +.ft_md ul ul li::before, +.ft_md ol ul li::before { + content: ""; + position: absolute; + width: 6px; + height: 6px; + left: 8px; + top: 10px; + border-radius: 50%; + background: #c1c8ce; +} + +a { + color: #2952a3; +} + +a:visited { + color: #856ab9; +} + +a:hover { + color: #24478f; +} + +.ft_md a { + text-decoration: none; +} + +.ft_md a:visited { + text-decoration: none; +} + +.ft_md a:hover { + text-decoration: none; +} + +.ft_md code { + padding: 0.1rem 0.25rem; + border-radius: 4px; + background-color: #0000000d; +} + +.ft_md blockquote { + padding: 0.25rem 1rem; + margin: 1rem 0; + border-radius: 3px; +} + +.ft_md blockquote > blockquote { + margin: 0; +} + +body.fpm-dark .ft_md a { + text-decoration: none; +} + + +body.fpm-dark .ft_md code { + padding: 0.1rem 0.25rem; + border-radius: 4px; + background-color: #ffffff1f; +} + + +p { + margin-block-end: 1em; +} diff --git a/default-FC5F9B71655904B1A74A313AABC497A862009762906B34152BC69284D61C25B5.js b/default-FC5F9B71655904B1A74A313AABC497A862009762906B34152BC69284D61C25B5.js new file mode 100644 index 0000000..ad778a2 --- /dev/null +++ b/default-FC5F9B71655904B1A74A313AABC497A862009762906B34152BC69284D61C25B5.js @@ -0,0 +1,1181 @@ +"use strict"; +window.ftd = (function () { + let ftd_data = {}; + let exports = {}; + // Setting up default value on + const inputElements = document.querySelectorAll('input[data-dv]'); + for (let input_ele of inputElements) { + // @ts-ignore + input_ele.defaultValue = input_ele.dataset.dv; + } + exports.init = function (id, data) { + let element = document.getElementById(data); + if (!!element) { + ftd_data[id] = JSON.parse(element.innerText); + window.ftd.post_init(); + } + }; + exports.data = ftd_data; + function handle_function(evt, id, action, obj, function_arguments) { + console.log(id, action); + console.log(action.name); + let argument; + for (argument in action.values) { + if (action.values.hasOwnProperty(argument)) { + // @ts-ignore + let value = action.values[argument][1] !== undefined ? action.values[argument][1] : action.values[argument]; + if (typeof value === 'object') { + let function_argument = value; + if (!!function_argument && !!function_argument.reference) { + let obj_value = null; + let obj_checked = null; + try { + obj_value = obj.value; + obj_checked = obj.checked; + } + catch (_a) { + obj_value = null; + obj_checked = null; + } + let value = resolve_reference(function_argument.reference, ftd_data[id], obj_value, obj_checked); + if (!!function_argument.mutable) { + function_argument.value = value; + function_arguments.push(function_argument); + } + else { + function_arguments.push(deepCopy(value)); + } + } + } + else { + function_arguments.push(value); + } + } + } + return window[action.name](...function_arguments, function_arguments, ftd_data[id], id); + } + function handle_event(evt, id, action, obj) { + let function_arguments = []; + handle_function(evt, id, action, obj, function_arguments); + // @ts-ignore + if (function_arguments["CHANGE_VALUE"] !== false) { + change_value(function_arguments, ftd_data[id], id); + } + } + exports.handle_event = function (evt, id, event, obj) { + window.ftd.utils.reset_full_height(); + console_log(id, event); + let actions = JSON.parse(event); + for (const action in actions) { + handle_event(evt, id, actions[action], obj); + } + window.ftd.utils.set_full_height(); + }; + exports.handle_function = function (evt, id, event, obj) { + console_log(id, event); + let actions = JSON.parse(event); + let function_arguments = []; + return handle_function(evt, id, actions, obj, function_arguments); + }; + exports.get_value = function (id, variable) { + let data = ftd_data[id]; + let [var_name, _] = get_name_and_remaining(variable); + if (data[var_name] === undefined && data[variable] === undefined) { + console_log(variable, "is not in data, ignoring"); + return; + } + return get_data_value(data, variable); + }; + exports.set_string_for_all = function (variable, value) { + for (let id in ftd_data) { + if (!ftd_data.hasOwnProperty(id)) { + continue; + } + // @ts-ignore + exports.set_value_by_id(id, variable, value); + } + }; + exports.set_bool_for_all = function (variable, value) { + for (let id in ftd_data) { + if (!ftd_data.hasOwnProperty(id)) { + continue; + } + // @ts-ignore + exports.set_bool(id, variable, value); + } + }; + exports.set_bool = function (id, variable, value) { + window.ftd.set_value_by_id(id, variable, value); + }; + exports.set_value = function (variable, value) { + window.ftd.set_value_by_id("main", variable, value); + }; + exports.set_value_by_id = function (id, variable, value) { + let data = ftd_data[id]; + let [var_name, remaining] = data[variable] === undefined + ? get_name_and_remaining(variable) + : [variable, null]; + if (data[var_name] === undefined && data[variable] === undefined) { + console_log(variable, "is not in data, ignoring"); + return; + } + window.ftd.delete_list(var_name, id); + if (!!window["set_value_" + id] && !!window["set_value_" + id][var_name]) { + window["set_value_" + id][var_name](data, value, remaining); + } + else { + set_data_value(data, variable, value); + } + window.ftd.create_list(var_name, id); + }; + exports.is_empty = function (str) { + return (!str || str.length === 0); + }; + exports.set_list = function (array, value, args, data, id) { + args["CHANGE_VALUE"] = false; + window.ftd.clear(array, args, data, id); + args[0].value = value; + change_value(args, data, id); + window.ftd.create_list(args[0].reference, id); + return array; + }; + exports.create_list = function (array_name, id) { + if (!!window.dummy_data_main && !!window.dummy_data_main[array_name]) { + let data = ftd_data[id]; + let dummys = window.dummy_data_main[array_name](data); + for (let i in dummys) { + let [htmls, data_id, start_index] = dummys[i]; + for (let i in htmls) { + let nodes = stringToHTML(htmls[i]); + let main = document.querySelector(`[data-id="${data_id}"]`); + main === null || main === void 0 ? void 0 : main.insertBefore(nodes.children[0], main.children[start_index + parseInt(i)]); + /*for (var j = 0, len = nodes.childElementCount; j < len; ++j) { + main?.insertBefore(nodes.children[j], main.children[start_index + parseInt(i)]); + }*/ + } + } + } + }; + exports.append = function (array, value, args, data, id) { + array.push(value); + args["CHANGE_VALUE"] = false; + args[0].value = array; + change_value(args, data, id); + if (!!window.dummy_data_main && !!window.dummy_data_main[args[0].reference]) { + // @ts-ignore + let list = resolve_reference(args[0].reference, data); + let dummys = window.dummy_data_main[args[0].reference](data, "LAST"); + for (let i in dummys) { + let [html, data_id, start_index] = dummys[i]; + let nodes = stringToHTML(html); + let main = document.querySelector(`[data-id="${data_id}"]`); + for (var j = 0, len = nodes.childElementCount; j < len; ++j) { + // @ts-ignore + main.insertBefore(nodes.children[j], main.children[start_index + list.length - 1]); + } + } + } + return array; + }; + exports.insert_at = function (array, value, idx, args, data, id) { + array.push(value); + args["CHANGE_VALUE"] = false; + args[0].value = array; + change_value(args, data, id); + if (!!window.dummy_data_main && !!window.dummy_data_main[args[0].reference]) { + // @ts-ignore + let list = resolve_reference(args[0].reference, data); + let dummys = window.dummy_data_main[args[0].reference](data, "LAST"); + for (let i in dummys) { + let [html, data_id, start_index] = dummys[i]; + let nodes = stringToHTML(html); + let main = document.querySelector(`[data-id="${data_id}"]`); + if (idx >= list.length) { + idx = list.length - 1; + } + else if (idx < 0) { + idx = 0; + } + // @ts-ignore + main.insertBefore(nodes.children[0], main.children[start_index + idx]); + } + } + return array; + }; + exports.clear = function (array, args, data, id) { + args["CHANGE_VALUE"] = false; + // @ts-ignore + window.ftd.delete_list(args[0].reference, id); + args[0].value = []; + change_value(args, data, id); + return array; + }; + exports.delete_list = function (array_name, id) { + if (!!window.dummy_data_main && !!window.dummy_data_main[array_name]) { + let data = ftd_data[id]; + let length = resolve_reference(array_name, data, null, null).length; + let dummys = window.dummy_data_main[array_name](data); + for (let j in dummys) { + let [_, data_id, start_index] = dummys[j]; + let main = document.querySelector(`[data-id="${data_id}"]`); + for (var i = length - 1 + start_index; i >= start_index; i--) { + main === null || main === void 0 ? void 0 : main.removeChild(main.children[i]); + } + } + } + }; + exports.delete_at = function (array, idx, args, data, id) { + // @ts-ignore + let length = resolve_reference(args[0].reference, data).length; + if (idx >= length) { + idx = length - 1; + } + else if (idx < 0) { + idx = 0; + } + array.splice(idx, 1); + args["CHANGE_VALUE"] = false; + args[0].value = array; + change_value(args, data, id); + if (!!window.dummy_data_main && !!window.dummy_data_main[args[0].reference]) { + let dummys = window.dummy_data_main[args[0].reference](data); + for (let i in dummys) { + let [_, data_id, start_index] = dummys[i]; + let main = document.querySelector(`[data-id="${data_id}"]`); + main === null || main === void 0 ? void 0 : main.removeChild(main.children[start_index + idx]); + } + } + return array; + }; + exports.http = function (url, method, ...request_data) { + let method_name = method.trim().toUpperCase(); + if (method_name == "GET") { + let query_parameters = new URLSearchParams(); + // @ts-ignore + for (let [header, value] of Object.entries(request_data)) { + if (header != "url" && header != "function" && header != "method") { + let [key, val] = value.length == 2 ? value : [header, value]; + query_parameters.set(key, val); + } + } + let query_string = query_parameters.toString(); + if (query_string) { + let get_url = url + "?" + query_parameters.toString(); + window.location.href = get_url; + } + else { + window.location.href = url; + } + return; + } + let json = request_data[0]; + if (request_data.length !== 1 || (request_data[0].length === 2 && Array.isArray(request_data[0]))) { + let new_json = {}; + // @ts-ignore + for (let [header, value] of Object.entries(request_data)) { + let [key, val] = value.length == 2 ? value : [header, value]; + new_json[key] = val; + } + json = new_json; + } + let xhr = new XMLHttpRequest(); + xhr.open(method_name, url); + xhr.setRequestHeader("Accept", "application/json"); + xhr.setRequestHeader("Content-Type", "application/json"); + xhr.onreadystatechange = function () { + if (xhr.readyState !== 4) { + // this means request is still underway + // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState + return; + } + if (xhr.status > 500) { + console.log("Error in calling url: ", request_data.url, xhr.responseText); + return; + } + let response = JSON.parse(xhr.response); + if (!!response && !!response.redirect) { + // Warning: we don't handle header location redirect + window.location.href = response.redirect; + } + else if (!!response && !!response.reload) { + window.location.reload(); + } + else { + let data = {}; + if (!!response.errors) { + for (let key of Object.keys(response.errors)) { + let value = response.errors[key]; + if (Array.isArray(value)) { + // django returns a list of strings + value = value.join(" "); + // also django does not append `-error` + key = key + "-error"; + } + // @ts-ignore + data[key] = value; + } + } + if (!!response.data) { + if (!!data) { + console_log("both .errrors and .data are present in response, ignoring .data"); + } + else { + data = response.data; + } + } + for (let ftd_variable of Object.keys(data)) { + // @ts-ignore + window.ftd.set_value(ftd_variable, data[ftd_variable]); + } + } + }; + xhr.send(JSON.stringify(json)); + }; + // source: https://stackoverflow.com/questions/400212/ (cc-by-sa) + exports.copy_to_clipboard = function (text) { + if (text.startsWith("\\", 0)) { + text = text.substring(1); + } + if (!navigator.clipboard) { + fallbackCopyTextToClipboard(text); + return; + } + navigator.clipboard.writeText(text).then(function () { + console.log('Async: Copying to clipboard was successful!'); + }, function (err) { + console.error('Async: Could not copy text: ', err); + }); + }; + exports.set_rive_boolean = function (canva_id, input, value, args, data, id) { + let canva_with_id = canva_id + ":" + id; + let rive_const = window.ftd.utils.function_name_to_js_function(canva_with_id); + const stateMachineName = window[rive_const].stateMachineNames[0]; + const inputs = window[rive_const].stateMachineInputs(stateMachineName); + // @ts-ignore + const bumpTrigger = inputs.find(i => i.name === input); + bumpTrigger.value = value; + }; + exports.toggle_rive_boolean = function (canva_id, input, args, data, id) { + let canva_with_id = canva_id + ":" + id; + let rive_const = window.ftd.utils.function_name_to_js_function(canva_with_id); + const stateMachineName = window[rive_const].stateMachineNames[0]; + const inputs = window[rive_const].stateMachineInputs(stateMachineName); + // @ts-ignore + const trigger = inputs.find(i => i.name === input); + trigger.value = !trigger.value; + }; + exports.set_rive_integer = function (canva_id, input, value, args, data, id) { + let canva_with_id = canva_id + ":" + id; + let rive_const = window.ftd.utils.function_name_to_js_function(canva_with_id); + const stateMachineName = window[rive_const].stateMachineNames[0]; + const inputs = window[rive_const].stateMachineInputs(stateMachineName); + // @ts-ignore + const bumpTrigger = inputs.find(i => i.name === input); + bumpTrigger.value = value; + }; + exports.fire_rive = function (canva_id, input, args, data, id) { + let canva_with_id = canva_id + ":" + id; + let rive_const = window.ftd.utils.function_name_to_js_function(canva_with_id); + const stateMachineName = window[rive_const].stateMachineNames[0]; + const inputs = window[rive_const].stateMachineInputs(stateMachineName); + // @ts-ignore + const bumpTrigger = inputs.find(i => i.name === input); + bumpTrigger.fire(); + }; + exports.play_rive = function (canva_id, input, args, data, id) { + let canva_with_id = canva_id + ":" + id; + let rive_const = window.ftd.utils.function_name_to_js_function(canva_with_id); + window[rive_const].play(input); + }; + exports.pause_rive = function (canva_id, input, args, data, id) { + let canva_with_id = canva_id + ":" + id; + let rive_const = window.ftd.utils.function_name_to_js_function(canva_with_id); + window[rive_const].pause(input); + }; + exports.toggle_play_rive = function (canva_id, input, args, data, id) { + let canva_with_id = canva_id + ":" + id; + let rive_const = window.ftd.utils.function_name_to_js_function(canva_with_id); + let r = window[rive_const]; + r.playingAnimationNames.includes(input) + ? r.pause(input) + : r.play(input); + }; + exports.component_data = function (component) { + let data = {}; + for (let idx in component.getAttributeNames()) { + let argument = component.getAttributeNames()[idx]; + // @ts-ignore + data[argument] = eval(component.getAttribute(argument)); + } + return data; + }; + exports.call_mutable_value_changes = function (key, id) { + if (!window.ftd[`mutable_value_${id}`]) { + return; + } + if (!!window.ftd[`mutable_value_${id}`][key]) { + let changes = window.ftd[`mutable_value_${id}`][key].changes; + for (let i in changes) { + changes[i](); + } + } + const pattern = new RegExp(`^${key}\\..+`); + const result = Object.keys(window.ftd[`mutable_value_${id}`]) + .filter(key => pattern.test(key)) + .reduce((acc, key) => { + acc[key] = window.ftd[`mutable_value_${id}`][key]; + return acc; + }, {}); + for (let i in result) { + let changes = result[i].changes; + for (let i in changes) { + changes[i](); + } + } + }; + exports.call_immutable_value_changes = function (key, id) { + if (!window.ftd[`immutable_value_${id}`]) { + return; + } + if (!!window.ftd[`immutable_value_${id}`][key]) { + let changes = window.ftd[`immutable_value_${id}`][key].changes; + for (let i in changes) { + changes[i](); + } + } + const pattern = new RegExp(`^${key}\\..+`); + const result = Object.keys(window.ftd[`immutable_value_${id}`]) + .filter(key => pattern.test(key)) + .reduce((acc, key) => { + acc[key] = window.ftd[`immutable_value_${id}`][key]; + return acc; + }, {}); + for (let i in result) { + let changes = result[i].changes; + for (let i in changes) { + changes[i](); + } + } + }; + return exports; +})(); +window.ftd.post_init = function () { + const DARK_MODE = "ftd#dark-mode"; + const SYSTEM_DARK_MODE = "ftd#system-dark-mode"; + const FOLLOW_SYSTEM_DARK_MODE = "ftd#follow-system-dark-mode"; + const DARK_MODE_COOKIE = "ftd-dark-mode"; + const COOKIE_SYSTEM_LIGHT = "system-light"; + const COOKIE_SYSTEM_DARK = "system-dark"; + const COOKIE_DARK_MODE = "dark"; + const COOKIE_LIGHT_MODE = "light"; + const DARK_MODE_CLASS = "fpm-dark"; + const MOBILE_CLASS = "ftd-mobile"; + const XL_CLASS = "ftd-xl"; + const FTD_DEVICE = "ftd#device"; + const FTD_BREAKPOINT_WIDTH = "ftd#breakpoint-width"; + let last_device; + function initialise_device() { + last_device = get_device(); + console_log("last_device", last_device); + window.ftd.set_string_for_all(FTD_DEVICE, last_device); + } + window.onresize = function () { + let current = get_device(); + if (current === last_device) { + return; + } + window.ftd.set_string_for_all(FTD_DEVICE, current); + last_device = current; + console_log("last_device", last_device); + }; + /*function update_markdown_colors() { + // remove all colors from ftd.css: copy every deleted stuff in this function + let markdown_style_sheet = document.createElement('style'); + + + markdown_style_sheet.innerHTML = ` + .ft_md a { + color: ${window.ftd.get_value("main", MARKDOWN_COLOR + ".link.light")}; + background-color: ${window.ftd.get_value("main", MARKDOWN_BACKGROUND_COLOR + ".link.light")}; + } + body.fpm-dark .ft_md a { + color: ${window.ftd.get_value("main", MARKDOWN_COLOR + ".link.dark")}; + background-color: ${window.ftd.get_value("main", MARKDOWN_BACKGROUND_COLOR + ".link.dark")}; + } + + .ft_md code { + color: ${window.ftd.get_value("main", MARKDOWN_COLOR + ".code.light")}; + background-color: ${window.ftd.get_value("main", MARKDOWN_BACKGROUND_COLOR + ".code.light")}; + } + body.fpm-dark .ft_md code { + color: ${window.ftd.get_value("main", MARKDOWN_COLOR + ".code.dark")}; + background-color: ${window.ftd.get_value("main", MARKDOWN_BACKGROUND_COLOR + ".code.dark")}; + } + + .ft_md a:visited { + color: ${window.ftd.get_value("main", MARKDOWN_COLOR + ".link-visited.light")}; + background-color: ${window.ftd.get_value("main", MARKDOWN_BACKGROUND_COLOR + ".link-visited.light")}; + } + body.fpm-dark .ft_md a:visited { + color: ${window.ftd.get_value("main", MARKDOWN_COLOR + ".link-visited.dark")}; + background-color: ${window.ftd.get_value("main", MARKDOWN_BACKGROUND_COLOR + ".link-visited.dark")}; + } + + .ft_md a code { + color: ${window.ftd.get_value("main", MARKDOWN_COLOR + ".link-code.light")}; + background-color: ${window.ftd.get_value("main", MARKDOWN_BACKGROUND_COLOR + ".link-code.light")}; + } + body.fpm-dark .ft_md a code { + color: ${window.ftd.get_value("main", MARKDOWN_COLOR + ".link-code.dark")}; + background-color: ${window.ftd.get_value("main", MARKDOWN_BACKGROUND_COLOR + ".link-code.dark")}; + } + + .ft_md a:visited code { + color: ${window.ftd.get_value("main", MARKDOWN_COLOR + ".link-visited-code.light")}; + background-color: ${window.ftd.get_value("main", MARKDOWN_BACKGROUND_COLOR + ".link-visited-code.light")}; + } + body.fpm-dark .ft_md a:visited code { + color: ${window.ftd.get_value("main", MARKDOWN_COLOR + ".link-visited-code.dark")}; + background-color: ${window.ftd.get_value("main", MARKDOWN_BACKGROUND_COLOR + ".link-visited-code.dark")}; + } + + .ft_md ul ol li:before { + color: ${window.ftd.get_value("main", MARKDOWN_COLOR + ".ul-ol-li-before.light")}; + background-color: ${window.ftd.get_value("main", MARKDOWN_BACKGROUND_COLOR + ".ul-ol-li-before.light")}; + } + body.fpm-dark .ft_md ul ol li:before { + color: ${window.ftd.get_value("main", MARKDOWN_COLOR + ".ul-ol-li-before.dark")}; + background-color: ${window.ftd.get_value("main", MARKDOWN_BACKGROUND_COLOR + ".ul-ol-li-before.dark")}; + } + `; + + document.getElementsByTagName('head')[0].appendChild(markdown_style_sheet); + }*/ + function get_device() { + // not at all sure about this functions logic. + let width = window.innerWidth; + // in future we may want to have more than one break points, and then + // we may also want the theme builders to decide where the breakpoints + // should go. we should be able to fetch fpm variables here, or maybe + // simply pass the width, user agent etc to fpm and let people put the + // checks on width user agent etc, but it would be good if we can + // standardize few breakpoints. or maybe we should do both, some + // standard breakpoints and pass the raw data. + // we would then rename this function to detect_device() which will + // return one of "desktop", "tablet", "mobile". and also maybe have + // another function detect_orientation(), "landscape" and "portrait" etc, + // and instead of setting `fpm#mobile: boolean` we set `fpm-ui#device` + // and `fpm#view-port-orientation` etc. + let mobile_breakpoint = window.ftd.get_value("main", FTD_BREAKPOINT_WIDTH + ".mobile"); + if (width <= mobile_breakpoint) { + document.body.classList.add(MOBILE_CLASS); + if (document.body.classList.contains(XL_CLASS)) { + document.body.classList.remove(XL_CLASS); + } + return "mobile"; + } + /*if (width > desktop_breakpoint) { + document.body.classList.add(XL_CLASS); + if (document.body.classList.contains(MOBILE_CLASS)) { + document.body.classList.remove(MOBILE_CLASS); + } + return "xl"; + }*/ + if (document.body.classList.contains(MOBILE_CLASS)) { + document.body.classList.remove(MOBILE_CLASS); + } + /*if (document.body.classList.contains(XL_CLASS)) { + document.body.classList.remove(XL_CLASS); + }*/ + return "desktop"; + } + /* + ftd.dark-mode behaviour: + + ftd.dark-mode is a boolean, default false, it tells the UI to show + the UI in dark or light mode. Themes should use this variable to decide + which mode to show in UI. + + ftd.follow-system-dark-mode, boolean, default true, keeps track if + we are reading the value of `dark-mode` from system preference, or user + has overridden the system preference. + + These two variables must not be set by ftd code directly, but they must + use `$on-click$: message-host enable-dark-mode`, to ignore system + preference and use dark mode. `$on-click$: message-host + disable-dark-mode` to ignore system preference and use light mode and + `$on-click$: message-host follow-system-dark-mode` to ignore user + preference and start following system preference. + + we use a cookie: `ftd-dark-mode` to store the preference. The cookie can + have three values: + + cookie missing / user wants us to honour system preference + system-light and currently its light. + + system-dark follow system and currently its dark. + + light: user prefers light + + dark: user prefers light + + We use cookie instead of localstorage so in future `fpm-repo` can see + users preferences up front and renders the HTML on service wide + following user's preference. + + */ + window.enable_dark_mode = function () { + // TODO: coalesce the two set_bool-s into one so there is only one DOM + // update + window.ftd.set_bool_for_all(DARK_MODE, true); + window.ftd.set_bool_for_all(FOLLOW_SYSTEM_DARK_MODE, false); + window.ftd.set_bool_for_all(SYSTEM_DARK_MODE, system_dark_mode()); + document.body.classList.add(DARK_MODE_CLASS); + set_cookie(DARK_MODE_COOKIE, COOKIE_DARK_MODE); + }; + window.enable_light_mode = function () { + // TODO: coalesce the two set_bool-s into one so there is only one DOM + // update + window.ftd.set_bool_for_all(DARK_MODE, false); + window.ftd.set_bool_for_all(FOLLOW_SYSTEM_DARK_MODE, false); + window.ftd.set_bool_for_all(SYSTEM_DARK_MODE, system_dark_mode()); + if (document.body.classList.contains(DARK_MODE_CLASS)) { + document.body.classList.remove(DARK_MODE_CLASS); + } + set_cookie(DARK_MODE_COOKIE, COOKIE_LIGHT_MODE); + }; + window.enable_system_mode = function () { + // TODO: coalesce the two set_bool-s into one so there is only one DOM + // update + window.ftd.set_bool_for_all(FOLLOW_SYSTEM_DARK_MODE, true); + window.ftd.set_bool_for_all(SYSTEM_DARK_MODE, system_dark_mode()); + if (system_dark_mode()) { + window.ftd.set_bool_for_all(DARK_MODE, true); + document.body.classList.add(DARK_MODE_CLASS); + set_cookie(DARK_MODE_COOKIE, COOKIE_SYSTEM_DARK); + } + else { + window.ftd.set_bool_for_all(DARK_MODE, false); + if (document.body.classList.contains(DARK_MODE_CLASS)) { + document.body.classList.remove(DARK_MODE_CLASS); + } + set_cookie(DARK_MODE_COOKIE, COOKIE_SYSTEM_LIGHT); + } + }; + function set_cookie(name, value) { + document.cookie = name + "=" + value + "; path=/"; + } + function system_dark_mode() { + return !!(window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches); + } + function initialise_dark_mode() { + update_dark_mode(); + start_watching_dark_mode_system_preference(); + } + function get_cookie(name, def) { + // source: https://stackoverflow.com/questions/5639346/ + let regex = document.cookie.match('(^|;)\\s*' + name + '\\s*=\\s*([^;]+)'); + return regex !== null ? regex.pop() : def; + } + function update_dark_mode() { + let current_dark_mode_cookie = get_cookie(DARK_MODE_COOKIE, COOKIE_SYSTEM_LIGHT); + switch (current_dark_mode_cookie) { + case COOKIE_SYSTEM_LIGHT: + case COOKIE_SYSTEM_DARK: + window.enable_system_mode(); + break; + case COOKIE_LIGHT_MODE: + window.enable_light_mode(); + break; + case COOKIE_DARK_MODE: + window.enable_dark_mode(); + break; + default: + console_log("cookie value is wrong", current_dark_mode_cookie); + window.enable_system_mode(); + } + } + function start_watching_dark_mode_system_preference() { + window.matchMedia('(prefers-color-scheme: dark)').addEventListener("change", update_dark_mode); + } + initialise_dark_mode(); + initialise_device(); + window.ftd.utils.set_full_height(); + // update_markdown_colors(); +}; +const DEVICE_SUFFIX = "____device"; +function console_log(...message) { + if (true) { // false + console.log(...message); + } +} +function isObject(obj) { + return obj != null && typeof obj === 'object' && obj === Object(obj); +} +function stringToHTML(str) { + var parser = new DOMParser(); + var doc = parser.parseFromString(str, 'text/html'); + return doc.body; +} +; +function get_name_and_remaining(name) { + let part1 = ""; + let pattern_to_split_at = name; + let parent_split = split_once(name, "#"); + if (parent_split.length === 2) { + part1 = parent_split[0] + "#"; + pattern_to_split_at = parent_split[1]; + } + parent_split = split_once(pattern_to_split_at, "."); + if (parent_split.length === 2) { + return [part1 + parent_split[0], parent_split[1]]; + } + return [name, null]; +} +function split_once(name, split_at) { + const i = name.indexOf(split_at); + if (i === -1) { + return [name]; + } + return [name.slice(0, i), name.slice(i + 1)]; +} +function deepCopy(object) { + if (isObject(object)) { + return JSON.parse(JSON.stringify(object)); + } + return object; +} +function change_value(function_arguments, data, id) { + for (const a in function_arguments) { + if (isFunctionArgument(function_arguments[a])) { + if (!!function_arguments[a]["reference"]) { + let reference = function_arguments[a]["reference"]; + let [var_name, remaining] = (!!data[reference]) ? [reference, null] : get_name_and_remaining(reference); + if (var_name === "ftd#dark-mode") { + if (!!function_arguments[a]["value"]) { + window.enable_dark_mode(); + } + else { + window.enable_light_mode(); + } + } + else if (!!window["set_value_" + id] && !!window["set_value_" + id][var_name]) { + window["set_value_" + id][var_name](data, function_arguments[a]["value"], remaining); + } + else { + set_data_value(data, reference, function_arguments[a]["value"]); + } + } + } + } +} +function isFunctionArgument(object) { + return object.value !== undefined; +} +String.prototype.format = function () { + var formatted = this; + for (var i = 0; i < arguments.length; i++) { + var regexp = new RegExp('\\{' + i + '\\}', 'gi'); + formatted = formatted.replace(regexp, arguments[i]); + } + return formatted; +}; +String.prototype.replace_format = function () { + var formatted = this; + if (arguments.length > 0) { + // @ts-ignore + for (let [header, value] of Object.entries(arguments[0])) { + var regexp = new RegExp('\\{(' + header + '(\\..*?)?)\\}', 'gi'); + let matching = formatted.match(regexp); + for (let i in matching) { + try { + // @ts-ignore + formatted = formatted.replace(matching[i], resolve_reference(matching[i].substring(1, matching[i].length - 1), arguments[0])); + } + catch (e) { + continue; + } + } + } + } + return formatted; +}; +function set_data_value(data, name, value) { + if (!!data[name]) { + data[name] = deepCopy(set(data[name], null, value)); + return; + } + let [var_name, remaining] = get_name_and_remaining(name); + let initial_value = data[var_name]; + data[var_name] = deepCopy(set(initial_value, remaining, value)); + // tslint:disable-next-line:no-shadowed-variable + function set(initial_value, remaining, value) { + if (!remaining) { + return value; + } + let [p1, p2] = split_once(remaining, "."); + initial_value[p1] = set(initial_value[p1], p2, value); + return initial_value; + } +} +function resolve_reference(reference, data, value, checked) { + if (reference === "VALUE") { + return value; + } + if (reference === "CHECKED") { + return checked; + } + if (!!data[reference]) { + return deepCopy(data[reference]); + } + let [var_name, remaining] = get_name_and_remaining(reference); + let initial_value = data[var_name]; + while (!!remaining) { + let [p1, p2] = split_once(remaining, "."); + initial_value = initial_value[p1]; + remaining = p2; + } + return deepCopy(initial_value); +} +function get_data_value(data, name) { + return resolve_reference(name, data, null, null); +} +function JSONstringify(f) { + if (typeof f === 'object') { + return JSON.stringify(f); + } + else { + return f; + } +} +function download_text(filename, text) { + const blob = new Blob([text], { type: 'text/plain' }); + const link = document.createElement('a'); + link.href = window.URL.createObjectURL(blob); + link.download = filename; + link.click(); +} +function len(data) { + return data.length; +} +function fallbackCopyTextToClipboard(text) { + const textArea = document.createElement("textarea"); + textArea.value = text; + // Avoid scrolling to bottom + textArea.style.top = "0"; + textArea.style.left = "0"; + textArea.style.position = "fixed"; + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + try { + const successful = document.execCommand('copy'); + const msg = successful ? 'successful' : 'unsuccessful'; + console.log('Fallback: Copying text command was ' + msg); + } + catch (err) { + console.error('Fallback: Oops, unable to copy', err); + } + textArea.remove(); +} +window.ftd.utils = {}; +window.ftd.utils.set_full_height = function () { + document.body.style.height = `max(${document.documentElement.scrollHeight}px, 100%)`; +}; +window.ftd.utils.reset_full_height = function () { + document.body.style.height = `100%`; +}; +window.ftd.utils.get_event_key = function (event) { + if (65 <= event.keyCode && event.keyCode <= 90) { + return String.fromCharCode(event.keyCode).toLowerCase(); + } + else { + return event.key; + } +}; +window.ftd.utils.function_name_to_js_function = function (s) { + let new_string = s; + let startsWithDigit = /^\d/.test(s); + if (startsWithDigit) { + new_string = "_" + s; + } + new_string = new_string.replace('#', "__").replace('-', "_") + .replace(':', "___") + .replace(',', "$") + .replace("\\\\", "/") + .replace('\\', "/") + .replace('/', "_").replace('.', "_"); + return new_string; +}; +window.ftd.utils.node_change_call = function (id, key, data) { + const node_function = `node_change_${id}`; + const target = window[node_function]; + if (!!target && !!target[key]) { + target[key](data); + } +}; +window.ftd.utils.set_value_helper = function (data, key, remaining, new_value) { + if (!!remaining) { + set_data_value(data, `${key}.${remaining}`, new_value); + } + else { + set_data_value(data, key, new_value); + } +}; +window.ftd.dependencies = {}; +window.ftd.dependencies.eval_background_size = function (bg) { + if (typeof bg === 'object' && !!bg && "size" in bg) { + let sz = bg.size; + if (typeof sz === 'object' && !!sz && "x" in sz && "y" in sz) { + return `${sz.x} ${sz.y}`; + } + else { + return sz; + } + } + else { + return null; + } +}; +window.ftd.dependencies.eval_background_position = function (bg) { + if (typeof bg === 'object' && !!bg && "position" in bg) { + let pos = bg.position; + if (typeof pos === 'object' && !!pos && "x" in pos && "y" in pos) { + return `${pos.x} ${pos.y}`; + } + else { + return pos.replace("-", " "); + } + } + else { + return null; + } +}; +window.ftd.dependencies.eval_background_repeat = function (bg) { + if (typeof bg === 'object' && !!bg && "repeat" in bg) { + return bg.repeat; + } + else { + return null; + } +}; +window.ftd.dependencies.eval_background_color = function (bg, data) { + let img_src = bg; + if (!data["ftd#dark-mode"] && typeof img_src === 'object' && !!img_src && "light" in img_src) { + return img_src.light; + } + else if (data["ftd#dark-mode"] && typeof img_src === 'object' && !!img_src && "dark" in img_src) { + return img_src.dark; + } + else if (typeof img_src === 'string' && !!img_src) { + return img_src; + } + else { + return null; + } +}; +window.ftd.dependencies.eval_background_image = function (bg, data) { + var _a; + if (typeof bg === 'object' && !!bg && "src" in bg) { + let img_src = bg.src; + if (!data["ftd#dark-mode"] && typeof img_src === 'object' && !!img_src && "light" in img_src) { + return `url("${img_src.light}")`; + } + else if (data["ftd#dark-mode"] && typeof img_src === 'object' && !!img_src && "dark" in img_src) { + return `url("${img_src.dark}")`; + } + else { + return null; + } + } + else if (typeof bg === 'object' && !!bg && "colors" in bg && Object.keys(bg.colors).length) { + let colors = ""; + // if the bg direction is provided by the user, use it, otherwise default + let direction = (_a = bg.direction) !== null && _a !== void 0 ? _a : "to bottom"; + let colors_vec = bg.colors; + for (const c of colors_vec) { + if (typeof c === 'object' && !!c && "color" in c) { + let color_value = c.color; + if (typeof color_value === 'object' && !!color_value && "light" in color_value && "dark" in color_value) { + if (colors) { + colors = data["ftd#dark-mode"] ? `${colors}, ${color_value.dark}` : `${colors}, ${color_value.light}`; + } + else { + colors = data["ftd#dark-mode"] ? `${color_value.dark}` : `${color_value.light}`; + } + if ("start" in c) + colors = `${colors} ${c.start}`; + if ("end" in c) + colors = `${colors} ${c.end}`; + if ("stop-position" in c) + colors = `${colors}, ${c["stop-position"]}`; + } + } + } + let res = `linear-gradient(${direction}, ${colors})`; + return res; + } + else { + return null; + } +}; +window.ftd.dependencies.eval_box_shadow = function (shadow, data) { + if (typeof shadow === 'object' && !!shadow) { + let inset, blur, spread, x_off, y_off, color; + inset = ""; + blur = spread = x_off = y_off = "0px"; + color = "black"; + if (("inset" in shadow) && shadow.inset) + inset = "inset"; + if ("blur" in shadow) + blur = shadow.blur; + if ("spread" in shadow) + spread = shadow.spread; + if ("x-offset" in shadow) + x_off = shadow["x-offset"]; + if ("y-offset" in shadow) + y_off = shadow["y-offset"]; + if ("color" in shadow) { + if (data["ftd#dark-mode"]) { + color = shadow.color.dark; + } + else { + color = shadow.color.light; + } + } + // inset, color, x_offset, y_offset, blur, spread + let res = `${inset} ${color} ${x_off} ${y_off} ${blur} ${spread}`.trim(); + return res; + } + else { + return null; + } +}; +window.ftd.utils.add_extra_in_id = function (node_id) { + let element = document.querySelector(`[data-id=\"${node_id}\"]`); + if (element) { + changeElementId(element, DEVICE_SUFFIX, true); + } +}; +window.ftd.utils.remove_extra_from_id = function (node_id) { + let element = document.querySelector(`[data-id=\"${node_id}\"]`); + if (element) { + changeElementId(element, DEVICE_SUFFIX, false); + } +}; +function changeElementId(element, suffix, add) { + // check if the current ID is not empty + if (element.id) { + // set the new ID for the element + element.id = updatedID(element.id, add, suffix); + } + // get all the children nodes of the element + // @ts-ignore + const childrenNodes = element.children; + // loop through all the children nodes + for (let i = 0; i < childrenNodes.length; i++) { + // get the current child node + const currentNode = childrenNodes[i]; + // recursively call this function for the current child node + changeElementId(currentNode, suffix, add); + } +} +function updatedID(str, flag, suffix) { + // check if the flag is set + if (flag) { + // append suffix to the string + return `${str} ${suffix}`; + } + else { + // remove suffix from the string (if it exists) + return str.replace(suffix, ""); + } +} + + +(function() { + /*! instant.page v5.1.0 - (C) 2019-2020 Alexandre Dieulot - https://instant.page/license */ + let t, e; + const n = new Set, o = document.createElement("link"), + i = o.relList && o.relList.supports && o.relList.supports("prefetch") && window.IntersectionObserver && "isIntersecting" in IntersectionObserverEntry.prototype, + s = "instantAllowQueryString" in document.body.dataset, + a = "instantAllowExternalLinks" in document.body.dataset, + r = "instantWhitelist" in document.body.dataset, + c = "instantMousedownShortcut" in document.body.dataset, d = 1111; + let l = 65, u = !1, f = !1, m = !1; + if ("instantIntensity" in document.body.dataset) { + const t = document.body.dataset.instantIntensity; + if ("mousedown" == t.substr(0, "mousedown".length)) u = !0, "mousedown-only" == t && (f = !0); else if ("viewport" == t.substr(0, "viewport".length)) navigator.connection && (navigator.connection.saveData || navigator.connection.effectiveType && navigator.connection.effectiveType.includes("2g")) || ("viewport" == t ? document.documentElement.clientWidth * document.documentElement.clientHeight < 45e4 && (m = !0) : "viewport-all" == t && (m = !0)); else { + const e = parseInt(t); + isNaN(e) || (l = e) + } + } + if (i) { + const n = {capture: !0, passive: !0}; + if (f || document.addEventListener("touchstart", function (t) { + e = performance.now(); + const n = t.target.closest("a"); + if (!h(n)) return; + v(n.href) + }, n), u ? c || document.addEventListener("mousedown", function (t) { + const e = t.target.closest("a"); + if (!h(e)) return; + v(e.href) + }, n) : document.addEventListener("mouseover", function (n) { + if (performance.now() - e < d) return; + const o = n.target.closest("a"); + if (!h(o)) return; + o.addEventListener("mouseout", p, {passive: !0}), t = setTimeout(() => { + v(o.href), t = void 0 + }, l) + }, n), c && document.addEventListener("mousedown", function (t) { + if (performance.now() - e < d) return; + const n = t.target.closest("a"); + if (t.which > 1 || t.metaKey || t.ctrlKey) return; + if (!n) return; + n.addEventListener("click", function (t) { + 1337 != t.detail && t.preventDefault() + }, {capture: !0, passive: !1, once: !0}); + const o = new MouseEvent("click", { + view: window, + bubbles: !0, + cancelable: !1, + detail: 1337 + }); + n.dispatchEvent(o) + }, n), m) { + let t; + (t = window.requestIdleCallback ? t => { + requestIdleCallback(t, {timeout: 1500}) + } : t => { + t() + })(() => { + const t = new IntersectionObserver(e => { + e.forEach(e => { + if (e.isIntersecting) { + const n = e.target; + t.unobserve(n), v(n.href) + } + }) + }); + document.querySelectorAll("a").forEach(e => { + h(e) && t.observe(e) + }) + }) + } + } + + function p(e) { + e.relatedTarget && e.target.closest("a") == e.relatedTarget.closest("a") || t && (clearTimeout(t), t = void 0) + } + + function h(t) { + if (t && t.href && (!r || "instant" in t.dataset) && (a || t.origin == location.origin || "instant" in t.dataset) && ["http:", "https:"].includes(t.protocol) && ("http:" != t.protocol || "https:" != location.protocol) && (s || !t.search || "instant" in t.dataset) && !(t.hash && t.pathname + t.search == location.pathname + location.search || "noInstant" in t.dataset)) return !0 + } + + function v(t) { + if (n.has(t)) return; + const e = document.createElement("link"); + e.rel = "prefetch", e.href = t, document.head.appendChild(e), n.add(t) + } +})(); diff --git a/fastn-typography.ftd b/fastn-typography.ftd new file mode 100644 index 0000000..1d15e33 --- /dev/null +++ b/fastn-typography.ftd @@ -0,0 +1,464 @@ +-- import: .github.io/ + + + +-- site-doc.doc-home: package +site-title: `` +show-tabs: false +github-url: .github.io/ +current-package: .github.io/ + +Below are our default fastn `inherited` font types of . + +-- display-type: +types: $.types + + +-- end: site-doc.doc-home + + + + + + + + + + + +-- component display-type: +ftd.type-data types: + +-- ftd.column: +width: fill-container +background.solid: $inherited.colors.background.base + +-- heading-box: \$inherited.types.heading-hero +line-height: 60 +size: 52 +weight: 700 +headingtitle: $display-type.types.heading-hero + +-- heading-box: \$inherited.types.heading-large +line-height: 48 +size: 40 +weight: 700 +headingtitle: $display-type.types.heading-large + +-- heading-box: \$inherited.types.heading-medium +line-height: 44 +size: 32 +weight: 600 +headingtitle: $display-type.types.heading-medium + +-- heading-box: \$inherited.types.heading-small +line-height: 36 +size: 24 +weight: 500 +headingtitle: $display-type.types.heading-small + +-- heading-box: \$inherited.types.heading-tiny +line-height: 26 +size: 18 +weight: 500 +headingtitle: $display-type.types.heading-tiny + +-- heading-box: \$inherited.types.copy-large +line-height: 24 +size: 16 +weight: 400 +headingtitle: $display-type.types.copy-large + +-- heading-box: \$inherited.types.copy-regular +line-height: 20 +size: 16 +weight: 400 +headingtitle: $display-type.types.copy-regular + +-- heading-box: \$inherited.types.copy-small +line-height: 20 +size: 16 +weight: 400 +headingtitle: $display-type.types.copy-small + +-- heading-box: \$inherited.types.fine-print +line-height: 18 +size: 14 +weight: 400 +headingtitle: $display-type.types.fine-print + +-- heading-box: \$inherited.types.blockquote +line-height: 16 +size: 14 +weight: 400 +headingtitle: $display-type.types.blockquote + +-- heading-box: \$inherited.types.source-code +line-height: 16 +size: 14 +weight: 400 +headingtitle: $display-type.types.source-code + +-- heading-box: \$inherited.types.label-large +line-height: 22 +size: 16 +weight: 400 +headingtitle: $display-type.types.label-large + +-- heading-box: \$inherited.types.label-small +line-height: 16 +size: 14 +weight: 400 +headingtitle: $display-type.types.label-small + +-- heading-box: \$inherited.types.button-large +line-height: 24 +size: 18 +weight: 700 +headingtitle: $display-type.types.button-large + +-- heading-box: \$inherited.types.button-medium +line-height: 21 +size: 16 +weight: 700 +headingtitle: $display-type.types.button-medium + +-- heading-box: \$inherited.types.button-small +line-height: 19 +size: 14 +weight: 700 +headingtitle: $display-type.types.button-small + +-- heading-box: \$inherited.types.link +line-height: 19 +size: 14 +weight: 400 +headingtitle: $display-type.types.link + +-- end: ftd.column + +-- end: display-type + + + + + + + + + + +-- component heading-box: +caption title: +optional integer line-height: +optional integer weight: +optional integer size: +ftd.responsive-type headingtitle: +;;string font-family: $font-family + +-- ftd.column: + +-- heading-box-desktop: $heading-box.title +if: { ftd.device != "mobile" } +line-height: $heading-box.line-height +weight: $heading-box.weight +size: $heading-box.size +headingtitle: $heading-box.headingtitle +;;font-family: $heading-box.font-family + +-- heading-box-mobile: $heading-box.title +if: { ftd.device == "mobile" } +line-height: $heading-box.line-height +weight: $heading-box.weight +size: $heading-box.size +headingtitle: $heading-box.headingtitle +;;font-family: $heading-box.font-family + +-- end: ftd.column + +-- end: heading-box + + + + + + + + + + +-- component heading-box-desktop: +caption title: +optional integer line-height: +optional integer weight: +optional integer size: +ftd.responsive-type headingtitle: +;;string font-family: + +-- ftd.column: +border-color: $inherited.colors.text-strong +border-width.px: 1 +border-radius.px: 8 +padding-vertical.px: 24 +padding-horizontal.px: 24 +width.fixed.px: 650 +height: auto +margin-top.px: 28 +margin-bottom.px: 28 + +-- ftd.row: +width: fill-container + +-- ftd.text: $heading-box-desktop.title +color: $inherited.colors.text-strong +role: $inherited.types.copy-large +anchor: parent +top.px: -38 +left.px: 0 +background.solid: $inherited.colors.background.base +padding-horizontal.px: 8 + +-- end: ftd.row + +-- ftd.row: +width: fill-container +spacing.fixed.px: 24 + +-- ftd.column: +width.fixed.percent: 35 +spacing.fixed.px: 12 + +-- ftd.row: +width: fill-container +spacing.fixed.px: 8 + +-- ftd.text: line-height +color: $inherited.colors.text +role: $inherited.types.label-large +white-space: nowrap + +-- ftd.integer: $heading-box-desktop.line-height +color: $inherited.colors.text +role: $inherited.types.label-large +width: fill-container + +-- end: ftd.row + +-- ftd.row: +width: fill-container +spacing.fixed.px: 8 + +-- ftd.text: size: +color: $inherited.colors.text +role: $inherited.types.label-large +white-space: nowrap + +-- ftd.integer: $heading-box-desktop.size +color: $inherited.colors.text +role: $inherited.types.label-large +width: fill-container + +-- end: ftd.row + +-- ftd.row: +width: fill-container +spacing.fixed.px: 8 + +-- ftd.text: weight: +color: $inherited.colors.text +role: $inherited.types.label-large +white-space: nowrap + +-- ftd.integer: $heading-box-desktop.weight +color: $inherited.colors.text +role: $inherited.types.label-large +width: fill-container + +-- end: ftd.row + +/-- ftd.row: +width: fill-container +spacing.fixed.px: 8 + +/-- ftd.text: Font-family: +color: $inherited.colors.text +role: $inherited.types.label-large +white-space: nowrap + +/-- ftd.text: $heading-box-desktop.font-family +color: $inherited.colors.text +role: $inherited.types.label-large +width: fill-container + +/-- end: ftd.row + +-- end: ftd.column + +-- ftd.column: +width.fixed.percent: 65 + +-- ftd.row: +padding-vertical.px: 12 +padding-horizontal.px: 12 +min-width.fixed.px: 374 +min-height.fixed.px: 146 +background.solid: $inherited.colors.background.step-1 +border-color: $inherited.colors.border-strong +border-width.px: 1 +border-radius.px: 8 +align-self: center + +-- ftd.column: +align-self: center +width: fill-container + +-- ftd.text: Lorem Ipsum is simply +role: $heading-box-desktop.headingtitle +color: $inherited.colors.text-strong +text-align: center +width: fill-container + +-- end: ftd.column + +-- end: ftd.row + +-- end: ftd.column + +-- end: ftd.row + +-- end: ftd.column + +-- end: heading-box-desktop + + + + + + + + + + +-- component heading-box-mobile: +caption title: +optional integer line-height: +optional integer weight: +optional integer size: +ftd.responsive-type headingtitle: +;;string font-family: + +-- ftd.column: +border-color: $inherited.colors.text-strong +border-width.px: 1 +border-radius.px: 8 +padding-vertical.px: 24 +padding-horizontal.px: 24 +width: fill-container +min-width: fill-container +height.fixed.px: 388 +margin-top.px: 28 +margin-bottom.px: 28 + +-- ftd.row: +width: fill-container + +-- ftd.text: $heading-box-mobile.title +color: $inherited.colors.text-strong +role: $inherited.types.copy-large +anchor: parent +top.px: -38 +left.px: 0 +background.solid: $inherited.colors.background.base +padding-horizontal.px: 8 +width: fill-container + +-- end: ftd.row + +-- ftd.column: +width: fill-container +margin-bottom.px: 16 +spacing.fixed.px: 24 + +-- ftd.column: +padding-vertical.px: 12 +padding-horizontal.px: 12 +min-width.fixed.px: 300 +min-height.fixed.px: 206 +background.solid: $inherited.colors.background.step-1 +border-color: $inherited.colors.border-strong +border-width.px: 1 +border-radius.px: 8 + +-- ftd.column: +width: fill-container + +-- ftd.text: Lorem Ipsum is simply +role: $heading-box-mobile.headingtitle +color: $inherited.colors.text-strong +text-align: center +align-self: center + +-- end: ftd.column + +-- end: ftd.column + +-- ftd.column: +width: fill-container +spacing.fixed.px: 12 +;; id: first-container + +-- ftd.row: +width: fill-container +spacing.fixed.px: 8 + +-- ftd.text: line-height +color: $inherited.colors.text +role: $inherited.types.label-large +white-space: nowrap + +-- ftd.integer: $heading-box-mobile.line-height +color: $inherited.colors.text +role: $inherited.types.label-large +width: fill-container + +-- end: ftd.row + +-- ftd.row: +width: fill-container +spacing.fixed.px: 8 + +-- ftd.text: size: +color: $inherited.colors.text +role: $inherited.types.label-large +white-space: nowrap + +-- ftd.integer: $heading-box-mobile.size +color: $inherited.colors.text +role: $inherited.types.label-large +width: fill-container + +-- end: ftd.row + +-- ftd.row: +width: fill-container +spacing.fixed.px: 8 + +-- ftd.text: weight: +color: $inherited.colors.text +role: $inherited.types.label-large +white-space: nowrap + +-- ftd.integer: $heading-box-mobile.weight +color: $inherited.colors.text +role: $inherited.types.label-large +width: fill-container + +-- end: ftd.row + +-- end: ftd.column + +-- end: ftd.column + +-- end: ftd.column + +-- end: heading-box-mobile \ No newline at end of file diff --git a/fastn-typography/index.html b/fastn-typography/index.html new file mode 100644 index 0000000..d956139 --- /dev/null +++ b/fastn-typography/index.html @@ -0,0 +1,26441 @@ + + + + + +fastn document site template. Build Your Own documentation site with Ease + + + + + + + + + + + + +

<repo_name> package

Package name:
<user_name>.github.io/<repo_name>
Below are our default fastn inherited font types of <repo_name>.
$inherited.types.heading-hero
line-height
60
size:
52
weight:
700
Lorem Ipsum is simply
$inherited.types.heading-large
line-height
48
size:
40
weight:
700
Lorem Ipsum is simply
$inherited.types.heading-medium
line-height
44
size:
32
weight:
600
Lorem Ipsum is simply
$inherited.types.heading-small
line-height
36
size:
24
weight:
500
Lorem Ipsum is simply
$inherited.types.heading-tiny
line-height
26
size:
18
weight:
500
Lorem Ipsum is simply
$inherited.types.copy-large
line-height
24
size:
16
weight:
400
Lorem Ipsum is simply
$inherited.types.copy-regular
line-height
20
size:
16
weight:
400
Lorem Ipsum is simply
$inherited.types.copy-small
line-height
20
size:
16
weight:
400
Lorem Ipsum is simply
$inherited.types.fine-print
line-height
18
size:
14
weight:
400
Lorem Ipsum is simply
$inherited.types.blockquote
line-height
16
size:
14
weight:
400
Lorem Ipsum is simply
$inherited.types.source-code
line-height
16
size:
14
weight:
400
Lorem Ipsum is simply
$inherited.types.label-large
line-height
22
size:
16
weight:
400
Lorem Ipsum is simply
$inherited.types.label-small
line-height
16
size:
14
weight:
400
Lorem Ipsum is simply
$inherited.types.button-large
line-height
24
size:
18
weight:
700
Lorem Ipsum is simply
$inherited.types.button-medium
line-height
21
size:
16
weight:
700
Lorem Ipsum is simply
$inherited.types.button-small
line-height
19
size:
14
weight:
700
Lorem Ipsum is simply
$inherited.types.link
line-height
19
size:
14
weight:
400
Lorem Ipsum is simply
Copyright © 2023 - FifthTry
+ + + diff --git a/index.ftd b/index.ftd new file mode 100644 index 0000000..bce94f3 --- /dev/null +++ b/index.ftd @@ -0,0 +1,663 @@ +-- import: .github.io//custom +-- import: fastn-community.github.io/inter-font/assets as inter-assets + +;; ⚠️fastn-builders::⚠️ before using this file please find and replace inter-font +;; with font package name you have given inside this package +;; `.github.io//FASTN.ftd file +;; `` replace with font you are using. +;; remove these comments once you are done. + + + +-- site-doc.doc-home: package +site-title: `` +show-tabs: false +github-url: .github.io/ +current-package: .github.io/ + +This FTD font `` can be used for your ftd web projects. + +You can use this inside the `FTD` project. Follow below +instructions to use this font package. + +-- site-doc.header: How to use ? + +To use this inside your `ftd` web project, if you are +using our [doc-site](https://github.com/fifthtry/doc-site) theme then you just +have to pass types to `ds.page` + +Let's say you are using `doc-site` inside your project then, it's as simple as +making a sandwich. + +-- cb.code: Add this to your FASTN.ftd +lang: ftd + +\-- fastn.dependency: .github.io/ + +-- site-doc.header: Next Step + +Now import `` inside `.ftd` file as shown below: + +-- cb.code: +lang: ftd + +\-- import: .github.io/ + + +-- site-doc.header: Next Step + +add `` `types` to `ds.page` `types` attribute as shown +below: + +-- cb.code: +lang: ftd + +\-- ds.page: +types: $.types + +-- site-doc.header: Next Step + +Once you add `types: $.types` inside your `.ftd` file, +`` will be added as `fastn` default typography to your +`ds.page` and to all components you add inside `ds.page`. + +If you're not using `doc-site` theme and building your own `fastn` web theme. +Then, add `` dependency into `FASTN.ftd` file. + +-- cb.code: +lang: ftd + +\-- fastn.dependency: .github.io/ + +-- site-doc.header: Next Step + +Once you add above dependency, then import `` inside your +`.ftd` file: + +-- cb.code: +lang: ftd + +\-- import: .github.io/ + +-- site-doc.header: Next Step + +Done! `` is now added. Lets define a `page` component: + +-- cb.code: +lang: ftd +download: my-ds.ftd + +\-- import: .github.io/ + +\-- component page: +caption title: +body body: +children wrap: +ftd.type-data types: $.types + +\-- ftd.column: +width: fill-container +spacing.fixed.px: 32 +padding.px: 30 +background.solid: $inherited.colors.background.base +border-width.px: 1 +border-color: $inherited.colors.border-strong +border-radius.px: 10 +margin-vertical.px: 10 + +\-- ftd.text: $page.title +role: $inherited.types.heading-large +color: $inherited.colors.text-strong + +\-- ftd.text: +role: $inherited.types.copy-regular +color: $inherited.colors.text + +$page.body + +\-- ftd.column: +width: fill-container +children: $page.wrap + +\-- end: ftd.column + +\-- end: ftd.column + +\-- end: page + + +-- site-doc.header: Next Step + +In above code snippet we defined `page` component which has `types`, `title`, +`body` and `wrap` attributes. + +The `types` attribute used to pass a typography to it. In above example we have +added `$.types` as default `ftd.type-data`. The +`ftd.type-data` contains all `fastn` default `inherited` types. + +The `title` attribute will be used for adding `page` titles. + +The `body` attribute is used to add body to `page` component, the `body` can +contain multiple pagragraphs, lists and any markdown format content. + +The `wrap` attribute allows adding child components to `page` component. You can +add any other component inside `page`. + +Click on download icon on above code snippet `my-ds.ftd` file will be +downloaded. + +/-- cb.rendered: Demo: + +-- cb.rendered.input: + +\-- import: /my-ds + +\-- my-ds.page: I am a page title + +I am `page` component body. Body can contain multiple paragraphs, links etc. + +Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem +Ipsum has been the industry’s standard dummy + +- I am a list item. + +- I am a list item. + +\-- ftd.text: I am a child component of `page` +role: $inherited.types.heading-medium +color: $inherited.colors.text + +\-- end: my-ds.page + + +-- cb.rendered.output: + +-- page: I am a page title +types: $types + +I am `page` component body. Body can contain multiple paragraphs, links etc. + +Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem +Ipsum has been the industry’s standard dummy + +- I am a list item. + +- I am a list item. + +-- ftd.text: I am a child component of `page` +role: $inherited.types.heading-medium +color: $inherited.colors.text + +-- end: page + +-- end: cb.rendered.output + +-- end: cb.rendered + +-- site-doc.header: Next Step + +Click on download icon on above code snippet `types.ftd` file will be +downloaded, add previously downloaded `my-ds.ftd` and `types.ftd` inside +`fastn` package. Update `` with your `fastn.package` +name and run `fastn serve`, load localhost web page on browser. + +e.g. `http://127.0.0.1:8001/types` You will see the `page` component using +`` `types` applied to `inherited` types. + +Done! isn't it simple? Try this and don't forget to jump on our [Discord](https://discord.gg/bucrdvptYd) + +[Click here](fastn-typography/) to know more `fastn` predefined `inherited` +types using `-font` font-family and font-sizes. + +-- end: site-doc.doc-home + + + + + + + + + + + + +-- ftd.type heading-hero-mobile: +line-height.px: 60 +size.px: 52 +letter-spacing.px: 0 +weight: 700 +font-family: $inter-assets.fonts.Inter + +-- ftd.type heading-hero-desktop: +line-height.px: 60 +size.px: 52 +letter-spacing.px: 0 +weight: 700 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type heading-hero: +desktop: $heading-hero-desktop +mobile: $heading-hero-mobile + + + + + +-- ftd.type heading-large-mobile: +line-height.px: 48 +size.px: 40 +letter-spacing.px: 0 +weight: 700 +font-family: $inter-assets.fonts.Inter + +-- ftd.type heading-large-desktop: +line-height.px: 48 +size.px: 40 +letter-spacing.px: 0 +weight: 700 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type heading-large: +desktop: $heading-large-desktop +mobile: $heading-large-mobile + + + + + +-- ftd.type heading-medium-mobile: +line-height.px: 44 +size.px: 32 +letter-spacing.px: 0 +weight: 600 +font-family: $inter-assets.fonts.Inter + +-- ftd.type heading-medium-desktop: +line-height.px: 44 +size.px: 32 +letter-spacing.px: 0 +font-family: $inter-assets.fonts.Inter +weight: 600 + +-- ftd.responsive-type heading-medium: +desktop: $heading-medium-desktop +mobile: $heading-medium-mobile + + + + + +-- ftd.type heading-small-mobile: +line-height.px: 36 +size.px: 24 +letter-spacing.px: 0 +weight: 500 +font-family: $inter-assets.fonts.Inter + +-- ftd.type heading-small-desktop: +line-height.px: 36 +size.px: 24 +letter-spacing.px: 0 +weight: 500 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type heading-small: +desktop: $heading-small-desktop +mobile: $heading-small-mobile + + + + + + +-- ftd.type heading-tiny-mobile: +line-height.px: 26 +size.px: 18 +letter-spacing.px: 0 +weight: 500 +font-family: $inter-assets.fonts.Inter + +-- ftd.type heading-tiny-desktop: +line-height.px: 26 +size.px: 18 +letter-spacing.px: 0 +weight: 500 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type heading-tiny: +desktop: $heading-tiny-desktop +mobile: $heading-tiny-mobile + + + + + +-- ftd.type copy-large-mobile: +line-height.px: 28 +size.px: 20 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.type copy-large-desktop: +line-height.px: 28 +size.px: 20 +letter-spacing.px: 0 +font-family: $inter-assets.fonts.Inter +weight: 400 + +-- ftd.responsive-type copy-large: +desktop: $copy-large-desktop +mobile: $copy-large-mobile + + + + + +-- ftd.type copy-regular-mobile: +line-height.px: 24 +size.px: 16 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.type copy-regular-desktop: +line-height.px: 24 +size.px: 16 +letter-spacing.px: 0 +font-family: $inter-assets.fonts.Inter +weight: 400 + +-- ftd.responsive-type copy-regular: +desktop: $copy-regular-desktop +mobile: $copy-regular-mobile + + + + + +-- ftd.type copy-small-mobile: +line-height.px: 20 +size.px: 16 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + + +-- ftd.type copy-small-desktop: +line-height.px: 20 +size.px: 16 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type copy-small: +desktop: $copy-small-desktop +mobile: $copy-small-mobile + + + + + +-- ftd.type fine-print-mobile: +line-height.px: 18 +size.px: 14 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.type fine-print-desktop: +line-height.px: 18 +size.px: 14 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type fine-print: +desktop: $fine-print-desktop +mobile: $fine-print-mobile + + + + + +-- ftd.type blockquote-mobile: +line-height.px: 16 +size.px: 14 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.type blockquote-desktop: +line-height.px: 16 +size.px: 14 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type blockquote: +desktop: $blockquote-desktop +mobile: $blockquote-mobile + + + + + +-- ftd.type source-code-mobile: +line-height.px: 16 +size.px: 14 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.type source-code-desktop: +line-height.px: 16 +size.px: 14 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type source-code: +desktop: $source-code-desktop +mobile: $source-code-mobile + + + + + +-- ftd.type label-large-mobile: +line-height.px: 22 +size.px: 16 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.type label-large-desktop: +line-height.px: 22 +size.px: 16 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type label-large: +desktop: $label-large-desktop +mobile: $label-large-mobile + + + + + +-- ftd.type label-small-mobile: +line-height.px: 16 +size.px: 14 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.type label-small-desktop: +line-height.px: 16 +size.px: 14 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type label-small: +desktop: $label-small-desktop +mobile: $label-small-mobile + + + + + +-- ftd.type button-large-mobile: +line-height.px: 24 +size.px: 18 +letter-spacing.px: 0 +weight: 700 +font-family: $inter-assets.fonts.Inter + +-- ftd.type button-large-desktop: +line-height.px: 24 +size.px: 18 +letter-spacing.px: 0 +weight: 700 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type button-large: +desktop: $button-large-desktop +mobile: $button-large-mobile + + + + + +-- ftd.type button-medium-mobile: +line-height.px: 21 +size.px: 16 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.type button-medium-desktop: +line-height.px: 21 +size.px: 16 +letter-spacing.px: 0 +weight: 700 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type button-medium: +desktop: $button-medium-desktop +mobile: $button-medium-mobile + + + + + +-- ftd.type button-small-mobile: +line-height.px: 19 +size.px: 14 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.type button-small-desktop: +line-height.px: 19 +size.px: 14 +letter-spacing.px: 0 +weight: 700 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type button-small: +desktop: $button-small-desktop +mobile: $button-small-mobile + + + + + +-- ftd.type link-mobile: +line-height.px: 19 +size.px: 14 +letter-spacing.px: 0 +weight: 400 +font-family: $inter-assets.fonts.Inter + +-- ftd.type link-desktop: +line-height.px: 19 +size.px: 14 +letter-spacing.px: 0 +weight: 700 +font-family: $inter-assets.fonts.Inter + +-- ftd.responsive-type link: +desktop: $link-desktop +mobile: $link-mobile + + + + + +-- ftd.type-data types: +heading-hero: $heading-hero +heading-large: $heading-large +heading-medium: $heading-medium +heading-small: $heading-small +heading-tiny: $heading-tiny +copy-large: $copy-large +copy-regular: $copy-regular +copy-small: $copy-small +fine-print: $fine-print +blockquote: $blockquote +source-code: $source-code +label-large: $label-large +label-small: $label-small +button-large: $button-large +button-medium: $button-medium +button-small: $button-small +link: $link + + + + + + + + + + +-- component page: +caption title: +body body: +children wrap: +ftd.type-data types: + +-- ftd.column: +width: fill-container +spacing.fixed.px: 32 +padding.px: 30 +background.solid: $inherited.colors.background.base +border-width.px: 1 +border-color: $inherited.colors.border-strong +border-radius.px: 10 +margin-vertical.px: 10 + +-- ftd.text: $page.title +role: $inherited.types.heading-large +color: $inherited.colors.text-strong + +-- ftd.text: +role: $inherited.types.copy-regular +color: $inherited.colors.text + +$page.body + +-- ftd.column: +width: fill-container +children: $page.wrap + +-- end: ftd.column + +-- end: ftd.column + +-- end: page diff --git a/index.html b/index.html new file mode 100644 index 0000000..3bd424e --- /dev/null +++ b/index.html @@ -0,0 +1,11304 @@ + + + + + +fastn document site template. Build Your Own documentation site with Ease + + + + + + + + + + + + +

<repo_name> package

Package name:
<user_name>.github.io/<repo_name>

This FTD font <repo_name> can be used for your ftd web projects.

You can use this <repo_name> inside the FTD project. Follow below instructions to use this font package.

How to use <repo_name>?

To use this <repo_name> inside your ftd web project, if you are using our doc-site theme then you just have to pass types to ds.page

Let’s say you are using doc-site inside your project then, it’s as simple as making a sandwich.
Add this to your FASTN.ftd
-- fastn.dependency: <user_name>.github.io/<repo_name>
+
+
Lang:
ftd

Next Step

Now import <repo_name> inside .ftd file as shown below:
-- import: <user_name>.github.io/<repo_name>
+
+
Lang:
ftd

Next Step

add <repo_name> types to ds.page types attribute as shown below:
-- ds.page:
+types: $<repo_name>.types
+
+
Lang:
ftd

Next Step

Once you add types: $<repo_name>.types inside your .ftd file, <repo_name> will be added as fastn default typography to your ds.page and to all components you add inside ds.page.

If you’re not using doc-site theme and building your own fastn web theme. Then, add <repo_name> dependency into FASTN.ftd file.
-- fastn.dependency: <user_name>.github.io/<repo_name>
+
+
Lang:
ftd

Next Step

Once you add above dependency, then import <repo_name> inside your .ftd file:
-- import: <user_name>.github.io/<repo_name>
+
+
Lang:
ftd

Next Step

Done! <repo_name> is now added. Lets define a page component:
-- import: <user_name>.github.io/<repo_name>
+
+-- component page:
+caption title:
+body body:
+children wrap:
+ftd.type-data types: $<repo_name>.types
+
+-- ftd.column:
+width: fill-container
+spacing.fixed.px: 32
+padding.px: 30
+background.solid: $inherited.colors.background.base
+border-width.px: 1
+border-color: $inherited.colors.border-strong
+border-radius.px: 10
+margin-vertical.px: 10
+
+-- ftd.text: $page.title
+role: $inherited.types.heading-large
+color: $inherited.colors.text-strong
+
+-- ftd.text:
+role: $inherited.types.copy-regular
+color: $inherited.colors.text
+
+$page.body
+
+-- ftd.column:
+width: fill-container
+children: $page.wrap
+
+-- end: ftd.column
+
+-- end: ftd.column
+
+-- end: page
+
+
my-ds.ftd
Lang:
ftd

Next Step

In above code snippet we defined page component which has types, title, body and wrap attributes.

The types attribute used to pass a typography to it. In above example we have added $<repo_name>.types as default ftd.type-data. The ftd.type-data contains all fastn default inherited types.

The title attribute will be used for adding page titles.

The body attribute is used to add body to page component, the body can contain multiple pagragraphs, lists and any markdown format content.

The wrap attribute allows adding child components to page component. You can add any other component inside page.

Click on download icon on above code snippet my-ds.ftd file will be downloaded.

Next Step

Click on download icon on above code snippet types.ftd file will be downloaded, add previously downloaded my-ds.ftd and types.ftd inside fastn package. Update <your-fastn-package-name> with your fastn.package name and run fastn serve, load localhost web page on browser.

e.g. http://127.0.0.1:8001/types You will see the page component using <repo_name> types applied to inherited types.

Done! isn’t it simple? Try this and don’t forget to jump on our Discord

Click here to know more fastn predefined inherited types using <font-name>-font font-family and font-sizes.
Copyright © 2023 - FifthTry
+ + +