merged with origin

This commit is contained in:
donfiguerres 2022-04-22 10:15:27 +08:00
commit 9fcce788fa
137 changed files with 709 additions and 238 deletions

View file

@ -8,10 +8,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout to latest commit
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v2.5.1
uses: actions/setup-node@v3
with:
node-version: "15.x"
@ -21,7 +21,7 @@ jobs:
npm run autoprefixer
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3.12.0
uses: peter-evans/create-pull-request@v4
with:
branch: autoprefixer
branch-suffix: timestamp

28
.github/workflows/build.yml vendored Normal file
View file

@ -0,0 +1,28 @@
name: Run Build
# Run action on pull request event
on: [pull_request]
jobs:
build:
runs-on: ubuntu-18.04
steps:
# checkout to the commit that has been pushed
- uses: actions/checkout@v2.4.0
with:
submodules: true # Fetch Hugo themes (true OR recursive)
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
# install Hugo
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2.5.0
with:
hugo-version: 'latest'
extended: true
# build website
- name: Create Config
run: touch config.toml
- name: Build
run: hugo --minify

View file

@ -39,7 +39,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL

View file

@ -10,6 +10,6 @@ jobs:
runs-on: ubuntu-latest
steps:
# Create/Update release draft
- uses: release-drafter/release-drafter@v5.16.1
- uses: release-drafter/release-drafter@v5.19.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -8,6 +8,6 @@ jobs:
runs-on: ubuntu-latest
steps:
# checkout to latest commit
- uses: actions/checkout@v2.4.0
- uses: actions/checkout@v3
# run markdown linter
- uses: gaurav-nelson/github-action-markdown-link-check@1.0.13
- uses: gaurav-nelson/github-action-markdown-link-check@1.0.14

View file

@ -30,8 +30,15 @@ A [Hugo](https://gohugo.io/) theme for a personal portfolio with minimalist desi
- Achievement Gallery
- Sidebar to Categorize the Posts
- Short Codes
- Google Analytics Support
- Disqus Comment Support
- Analytics Support
- GoatCounter
- counter.dev
- Google Analytics
- Comment Support
- [Disqus](https://disqus.com/)
- [Valine](https://valine.js.org/)
- [Uttarances](https://utteranc.es/)
- [Giscus](https://giscus.app/)
For more details about the features please visit [here](https://toha-guides.netlify.app/posts/features/).
@ -49,6 +56,7 @@ For more details about the features please visit [here](https://toha-guides.netl
- 日本語
- 한국어
- русский
- suomi
- Tiếng Việt
To know more about how to translate your site, please visit [here](https://toha-guides.netlify.app/posts/translation/). Follow, the data and post format from this [example site](https://hugo-toha.github.io).
@ -71,7 +79,7 @@ Here are few screenshots from the [example site](https://hugo-toha.github.io).
## Requirements
- Hugo Version 0.68.0 or higher
- Hugo Version 0.87.0 or higher
## Usage
@ -165,10 +173,12 @@ When you run your site for first time, it will start with the default parameters
Here, are some handy shortcodes you can use with this theme.
- [Alert](https://toha-guides.netlify.app/posts/short-codes/alert/)
- [Image](https://toha-guides.netlify.app/posts/short-codes/img/)
- [Split](https://toha-guides.netlify.app/posts/short-codes/split/)
- [Vertical Space](https://toha-guides.netlify.app/posts/short-codes/vs/)
- [Alert](https://toha-guides.netlify.app/posts/shortcodes/#alert)
- [Image](https://toha-guides.netlify.app/posts/shortcodes/#image)
- [Split](https://toha-guides.netlify.app/posts/shortcodes/#split)
- [Vertical Space](https://toha-guides.netlify.app/posts/shortcodes/#vertical-space)
- [Video](https://toha-guides.netlify.app/posts/shortcodes/#video)
- [Mermaid](https://hugo-toha.github.io/posts/shortcodes/#mermaid)
## Project Roadmap

View file

@ -118,3 +118,6 @@ other = "নোট সমূহ"
[disclaimer_text]
other = "দায় বিজ্ঞপ্তি"
[search]
other = "অনুসন্ধান করুন"

View file

@ -121,3 +121,6 @@ other = "Notizen"
[disclaimer_text]
other = "Haftungshinweis"
[search]
other = "Suche"

View file

@ -121,3 +121,6 @@ other = "Notes"
[disclaimer_text]
other = "Liability Notice"
[search]
other = "Search"

View file

@ -121,3 +121,6 @@ other = "Notas"
[disclaimer_text]
other = "Aviso de responsabilidad"
[search]
other = "Búsqueda"

126
i18n/fi.toml Normal file
View file

@ -0,0 +1,126 @@
# More documentation here: https://github.com/nicksnyder/go-i18n
[home]
other = "Koti"
[posts]
other = "Artikkelit"
[toc_heading]
other = "Sisällysluettelo"
[tags]
other = "Tagit"
[categories]
other = "Kategoriat"
[at]
other = "at"
[resume]
other = "Ansioluetteloni"
[navigation]
other = "Navigointi"
[contact_me]
other = "Ota yhteyttä minuun:"
[email]
other = "Sähköposti"
[phone]
other = "Puhelin"
[newsletter_text]
other = "Pysy ajan tasalla tilaamalla sähköposti-ilmoitukset"
[newsletter_input_placeholder]
other = "Syötä sähköpostiosoite"
[newsletter_warning]
other = "Syöttämällä sähköpostin, hyväksyt että haluat vastaanottaa uutiskirjeen tältä sivustolta."
[submit]
other = "Lähetä"
[hugoAttributionText]
other = "Voimanlähteenä"
[prev]
other = "Edellinen"
[next]
other = "Seuraava"
[share_on]
other = "Jaa"
[improve_this_page]
other = "Paranna tätä sivua"
[out_of]
other = "out of"
[publications]
other = "Julkaisut"
[taken_courses]
other = "Käydyt kurssit"
[course_name]
other = "Kurssin nimi"
[total_credit]
other = "Opintopisteet yhteensä"
[obtained_credit]
other = "Saadut opintopisteet"
[extracurricular_activities]
other = "Opetusohjelman ulkopuolinen toiminta"
[show_more]
other = "Näytä lisää"
[show_less]
other = "Näytä vähemmän"
[responsibilities]
other = "Työtehtävät:"
[present]
other = "Tämä päivä"
[comments_javascript]
other = "Ole hyvä ja enabloi JavaScript katsoaksesi"
[comments_by]
other = "kommentit mahdollistavat"
[read]
other = "Lue"
[project_star]
other = "Tähti"
[project_details]
other = "Yksityiskohdat"
[err_404]
other = "Sivua jota etsit ei löydy."
[more]
other = "Lisää"
[view_certificate]
other = "Katso todistus"
[notes]
other = "Muistiinpanot"
[disclaimer_text]
other = "Vastuuilmoitus"
[search]
other = "Haku"

View file

@ -121,3 +121,6 @@ other = "Remarques"
[disclaimer_text]
other = "Avis de responsabilité"
[search]
other = "Chercher"

View file

@ -121,3 +121,6 @@ other = "टिप्पणियाँ"
[disclaimer_text]
other = "दायित्व सूचना"
[search]
other = "खोज"

View file

@ -121,3 +121,6 @@ other = "Catatan"
[disclaimer_text]
other = "Pemberitahuan Kewajiban"
[search]
other = "Mencari"

View file

@ -121,3 +121,6 @@ other = "Appunti"
[disclaimer_text]
other = "Avviso di responsabilità"
[search]
other = "Ricerca"

View file

@ -118,3 +118,6 @@ other = "ノート"
[disclaimer_text]
other = "責任通知"
[search]
other = "検索"

View file

@ -121,3 +121,6 @@ other = "메모"
[disclaimer_text]
other = "책임 고지"
[search]
other = "찾다"

View file

@ -120,3 +120,5 @@ other = "Opmerkingen"
[disclaimer_text]
other = "Haftungshinweis"
[search]
other = "Zoekopdracht"

View file

@ -121,3 +121,6 @@ other = "Ноты"
[disclaimer_text]
other = "Уведомление об ответственности"
[search]
other = "Поиск"

View file

@ -121,3 +121,6 @@ other = "Ghi chú"
[disclaimer_text]
other = "Thông báo trách nhiệm"
[search]
other = "Tìm kiếm"

View file

@ -121,3 +121,6 @@ other = "笔记"
[disclaimer_text]
other = "免责声明"
[search]
other = "搜索"

View file

@ -121,3 +121,6 @@ other = "筆記"
[disclaimer_text]
other = "免責聲明"
[search]
other = "搜索"

View file

@ -9,16 +9,9 @@
<!------ ADD PAGE SPECIFIC HEADERS ------->
{{ block "header" . }} {{ end }}
<!-- ADD GOOGLE ANALYTICS IF ENABLED -->
{{ if site.GoogleAnalytics }}
<!-- Google Analytics v3 ID -->
{{ if hasPrefix site.GoogleAnalytics "UA-"}}
{{ template "_internal/google_analytics_async.html" . }}
{{ else }}
<!-- Google Analytics v4 ID -->
{{ template "_internal/google_analytics.html" . }}
{{ end }}
{{ end }}
<!--================= add analytics if enabled =========================-->
{{- partial "analytics.html" . -}}
</head>
<body data-spy="scroll" data-target="#TableOfContents" data-offset="80">
@ -51,5 +44,9 @@
<!------- ADD PAGE SPECIFIC SCRIPTS ------>
{{ block "scripts" . }} {{ end }}
<!------ IF WANTED, ADD SUPPORT LINKS -------->
{{- partial "misc/support.html" . -}}
</body>
</html>

View file

@ -20,7 +20,7 @@
<div class="sidebar-holder">
<div class="sidebar" id="sidebar">
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
<input type="text" name="keyword" value="" placeholder="Search" data-search="" id="search-box" />
<input type="text" name="keyword" value="" placeholder="{{ i18n "search" }}" data-search="" id="search-box" />
</form>
<div class="sidebar-tree">
<ul class="tree" id="tree">

43
layouts/_default/rss.xml Normal file
View file

@ -0,0 +1,43 @@
{{- $pctx := . -}}
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
{{- $pages := slice -}}
{{- if $.IsHome -}}
{{- $pages = sort $pctx.RegularPages "Date" "desc" -}}
{{- else if $.IsSection -}}
{{- $pages = sort $pctx.RegularPagesRecursive "Date" "desc" -}}
{{- else -}}
{{- $pages = sort $pctx.RegularPagesRecursive "Date" "desc" -}}
{{- end -}}
{{- $limit := .Site.Config.Services.RSS.Limit -}}
{{- if ge $limit 1 -}}
{{- $pages = $pages | first $limit -}}
{{- end -}}
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
<link>{{ .Permalink }}</link>
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
{{- with .OutputFormats.Get "RSS" -}}
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
{{- end -}}
{{ range $pages }}
{{- if ne .RelPermalink "/search/" -}}
<item>
<title>{{ .Title }}</title>
<link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
<guid>{{ .Permalink }}</guid>
<description>{{ .Summary | html }}</description>
</item>
{{ end }}
{{ end }}
</channel>
</rss>

View file

@ -20,7 +20,7 @@
<div class="sidebar-holder">
<div class="sidebar" id="sidebar">
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
<input type="text" name="keyword" value="" placeholder="Search" data-search="" id="search-box" />
<input type="text" name="keyword" value="" placeholder="{{ i18n "search" }}" data-search="" id="search-box" />
</form>
<div class="sidebar-tree">
<ul class="tree" id="tree">

View file

@ -20,7 +20,7 @@
<div class="sidebar-holder">
<div class="sidebar" id="sidebar">
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
<input type="text" name="keyword" value="" placeholder="Search" data-search="" id="search-box" />
<input type="text" name="keyword" value="" placeholder="{{ i18n "search" }}" data-search="" id="search-box" />
</form>
<div class="sidebar-tree">
<ul class="tree" id="tree">
@ -136,7 +136,7 @@
{{ end }}
<div class="col-md-6 btn-improve-page">
{{ if ( eq site.Params.GitForge "gitlab" ) }}
<a href="{{ site.Params.GitRepo }}/-/edit/{{ .Scratch.Get "GitBranch" }}/{{ .File.Path }}" title="{{ i18n "improve_this_page" }}" target="_blank" rel="noopener">
<a href="{{ site.Params.GitRepo }}/-/edit/{{ .Scratch.Get "GitBranch" }}/content/{{ .File.Path }}" title="{{ i18n "improve_this_page" }}" target="_blank" rel="noopener">
{{ else if ( eq site.Params.GitForge "gitea" ) }}
<a href="{{ site.Params.GitRepo }}/_edit/{{ .Scratch.Get "GitBranch" }}/content/{{ .File.Path }}" title="{{ i18n "improve_this_page" }}" target="_blank" rel="noopener">
{{ else }} <!--- Make Github-style the default -->
@ -157,23 +157,13 @@
<hr />
<!----- Add comment support ----->
{{ with site.Params.features.comment }}
{{ if .enable }}
<!-- Add Disqus forum -->
{{ if .disqus.shortName }}
{{ partial "disqus.html" . }}
<!-- Add valine -->
{{ else if .valine }}
{{ partial "valine.html" . }}
<!-- Add utteranc -->
{{ else if .utteranc }}
{{ partial "utteranc.html" . }}
{{ end }}
{{ end }}
{{ if site.Params.features.comment.enable }}
{{ partial "comments.html" site.Params.features.comment }}
{{ end }}
<!-- Keep backward compatibility with old config.yaml -->
{{ if site.DisqusShortname }}
{{ partial "disqus.html" . }}
{{ partial "comments/disqus.html" (dict (slice "disqus" "shortName") site.DisqusShortname) }}
{{ end }}
</div>
@ -189,7 +179,7 @@
{{ define "toc" }}
<section class="toc-section" id="toc-section">
{{ if site.Params.enableTOC }}
{{ if and site.Params.enableTOC ( .Params.enableTOC | default true ) }}
<div class="toc-holder">
<h5 class="text-center pl-3">{{ i18n "toc_heading" }}</h5>
<hr>
@ -207,7 +197,15 @@
<script>
hljs.initHighlightingOnLoad();
</script>
<!-------------- Enable Math support for this page ---------------->
{{ if .Params.math }}
{{ partial "math.html" . }}
{{ end }}
<!-------------- Enable mermaid support for this page ---------------->
{{ if .Params.mermaid }}
{{ partial "mermaid.html" . }}
{{ end }}
{{ end }}

View file

@ -20,7 +20,7 @@
<div class="sidebar-holder">
<div class="sidebar" id="sidebar">
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
<input type="text" name="keyword" value="" placeholder="Search" data-search="" id="search-box" />
<input type="text" name="keyword" value="" placeholder="{{ i18n "search" }}" data-search="" id="search-box" />
</form>
<div class="sidebar-tree">
<ul class="tree" id="tree">

View file

@ -29,16 +29,8 @@
<!--================= custom style overrides =========================-->
<link rel="stylesheet" href="{{ "/css/style.css" | relURL }}"/>
<!-- Add Google Analytics if enabled in configuration -->
{{ if site.GoogleAnalytics }}
<!-- Google Analytics v3 ID -->
{{ if hasPrefix site.GoogleAnalytics "UA-"}}
{{ template "_internal/google_analytics_async.html" . }}
{{ else }}
<!-- Google Analytics v4 ID -->
{{ template "_internal/google_analytics.html" . }}
{{ end }}
{{ end }}
<!--================= add analytics if enabled =========================-->
{{- partial "analytics.html" . -}}
</head>
<body data-spy="scroll" data-target="#top-navbar" data-offset="100">
@ -92,5 +84,9 @@
<script src="{{ "/js/github-button.js" | relURL }}"></script>
<script src="{{ "/js/home.js" | relURL }}"></script>
<script src="{{ "/js/jquery.filterizr.min.js" | relURL }}"></script>
<!------ ADD SUPPORT LINKS -------->
{{- partial "misc/support.html" . -}}
</body>
</html>

View file

@ -21,7 +21,7 @@
<div class="sidebar-holder">
<div class="sidebar" id="sidebar">
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
<input type="text" name="keyword" value="" placeholder="Search" data-search="" id="search-box" />
<input type="text" name="keyword" value="" placeholder="{{ i18n "search" }}" data-search="" id="search-box" />
</form>
<div class="sidebar-tree">
<ul class="tree" id="tree">

View file

@ -21,7 +21,7 @@
<div class="sidebar-holder">
<div class="sidebar" id="sidebar">
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
<input type="text" name="keyword" value="" placeholder="Search" data-search="" id="search-box" />
<input type="text" name="keyword" value="" placeholder="{{ i18n "search" }}" data-search="" id="search-box" />
</form>
<div class="sidebar-tree">
<ul class="tree" id="tree">

View file

@ -0,0 +1,49 @@
<!-- Add Analytics if enabled in configuration -->
{{ with site.Params.features.analytics }}
{{ if .enabled }}
<!-- Google Analytics -->
{{ with .google }}
{{ $privacyConfig:= dict (slice "Site" "Config" "Privacy" "GoogleAnalytics") $.Site.Config.Privacy.GoogleAnalytics }}
{{ $analyticsConfig := dict (slice "Site" "GoogleAnalytics") .id }}
{{ template "_internal/google_analytics.html" (merge $privacyConfig $analyticsConfig) }}
{{ end }}
<!-- Counter.dev -->
{{ with .counterDev }}
<script>
if (
!sessionStorage.getItem("_swa") &&
document.referrer.indexOf(location.protocol + "//" + location.host) !== 0
) {
fetch(
"https://counter.dev/track?" +
new URLSearchParams({
referrer: document.referrer,
screen: screen.width + "x" + screen.height,
user: "{{ .id }}",
utcoffset: "1",
}),
{{ with .referrerPolicy }}
{ referrerPolicy: "{{ . }}" }
{{ end }}
);
}
sessionStorage.setItem("_swa", "1");
</script>
{{ end }}
<!-- GoatCounter -->
{{ with .goatCounter }}
<script
data-goatcounter="https://{{ .code }}.goatcounter.com/count"
async
src="//gc.zgo.at/count.js"
></script>
{{ end }}
{{ end }}
{{ end }}
<!-- Keep backwards compatibility and consistency with HUGO defaults -->
{{ if site.GoogleAnalytics }}
{{ template "_internal/google_analytics.html" . }}
{{ end }}

View file

@ -4,15 +4,19 @@
<div class="card-head d-flex">
{{ if .logo }}
{{ $logoImage := resources.Get .logo }}
{{/* svg don't support "Fit" operation */}}
{{ if ne $logoImage.MediaType.SubType "svg" }}
{{ $logoImage = $logoImage.Fit "24x24" }}
{{ end }}
<img class="card-img-xs" src="{{ $logoImage.RelPermalink }}" alt="{{ .name }}" />
<h5 class="card-title">{{ .name }}</h5>
{{ else if .icon }}
{{ $iconName := .icon }}
<h5 class="card-title"><span class="{{ $iconName }}"> {{ .name }}</span></h5>
{{ else }}
<h5 class="card-title">{{ .name }}</h5>
{{ end }}
<h5 class="card-title">{{ .name }}</h5>
</div>
<div class="card-body">
<p class="card-text">{{ .summary | markdownify }}</p>

View file

@ -0,0 +1,11 @@
{{ if .disqus.shortName }}
{{ partial "comments/disqus.html" . }}
{{ else if .valine }}
{{ partial "comments/valine.html" . }}
{{ else if .utteranc }}
{{ partial "comments/utteranc.html" . }}
{{ else if .giscus }}
{{ partial "comments/giscus.html" . }}
{{ else if .commento }}
{{ partial "comments/commento.html" . }}
{{ end }}

View file

@ -0,0 +1,12 @@
{{ with .commento }}
{{ $serverURL := .serverURL }}
{{ $autoInit := .autoInit | default "true"}}
{{ $hideDeleted := .hideDeleted | default "false"}}
<script defer
src="http://{{ $serverURL }}/js/commento.js"
data-auto-init="{{ $autoInit }}"
data-hide-deleted="{{ $hideDeleted }}"
></script>
<div id="commento"></div>
{{ end }}

View file

@ -0,0 +1,29 @@
{{ with .disqus }}
<div id="disqus_thread"></div>
<script type="text/javascript">
(function () {
// Don't ever inject Disqus on localhost--it creates unwanted
// discussions from 'localhost:1313' on your Disqus account...
if (window.location.hostname == "localhost") return;
var dsq = document.createElement("script");
dsq.type = "text/javascript";
dsq.async = true;
var disqus_shortname = "{{ .shortName }}";
dsq.src = "//" + disqus_shortname + ".disqus.com/embed.js";
(
document.getElementsByTagName("head")[0] ||
document.getElementsByTagName("body")[0]
).appendChild(dsq);
})();
</script>
<noscript
>{{ i18n "comments_javascript" }}
<a href="https://disqus.com/?ref_noscript"
>{{ i18n "comments_by" }} Disqus.</a
></noscript
>
<a href="https://disqus.com/" class="dsq-brlink"
>{{ i18n "comments_by" }} <span class="logo-disqus">Disqus</span></a
>
{{ end }}

View file

@ -0,0 +1,28 @@
{{ with .giscus }}
{{ $repo := .repo }}
{{ $repoID := .repoID }}
{{ $category := .category | default "General" }}
{{ $categoryID := .categoryID }}
{{ $theme := .theme | default "light" }}
{{ $map := .map | default "url" }}
{{ $reaction := .reaction | default "1" }}
{{ $metadata := .metadata | default "0" }}
{{ $inputPosition := .inputPosition | default "bottom" }}
{{ $crossOrigin := .crossOrigin | default "anonymous" }}
<script src="https://giscus.app/client.js"
data-repo="{{ $repo }}"
data-repo-id="{{ $repoID }}"
data-category="{{ $category }}"
data-category-id="{{ $categoryID }}"
data-mapping="{{ $map }}"
data-reactions-enabled="{{ $reaction }}"
data-emit-metadata="{{ $metadata }}"
data-input-position="{{ $inputPosition }}"
data-theme="{{ $theme }}"
data-lang="{{ .Site.Language.Lang }}"
crossorigin="{{ $crossOrigin }}"
async>
</script>
{{ end }}

View file

@ -1,6 +1,7 @@
{{ $repo := site.Params.features.comment.utteranc.repo }}
{{ $issueTerm := site.Params.features.comment.utteranc.issueTerm }}
{{ $theme := site.Params.features.comment.utteranc.theme }}
{{ with .utteranc }}
{{ $repo := .repo }}
{{ $issueTerm := .issueTerm }}
{{ $theme := .theme }}
<div id="utteranc_thread"></div>
<div id="comments" class="comments">
@ -20,3 +21,4 @@
document.getElementById('comments-container').appendChild(utterances);
})();
</script>
{{ end }}

View file

@ -0,0 +1,18 @@
{{ with .valine }}
<div id="vcomments"></div>
<script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
<script src="//unpkg.com/valine/dist/Valine.min.js"></script>
<script type="text/javascript">
new Valine({
el: "#vcomments",
appId: "{{ .appId }}",
appKey: "{{ .appKey }}",
avatar: "{{ .avatar }}",
placeholder: "{{ .placeholder }}",
visitor: "{{ .visitor }}",
lang: "{{ .lang }}",
recordIP: "{{ .recordIP }}",
enableQQ: "{{ .enableQQ }}",
});
</script>
{{ end }}

View file

@ -1,32 +0,0 @@
{{ $disqusShortName := site.DisqusShortname }}
{{ if site.Params.features.comment.disqus.shortName }}
{{ $disqusShortName = site.Params.features.comment.disqus.shortName }}
{{ end }}
<div id="disqus_thread"></div>
<script type="text/javascript">
(function () {
// Don't ever inject Disqus on localhost--it creates unwanted
// discussions from 'localhost:1313' on your Disqus account...
if (window.location.hostname == "localhost") return;
var dsq = document.createElement("script");
dsq.type = "text/javascript";
dsq.async = true;
var disqus_shortname = "{{ $disqusShortName }}";
dsq.src = "//" + disqus_shortname + ".disqus.com/embed.js";
(
document.getElementsByTagName("head")[0] ||
document.getElementsByTagName("body")[0]
).appendChild(dsq);
})();
</script>
<noscript
>{{ i18n "comments_javascript" }}
<a href="https://disqus.com/?ref_noscript"
>{{ i18n "comments_by" }} Disqus.</a
></noscript
>
<a href="https://disqus.com/" class="dsq-brlink"
>{{ i18n "comments_by" }} <span class="logo-disqus">Disqus</span></a
>

View file

@ -1,6 +1,7 @@
{{/* variables for enabling/disabling parts of the footer */}}
{{ $footerEnabled := site.Params.footer.enable | default true }}
{{ $navigationEnabled := site.Params.footer.navigation.enable | default true }}
{{ $customMenusEnabled := site.Params.footer.navigation.customMenus | default true }}
{{ $contactMeEnabled := site.Params.footer.contactMe.enable | default true }}
{{ $newsletterEnabled := site.Params.footer.newsletter.enable | default true }}
{{ $credentialsEnabled := site.Params.footer.credentials.enable | default true }}
@ -26,7 +27,12 @@
{{ $sections = (index site.Data site.Language.Lang).sections }}
{{ end }}
{{ $copyrightNotice := "© 2021 Copyright."}}
{{ $customMenus := site.Params.customMenus }}
{{ if (index site.Data site.Language.Lang).site.customMenus }}
{{ $customMenus = (index site.Data site.Language.Lang).site.customMenus }}
{{ end }}
{{ $copyrightNotice := now.Format "2006" | printf "© %s Copyright."}}
{{ if (index site.Data site.Language.Lang).site }}
{{ $siteConfig := (index site.Data site.Language.Lang).site }}
{{ if $siteConfig.copyright }}
@ -58,7 +64,7 @@
{{ end }}
{{ $hugoLogo = $hugoLogo.RelPermalink}}
<footer class="container-fluid text-center align-content-center footer pb-2">
<footer id="footer" class="container-fluid text-center align-content-center footer pb-2">
<div class="container pt-5">
<div class="row text-left">
{{ if $navigationEnabled }}
@ -77,6 +83,15 @@
</li>
{{ end }}
{{- end }}
{{ if $customMenusEnabled }}
{{ range $customMenus }}
{{ if .showOnFooter }}
<li class="nav-item">
<a class="smooth-scroll" href="{{ .url }}">{{ .name }}</a>
</li>
{{ end }}
{{ end }}
{{ end }}
</ul>
{{ end }}
</div>

View file

@ -8,11 +8,12 @@
<link rel="stylesheet" href="{{ "/css/navigators/navbar.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/plyr.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/flag-icon.min.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/katex.min.css" | relURL }}">
<!--=================== cdn ==============================-->
<!--=================== fonts ==============================-->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Muli:wght@300;400;500;600">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css" />
<!--=================== icons ==============================-->
<link rel="stylesheet" href="{{ "/fontawesome/css/all.min.css" | relURL }}"/>
<!--================= fab-icon =========================-->
{{/* add favicon only if the site author has provided the the favicon */}}

View file

@ -1,5 +1,15 @@
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" integrity="sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous"
onload="renderMathInElement(document.body);">
<link rel="stylesheet" href="{{ "/katex/katex.min.css" | relURL }}">
<script type="text/javascript" defer src="{{ "/katex/katex.min.js" | relURL }}"></script>
<script type="text/javascript" defer src="{{ "/katex/auto-render.min.js" | relURL }}" onload="renderMathInElement(document.body);">
renderMathInElement(
document.body,
{
delimiters: [
{left: "$$", right: "$$", display: true},
{left: "\\[", right: "\\]", display: true},
{left: "$", right: "$", display: false},
{left: "\\(", right: "\\)", display: false}
]
}
);
</script>

View file

@ -0,0 +1,6 @@
<script src="{{ "/js/mermaid-8.14.0.min.js" | relURL }}"></script>
<script>
mermaid.initialize({
startOnLoad:true
});
</script>

View file

@ -0,0 +1,16 @@
{{ with site.Params.features.support }}
{{ if .enabled }}
<!-- Enable Ko-Fi floating button -->
{{ with .kofi }}
<script src='https://storage.ko-fi.com/cdn/scripts/overlay-widget.js'></script>
<script>
kofiWidgetOverlay.draw('{{ .user }}', {
'type': 'floating-chat',
'floating-chat.donateButton.text': '{{ .text }}',
'floating-chat.donateButton.text-color': '{{ .textColor }}',
'floating-chat.donateButton.background-color': '{{ .backgroundColor }}',
});
</script>
{{ end }}
{{ end }}
{{ end }}

View file

@ -87,7 +87,7 @@
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{i18n "more" }}</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
{{ $sectionCount := 0 }}
{{ $sectionCount := 1 }}
{{ range sort $sections "section.weight" }}
{{ if and (.section.enable) (.section.showOnNavbar) }}
{{ $sectionCount = add $sectionCount 1}}
@ -115,9 +115,11 @@
</li>
{{ end }}
{{ range $customMenus }}
<li class="nav-item">
<a class="nav-link" href="{{ .url }}">{{ .name }}</a>
</li>
{{ if (not .hideFromNavbar) }}
<li class="nav-item">
<a class="nav-link" href="{{ .url }}">{{ .name }}</a>
</li>
{{ end }}
{{ end }}
{{ if .IsTranslated }}
{{ partial "navigators/lang-selector.html" . }}

View file

@ -31,7 +31,7 @@
<li>
{{ if eq .name "Email" }}
<a href="mailto:{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"><i class="{{ .icon }}"></i></a>
{{ else if eq .name "Phone" }}
{{ else if eq .name (i18n "phone") }}
<a href="tel:{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"><i class="{{ .icon }}"></i></a>
{{ else }}
<a href="{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"><i class="{{ .icon }}"></i></a>

View file

@ -6,7 +6,10 @@
<div class="container-fluid anchor pb-5 accomplishments-section">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container">

View file

@ -6,7 +6,10 @@
<div class="container-fluid anchor pb-5 achievements-section">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container">
<div class="row" id="gallery">

View file

@ -4,9 +4,13 @@
{{ end }}
<div class="container-fluid anchor pb-5 education-section education-alt" id="{{ $sectionID }}">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">{{ .section.name }}</h1>
{{ end }}
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container">
<table class="education-info-table">

View file

@ -4,10 +4,13 @@
{{ end }}
<div class="container-fluid anchor pb-5 education-section">
{{ if not (.section.hideTitle) }}
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container">
<table class="education-info-table">

View file

@ -6,8 +6,10 @@
<div class="container-fluid anchor pb-5 experiences-section">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}
</h1>
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container timeline text-justify">

View file

@ -1,5 +1,5 @@
{{ if gt (len .positions) 1 }}
{{ partial "sections/experiences/multiple-positions" . }}
{{ partial "sections/experiences/multiple-positions.html" . }}
{{ else }}
{{ partial "sections/experiences/single-position.html" . }}
{{ end }}

View file

@ -12,10 +12,12 @@
<!-- Add company overview -->
<p>{{ .company.overview | markdownify }}</p>
<!-- Add the responsibilities handled at this position -->
{{ if $position.responsibilities }}
<h6 class="text-muted">{{ i18n "responsibilities" }}</h6>
<ul class="justify-content-around">
{{ range $position.responsibilities }}
<li>{{ . | markdownify }}</li>
{{ end }}
</ul>
{{ end }}
</div>

View file

@ -5,7 +5,11 @@
<div class="container-fluid anchor pb-5 projects-section" id="{{ $sectionID }}">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">{{ .section.name }}</h1>
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container ml-auto text-center">
<div class="btn-group flex-wrap" role="group" id="project-filter-buttons">

View file

@ -12,7 +12,10 @@
<div class="container-fluid anchor pb-5 recent-posts-section">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container">
<div class="row" id="recent-post-cards">

View file

@ -6,7 +6,10 @@
<div class="container-fluid anchor pb-5 skills-section">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container d-flex-block">
<div class="row" id="primary-skills">

View file

@ -1,17 +0,0 @@
<!-- valine -->
<div id="vcomments"></div>
<script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
<script src="//unpkg.com/valine/dist/Valine.min.js"></script>
<script type="text/javascript">
new Valine({
el: "#vcomments",
appId: "{{ .valine.appId }}",
appKey: "{{ .valine.appKey }}",
avatar: "{{ .valine.avatar }}",
placeholder: "{{ .valine.placeholder }}",
visitor: "{{ .valine.visitor }}",
lang: "{{ .valine.lang }}",
recordIP: "{{ .valine.recordIP }}",
enableQQ: "{{ .valine.enableQQ }}",
});
</script>

View file

@ -0,0 +1,13 @@
{{ $alignment:= .Get "align"}}
{{ if not $alignment }}
{{ $alignment = "center"}}
{{ end }}
{{ $background:= .Get "background" }}
{{ if not $background }}
{{ $background = "none"}}
{{ end }}
<div class="mermaid" align="{{ $alignment }}" style="background-color: {{ $background }}; border-radius: 5px;">
{{ safeHTML .Inner }}
</div>

View file

@ -20,7 +20,7 @@
<div class="sidebar-holder">
<div class="sidebar" id="sidebar">
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
<input type="text" name="keyword" value="" placeholder="Search" data-search="" id="search-box" />
<input type="text" name="keyword" value="" placeholder="{{ i18n "search" }}" data-search="" id="search-box" />
</form>
<div class="sidebar-tree">
<ul class="tree" id="tree">

200
package-lock.json generated
View file

@ -8,8 +8,8 @@
"version": "1.0.0",
"license": "MIT",
"devDependencies": {
"autoprefixer": "^10.4.2",
"postcss": "^8.4.5",
"autoprefixer": "^10.4.4",
"postcss": "^8.4.12",
"postcss-cli": "^8.3.1"
}
},
@ -104,14 +104,24 @@
}
},
"node_modules/autoprefixer": {
"version": "10.4.2",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz",
"integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==",
"version": "10.4.4",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz",
"integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==",
"dev": true,
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
}
],
"dependencies": {
"browserslist": "^4.19.1",
"caniuse-lite": "^1.0.30001297",
"fraction.js": "^4.1.2",
"browserslist": "^4.20.2",
"caniuse-lite": "^1.0.30001317",
"fraction.js": "^4.2.0",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
"postcss-value-parser": "^4.2.0"
@ -122,10 +132,6 @@
"engines": {
"node": "^10 || ^12 || >=14"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
"peerDependencies": {
"postcss": "^8.1.0"
}
@ -152,15 +158,25 @@
}
},
"node_modules/browserslist": {
"version": "4.19.1",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz",
"integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==",
"version": "4.20.2",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
"integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
"dev": true,
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
}
],
"dependencies": {
"caniuse-lite": "^1.0.30001286",
"electron-to-chromium": "^1.4.17",
"caniuse-lite": "^1.0.30001317",
"electron-to-chromium": "^1.4.84",
"escalade": "^3.1.1",
"node-releases": "^2.0.1",
"node-releases": "^2.0.2",
"picocolors": "^1.0.0"
},
"bin": {
@ -168,21 +184,23 @@
},
"engines": {
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001299",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001299.tgz",
"integrity": "sha512-iujN4+x7QzqA2NCSrS5VUy+4gLmRd4xv6vbBBsmfVqTx8bLAD8097euLqQgKxSVLvxjSDcvF1T/i9ocgnUFexw==",
"version": "1.0.30001319",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz",
"integrity": "sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==",
"dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
}
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
}
]
},
"node_modules/chalk": {
"version": "4.1.2",
@ -278,9 +296,9 @@
}
},
"node_modules/electron-to-chromium": {
"version": "1.4.33",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.33.tgz",
"integrity": "sha512-OVK1Ad3pHnmuXPhEfq85X8vUKr1UPNHryBnbKnyLcAfh8dPwoFjoDhDlP5KpPJIiymvSucZs48UBrE1250IxOw==",
"version": "1.4.90",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.90.tgz",
"integrity": "sha512-ZwKgSA0mQMyEhz+NR0F8dRzkrCLeHLzLkjx/CWf16+zV85hQ6meXPQbKanvhnpkYb7b2uJNj+enQJ/N877ND4Q==",
"dev": true
},
"node_modules/emoji-regex": {
@ -336,9 +354,9 @@
}
},
"node_modules/fraction.js": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz",
"integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==",
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
"dev": true,
"engines": {
"node": "*"
@ -603,9 +621,9 @@
}
},
"node_modules/nanoid": {
"version": "3.1.30",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
"integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==",
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
"integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
"dev": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
@ -615,9 +633,9 @@
}
},
"node_modules/node-releases": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz",
"integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==",
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz",
"integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==",
"dev": true
},
"node_modules/normalize-path": {
@ -675,21 +693,27 @@
}
},
"node_modules/postcss": {
"version": "8.4.5",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
"integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
"version": "8.4.12",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz",
"integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==",
"dev": true,
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
}
],
"dependencies": {
"nanoid": "^3.1.30",
"nanoid": "^3.3.1",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.1"
"source-map-js": "^1.0.2"
},
"engines": {
"node": "^10 || ^12 || >=14"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
}
},
"node_modules/postcss-cli": {
@ -888,9 +912,9 @@
}
},
"node_modules/source-map-js": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz",
"integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@ -1083,14 +1107,14 @@
"dev": true
},
"autoprefixer": {
"version": "10.4.2",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz",
"integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==",
"version": "10.4.4",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz",
"integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==",
"dev": true,
"requires": {
"browserslist": "^4.19.1",
"caniuse-lite": "^1.0.30001297",
"fraction.js": "^4.1.2",
"browserslist": "^4.20.2",
"caniuse-lite": "^1.0.30001317",
"fraction.js": "^4.2.0",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
"postcss-value-parser": "^4.2.0"
@ -1112,22 +1136,22 @@
}
},
"browserslist": {
"version": "4.19.1",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz",
"integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==",
"version": "4.20.2",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
"integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
"dev": true,
"requires": {
"caniuse-lite": "^1.0.30001286",
"electron-to-chromium": "^1.4.17",
"caniuse-lite": "^1.0.30001317",
"electron-to-chromium": "^1.4.84",
"escalade": "^3.1.1",
"node-releases": "^2.0.1",
"node-releases": "^2.0.2",
"picocolors": "^1.0.0"
}
},
"caniuse-lite": {
"version": "1.0.30001299",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001299.tgz",
"integrity": "sha512-iujN4+x7QzqA2NCSrS5VUy+4gLmRd4xv6vbBBsmfVqTx8bLAD8097euLqQgKxSVLvxjSDcvF1T/i9ocgnUFexw==",
"version": "1.0.30001319",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz",
"integrity": "sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==",
"dev": true
},
"chalk": {
@ -1204,9 +1228,9 @@
}
},
"electron-to-chromium": {
"version": "1.4.33",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.33.tgz",
"integrity": "sha512-OVK1Ad3pHnmuXPhEfq85X8vUKr1UPNHryBnbKnyLcAfh8dPwoFjoDhDlP5KpPJIiymvSucZs48UBrE1250IxOw==",
"version": "1.4.90",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.90.tgz",
"integrity": "sha512-ZwKgSA0mQMyEhz+NR0F8dRzkrCLeHLzLkjx/CWf16+zV85hQ6meXPQbKanvhnpkYb7b2uJNj+enQJ/N877ND4Q==",
"dev": true
},
"emoji-regex": {
@ -1253,9 +1277,9 @@
}
},
"fraction.js": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz",
"integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==",
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
"dev": true
},
"fs-extra": {
@ -1447,15 +1471,15 @@
}
},
"nanoid": {
"version": "3.1.30",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
"integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==",
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
"integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
"dev": true
},
"node-releases": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz",
"integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==",
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz",
"integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==",
"dev": true
},
"normalize-path": {
@ -1495,14 +1519,14 @@
"dev": true
},
"postcss": {
"version": "8.4.5",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
"integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
"version": "8.4.12",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz",
"integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==",
"dev": true,
"requires": {
"nanoid": "^3.1.30",
"nanoid": "^3.3.1",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.1"
"source-map-js": "^1.0.2"
}
},
"postcss-cli": {
@ -1620,9 +1644,9 @@
"dev": true
},
"source-map-js": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz",
"integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"dev": true
},
"string-width": {

View file

@ -17,8 +17,8 @@
},
"homepage": "https://github.com/hossainemruz/toha#readme",
"devDependencies": {
"autoprefixer": "^10.4.2",
"postcss": "^8.4.5",
"autoprefixer": "^10.4.4",
"postcss": "^8.4.12",
"postcss-cli": "^8.3.1"
}
}

View file

@ -1,6 +1,7 @@
.education-section .education-info-table {
width: 100%;
border: none;
background: none;
}
.education-section .education-info-table tr:hover {
@ -12,6 +13,7 @@
.education-section .education-info-table td {
border: none;
padding: 0;
background: none;
}
.education-section .timeframe {

6
static/fontawesome/css/all.min.css vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

3
static/js/mermaid-8.14.0.min.js vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more