Compare commits

...

51 commits
v4.5.0 ... main

Author SHA1 Message Date
Emruz Hossain
c7fb163e66
Fix mermaid rendering inside split shortcode (#1059) 2025-07-12 16:02:30 +06:00
Emruz Hossain
7223361464
Fix build failure due to Hugo chaning _internal template behavior (#1050)
* Fix build failure due to Hugo chaning `_internal` template behavior

Signed-off-by: hossainemruz <hossainemruz@gmail.com>

* Update min Hugo version

Signed-off-by: hossainemruz <hossainemruz@gmail.com>

---------

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2025-04-14 22:48:34 +06:00
dependabot[bot]
b79aee97d6
Bump dompurify and mermaid (#1047)
Bumps [dompurify](https://github.com/cure53/DOMPurify) to 3.2.5 and updates ancestor dependency [mermaid](https://github.com/mermaid-js/mermaid). These dependencies need to be updated together.


Updates `dompurify` from 2.4.3 to 3.2.5
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.4.3...3.2.5)

Updates `mermaid` from 9.4.3 to 11.6.0
- [Release notes](https://github.com/mermaid-js/mermaid/releases)
- [Changelog](https://github.com/mermaid-js/mermaid/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/mermaid-js/mermaid/compare/v9.4.3...mermaid@11.6.0)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.2.5
  dependency-type: indirect
- dependency-name: mermaid
  dependency-version: 11.6.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-12 19:02:16 +06:00
dependabot[bot]
e6dfa1327a
Bump katex from 0.16.11 to 0.16.21 (#1045)
Bumps [katex](https://github.com/KaTeX/KaTeX) from 0.16.11 to 0.16.21.
- [Release notes](https://github.com/KaTeX/KaTeX/releases)
- [Changelog](https://github.com/KaTeX/KaTeX/blob/main/CHANGELOG.md)
- [Commits](https://github.com/KaTeX/KaTeX/compare/v0.16.11...v0.16.21)

---
updated-dependencies:
- dependency-name: katex
  dependency-version: 0.16.21
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-06 19:51:30 +06:00
dependabot[bot]
a9fcfdba26
Bump gaurav-nelson/github-action-markdown-link-check (#1044)
Bumps [gaurav-nelson/github-action-markdown-link-check](https://github.com/gaurav-nelson/github-action-markdown-link-check) from 1.0.16 to 1.0.17.
- [Release notes](https://github.com/gaurav-nelson/github-action-markdown-link-check/releases)
- [Commits](https://github.com/gaurav-nelson/github-action-markdown-link-check/compare/1.0.16...1.0.17)

---
updated-dependencies:
- dependency-name: gaurav-nelson/github-action-markdown-link-check
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-06 19:44:21 +06:00
JY Hsu
f329b3f2cb
fix: Fix issue #1037 (#1039)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2025-03-06 14:41:37 +06:00
James
23cc80dea8
Avoid resizing navbar gifs as they ruin animations (#1038) 2025-03-06 14:34:55 +06:00
Emruz Hossain
aa91957832
Make RSS feed path configurable (#1034)
* Make RSS feed path configurable

Fixes #997

Add configuration option for RSS feed path

* Add `rssPath` configuration option in `exampleSite/hugo.yaml` under the `params` section to specify the desired RSS feed path.
* Set the default value of `rssPath` to `/rss.xml`.
* Update `layouts/_default/baseof.html` to include the RSS feed link with the configured `rssPath` value.
* Use the default path `/index.xml` if `rssPath` is not specified.

* Add outputFormats to hugo.yaml

Signed-off-by: Emruz Hossain <hossainemruz@gmail.com>

* Add reference to doc

Signed-off-by: Emruz Hossain <hossainemruz@gmail.com>

---------

Signed-off-by: Emruz Hossain <hossainemruz@gmail.com>
2025-02-07 03:01:08 +06:00
Emruz Hossain
ba6bb5d369
Update minimum Hugo version to 0.141.0 (#1033)
Fixes #1029

---

For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/hugo-toha/toha/issues/1029?shareId=XXXX-XXXX-XXXX-XXXX).
2025-02-07 01:49:49 +06:00
Rémy Jacquin
417ef950c7
fix: Create text-justify css class (#1032)
Signed-off-by: Rémy Jacquin <remy@remyj.fr>
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2025-02-07 01:43:47 +06:00
Hamed Pourkhaleghi
181c12376e
feat: make phone number a clickable link in footer (#1031)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2025-02-07 01:37:04 +06:00
dependabot[bot]
9a8d3af57d
Bump katex from 0.16.11 to 0.16.21 in /exampleSite (#1025)
Bumps [katex](https://github.com/KaTeX/KaTeX) from 0.16.11 to 0.16.21.
- [Release notes](https://github.com/KaTeX/KaTeX/releases)
- [Changelog](https://github.com/KaTeX/KaTeX/blob/main/CHANGELOG.md)
- [Commits](https://github.com/KaTeX/KaTeX/compare/v0.16.11...v0.16.21)

---
updated-dependencies:
- dependency-name: katex
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2025-02-07 01:30:58 +06:00
Bernat Borràs Civil
f8befe62cc
Add dark background (#1024)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2025-01-28 15:59:47 +01:00
dependabot[bot]
35a1686bfe
Bump gaurav-nelson/github-action-markdown-link-check from 1.0.15 to 1.0.16 (#1028)
Bumps [gaurav-nelson/github-action-markdown-link-check](https://github.com/gaurav-nelson/github-action-markdown-link-check) from 1.0.15 to 1.0.16.
- [Release notes](https://github.com/gaurav-nelson/github-action-markdown-link-check/releases)
- [Commits](https://github.com/gaurav-nelson/github-action-markdown-link-check/compare/1.0.15...1.0.16)

---
updated-dependencies:
- dependency-name: gaurav-nelson/github-action-markdown-link-check
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-21 11:22:04 +00:00
dependabot[bot]
0c4b9edf48
Bump release-drafter/release-drafter from 6.0.0 to 6.1.0 (#1027)
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/v6.0.0...v6.1.0)

---
updated-dependencies:
- dependency-name: release-drafter/release-drafter
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-20 11:27:34 +00:00
Alexandre Neto
5c1de702ad
Add RSS link to header (#1019)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2025-01-14 06:01:42 +06:00
Emruz Hossain
07372519ee
Add support for different logo on dark mode (#1020) 2025-01-14 06:01:14 +06:00
Andrea Maiani
047bb517cb
Adapt publication card to handle missing URLs (#1017)
* Allow for personalized titles for Blog and Note pages

* Adapt publication card to handle better the case when URL in authors, publication and paper are not used.
2024-12-19 14:24:52 +06:00
David G. Simmons
4e4acdbb6b
Remove in-line script from header (#1004)
* remove in-line script from header

* oops!

* Set script in-line with integrity hash

Signed-off-by: Emruz Hossain <hossainemruz@gmail.com>

---------

Signed-off-by: Emruz Hossain <hossainemruz@gmail.com>
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-12-01 20:37:33 +06:00
JY Hsu
3be5a58a7c
Fix google analytics feature (#989)
* fix: Fix google analytics

* fix: Change respectDoNotTrack in GA html template

---------

Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-11-27 05:59:35 +06:00
JY Hsu
515b7eb3bf
Fix input focus and placeholder color for footer section (#1005)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-10-24 21:54:40 +06:00
dependabot[bot]
024ffa7b48
Bump actions/checkout from 4.2.1 to 4.2.2 (#1008)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-24 11:10:20 +00:00
David G. Simmons
aa9b49b318
Add statcounter to statistics (#1003) 2024-10-21 19:11:26 +06:00
David G. Simmons
2f670db6a0
Add support for canonical links (#1001)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-10-19 00:48:08 +06:00
JY Hsu
bc67ca1187
Add project image (#987)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-10-18 22:51:40 +06:00
dependabot[bot]
22531ce9a8
Bump actions/checkout from 4.2.0 to 4.2.1 (#995)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.2.0...v4.2.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-08 11:06:44 +00:00
JY Hsu
d6df1f4b7c
fix: Add minute section in both zh-cn and zh-tw toml (#988)
Co-authored-by: Bernat Borràs Civil <70479573+BernatBC@users.noreply.github.com>
2024-10-02 22:07:20 +02:00
dependabot[bot]
cad7dae666
Bump actions/checkout from 4.1.7 to 4.2.0 (#985)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.7...v4.2.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-26 11:24:15 +00:00
Bernat Borràs Civil
0d4d8a8e3c
Add copy code button (#963)
* Add copy code button

* External package not needed

* Improve alignement

* Update button style + add feedback on click

Signed-off-by: hossainemruz <hossainemruz@gmail.com>

* Update dependencies

Signed-off-by: hossainemruz <hossainemruz@gmail.com>

---------

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-09-20 01:29:38 +00:00
JY Hsu
9da3e3420b
Add category filter for skills (#979)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-09-20 00:57:14 +00:00
dependabot[bot]
0f6737eee0
Bump dompurify and mermaid (#977)
Bumps [dompurify](https://github.com/cure53/DOMPurify) to 3.1.6 and updates ancestor dependency [mermaid](https://github.com/mermaid-js/mermaid). These dependencies need to be updated together.


Updates `dompurify` from 2.4.1 to 3.1.6
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.4.1...3.1.6)

Updates `mermaid` from 9.3.0 to 11.2.1
- [Release notes](https://github.com/mermaid-js/mermaid/releases)
- [Changelog](https://github.com/mermaid-js/mermaid/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/mermaid-js/mermaid/compare/v9.3.0...mermaid@11.2.1)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-type: indirect
- dependency-name: mermaid
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-09-20 00:53:41 +00:00
Bernat Borràs Civil
0e8f82703f
Fix perfect matching provisionally (#976)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-09-20 00:52:33 +00:00
Steffen Barnau
9300a22068
Align card texts and tag list to left (#974)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-09-20 00:50:41 +00:00
Bernat Borràs Civil
804a866371
Merge pull request #972 from deining/flag-icons
Change npm package 'flag-icon-css' to 'flag-icons'
2024-09-20 02:47:52 +02:00
Emruz Hossain
da8dbea6ca
Merge branch 'main' into flag-icons 2024-09-20 06:46:57 +06:00
Khanbala Rashidov
618039a87e
Added Azerbaijan language (#975)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-09-20 00:44:22 +00:00
Emruz Hossain
55da71cd90
Separate label enforcer job to separate workflow (#982)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2024-09-20 00:41:13 +00:00
Andreas Deininger
f032986c23 Change npm package 'flag-icon-css' to 'flag-icons' 2024-09-08 19:25:09 +02:00
Andreas Deininger
aab2b39c50
Update node version in 'autoprefixer.yml' workflow (#964)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-09-08 03:34:21 +06:00
Emruz Hossain
f2e549772d
Fix auto-prefixer workflow (#971)
Signed-off-by: Emruz Hossain <hossainemruz@gmail.com>
2024-09-08 03:30:42 +06:00
JY Hsu
0090f7b1fa
Fix zh-tw UI translation (#970)
* fix: Fix zh-tw.toml

* feat: Add traditional Chinese in README
2024-09-06 23:21:09 +06:00
Emruz Hossain
577e3a5d00
Fix list page card was breaking (#969)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2024-09-06 16:56:20 +06:00
JY Hsu
7bc37c74c7
Added default theme (#960)
* feat: Added default theme

* Revert "feat: Added default theme"

This reverts commit a11a99f92a.

* feat: Add basic theme feature

* feat: Add theme settings

* fix: Fix default theme value

* fix: Fix CR and doc-string

* Comment out darkMode on exampleSite/hugo.yaml

Signed-off-by: hossainemruz <hossainemruz@gmail.com>

---------

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-09-06 16:15:33 +06:00
dependabot[bot]
3ce670e2a5
Bump peter-evans/create-pull-request from 6 to 7 (#967)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6 to 7.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6...v7)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-03 11:42:40 +00:00
Andreas Deininger
02e5e99cf6
Fix deprecation warnings (#962) 2024-08-31 04:14:02 +06:00
dependabot[bot]
dde735d3af
Bump braces from 3.0.2 to 3.0.3 (#950)
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-07-31 03:26:36 +06:00
Andrea Maiani
d0329531d7
Allow for personalized titles for Blog and Note pages (#951) 2024-07-31 03:21:29 +06:00
dependabot[bot]
05dce9c509
Bump actions/checkout from 4.1.6 to 4.1.7 (#949)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.6 to 4.1.7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.6...v4.1.7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-13 11:51:59 +00:00
Emruz Hossain
8599c634e3
Update hugo version in netlify.toml (#946)
* Update hugo version in netlify.toml

Signed-off-by: hossainemruz <hossainemruz@gmail.com>

* Rename config.yaml to hugo.yaml

Signed-off-by: hossainemruz <hossainemruz@gmail.com>

* Use go version 1.21

Signed-off-by: hossainemruz <hossainemruz@gmail.com>

* Fix link

Signed-off-by: hossainemruz <hossainemruz@gmail.com>

---------

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2024-06-02 00:47:22 +06:00
dependabot[bot]
6350e5e2e2
Bump actions/checkout from 4.1.5 to 4.1.6 (#940)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.5 to 4.1.6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.5...v4.1.6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2024-05-27 18:59:38 +06:00
JYHsu
b40f6f85b9
fix: Fixed font color for education pages in dark mode (#943) 2024-05-27 18:50:32 +06:00
71 changed files with 4130 additions and 1138 deletions

View file

@ -8,12 +8,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout to latest commit
uses: actions/checkout@v4.1.5
uses: actions/checkout@v4.2.2
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "15.x"
node-version: "20.x"
- name: Run autoprefixer
run: |
@ -21,7 +21,7 @@ jobs:
npm run autoprefixer
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
uses: peter-evans/create-pull-request@v7
with:
branch: autoprefixer
branch-suffix: timestamp

View file

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

16
.github/workflows/enforce-lablel.yml vendored Normal file
View file

@ -0,0 +1,16 @@
name: Label Enforcer
# Run action on pull request creation, reopening, or label changes
on:
pull_request:
types: [opened, reopened, labeled, unlabeled]
jobs:
# Ensure that PR has desired labels
enforce-label:
runs-on: ubuntu-latest
steps:
- uses: yogevbd/enforce-label-action@2.2.2
with:
REQUIRED_LABELS_ANY: "automerge,breaking-change,bug-fix,enhancement,feature,translation"
REQUIRED_LABELS_ANY_DESCRIPTION: "The PR must have at least one these labels: ['automerge','breaking-change','bug-fix','enhancement','feature','translation']"

View file

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

View file

@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
# checkout to the commit that has been pushed
- uses: actions/checkout@v4.1.5
- uses: actions/checkout@v4.2.2
- name: Setup Node
uses: actions/setup-node@v4
@ -35,7 +35,7 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.5
- uses: actions/checkout@v4.2.2
- name: Setup Node
uses: actions/setup-node@v4
@ -73,20 +73,11 @@ jobs:
timeout: 5
urls: "${{ steps.preview.outputs.url }},${{ steps.preview.outputs.url }}/posts/,${{ steps.preview.outputs.url }}/posts/markdown-sample/,${{ steps.preview.outputs.url }}/posts/shortcodes/"
# Ensure that PR has desired labels
enforce-label:
runs-on: ubuntu-latest
steps:
- uses: yogevbd/enforce-label-action@2.2.2
with:
REQUIRED_LABELS_ANY: "automerge,breaking-change,bug-fix,enhancement,feature,translation"
REQUIRED_LABELS_ANY_DESCRIPTION: "The PR must have at least one these labels: ['automerge','breaking-change','bug-fix','enhancement','feature','translation']"
# Check for any broken links
markdown-link-check:
runs-on: ubuntu-latest
steps:
# checkout to latest commit
- uses: actions/checkout@v4.1.5
- uses: actions/checkout@v4.2.2
# run markdown linter
- uses: gaurav-nelson/github-action-markdown-link-check@1.0.15
- uses: gaurav-nelson/github-action-markdown-link-check@1.0.17

View file

@ -56,6 +56,7 @@ For more details about the features please visit [here](https://toha-guides.netl
- Deutsch
- Español
- 简体中文
- 繁體中文
- हिन्दी
- Italiano
- 日本語
@ -63,6 +64,7 @@ For more details about the features please visit [here](https://toha-guides.netl
- русский
- suomi
- Tiếng Việt
- Azerbaijan
- Turkish
- Arabic (العربية)
- Português Europeu
@ -91,7 +93,7 @@ Here are few screenshots from the [example site](https://hugo-toha.github.io).
## Requirements
- Hugo Version 0.118.0 (extended) or higher
- Hugo Version 0.128.0 (extended) or higher
- Go language 1.18 or higher (require for hugo modules)
- Node version v18.x or later and npm 8.x or later.
@ -111,7 +113,7 @@ hugo mod init github.com/<your username>/<your repo name>
##### 2. Add this theme as your module dependency
Now, in your `config.yaml` file, add a `module` section.
Now, in your `hugo.yaml` file, add a `module` section.
```yaml
# Use Hugo modules to add theme
@ -120,7 +122,7 @@ module:
- path: github.com/hugo-toha/toha/v4
```
Check this sample [config.yaml](https://github.com/hugo-toha/hugo-toha.github.io/blob/main/config.yaml) for further reference.
Check this sample [hugo.yaml](https://github.com/hugo-toha/hugo-toha.github.io/blob/main/hugo.yaml) for further reference.
##### 3. Update your module
@ -207,7 +209,7 @@ $ npm install
$ hugo server -w
```
Now, you can make change in the theme and they will be reflected immediately on the running site. If you need to change any configuration, you can do that in the `config.yaml` file inside `exampleSite` folder. If you need to add any content or data, you can create the respective folder inside `exampleSite` directory and add your desired content or data there.
Now, you can make change in the theme and they will be reflected immediately on the running site. If you need to change any configuration, you can do that in the `hugo.yaml` file inside `exampleSite` folder. If you need to add any content or data, you can create the respective folder inside `exampleSite` directory and add your desired content or data there.
#### Running the forked theme against your own site

View file

@ -0,0 +1,9 @@
let theme = localStorage.getItem('theme-scheme') || localStorage.getItem('darkmode:color-scheme') || 'light'
if (theme === 'system') {
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
theme = 'dark'
} else {
theme = 'light'
}
}
document.documentElement.setAttribute('data-theme', theme)

View file

@ -0,0 +1,22 @@
addCopyButtons(navigator.clipboard)
function addCopyButtons(clipboard) {
document.querySelectorAll('pre > code').forEach(function (codeBlock) {
const button = document.createElement('button')
button.title = "Copy"
button.className = 'copy-code-button btn btn-sm'
button.innerHTML = "<i class='fa-regular fa-copy'></i>"
button.addEventListener('click', function () {
clipboard.writeText(codeBlock.innerText)
})
const pre = codeBlock.parentNode
if (pre.parentNode.classList.contains('highlight')) {
const highlight = pre.parentNode
highlight.parentNode.insertBefore(button, highlight)
} else {
pre.parentNode.insertBefore(button, pre)
}
})
}

View file

@ -0,0 +1 @@
import './copyCode'

View file

@ -67,4 +67,4 @@ function setImages(newScheme) {
if (dark !== null) dark.style.display = 'none'
}
}
}
}

View file

@ -10,6 +10,10 @@ if (process.env.FEATURE_DARKMODE === '1') {
import('./darkmode')
}
if (process.env.FEATURE_THEME === '1') {
import('./theme')
}
if (process.env.FEATURE_FLOWCHART === '1') {
import('./flowchart')
}
@ -25,3 +29,7 @@ if (process.env.FEATURE_MATH === '1') {
if (process.env.FEATURE_EMBEDPDF === '1') {
import('./embedpdf')
}
if (process.env.FEATURE_COPYCODEBUTTON === '1') {
import('./copyCode')
}

View file

@ -0,0 +1,88 @@
import * as params from '@params';
const PERSISTENCE_KEY = 'theme-scheme'
const themeOptions = params.theme || {}
const THEME_DARK = typeof themeOptions.dark === 'undefined' ? true : themeOptions.dark;
const THEME_LIGHT = typeof themeOptions.light === 'undefined' ? true : themeOptions.light;
const THEME_DEFAULT = typeof themeOptions.default === 'undefined' ? "system" : themeOptions.default;
window.addEventListener('load', async () => {
const menu = document.getElementById('themeMenu')
const $icon = document.getElementById('navbar-theme-icon-svg')
if (menu == null || $icon == null) return
const btns = menu.getElementsByTagName('a')
const iconMap = Array.from(btns).reduce((map, btn) => {
const $img = btn.getElementsByTagName('img')[0]
map[btn.dataset.scheme] = $img.src
return map
}, {})
function checkScheme(scheme) {
if (THEME_LIGHT === false) return "dark"
if (THEME_DARK === false) return "light"
return scheme
}
function loadScheme() {
return localStorage.getItem(PERSISTENCE_KEY) || loadDefaultScheme()
}
function loadDefaultScheme() {
return THEME_DEFAULT || "system"
}
function saveScheme(scheme) {
localStorage.setItem(PERSISTENCE_KEY, scheme)
}
function getPreferredColorScheme() {
const isDarkMode = window.matchMedia("(prefers-color-scheme: dark)").matches;
return isDarkMode ? "dark" : "light";
}
function setScheme(newScheme) {
let theme = newScheme
if (newScheme === 'system') {
theme = getPreferredColorScheme()
}
// set data-theme attribute on html tag
document.querySelector("html").dataset.theme = theme;
// update icon
$icon.src = iconMap[newScheme]
// save preference to local storage
saveScheme(newScheme)
setImages(theme)
}
const checkedScheme = checkScheme(loadScheme())
setScheme(checkedScheme)
Array.from(menu.getElementsByTagName('a')).forEach((btn) => {
btn.addEventListener('click', () => {
const { scheme } = btn.dataset
setScheme(scheme)
})
})
})
function setImages(newScheme) {
const els = Array.from(document.getElementsByClassName('logo-holder'));
for (const el of els) {
const light = el.querySelector('.light-logo');
const dark = el.querySelector('.dark-logo');
if (newScheme === "dark" && dark !== null) {
if (light !== null) light.style.display = 'none'
dark.style.display = 'inline'
}
else {
if (light !== null) light.style.display = 'inline'
if (dark !== null) dark.style.display = 'none'
}
}
}

View file

@ -7,7 +7,7 @@ window.addEventListener('DOMContentLoaded', () => {
const fuseOptions = {
shouldSort: true,
includeMatches: true,
threshold: 0.0,
threshold: 0.1,
tokenize: true,
location: 0,
distance: 100,

View file

@ -4,4 +4,5 @@ import './sidebar'
import './education'
import './achievements'
import './projects'
import './skills'
import './publications'

View file

@ -54,8 +54,9 @@ document.addEventListener('DOMContentLoaded', function () {
const navMain = document.getElementsByClassName('navbar-collapse')
Array.from(navMain).forEach(function (el) {
el.addEventListener('click', function (e) {
if (e.target.tagName === 'A') {
if (e.target.tagName === 'A' && !e.target.classList.contains("dropdown-toggle")) {
el.classList.add('collapse')
el.classList.remove('show')
}
})
})

View file

@ -0,0 +1,15 @@
import Filterizr from 'filterizr'
document.addEventListener('DOMContentLoaded', () => {
// ================== Skill cards =====================
// setup skill filter buttons
const skillCardHolder = document.getElementById('skill-card-holder')
if (skillCardHolder != null && skillCardHolder.children.length !== 0) {
// eslint-disable-next-line no-new
new Filterizr('.filtr-skills', {
layout: 'sameWidth',
controlsSelector: '.skill-filtr-control'
})
}
})

View file

@ -102,6 +102,40 @@
}
}
.copy-code-button {
float: right;
margin-top: 0.5em;
margin-left: -2.6em;
margin-right: 3em;
background-color: get-light-color('text-color') !important;
color: get-light-color('inverse-text-color') !important;
padding: 0.25rem 0.5rem;
line-height: 1.5;
border-radius: 0.2rem;
border: none;
&:hover,
&:focus {
background-color: get-light-color('accent-color') !important;
color: get-light-color('text-over-accent-color') !important;
@include transition();
}
&:focus {
&::before {
content: 'Copied!';
position: absolute;
padding: 0.3em;
border-radius: 0.2em;
margin-left: -5em;
margin-top: -0.2em;
background-color: get-light-color('accent-color') !important;
color: get-light-color('text-over-accent-color') !important;
@include transition();
}
}
}
html[data-theme='dark'] {
.btn-dark {
background-color: get-dark-color('accent-color') !important;
@ -169,4 +203,15 @@ html[data-theme='dark'] {
background-color: get-dark-color('hover-over-accent-color') !important;
}
}
.copy-code-button {
background-color: get-dark-color('bg-primary') !important;
color: get-dark-color('muted-text-color') !important;
&:hover,
&:focus,
&::before {
background-color: get-dark-color('accent-color') !important;
color: get-dark-color('text-over-accent-color') !important;
}
}
}

View file

@ -9,6 +9,11 @@
box-shadow: $box-shadow;
border: 1px solid get-light-color('bg-primary');
@include transition();
.card-img-top {
transform: scale(1.2);
object-fit: cover;
@include transition();
}
}
.card-head {
@ -17,12 +22,17 @@
overflow: hidden;
}
.card-title {
font-size: large;
}
.card-body {
text-align: justify;
text-align: left;
}
.card-img-top {
object-fit: cover;
-o-object-fit: cover;
object-fit: cover;
@include transition();
}
@ -61,7 +71,8 @@
&:focus {
.card-img-top {
transform: scale(1.2);
object-fit: cover;
-o-object-fit: cover;
object-fit: cover;
@include transition();
}
}

View file

@ -55,4 +55,22 @@ html[data-theme='dark'] {
.company-logo {
max-height: 100%;
width: auto;
}
}
.light-logo {
display: inline;
}
.dark-logo {
display: none;
}
html[data-theme='dark'] {
.light-logo {
display: none;
}
.dark-logo {
display: inline;
}
}

View file

@ -8,7 +8,8 @@ a {
&:hover,
&:focus {
text-decoration: get-light-color('hover-over-accent-color') underline;
-webkit-text-decoration: get-light-color('hover-over-accent-color') underline;
text-decoration: get-light-color('hover-over-accent-color') underline;
color: get-light-color('hover-over-accent-color');
@include transition();
}
@ -66,7 +67,8 @@ html[data-theme='dark'] {
&:hover,
&:focus {
text-decoration: get-dark-color('hover-over-accent-color') underline;
-webkit-text-decoration: get-dark-color('hover-over-accent-color') underline;
text-decoration: get-dark-color('hover-over-accent-color') underline;
color: get-dark-color('hover-over-accent-color');
}
}

View file

@ -96,6 +96,10 @@ html[data-theme='dark'] {
}
}
.gist {
&::-moz-selection{
background: get-dark-color('text-color');
color: get-dark-color('inverse-text-color');
}
&::selection{
background: get-dark-color('text-color');
color: get-dark-color('inverse-text-color');

View file

@ -12,7 +12,7 @@ strong {
p {
color: get-light-color('text-color');
text-align: justify;
text-align: left;
text-justify: inter-word;
}
@ -33,6 +33,10 @@ blockquote {
}
}
.text-justify {
text-align: justify;
}
.text-muted {
color: get-light-color('muted-text-color') !important;
}
@ -72,7 +76,8 @@ html[data-theme='dark'] {
h2,
h3,
h4,
h5 {
h5,
h6 {
color: get-dark-color('heading-color');
}

View file

@ -1,6 +1,6 @@
// in Hugo, Page kind can be either "section" or "page".
// if it is section, then it's a page with a list of items, for example /posts
// if it is page, then it is a single page.
/* in Hugo, Page kind can be either "section" or "page".*/
/* if it is section, then it's a page with a list of items, for example /posts*/
/* if it is page, then it is a single page.*/
body.kind-section,
body.kind-term,
body.kind-page {

View file

@ -53,7 +53,6 @@ body {
ol > ol,
li > ol,
li > ul {
-webkit-padding-start: 1rem;
padding-inline-start: 1rem;
}
}

View file

@ -229,6 +229,11 @@ html[data-theme='dark'] {
border-left: 2px solid get-dark-color('accent-color');
}
}
.custom-section {
.custom-content {
color: get-dark-color('text-color');
}
}
}
}
}

View file

@ -13,7 +13,8 @@
@include transition();
&:hover {
margin-left: 5px;
text-decoration: get-light-color('muted-text-color') underline;
-webkit-text-decoration: get-light-color('muted-text-color') underline;
text-decoration: get-light-color('muted-text-color') underline;
@include transition();
}
}
@ -79,7 +80,8 @@ html[data-theme='dark'] {
a {
color: get-dark-color('muted-text-color');
&:hover {
text-decoration: get-dark-color('muted-text-color') underline;
-webkit-text-decoration: get-dark-color('muted-text-color') underline;
text-decoration: get-dark-color('muted-text-color') underline;
}
}
@ -95,6 +97,10 @@ html[data-theme='dark'] {
background-color: get-dark-color('bg-primary');
&:focus {
background-color: get-dark-color('bg-secondary');
color: get-dark-color('text-color');
}
&::placeholder {
color: get-dark-color('muted-text-color');
}
}

View file

@ -42,7 +42,4 @@
@keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
}

View file

@ -24,6 +24,14 @@
float: right !important;
}
}
a[href] {
text-decoration: underline; /* Underline only when href is present */
}
a:not([href]) {
text-decoration: none; /* No underline when href is absent */
}
}
.card-body {

View file

@ -1,6 +1,6 @@
flags:
styles:
- flag-icon-css/css/flag-icons
- flag-icons/css/flag-icons
videoplayer:
services:

View file

@ -1,10 +1,10 @@
module github.com/hugo-toha/toha/exampleSite
go 1.19
require (
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20240319164719-d8a7e99b594d // indirect
github.com/hugo-toha/toha/v4 v4.4.0 // indirect
)
go 1.21
replace github.com/hugo-toha/toha/v4 => ../
require (
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20241018183051-dd13c36f46b4 // indirect
github.com/hugo-toha/toha/v4 v4.7.0 // indirect
)

View file

@ -1,4 +1,2 @@
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20240319164719-d8a7e99b594d h1:TWNaAG2e1EZDvtl64fjyriR/qc8m7qaKnN13DgKzkFk=
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20240319164719-d8a7e99b594d/go.mod h1:BRsZS1LeIc+eSM2OWSOeXDNeZUNRcTlJtw1bL874AfQ=
github.com/hugo-toha/toha/v4 v4.4.0 h1:RdRpjfsPgE+VXb/m3Rl+1n86pVZTrplsDvtXYK3wNh0=
github.com/hugo-toha/toha/v4 v4.4.0/go.mod h1:p/K34lqlqmhzfPd4cx66od7sjlROBqhMxG30mJz+aKQ=
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20241018183051-dd13c36f46b4 h1:Yc5SJ5NJx1xu3YO2gQZPeADXqhGdJgUGWiDxgEDuUrQ=
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20241018183051-dd13c36f46b4/go.mod h1:3N7k1DSQGy5Zn5IVp5nQ3QJ/VWh5dSxXO6stUS7txrg=

View file

@ -1,4 +1,3 @@
baseURL: http://example.org/
languageCode: en-us
title: Example Site
@ -22,7 +21,7 @@ module:
mounts:
- source: static/files
target: static/files
- source: ./node_modules/flag-icon-css/flags
- source: ./node_modules/flag-icons/flags
target: static/flags
- source: ./node_modules/@fontsource/mulish/files
target: static/files
@ -64,6 +63,12 @@ outputs:
- RSS
- JSON
# Configure custom path for RSS feed. Default is "index.xml"
# Ref: https://gohugo.io/templates/output-formats/
outputFormats:
rss:
baseName: rss # default is index
# Enable global emoji support
enableEmoji: true
@ -93,7 +98,20 @@ params:
# Enable dark theme
darkMode:
# [Deprecated] Enable dark theme
# This is a deprecated setting, but has not been removed to maintain backward compatibility
# If `theme` is set, the `darkMode` setting will be discarded.
# darkMode:
# enable: true
# Configure theme color settings
theme:
enable: true
services:
light: true # enable light theme. default "true"
dark: true # enable dark theme. default "true"
default: system # can be either light, dark or system. default "system"
# Enable and configure portfolio
portfolio:
@ -179,7 +197,11 @@ params:
# scheme: https
# instance: umami.example.com
# id: <your umami site id>
# # Statcounter
# statcounter:
# project: 1234567890
# invisible: 1
# security: deadbeef
# Enable Support
support:
enable: false
@ -274,12 +296,15 @@ params:
plyr:
# options doc: https://github.com/sampotts/plyr#options
# fullscreen: true
# Enables copy code button
copyCodeButton:
enable: true
# Enable reading time support in post cards and in post pages
readingTime:
enable: true
# Provide footer configuration.
footer:
enable: true

File diff suppressed because it is too large Load diff

View file

@ -15,7 +15,7 @@
"eslint-plugin-promise": "github.com/hugo-toha/toha/v4",
"feather-icons": "github.com/hugo-toha/toha/v4",
"filterizr": "github.com/hugo-toha/toha/v4",
"flag-icon-css": "github.com/hugo-toha/toha/v4",
"flag-icons": "github.com/hugo-toha/toha/v4",
"fuse.js": "github.com/hugo-toha/toha/v4",
"highlight.js": "github.com/hugo-toha/toha/v4",
"imagesloaded": "github.com/hugo-toha/toha/v4",
@ -30,11 +30,10 @@
"postcss-cli": "github.com/hugo-toha/toha/v4"
}
},
"dependencies": {},
"devDependencies": {
"@fontsource/mulish": "4.5.13",
"@fortawesome/fontawesome-free": "^6.2.0",
"autoprefixer": "^10.4.13",
"@fortawesome/fontawesome-free": "^6.6.0",
"autoprefixer": "^10.4.20",
"bootstrap": "^5.3.3",
"eslint": "^8.31.0",
"eslint-config-prettier": "^8.6.0",
@ -45,19 +44,19 @@
"eslint-plugin-promise": "^6.1.1",
"feather-icons": "^4.29.1",
"filterizr": "^2.2.4",
"flag-icon-css": "^4.1.7",
"flag-icons": "^7.2.3",
"fuse.js": "^6.6.2",
"highlight.js": "^11.6.0",
"imagesloaded": "^5.0.0",
"include-media": "^1.4.10",
"ityped": "^1.0.3",
"katex": "^0.16.10",
"katex": "^0.16.11",
"mark.js": "^8.11.1",
"mermaid": "^9.2.1",
"mermaid": "^11.6.0",
"plyr": "^3.7.2",
"popper.js": "^1.16.1",
"postcss": "^8.4.21",
"postcss-cli": "^8.3.1"
"postcss": "^8.4.41",
"postcss-cli": "^11.0.0"
},
"name": "exampleSite",
"version": "0.1.0"

2
go.mod
View file

@ -1,3 +1,3 @@
module github.com/hugo-toha/toha/v4
go 1.19
go 1.21

2
go.sum Normal file
View file

@ -0,0 +1,2 @@
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20240730212302-83b19f7bd3b7 h1:RRonNzaf6/Ou9PqfXeKiRywkd+9KY7SVgfGBQXqXshM=
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20240730212302-83b19f7bd3b7/go.mod h1:yWw1t3trnfzv4t1lA9zh5pSsI0+kqqyg58ir8/kt6zk=

View file

@ -1,6 +1,6 @@
module:
hugoVersion:
min: "0.118.0"
min: "0.146.0"
extended: true
mounts:
- source: content
@ -17,7 +17,7 @@ module:
target: i18n
- source: archetypes
target: archetypes
- source: ../../node_modules/flag-icon-css/flags
- source: ../../node_modules/flag-icons/flags
target: static/flags
- source: ../../node_modules/@fontsource/mulish/files
target: static/files

130
i18n/az.toml Normal file
View file

@ -0,0 +1,130 @@
# More documentation here: https://github.com/nicksnyder/go-i18n
[home]
other = "Əsas Səhifə"
[posts]
other = "Yazılar"
[toc_heading]
other = "Məzmun Cədvəli"
[tags]
other = "Etiketlər"
[categories]
other = "Kateqoriyalar"
[at]
other = ","
[resume]
other = "CV"
[navigation]
other = "Menyu"
[contact_me]
other = "Əlaqə:"
[email]
other = "E-Poçt"
[phone]
other = "Telefon"
[newsletter_text]
other = "Yeni məzmunlardan xəbərdar olmaq üçün E-Poçt ünvanınızı daxil edin."
[newsletter_input_placeholder]
other = "E-Poçt ünvanını daxil edin."
[newsletter_warning]
other = "E-Poçt ünvanınızı daxil etsəniz, bu veb saytın xəbər bülletenini almağı qəbul etmiş olursunuz."
[submit]
other = "Təsdiqlə"
[hugoAttributionText]
other = ""
[prev]
other = "Əvvəlki"
[next]
other = "Sonraki"
[share_on]
other = "Paylaş"
[improve_this_page]
other = "Bu səhifəyə töhfə verin"
[out_of]
other = "/"
[publications]
other = "Akademik Nəşrlər"
[taken_courses]
other = "Keçirilmiş Kurslar"
[course_name]
other = "Kursun Adı"
[total_credit]
other = "Ümumi Kredit"
[obtained_credit]
other = "Qazandırılmış Kredit"
[extracurricular_activities]
other = "Kursdankənar Fəaliyyətlər"
[show_more]
other = "Daha Çox Göstər"
[show_less]
other = "Gizlət"
[responsibilities]
other = "Məsuliyyətlər:"
[present]
other = "Hal-hazırda"
[comments_javascript]
other = "Görmək üçün xahiş edirəm JavaScript-i aktiv edin"
[comments_by]
other = "Şərh edən"
[read]
other = "Oxu"
[project_star]
other = "Ulduz"
[project_details]
other = "Təfərrüatlar"
[err_404]
other = "Axtardığınız səhifə tapılmadı."
[more]
other = "Daha Çox"
[view_certificate]
other = "Sertifikatı Görüntülə"
[notes]
other = "Qeydlər"
[disclaimer_text]
other = "Məsuliyyət İnkarı"
[search]
other = "Axtar"
[minute]
one = "dəqiqə"
other = "dəqiqə"

View file

@ -96,7 +96,7 @@ other = "heute"
other = "Bitte aktiviere JavaScript um die Kommentare zu sehen"
[comments_by]
other = "Kommentare Unterstützt von"
other = "Kommentare unterstützt von"
[read]
other = "Lesen"
@ -124,3 +124,7 @@ other = "Haftungshinweis"
[search]
other = "Suche"
[minute]
one = "Minute"
other = "Minuten"

View file

@ -124,3 +124,7 @@ other = "免责声明"
[search]
other = "搜索"
[minute]
one = "分钟"
other = "分钟"

View file

@ -9,10 +9,10 @@ other = "文章"
other = "目錄"
[tags]
other = "标签"
other = "標籤"
[categories]
other = "类别"
other = "類別"
[at]
other = "at"
@ -42,7 +42,7 @@ other = "在此輸入您的電子郵件地址"
other = "輸入您的電子郵件地址,即表示您同意接受本網站的最新消息"
[submit]
other = "提交"
other = "送出"
[hugoAttributionText]
other = "Powered by"
@ -63,10 +63,10 @@ other = "改善此頁面"
other = "/"
[publications]
other = "出版"
other = "著作"
[taken_courses]
other = "修習課程"
other = "修課內容"
[course_name]
other = "課程名稱"
@ -123,4 +123,8 @@ other = "筆記"
other = "免責聲明"
[search]
other = "搜索"
other = "搜尋"
[minute]
one = "分鐘"
other = "分鐘"

View file

@ -4,24 +4,17 @@
<title>{{ .Page.Title }}</title>
<!------ ADD COMMON HEADERS -------->
{{- partial "header.html" . -}}
{{ template "_internal/opengraph.html" . }}
{{ template "_internal/twitter_cards.html" . }}
{{- partial "opengraph.html" . -}}
<!------ ADD PAGE SPECIFIC HEADERS ------->
{{ block "header" . }} {{ end }}
<!--================= add analytics if enabled =========================-->
{{- partial "analytics.html" . -}}
<script>
theme = localStorage.getItem('darkmode:color-scheme') || 'system';
if (theme == 'system') {
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
theme = 'dark';
} else {
theme = 'light';
}
}
document.documentElement.setAttribute('data-theme', theme);
{{ with resources.Get "scripts/core/theme-scheme.js" | fingerprint }}
<script integrity="{{.Data.Integrity}}">
{{ .Content | safeJS }}
</script>
{{ end }}
</head>
<body class="type-{{ .Page.Type }} kind-{{ .Page.Kind }}" data-bs-spy="scroll" data-bs-target="#TableOfContents" data-bs-offset="80">

View file

@ -43,7 +43,7 @@
{{ end }}
</div>
<div class="paginator">
{{ template "_internal/pagination.html" . }}
{{ partial "pagination.html" . }}
</div>
</div>
</section>

View file

@ -1,5 +1,8 @@
{{ define "header" }}
<meta name="description" content="{{ if .Description }}{{ .Description }}{{ else }}{{ .Title }}{{ end }}" />
{{ with .Params.relcanonical }}
<link rel="canonical" href="{{ . | relLangURL }}" itemprop="url" />
{{ end }}
{{ end }}
{{ define "navbar" }}
@ -45,7 +48,7 @@
{{ else }}
<div style="margin-bottom: 80px;"></div>
{{ end }}
<div class="title">
<h1>{{ .Page.Title }}</h1>
</div>

View file

@ -44,7 +44,7 @@
{{ end }}
</div>
<div class="paginator">
{{ template "_internal/pagination.html" . }}
{{ partial "pagination.html" . }}
</div>
</div>
</section>

View file

@ -17,17 +17,11 @@
<!--================= add analytics if enabled =========================-->
{{- partial "analytics.html" . -}}
<script>
theme = localStorage.getItem('darkmode:color-scheme') || 'system';
if (theme == 'system') {
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
theme = 'dark';
} else {
theme = 'light';
}
}
document.documentElement.setAttribute('data-theme', theme);
{{ with resources.Get "scripts/core/theme-scheme.js" | fingerprint }}
<script integrity="{{.Data.Integrity}}">
{{ .Content | safeJS }}
</script>
{{ end }}
</head>
<body data-bs-spy="scroll" data-bs-target="#top-navbar" data-bs-offset="100">

View file

@ -41,7 +41,7 @@
{{ end }}
</div>
<div class="paginator">
{{ template "_internal/pagination.html" . }}
{{ partial "pagination.html" . }}
</div>
</div>
</section>

View file

@ -4,9 +4,7 @@
{{ with .services }}
<!-- Google Analytics -->
{{ with .google }}
{{ $privacyConfig:= dict (slice "Site" "Config" "Privacy" "GoogleAnalytics") $.Site.Config.Privacy.GoogleAnalytics }}
{{ $analyticsConfig := dict (slice "Site" "Config" "Services" "GoogleAnalytics" "ID") .id }}
{{ template "_internal/google_analytics.html" (merge $privacyConfig $analyticsConfig) }}
{{ partial "google_analytics.html" . }}
{{ end }}
<!-- Counter.dev -->
@ -57,11 +55,30 @@
<script defer src='{{ or .scheme "https" }}://{{ or .instance "analytics.eu.umami.is" }}/script.js' data-website-id="{{ .id }}"></script>
<!-- End Umami analytics -->
{{end}}
{{ with .statcounter }}
<!-- Statcounter analytics -->
<script type="text/javascript" src="https://www.statcounter.com/counter/counter.js" async></script>
<script type="text/javascript">
var sc_project = {{ .project }};
var sc_invisible = {{ .invisible }};
var sc_security = "{{ .security }}";
var scJsHost = (("https:" == document.location.protocol) ?
"https://www.statcounter.com/js/" : "https://www.statcounter.com/js/");
</script>
<noscript>
<div class="statcounter"><a title="web counter" href="https://statcounter.com/" target="_blank"><img
class="statcounter" src="https://c.statcounter.com/{{ .project }}/0/{{ .security }}/{{ .invisible }}/"
alt="web counter" referrerPolicy="no-referrer-when-downgrade"></a></div>
<!-- End of Statcounter Code -->
</noscript>
<!-- End Statcounter analytics -->
{{ end }}
{{ end }}
{{ end }}
{{ end }}
<!-- Keep backwards compatibility and consistency with HUGO defaults -->
{{ if .Site.Config.Services.GoogleAnalytics.ID }}
{{ template "_internal/google_analytics.html" . }}
{{ partial "google_analytics.html" . }}
{{ end }}

View file

@ -8,7 +8,7 @@
<div class="card-body">
<a href="{{ .RelPermalink | relLangURL }}" class="post-card-link">
<h5 class="card-title">{{ .Title }}</h5>
<p class="card-text post-summary">{{ .Summary }}</p>
<p class="card-text post-summary">{{ .Summary | plainify }}</p>
</a>
{{ if and site.Params.features.tags.enable site.Params.features.tags.on_card }}
{{ partial "misc/tags.html" .Params.tags }}

View file

@ -4,34 +4,48 @@
>
<div class="card mt-1">
<div class="card">
<a class="card-header" href="{{ if .repo }}{{ .repo }}{{ else if .url }}{{ .url }}{{ else }}javascript:void(0){{ end }}" {{ if or .repo .url }}target="_blank" rel="noopener"{{ end }}>
<div>
<div class="d-flex">
{{ if .logo }}
{{ if eq (len (findRE ".*/.*" .logo) ) 0 }}
<i style="padding-right: 0.25em" class="{{.logo}} h4"></i>
{{ else }}
{{ $logoImage:= resources.Get .logo}}
{{ if $logoImage }}
{{/* 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 }}" />
{{ end }}
{{ end }}
<a href="{{ if .repo }}{{ .repo }}{{ else if .url }}{{ .url }}{{ else }}javascript:void(0){{ end }}" {{ if or .repo .url }}target="_blank" rel="noopener"{{ end }}>
{{ if .image }}
<div class="card-head">
{{ $imageImage:= resources.Get .image}}
{{ if $imageImage }}
{{/* svg don't support "Fit" operation */}}
{{ if ne $imageImage.MediaType.SubType "svg" }}
{{ $imageImage = $imageImage.Fit "1000x1000" }}
{{ end }}
<h5 class="card-title mb-0">{{ .name }}</h5>
</div>
<div class="sub-title">
<span>{{ .role }}</span>
<span>{{ .timeline }}</span>
<img class="card-img-top" src="{{ $imageImage.RelPermalink }}" alt="{{ .name }}" />
{{ end }}
</div>
{{ end }}
<div class="card-header">
<div>
<div class="d-flex">
{{ if .logo }}
{{ if eq (len (findRE ".*/.*" .logo) ) 0 }}
<i style="padding-right: 0.25em" class="{{.logo}} h4"></i>
{{ else }}
{{ $logoImage:= resources.Get .logo}}
{{ if $logoImage }}
{{/* 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 }}" />
{{ end }}
{{ end }}
{{ end }}
<h5 class="card-title mb-0">{{ .name }}</h5>
</div>
<div class="sub-title">
<span>{{ .role }}</span>
<span>{{ .timeline }}</span>
</div>
</div>
</div>
</a>

View file

@ -11,12 +11,22 @@
<div class="card-header">
<h5 class="card-title mb-0">{{ .title }}</h5>
<div class="sub-title">
<span><a class="" href="{{.publishedIn.url}}">{{ .publishedIn.name }}</a></span>
<span>
{{ if .publishedIn.url }}
<a class="" href="{{.publishedIn.url}}">{{ .publishedIn.name }}</a>
{{ else }}
<a class="">{{ .publishedIn.name }}</a>
{{ end }}
</span>
<span class="ms-2">{{ .publishedIn.date }}</span>
</div>
<div class="authors">
{{ range $index,$author:= .authors }}
{{if .url}}
<span class="me-2"><a class="" href="{{.url}}">{{ .name }}</a></span>
{{ else }}
<span class="me-2"><a class="">{{ .name }}</a></span>
{{ end }}
{{ end }}
</div>
</div>
@ -31,9 +41,11 @@
</span>
{{ end }}
</div>
{{ if .paper.url }}
<div class="details-btn">
<a class="btn btn-outline-info ms-1 ps-2 mb-2" href="{{ .paper.url }}" target="_blank" rel="noopener" role="button">{{ i18n "project_details"}}</a>
</div>
{{ end }}
</div>
</div>
</div>

View file

@ -1,4 +1,6 @@
<div class="col-xs-12 col-sm-6 col-lg-4 pt-2">
<div class="col-xs-12 col-sm-6 col-lg-4 pt-2 filtr-item"
data-category='all, {{ with .categories }}{{ delimit . ","}}{{ end }}'
>
<a class="text-decoration-none" {{ if .url }}href="{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"{{ end }}>
<div class="card">
<div class="card-head d-flex">
@ -18,7 +20,7 @@
<h5 class="card-title">{{ .name }}</h5>
{{ end }}
</div>
<div class="card-body">
<div class="card-body text-justify pt-1 pb-1">
<p class="card-text">{{ .summary | markdownify }}</p>
</div>
</div>

View file

@ -106,7 +106,9 @@
<span><i class="fas fa-envelope"></i></span> <span>{{ $value }}</span>
</a></li>
{{ else if (eq $key "phone") }}
<li><span><i class="fas fa-phone-alt"></i></span> <span>{{ $value }}</span></li>
<li><a href={{ printf "tel:%s" $value | safeURL }} target="_blank" rel="noopener">
<span><i class="fas fa-phone-alt"></i></span> <span>{{ $value }}</span>
</a></li>
{{ else if (eq $key "linkedin") }}
<li><a href={{ printf "https://www.linkedin.com/in/%s" $value }} target="_blank" rel="noopener">
<span><i class="fab fa-linkedin"></i></span> <span>{{ $author.name }}</span>

View file

@ -0,0 +1,22 @@
{{ if site.Params.features.analytics.enabled }}
{{- with site.Params.features.analytics.services.google.id }}
{{- if strings.HasPrefix (lower .) "ua-" }}
{{- warnf "Google Analytics 4 (GA4) replaced Google Universal Analytics (UA) effective 1 July 2023. See https://support.google.com/analytics/answer/11583528. Create a GA4 property and data stream, then replace the Google Analytics ID in your site configuration with the new value." }}
{{- else }}
<script async src="https://www.googletagmanager.com/gtag/js?id={{ . }}"></script>
<script>
var doNotTrack = false;
if ({{ site.Params.features.analytics.services.google.respectDoNotTrack }}) {
var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
var doNotTrack = (dnt == "1" || dnt == "yes");
}
if (!doNotTrack) {
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ . }}');
}
</script>
{{- end }}
{{- end }}
{{- end -}}

View file

@ -18,3 +18,7 @@
<link rel="icon" type="image/png" href="{{ $favicon }}" />
{{end}}
{{ with .OutputFormats.Get "rss" -}}
{{ printf `<link rel=%q type=%q href=%q title=%q>` .Rel .MediaType.Type .Permalink site.Title | safeHTML }}
{{ end }}

View file

@ -69,15 +69,26 @@ params:
# id: foo
# name: bar
# The `darkMode` feature
darkmode:
# [Deprecated] The `darkMode` feature
# This is a deprecated setting, but has not been removed to maintain backward compatibility
# If `theme` is set, the `darkMode` setting will be discarded.
darkMode:
enable: true
# The `theme` feature
theme:
enable: true
services:
light: true # enable light theme. default "true"
dark: true # enable dark theme. default "true"
default: system # can be either light, dark or system. default "system"
This helper will convert the above config into the following env vars:
* `FEATURE_ANALYTICS=1`
* `FEATURE_ANALYTICS_GOOGLE=1`
* `FEATURE_DARKMODE=1`
* `FEATURE_THEME=1`
In JS, you can use it like this:

View file

@ -7,5 +7,5 @@
{{- $scss := $template | resources.ExecuteAsTemplate "styles/application.scss" . -}}
{{/* Bundle application.scss */}}
{{- $bundle := $scss | resources.ToCSS $options | fingerprint -}}
{{- $bundle := $scss | css.Sass $options | fingerprint -}}
<link rel="stylesheet" href="{{ $bundle.RelPermalink }}" integrity="{{ $bundle.Data.Integrity }}" />

View file

@ -6,16 +6,16 @@
<a class="nav-link dropdown-toggle" href="#" id="languageSelector" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{ if ne site.Params.features.flags.enable false }}
{{ $countryCode := partial "helpers/country-code.html" . }}
<span class="flag-icon flag-icon-{{$countryCode}}"></span>
<span class="fi fi-{{$countryCode}}"></span>
{{ end }}
{{ site.Language.LanguageName }}
</a>
<div class="dropdown-menu" aria-labelledby="languageSelector">
{{ range site.Home.AllTranslations }}
<a class="dropdown-item nav-link languages-item" href="{{ path.Join "/" (cond (eq .Language.Lang $.Sites.First.Language.Lang) "" .Language.Lang) $pageURL }}">
<a class="dropdown-item nav-link languages-item" href="{{ path.Join "/" (cond (eq .Language.Lang $.Sites.Default.Language.Lang) "" .Language.Lang) $pageURL }}">
{{ if ne site.Params.features.flags.enable false }}
{{ $countryCode := partial "helpers/country-code.html" . }}
<span class="flag-icon flag-icon-{{$countryCode}}"></span>
<span class="fi fi-{{$countryCode}}"></span>
{{ end }}
{{ .Language.LanguageName }}
</a>

View file

@ -1,6 +1,8 @@
{{/* variables for enabling/disabling various features */}}
{{ $blogEnabled := site.Params.features.blog.enable | default false }}
{{ $blogTitle := site.Params.features.blog.title | default (i18n "posts") }}
{{ $notesEnabled := site.Params.features.notes.enable | default false }}
{{ $notesTitle := site.Params.features.notes.title | default (i18n "notes") }}
{{ $maxVisibleSections := site.Params.topNavbar.maxVisibleSections | default 5 }}
{{/* keep backward compatibility for blog post */}}
@ -11,6 +13,7 @@
{{/* by default, don't use any logo */}}
{{ $mainLogo := "" }}
{{ $invertedLogo := "" }}
{{ $darkLogo := "" }}
{{/* if custom logo has been provided, use them */}}
{{ if site.Params.logo.main }}
@ -19,11 +22,14 @@
{{ if site.Params.logo.inverted }}
{{ $invertedLogo = site.Params.logo.inverted }}
{{ end }}
{{ if site.Params.logo.dark }}
{{ $darkLogo = site.Params.logo.dark }}
{{ end }}
{{/* resize the logos. don't resize svg because it is not supported */}}
{{ if $mainLogo }}
{{ $mainLogo = resources.Get $mainLogo}}
{{ if and $mainLogo (ne $mainLogo.MediaType.SubType "svg") }}
{{ if and $mainLogo (not (or (eq $mainLogo.MediaType.SubType "svg") (eq $mainLogo.MediaType.SubType "gif"))) }}
{{ $mainLogo = $mainLogo.Resize "42x" }}
{{ end }}
{{ $mainLogo = $mainLogo.RelPermalink}}
@ -31,12 +37,20 @@
{{ if $invertedLogo }}
{{ $invertedLogo = resources.Get $invertedLogo}}
{{ if and $invertedLogo (ne $invertedLogo.MediaType.SubType "svg")}}
{{ if and $invertedLogo (not (or (eq $invertedLogo.MediaType.SubType "svg") (eq $invertedLogo.MediaType.SubType "gif"))) }}
{{ $invertedLogo = $invertedLogo.Resize "42x" }}
{{ end }}
{{ $invertedLogo = $invertedLogo.RelPermalink}}
{{ end }}
{{ if $darkLogo }}
{{ $darkLogo = resources.Get $darkLogo}}
{{ if and $darkLogo (not (or (eq $darkLogo.MediaType.SubType "svg") (eq $darkLogo.MediaType.SubType "gif"))) }}
{{ $darkLogo = $darkLogo.Resize "42x" }}
{{ end }}
{{ $darkLogo = $darkLogo.RelPermalink}}
{{ end }}
{{ $logo := $mainLogo }}
{{ if .IsHome }}
{{ $logo = $invertedLogo }}
@ -121,12 +135,12 @@
{{ end }}
{{ if $blogEnabled }}
<li class="nav-item">
<a class="nav-link" id="blog-link" href="{{ path.Join (site.BaseURL | relLangURL) "posts" }}">{{ i18n "posts" }}</a>
<a class="nav-link" id="blog-link" href="{{ path.Join (site.BaseURL | relLangURL) "posts" }}">{{ $blogTitle }}</a>
</li>
{{ end }}
{{ if $notesEnabled }}
<li class="nav-item">
<a class="nav-link" id="note-link" href="{{ path.Join (site.BaseURL | relLangURL) "notes" }}">{{ i18n "notes" }}</a>
<a class="nav-link" id="note-link" href="{{ path.Join (site.BaseURL | relLangURL) "notes" }}">{{ $notesTitle }}</a>
</li>
{{ end }}
{{ range $customMenus }}
@ -139,7 +153,7 @@
{{ if .IsTranslated }}
{{ partial "navigators/lang-selector.html" . }}
{{ end }}
{{ if site.Params.features.darkMode.enable }}
{{ if or site.Params.features.darkMode.enable site.Params.features.theme.enable }}
{{ partial "navigators/theme-selector.html" . }}
{{ end }}
</ul>
@ -152,4 +166,7 @@
{{ if $invertedLogo }}
<img src="{{ $invertedLogo }}" class="d-none" id="inverted-logo" alt="Inverted Logo">
{{ end }}
{{ if $darkLogo }}
<img src="{{ $darkLogo }}" class="d-none" id="dark-logo" alt="Dark Logo">
{{ end }}
</nav>

View file

@ -1,17 +1,31 @@
{{/* variables for enabling/disabling various features */}}
{{ $darkEnabled := true }}
{{ $lightEnabled := true }}
{{ if site.Params.features.theme.enable }}
{{ $darkEnabled = site.Params.features.theme.services.dark | default true }}
{{ $lightEnabled = site.Params.features.theme.services.light | default true }}
{{ end }}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="themeSelector" role="button"
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img id="navbar-theme-icon-svg" class="theme-icon" src="{{ "icons/moon-svgrepo-com.svg" | relURL }}" width=20 alt="Dark Theme">
</a>
<div id="themeMenu" class="dropdown-menu dropdown-menu-icons-only" aria-labelledby="themeSelector">
{{ if $lightEnabled }}
<a class="dropdown-item nav-link" href="#" data-scheme="light">
<img class="theme-icon" src="{{ "icons/sun-svgrepo-com.svg" | relURL }}" width=20 alt="Light Theme">
</a>
{{ end }}
{{ if $darkEnabled }}
<a class="dropdown-item nav-link" href="#" data-scheme="dark">
<img class="theme-icon" src="{{ "icons/moon-svgrepo-com.svg" | relURL }}" width=20 alt="Dark Theme">
</a>
{{ end }}
{{ if and $lightEnabled $darkEnabled }}
<a class="dropdown-item nav-link" href="#" data-scheme="system">
<img class="theme-icon" src="{{ "icons/computer-svgrepo-com.svg" | relURL }}" width=20 alt="System Theme">
</a>
{{ end }}
</div>
</li>

View file

@ -10,5 +10,3 @@
<meta property="og:description" content="{{ $description }}"/>
<meta property="og:image" content="{{ $image | relURL }}">
<meta property="og:url" content="{{ $url }}">
{{ template "_internal/twitter_cards.html" . }}

View file

@ -20,6 +20,10 @@
{{ $backgroundImage = site.Params.background }}
{{ end }}
{{ $darkBackgroundImage:= $backgroundImage }}
{{ if site.Params.darkBackground }}
{{ $darkBackgroundImage = site.Params.darkBackground }}
{{ end }}
{{ $authorImage:= "/images/default-avatar.png" }}
{{ if $author.image }}
@ -73,6 +77,41 @@
{{ $large := $src}}
{{ end }}
{{/* get file that matches the filename as specified as src="" in shortcode */}}
{{ $darkSrc := resources.Get $darkBackgroundImage }}
{{/* resize the src image to the given sizes */}}
{{ $darkTiny := $darkSrc.Resize $tinyw }}
{{ $darkSmall := $darkSrc.Resize $smallw }}
{{ $darkMedium := $darkSrc.Resize $mediumw }}
{{ $darkLarge := $darkSrc.Resize $largew }}
{{/* only use images smaller than or equal to the src (original) image size, as Hugo will upscale small images */}}
{{/* set the sizes attribute to (min-width: 35em) 1200px, 100vw unless overridden in shortcode */}}
{{ if lt $darkSrc.Width "500" }}
{{ $darkTiny := $src}}
{{ $darkSmall := $src}}
{{ $darkMedium := $src}}
{{ $darkLarge := $src}}
{{ end }}
{{ if lt $src.Width "800" }}
{{ $darkSmall := $src}}
{{ $darkMedium := $src}}
{{ $darkLarge := $src}}
{{ end }}
{{ if lt $src.Width "1200" }}
{{ $darkMedium := $src}}
{{ $darkLarge := $src}}
{{ end }}
{{ if lt $src.Width "1500" }}
{{ $darkLarge := $src}}
{{ end }}
<div class="container-fluid home" id="home">
<style>
/* 0 to 299 */
@ -100,6 +139,34 @@
background-image: url('{{ $src.RelPermalink }}');
}
}
html[data-theme='dark'] {
/* 0 to 299 */
#homePageBackgroundImageDivStyled {
background-image: url('{{ $darkTiny.RelPermalink }}');
}
/* 300 to X */
@media (min-width: 500px) and (max-width: 800px) { /* or 301 if you want really the same as previously. */
#homePageBackgroundImageDivStyled {
background-image: url('{{ $darkSmall.RelPermalink }}');
}
}
@media (min-width: 801px) and (max-width: 1200px) { /* or 301 if you want really the same as previously. */
#homePageBackgroundImageDivStyled {
background-image: url('{{ $darkMedium.RelPermalink }}');
}
}
@media (min-width: 1201px) and (max-width: 1500px) { /* or 301 if you want really the same as previously. */
#homePageBackgroundImageDivStyled {
background-image: url('{{ $darkLarge.RelPermalink }}');
}
}
@media (min-width: 1501px) { /* or 301 if you want really the same as previously. */
#homePageBackgroundImageDivStyled {
background-image: url('{{ $darkSrc.RelPermalink }}');
}
}
}
</style>
<span class="on-the-fly-behavior"></span>
<div

View file

@ -3,7 +3,7 @@
{{ $sectionID = .section.id }}
{{ end }}
<div class="container-fluid anchor pb-5 skills-section">
<div class="container-fluid anchor pb-5 skills-section" id="{{ $sectionID }}">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
@ -11,11 +11,25 @@
<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">
{{ range .skills }}
{{ partial "cards/skill.html" . }}
{{ if .section.filter }}
<div class="container ms-auto text-center">
<div class="btn-group flex-wrap" role="group" id="skill-filter-buttons">
{{ range .buttons }}
<button type="button" class="btn btn-dark skill-filtr-control" data-filter="{{ .filter }}">
{{ .name }}
</button>
{{ end }}
</div>
</div>
<div class="container d-flex-block filtr-skills">
<div class="row" id="skill-card-holder" style="margin-left:unset">
{{ else }}
<div class="container d-flex-block">
<div class="row" id="primary-skills">
{{ end }}
{{ range .skills }}
{{ partial "cards/skill.html" . }}
{{ end }}
</div>
</div>
</div>

View file

@ -0,0 +1 @@
<script src="https://gist.github.com/{{ index .Params 0 }}/{{ index .Params 1 }}.js{{if len .Params | eq 3 }}?file={{ index .Params 2 }}{{end}}"></script>

View file

@ -9,5 +9,5 @@
{{ end }}
<div class="mermaid" align="{{ $alignment }}" style="background-color: {{ $background }}; border-radius: 5px;">
{{ safeHTML .Inner }}
{{- safeHTML .Inner -}}
</div>

View file

@ -44,7 +44,7 @@
{{ end }}
</div>
<div class="paginator">
{{ template "_internal/pagination.html" . }}
{{ partial "pagination.html" . }}
</div>
</div>
</section>

View file

@ -5,34 +5,34 @@ publish = "exampleSite/public"
[context.production.environment]
HUGO_ENABLEGITINFO = "true"
HUGO_ENV = "production"
HUGO_VERSION = "0.124.0"
NODE_VERSION = "v20.11.1"
NPM_VERSION = "10.5.0"
HUGO_VERSION = "0.146.4"
NODE_VERSION = "v23.1.0"
NPM_VERSION = "10.9.2"
[context.split1]
command = "cd exampleSite && hugo mod tidy && hugo mod npm pack && npm install && hugo --gc --minify --enableGitInfo"
[context.split1.environment]
HUGO_ENV = "production"
HUGO_VERSION = "0.124.0"
NODE_VERSION = "v20.11.1"
NPM_VERSION = "10.5.0"
HUGO_VERSION = "0.146.4"
NODE_VERSION = "v23.1.0"
NPM_VERSION = "10.9.2"
[context.deploy-preview]
command = "cd exampleSite && hugo mod tidy && hugo mod npm pack && npm install && hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
[context.deploy-preview.environment]
HUGO_VERSION = "0.124.0"
NODE_VERSION = "v20.11.1"
NPM_VERSION = "10.5.0"
HUGO_VERSION = "0.146.4"
NODE_VERSION = "v23.1.0"
NPM_VERSION = "10.9.2"
[context.branch-deploy]
command = "cd exampleSite && hugo mod tidy && hugo mod npm pack && npm install && hugo --gc --minify -b $DEPLOY_PRIME_URL"
[context.branch-deploy.environment]
HUGO_VERSION = "0.124.0"
NODE_VERSION = "v20.11.1"
NPM_VERSION = "10.5.0"
HUGO_VERSION = "0.146.4"
NODE_VERSION = "v23.1.0"
NPM_VERSION = "10.9.2"
[context.next.environment]
HUGO_ENABLEGITINFO = "true"

2861
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -19,7 +19,7 @@
},
"homepage": "https://github.com/hugo-toha/toha#readme",
"devDependencies": {
"autoprefixer": "^10.4.13",
"autoprefixer": "^10.4.20",
"eslint": "^8.31.0",
"eslint-config-prettier": "^8.6.0",
"eslint-config-standard": "^17.0.0",
@ -27,18 +27,18 @@
"eslint-plugin-n": "^15.6.0",
"eslint-plugin-no-jquery": "^2.7.0",
"eslint-plugin-promise": "^6.1.1",
"postcss": "^8.4.31",
"postcss-cli": "^8.3.1",
"postcss": "^8.4.41",
"postcss-cli": "^11.0.0",
"@fontsource/mulish": "4.5.13",
"@fortawesome/fontawesome-free": "^6.2.0",
"@fortawesome/fontawesome-free": "^6.6.0",
"bootstrap": "^5.3.3",
"filterizr": "^2.2.4",
"flag-icon-css": "^4.1.7",
"flag-icons": "^7.2.3",
"fuse.js": "^6.6.2",
"highlight.js": "^11.6.0",
"imagesloaded": "^5.0.0",
"ityped": "^1.0.3",
"katex": "^0.16.10",
"katex": "^0.16.11",
"mark.js": "^8.11.1",
"mermaid": "^9.2.1",
"plyr": "^3.7.2",

View file

@ -19,7 +19,7 @@
"eslint-plugin-promise": "project",
"feather-icons": "project",
"filterizr": "project",
"flag-icon-css": "project",
"flag-icons": "project",
"fuse.js": "project",
"highlight.js": "project",
"imagesloaded": "project",
@ -38,8 +38,8 @@
"description": "A [Hugo](https://gohugo.io/) theme for a personal portfolio with minimalist design and responsiveness.",
"devDependencies": {
"@fontsource/mulish": "4.5.13",
"@fortawesome/fontawesome-free": "^6.2.0",
"autoprefixer": "^10.4.13",
"@fortawesome/fontawesome-free": "^6.6.0",
"autoprefixer": "^10.4.20",
"bootstrap": "^5.3.3",
"eslint": "^8.31.0",
"eslint-config-prettier": "^8.6.0",
@ -50,19 +50,19 @@
"eslint-plugin-promise": "^6.1.1",
"feather-icons": "^4.29.1",
"filterizr": "^2.2.4",
"flag-icon-css": "^4.1.7",
"flag-icons": "^7.2.3",
"fuse.js": "^6.6.2",
"highlight.js": "^11.6.0",
"imagesloaded": "^5.0.0",
"include-media": "^1.4.10",
"ityped": "^1.0.3",
"katex": "^0.16.10",
"katex": "^0.16.21",
"mark.js": "^8.11.1",
"mermaid": "^9.2.1",
"mermaid": "^11.6.0",
"plyr": "^3.7.2",
"popper.js": "^1.16.1",
"postcss": "^8.4.31",
"postcss-cli": "^8.3.1"
"postcss": "^8.4.41",
"postcss-cli": "^11.0.0"
},
"homepage": "https://github.com/hugo-toha/toha#readme",
"license": "MIT",

View file

@ -44,4 +44,4 @@ features = [
[module]
[module.hugoVersion]
extended = true
min = "0.118.0"
min = "0.146.0"