102 Commits

Author SHA1 Message Date
Andreas Deininger a69388d9b8 Fix deprecation warning emitted by hugo (#904)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-03-19 22:26:49 +06:00
dependabot[bot] 600c50c71c Bump actions/checkout from 4.1.1 to 4.1.2 (#905)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.1 to 4.1.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.1.1...v4.1.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-03-12 11:25:06 +00:00
Bernat Borràs Civil 36e3e4c09c Add dark logos (#903)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-03-10 16:02:51 +06:00
Bernat Borràs Civil 803821d7e8 Fixes posts in search results (#900) 2024-02-25 15:20:00 +06:00
Bernat Borràs Civil 1ec4cd2688 Add tags in post cards from search results (#895)
* Add tags in post cards from search results

* Use on_card parameter to decide to show the cards or not

* Fix search cards height

* Minor fix

* Fix null tags

* Fix CSS not applied properly in search page

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

---------

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-02-23 23:37:35 +06:00
Bernat Borràs Civil 9f5a44e24e Fix logos (#898) 2024-02-19 15:11:18 +06:00
Bernat Borràs Civil 32e95a572f Update theme.toml for hugoThemesSiteBuilder (#896)
* Update theme.toml

* Add min hugo version
2024-02-16 20:34:13 +06:00
Bernat Borràs Civil b8bee52c7c Fix hovering tags in posts (#894) 2024-02-14 02:01:20 +06:00
Bernat Borràs Civil 35bca71987 Add spacing between project tags (#892)
* Add spacing between project tags

* Fix
2024-02-13 01:35:55 +06:00
Bernat Borràs Civil cbdb07dbf1 Add custom subsections in education (#888)
* Add custom subsections in education

* Apply requested changes
2024-02-12 23:24:21 +06:00
Bernat Borràs Civil 970656789c Fix anchors in post cards (#891)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-02-12 13:31:09 +06:00
Bernat Borràs Civil df78c743c8 Fix Tags sidebar font color (#890)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-02-12 13:29:12 +06:00
Bernat Borràs Civil 96768ade2d Add dutch in Readme (#883)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-02-12 13:27:15 +06:00
Bernat Borràs Civil 11bddc36a2 Add company and school logos (#882)
* Add education logo

* Fix width

* Update css

* Add logos to company

* Add multiple positions

* Update Styling

* Strenghten poistion title

* Improve timeline

* Fix missing curly braces

* Fix curly braces

* Add space

* Add space between position and date

* Make single and multiple experiences more consistent

* Remove single-position layout

* Remove duplicated comment
2024-02-12 13:26:12 +06:00
Emruz Hossain e8b0cfb32e Fix active menu on sidebar not getting highlighted in dark mode (#881)
Signed-off-by: Emruz Hossain <emruz.hossain@qdrant.com>
2024-02-02 18:31:03 +00:00
Emruz Hossain de1cee3951 Fix replace directive in local development guide (#880) 2024-02-02 17:02:12 +00:00
Bernat Borràs Civil 3283a3b844 Add param profile to hide author in post (#870)
* Add param profile

* Fix date duplicated when profile not set

* Change param localization

---------

Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-02-02 22:57:18 +06:00
Nico 3d1b8f830f Changing the translation of 'Notes' (#875)
Changed the translation for the word "Notes" from "Remarques" to "Notes" (as in English).

Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2024-02-02 16:18:06 +00:00
dependabot[bot] 5159cdf6bb Bump peter-evans/create-pull-request from 5 to 6 (#877)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 5 to 6.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v5...v6)

---
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>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2024-02-02 11:46:19 +00:00
dependabot[bot] b3aae4de33 Bump release-drafter/release-drafter from 5.25.0 to 6.0.0 (#879)
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 5.25.0 to 6.0.0.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/v5.25.0...v6.0.0)

---
updated-dependencies:
- dependency-name: release-drafter/release-drafter
  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-02-02 11:45:20 +00:00
Emruz Hossain c74672c1c1 Update local development guide (#869)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2024-01-24 10:06:35 +06:00
Bernat Borràs Civil def5ce662e Add select maximum number of posts per page (#866)
* Add select maximum number of posts per page

* Rename ans simplify posts to show

* Fix
2024-01-19 19:00:11 +00:00
Dieter Vansteenwegen 1aa27921d0 Add Researchgate as contact option (#864) 2024-01-17 18:56:07 +06:00
Emruz Hossain 2c5cbeee94 Update README.md (#863) 2024-01-14 13:43:18 +06:00
hossainemruz b9713b5461 Add link to migration guide
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2024-01-13 19:09:23 +06:00
Emruz Hossain 0c0072eac1 Add hugoVersion info in config.yaml (#861)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2024-01-07 02:08:05 +06:00
Emruz Hossain fdfee4d3bb Refactor alert shortcode (#858)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2024-01-01 08:58:11 +00:00
Augusto Pace d3968ca711 Fixed and improved circular progess animation on about section (#850)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2023-12-29 23:04:27 +06:00
Alexandre Neto 48a7b47319 Specify European Portuguese (#854) 2023-12-24 12:32:38 +06:00
dependabot[bot] 2801749573 Bump github/codeql-action from 2 to 3 (#849)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  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>
2023-12-15 19:19:24 +06:00
Emruz Hossain d5fb8e5313 Fix embed-pdf short code not rendering pdf file (#844)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-12-08 16:04:58 +00:00
Bernat Borràs Civil bb9fec2e5d Fix taken courses collapsible (#840)
* Fix taken courses collapsible

* Remove space

* Reorder functions
2023-12-07 00:48:50 +06:00
Emruz Hossain 93dc9dbb26 Add lighthouse score check (#837)
* Add lighthouse check

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

* Fix URL

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

---------

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-11-23 15:18:52 +06:00
hossainemruz 434061ea6b Update netlify.toml
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-11-23 15:02:20 +06:00
hossainemruz 40d121bf2c Update replace dir
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-11-23 15:00:41 +06:00
Emruz Hossain bb56bfbc77 Add Netlify configuration (#836)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-11-23 08:21:54 +00:00
Emruz Hossain 93fc487111 Refactor workflows (#835)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-11-21 14:42:39 +06:00
Bernat Borràs Civil e5230e8c93 Add minute translation for catalan, spanish and french (#833) 2023-11-13 17:53:02 +00:00
Nirjas Jakilim 017ab6262a Updated min hugo version required on theme configuration (#830)
updated theme.toml to reflect with the latest minimum hugo version requirement.
2023-10-31 15:43:30 +00:00
Emruz Hossain cd2546d4e8 Add tooltiop for scroll-to-top button (#829)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-10-31 08:24:54 +00:00
Emruz Hossain c00d676b26 Update Hugo version in README (#828)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-10-31 08:01:38 +00:00
Luca Argentieri 05c9d3d850 Add self-hosted goat counter (#826)
* Add self-hosted goat counter

* GoatCounter custom instance and beckward compatibility

---------

Co-authored-by: SilverLuke <luca99.argentieri@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-10-31 07:15:28 +00:00
Augusto Pace e61d6b796b Fixed localization of post cards (#821)
* Fixed date localization on post card

* fixed also labeling localization for post card

* adressed change request by using the hugo feature of singular/plural automagic for translation

* Fix reading time translation

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

---------

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
Co-authored-by: hossainemruz <hossainemruz@gmail.com>
2023-10-30 04:27:14 +00:00
dependabot[bot] fbbef3b2c5 Bump actions/setup-node from 3 to 4 (#822)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-node
  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>
2023-10-24 11:51:41 +00:00
Emruz Hossain 69611695e7 Fix search result card layout (#820)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-10-20 20:20:26 +00:00
Bernat Borràs Civil fecc0546e6 Fix distorted post card images (issue #808) (#819) 2023-10-18 17:12:57 +00:00
Bernat Borràs Civil 45b0b5b704 Fix tag separation in post cards (#818) 2023-10-18 15:12:55 +00:00
dependabot[bot] acd4f63cda Bump actions/checkout from 4.1.0 to 4.1.1 (#817)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.0 to 4.1.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.1.0...v4.1.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>
2023-10-18 11:58:10 +00:00
Bernat Borràs Civil aa7bdb0899 Justify post content (issue #831: Text in post is not justified) (#815)
* Justify content

* Justify content

* Remove redundant justification

* Remove inline css

---------

Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2023-10-17 19:39:53 +00:00
dependabot[bot] 5b31653ed2 Bump release-drafter/release-drafter from 5.24.0 to 5.25.0 (#814)
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 5.24.0 to 5.25.0.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/v5.24.0...v5.25.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>
2023-10-17 11:31:42 +00:00
dependabot[bot] e35f917370 Bump postcss from 8.4.21 to 8.4.31 (#805)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.21 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.21...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  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>
2023-10-16 18:06:19 +00:00
Bernat Borràs Civil a917e1e3f7 Add input color (#812) 2023-10-16 05:01:50 +00:00
Bernat Borràs Civil bd2181eaca Fix featured post section after update (#807) 2023-10-15 10:41:39 +00:00
Emruz Hossain e8f8f3b22b Fix post author image position + responsiveness (#804)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-10-06 19:32:57 +00:00
Mariatta 1dbe8aca45 Create mastodon embed shortcode (#788)
This shortcode can be used as follows:

```
{{<mastodon server="" user="" id="">}}
```

It defaults to mastodon.social server.


Closes #787

Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2023-10-07 01:06:16 +06:00
Bernat Borràs Civil a1188673ad Add section to feature some posts in the main page (#786)
* Add working-on section

* Remove more posts button in working on

* Rename working-on.html to featured-posts.html

* Iterate posts from config file

* Remove unnecessary code in featured-posts.html

---------

Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2023-10-07 01:01:45 +06:00
Vincent Ducamps 539828cbff fix dark mode: absolute to relative icon path (#790) 2023-10-07 00:55:18 +06:00
David Davó 42d3c650f8 Fixed navbar scroll spy (#798) (#799)
* Fixed navbar scroll spy

* Created get-section-url helper

* Fix URL for home section

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

---------

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2023-10-07 00:38:18 +06:00
Emruz Hossain 03d263c4a1 Remove re-write warning message (#803) 2023-10-05 09:25:56 +00:00
Emruz Hossain c943f39617 Fix theme icon in transparent menu (#801)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-09-29 23:17:47 +00:00
Emruz Hossain 5f0aebcf68 Implement proper dark mode (#800)
* Implement proper dark mode

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

* Fix footer color in light mode

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

---------

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-09-30 05:04:48 +06:00
Emruz Hossain 6dc9d1d33d Refactor CSS (#785)
* Refactor CSS

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

* Refactor about section

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

* Refactor CSS for experiences section

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

* Update education section

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

* Update projects section

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

* Update publication + accomplishment section

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

* Update achievements section

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

* Refactor footer CSS

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

* Re-use section title adjustment css for top header

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

* Refactor navbar CSS

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

* Refactor sidebar CSS

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

* Use unified navbar for all pages

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

* Refactor 404 page CSS

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

* Refactor list page css

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

* Fix notes page css

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

* Refactor single page css

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

* Introduce color variables

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

---------

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-09-29 04:27:19 +06:00
dependabot[bot] 77447b7723 Bump actions/checkout from 4.0.0 to 4.1.0 (#795)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.0.0 to 4.1.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.0.0...v4.1.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>
2023-09-25 11:19:33 +00:00
dependabot[bot] bd7ad1148d Bump actions/checkout from 3.6.0 to 4.0.0 (#792)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.6.0 to 4.0.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/v3.6.0...v4.0.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  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>
2023-09-05 11:45:44 +00:00
dependabot[bot] cc0b957979 Bump actions/checkout from 3.5.3 to 3.6.0 (#789)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.3 to 3.6.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/v3.5.3...v3.6.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>
2023-08-25 11:22:23 +00:00
Bernat Borràs Civil 80205a7117 Add reading time, #679 (#784)
* Add reading time

* Add reading time
2023-07-31 16:30:13 +00:00
ZeYanLin 8f2d583ab6 Support Cloudflare Web Analytics (#763)
* Support Cloudflare Web Analytics

* Support Cloudflare Web Analytics

---------

Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2023-07-30 07:48:13 +00:00
Bernat Borràs Civil 08017d5977 Add possibility to show tags on post cards (#782)
* Add possibility to show tags on post cards

* Add on_card tags in exampleSite

---------

Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2023-07-29 15:21:26 +00:00
Emruz Hossain 0e12222cc3 Fix index featching during search (#783)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-07-29 02:09:17 +06:00
hossainemruz 678d955044 Fix search using incorrect element id
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-07-29 00:57:50 +06:00
Emruz Hossain 55560f40bd Fix CSS not being applied in tags (#780)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-07-28 00:15:51 +06:00
dependabot[bot] 0afcdcd468 Bump word-wrap from 1.2.3 to 1.2.4 (#778)
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-27 22:23:42 +06:00
Bernat Borràs Civil 5372e856d7 Add space between expanding icon and category name (Sidebar) (#773) 2023-07-04 07:28:03 +00:00
Bernat Borràs Civil a128873f20 Fix takenCourses buttons (#772) 2023-07-03 22:14:35 +06:00
Bernat Borràs Civil 9a759090cd Add extracurricular activities url (#770)
* Add extracurricular activities url

* Allow markdown in extracurricular activities
2023-07-03 08:16:52 +00:00
Bernat Borràs Civil cd80fc9015 Fix Issue: Skills logo misaligned #753 (#769) 2023-07-03 06:59:41 +00:00
dependabot[bot] 53f1bc9137 Bump release-drafter/release-drafter from 5.23.0 to 5.24.0 (#767)
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 5.23.0 to 5.24.0.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/v5.23.0...v5.24.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>
2023-06-28 11:57:52 +00:00
dependabot[bot] 147a4c1a0f Bump actions/checkout from 3.5.2 to 3.5.3 (#766)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.2 to 3.5.3.
- [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/v3.5.2...v3.5.3)

---
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>
2023-06-12 11:57:53 +00:00
Miradil 83d10c59ad Fixed changing default color scheme in config, affecting the result (#755) 2023-04-29 04:56:50 +00:00
dependabot[bot] 4940d4a929 Bump actions/checkout from 3.5.1 to 3.5.2 (#750)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.1 to 3.5.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/v3.5.1...v3.5.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>
2023-04-14 11:57:58 +00:00
dependabot[bot] 88bfd76efd Bump actions/checkout from 3.5.0 to 3.5.1 (#749)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.0 to 3.5.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/v3.5.0...v3.5.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>
2023-04-13 11:57:59 +00:00
Emily 8d34a7573b fix cardHeader (#747) 2023-04-10 16:07:03 +00:00
dependabot[bot] 951557050e Bump peter-evans/create-pull-request from 4 to 5 (#746)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v5)

---
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>
2023-04-05 11:57:54 +00:00
dependabot[bot] aa2aea46ee Bump actions/checkout from 3.4.0 to 3.5.0 (#744)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.4.0 to 3.5.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/v3.4.0...v3.5.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>
2023-03-24 12:00:24 +00:00
dependabot[bot] 5bfe8b7428 Bump actions/checkout from 3.3.0 to 3.4.0 (#743)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.3.0 to 3.4.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/v3.3.0...v3.4.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>
2023-03-16 11:58:01 +00:00
dependabot[bot] 5b281a7f57 Bump gaurav-nelson/github-action-markdown-link-check from 1.0.14 to 1.0.15 (#739)
Bumps [gaurav-nelson/github-action-markdown-link-check](https://github.com/gaurav-nelson/github-action-markdown-link-check) from 1.0.14 to 1.0.15.
- [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.14...1.0.15)

---
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>
2023-03-01 11:58:28 +00:00
dependabot[bot] a71b73840e Bump release-drafter/release-drafter from 5.22.0 to 5.23.0 (#737)
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 5.22.0 to 5.23.0.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/v5.22.0...v5.23.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>
2023-02-21 11:57:46 +00:00
Andrea b99f5ada20 Fix italian traslation and uncommented (#736) 2023-02-19 16:39:39 +00:00
Emruz Hossain 0d20efe1b7 Support rel atribute in social links (#735)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-02-09 17:03:59 +00:00
Reo Uehara b498330793 Add: templates: twitter-card (#732)
Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
2023-01-28 00:10:58 +06:00
hossainemruz e5fcc95e8b Unify package.json
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-01-27 23:19:59 +06:00
Aaron Qian d9eccf58f4 Bundle CSS with Hugo's Sass feature (#705)
* migrate bootstrap and flags to bundle

* migrated main.css

* migrate navbar.css and plyr

* migrated mulish font and darkreader

* migrated static/css/sections stylesheets

* migrated list page and sidebar styles

* migrated search.html ( nothing to add )

* migration single page styles

* remove duplicated style tags

* migrate notes.  Deleted unused css in static

* migrate 404 css to bundle

* migrate katex styles

* migrate embedpdf styles

* migrated katex css

---------

Co-authored-by: Aaron Qian <aaron@yeet.io>
2023-01-27 22:56:34 +06:00
github-actions[bot] cef76eb748 Update and run autoprefixer (#733)
Co-authored-by: hossainemruz <hossainemruz@users.noreply.github.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-26 18:22:39 +00:00
github-actions[bot] 0c8c8ce2d4 Update and run autoprefixer (#731)
Co-authored-by: hossainemruz <hossainemruz@users.noreply.github.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-26 18:21:31 +00:00
hossainemruz cefa24409e Update usage guide in README
Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-01-27 00:20:16 +06:00
Emruz Hossain 2f3a30a4ff Add warning about on-going re-write in main branch 2023-01-16 00:45:08 +06:00
dependabot[bot] 3957190425 Bump actions/checkout from 3.2.0 to 3.3.0 (#728)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.2.0 to 3.3.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/v3.2.0...v3.3.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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-06 11:02:14 +00:00
Igor Rodriguez 6620c35f5d Brazilian Portuguese translation (#727) 2023-01-06 04:05:35 +00:00
Emruz Hossain 374b4019d8 Fix build (#724)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-01-05 19:12:55 +00:00
github-actions[bot] 95ecdfb83c Update and run autoprefixer (#723)
Co-authored-by: kodiakhq[bot] <kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-05 19:00:42 +00:00
github-actions[bot] 38ea2c6c6e Update and run autoprefixer (#721)
Co-authored-by: hossainemruz <hossainemruz@users.noreply.github.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-05 18:59:39 +00:00
Emruz Hossain 85f6413b7e Update config.yaml for exampleSite to match new structure (#722)
Signed-off-by: hossainemruz <hossainemruz@gmail.com>

Signed-off-by: hossainemruz <hossainemruz@gmail.com>
2023-01-05 18:58:41 +00:00
762 changed files with 11021 additions and 13226 deletions
+3 -1
View File
@@ -1 +1,3 @@
node_modules node_modules
exampleSite/node_modules
exampleSite/public
+3 -3
View File
@@ -8,10 +8,10 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout to latest commit - name: Checkout to latest commit
uses: actions/checkout@v3.2.0 uses: actions/checkout@v4.1.2
- name: Setup Node - name: Setup Node
uses: actions/setup-node@v3 uses: actions/setup-node@v4
with: with:
node-version: "15.x" node-version: "15.x"
@@ -21,7 +21,7 @@ jobs:
npm run autoprefixer npm run autoprefixer
- name: Create Pull Request - name: Create Pull Request
uses: peter-evans/create-pull-request@v4 uses: peter-evans/create-pull-request@v6
with: with:
branch: autoprefixer branch: autoprefixer
branch-suffix: timestamp branch-suffix: timestamp
-28
View File
@@ -1,28 +0,0 @@
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@v3.2.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.6.0
with:
hugo-version: 'latest'
extended: true
# build website
- name: Create Config
run: touch config.toml
- name: Build
run: hugo --minify
+4 -4
View File
@@ -39,11 +39,11 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v3.2.0 uses: actions/checkout@v4.1.2
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v2 uses: github/codeql-action/init@v3
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file. # If you wish to specify custom queries, you can do so here or in a config file.
@@ -54,7 +54,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below) # If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@v2 uses: github/codeql-action/autobuild@v3
# ️ Command-line programs to run using the OS shell. # ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl # 📚 https://git.io/JvXDl
@@ -68,4 +68,4 @@ jobs:
# make release # make release
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2 uses: github/codeql-action/analyze@v3
-13
View File
@@ -1,13 +0,0 @@
name: Enforce Labels
on:
pull_request:
types: [labeled, unlabeled, opened, edited, synchronize]
jobs:
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']"
-13
View File
@@ -1,13 +0,0 @@
name: Check Markdown links
# Run action on pull request event
on: [pull_request]
jobs:
markdown-link-check:
runs-on: ubuntu-latest
steps:
# checkout to latest commit
- uses: actions/checkout@v3.2.0
# run markdown linter
- uses: gaurav-nelson/github-action-markdown-link-check@1.0.14
@@ -1,4 +1,4 @@
name: Release Drafter name: Merge to main workflows
# Run action on push in mater branch # Run action on push in mater branch
on: on:
push: push:
@@ -10,6 +10,6 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
# Create/Update release draft # Create/Update release draft
- uses: release-drafter/release-drafter@v5.22.0 - uses: release-drafter/release-drafter@v6.0.0
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,150 +0,0 @@
name: Project Automation (Issue)
on:
issues:
types:
- opened
- reopened
- closed
- labeled
- unlabeled
jobs:
issue_automation:
runs-on: ubuntu-latest
steps:
- name: Get project data
env:
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
ORGANIZATION: hugo-toha
PROJECT_NUMBER: 4
run: |
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
query($org: String!, $number: Int!) {
organization(login: $org){
projectNext(number: $number) {
id
fields(first:20) {
nodes {
id
name
settings
}
}
}
}
}' -f org="$ORGANIZATION" -F number=$PROJECT_NUMBER > project_data.json
echo 'PROJECT_ID='$(jq -r '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
# Read the ID of the "Type" field options
echo 'TYPE_ID='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.id' project_data.json) >> $GITHUB_ENV
echo 'PROJECT_ID='$(jq -r '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
echo 'TYPE_ID='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.id' project_data.json) >> $GITHUB_ENV
echo 'TYPE_BUG='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Bug") |.id' project_data.json) >> $GITHUB_ENV
echo 'TYPE_FEATURE='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Feature") |.id' project_data.json) >> $GITHUB_ENV
echo 'TYPE_ENHANCEMENT='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Enhancement") |.id' project_data.json) >> $GITHUB_ENV
echo 'TYPE_DOCUMENTATION='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Documentation") |.id' project_data.json) >> $GITHUB_ENV
echo 'TYPE_TRANSLATION='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Translation") |.id' project_data.json) >> $GITHUB_ENV
# Read the id of the "Status" field options
echo 'STATUS_ID='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_TODO='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Todo") |.id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_IN_PROGRESS='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="In Progress") |.id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_READY_FOR_REVIEW='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Ready for Review") |.id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_DONE='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Done") |.id' project_data.json) >> $GITHUB_ENV
- name: Add Issue to project
env:
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
ISSUE_ID: ${{ github.event.issue.node_id }}
run: |
item_id="$( gh api graphql -f query='
mutation($project:ID!, $issue:ID!) {
addProjectNextItem(input: {projectId: $project, contentId: $issue}) {
projectNextItem {
id
}
}
}' -f project="$PROJECT_ID" -f issue="$ISSUE_ID" --jq '.data.addProjectNextItem.projectNextItem.id')"
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
- name: Export Labels
env:
ISSUE_DATA: ${{ toJson(github.event.issue) }}
run: |
echo 'LABELS='$(echo "$ISSUE_DATA" | jq -r '[.labels[].name] | join(" ")') >> $GITHUB_ENV
- name: Set "Type" field
env:
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
run: |
# Only execute this step if the Issue contains at least one label
if [ "${#LABELS[@]}" -gt 0 ]; then
# Let by default the type is "Bug"
OPTION_ID=$TYPE_BUG
# If it has "feature" label then set the type to "Feature"
if [[ "${LABELS[*]}" =~ "feature" ]]; then
OPTION_ID=$TYPE_FEATURE
fi
# If it has "enhancement" label then set the type to "Enhancement"
if [[ "${LABELS[*]}" =~ "enhancement" ]]; then
OPTION_ID=$TYPE_ENHANCEMENT
fi
# If it has "documentation" label then set the type to "Documentation"
if [[ "${LABELS[*]}" =~ "documentation" ]]; then
OPTION_ID=$TYPE_DOCUMENTATION
fi
# If it has "translation" label then set the type to "Translation"
if [[ "${LABELS[*]}" =~ "translation" ]]; then
OPTION_ID=$TYPE_TRANSLATION
fi
# Set the "Type" field to appropriate option
gh api graphql -f query='
mutation ($project: ID!, $item: ID!, $field: ID!, $opt_id: String!) {
updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $field
value: $opt_id
}) {
projectNextItem {
id
}
}
}' -f project="$PROJECT_ID" -f item="$ITEM_ID" -f field="$TYPE_ID" -f opt_id="$OPTION_ID" --silent
fi
- name: Set "Status" field
env:
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
run: |
STATE=${{github.event.issue.state}}
echo "State: $STATE"
OPTION_ID=$STATUS_TODO
if [[ "${STATE}" == "closed" ]]
then
OPTION_ID=$STATUS_DONE
fi
gh api graphql -f query='
mutation ($project: ID!, $item: ID!, $field: ID!, $status_id: String!) {
updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $field
value: $status_id
}) {
projectNextItem {
id
}
}
}' -f project="$PROJECT_ID" -f item="$ITEM_ID" -f field="$STATUS_ID" -f status_id="$OPTION_ID" --silent
@@ -1,219 +0,0 @@
name: Project Automation (PR)
on:
pull_request:
types:
- opened
- ready_for_review
- reopened
- review_requested
- closed
- labeled
- unlabeled
- synchronize
jobs:
pr_automation:
runs-on: ubuntu-latest
steps:
- name: Get project data
env:
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
ORGANIZATION: hugo-toha
PROJECT_NUMBER: 4
run: |
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
query($org: String!, $number: Int!) {
organization(login: $org){
projectNext(number: $number) {
id
fields(first:20) {
nodes {
id
name
settings
}
}
}
}
}' -f org="$ORGANIZATION" -F number=$PROJECT_NUMBER > project_data.json
echo 'PROJECT_ID='$(jq -r '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
# Read the ID of the "Type" field options
echo 'TYPE_ID='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.id' project_data.json) >> $GITHUB_ENV
echo 'PROJECT_ID='$(jq -r '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
echo 'TYPE_ID='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.id' project_data.json) >> $GITHUB_ENV
echo 'TYPE_BUG='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Bug") |.id' project_data.json) >> $GITHUB_ENV
echo 'TYPE_FEATURE='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Feature") |.id' project_data.json) >> $GITHUB_ENV
echo 'TYPE_ENHANCEMENT='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Enhancement") |.id' project_data.json) >> $GITHUB_ENV
echo 'TYPE_DOCUMENTATION='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Documentation") |.id' project_data.json) >> $GITHUB_ENV
echo 'TYPE_TRANSLATION='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Translation") |.id' project_data.json) >> $GITHUB_ENV
# Read the id of the "Status" field options
echo 'STATUS_ID='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_TODO='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Todo") |.id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_IN_PROGRESS='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="In Progress") |.id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_READY_FOR_REVIEW='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Ready for Review") |.id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_DONE='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Done") |.id' project_data.json) >> $GITHUB_ENV
- name: Add PR to project
env:
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
PR_ID: ${{ github.event.pull_request.node_id }}
run: |
item_id="$( gh api graphql -f query='
mutation($project:ID!, $pr:ID!) {
addProjectNextItem(input: {projectId: $project, contentId: $pr}) {
projectNextItem {
id
}
}
}' -f project="$PROJECT_ID" -f pr="$PR_ID" --jq '.data.addProjectNextItem.projectNextItem.id')"
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
- name: Export Labels
env:
PR_DATA: ${{ toJson(github.event.pull_request) }}
run: |
echo 'LABELS='$(echo "$PR_DATA" | jq -r '[.labels[].name] | join(" ")') >> $GITHUB_ENV
- name: Set "Type" field
env:
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
run: |
# Only execute this step if the PR contains at least one label
if [ "${#LABELS[@]}" -gt 0 ]; then
# Let by default the type is "Bug"
OPTION_ID=$TYPE_BUG
# If it has "feature" label then set the type to "Feature"
if [[ "${LABELS[*]}" =~ "feature" ]]; then
OPTION_ID=$TYPE_FEATURE
fi
# If it has "enhancement" label then set the type to "Enhancement"
if [[ "${LABELS[*]}" =~ "enhancement" ]]; then
OPTION_ID=$TYPE_ENHANCEMENT
fi
# If it has "documentation" label then set the type to "Documentation"
if [[ "${LABELS[*]}" =~ "documentation" ]]; then
OPTION_ID=$TYPE_DOCUMENTATION
fi
# If it has "translation" label then set the type to "Translation"
if [[ "${LABELS[*]}" =~ "translation" ]]; then
OPTION_ID=$TYPE_TRANSLATION
fi
# Set the "Type" field to appropriate option
gh api graphql -f query='
mutation ($project: ID!, $item: ID!, $field: ID!, $opt_id: String!) {
updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $field
value: $opt_id
}) {
projectNextItem {
id
}
}
}' -f project="$PROJECT_ID" -f item="$ITEM_ID" -f field="$TYPE_ID" -f opt_id="$OPTION_ID" --silent
fi
- name: Set "Status" field
env:
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
run: |
MERGED=${{github.event.pull_request.merged}}
STATE=${{github.event.pull_request.state}}
REVIEWERS=${{github.event.pull_request.requested_reviewers}}
DRAFT=${{github.event.pull_request.draft}}
echo "Merged: $MERGED"
echo "State: $STATE"
echo "Draft: $DRAFT"
echo "Reviewer: $REVIEWER"
OPTION_ID=$STATUS_TODO
if [[ ("${MERGED}" == "true") || ("${STATE}" == "closed") ]]
then
OPTION_ID=$STATUS_DONE
elif [[ ${#REVIEWERS[@]} -gt 0 ]]
then
OPTION_ID=$STATUS_READY_FOR_REVIEW
else
OPTION_ID=$STATUS_IN_PROGRESS
fi
# Expose the OPTION_ID so that it can be used in later steps
echo 'PR_STATUS='$OPTION_ID >> $GITHUB_ENV
gh api graphql -f query='
mutation ($project: ID!, $item: ID!, $field: ID!, $status_id: String!) {
updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $field
value: $status_id
}) {
projectNextItem {
id
}
}
}' -f project="$PROJECT_ID" -f item="$ITEM_ID" -f field="$STATUS_ID" -f status_id="$OPTION_ID" --silent
- name: Find Linked Issues
id: linked_issues
uses: hossainemruz/linked-issues@main
with:
pr_url: ${{github.event.pull_request.html_url}}
format: IssueNumber
- name: Update Linked Issues Status
env:
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
run: |
declare -a issues=(${{ steps.linked_issues.outputs.issues }})
# Loop through the every issues and update their Status to same as the PR Status
for i in "${issues[@]}"
do
# Find the Issue ID
ISSUE_ID="$(gh api graphql -f query='
query($owner: String!, $name: String!, $issue_number: Int!) {
repository(owner: $owner, name: $name) {
issue(number: $issue_number) {
id
}
}
}' -f owner="${{github.event.pull_request.head.repo.owner.login}}" -f name="${{github.event.pull_request.head.repo.name}}" -F issue_number=$i --jq='.data.repository.issue.id')"
# Find the id of the Issue at the project board
item_id="$( gh api graphql -f query='
mutation($project:ID!, $pr:ID!) {
addProjectNextItem(input: {projectId: $project, contentId: $pr}) {
projectNextItem {
id
}
}
}' -f project="$PROJECT_ID" -f pr="$ISSUE_ID" --jq '.data.addProjectNextItem.projectNextItem.id')"
# Update the Issue Status
gh api graphql -f query='
mutation ($project: ID!, $item: ID!, $field: ID!, $status_id: String!) {
updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $field
value: $status_id
}) {
projectNextItem {
id
}
}
}' -f project="$PROJECT_ID" -f item="$item_id" -f field="$STATUS_ID" -f status_id="$PR_STATUS" --silent
done
+92
View File
@@ -0,0 +1,92 @@
name: PR Workflows
# Run action on pull request event
on: [pull_request]
jobs:
# Build exampleSite
build:
runs-on: ubuntu-latest
steps:
# checkout to the commit that has been pushed
- uses: actions/checkout@v4.1.2
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 18
- name: Install node modules
run: npm install
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2.6.0
with:
hugo-version: 'latest'
extended: true
- name: Build
run: |
cd exampleSite
hugo --minify
# Run linter
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.2
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 18
- name: Install node modules
run: npm install
- name: Lint
run: |
npm run lint
lighthouse-check:
runs-on: ubuntu-latest
steps:
- name: Waiting for Netlify Preview
uses: kamranayub/wait-for-netlify-action@v2.1.1
id: preview
with:
site_name: "toha-ci"
max_timeout: 300
env:
NETLIFY_TOKEN: ${{secrets.NETLIFY_TOKEN}}
- name: Run Lighthouse
uses: foo-software/lighthouse-check-action@v10.0.0
id: lighthouseCheck
with:
accessToken: ${{ secrets.LIGHTHOUSE_TOKEN }}
gitHubAccessToken: ${{secrets.GITHUB_TOKEN}}
emulatedFormFactor: 'all'
prCommentEnabled: true
prCommentSaveOld: false
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.2
# run markdown linter
- uses: gaurav-nelson/github-action-markdown-link-check@1.0.15
+115 -230
View File
@@ -1,3 +1,6 @@
> [!IMPORTANT]
> If you are migrating from v3 (`git submodule` based) theme to v4 (`hugo modules` based) theme, please read this [migration guide](https://toha-guides.netlify.app/posts/update-v3-to-v4/).
# Toha # Toha
[![Netlify Status](https://api.netlify.com/api/v1/badges/b1b93b02-f278-440b-ae1b-304e9f4c4ab5/deploy-status)](https://app.netlify.com/sites/toha/deploys) [![Netlify Status](https://api.netlify.com/api/v1/badges/b1b93b02-f278-440b-ae1b-304e9f4c4ab5/deploy-status)](https://app.netlify.com/sites/toha/deploys)
@@ -61,8 +64,10 @@ For more details about the features please visit [here](https://toha-guides.netl
- Tiếng Việt - Tiếng Việt
- Turkish - Turkish
- Arabic (العربية) - Arabic (العربية)
- Português - Português Europeu
- Català - Català
- Português Brasileiro
- Nederlands
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). 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).
@@ -84,95 +89,70 @@ Here are few screenshots from the [example site](https://hugo-toha.github.io).
## Requirements ## Requirements
- Hugo Version 0.87.0 or higher - Hugo Version 0.118.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.
## Usage ## Usage
In order to use this theme, follow the following steps: The easiest way to use this theme is to fork [hugo-toha.github.io](https://github.com/hugo-toha/hugo-toha.github.io) sample repo.Then change the configurations according to your need.
#### Add theme as git submodule If you want to start from scratch, then follow these steps:
At first, add [Toha](https://github.com/hugo-toha/toha) theme as git submodule to your hugo-site. ##### 1. Initialize Hugo module on you repo
```console At first, initialize [Hugo modules](https://gohugo.io/hugo-modules/) in your repo. This will create a `go.mod` file.
$ git submodule add https://github.com/hugo-toha/toha.git themes/toha
```bash
hugo mod init github.com/<your username>/<your repo name>
``` ```
> Don't use SSH URL of the theme during adding as git sub-module. Also, don't clone the theme in your `themes` directory using `git clone`. They don't work well with Github Action or Netlify. ##### 2. Add this theme as your module dependency
If you don't already have a hugo site, create one by following the step-by-step guide from [here](https://toha-guides.netlify.app/posts/getting-started/prepare-site/). Now, in your `config.yaml` file, add a `module` section.
#### Configuring Site
Now, configure your site to use `toha` theme by adding the following configuration in `config.yaml` file of your site.
```yaml ```yaml
baseURL: https://hugo-toha.github.io # Use Hugo modules to add theme
module:
languageCode: en-us imports:
title: "John's Blog" - path: github.com/hugo-toha/toha/v4
theme: "toha"
# Manage languages
# For any more details, you can check the official documentation: https://gohugo.io/content-management/multilingual/
languages:
en:
languageName: English
weight: 1
# Control TOC depth
markup:
tableOfContents:
startLevel: 2
endLevel: 6
ordered: false
# At least HTML and JSON are required for the main HTML content and
# client-side JavaScript search
outputs:
home:
- HTML
- RSS
- JSON
# Enable global emoji support
enableEmoji: true
# Site parameters
params:
# GitHub repo URL and branch of your site
gitRepo: https://github.com/hugo-toha/hugo-toha.github.io
gitBranch: main
# specify whether you want to write some blog posts or not
enableBlogPost: true
# specify whether you want to show Table of Contents in reading page
enableTOC: true
# specify whether you want the language flags to be displayed.
showFlags: true
# Provide newsletter configuration.
# This feature has been implemented for Mailchimp only for now.
# You can also hide it from the footer.
newsletter:
# specify whether you want to display the newsletter form
enable: true
# specify which newsletter provider you want to use
provider: mailchimp
# specify the target URL for the subscription form
mailchimpURL: https://github.us1.list-manage.com/subscribe/post?u=19de52a4603135aae97163fd8&amp;id=094a24c76e
``` ```
Don't forget to update `title`, `baseURL`, and `gitRepo` fields with your own information. To know about more available configuration options, please visit [here](https://toha-guides.netlify.app/posts/configuration/site-parameters/). Check this sample [config.yaml](https://github.com/hugo-toha/hugo-toha.github.io/blob/main/config.yaml) for further reference.
##### 3. Update your module
Now, run this command to load this theme as your module.
```bash
hugo mod tidy
```
#### Running Locally #### Running Locally
Now, you can run your hugo site with `toha` theme locally with the following command: Now, you can run your hugo site locally with the following steps:
```console ##### 1. Generate node dependency configuration
$ hugo server --theme toha --watch
Now run the following command to generate node dependency configuration. This will create the a `package.json` file in you repo.
```bash
hugo mod npm pack
```
##### 2. Install dependencies
Install the node dependencies using following command:
```bash
npm install
```
##### 3. Run your site
Now, run you site locally using following command.
```bash
hugo server -w
``` ```
When you run your site for first time, it will start with the default parameters. It should look similar to the [example site](https://hugo-toha.github.io). However, it will not have any sections in the homepage as we haven't configured them yet. You can configure your site by following the guides from [here](https://toha-guides.netlify.app/posts/configuration/). When you run your site for first time, it will start with the default parameters. It should look similar to the [example site](https://hugo-toha.github.io). However, it will not have any sections in the homepage as we haven't configured them yet. You can configure your site by following the guides from [here](https://toha-guides.netlify.app/posts/configuration/).
@@ -188,139 +168,6 @@ Here, are some handy shortcodes you can use with this theme.
- [Video](https://toha-guides.netlify.app/posts/shortcodes/#video) - [Video](https://toha-guides.netlify.app/posts/shortcodes/#video)
- [Mermaid](https://hugo-toha.github.io/posts/shortcodes/#mermaid) - [Mermaid](https://hugo-toha.github.io/posts/shortcodes/#mermaid)
## Project Roadmap
Here, are the current plan and progress of various components of this theme. The components will be prioritized based on users requests.
### 1. Portfolio Mode
Here is the check list for portfolio mode,
- [x] **Home**
- [x] Configurable Background
- [x] Author Image
- [x] Greeting
- [x] Typing Carousel
- [x] **About**
- [x] Name and Designation
- [x] Summary
- [x] Markdown Support
- [x] Social Links
- [x] Font Awesome Support
- [x] Resume Link
- [x] Soft Skills Indicator
- [x] **Skills**
- [x] Skill Cards
- [x] Markdown Support
- [x] **Experiences**
- [x] Designation
- [x] Timeline
- [x] Company Overview
- [x] Responsibilities
- [x] **Projects**
- [x] Category Filter
- [x] Project Card
- [x] Overview
- [x] Markdown Support
- [x] Github Stars
- [x] External URL Support
- [x] Technology Tags
- [x] **Recent Posts**
- [x] **Academic Career**
- [x] Degree
- [x] Institution
- [x] Timeline
- [x] Taken Courses
- [x] CGPA
- [x] Extracurricular Activities
- [ ] **Publications**
- [x] Category Filter
- [x] Card
- [x] Tags
- [x] Links
- [ ] Dedicated Page
- [ ] Abstract
- [ ] Authors
- [ ] Gallery
- [x] **Accomplishment / Courses**
- [x] Overview
- [x] Certificate
- [x] **Achievements Gallery**
- [x] Image
- [x] Summary
### 2. Blog Mode
Here is the checklist for blog mode,
- [ ] **Dedicated Home page**
- [x] **List Page**
- [x] Post Cards
- [x] Sidebar
- [x] Pagination
- [x] **Reading Page**
- [x] Hero Image
- [x] Author Information
- [x] Sidebar
- [x] Table of Contents
- [x] Next & Previous Page Navigation
- [x] `Improve This Page` Button
- [x] Disqus Comment
### 3. Documentation Mode
Here is the check list for documentation mode,
- [ ] **Dedicated Home Page**
- [ ] **Doc Page**
- [ ] Redesign sidebar
- [ ] Redesign TOC menu
- [ ] Search Capability
### 4. Note Mode
- [ ] **Dedicated Home Page**
- [ ] **Note Page**
- [x] Add note view
- [ ] Redesign sidebar
- [ ] Add search capability
### 5. Tracking and Comments
- [x] Google Analytics
- [x] Disqus Comment
### 6. Shortcodes
- [x] Image
- [x] Split Page into Multiple Column
- [x] Vertical space between two sections
- [x] Alert
- [ ] Figure & sub-figure
- [ ] Tabs
- [x] Notes
## Contributing ## Contributing
You can contribute to this theme in various ways. You can report a [bug](https://github.com/hugo-toha/toha/issues/new?template=bug.md), file an [feature request](https://github.com/hugo-toha/toha/issues/new?template=feature_request.md), send a PR, [share your thoughts](https://github.com/hugo-toha/toha/issues/new?template=question.md) etc. You can contribute to this theme in various ways. You can report a [bug](https://github.com/hugo-toha/toha/issues/new?template=bug.md), file an [feature request](https://github.com/hugo-toha/toha/issues/new?template=feature_request.md), send a PR, [share your thoughts](https://github.com/hugo-toha/toha/issues/new?template=question.md) etc.
@@ -342,34 +189,72 @@ For local development, you can make changes in the theme submodule and test the
At first, fork [this repo](https://github.com/hugo-toha/toha). Then, follow the following steps to use the forked theme for local developments, At first, fork [this repo](https://github.com/hugo-toha/toha). Then, follow the following steps to use the forked theme for local developments,
**Using the forked theme in your own site:** #### Running the forked theme against the example site
If you want to run your local development against your own site, follow the following steps:
```bash
# add the original theme as a submodule of your site if you haven't done already
$ git submodule add https://github.com/hugo-toha/toha.git themes/toha
# navigate into the toha theme folder
$ cd themes/toha
# add your own fork as a remote
$ git remote add my-fork https://github.com/<your-github-user>/toha
# create a new branch for your changes
$ git checkout -b my-feature-branch
```
**Using the forked theme in the example site:**
If your want to run your local development against this [example site](https://github.com/hugo-toha/hugo-toha.github.io), follow the following steps: If your want to run your local development against this [example site](https://github.com/hugo-toha/hugo-toha.github.io), follow the following steps:
```bash ```bash
# clone the example site along with the submodules # go to exampleSite directory
$ git clone git@github.com:hugo-toha/hugo-toha.github.io.git --recursive $ cd exampleSite
# navigate into the toha theme folder # install hugo modules
$ cd themes/toha $ hugo mod tidy
# add your own fork as a remote # install dependencies
$ git remote add my-fork https://github.com/<your-github-user>/toha $ hugo mod npm pack
# create a new branch for your changes $ npm install
$ git checkout -b my-feature-branch # run the example site locally
$ 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.
#### Running the forked theme against your own site
If you want to run your local development against your own site, follow the following steps:
**Replace the theme module:**
Open your site's `go.mod` file and replace the `github.com/hugo-toha/toha/v4` with your forked repo's path. For example, if your forked repo is `github.com/<your-github-user>/toha`, then replace the `github.com/hugo-toha/toha/v4` with `github.com/<your-github-user>/toha/v4`.
```go
module github.com/hugo-toha/hugo-toha.github.io
go 1.19
require github.com/hugo-toha/toha/v4 v4.0.1-0.20231229170427-d3968ca711ef // indirect
replace(
github.com/hugo-toha/toha/v4 => github.com/<your-github-user>/toha/v4 <git branch>
)
```
For interactive development, you can replace the theme with your locally cloned fork. For example, if you have cloned your fork in `/home/my-projects/toha`, then replace the `github.com/hugo-toha/toha/v4` with `/home/my-projects/toha`.
```go
module github.com/hugo-toha/hugo-toha.github.io
go 1.19
require github.com/hugo-toha/toha/v4 v4.0.1-0.20231229170427-d3968ca711ef // indirect
replace(
github.com/hugo-toha/toha/v4 => /home/my-projects/toha
)
```
**Update dependencies:**
```bash
# update hugo modules
$ hugo mod tidy
# install dependencies
$ hugo mod npm pack
$ npm install
```
**Run your site locally:**
```bash
$ hugo server -w
``` ```
From there you can make changes to the source code of the theme while testing with your running Hugo site or the example site. From there you can make changes to the source code of the theme while testing with your running Hugo site or the example site.
+10
View File
@@ -0,0 +1,10 @@
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"*": [
"*"
]
}
}
}
+3
View File
@@ -1,8 +1,11 @@
import 'popper.js' import 'popper.js'
import 'bootstrap' import 'bootstrap'
import '@fortawesome/fontawesome-free/js/all' import '@fortawesome/fontawesome-free/js/all'
import feather from 'feather-icons'
import './core' import './core'
import './features' import './features'
import './sections' import './sections'
import './pages' import './pages'
feather.replace();
@@ -1,30 +0,0 @@
import { enable, disable, auto, setFetchMethod } from 'darkreader'
import * as params from '@params'
const darkreader = params?.darkmode?.darkreader || {}
const defaultColorScheme = darkreader.defaultColorScheme || 'system'
const theme = {
brightness: 100,
contrast: 100,
sepia: 0,
...(darkreader.theme || {})
}
const fixes = {
invert: ['img[src$=".svg"]'],
...(darkreader.fixes || {})
}
setFetchMethod(window.fetch)
export function setSchemeDark () {
enable(theme, fixes)
}
export function setSchemeLight () {
disable()
}
export function setSchemeSystem () {
auto(theme, fixes)
}
export { defaultColorScheme }
+37 -27
View File
@@ -1,14 +1,6 @@
const PERSISTENCE_KEY = 'darkmode:color-scheme' const PERSISTENCE_KEY = 'darkmode:color-scheme'
async function getService () { window.addEventListener('load', async () => {
if (process.env.FEATURE_DARKMODE_DARKREADER === '1') {
return await import('./darkreader')
}
throw Error(' No service defined for feature darkMode.')
}
window.addEventListener('DOMContentLoaded', async () => {
const menu = document.getElementById('themeMenu') const menu = document.getElementById('themeMenu')
const $icon = document.getElementById('navbar-theme-icon-svg') const $icon = document.getElementById('navbar-theme-icon-svg')
if (menu == null || $icon == null) return if (menu == null || $icon == null) return
@@ -20,33 +12,35 @@ window.addEventListener('DOMContentLoaded', async () => {
return map return map
}, {}) }, {})
const {
setSchemeDark,
setSchemeLight,
setSchemeSystem,
defaultColorScheme
} = await getService()
function loadScheme () { function loadScheme() {
return localStorage.getItem(PERSISTENCE_KEY) || defaultColorScheme return localStorage.getItem(PERSISTENCE_KEY) || "system"
} }
function saveScheme (scheme) { function saveScheme(scheme) {
localStorage.setItem(PERSISTENCE_KEY, scheme) localStorage.setItem(PERSISTENCE_KEY, scheme)
} }
function setScheme (newScheme) { 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] $icon.src = iconMap[newScheme]
if (newScheme === 'dark') { // save preference to local storage
setSchemeDark()
} else if (newScheme === 'system') {
setSchemeSystem()
} else {
setSchemeLight()
}
saveScheme(newScheme) saveScheme(newScheme)
setImages(newScheme)
} }
setScheme(loadScheme()) setScheme(loadScheme())
@@ -58,3 +52,19 @@ window.addEventListener('DOMContentLoaded', async () => {
}) })
}) })
}) })
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'
}
}
}
+2 -2
View File
@@ -38,7 +38,7 @@ class PDFViewer {
this.loadingWrapper = el.getElementsByClassName('loading-wrapper')[0] this.loadingWrapper = el.getElementsByClassName('loading-wrapper')[0]
this.next = el.getElementsByClassName('next')[0] this.next = el.getElementsByClassName('next')[0]
this.prev = el.getElementsByClassName('prev')[0] this.prev = el.getElementsByClassName('prev')[0]
this.pageNum = el.getElementsByClassName('page-num')[0] this.curPage = el.getElementsByClassName('page-num')[0]
this.pageCount = el.getElementsByClassName('page-count')[0] this.pageCount = el.getElementsByClassName('page-count')[0]
// context // context
@@ -121,7 +121,7 @@ class PDFViewer {
this.pageNumPending = null this.pageNumPending = null
} }
// Update page counters // Update page counters
this.pageNum.textContent = num this.curPage.textContent = num
} }
/** /**
@@ -1,4 +1,12 @@
import hljs from 'highlight.js' import hljs from 'highlight.js'
import * as params from '@params' import * as params from '@params'
hljs.highlightAll(params.syntaxhighlight?.hljs) const defaultOptions = {
ignoreUnescapedHTML: true
}
hljs.configure({
...defaultOptions,
...(params.syntaxhighlight?.hljs || {}),
});
hljs.highlightAll();
+12 -5
View File
@@ -26,7 +26,7 @@ window.addEventListener('DOMContentLoaded', () => {
const searchQuery = param('keyword') const searchQuery = param('keyword')
if (searchQuery) { if (searchQuery) {
document.getElementById('search-query').value = searchQuery document.getElementById('search-box').value = searchQuery
executeSearch(searchQuery) executeSearch(searchQuery)
} else { } else {
const node = document.createElement('p') const node = document.createElement('p')
@@ -37,7 +37,7 @@ window.addEventListener('DOMContentLoaded', () => {
function executeSearch (searchQuery) { function executeSearch (searchQuery) {
const url = window.location.href.split('/search/')[0] + '/index.json' const url = window.location.href.split('/search/')[0] + '/index.json'
fetch(url).then(function (data) { fetch(url).then(response => response.json()).then(function (data) {
const pages = data const pages = data
const fuse = new Fuse(pages, fuseOptions) const fuse = new Fuse(pages, fuseOptions)
const results = fuse.search(searchQuery) const results = fuse.search(searchQuery)
@@ -79,6 +79,13 @@ window.addEventListener('DOMContentLoaded', () => {
// pull template from hugo template definition // pull template from hugo template definition
const templateDefinition = document.getElementById('search-result-template').innerHTML const templateDefinition = document.getElementById('search-result-template').innerHTML
// replace values // replace values
function adaptTags() {
const tags = value.item.tags;
let string = '';
if (tags) tags.forEach((t) => {string += '<li class="rounded"><a href="/tags/' + t.toLowerCase() + '/" class="btn btn-sm btn-info">' + t + "</a></li>"});
return string;
}
const output = render(templateDefinition, { const output = render(templateDefinition, {
key, key,
title: value.item.title, title: value.item.title,
@@ -86,13 +93,13 @@ window.addEventListener('DOMContentLoaded', () => {
date: value.item.date, date: value.item.date,
summary: value.item.summary, summary: value.item.summary,
link: value.item.permalink, link: value.item.permalink,
tags: value.item.tags, tags: adaptTags(),
categories: value.item.categories, categories: value.item.categories,
snippet snippet
}) })
const doc = new DOMParser().parseFromString(output, 'text/html') const dom = new DOMParser().parseFromString(output, 'text/html')
document.getElementById('search-results').append(doc) document.getElementById('search-results').append(dom.getElementsByClassName('post-card')[0])
snippetHighlights.forEach(function (snipvalue) { snippetHighlights.forEach(function (snipvalue) {
const context = document.getElementById('#summary-' + key) const context = document.getElementById('#summary-' + key)
+2 -5
View File
@@ -22,12 +22,9 @@ function toggleCourseVisibility (elem) {
} }
window.addEventListener('DOMContentLoaded', () => { window.addEventListener('DOMContentLoaded', () => {
const els = [ const els = Array.from(document.getElementsByClassName('btn'));
document.getElementById('show-more-btn'),
document.getElementById('show-less-btn')
]
els.filter((el) => el != null).forEach((el) => els.filter((el) => el != null && (el.id === 'show-more-btn' || el.id === 'show-less-btn')).forEach((el) =>
el.addEventListener('click', ({ target }) => el.addEventListener('click', ({ target }) =>
toggleCourseVisibility(target))) toggleCourseVisibility(target)))
}) })
+13 -11
View File
@@ -4,14 +4,14 @@ const updateNavBar = () => {
const themeIcon = document.getElementById('navbar-theme-icon-svg') const themeIcon = document.getElementById('navbar-theme-icon-svg')
if (window.scrollY > 40) { if (window.scrollY > 40) {
topNavbar?.classList.remove('initial-navbar') topNavbar?.classList.remove('transparent-navbar')
topNavbar?.classList.add('final-navbar', 'shadow') topNavbar?.classList.add('shadow')
navbarToggler?.classList.remove('navbar-dark') navbarToggler?.classList.remove('navbar-dark')
navbarToggler?.classList.add('navbar-light') navbarToggler?.classList.add('navbar-light')
// color theme selector a.k.a. dark mode // color theme selector a.k.a. dark mode
themeIcon?.classList.remove('navbar-icon-svg-dark') themeIcon?.classList.remove('svg-inverted')
// get the main logo from hidden img tag // get the main logo from hidden img tag
const mainLogo = document.getElementById('main-logo') const mainLogo = document.getElementById('main-logo')
@@ -20,14 +20,14 @@ const updateNavBar = () => {
document.getElementById('logo')?.setAttribute('src', logoURL) document.getElementById('logo')?.setAttribute('src', logoURL)
} }
} else { } else {
topNavbar?.classList.remove('final-navbar', 'shadow') topNavbar?.classList.remove('shadow')
topNavbar?.classList.add('initial-navbar') topNavbar?.classList.add('transparent-navbar')
navbarToggler?.classList.remove('navbar-light') navbarToggler?.classList.remove('navbar-light')
navbarToggler?.classList.add('navbar-dark') navbarToggler?.classList.add('navbar-dark')
// color theme selector a.k.a. dark mode // color theme selector a.k.a. dark mode
themeIcon?.classList.add('navbar-icon-svg-dark') themeIcon?.classList.add('svg-inverted')
// get the inverted logo from hidden img tag // get the inverted logo from hidden img tag
const invertedLogo = document.getElementById('inverted-logo') const invertedLogo = document.getElementById('inverted-logo')
@@ -43,18 +43,20 @@ document.addEventListener('DOMContentLoaded', function () {
// ================================================== // ==================================================
// When the user scrolls down 80px from the top of the document, // When the user scrolls down 80px from the top of the document,
// resize the navbar's padding and the logo's font size // resize the navbar's padding and the logo's font size
document.addEventListener('scroll', updateNavBar) const topNavbar = document.getElementById('top-navbar')
if (topNavbar?.classList.contains('homepage')) {
document.addEventListener('scroll', updateNavBar)
updateNavBar()
}
// Creates a click handler to collapse the navigation when // Creates a click handler to collapse the navigation when
// anchors in the mobile nav pop up are clicked // anchors in the mobile nav pop up are clicked
const navMain =document.getElementsByClassName('navbar-collapse') const navMain = document.getElementsByClassName('navbar-collapse')
Array.from(navMain).forEach(function(el) { Array.from(navMain).forEach(function (el) {
el.addEventListener('click', function (e) { el.addEventListener('click', function (e) {
if (e.target.tagName === 'A') { if (e.target.tagName === 'A') {
el.classList.add('collapse') el.classList.add('collapse')
} }
}) })
}) })
updateNavBar()
}) })
+5 -5
View File
@@ -6,19 +6,19 @@ function toggleSidebar () {
if (sidebar == null) { if (sidebar == null) {
return return
} }
if (sidebar.classList.contains('hide')) { if (sidebar.classList.contains('expanded')) {
sidebar.classList.remove('hide') sidebar.classList.remove('expanded')
} else { } else {
// if toc-section is open, then close it first // if toc-section is open, then close it first
const toc = document.getElementById('toc-section') const toc = document.getElementById('toc-section')
if (toc != null && toc.classList.contains('hide')) { if (toc != null && toc.classList.contains('hide')) {
toc.classList.remove('hide') toc.classList.remove('hide')
} }
// add "hide" class // add "expanded" class
sidebar.classList.add('hide') sidebar.classList.add('expanded')
// if it is mobile device. then scroll to top. // if it is mobile device. then scroll to top.
const { isMobile } = getDeviceState() const { isMobile } = getDeviceState()
if (isMobile && sidebar.classList.contains('hide')) { if (isMobile && sidebar.classList.contains('expanded')) {
document.body.scrollTop = 0 document.body.scrollTop = 0
document.documentElement.scrollTop = 0 document.documentElement.scrollTop = 0
if (document.getElementById('hero-area') != null) { if (document.getElementById('hero-area') != null) {
+80
View File
@@ -0,0 +1,80 @@
// loading bootstrap
// TODO: Refactor to use bootstrap sass variable for theming.
@import 'bootstrap/scss/bootstrap';
@import 'include-media/dist/_include-media';
// The Mulish font, we use font-weight 300 - 700
@import '@fontsource/mulish/300';
@import '@fontsource/mulish/index'; // 400
@import '@fontsource/mulish/500';
@import '@fontsource/mulish/600';
@import '@fontsource/mulish/700';
@import './variables';
@import './mixins';
// components
@import './components/cards';
@import './components/buttons';
@import './components/links';
@import './components/texts';
@import './components/images';
@import './components/tables';
@import './components/misc';
// layouts
@import './layouts/main';
@import './layouts/list';
@import './layouts/single';
@import './layouts/notes';
@import './layouts/404';
// navigators
@import './navigators/navbar';
@import './navigators/sidebar';
// sections
@import './sections/home';
@import './sections/about';
@import './sections/skills';
@import './sections/experiences';
@import './sections/education';
@import './sections/projects';
@import './sections/recent-posts';
@import './sections/achievements';
@import './sections/accomplishments';
@import './sections/publications';
@import './sections/footer';
// override
@import './override';
// features and services, only imported if enabled.
{{ range $feature, $featureDef := site.Params.features }}
{{ with $featureDef }}
{{ $featureEnabled := or (not (isset . "enable")) .enable }}
{{ if $featureEnabled }}
{{ with (index site.Data.toha.styles $feature) }}
{{ range .styles }}
@import '{{.}}';
{{ end }}
{{ end }}
{{ range $service, $config := .services }}
{{ with (index site.Data.toha.styles $feature) }}
{{ with .services }}
{{ with (index . $service) }}
{{ range .styles }}
@import '{{ . }}';
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
+163
View File
@@ -0,0 +1,163 @@
.btn-dark {
background-color: get-light-color('text-color') !important;
border-color: get-light-color('text-color') !important;
color: get-light-color('text-over-accent-color') !important;
@include transition();
&:hover,
&:focus {
background-color: get-light-color('accent-color') !important;
border-color: get-light-color('accent-color') !important;
@include transition();
}
}
.btn-info {
background-color: get-light-color('accent-color') !important;
color: get-light-color('text-over-accent-color') !important;
&:hover,
&:focus {
background-color: get-light-color('hover-over-accent-color') !important;
}
}
.btn-outline-info {
color: get-light-color('accent-color') !important;
border-color: get-light-color('accent-color') !important;
&:hover,
&:focus {
background-color: get-light-color('accent-color') !important;
color: get-light-color('text-over-accent-color') !important;
}
}
.btn-link {
color: get-light-color('accent-color');
&:hover,
&:focus {
color: get-light-color('hover-over-accent-color');
}
}
.nav-button {
background-color: transparent;
border: 1px solid transparent;
border-radius: 0.25rem;
color: get-light-color('muted-text-color');
}
.tags {
text-align: left;
padding-top: 0.5em;
li {
font-size: 0.5em;
list-style-type: none;
display: inline-block;
margin-left: 0.2em;
margin-right: 0.2em;
margin-top: 0.6em;
margin-bottom: 0.6em;
}
a {
text-decoration: none !important;
}
}
.icon-button {
background-color: get-light-color('text-color');
color: get-light-color('text-over-accent-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;
@include transition();
}
}
.filled-button {
background-color: get-light-color('accent-color') !important;
color: get-light-color('text-over-accent-color') !important;
@include transition();
&:hover,
&:active {
background-color: get-light-color('hover-over-accent-color') !important;
@include transition();
}
}
html[data-theme='dark'] {
.btn-dark {
background-color: get-dark-color('accent-color') !important;
border-color: get-dark-color('accent-color') !important;
color: get-dark-color('text-over-accent-color') !important;
&:hover,
&:focus {
background-color: get-dark-color('hover-over-accent-color') !important;
border-color: get-dark-color('hover-over-accent-color') !important;
}
}
.btn-info {
background-color: get-dark-color('bg-card') !important;
color: get-dark-color('text-color') !important;
border: 1px solid get-dark-color('muted-text-color') !important;
&:hover,
&:focus {
background-color: get-dark-color('hover-over-accent-color') !important;
}
}
.btn-outline-info {
color: get-dark-color('accent-color') !important;
border-color: get-dark-color('accent-color') !important;
&:hover,
&:focus {
background-color: get-dark-color('accent-color') !important;
color: get-dark-color('text-over-accent-color') !important;
}
}
.btn-link {
color: get-dark-color('accent-color');
&:hover,
&:focus {
color: get-dark-color('hover-over-accent-color');
}
}
.nav-button {
color: get-dark-color('muted-text-color');
}
.icon-button {
background-color: get-dark-color('muted-text-color');
color: get-dark-color('text-over-accent-color') !important;
&:hover,
&:focus {
background-color: get-dark-color('accent-color') !important;
}
}
.filled-button {
background-color: get-dark-color('accent-color') !important;
color: get-dark-color('text-over-accent-color') !important;
&:hover,
&:active {
background-color: get-dark-color('hover-over-accent-color') !important;
}
}
}
+117
View File
@@ -0,0 +1,117 @@
.card {
box-shadow: none;
@include transition();
overflow: hidden;
background: get-light-color('bg-card');
&:hover,
&:focus {
box-shadow: $box-shadow;
border: 1px solid get-light-color('bg-primary');
@include transition();
}
.card-head {
height: 172px;
display: flex;
overflow: hidden;
}
.card-body {
text-align: justify;
}
.card-img-top {
object-fit: cover;
@include transition();
}
.card-img-sm {
width: 32px;
height: 32px;
}
.card-img-xs {
width: 24px;
height: 24px;
}
.card-footer {
background: get-light-color('bg-card') !important;
a.btn {
text-decoration: none !important;
}
}
}
.post-card {
width: 24rem;
display: inline-flex;
.post-card-link {
text-decoration: none !important;
}
.card {
margin: 5px;
position: relative;
&:hover,
&:focus {
.card-img-top {
transform: scale(1.2);
object-fit: cover;
@include transition();
}
}
.card-body {
padding: 1.25rem !important;
padding-bottom: 0 !important;
.post-summary {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
max-height: 144px;
/* fallback */
-webkit-line-clamp: 5;
/* number of lines to show */
-webkit-box-orient: vertical;
}
}
.card-footer {
margin-top: auto;
span {
font-size: 10pt;
color: get-light-color('muted-text-color') !important;
padding-top: 5px;
}
}
}
}
html[data-theme='dark'] {
.card {
background: get-dark-color('bg-card');
&:hover,
&:focus {
border: 1px solid rgba(get-dark-color('accent-color'), 0.2);
}
.card-footer {
background: get-dark-color('bg-card') !important;
}
}
.post-card {
.card {
.card-footer {
span {
color: get-dark-color('muted-text-color') !important;
}
}
}
}
}
+58
View File
@@ -0,0 +1,58 @@
img {
display: block;
max-width: 100%;
&.center {
margin-left: auto;
margin-right: auto;
}
&.left {
margin-right: auto;
}
&.right {
margin-left: auto;
}
}
figure {
border: 1px solid rgba(get-light-color('accent-color'), 0.1);
height: -moz-fit-content;
height: fit-content;
width: -moz-fit-content;
width: fit-content;
align-self: center;
margin: auto;
}
caption,
figcaption {
caption-side: bottom;
text-align: center;
color: get-light-color('muted-text-color');
}
html[data-theme='dark'] {
figure {
border: 1px solid rgba(get-dark-color('accent-color'), 0.1);
}
caption,
figcaption {
color: get-dark-color('muted-text-color');
}
}
.svg-inverted {
filter: invert(1);
}
.logo-holder {
height: 64px;
margin-bottom: 1em;
}
.company-logo {
max-height: 100%;
width: auto;
}
+91
View File
@@ -0,0 +1,91 @@
a {
color: get-light-color('accent-color');
@include transition();
&:hover,
&:focus {
text-decoration: get-light-color('hover-over-accent-color') underline;
color: get-light-color('hover-over-accent-color');
@include transition();
}
}
.list-link, .taxonomy-term {
text-decoration: none !important;
color: get-light-color('text-color');
@include transition();
&.active {
display: inline;
color: get-light-color('accent-color');
}
&:hover {
margin-left: 3px;
color: get-light-color('accent-color');
@include transition();
}
}
a.header-anchor {
text-decoration: none;
color: get-light-color('heading-color');
i,
svg {
font-size: 10pt;
color: get-light-color('text-color');
display: none;
margin-left: 0.5rem;
}
&:hover {
i,
svg {
display: inline-block;
}
}
code {
color: get-light-color('inline-code-color');
}
}
.anchor {
padding-top: 3.5rem;
}
html[data-theme='dark'] {
a {
color: get-dark-color('accent-color');
&:hover,
&:focus {
text-decoration: get-dark-color('hover-over-accent-color') underline;
color: get-dark-color('hover-over-accent-color');
}
}
.list-link, .taxonomy-term {
color: get-dark-color('text-color');
&:hover,
&.active {
color: get-dark-color('accent-color');
}
}
a.header-anchor {
color: get-dark-color('heading-color');
i,
svg {
color: get-dark-color('text-color');
}
code {
color: get-dark-color('inline-code-color');
}
}
}
+79
View File
@@ -0,0 +1,79 @@
.paginator {
width: -moz-fit-content;
width: fit-content;
margin: auto;
vertical-align: bottom;
.page-item {
& > a {
color: get-light-color('accent-color');
}
&.active,
&:hover > a {
background-color: get-light-color('accent-color') !important;
color: get-light-color('text-over-accent-color') !important;
}
}
}
pre {
margin: 5px;
& > code {
padding: 10px !important;
}
}
@include media('<=large') {
pre {
margin: 0px;
& > code {
padding: 0px !important;
}
}
}
$alert-types: ('success', 'info', 'warning', 'danger');
.alert {
@each $type in $alert-types {
&.#{$type} {
background: get-alert-bg-color($type, 'light');
svg {
width: 1.25rem;
height: 1.25rem;
color: get-alert-text-color($type, 'light') !important;
}
strong {
padding-left: 0.5rem;
color: get-alert-text-color($type, 'light') !important;
}
}
}
}
html[data-theme='dark'] {
.paginator {
.page-item {
& > a {
color: get-dark-color('accent-color');
}
&.active,
&:hover > a {
background-color: get-dark-color('accent-color') !important;
color: get-dark-color('text-over-accent-color') !important;
}
}
}
.alert {
@each $type in $alert-types {
&.#{$type} {
background: get-alert-bg-color($type, 'dark');
svg {
color: get-alert-text-color($type, 'dark') !important;
}
strong {
color: get-alert-text-color($type, 'dark') !important;
}
}
}
}
}
+110
View File
@@ -0,0 +1,110 @@
table {
border-radius: 0.1rem;
border: 1px solid rgba(get-light-color('accent-color'), 0.1);
min-width: 10rem;
padding: 0.1rem;
thead {
tr {
background: get-light-color('accent-color');
color: get-light-color('text-over-accent-color');
}
}
tbody {
tr {
height: 40px !important;
color: get-light-color('text-color');
&:nth-child(odd) {
background-color: get-light-color('bg-primary');
}
&:nth-child(even) {
background-color: rgba(get-light-color('accent-color'), 0.05);
}
}
}
th,
td {
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
}
}
.gist {
table {
border-radius: unset !important;
background: unset !important;
border: unset !important;
padding: unset !important;
tr {
height: unset !important;
}
th,
td {
padding: unset !important;
border-left: unset !important;
border-bottom: unset !important;
}
td,
tc {
border-right: 1px solid rgba(get-light-color('accent-color'), 0.1);
}
thead {
tr {
background: unset !important;
color: unset !important;
}
}
tbody {
tr {
&:nth-child(odd) {
background-color: unset !important;
}
&:hover {
background: unset !important;
}
}
}
}
}
html[data-theme='dark'] {
table {
border: 1px solid rgba(get-dark-color('accent-color'), 0.1);
thead {
tr {
background: get-dark-color('accent-color');
color: get-dark-color('text-over-accent-color');
}
}
tbody {
tr {
color: get-dark-color('text-color');
&:nth-child(odd) {
background-color: get-dark-color('bg-primary');
}
&:nth-child(even) {
background-color: rgba(get-dark-color('accent-color'), 0.05);
}
}
}
}
.gist {
&::selection{
background: get-dark-color('text-color');
color: get-dark-color('inverse-text-color');
}
table {
td,
tc {
border-right: 1px solid rgba(get-dark-color('accent-color'), 0.1);
}
}
}
}
+119
View File
@@ -0,0 +1,119 @@
h1,
h2,
h3,
h4,
h5 {
color: get-light-color('heading-color');
}
strong {
color: get-light-color('heading-color') !important;
}
p {
color: get-light-color('text-color');
text-align: justify;
text-justify: inter-word;
}
input {
color: get-light-color('text-color');
}
blockquote {
border-left: 4px solid get-light-color('accent-color');
background-color: rgba(get-light-color('accent-color'), 0.05);
padding: 0.3rem;
padding-left: 1rem;
& > p {
color: get-light-color('text-color');
margin-top: 0.5rem;
margin-bottom: 0.5rem;
}
}
.text-muted {
color: get-light-color('muted-text-color') !important;
}
.text-heading {
font-weight: bold;
color: get-light-color('muted-text-color');
}
.sub-title {
color: get-light-color('muted-text-color');
font-size: 10pt;
}
::-moz-selection {
@include selection-color();
}
::selection {
@include selection-color();
}
@include media('<=small') {
h1 {
font-size: 2.2rem;
}
}
@include media('<=tiny') {
h1 {
font-size: 1.5rem;
}
}
html[data-theme='dark'] {
h1,
h2,
h3,
h4,
h5 {
color: get-dark-color('heading-color');
}
strong {
color: get-dark-color('heading-color') !important;
}
p {
color: get-dark-color('text-color');
}
input {
color: get-dark-color('text-color');
}
blockquote {
border-left: 4px solid get-dark-color('accent-color');
background-color: rgba(get-dark-color('accent-color'), 0.05);
color: get-dark-color('text-color');
}
.text-muted {
color: get-dark-color('muted-text-color') !important;
}
.text-heading {
color: get-dark-color('muted-text-color');
}
.sub-title {
color: get-dark-color('muted-text-color');
}
::-moz-selection {
@include selection-color($theme: 'dark');
}
::selection {
@include selection-color($theme: 'dark');
}
li,
ul {
color: get-dark-color('text-color');
}
}
+64
View File
@@ -0,0 +1,64 @@
body.kind-404 {
#sidebar-toggler {
display: none;
}
.notFound {
padding-top: 5rem;
text-align: center;
padding-bottom: 8rem;
img {
height: 500px;
}
h1 {
font-style: italic;
}
.message {
position: absolute;
max-width: 20rem;
top: 40%;
left: 30%;
}
}
@include media('<=very-large') {
.notFound .message {
top: 50%;
left: 25%;
}
}
@include media('<=large') {
.notFound .message {
top: 46%;
left: 25%;
}
}
@include media('<=medium') {
.notFound {
img {
height: 400px;
}
.message {
top: 20rem;
left: 4rem;
}
}
}
@include media('<=small') {
.notFound {
img {
height: 250px;
}
.message {
top: 20rem;
left: 2rem;
}
}
}
}
+207
View File
@@ -0,0 +1,207 @@
// 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 {
.wrapper {
display: flex;
padding: 0;
margin: 0;
width: 100%;
.content-section {
flex: 80%;
order: 2;
/* background-color: lightseagreen; */
padding: 0;
position: relative;
padding-left: 0.5rem;
padding-right: 0.5rem;
.content {
padding: 0;
position: relative;
padding-top: 2rem;
min-height: 130vh;
.post-card-holder {
margin-top: 32px;
margin-left: auto;
padding: 0;
display: flex;
flex-flow: wrap;
}
.paginator {
width: -moz-fit-content;
width: fit-content;
margin: auto;
.pagination {
margin-left: auto;
margin-right: auto;
margin-top: 0.5rem;
margin-bottom: 0.5rem;
width: -moz-fit-content;
width: fit-content;
}
.page-item {
& > a {
color: get-light-color('accent-color');
}
&.active > a {
background-color: get-light-color('accent-color');
color: get-light-color('text-over-accent-color');
}
}
}
}
}
}
@include media('<medium') {
.post-card {
margin-left: 1%;
margin-right: 1%;
width: 98%;
}
.wrapper {
padding-left: 0px;
padding-right: 0px;
flex-flow: column;
overflow: hidden;
.content-section {
flex: 100%;
max-width: 100%;
padding-left: 0;
width: 100%;
.content {
width: 100%;
padding-left: 0;
padding-right: 0;
@include transition();
}
&.hide {
.content {
margin-top: 0;
padding-top: 0;
@include transition();
}
.post-card-holder {
margin-top: 0.5rem;
@include transition();
}
}
}
}
}
@include media('>=medium', '<large') {
.post-card {
width: calc(100% / 2);
}
.content-section.hide {
.post-card {
width: 100%;
}
}
}
@include media('>=large', '<very-large') {
.post-card {
width: calc(100% / 3);
}
.wrapper {
padding-left: 0px;
padding-right: 0px;
.content-section {
padding: 0;
flex: 60%;
order: 2;
padding-bottom: 0.5rem;
.content {
overflow: hidden;
.post-card-holder {
margin: 0;
margin-top: 1.5rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
position: relative;
@include transition();
}
}
.container {
max-width: 100%;
}
&.hide {
.post-card {
width: calc(100% / 2);
}
}
}
}
}
@include media('>=very-large', '<extra-large') {
.post-card {
width: calc(100% / 4);
}
.post-card-holder {
margin-left: 0px;
}
}
@include media('>=extra-large') {
.post-card {
width: calc(100% / 5);
}
.content-section {
padding-left: 1rem;
padding-right: 1rem;
flex: 85%;
max-width: 85%;
}
}
}
html[data-theme='dark'] {
body.kind-section,
body.kind-term,
body.kind-page {
.wrapper {
.content-section {
.content {
.paginator {
.page-item {
& > a {
background-color: get-dark-color('bg-card') !important;
color: get-dark-color('text-color') !important;
border: 1px solid get-dark-color('muted-text-color') !important;
text-decoration: none !important;
&:hover {
background-color: get-dark-color('hover-over-accent-color') !important;
color: get-dark-color('text-over-accent-color') !important;
}
}
&.active > a {
background-color: get-dark-color('accent-color') !important;
color: get-dark-color('text-over-accent-color') !important;
}
}
}
}
}
}
}
}
+115
View File
@@ -0,0 +1,115 @@
/*
Removed smooth scrolling implementation in main.js in favor of
simpler css approach.
See: https://css-tricks.com/snippets/jquery/smooth-scrolling/
*/
*,
html {
scroll-behavior: smooth !important;
}
body {
position: relative;
}
/*
Fixes anchor overlapping with header.
See: https://stackoverflow.com/questions/4086107/fixed-page-header-overlaps-in-page-anchors
*/
:target::before {
content: '';
display: block;
height: 2em; /* fixed header height*/
margin: -2em 0 0; /* negative fixed header height */
}
body {
background-color: get-light-color('bg-primary');
font-family: 'Mulish';
}
.bg-primary {
background-color: get-light-color('bg-primary') !important;
}
.bg-secondary {
background-color: get-light-color('bg-secondary') !important;
}
.flag-icon {
width: 16px !important;
margin-top: 3px;
margin-right: 3px;
}
.hidden {
display: none !important;
}
.content {
ul > ol,
ol > ul,
ul > ul,
ol > ol,
li > ol,
li > ul {
-webkit-padding-start: 1rem;
padding-inline-start: 1rem;
}
}
kbd {
background-color: get-light-color('accent-color');
color: get-light-color('text-over-accent-color');
}
mark {
background-color: get-light-color('highlight-color');
border-radius: 0.25rem;
}
@include media('<=small') {
.skills-section,
.projects-section,
.publications-section {
.container {
padding-left: 0.3rem;
padding-right: 0.3rem;
}
}
.section-holder {
padding-left: 5px;
padding-right: 5px;
}
.skills-section,
.projects-section,
.recent-posts-section,
.achievements-section,
.publications-section {
padding-left: 0;
padding-right: 0;
}
}
html[data-theme='dark'] {
body {
background-color: get-dark-color('bg-primary');
color: get-dark-color('text-color');
}
.bg-primary {
background-color: get-dark-color('bg-primary') !important;
}
.bg-secondary {
background-color: get-dark-color('bg-secondary') !important;
}
kbd {
background-color: get-dark-color('accent-color');
color: get-dark-color('text-over-accent-color');
}
mark {
background-color: get-dark-color('highlight-color');
}
}
+199
View File
@@ -0,0 +1,199 @@
body.type-notes {
.wrapper {
display: flex;
padding: 0;
margin: 0;
width: 100%;
.content-section {
flex: 80%;
max-width: 80%;
order: 2;
/* background-color: lightseagreen; */
padding: 0;
position: relative;
padding-left: 0.5rem;
padding-right: 0.5rem;
.content {
padding: 0;
position: relative;
padding-top: 2rem;
min-height: 130vh;
.note-card-holder {
margin-top: 2rem;
display: flex;
flex-flow: wrap;
margin-left: auto;
padding: 0;
.note-card {
align-self: flex-start;
flex: auto;
.card {
margin: 0.5rem;
.card-body {
padding: 1rem;
pre {
margin: 0;
border-radius: 3px;
}
}
}
}
.note-title {
padding-left: 1rem;
color: get-light-color('accent-color');
&:before {
content: '';
display: inline-block;
width: 98%;
height: 100%;
margin-bottom: -26px;
border-bottom: 1px solid get-light-color('accent-color');
}
span {
background: get-light-color('bg-secondary');
padding-right: 5px;
}
}
}
}
}
}
@include media('<=extra-large') {
.note-card-holder {
.note-card {
flex: 30%;
}
}
}
@include media('<=large') {
.wrapper {
padding-left: 0px;
padding-right: 0px;
.content-section {
padding: 0;
max-width: 100%;
order: 2;
padding-bottom: 0.5rem;
@include transition();
.content {
overflow: hidden;
.note-card-holder {
margin: 0;
margin-top: 1.5rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
position: relative;
@include transition();
.note-card {
flex: 50%;
}
}
}
.container {
max-width: 100%;
}
&.hide {
max-width: 60%;
@include transition();
}
}
}
}
@include media('<=medium') {
.note-card-holder .note-card {
max-width: 50%;
min-width: 50%;
@include transition();
}
.content-section.hide .note-card-holder .note-card {
max-width: 100%;
min-width: 100%;
@include transition();
}
}
@include media('<=small') {
.wrapper {
padding-left: 0px;
padding-right: 0px;
flex-flow: column;
overflow: hidden;
.content-section {
.content {
width: 100%;
padding-left: 0;
padding-right: 0;
@include transition();
.note-card-holder {
margin-top: 0.5rem;
@include transition();
.note-card {
flex: 100%;
max-width: 100%;
@include transition();
}
}
}
&.hide {
flex: 100%;
max-width: 100%;
padding-left: 0;
width: 100%;
@include transition();
.content {
.note-card-holder {
margin-top: 0;
padding-top: 0;
@include transition();
}
}
}
}
}
}
}
html[data-theme='dark'] {
body.type-notes {
.wrapper {
.content-section {
.content {
.note-card-holder {
.note-title {
color: get-dark-color('accent-color');
&:before {
border-bottom: 1px solid get-dark-color('accent-color');
}
span {
background: get-dark-color('bg-secondary');
padding-right: 5px;
}
}
}
}
}
}
}
}
+388
View File
@@ -0,0 +1,388 @@
body.kind-page {
background-color: get-light-color('bg-secondary');
position: relative;
.wrapper {
display: flex;
padding: 0;
margin: 0;
width: 100%;
justify-content: space-between;
position: relative;
.content-section {
flex: 60%;
max-width: 60%;
order: 2;
padding: 0;
position: relative;
padding-left: 1rem;
padding-right: 1rem;
.content {
padding-top: 1.5rem;
.read-area {
background-color: get-light-color('bg-primary');
.hero-area {
margin-top: 3rem;
width: 100%;
height: 400px;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
.page-content {
width: 100%;
position: relative;
top: -4.5rem;
padding: 15px;
.author-profile {
position: relative;
align-content: center;
text-align: center;
.author-name {
margin-top: 0px;
}
p {
text-align: center;
}
img {
height: 120px;
width: 120px;
margin-left: auto;
margin-right: auto;
-o-object-fit: cover;
object-fit: cover;
background-color: get-light-color('bg-primary');
padding: 5px;
}
}
.title {
text-align: center;
}
.tags {
text-align: center;
}
.post-content {
padding: 15px;
h1,
h2 {
margin-top: 1.4rem;
}
h3,
h4,
h5,
h6 {
margin-top: 1.3rem;
}
}
.next-prev-navigator {
padding-left: 1rem !important;
padding-right: 1rem !important;
.next-article {
text-align: right;
}
.next-prev-text {
white-space: break-spaces;
}
a {
text-decoration: none !important;
}
}
}
}
}
}
.toc-section {
flex: 20%;
order: 3;
max-width: 20%;
@include transition();
.toc-holder {
position: sticky;
top: 4.5rem;
padding-top: 1rem;
overflow-x: hidden;
overflow-y: auto;
background-color: get-light-color('bg-primary');
margin-right: 0.5rem;
@include transition();
.toc {
position: relative;
padding-top: 0px;
@include transition();
nav {
padding-top: 0px;
margin-top: 0px;
display: flex;
flex-direction: column;
align-items: flex-start;
@include transition();
ul {
list-style: none;
padding-left: 0.5rem;
margin-bottom: 0rem;
width: 100%;
}
.nav-link {
padding: 0;
padding-left: 0.5rem;
text-decoration: none !important;
@include transition();
color: get-light-color('text-color');
&:hover,
&:focus,
&.active {
padding-left: 1rem;
padding-right: 0.5rem;
background-color: get-light-color('accent-color');
color: get-light-color('text-over-accent-color');
@include transition();
}
}
}
}
}
}
.disquss {
padding: 10px;
}
.share-buttons {
@include brand-background();
.btn {
border: none !important;
}
}
}
.btn-improve-page {
text-align: right;
}
#scroll-to-top {
position: fixed;
bottom: 0rem;
right: 1rem;
color: get-light-color('accent-color');
font-size: 24pt;
z-index: 900000;
visibility: hidden;
&:hover {
color: get-light-color('hover-over-accent-color');
}
&.show {
visibility: visible;
}
i {
box-shadow: $box-shadow;
background-color: get-light-color('bg-primary');
border-radius: 50%;
}
}
@include media('<=ultra-large') {
.content-section {
flex: 65%;
max-width: 65%;
}
.content-section .container {
max-width: 100%;
}
}
@include media('<very-large') {
.container {
max-width: 100%;
}
.wrapper {
padding-left: 0px;
padding-right: 0px;
.content-section {
padding: 0;
flex: 60%;
max-width: 100%;
order: 2;
overflow: hidden;
.content {
overflow: hidden;
.read-area {
.hero-area {
height: 300px;
margin-top: 1rem;
}
.page-content {
padding: 0px;
}
}
}
}
.toc-section {
display: none;
}
.share-buttons {
max-width: 48%;
}
.btn-improve-page {
margin-right: 1rem;
max-width: 48%;
}
#disqus_thread,
.dsq-brlink {
padding: 5px;
}
}
}
@include media('<=small') {
.wrapper {
padding: 0px;
display: flex;
flex-direction: column;
.content-section {
padding: 0;
flex: 100%;
max-width: 100%;
order: 3;
.content {
.read-area {
.hero-area {
height: 200px;
margin-top: 1rem;
}
.page-content {
padding: 0px;
.next-prev-navigator {
.previous-article {
text-align: center;
margin: 5px;
a {
width: 100%;
}
}
.next-article {
text-align: center;
margin: 5px;
a {
width: 100%;
}
}
}
}
}
}
}
.share-buttons {
max-width: 100%;
}
.btn-improve-page {
text-align: start;
max-width: 100%;
}
#scroll-to-top {
right: 0.5rem;
}
#disqus_thread,
.dsq-brlink {
padding: 5px;
}
}
}
}
html[data-theme='dark'] {
body.kind-page {
background-color: get-dark-color('bg-secondary');
.wrapper {
.content-section {
.content {
.read-area {
background-color: get-dark-color('bg-primary');
.page-content {
.author-profile {
img {
background-color: get-dark-color('bg-primary');
}
}
}
}
}
}
.toc-section {
.toc-holder {
background-color: get-dark-color('bg-primary');
hr {
background-color: get-dark-color('muted-text-color');
}
.toc {
nav {
.nav-link {
color: get-dark-color('text-color');
&:hover,
&:focus,
&.active {
background-color: get-dark-color('accent-color');
color: get-dark-color('text-over-accent-color');
}
}
}
}
}
}
#scroll-to-top {
color: get-dark-color('accent-color');
&:hover {
color: get-dark-color('hover-over-accent-color');
}
i {
background-color: get-dark-color('bg-primary');
}
}
}
}
}
+72
View File
@@ -0,0 +1,72 @@
@function get-color($mode, $key) {
@if map-has-key($themes, $mode) {
$theme: map-get($themes, $mode);
@if map-has-key($theme, $key) {
@return map-get($theme, $key);
}
}
@return red; // default color for debugging purpose
}
@function get-light-color($key) {
@return get-color('light', $key);
}
@function get-dark-color($key) {
@return get-color('dark', $key);
}
@mixin reset-list {
margin: 0;
padding: 0;
list-style: none;
}
@mixin section-title-adjustment() {
h1 > span {
margin-top: -55px; /* Size of fixed header */
padding-bottom: 55px;
display: block;
}
}
@mixin brand-background() {
@each $brand, $color in $brand-colors {
.bg-#{$brand} {
background-color: $color;
}
}
}
@mixin transition() {
transition: all $transition-type $transition-duration;
}
@mixin selection-color($theme: 'light') {
background: get-light-color('accent-color');
color: get-light-color('text-over-accent-color');
@if $theme == 'dark' {
background: get-dark-color('accent-color');
color: get-dark-color('text-over-accent-color');
}
}
@function get-alert-bg-color($type, $mode) {
$colors: map-get($alerts, $type);
@if $mode == 'light' {
@return map-get($colors, 'bg-color');
} @else {
@return map-get($colors, 'text-color');
}
@return red;
}
@function get-alert-text-color($type, $mode) {
$colors: map-get($alerts, $type);
@if $mode == 'light' {
@return map-get($colors, 'text-color');
} @else {
@return map-get($colors, 'bg-color');
}
@return red;
}
+285
View File
@@ -0,0 +1,285 @@
@mixin nav-item-hover-effect($theme: 'light') {
color: get-light-color('accent-color') !important;
border-bottom: 2px solid get-light-color('accent-color') !important;
background: rgba(get-light-color('accent-color'), 0.1);
@include transition();
@if $theme == 'dark' {
color: get-dark-color('accent-color') !important;
border-bottom: 2px solid get-dark-color('accent-color') !important;
background: rgba(get-dark-color('accent-color'), 0.1);
}
}
.top-navbar {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 50px;
z-index: 99999;
margin: 0px;
padding-top: 0.4rem;
color: get-light-color('heading-color');
text-align: center;
background-color: get-light-color('bg-primary');
@include transition();
.navbar-brand {
color: get-light-color('heading-color');
font-weight: 600;
img {
width: 42px;
padding: 5px;
margin-left: -10px;
}
}
img {
display: inline-block;
}
.sidebar-icon {
width: 32px;
height: 32px;
filter: invert(0.5);
}
li {
a {
color: get-light-color('heading-color');
text-decoration: none !important;
font-weight: 500;
@include transition();
border-bottom: 2px solid transparent;
&:hover {
@include nav-item-hover-effect();
}
}
}
.navbar-nav .active {
@include nav-item-hover-effect();
}
#top-navbar-divider {
margin-top: 10px;
background-color: get-light-color('muted-text-color');
height: 20px;
width: 2px;
}
.dropdown-menu {
box-shadow: $box-shadow;
border: 1px solid rgba(get-light-color('accent-color'), 0.1);
max-height: 0vh;
overflow: hidden;
display: block;
visibility: hidden;
@include transition();
&.show {
max-height: 100vh;
visibility: visible;
@include transition();
a {
color: get-light-color('heading-color') !important;
&:hover {
@include nav-item-hover-effect();
}
}
}
}
.navbar-collapse {
margin-top: -5px;
&.show,
&.collapsing {
background-color: get-light-color('bg-primary');
padding-left: 1rem;
li {
a {
color: get-light-color('heading-color');
font-weight: 500;
@include transition();
}
}
.navbar-nav {
.active {
color: get-light-color('accent-color');
}
a:hover {
color: get-light-color('accent-color');
}
}
}
}
&.transparent-navbar {
background-color: transparent !important;
.navbar-brand {
color: get-light-color('inverse-text-color');
font-weight: 600;
}
li {
a {
color: get-light-color('inverse-text-color');
}
}
.feather-menu {
stroke: get-light-color('inverse-text-color');
}
}
#themeMenu {
width: 25px;
min-width: 3rem;
img.theme-icon {
display: block !important;
margin-left: auto !important;
margin-right: auto !important;
}
}
@include media('<very-large') {
height: -moz-fit-content;
height: fit-content;
padding-bottom: 0px;
padding-top: 0px;
.container {
max-width: 100%;
}
&.transparent-navbar {
.navbar-nav .active,
li a:hover {
color: get-light-color('accent-color');
@include transition();
}
}
#top-navbar-divider {
height: auto;
width: auto;
margin-right: 15px;
border-top: 1px solid #c0ccda;
}
.dropdown-menu {
text-align: center;
margin-right: 1rem;
@include transition();
}
.languageSelector {
position: fixed;
right: 0.5rem;
bottom: 1rem;
z-index: 10000000;
background-color: get-light-color('bg-primary');
box-shadow: $box-shadow;
}
#themeMenu {
width: 100%;
}
}
@include media('<=small') {
.dropdown-menu {
margin-left: -1rem;
margin-right: 0rem;
}
}
}
.feather-sidebar,
.feather-menu {
width: 1.5rem;
height: 1.5rem;
stroke: get-light-color('text-color');
}
html[data-theme='dark'] {
.top-navbar {
color: get-dark-color('heading-color');
background-color: get-dark-color('bg-primary');
.navbar-brand {
color: get-dark-color('heading-color');
}
.sidebar-icon {
filter: invert(0.5);
}
li {
a {
color: get-dark-color('heading-color');
}
}
#top-navbar-divider {
background-color: get-dark-color('muted-text-color');
}
.dropdown-menu {
box-shadow: $box-shadow;
background-color: get-dark-color('bg-card');
border: 1px solid rgba(get-dark-color('accent-color'), 0.1);
&.show {
a {
color: get-dark-color('heading-color') !important;
}
}
}
.navbar-collapse {
&.show,
&.collapsing {
background-color: get-dark-color('bg-primary');
li {
a {
color: get-dark-color('heading-color');
}
}
.navbar-nav {
.active {
color: get-dark-color('accent-color');
}
a:hover {
color: get-dark-color('accent-color');
}
}
}
}
&.transparent-navbar {
.navbar-brand {
color: get-dark-color('text-color');
}
li {
a {
color: get-dark-color('text-color');
}
}
.feather-menu {
stroke: get-dark-color('text-color');
}
}
}
img.theme-icon {
filter: invert(1);
}
.feather-sidebar,
.feather-menu {
stroke: get-dark-color('text-color');
}
}
+301
View File
@@ -0,0 +1,301 @@
.sidebar-section {
order: 1;
flex: 20%;
max-width: 20%;
@include transition();
.sidebar-holder {
top: 2.5rem;
position: sticky;
background-color: get-light-color('bg-primary');
height: 100vh;
overflow: auto;
box-shadow: $box-shadow;
@include transition();
.sidebar {
background: get-light-color('bg-primary');
height: 100vh;
@include transition();
#search-box {
margin-left: 5%;
margin-right: 5%;
width: -webkit-fill-available;
height: 35px;
padding-left: 15px;
margin-top: 30px;
margin-bottom: 10px;
border-radius: 5px;
background-color: get-light-color('bg-secondary');
@include transition();
border: 1px solid rgba(get-light-color('accent-color'), 0.1);
&:focus {
border: 1pt solid get-light-color('accent-color');
outline: none;
}
}
#list-heading {
padding-left: 0px !important;
}
.sidebar-tree {
padding-left: 1rem;
position: relative;
width: -moz-max-content;
width: max-content;
.tree {
margin: 0;
padding: 0;
list-style: none;
li {
margin: 0;
padding: 0 1em;
line-height: 2em;
color: get-light-color('heading-color');
position: relative;
i {
color: get-light-color('heading-color');
font-size: 12px;
margin-right: 5px;
}
}
.shift-right {
margin-left: 5px;
}
.subtree {
padding-left: 0.7rem;
&:before {
content: '';
display: block;
width: 0;
position: absolute;
top: 2.5rem;
left: 1.5rem;
bottom: 0.9rem;
border-left: 1px solid get-light-color('text-color');
}
li {
&:before {
content: '';
display: block;
width: 18px;
height: 0;
border-top: 1px solid get-light-color('text-color');
margin-top: -1px;
position: absolute;
top: 18px;
left: -2px;
}
&:last-child:before {
background: get-light-color('bg-primary');
height: auto;
top: 1.1rem;
bottom: 0;
}
ul {
position: relative;
padding-left: 0.5rem;
display: none;
list-style: none;
&.active {
display: block;
}
&:before {
content: '';
display: block;
width: 0;
position: absolute;
top: -8px;
left: 6px;
bottom: 0.8rem;
border-left: 1px solid;
}
}
}
}
}
}
}
}
@include media('<=ultra-large') {
flex: 15%;
max-width: 15%;
.sidebar-holder {
max-width: 100%;
}
}
@include media('<=extra-large') {
.sidebar-holder {
max-width: 20rem;
}
}
@include media('<=very-large') {
.sidebar-tree {
margin-left: 1rem;
}
}
@include media('<very-large') {
flex: 0%;
max-width: 0%;
min-height: 100vh;
@include transition();
.sidebar-holder {
position: sticky;
top: 2.5rem;
width: 100%;
padding-bottom: 1rem;
max-height: calc(100vh - 2.5rem);
}
&.expanded {
flex: 30%;
max-width: 30%;
margin-right: 0.5rem;
@include transition();
}
}
@include media('<=medium') {
flex: 0%;
max-width: 0%;
min-height: 100vh;
@include transition();
.sidebar-holder {
position: sticky;
top: 2.5rem;
width: 100%;
}
&.expanded {
flex: 40%;
max-width: 40%;
margin-right: 0.5rem;
@include transition();
}
}
@include media('<=small') {
width: 100%;
min-height: 0;
max-height: 0;
max-width: 100%;
@include transition();
.sidebar-holder {
max-height: 0;
height: -moz-fit-content;
height: fit-content;
overflow: hidden;
max-width: 100%;
@include transition();
.sidebar {
position: relative;
height: -moz-fit-content;
height: fit-content;
max-height: -moz-fit-content;
max-height: fit-content;
width: 100vw;
min-height: 0;
overflow: hidden;
@include transition();
.sidebar-tree {
margin-left: 0rem;
max-height: 0;
@include transition();
}
}
}
&.expanded {
margin-top: 2rem;
position: relative;
height: -moz-fit-content;
height: fit-content;
flex: none;
max-height: 300vh;
max-width: 100%;
@include transition();
.sidebar-holder {
max-height: 200vh;
@include transition();
.sidebar-tree {
max-height: 200vh;
@include transition();
}
}
}
}
}
.feather-plus-circle,
.feather-minus-circle {
width: 1rem;
height: 1rem;
}
html[data-theme='dark'] {
.sidebar-section {
.sidebar-holder {
background-color: get-dark-color('bg-primary');
.sidebar {
background: get-dark-color('bg-primary');
#search-box {
background-color: get-dark-color('bg-secondary');
border: 1px solid rgba(get-dark-color('accent-color'), 0.1);
&:focus {
border: 1pt solid get-dark-color('accent-color');
}
}
.sidebar-tree {
.tree {
li {
color: get-dark-color('heading-color');
i {
color: get-dark-color('heading-color');
}
}
.subtree {
&:before {
border-left: 1px solid get-dark-color('text-color');
}
li {
&:before {
border-top: 1px solid get-dark-color('text-color');
}
&:last-child:before {
background: get-dark-color('bg-primary');
}
}
}
}
}
}
}
}
}
+15
View File
@@ -0,0 +1,15 @@
/* override this file for custom css */
/* you can import boostrap mixins */
// @import 'bootstrap/scss/mixins';
// Example usage
// .some-class {
// @include media-breakpoint-up(sm) {
// // Larger than sm: 576px
// display: inline;
// }
// @include media-breakpoint-down(md) {
// // Smaller than md: 768px
// display: block;
// }
// }
+232
View File
@@ -0,0 +1,232 @@
@use 'sass:map';
$progress-bar-colors: (
'blue': #048dff,
'yellow': #eebb4d,
'pink': #ed63d2,
'green': #2dca73,
'sky': #00c9e3,
'orange': #ff7c7c,
);
@mixin circular-progress-bar-color() {
@each $color, $value in $progress-bar-colors {
&.#{$color} {
.circular-progress-bar {
border-color: $value;
}
}
}
}
@mixin circular-progress-animation-breakpoints() {
$progress: 0;
$duration: 0;
$delay: 1.8;
@for $i from 0 through 20 {
.circular-progress-percentage-#{$progress} {
animation: circular-loading-#{$progress} #{$duration}s linear forwards 1.8s;
}
.circular-progress-percentage-#{$progress}-delay {
animation-delay: #{$delay}s;
}
$progress: $progress + 5;
$duration: $duration + 0.18;
$delay: $duration + 1.8;
}
}
@mixin circular-progress-animation-keyframes($progress, $degree, $keyframes) {
@for $i from 0 through $keyframes {
@keyframes circular-loading-#{$progress} {
0% {
transform: rotate(0);
}
100% {
transform: rotate(#{$degree}deg);
}
}
$progress: $progress + 5;
$degree: $degree + 18;
}
}
.about-section {
.social-link {
list-style: none;
padding: 0.2rem;
a {
font-size: 1.5rem;
color: get-light-color('text-color');
padding: 0.5rem;
&:hover {
color: get-light-color('accent-color');
@include transition();
}
}
}
.circular-progress {
width: 150px;
height: 150px;
line-height: 150px;
background: none;
margin: 0 auto;
box-shadow: none;
position: relative;
&::after {
content: '';
width: 100%;
height: 100%;
border-radius: 50%;
border: 12px solid get-light-color('bg-primary');
position: absolute;
top: 0;
left: 0;
}
span {
width: 50%;
height: 100%;
overflow: hidden;
position: absolute;
top: 0;
z-index: 1;
}
.circular-progress-bar {
width: 100%;
height: 100%;
background: none;
border-width: 12px;
border-style: solid;
position: absolute;
top: 0;
}
.circular-progress-left {
left: 0;
.circular-progress-bar {
left: 100%;
border-top-right-radius: 80px;
border-bottom-right-radius: 80px;
border-left: 0;
transform-origin: center left;
}
}
.circular-progress-right {
right: 0;
.circular-progress-bar {
left: -100%;
border-top-left-radius: 80px;
border-bottom-left-radius: 80px;
border-right: 0;
transform-origin: center right;
}
}
.circular-progress-value {
width: 90%;
height: 90%;
padding: 1rem;
border-radius: 50%;
background: get-light-color('text-color');
font-size: 1rem;
color: get-light-color('bg-primary');
line-height: initial;
text-align: center;
position: absolute;
top: 5%;
left: 5%;
display: flex;
justify-content: center;
align-items: center;
}
@include circular-progress-bar-color();
@include circular-progress-animation-breakpoints();
@include circular-progress-animation-keyframes($progress: 0, $degree: 0, $keyframes: 20);
}
@include media('<=large') {
.circular-progress {
margin-bottom: 20px;
}
}
@include media('<=medium') {
.about-section.container {
max-width: 100%;
}
.circular-progress {
width: 135px;
height: 135px;
}
}
@include media('<=small') {
.circular-progress {
width: 150px;
height: 150px;
}
.circular-progress .circular-progress-value {
font-size: 1rem;
}
}
@include media('<=tiny') {
.col-6 {
flex: auto;
max-width: 100%;
}
.social-link {
flex-wrap: wrap;
}
.certificate-badge {
padding-left: 2rem;
padding-right: 2rem;
}
.circular-progress {
width: 200px;
height: 200px;
.circular-progress-left .circular-progress-bar {
border-top-right-radius: 100px;
border-bottom-right-radius: 100px;
}
.circular-progress-right .circular-progress-bar {
border-top-left-radius: 100px;
border-bottom-left-radius: 100px;
}
}
}
}
html[data-theme='dark'] {
.about-section {
.social-link {
a {
color: get-dark-color('text-color');
&:hover {
color: get-dark-color('accent-color');
}
}
}
.circular-progress {
&::after {
border: 12px solid get-dark-color('bg-primary');
}
.circular-progress-value {
background: get-dark-color('inverse-text-color');
color: get-dark-color('text-color');
}
}
}
}
@@ -0,0 +1,78 @@
.accomplishments-section {
@include section-title-adjustment();
.card {
background: get-light-color('bg-card');
border-top: 2px solid get-light-color('accent-color');
height: 100%;
&:hover,
&:focus {
border-top: 2px solid get-light-color('hover-over-accent-color');
}
.card-header {
background: none;
border: none;
.sub-title {
color: get-light-color('muted-text-color');
margin-top: 0.4rem;
}
}
.card-body {
padding: 0;
padding-left: 1rem;
padding-right: 1rem;
}
.card-footer {
background: get-light-color('bg-card');
border: none;
padding: 0;
padding-left: 0.7rem;
padding-bottom: 0.3rem;
}
}
@include media('<=large') {
width: 100%;
padding: 0;
padding-left: 0.2rem;
padding-right: 0.2rem;
margin-top: 2rem;
.container {
max-width: 100%;
}
}
@include media('<=small') {
flex: 100%;
max-width: 100%;
}
}
html[data-theme='dark'] {
.accomplishments-section {
.card {
background: get-dark-color('bg-card');
border-top: 2px solid get-dark-color('accent-color');
&:hover,
&:focus {
border-top: 2px solid get-dark-color('hover-over-accent-color');
}
.card-header {
.sub-title {
color: get-dark-color('muted-text-color');
}
}
.card-footer {
background: get-dark-color('bg-card');
}
}
}
}
+159
View File
@@ -0,0 +1,159 @@
.achievements-section {
@include section-title-adjustment();
.container {
padding-top: 0.5rem;
}
#gallery {
.achievement-entry {
margin-top: 5px;
margin-bottom: 5px;
margin-left: 7px;
margin-right: 7px;
z-index: 1;
background-color: get-light-color('bg-secondary');
background-size: cover;
background-repeat: no-repeat;
background-position: center;
position: relative;
overflow: hidden;
@include transition();
.title {
color: get-light-color('inverse-text-color');
background-color: rgba(get-light-color('bg-primary-inverse'), 0.7);
opacity: 0;
padding: 5px;
position: absolute;
bottom: 0px;
width: 100%;
margin-bottom: 0px;
bottom: -5px;
}
&:hover {
cursor: pointer;
transform: scale(1.1);
@include transition();
z-index: 20000;
.svg-inline--fa {
opacity: 1;
font-size: 1rem;
@include transition();
}
.title {
opacity: 1;
bottom: 0px;
@include transition();
}
}
}
.achievement-details {
cursor: pointer;
z-index: 1;
height: 75vh !important;
opacity: 1 !important;
transition: none !important;
transform: none !important;
.img-type-1 .svg-inline--fa,
.img-type-2 .svg-inline--fa {
margin-top: 0px !important;
transition: none !important;
float: right;
}
}
.img-type-1 {
height: 300px;
.svg-inline--fa {
margin-top: 135px;
}
}
.img-type-2 {
height: 146px;
margin-bottom: 8px;
.svg-inline--fa {
margin-top: 50px;
}
}
.svg-inline--fa {
color: get-light-color('muted-text-color');
background-color: rgba(get-light-color('bg-primary-inverse'), 0.7);
padding: 10px;
font-size: 0rem;
opacity: 0;
}
.caption {
background-color: rgba(get-light-color('bg-primary-inverse'), 0.7);
bottom: 1rem;
left: 1rem;
color: get-light-color('inverse-text-color');
padding: 15px;
position: absolute;
@include transition();
h4 {
color: get-light-color('inverse-text-color');
}
p {
font-size: 16px;
font-weight: 300;
color: get-light-color('inverse-text-color');
}
}
@include media('<=medium') {
.container {
max-width: 100%;
}
.col-md-6 {
flex: 50%;
width: 50%;
}
}
@include media('<=small') {
#gallery .achievement-entry:hover {
transform: scale(1.05);
}
}
}
}
html[data-theme='dark'] {
.achievements-section {
#gallery {
.achievement-entry {
background-color: get-dark-color('bg-secondary');
.title {
color: get-dark-color('inverse-text-color');
background-color: rgba(get-dark-color('bg-primary-inverse'), 0.7);
}
}
.svg-inline--fa {
color: get-dark-color('muted-text-color');
background-color: rgba(get-dark-color('bg-primary-inverse'), 0.7);
}
.caption {
background-color: rgba(get-dark-color('bg-primary-inverse'), 0.7);
color: get-dark-color('inverse-text-color');
h4 {
color: get-dark-color('inverse-text-color');
}
p {
color: get-dark-color('inverse-text-color');
}
}
}
}
}
+240
View File
@@ -0,0 +1,240 @@
.education-section {
@include section-title-adjustment();
.card {
&:hover,
&:focus {
border-left: 2px solid get-light-color('accent-color');
}
}
.education-info-table {
width: 100%;
border: none;
background: none;
.icon {
width: 2rem;
padding-left: 0;
padding-right: 0;
position: relative;
.hline {
position: absolute;
left: 1rem;
top: 0;
background-color: get-light-color('accent-color');
height: 100%;
width: 2px;
}
.icon-holder {
background-color: get-light-color('accent-color');
border-radius: 50%;
height: 2rem;
width: 2rem;
padding: 0.2rem;
text-align: center;
color: get-light-color('text-over-accent-color');
position: relative;
}
}
tr,
th,
td {
border: none !important;
padding: 0;
background: none !important;
}
tr {
&:hover {
background: none !important;
}
&:first-child {
.hline {
height: 65%;
top: auto;
}
}
&:last-child {
.hline {
height: 50%;
}
}
.line {
width: 5%;
padding-left: 0;
padding-right: 0;
div {
height: 2px;
margin-right: -1px;
background-color: get-light-color('accent-color');
}
}
.details {
.degree-info {
padding: 1rem;
margin-top: 0.5rem;
margin-bottom: 0.5rem;
border-left: 2px solid get-light-color('accent-color');
border-top: 1px solid get-light-color('bg-primary');
border-bottom: 1px solid get-light-color('bg-primary');
border-right: 1px solid get-light-color('bg-primary');
border-radius: 5px;
h5 {
margin-bottom: 0.3rem;
}
.timeframe {
color: get-light-color('muted-text-color');
text-align: right;
}
.taken-courses {
table {
margin-left: 1rem;
width: 100%;
@include transition();
background: none;
border: none;
tr,
td,
th {
background: none;
border: none;
color: get-light-color('text-color');
}
tr {
height: auto !important;
}
th {
.course-name-header {
width: 50%;
}
}
}
.hidden-course {
display: none;
@include transition();
}
ul {
margin-bottom: 0;
}
}
.custom-section {
.custom-content {
padding-bottom: 0.5em;
}
}
}
}
}
}
.hidden {
display: none;
}
@include media('<=large') {
.container {
padding-left: 0;
}
}
@include media('<=small') {
padding-left: 0.5rem;
padding-right: 0.5rem;
.container {
padding-right: 0;
}
.icon {
display: none;
}
.line {
display: none;
}
.timeframe {
text-align: left;
}
}
}
.education-alt .degree-info {
border-right: 2px solid get-light-color('accent-color');
}
html[data-theme='dark'] {
.education-section {
.card {
&:hover,
&:focus {
border-left: 2px solid get-dark-color('accent-color');
}
}
.education-info-table {
.icon {
.hline {
background-color: get-dark-color('accent-color');
}
.icon-holder {
background-color: get-dark-color('accent-color');
color: get-dark-color('text-over-accent-color');
}
}
tr {
.line {
div {
background-color: get-dark-color('accent-color');
}
}
.details {
.degree-info {
border-left: 2px solid get-dark-color('accent-color');
border-top: 1px solid get-dark-color('bg-primary');
border-bottom: 1px solid get-dark-color('bg-primary');
border-right: 1px solid get-dark-color('bg-primary');
.timeframe {
color: get-dark-color('muted-text-color');
}
.taken-courses {
table {
tr,
td,
th {
color: get-dark-color('text-color');
}
}
}
&:hover{
border: 1px solid rgba(get-dark-color('accent-color'),0.2);
border-left: 2px solid get-dark-color('accent-color');
}
}
}
}
}
}
.education-alt .degree-info {
border-right: 2px solid get-dark-color('accent-color');
}
}
+155
View File
@@ -0,0 +1,155 @@
.experiences-section {
@include section-title-adjustment();
padding-bottom: 1rem;
ul {
padding-left: 1rem;
& > li {
margin-left: 0;
color: get-light-color('text-color');
}
}
.designation {
font-weight: 600;
}
.circle {
padding: 13px 20px;
border-radius: 50%;
background-color: get-light-color('accent-color');
color: get-light-color('text-over-accent-color');
max-height: 50px;
z-index: 2;
}
.timeline {
margin-top: 1.5rem !important;
.vertical-line {
align-self: stretch;
&::after {
content: '';
position: absolute;
border-left: 3px solid get-light-color('accent-color');
z-index: 1;
height: 100%;
left: 50%;
}
&:nth-child(even)::after {
left: calc(50% - 3px) !important;
}
}
.horizontal-line {
div {
padding: 0;
height: 40px;
}
hr {
border-top: 3px solid get-light-color('accent-color');
margin: 0;
top: 17px;
position: relative;
}
.timeline-side-div {
display: flex;
overflow: hidden;
}
.corner {
border: 3px solid get-light-color('accent-color');
width: 100%;
position: relative;
border-radius: 15px;
}
}
.row {
&:nth-child(2n) {
div {
&:nth-child(1) .corner {
left: 50%;
top: -50%;
}
&:nth-child(3) .corner {
left: -50%;
top: calc(50% - 3px);
}
}
}
&:nth-child(4n) {
div {
&:nth-child(1) .corner {
left: 50%;
top: calc(50% - 3px);
}
&:nth-child(3) .corner {
left: -50%;
top: -50%;
}
}
}
}
}
.company-heading {
h5 {
display: inline;
margin-right: 0.25em;
}
p {
display: inline;
}
}
@include media('<=medium') {
.container {
max-width: 100%;
}
}
@include media('<=small') {
.container {
padding-left: 0px;
padding-right: 0px;
}
.timeline {
.vertical-line {
visibility: hidden;
}
.horizontal-line {
visibility: hidden;
}
}
}
}
html[data-theme='dark'] {
.experiences-section {
ul {
& > li {
color: get-dark-color('text-color');
}
}
.circle {
background-color: get-dark-color('accent-color');
color: get-dark-color('text-over-accent-color');
}
.timeline {
.vertical-line {
&::after {
border-left: 3px solid get-dark-color('accent-color');
}
}
.horizontal-line {
hr {
border-top: 3px solid get-dark-color('accent-color');
}
.corner {
border: 3px solid get-dark-color('accent-color');
}
}
}
}
}
+112
View File
@@ -0,0 +1,112 @@
.footer {
color: get-light-color('muted-text-color') !important;
background-color: get-light-color('footer-color');
position: relative;
z-index: 9999;
h5 {
color: get-light-color('inverse-text-color');
}
a {
color: get-light-color('muted-text-color');
@include transition();
&:hover {
margin-left: 5px;
text-decoration: get-light-color('muted-text-color') underline;
@include transition();
}
}
ul {
list-style: none;
padding-left: 0;
li {
margin-top: 5px;
}
}
hr {
background-color: get-light-color('muted-text-color');
}
p:first-child {
color: get-light-color('inverse-text-color');
}
input {
background-color: get-light-color('inverse-text-color');
&:focus {
background-color: get-light-color('bg-secondary');
}
}
#disclaimer {
color: get-light-color('muted-text-color') !important;
text-align: justify;
& > strong {
color: get-light-color('inverse-text-color') !important;
}
}
#theme {
color: get-light-color('inverse-text-color');
img {
width: 32px;
display: inline-block;
}
}
#hugo {
&:hover {
margin-right: 5px;
@include transition();
}
img {
display: inline-block;
}
}
}
html[data-theme='dark'] {
.footer {
color: get-dark-color('muted-text-color') !important;
background-color: get-dark-color('footer-color');
h5 {
color: get-dark-color('heading-color');
}
a {
color: get-dark-color('muted-text-color');
&:hover {
text-decoration: get-dark-color('muted-text-color') underline;
}
}
hr {
background-color: get-dark-color('muted-text-color');
}
p:first-child {
color: get-dark-color('muted-text-color');
}
input {
background-color: get-dark-color('bg-primary');
&:focus {
background-color: get-dark-color('bg-secondary');
}
}
#disclaimer {
color: get-dark-color('muted-text-color') !important;
& > strong {
color: get-dark-color('text-color') !important;
}
}
#theme {
color: get-dark-color('text-color');
}
}
}
+131
View File
@@ -0,0 +1,131 @@
.home {
height: 100vh;
padding: 0;
margin: 0;
color: get-light-color('text-over-accent-color');
overflow: hidden;
.background {
height: 100%;
width: 100%;
padding: 0;
margin: 0;
background-attachment: fixed;
background-position: center;
transform: scale(1.1);
filter: blur(3px);
background-size: cover;
}
.arrow-center {
display: flex;
justify-content: center;
}
/*
Resolves https://github.com/hugo-toha/toha/issues/70
fixed attached images use the whole <body> size. On mobile this can get really
tall which blows your image out. Setting the attachment back to scroll allows
your cover image to stretch within its own container
*/
@supports (-webkit-touch-callout: none) {
.background {
background-attachment: scroll;
}
}
.content {
position: relative;
top: -65%;
height: 60%;
}
img {
width: 148px;
height: 148px;
background-color: get-light-color('bg-secondary');
padding: 5px;
margin-bottom: 10px;
}
.greeting,
.greeting-subtitle {
color: get-light-color('text-over-accent-color');
}
.typing-carousel {
font-size: 14pt;
color: get-light-color('text-over-accent-color');
}
#typing-carousel-data {
display: none;
}
.arrow {
position: absolute;
color: get-light-color('text-over-accent-color');
font-size: 1.5rem;
bottom: 0;
}
.bounce {
animation: bounce 2s infinite;
}
@keyframes bounce {
0%,
20%,
50%,
80%,
100% {
transform: translateY(0);
}
40% {
transform: translateY(-30px);
}
60% {
transform: translateY(-15px);
}
}
@include media('<=small') {
.content {
position: relative;
top: -75%;
height: 65%;
}
img {
width: 140px;
max-width: 50%;
height: auto;
}
.greeting {
font-size: 24pt;
}
}
}
html[data-theme='dark'] {
.home {
color: get-dark-color('text-over-accent-color');
img {
background-color: get-dark-color('bg-secondary');
}
.greeting,
.greeting-subtitle {
color: get-dark-color('text-over-accent-color');
}
.typing-carousel {
color: get-dark-color('text-over-accent-color');
}
.arrow {
color: get-dark-color('text-over-accent-color');
}
}
}
+48
View File
@@ -0,0 +1,48 @@
.pdf-viewer {
canvas {
border: 1px solid black;
direction: ltr;
width: 100%;
height: auto;
display: none;
}
.paginator {
display: flex!important;
width: 100% !important;
text-align: center;
margin-bottom: 0.2rem !important;
justify-content: space-between;
.page-number-indicator {
margin-left: auto;
margin-right: auto;
}
}
.loading-wrapper {
display: none;
justify-content: center;
align-items: center;
width: 100%;
height: 350px;
}
.loading {
display: inline-block;
width: 50px;
height: 50px;
border: 3px solid #d2d0d0;;
border-radius: 50%;
border-top-color: #383838;
animation: spin 1s ease-in-out infinite;
-webkit-animation: spin 1s ease-in-out infinite;
}
@keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
}
+100
View File
@@ -0,0 +1,100 @@
.projects-section {
.card {
.card-header {
background-color: get-light-color('bg-card');
padding: 0.7rem;
padding-bottom: 0rem;
text-decoration: none;
.card-img-xs {
margin-right: 0.5rem;
}
.sub-title {
color: get-light-color('muted-text-color');
margin-top: 0.4rem;
span {
&:nth-child(1) {
float: left;
}
&:nth-child(2) {
float: right;
}
}
}
}
.card-body {
padding: 0.7rem;
}
}
.filtr-projects {
padding: 1rem !important;
}
.project-card-footer {
display: flex;
.badge {
margin-left: 0.1em;
margin-right: 0.1em;
}
}
.project-tags-holder {
width: 70%;
}
.project-btn-holder {
width: 30%;
display: flex;
justify-content: flex-end;
flex-direction: column;
span {
display: flex;
justify-content: flex-end;
}
}
@include media('<=large') {
padding-left: 0;
padding-right: 0;
width: 100%;
.container {
max-width: 100%;
}
.filtr-projects {
padding: 0;
}
.filtr-item {
flex: 50%;
padding-left: 0.2rem;
padding-right: 0.2rem;
max-width: calc(100% / 2 - 0.2rem);
}
}
@include media('<=small') {
.btn {
margin-top: 0.3125rem;
}
.filtr-item {
max-width: 100%;
}
}
}
html[data-theme='dark'] {
.projects-section {
.card {
.card-header {
background-color: get-dark-color('bg-card');
.sub-title {
color: get-dark-color('muted-text-color');
}
}
}
}
}
+132
View File
@@ -0,0 +1,132 @@
.publications-section {
@include section-title-adjustment();
.card {
background: get-light-color('bg-card');
border-top: 2px solid get-light-color('accent-color');
&:hover,
&:focus {
border-top: 2px solid get-light-color('accent-color');
}
.card-header {
background: none;
border: none;
display: flex;
flex-direction: column;
.sub-title {
color: get-light-color('muted-text-color');
margin-top: 0.4rem;
span:nth-child(2) {
float: right !important;
}
}
}
.card-body {
padding: 0;
padding-left: 1rem;
padding-right: 1rem;
}
.card-footer {
background: get-light-color('bg-card');
border: none;
padding: 0;
padding-left: 1rem;
padding-right: 1rem;
padding-bottom: 0.3rem;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
}
.filtr-publications {
padding: 1rem !important;
}
.btn-group {
justify-content: center;
}
@include media('<=large') {
padding-left: 0;
padding-right: 0;
width: 100%;
.container {
max-width: 100%;
}
.filtr-publications {
padding: 0;
}
.pub-filtr-item {
padding-left: 0.2rem;
padding-right: 0.2rem;
}
}
@include media('<=medium') {
.pub-filtr-item {
flex: 100%;
}
}
@include media('<=small') {
.pub-filtr-item {
flex: 100%;
max-width: 100%;
}
.details-btn {
.btn {
margin-top: 0.5rem;
margin-left: auto;
}
}
.card {
.card-footer {
padding-left: 0.5rem;
.tags {
flex: 100%;
max-width: 100%;
.btn {
margin-top: 0.2rem;
}
}
}
}
}
}
html[data-theme='dark'] {
.publications-section {
.card {
background: get-dark-color('bg-card');
border-top: 2px solid get-dark-color('accent-color');
&:hover,
&:focus {
border-top: 2px solid get-dark-color('accent-color');
}
.card-header {
.sub-title {
color: get-dark-color('muted-text-color');
}
}
.card-footer {
background: get-dark-color('bg-card');
}
}
}
}
+32
View File
@@ -0,0 +1,32 @@
.recent-posts-section {
.container {
padding-top: 1rem;
}
h1 > span {
margin-top: -55px; /* Size of fixed header */
padding-bottom: 55px;
display: block;
}
@include media('<medium') {
.post-card {
margin-left: 1%;
margin-right: 1%;
width: 98%;
}
}
@include media('>=medium', '<large') {
.container {
max-width: 100%;
}
.post-card {
width: calc(100% / 2);
}
}
@include media('>=large') {
.post-card {
width: calc(100% / 3);
}
}
}
+46
View File
@@ -0,0 +1,46 @@
.skills-section {
.card {
margin-top: 0.5rem;
margin-bottom: 0.5rem;
height: 100%;
.card-head {
background-color: get-light-color('bg-primary') !important;
height: -moz-fit-content;
height: fit-content;
padding: 0.7rem;
padding-bottom: 0rem;
border-bottom: 0.0625rem solid rgba(get-light-color('accent-color'), 0.4);
.card-img-xs {
margin-right: 0.5rem;
margin-bottom: 0.75rem;
}
}
.card-body {
padding-top: 0.2rem;
padding-left: 0.7rem;
}
}
@include media('<=medium') {
padding-left: 0;
padding-right: 0;
.container {
max-width: 95%;
}
}
}
html[data-theme='dark'] {
.skills-section {
.card {
.card-head {
background-color: get-dark-color('bg-card') !important;
border-bottom: 0.0625rem solid rgba(get-dark-color('accent-color'), 0.4);
}
}
}
}
+122
View File
@@ -0,0 +1,122 @@
@use 'sass:map';
$breakpoints: (
tiny: 320px,
small: 640px,
medium: 768px,
large: 1024px,
very-large: 1280px,
extra-large: 1536px,
ultra-large: 2560px,
);
// Color are chosen from TailwindCSS color scheme
// https://tailwindcss.com/docs/customizing-colors
// transitions
$transition-duration: 0.3s;
$transition-type: ease-out;
// borders and shadows
$box-shadow: 0px 8px 56px rgba(15, 80, 100, 0.16);
// themes
$themes: (
'light': (
// cyan 600
'accent-color': #0891b2,
// cyan 500
'hover-over-accent-color': #06b6d4,
// zinc 200
'text-over-accent-color': #e4e4e7,
// slate 50
'bg-primary': #f8fafc,
// slate 900
'bg-primary-inverse': #0f172a,
// slate 200
'bg-secondary': #e2e8f0,
'bg-card': #fff,
// slate 800
'heading-color': #1e293b,
// slate 700
'text-color': #334155,
// slate 300
'inverse-text-color': #cbd5e1,
// slate 500
'muted-text-color': #64748b,
// red 600
'inline-code-color': #dc2626,
// amber 200
'highlight-color': #fde68a,
// slate 900
'footer-color': #0f172a,
),
'dark': (
// cyan 600
'accent-color': #0891b2,
// cyan 500
'hover-over-accent-color': #06b6d4,
// zinc 200
'text-over-accent-color': #e4e4e7,
// gray-800
'bg-primary': #1f2937,
// slate 900
'bg-primary-inverse': #0f172a,
// gray 900
'bg-secondary': #111827,
// slate 800
'bg-card': #1e293b,
// slate 100
'heading-color': #f1f5f9,
// slate 300
'text-color': #cbd5e1,
// slate 900
'inverse-text-color': #0f172a,
// slate 500
'muted-text-color': #64748b,
// red 600
'inline-code-color': #dc2626,
// amber 200
'highlight-color': #fde68a,
// slate 900
'footer-color': #0f172a,
),
);
$brand-colors: (
'facebook': #3b5998,
'twitter': #1da1f2,
'linkedin': #0077b5,
'reddit': #ff4500,
'tumblr': #35465c,
'pocket': #ef4056,
'diaspora': #1e1e1e,
'whatsapp': #25d366,
);
$alerts: (
'success': (
// green 100
'bg-color': #dcfce7,
// green 800
'text-color': #166534,
),
'info': (
// sky 100
'bg-color': #e0f2fe,
// sky 800
'text-color': #075985,
),
'warning': (
// yellow 100
'bg-color': #fef9c3,
// yellow 800
'text-color': #854d0e,
),
'danger': (
// red 100
'bg-color': #fee2e2,
// red 800
'text-color': #991b1b,
),
);
+25
View File
@@ -0,0 +1,25 @@
module:
hugoVersion:
min: "0.118.0"
extended: true
mounts:
- source: content
target: content
- source: static
target: static
- source: layouts
target: layouts
- source: data
target: data
- source: assets
target: assets
- source: i18n
target: i18n
- source: archetypes
target: archetypes
- source: ../../node_modules/flag-icon-css/flags
target: static/flags
- source: ../../node_modules/@fontsource/mulish/files
target: static/files
- source: ../../node_modules/katex/dist/fonts
target: static/fonts
+3
View File
@@ -0,0 +1,3 @@
---
title: Posts
---
+25
View File
@@ -0,0 +1,25 @@
flags:
styles:
- flag-icon-css/css/flag-icons
videoplayer:
services:
plyr:
styles:
- plyr/dist/plyr
syntaxhighlight:
services:
hljs:
styles:
- highlight.js/scss/atom-one-dark
math:
services:
katex:
styles:
- katex/dist/katex
embedpdf:
styles:
- ./sections/pdf-viewer
+160 -68
View File
@@ -5,6 +5,7 @@ title: Example Site
module: module:
imports: imports:
- path: github.com/hugo-toha/toha/v4
- path: github.com/hugo-toha/hugo-toha.github.io - path: github.com/hugo-toha/hugo-toha.github.io
disable: false disable: false
mounts: mounts:
@@ -18,7 +19,15 @@ module:
target: assets target: assets
- source: static - source: static
target: static target: static
- path: github.com/hugo-toha/toha/v4 mounts:
- source: static/files
target: static/files
- source: ./node_modules/flag-icon-css/flags
target: static/flags
- source: ./node_modules/@fontsource/mulish/files
target: static/files
- source: ./node_modules/katex/dist/fonts
target: static/fonts
# Manage languages # Manage languages
# For any more details, you can check the official documentation: https://gohugo.io/content-management/multilingual/ # For any more details, you can check the official documentation: https://gohugo.io/content-management/multilingual/
@@ -75,20 +84,21 @@ params:
topNavbar: topNavbar:
maxVisibleSections: 5 maxVisibleSections: 5
# Enable dark theme
darkMode:
provider: darkreader
enable: true
default: system
# Configure various features of this theme # Configure various features of this theme
features: features:
# Enable dark theme
darkMode:
enable: true
# Enable and configure portfolio # Enable and configure portfolio
portfolio: portfolio:
enable: true enable: true
# Enable and configure blog posts # Enable and configure blog posts
blog: blog:
enable: true enable: true
showAuthor: true
# Share post on different social media # Share post on different social media
shareButtons: shareButtons:
facebook: true facebook: true
@@ -109,75 +119,157 @@ params:
# Enable comment feature. There, should be only one of them. # Enable comment feature. There, should be only one of them.
comment: comment:
enable: false enable: false
disqus: services:
shortName: toha-example-site disqus:
# valine: shortName: toha-example-site
# appId: HTV6askWxVo3vOxlqjjaq2hd-MsYXbMMI # valine:
# appKey: pVrT3C85KGIuk27t07eh6bUC # appId: HTV6askWxVo3vOxlqjjaq2hd-MsYXbMMI
# avatar: retro # appKey: pVrT3C85KGIuk27t07eh6bUC
# placeholder: Share your thought. # avatar: retro
# lang: en # placeholder: Share your thought.
# recordIP: true # lang: en
# enableQQ: true # recordIP: true
# utteranc: # enableQQ: true
# repo: github.com/hugo-toha/hugo-toha.github.io # utteranc:
# issueTerm: title # repo: github.com/hugo-toha/hugo-toha.github.io
# theme: github-light # issueTerm: title
# giscus: # theme: github-light
# repo: your-repo/name # giscus:
# repoID: your-repo-id # repo: your-repo/name
# category: your-category # repoID: your-repo-id
# categoryID: your-category-id # category: your-category
# theme: light # categoryID: your-category-id
# map: url # theme: light
# reaction: 1 # map: url
# metadata: 0 # reaction: 1
# inputPosition: bottom # metadata: 0
# crossOrigin: anonymous # inputPosition: bottom
# commento: # crossOrigin: anonymous
# serverURL: cdn.commento.io # commento:
# autoInit: true # serverURL: cdn.commento.io
# hideDeleted: false # autoInit: true
# hideDeleted: false
# Enable Analytics # Enable Analytics
analytics: analytics:
enabled: true enabled: false
# Google Analytics services:
google: # cloudflare web analytics
id: G-H4LBG7NDFZ # cloudflare:
# # CounterDev # token: "<token>"
# counterDev: # Google Analytics
# id: <your counterdev id> google:
# # GoatCounter id: G-H4LBG7NDFZ
# goatCounter: # # CounterDev
# code: <your goat counter code> # counterDev:
# # Matomo / Piwik # id: <your counterdev id>
# matomo: # # GoatCounter
# instance: matomo.example.com # goatCounter:
# siteId: 1 # Or any other number # code: <your goat counter code>
# # Matomo / Piwik
# matomo:
# instance: matomo.example.com
# siteId: 1 # Or any other number
# # Enable Support # Enable Support
# support: support:
# enabled: true enable: false
# kofi: services:
# user: hossainemruz kofi:
# text: Tip Me user: hossainemruz
# textColor: '#f9fafc' text: Tip Me
# backgroundColor: '#248aaa' textColor: '#f9fafc'
backgroundColor: '#248aaa'
# buymeacoffee:
# user: <your buymeacoffee.com user>
# text: Support me on Buy me a coffee!
# info: Buy me a coffee!
# color: '#FFDD00'
# specify whether you want to show Table of Contents in reading page # specify whether you want to show Table of Contents in reading page
enableTOC: true toc:
enable: true
# Show tags under the post title # Show tags under the post title
enableTags: true tags:
enable: true
on_card: true # enables tags in post cards
# Specify whether to show flag in the language selector. Default is true. # Specify whether to show flag in the language selector. Default is true.
showFlags: true flags:
enable: true
# # If you want to use different country flag for a language, specify them here.
# flagOverwrites:
# - languageCode: en
# countryCode: us
# Enable this to use `embed-pdf` shortcode.
embedpdf:
enable: false
# Enable this to create flowcharts using shortcodes.
flowchart:
enable: false
services:
# Uncomment for `mermaid` shortcode.
mermaid:
# For config options, see: https://mermaid-js.github.io/mermaid/#/Setup?id=configuration
# theme: dark
# Enable this to create mathematic expressions using `$$` blocks
math:
enable: true
services:
# https://katex.org/docs/autorender.html#api for more configurations
katex:
delimiters:
- left: $$
right: $$
display: true
- left: \\[
right: \\]
display: true
- left: $
right: $
display: false
- left: \\(
right: \\)
display: false
# Enable to use custom syntax highlight
# Please note, Hugo comes with it's own html based syntax highlighter.
# Your code block will still be syntax highlighted by hugo.
# For more details: https://gohugo.io/content-management/syntax-highlighting/
# To disable Hugo's builtin syntax highlight,
# see: https://gohugo.io/getting-started/configuration-markup#highlight
# ```
# # config.yaml
# markup:
# # this disables hugo's syntax highlighting.
# codeFences: false
# ```
syntaxHighlight:
enable: true
services:
hljs:
# see: https://highlightjs.readthedocs.io/en/latest/api.html#configure
noHighlightRe: /^no-highlight$/i
# Enable to use `video-player` shortcode
videoPlayer:
enable: false
services:
# convert .js-player class into video player via https://plyr.io/
# Can play HTML5 Video, Audio, Youtube, Vimeo.
# For more info on setup: https://github.com/sampotts/plyr#quick-setup
plyr:
# options doc: https://github.com/sampotts/plyr#options
# fullscreen: true
# Enable reading time support in post cards and in post pages
readingTime:
enable: true
# If you want to use different country flag for a language, specify them here.
# flagOverwrites:
# - languageCode: en
# countryCode: us
# Provide footer configuration. # Provide footer configuration.
footer: footer:
+5 -2
View File
@@ -2,6 +2,9 @@ module github.com/hugo-toha/toha/exampleSite
go 1.19 go 1.19
require github.com/hugo-toha/hugo-toha.github.io v0.0.0-20221228191121-007f31838bd6 // indirect require (
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20231031082630-2c32a26d2207 // indirect
github.com/hugo-toha/toha/v4 v4.0.0-20231113175302-e5230e8c93d8 // indirect
)
replace github.com/hugo-toha/toha/v4 => ../../toha replace github.com/hugo-toha/toha/v4 => ../
+2 -2
View File
@@ -1,2 +1,2 @@
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20221228191121-007f31838bd6 h1:TPFhOZAnuH4wjLIdzimswCRa2qCcc1teKVTatADJU2g= github.com/hugo-toha/hugo-toha.github.io v0.0.0-20231031082630-2c32a26d2207 h1:T71lEaGpHYpdy8yKM5vaVwm+CJGt8wjHvPgVM+GjCJM=
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20221228191121-007f31838bd6/go.mod h1:OMMaP9Hh9NsKd41lVIazBQRPa0s6Z57AfJoY3DcCNNY= github.com/hugo-toha/hugo-toha.github.io v0.0.0-20231031082630-2c32a26d2207/go.mod h1:aTn1lQX1rbcbfbwNuWHG/L5DPtD+bEzQro49QyFlbEg=
+4249
View File
File diff suppressed because it is too large Load Diff
+4
View File
@@ -0,0 +1,4 @@
{
"name": "exampleSite",
"version": "0.1.0"
}
+64
View File
@@ -0,0 +1,64 @@
{
"comments": {
"dependencies": {},
"devDependencies": {
"@fontsource/mulish": "github.com/hugo-toha/toha/v4",
"@fortawesome/fontawesome-free": "github.com/hugo-toha/toha/v4",
"autoprefixer": "github.com/hugo-toha/toha/v4",
"bootstrap": "github.com/hugo-toha/toha/v4",
"eslint": "github.com/hugo-toha/toha/v4",
"eslint-config-prettier": "github.com/hugo-toha/toha/v4",
"eslint-config-standard": "github.com/hugo-toha/toha/v4",
"eslint-plugin-import": "github.com/hugo-toha/toha/v4",
"eslint-plugin-n": "github.com/hugo-toha/toha/v4",
"eslint-plugin-no-jquery": "github.com/hugo-toha/toha/v4",
"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",
"fuse.js": "github.com/hugo-toha/toha/v4",
"highlight.js": "github.com/hugo-toha/toha/v4",
"imagesloaded": "github.com/hugo-toha/toha/v4",
"include-media": "github.com/hugo-toha/toha/v4",
"ityped": "github.com/hugo-toha/toha/v4",
"katex": "github.com/hugo-toha/toha/v4",
"mark.js": "github.com/hugo-toha/toha/v4",
"mermaid": "github.com/hugo-toha/toha/v4",
"plyr": "github.com/hugo-toha/toha/v4",
"popper.js": "github.com/hugo-toha/toha/v4",
"postcss": "github.com/hugo-toha/toha/v4",
"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",
"bootstrap": "^4.6.2",
"eslint": "^8.31.0",
"eslint-config-prettier": "^8.6.0",
"eslint-config-standard": "^17.0.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-n": "^15.6.0",
"eslint-plugin-no-jquery": "^2.7.0",
"eslint-plugin-promise": "^6.1.1",
"feather-icons": "^4.29.1",
"filterizr": "^2.2.4",
"flag-icon-css": "^4.1.7",
"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.3",
"mark.js": "^8.11.1",
"mermaid": "^9.2.1",
"plyr": "^3.7.2",
"popper.js": "^1.16.1",
"postcss": "^8.4.21",
"postcss-cli": "^8.3.1"
},
"name": "exampleSite",
"version": "0.1.0"
}
+4
View File
@@ -124,3 +124,7 @@ other = "Avís de Responsabilitat"
[search] [search]
other = "Cerca" other = "Cerca"
[minute]
one = "minut"
other = "minuts"
+3
View File
@@ -121,3 +121,6 @@ other = "দায় বিজ্ঞপ্তি"
[search] [search]
other = "অনুসন্ধান করুন" other = "অনুসন্ধান করুন"
[minute]
other = "মিনিট"
+4
View File
@@ -124,3 +124,7 @@ other = "Liability Notice"
[search] [search]
other = "Search" other = "Search"
[minute]
one = "minute"
other = "minutes"
+4
View File
@@ -124,3 +124,7 @@ other = "Aviso de responsabilidad"
[search] [search]
other = "Búsqueda" other = "Búsqueda"
[minute]
one = "minuto"
other = "minutos"
+5 -1
View File
@@ -117,10 +117,14 @@ other = "Suite"
other = "Afficher le certificat" other = "Afficher le certificat"
[notes] [notes]
other = "Remarques" other = "Notes"
[disclaimer_text] [disclaimer_text]
other = "Avis de responsabilité" other = "Avis de responsabilité"
[search] [search]
other = "Chercher" other = "Chercher"
[minute]
one = "minute"
other = "minutes"
+17 -13
View File
@@ -3,7 +3,7 @@
other = "Home" other = "Home"
[posts] [posts]
other = "Post" other = "Articoli"
[toc_heading] [toc_heading]
other = "Contenuti" other = "Contenuti"
@@ -53,8 +53,8 @@ other = "Precedente"
[next] [next]
other = "Successivo" other = "Successivo"
# [share_on] [share_on]
# other = "Share on" other = "Condividi su:"
[improve_this_page] [improve_this_page]
other = "Migliora questa pagina" other = "Migliora questa pagina"
@@ -86,26 +86,26 @@ other = "Vedi altro"
[show_less] [show_less]
other = "Mostra meno" other = "Mostra meno"
# [responsibilities] [responsibilities]
# other = "Responsibilities:" other = "Responsabilità:"
# [present] [present]
# other = "Present" other = "Ad oggi"
# [comments_javascript] [comments_javascript]
# other = "Please enable JavaScript to view the" other = "Per favore attiva JavaScript per vedere il"
# [comments_by] # [comments_by]
# other = "comments powered by" # other = "comments powered by"
# [read] [read]
# other = "Read" other = "Leggi"
# [project_star] # [project_star]
# other = "Star" # other = "Star"
# [project_details] [project_details]
# other = "Details" other = "Dettagli"
# [err_404] # [err_404]
# other = "The page you are looking for is not there yet." # other = "The page you are looking for is not there yet."
@@ -124,3 +124,7 @@ other = "Avviso di responsabilità"
[search] [search]
other = "Ricerca" other = "Ricerca"
[minute]
one = "minuto"
other = "minuti"
+130
View File
@@ -0,0 +1,130 @@
# More documentation here: https://github.com/nicksnyder/go-i18n
[home]
other = "Início"
[posts]
other = "Postagens"
[toc_heading]
other = "Tabela de conteúdos"
[tags]
other = "Etiquetas"
[categories]
other = "Categorias"
[at]
other = "em"
[resume]
other = "Currículo"
[navigation]
other = "Navegação"
[contact_me]
other = "Contato:"
[email]
other = "E-mail"
[phone]
other = "Telefone"
[newsletter_text]
other = "Se mantenha atualizado com notificações por e-mail"
[newsletter_input_placeholder]
other = "Inserir email"
[newsletter_warning]
other = "Ao assinar nossa newsletter, você está concordando em receber a newsletter deste site."
[submit]
other = "Enviar"
[hugoAttributionText]
other = "Desenvolvido por"
[prev]
other = "Anterior"
[next]
other = "Próximo"
[share_on]
other = "Compartilhe"
[improve_this_page]
other = "Melhore esta página"
[out_of]
other = "de"
[publications]
other = "Publicações"
[taken_courses]
other = "Cursos realizados"
[course_name]
other = "Nome do Curso"
[total_credit]
other = "Créditos Totais"
[obtained_credit]
other = "Créditos Obtidos"
[extracurricular_activities]
other = "Atividades Extracurriculares"
[show_more]
other = "Ver Mais"
[show_less]
other = "Ver Menos"
[responsibilities]
other = "Responsabilidades:"
[present]
other = "Presente"
[comments_javascript]
other = "Por favor ative JavaScript para ver o"
[comments_by]
other = "comentários por"
[read]
other = "Ler"
[project_star]
other = "Star"
[project_details]
other = "Detalhes"
[err_404]
other = "A página que você está procurando ainda não está aqui."
[more]
other = "Mais"
[view_certificate]
other = "Ver Certificado"
[notes]
other = "Notas"
[disclaimer_text]
other = "Nota legal"
[search]
other = "Pesquisar"
[minute]
one = "minuto"
other = "minutos"
+4
View File
@@ -124,3 +124,7 @@ other = "Nota legal"
[search] [search]
other = "Pesquisar" other = "Pesquisar"
[minute]
one = "minuto"
other = "minutos"
+1 -5
View File
@@ -1,9 +1,5 @@
{{ define "header" }}
<link rel="stylesheet" href="{{ "/css/404.css" | relURL }}">
{{ end }}
{{ define "navbar" }} {{ define "navbar" }}
{{ partial "navigators/navbar-2.html" (dict "baseURL" site.BaseURL "title" site.Title "hasToggleButton" false) }} {{ partial "navigators/navbar.html" . }}
{{ end }} {{ end }}
{{ define "content" }} {{ define "content" }}
+15 -5
View File
@@ -1,21 +1,31 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html lang="{{ .Site.Language.Lang }}">
<head> <head>
<title>{{ .Page.Title }}</title> <title>{{ .Page.Title }}</title>
<!------ ADD COMMON HEADERS --------> <!------ ADD COMMON HEADERS -------->
{{- partial "header.html" . -}} {{- partial "header.html" . -}}
{{ template "_internal/opengraph.html" . }} {{ template "_internal/opengraph.html" . }}
{{ template "_internal/twitter_cards.html" . }}
<!------ ADD PAGE SPECIFIC HEADERS -------> <!------ ADD PAGE SPECIFIC HEADERS ------->
{{ block "header" . }} {{ end }} {{ block "header" . }} {{ end }}
<!--================= add analytics if enabled =========================--> <!--================= add analytics if enabled =========================-->
{{- partial "analytics.html" . -}} {{- 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);
</script>
</head> </head>
<body data-spy="scroll" data-target="#TableOfContents" data-offset="80"> <body class="type-{{ .Page.Type }} kind-{{ .Page.Kind }}" data-spy="scroll" data-target="#TableOfContents" data-offset="80">
<div class="container-fluid bg-dimmed wrapper"> <div class="container-fluid bg-secondary wrapper">
<!----- ADD NAVBAR ---------------> <!----- ADD NAVBAR --------------->
{{ block "navbar" . }} {{ end }} {{ block "navbar" . }} {{ end }}
+3 -10
View File
@@ -1,13 +1,5 @@
{{ define "header" }}
<link rel="stylesheet" href="{{ "/css/layouts/list.css" | relURL }}">
<link rel="stylesheet" href="{{ "/css/navigators/sidebar.css" | relURL}}">
<!--================= custom style overrides =========================-->
<link rel="stylesheet" href="{{ "/css/style.css" | relURL }}"/>
{{ end }}
{{ define "navbar" }} {{ define "navbar" }}
{{ partial "navigators/navbar-2.html" . }} {{ partial "navigators/navbar.html" . }}
{{ end }} {{ end }}
{{ define "sidebar" }} {{ define "sidebar" }}
@@ -40,7 +32,8 @@
<div class="content container-fluid" id="content"> <div class="content container-fluid" id="content">
<div class="container-fluid post-card-holder" id="post-card-holder"> <div class="container-fluid post-card-holder" id="post-card-holder">
{{ $posts := where .RegularPagesRecursive "Layout" "!=" "search" }} {{ $posts := where .RegularPagesRecursive "Layout" "!=" "search" }}
{{ $paginator := .Paginate $posts 12 }} {{ $numShow := site.Params.features.pagination.maxPostsPerPage | default 12}}
{{ $paginator := .Paginate $posts $numShow }}
{{ range $paginator.Pages }} {{ range $paginator.Pages }}
{{ if .Layout }} {{ if .Layout }}
{{/* ignore the search.md file*/}} {{/* ignore the search.md file*/}}
+19 -15
View File
@@ -1,13 +1,5 @@
{{ define "header" }}
<link rel="stylesheet" href="{{ "/css/layouts/list.css" | relURL }}">
<link rel="stylesheet" href="{{ "/css/navigators/sidebar.css" | relURL}}">
<!--================= custom style overrides =========================-->
<link rel="stylesheet" href="{{ "/css/style.css" | relURL }}"/>
{{ end }}
{{ define "navbar" }} {{ define "navbar" }}
{{ partial "navigators/navbar-2.html" . }} {{ partial "navigators/navbar.html" . }}
{{ end }} {{ end }}
{{ define "sidebar" }} {{ define "sidebar" }}
@@ -36,28 +28,40 @@
{{ end }} {{ end }}
{{ define "content" }} {{ define "content" }}
<script>
document.body.classList.replace('kind-page', 'kind-section');
</script>
<section class="content-section" id="content-section"> <section class="content-section" id="content-section">
<div class="content container-fluid" id="content"> <div class="content container-fluid" id="content">
<div class="container-fluid post-card-holder" id="post-card-holder"> <div class="container-fluid post-card-holder" id="post-card-holder">
<div id="search-results"> <div id="search-results" style="display: flex; flex-wrap: wrap;">
<script id="search-result-template" type="text/x-js-template"> <script id="search-result-template" type="text/x-js-template">
<div class="post-card"> <div class="post-card">
<a href="${link}" class="post-card-link"> <div class="card">
<div class="card" style="min-height: 352px;"><a href="${link}" class="post-card-link">
<div class="card-head"> <div class="card-head">
<a href="${link}" class="post-card-link">
<img class="card-img-top" src="${hero}" alt="Card Heading Image"> <img class="card-img-top" src="${hero}" alt="Card Heading Image">
</a>
</div> </div>
<div class="card-body"> <div class="card-body">
<h5 class="card-title">${title}</h5> <a href="${link}" class="post-card-link">
<p class="card-text post-summary">${summary}</p> <h5 class="card-title">${title}</h5>
<p class="card-text post-summary">${summary}</p>
</a>
{{ if site.Params.features.tags.on_card }}
<div class="tags">
<ul style="padding-left: 0;">
${tags}
</ul>
</div>
{{ end }}
</div> </div>
<div class="card-footer"> <div class="card-footer">
<span class="float-left">${date}</span> <span class="float-left">${date}</span>
<a href="${link}" class="float-right btn btn-outline-info btn-sm">Read</a> <a href="${link}" class="float-right btn btn-outline-info btn-sm">Read</a>
</div> </div>
</div> </div>
</a>
</div> </div>
</script> </script>
+32 -46
View File
@@ -1,18 +1,9 @@
{{ define "header" }} {{ define "header" }}
<meta name="description" content="{{ if .Description }}{{ .Description }}{{ else }}{{ .Title }}{{ end }}" /> <meta name="description" content="{{ if .Description }}{{ .Description }}{{ else }}{{ .Title }}{{ end }}" />
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/styles/atom-one-dark.min.css"
/>
<link rel="stylesheet" href="{{ "/css/layouts/single.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/navigators/sidebar.css" | relURL }}">
<!--================= custom style overrides =========================-->
<link rel="stylesheet" href="{{ "/css/style.css" | relURL }}"/>
{{ end }} {{ end }}
{{ define "navbar" }} {{ define "navbar" }}
{{ partial "navigators/navbar-2.html" . }} {{ partial "navigators/navbar.html" . }}
{{ end }} {{ end }}
{{ define "sidebar" }} {{ define "sidebar" }}
@@ -45,25 +36,29 @@
<!--Content Start--> <!--Content Start-->
<div class="page-content"> <div class="page-content">
{{ if site.Params.features.blog.showAuthor | default true }}
<div class="author-profile ml-auto align-self-lg-center"> <div class="author-profile ml-auto align-self-lg-center">
<img class="rounded-circle" src='{{ partial "helpers/get-author-image.html" . }}' alt="Author Image"> <img class="rounded-circle" src='{{ partial "helpers/get-author-image.html" . }}' alt="Author Image">
<h5 class="author-name">{{ partial "helpers/get-author-name.html" . }}</h5> <h5 class="author-name">{{ partial "helpers/get-author-name.html" . }}</h5>
<p>{{ .Page.Date | time.Format ":date_full" }}</p> <p class="text-muted">{{ .Page.Date | time.Format ":date_full" }}{{ if site.Params.features.readingTime }} | {{ .ReadingTime }} {{i18n "minute" .ReadingTime }}{{ end }}</p>
</div> </div>
{{ else }}
<div style="margin-bottom: 80px;"></div>
{{ end }}
<div class="title"> <div class="title">
<h1>{{ .Page.Title }}</h1> <h1>{{ .Page.Title }}</h1>
</div> </div>
{{ if site.Params.features.tags.enable }}
<div class="taxonomy-terms"> {{ if not (site.Params.features.blog.showAuthor | default true) }}
<ul style="padding-left: 0;"> <div class="author-profile ml-auto align-self-lg-center">
{{ range .Params.tags }} <p class="text-muted">{{ .Page.Date | time.Format ":date_full" }}{{ if site.Params.features.readingTime }} | {{ .ReadingTime }} {{i18n "minute" .ReadingTime }}{{ end }}</p>
{{ $url:= printf "tags/%s/" . }}
<li class="rounded"><a href="{{ $url | urlize | relLangURL }}" class="btn, btn-sm">{{ . }}</a></li>
{{ end }}
</ul>
</div> </div>
{{ end }} {{ end }}
{{ if site.Params.features.tags.enable }}
{{partial "misc/tags.html" .Params.tags }}
{{ end }}
<div class="post-content" id="post-content"> <div class="post-content" id="post-content">
{{ .Page.Content }} {{ .Page.Content }}
</div> </div>
@@ -71,56 +66,56 @@
<!-- Share or Contribute --> <!-- Share or Contribute -->
<div class="row pl-3 pr-3"> <div class="row pl-3 pr-3">
<!--Social Media Share Buttons--> <!--Social Media Share Buttons-->
<div class="col-md-6 share-buttons"> <div class="col-md-6 share-buttons">
{{ if site.Params.features.blog.shareButtons }} {{ if site.Params.features.blog.shareButtons }}
<strong>{{ i18n "share_on" }}:</strong> <strong>{{ i18n "share_on" }}:</strong>
{{ if site.Params.features.blog.shareButtons.facebook }} {{ if site.Params.features.blog.shareButtons.facebook }}
<a class="btn btn-sm facebook-btn" href="https://www.facebook.com/sharer.php?u={{ .Permalink }}" target="_blank"> <a class="btn icon-button bg-facebook" href="https://www.facebook.com/sharer.php?u={{ .Permalink }}" target="_blank">
<i class="fab fa-facebook"></i> <i class="fab fa-facebook"></i>
</a> </a>
{{ end }} {{ end }}
{{ if site.Params.features.blog.shareButtons.twitter }} {{ if site.Params.features.blog.shareButtons.twitter }}
<a class="btn btn-sm twitter-btn" href="https://twitter.com/share?url={{ .Permalink }}&text={{ .Title }}&via={{- site.Title -}}" target="_blank"> <a class="btn icon-button bg-twitter" href="https://twitter.com/share?url={{ .Permalink }}&text={{ .Title }}&via={{- site.Title -}}" target="_blank">
<i class="fab fa-twitter"></i> <i class="fab fa-twitter"></i>
</a> </a>
{{ end }} {{ end }}
{{ if site.Params.features.blog.shareButtons.reddit }} {{ if site.Params.features.blog.shareButtons.reddit }}
<a class="btn btn-sm reddit-btn" href="https://reddit.com/submit?url={{ .Permalink }}&title={{ .Title }}" target="_blank"> <a class="btn icon-button bg-reddit" href="https://reddit.com/submit?url={{ .Permalink }}&title={{ .Title }}" target="_blank">
<i class="fab fa-reddit"></i> <i class="fab fa-reddit"></i>
</a> </a>
{{ end }} {{ end }}
{{ if site.Params.features.blog.shareButtons.tumblr }} {{ if site.Params.features.blog.shareButtons.tumblr }}
<a class="btn btn-sm tumblr-btn" href="https://www.tumblr.com/share/link?url={{ .Permalink }}&name={{ .Title }}{{- with .Params.description -}}&description={{- . -}}{{- end -}}" target="_blank"> <a class="btn icon-button bg-tumblr" href="https://www.tumblr.com/share/link?url={{ .Permalink }}&name={{ .Title }}{{- with .Params.description -}}&description={{- . -}}{{- end -}}" target="_blank">
<i class="fab fa-tumblr"></i> <i class="fab fa-tumblr"></i>
</a> </a>
{{ end }} {{ end }}
{{ if site.Params.features.blog.shareButtons.pocket }} {{ if site.Params.features.blog.shareButtons.pocket }}
<a class="btn btn-sm pocket-btn" href="https://getpocket.com/save?url={{ .Permalink }}&title={{ .Title }}" target="_blank"> <a class="btn icon-button bg-pocket" href="https://getpocket.com/save?url={{ .Permalink }}&title={{ .Title }}" target="_blank">
<i class="fab fa-get-pocket"></i> <i class="fab fa-get-pocket"></i>
</a> </a>
{{ end }} {{ end }}
{{ if site.Params.features.blog.shareButtons.linkedin }} {{ if site.Params.features.blog.shareButtons.linkedin }}
<a class="btn btn-sm linkedin-btn" href="https://www.linkedin.com/shareArticle?url={{ .Permalink }}&title={{ .Title }}" target="_blank"> <a class="btn icon-button bg-linkedin" href="https://www.linkedin.com/shareArticle?url={{ .Permalink }}&title={{ .Title }}" target="_blank">
<i class="fab fa-linkedin"></i> <i class="fab fa-linkedin"></i>
</a> </a>
{{ end }} {{ end }}
{{ if site.Params.features.blog.shareButtons.diaspora }} {{ if site.Params.features.blog.shareButtons.diaspora }}
<a class="btn btn-sm diaspora-btn" href="https://share.diasporafoundation.org/?title={{ .Title }}&url={{ .Permalink }}" rel="nofollow" target="_blank"> <a class="btn icon-button bg-diaspora" href="https://share.diasporafoundation.org/?title={{ .Title }}&url={{ .Permalink }}" rel="nofollow" target="_blank">
<i class="fab fa-diaspora"></i> <i class="fab fa-diaspora"></i>
</a> </a>
{{ end }} {{ end }}
{{ if site.Params.features.blog.shareButtons.mastodon }} {{ if site.Params.features.blog.shareButtons.mastodon }}
<a class="btn btn-sm mastodon-btn" href="https://mastodon.social/share?text={{ .Title }} - {{ .Permalink }}" target="_blank"> <a class="btn icon-button bg-mastodon" href="https://mastodon.social/share?text={{ .Title }} - {{ .Permalink }}" target="_blank">
<i class="fab fa-mastodon"></i> <i class="fab fa-mastodon"></i>
</a> </a>
{{ end }} {{ end }}
{{ if site.Params.features.blog.shareButtons.whatsapp }} {{ if site.Params.features.blog.shareButtons.whatsapp }}
<a class="btn btn-sm whatsapp-btn" href="https://api.whatsapp.com/send?text={{ .Title }} {{ .Permalink }}" target="_blank"> <a class="btn icon-button bg-whatsapp" href="https://api.whatsapp.com/send?text={{ .Title }} {{ .Permalink }}" target="_blank">
<i class="fab fa-whatsapp"></i> <i class="fab fa-whatsapp"></i>
</a> </a>
{{ end }} {{ end }}
{{ if site.Params.features.blog.shareButtons.email }} {{ if site.Params.features.blog.shareButtons.email }}
<a class="btn btn-sm email-btn" href="mailto:?subject={{ .Title }}&body={{ .Permalink }}" target="_blank"> <a class="btn icon-button" href="mailto:?subject={{ .Title }}&body={{ .Permalink }}" target="_blank">
<i class="fas fa-envelope-open-text"></i> <i class="fas fa-envelope-open-text"></i>
</a> </a>
{{ end }} {{ end }}
@@ -162,18 +157,17 @@
{{ end }} {{ end }}
<!-- Keep backward compatibility with old config.yaml --> <!-- Keep backward compatibility with old config.yaml -->
{{ if site.DisqusShortname }} {{ if .Site.Config.Services.Disqus.Shortname }}
{{ partial "comments/disqus.html" (dict (slice "disqus" "shortName") site.DisqusShortname) }} {{ partial "comments/disqus.html" (dict (slice "disqus" "shortName") .Site.Config.Services.Disqus.Shortname) }}
{{ end }} {{ end }}
</div> </div>
</div> </div>
</div> </div>
<!--scroll back to top--> <!--scroll back to top-->
<a id="scroll-to-top" class="btn"><i class="fas fa-chevron-circle-up"></i></a> <a id="scroll-to-top" class="btn" data-toggle="tooltip" data-placement="left" title="Scroll to top">
{{ if .IsTranslated }} <i class="fas fa-chevron-circle-up"></i>
{{ partial "navigators/floating-lang-selector.html" . }} </a>
{{ end }}
</section> </section>
{{ end }} {{ end }}
@@ -190,11 +184,3 @@
{{ end }} {{ end }}
</section> </section>
{{ end }} {{ end }}
{{ define "scripts" }}
<!-------------- Enable Math support for this page ---------------->
{{ if site.Params.features.math.enable }}
{{ partial "math.html" . }}
{{ end }}
{{ end }}
+3 -10
View File
@@ -1,13 +1,5 @@
{{ define "header" }}
<link rel="stylesheet" href="{{ "/css/layouts/list.css" | relURL }}">
<link rel="stylesheet" href="{{ "/css/navigators/sidebar.css" | relURL}}">
<!--================= custom style overrides =========================-->
<link rel="stylesheet" href="{{ "/css/style.css" | relURL }}"/>
{{ end }}
{{ define "navbar" }} {{ define "navbar" }}
{{ partial "navigators/navbar-2.html" . }} {{ partial "navigators/navbar.html" . }}
{{ end }} {{ end }}
{{ define "sidebar" }} {{ define "sidebar" }}
@@ -41,7 +33,8 @@
<div class="content container-fluid" id="content"> <div class="content container-fluid" id="content">
<div class="container-fluid post-card-holder" id="post-card-holder"> <div class="container-fluid post-card-holder" id="post-card-holder">
{{ $posts := where .RegularPagesRecursive "Layout" "!=" "search" }} {{ $posts := where .RegularPagesRecursive "Layout" "!=" "search" }}
{{ $paginator := .Paginate $posts 12 }} {{ $numShow := site.Params.features.pagination.maxPostsPerPage | default 12}}
{{ $paginator := .Paginate $posts $numShow }}
{{ range $paginator.Pages }} {{ range $paginator.Pages }}
{{ if .Layout }} {{ if .Layout }}
{{/* ignore the search.md file*/}} {{/* ignore the search.md file*/}}
+15 -19
View File
@@ -14,24 +14,20 @@
<!-- import common headers --> <!-- import common headers -->
{{- partial "header.html" . -}} {{- partial "header.html" . -}}
{{- partial "opengraph.html" . -}} {{- partial "opengraph.html" . -}}
<!-- import index page specific headers -->
<link rel="stylesheet" href="{{ "/css/sections/home.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/sections/about.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/sections/skills.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/sections/experiences.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/sections/education.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/sections/projects.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/sections/recent-posts.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/sections/achievements.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/sections/accomplishments.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/sections/publications.css" | relURL }}"/>
<!--================= custom style overrides =========================-->
<link rel="stylesheet" href="{{ "/css/style.css" | relURL }}"/>
<!--================= add analytics if enabled =========================--> <!--================= add analytics if enabled =========================-->
{{- partial "analytics.html" . -}} {{- 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);
</script>
</head> </head>
<body data-spy="scroll" data-target="#top-navbar" data-offset="100"> <body data-spy="scroll" data-target="#top-navbar" data-offset="100">
@@ -48,7 +44,7 @@
{{ end }} {{ end }}
{{ if $sections }} {{ if $sections }}
{{ $background:= "bg-white"}} {{ $background:= "bg-primary"}}
{{ range sort $sections "section.weight" }} {{ range sort $sections "section.weight" }}
{{ if .section.enable }} {{ if .section.enable }}
<div class="container-fluid section-holder d-flex {{ $background }}"> <div class="container-fluid section-holder d-flex {{ $background }}">
@@ -59,10 +55,10 @@
{{ end }} {{ end }}
</div> </div>
<!--- alter background color for next section ---> <!--- alter background color for next section --->
{{ if eq $background "bg-white" }} {{ if eq $background "bg-primary" }}
{{ $background = "bg-dimmed" }} {{ $background = "bg-secondary" }}
{{ else }} {{ else }}
{{ $background = "bg-white" }} {{ $background = "bg-primary" }}
{{end}} {{end}}
{{ end }} {{ end }}
{{ end }} {{ end }}
+1 -16
View File
@@ -1,14 +1,5 @@
{{ define "header" }}
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/styles/atom-one-dark.min.css"
/>
<link rel="stylesheet" href="{{ "/css/layouts/notes.css" | relURL}}">
<link rel="stylesheet" href="{{ "/css/navigators/sidebar.css" | relURL}}">
{{ end }}
{{ define "navbar" }} {{ define "navbar" }}
{{ partial "navigators/navbar-2.html" . }} {{ partial "navigators/navbar.html" . }}
{{ end }} {{ end }}
{{ define "sidebar" }} {{ define "sidebar" }}
@@ -55,9 +46,3 @@
</div> </div>
</section> </section>
{{ end }} {{ end }}
{{ define "scripts" }}
{{ if site.Params.features.math.enable }}
{{ partial "math.html" . }}
{{ end }}
{{ end }}
+1 -16
View File
@@ -1,14 +1,5 @@
{{ define "header" }}
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/styles/atom-one-dark.min.css"
/>
<link rel="stylesheet" href="{{ "/css/layouts/notes.css" | relURL}}">
<link rel="stylesheet" href="{{ "/css/navigators/sidebar.css" | relURL}}">
{{ end }}
{{ define "navbar" }} {{ define "navbar" }}
{{ partial "navigators/navbar-2.html" . }} {{ partial "navigators/navbar.html" . }}
{{ end }} {{ end }}
{{ define "sidebar" }} {{ define "sidebar" }}
@@ -45,9 +36,3 @@
</div> </div>
</section> </section>
{{ end }} {{ end }}
{{ define "scripts" }}
{{ if site.Params.features.math.enable }}
{{ partial "math.html" . }}
{{ end }}
{{ end }}
+16 -8
View File
@@ -1,6 +1,6 @@
<!-- Add Analytics if enabled in configuration --> <!-- Add Analytics if enabled in configuration -->
{{ with site.Params.features.analytics }} {{ with site.Params.features.analytics }}
{{ if .enabled }} {{ if or .enable .enabled }}
{{ with .services }} {{ with .services }}
<!-- Google Analytics --> <!-- Google Analytics -->
{{ with .google }} {{ with .google }}
@@ -18,12 +18,12 @@
{{ end }} {{ end }}
<!-- GoatCounter --> <!-- GoatCounter -->
{{ with .goatCounter }} {{ with .goatCounter }}
<script {{ with .code }}
data-goatcounter="https://{{ .code }}.goatcounter.com/count" <script data-goatcounter="https://{{ . }}.goatcounter.com/count" async src="//gc.zgo.at/count.js"></script>
async {{ else }}
src="//gc.zgo.at/count.js" <script data-goatcounter="https://{{ .instance }}/count" async src="https://{{ .instance }}/count.js"></script>
></script> {{ end }}
{{ end }} {{ end }}
<!-- Piwik/Matomo --> <!-- Piwik/Matomo -->
@@ -43,11 +43,19 @@
})(); })();
</script> </script>
{{ end }} {{ end }}
{{ with .cloudflare }}
<!-- Cloudflare Web Analytics -->
<script defer src='https://static.cloudflareinsights.com/beacon.min.js'
data-cf-beacon='{"token": "{{ .token }}"}'
></script>
<!-- End Cloudflare Web Analytics -->
{{ end }}
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ end }} {{ end }}
<!-- Keep backwards compatibility and consistency with HUGO defaults --> <!-- Keep backwards compatibility and consistency with HUGO defaults -->
{{ if site.GoogleAnalytics }} {{ if .Site.Config.Services.GoogleAnalytics.ID }}
{{ template "_internal/google_analytics.html" . }} {{ template "_internal/google_analytics.html" . }}
{{ end }} {{ end }}
+20 -15
View File
@@ -1,21 +1,26 @@
<div class="post-card"> <div class="post-card">
<a href="{{ .RelPermalink | relLangURL }}" class="post-card-link"> <div class="card">
<div class="card"> <div class="card-head">
<div class="card-head"> <a href="{{ .RelPermalink | relLangURL }}" class="post-card-link">
<img class="card-img-top" src='{{ partial "helpers/get-hero.html" . }}' alt="Hero Image"> <img class="card-img-top" src='{{ partial "helpers/get-hero.html" . }}' alt="Hero Image">
</div> </a>
<div class="card-body"> </div>
<div class="card-body">
<a href="{{ .RelPermalink | relLangURL }}" class="post-card-link">
<h5 class="card-title">{{ .Title }}</h5> <h5 class="card-title">{{ .Title }}</h5>
<p class="card-text post-summary">{{ .Summary }}</p> <p class="card-text post-summary">{{ .Summary }}</p>
</div> </a>
<div class="card-footer"> {{ if and site.Params.features.tags.enable site.Params.features.tags.on_card }}
<span class="float-left">{{ .Date.Format "January 2, 2006" }}</span> {{ partial "misc/tags.html" .Params.tags }}
<a {{ end }}
href="{{ .RelPermalink | relLangURL }}"
class="float-right btn btn-outline-info btn-sm"
>{{ i18n "read" }}</a
>
</div>
</div> </div>
</a> <div class="card-footer">
<span class="float-left">
{{ .Date | time.Format ":date_full" }}
{{ if site.Params.features.readingTime }} | {{.ReadingTime}} {{ i18n "minute" .ReadingTime }} {{ end }}</span>
<a
href="{{ .RelPermalink | relLangURL }}"
class="float-right btn btn-outline-info btn-sm">{{ i18n "read" }}</a>
</div>
</div>
</div> </div>
-19
View File
@@ -1,19 +0,0 @@
<div class="col-lg-4 col-md-6 pt-2 post-card">
<a href="{{ .RelPermalink }}" title="{{ .Title }}" class="post-card-link">
<div class="card">
<div class="card-head">
<img class="card-img-top" src='{{ partial "helpers/get-hero.html" . }}'
alt="Card image cap"
/>
</div>
<div class="card-body">
<h5 class="card-title">{{ .Title }}</h5>
<p class="card-text post-summary"> {{ .Summary }}</p>
</div>
<div class="card-footer">
<span class="float-left">{{ .Date.Format "January 2, 2006" }}</span>
<a href="{{ .RelPermalink }}" title="{{ i18n "read" }}" class="float-right btn btn-outline-info btn-sm">{{ i18n "read" }}</a>
</div>
</div>
</a>
</div>
+1 -1
View File
@@ -1,5 +1,5 @@
<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">
<a class="skill-card-link" {{ if .url }}href="{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"{{ end }}> <a class="text-decoration-none" {{ if .url }}href="{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"{{ end }}>
<div class="card"> <div class="card">
<div class="card-head d-flex"> <div class="card-head d-flex">
{{ if .logo }} {{ if .logo }}
+4
View File
@@ -115,6 +115,10 @@
<li><a href={{ printf "https://github.com/%s" $value }} target="_blank" rel="noopener"> <li><a href={{ printf "https://github.com/%s" $value }} target="_blank" rel="noopener">
<span><i class="fab fa-github"></i></span> <span>{{ $value }}</span> <span><i class="fab fa-github"></i></span> <span>{{ $value }}</span>
</a></li> </a></li>
{{ else if (eq $key "researchgate") }}
<li><a href={{ printf "https://www.researchgate.net/profile/%s" $value }} target="_blank" rel="noopener">
<span><i class="fab fa-researchgate"></i></span> <span>{{ $author.name }}</span>
</a></li>
{{ else if reflect.IsMap $value }} {{ else if reflect.IsMap $value }}
<li> <li>
{{ if (and (isset $value "url") (isset $value "icon"))}} {{ if (and (isset $value "url") (isset $value "icon"))}}
+1 -15
View File
@@ -2,21 +2,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" />
<!-- ============ import common css ========== --> {{ partial "helpers/style-bundle.html" . }}
<link rel="stylesheet" href="{{ "/css/bootstrap.min.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/layouts/main.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/navigators/navbar.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/plyr.css" | relURL }}"/>
{{ if ne site.Params.features.flags.enable false }}
<link rel="stylesheet" href="{{ "/css/flag-icon.min.css" | relURL }}"/>
{{ end }}
<!--=================== fonts ==============================-->
<link rel="stylesheet" href="{{ "/google-fonts/Mulish/mulish.css" | relURL }}"/>
<!--=================== dark mode ==========================-->
{{ if site.Params.features.darkMode.enable }}
<link rel="stylesheet" href="{{ "/css/colortheme/colortheme.css" | relURL }}"/>
{{ end }}
<!--================= fab-icon =========================--> <!--================= fab-icon =========================-->
{{/* add favicon only if the site author has provided the the favicon */}} {{/* add favicon only if the site author has provided the the favicon */}}
@@ -72,29 +72,12 @@ params:
# The `darkMode` feature # The `darkMode` feature
darkmode: darkmode:
enable: true enable: true
services:
# darkmode is realized by using DarkReader library
darkreader:
# options are 'system', 'dark', 'light'
defaultColorScheme: system
# For all available options, see `interface DynamicThemeFix`:
# https://github.com/darkreader/darkreader/blob/main/index.d.ts#L125
fixes:
invert: ['img[src$=".svg"]'] # inverts svg colors.
# For all available options, see `interface Theme` in:
# https://github.com/darkreader/darkreader/blob/main/index.d.ts#L45
theme:
brightness: 100
contrast: 100
sepia: 0
```
This helper will convert the above config into the following env vars: This helper will convert the above config into the following env vars:
* `FEATURE_ANALYTICS=1` * `FEATURE_ANALYTICS=1`
* `FEATURE_ANALYTICS_GOOGLE=1` * `FEATURE_ANALYTICS_GOOGLE=1`
* `FEATURE_DARKMODE=1` * `FEATURE_DARKMODE=1`
* `FEATURE_DARKMODE_DARKREADER=1`
In JS, you can use it like this: In JS, you can use it like this:
@@ -0,0 +1,5 @@
{{ return (dict
"outputStyle" "compressed"
"enableSourceMap" (not hugo.IsProduction)
"includePaths" "node_modules"
) }}
@@ -0,0 +1,5 @@
{{- if page.IsHome -}}
#{{ partial "helpers/get-section-id.html" . }}
{{- else -}}
{{ site.BaseURL | relLangURL }}#{{ partial "helpers/get-section-id.html" . }}
{{- end -}}
@@ -0,0 +1,11 @@
{{/* setup Sass options */}}
{{- $options := partial "helpers/get-sass-options.html" -}}
{{- $options = $options | merge (dict "targetPath" "application.css") -}}
{{/* Compile hugo template `application.template.scss` into `application.scss`. */}}
{{- $template := resources.Get "styles/application.template.scss" -}}
{{- $scss := $template | resources.ExecuteAsTemplate "styles/application.scss" . -}}
{{/* Bundle application.scss */}}
{{- $bundle := $scss | resources.ToCSS $options | fingerprint -}}
<link rel="stylesheet" href="{{ $bundle.RelPermalink }}" integrity="{{ $bundle.Data.Integrity }}" />

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