jekyll-theme-nocc 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +92 -0
  4. data/_config.yml +102 -0
  5. data/_includes/carousel.html +39 -0
  6. data/_includes/code_block.html +3 -0
  7. data/_includes/disqus_comments.html +16 -0
  8. data/_includes/features.html +18 -0
  9. data/_includes/footer.html +55 -0
  10. data/_includes/google_analytics.html +8 -0
  11. data/_includes/head.html +33 -0
  12. data/_includes/image.html +20 -0
  13. data/_includes/navbar.html +48 -0
  14. data/_includes/read_time.html +3 -0
  15. data/_includes/scripts.html +88 -0
  16. data/_layouts/carousel.html +39 -0
  17. data/_layouts/default.html +17 -0
  18. data/_layouts/home.html +92 -0
  19. data/_layouts/images_gallery.html +63 -0
  20. data/_layouts/page.html +35 -0
  21. data/_layouts/post.html +62 -0
  22. data/_layouts/posts_index.html +33 -0
  23. data/_layouts/tag.html +35 -0
  24. data/_layouts/tags_index.html +79 -0
  25. data/_sass/_custom.scss +144 -0
  26. data/assets/css/styles.scss +3 -0
  27. data/assets/images/404.webp +0 -0
  28. data/assets/images/503.webp +0 -0
  29. data/assets/images/bg-about.webp +0 -0
  30. data/assets/images/bg-contact.webp +0 -0
  31. data/assets/images/bg-gallery.webp +0 -0
  32. data/assets/images/bg-index-2.webp +0 -0
  33. data/assets/images/bg-index-3.webp +0 -0
  34. data/assets/images/bg-index.webp +0 -0
  35. data/assets/images/bg-post.webp +0 -0
  36. data/assets/images/favicon.ico +0 -0
  37. data/assets/images/favicon.png +0 -0
  38. data/assets/images/favicon.svg +36 -0
  39. data/assets/images/gallery/Futuristic-drama.webp +0 -0
  40. data/assets/images/gallery/Random-Engineers.webp +0 -0
  41. data/assets/images/gallery/Weird-trio-with-mousehand.webp +0 -0
  42. data/assets/images/icon-192.png +0 -0
  43. data/assets/images/icon-512.png +0 -0
  44. data/assets/images/jekyll-logo.svg +129 -0
  45. data/assets/images/nocc-showcase.webp +0 -0
  46. data/assets/images/nocc-theme-showroom.png +0 -0
  47. data/assets/images/nocc-webshot.webp +0 -0
  48. data/assets/images/nocc_icon.svg +91 -0
  49. data/assets/images/nocc_package_logo.png +0 -0
  50. data/assets/images/npm-logo.svg +10 -0
  51. data/assets/vendor/nocc-bootstrap-theme/AUTHORS.md +3 -0
  52. data/assets/vendor/nocc-bootstrap-theme/CODE_OF_CONDUCT.md +3 -0
  53. data/assets/vendor/nocc-bootstrap-theme/CONTRIBUTING.md +5 -0
  54. data/assets/vendor/nocc-bootstrap-theme/LICENSE +21 -0
  55. data/assets/vendor/nocc-bootstrap-theme/README.md +209 -0
  56. data/assets/vendor/nocc-bootstrap-theme/css/nocc-theme.css +10442 -0
  57. data/assets/vendor/nocc-bootstrap-theme/css/nocc-theme.min.css +5 -0
  58. data/assets/vendor/nocc-bootstrap-theme/fonts/lora-webfont/lora-v35-latin-600.woff2 +0 -0
  59. data/assets/vendor/nocc-bootstrap-theme/fonts/lora-webfont/lora-v35-latin-600italic.woff2 +0 -0
  60. data/assets/vendor/nocc-bootstrap-theme/fonts/lora-webfont/lora-v35-latin-italic.woff2 +0 -0
  61. data/assets/vendor/nocc-bootstrap-theme/fonts/lora-webfont/lora-v35-latin-regular.woff2 +0 -0
  62. data/assets/vendor/nocc-bootstrap-theme/fonts/oxygen-webfont/oxygen-mono-v14-latin-regular.woff2 +0 -0
  63. data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-300.woff2 +0 -0
  64. data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-300italic.woff2 +0 -0
  65. data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-700.woff2 +0 -0
  66. data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-700italic.woff2 +0 -0
  67. data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-900.woff2 +0 -0
  68. data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-900italic.woff2 +0 -0
  69. data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-italic.woff2 +0 -0
  70. data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-regular.woff2 +0 -0
  71. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/bootstrap.svg +4 -0
  72. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/clipboard.svg +4 -0
  73. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/currency-bitcoin.svg +3 -0
  74. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/download.svg +4 -0
  75. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/envelope-at-fill.svg +4 -0
  76. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/filetype-svg.svg +3 -0
  77. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/gift-fill.svg +3 -0
  78. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/github.svg +3 -0
  79. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/google.svg +3 -0
  80. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/link-45deg.svg +4 -0
  81. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/linkedin.svg +3 -0
  82. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/magic.svg +3 -0
  83. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/moon.svg +4 -0
  84. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/speedometer.svg +4 -0
  85. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/sun.svg +3 -0
  86. data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/twitter-x.svg +3 -0
  87. data/assets/vendor/nocc-bootstrap-theme/images/bg-about.webp +0 -0
  88. data/assets/vendor/nocc-bootstrap-theme/images/bg-gallery.webp +0 -0
  89. data/assets/vendor/nocc-bootstrap-theme/images/bg-index-2.webp +0 -0
  90. data/assets/vendor/nocc-bootstrap-theme/images/bg-index-3.webp +0 -0
  91. data/assets/vendor/nocc-bootstrap-theme/images/bg-index.webp +0 -0
  92. data/assets/vendor/nocc-bootstrap-theme/images/bg-post.webp +0 -0
  93. data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/android-chrome-192x192.png +0 -0
  94. data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/android-chrome-512x512.png +0 -0
  95. data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/apple-touch-icon.png +0 -0
  96. data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon-16x16.png +0 -0
  97. data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon-32x32.png +0 -0
  98. data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon.ico +0 -0
  99. data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon.png +0 -0
  100. data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon.svg +54 -0
  101. data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/site.webmanifest +1 -0
  102. data/assets/vendor/nocc-bootstrap-theme/images/gallery/Futuristic-drama.webp +0 -0
  103. data/assets/vendor/nocc-bootstrap-theme/images/gallery/Random-Engineers.webp +0 -0
  104. data/assets/vendor/nocc-bootstrap-theme/images/gallery/Weird-trio-with-mousehand.webp +0 -0
  105. data/assets/vendor/nocc-bootstrap-theme/images/nocc/kofi_s_logo_nolabel.webp +0 -0
  106. data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc-showcase.webp +0 -0
  107. data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc-theme-showroom.png +0 -0
  108. data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc-theme-webshot.png +0 -0
  109. data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc-theme-webshot.webp +0 -0
  110. data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc-webshot.webp +0 -0
  111. data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc_home_image.webp +0 -0
  112. data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc_logo.png +0 -0
  113. data/assets/vendor/nocc-bootstrap-theme/js/bootstrap/5.3.3/bootstrap.bundle.min.js +7 -0
  114. data/assets/vendor/nocc-bootstrap-theme/js/bootstrap/5.3.3/bootstrap.bundle.min.js.map +1 -0
  115. data/assets/vendor/nocc-bootstrap-theme/js/clipboardjs/clipboard.min.js +7 -0
  116. data/assets/vendor/nocc-bootstrap-theme/js/copy-clipboard.js +18 -0
  117. data/assets/vendor/nocc-bootstrap-theme/js/jq-bootstrap-validation.js +475 -0
  118. data/assets/vendor/nocc-bootstrap-theme/js/jq-bootstrap-validation.min.js +1 -0
  119. data/assets/vendor/nocc-bootstrap-theme/js/jquery/3.7.1/jquery.min.js +2 -0
  120. data/assets/vendor/nocc-bootstrap-theme/js/jquery/3.7.1/jquery.min.map +1 -0
  121. data/assets/vendor/nocc-bootstrap-theme/js/jquery/jqcloud/2.0.3/jqcloud.min.js +8 -0
  122. data/assets/vendor/nocc-bootstrap-theme/js/ko-fi/widget_2.min.js +1 -0
  123. data/assets/vendor/nocc-bootstrap-theme/js/theme-toggler.js +68 -0
  124. data/assets/vendor/nocc-bootstrap-theme/js/theme-toggler.min.js +1 -0
  125. data/assets/vendor/nocc-bootstrap-theme/manifest.json +1 -0
  126. data/assets/vendor/nocc-bootstrap-theme/package.json +78 -0
  127. metadata +284 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f68377affd630caa0340fd472f07e1ccd3f1c5c4d4bbf8e0fd1ebe27830775b8
4
+ data.tar.gz: 82548b646b5ee01ec9daf055fb7002e10c7f984bd7b738040a85a535597c971b
5
+ SHA512:
6
+ metadata.gz: 10fe510840c716834157dc4f6e129c15addccd67cc3d3cc66f56fc07d81f9085ee6bcd79509e664c47b9b4abf8a8ed4e15532bdb37e1ff11027c4ff1abd28440
7
+ data.tar.gz: d7ae379b4925859bbe516dc3fcb49f819145f2a1e65be9253b4b5b958e083322438285e4f8954051aafcf841f678c3f54e8059d53b97ef5435896e51904d4bfa
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2025 Carles Loriente
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,92 @@
1
+ # jekyll-theme-nocc
2
+
3
+ ## Introduction
4
+
5
+ **Are you tired of outdated Bootstrap themes?**
6
+
7
+ **Say hello to NOCC 🎉**: A Modern Bootstrap 5 Theme!
8
+
9
+ It comes in three powerful options:
10
+
11
+ - **💎 Theme Jekyll Nocc**: A Ruby gem that brings the power of NOCC directly to your Jekyll project. [Get it now!](https://rubygems.org/gems/jekyll-theme-nocc).
12
+ - **🌟 Nocc Bootstrap Theme**: An NPM Package that brings the power of NOCC directly to your NodeJS project. [Get it now!](https://www.npmjs.com/package/nocc-bootstrap-theme).
13
+ - **🌐 Full Site Bundle for Jekyll**: A complete static website showcasing NOCC's seamless integration. Featuring a beautifully designed homepage, dynamic tag cloud, image gallery, and more. [Explore on GitHub](https://github.com/carlesloriente/bootstrap-theme-jekyll).
14
+
15
+ > **ⓘ** NOCC is a complete replacement for Bootstrap 5.3.3
16
+
17
+ ## Table of contents
18
+
19
+ - [jekyll-theme-nocc](#jekyll-theme-nocc)
20
+ - [Introduction](#introduction)
21
+ - [Table of contents](#table-of-contents)
22
+ - [Features](#features)
23
+ - [Installation](#installation)
24
+ - [Usage](#usage)
25
+ - [Contributing](#contributing)
26
+ - [Development](#development)
27
+ - [Creator](#creator)
28
+ - [Thanks](#thanks)
29
+ - [Copyright and License](#copyright-and-license)
30
+
31
+ ## Features
32
+
33
+ 1. **Use of the latest Bootstrap 5 library**
34
+ 2. **Fully Responsive and Dual Color (light and dark)**
35
+ 3. **CSS and JS files are minimized by default**
36
+ 4. **Self-hosted Google web fonts**
37
+ 5. **Demo site built-in**
38
+
39
+ ## Installation
40
+
41
+ Add this line to your Jekyll site's `Gemfile`:
42
+
43
+ ```ruby
44
+ gem "jekyll-theme-nocc"
45
+ ```
46
+
47
+ And add this line to your Jekyll site's `_config.yml`:
48
+
49
+ ```yaml
50
+ theme: jekyll-theme-nocc
51
+ ```
52
+
53
+ And then execute:
54
+
55
+ $ bundle
56
+
57
+ Or install it yourself as:
58
+
59
+ $ gem install jekyll-theme-nocc
60
+
61
+ ## Usage
62
+
63
+ TODO: Write usage instructions here. Describe your available layouts, includes, sass and/or assets.
64
+
65
+ ## Contributing
66
+
67
+ Bug reports and pull requests are welcome on GitHub at https://github.com/carlesloriente/jekyll-theme-nocc. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](https://www.contributor-covenant.org/) code of conduct.
68
+
69
+ ## Development
70
+
71
+ To set up your environment to develop this theme, run `bundle install`.
72
+
73
+ Your theme is setup just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal.
74
+
75
+ When your theme is released, only the files in `_layouts`, `_includes`, `_sass` and `assets` tracked with Git will be bundled.
76
+ To add a custom directory to your theme-gem, please edit the regexp in `jekyll-theme-nocc.gemspec` accordingly.
77
+
78
+ ## Creator
79
+
80
+ **[Carles Loriente](https://www.linkedin.com/in/carles-loriente/)** is the creator and maintainer of the NOCC Bootstrap theme.
81
+
82
+ - [Linkedin](https://www.linkedin.com/in/carles-loriente)
83
+ - [Twitter](https://twitter.com/godarthvader)
84
+ - [GitHub](https://github.com/carlesloriente)
85
+
86
+ ## Thanks
87
+
88
+ [Bootstrap 5](https://getbootstrap.com/) framework created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thorton](https://twitter.com/fat).
89
+
90
+ ## Copyright and License
91
+
92
+ Copyright (c) 2025 Carles Loriente. Code released under the[MIT License](https://opensource.org/licenses/MIT).
data/_config.yml ADDED
@@ -0,0 +1,102 @@
1
+ landing : false
2
+ title : NOCC
3
+ author : Your Name
4
+ url : "https://www.yoururl.com"
5
+ author_url : "https://www.yoururl.com"
6
+ baseurl : "/"
7
+ timezone : "Europe/Madrid"
8
+ description : A responsive dual theme using Bootstrap 5 for Jekyll created by Carles Loriente.
9
+ full_description : >
10
+ A responsive dual theme using Bootstrap 5 for Jekyll created by Carles Loriente. Featuring a homepage, about page, tags cloud page, gallery of images page, examples post pages, post comments powered by Disqus, and contact page form powered by Formspree.
11
+ gh_repository : https://github.com/yourusername/yourrepo/
12
+ encoding : "utf-8"
13
+ locale : "en-US"
14
+ lang : "en"
15
+ formemail :
16
+ permalink : pretty
17
+
18
+ # Manifest
19
+ name : "NOCC Boostrap Jekyll Theme"
20
+ short_name : "NOCC"
21
+ language : "en"
22
+ lang_direction : "ltr"
23
+ color : "#FFFFFF"
24
+
25
+ # Theme Notice (please don't remove it ;))
26
+ theme_version : v2.0.0
27
+ theme_name : NOCC Bootstrap Jekyll Theme
28
+ theme_repo : https://github.com/carlesloriente/jekyll-theme-nocc/
29
+ theme_url : https://bootstrap-theme.notesoncloudcomputing.com/
30
+ theme_author : Carles Loriente
31
+ theme_author_url : https://www.notesoncloudcomputing.com/about/
32
+ theme_download : https://github.com/carlesloriente/jekyll-theme-nocc/archive/refs/heads/main.zip
33
+ theme_package : https://rubygems.org/gems/jekyll-theme-nocc
34
+ theme_logo : "/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc_logo.webp"
35
+
36
+ # Social Profiles
37
+ email : "you@email.com"
38
+ twitter_username :
39
+ github_username :
40
+ linkedin_username :
41
+ kofi :
42
+
43
+ # Add your google-analytics ID here to activate google analytics
44
+ google_site_verification:
45
+ google_analytics :
46
+ google_adsense_account :
47
+ google_tag_id :
48
+
49
+ # Disqus Comments
50
+ # Leave shortname blank to disable comments site-wide.
51
+ # Disable comments for any post by adding `comments: false` to that post's YAML Front Matter.
52
+ disqus_shortname :
53
+
54
+ includes_dir : _includes
55
+ layouts_dir : _layouts
56
+ plugins_dir : _plugins
57
+ tags_dir : tags
58
+
59
+ collections:
60
+ posts:
61
+ permalink : /posts/:name/
62
+ output : true
63
+ tags:
64
+ permalink : /tags/:name/
65
+ output : true
66
+
67
+ defaults:
68
+ - scope:
69
+ path : "posts"
70
+ type : posts
71
+ values:
72
+ layout : post
73
+ - scope:
74
+ path : 'assets/**'
75
+ values:
76
+ sitemap : false
77
+
78
+ # Markdown Processors
79
+ kramdown:
80
+ auto_ids : true
81
+ entity_output : as_char
82
+ toc_levels : [1, 2, 3, 4, 5, 6]
83
+ smart_quotes : lsquo,rsquo,ldquo,rdquo
84
+ input : GFM
85
+ hard_wrap : false
86
+ footnote_nr : 1
87
+ show_warnings : false
88
+
89
+ # Build settings
90
+ paginate : 20
91
+ paginate_path : "/notes/page:num/"
92
+ plugins:
93
+ - jekyll-feed
94
+ - jekyll-paginate
95
+ - jekyll-redirect-from
96
+
97
+ sass:
98
+ load_paths:
99
+ - ./_sass
100
+ style : compressed
101
+
102
+ exclude: ["AUTHORS.md", "CODE_OF_CONDUCT.md", "CONTRIBUTING.md", "CODEOWNERS", "LICENSE", "README.md", "SECURITY.md", "WORKFLOW.md", "Gemfile", "Gemfile.lock", "vendor/bundle/", "vendor/cache/", "vendor/gems/", "vendor/ruby/"]
@@ -0,0 +1,39 @@
1
+ <section class="homehead">
2
+ <div class="mx-auto">
3
+ <div id="carouselRide" class="carousel slide carousel-fade" data-bs-ride="true">
4
+ <div class="carousel-inner">
5
+ <div class="overlay"></div>
6
+ <div class="page-heading">
7
+ {%- if page.title %}
8
+ <h1>{{ page.title }}</h1>
9
+ {% else -%}
10
+ <h1>{{ site.title }}</h1>
11
+ {% endif -%}
12
+ {%- if site.description %}
13
+ <h2 class="subheading">{{ site.description }}</h2>
14
+ {% endif -%}
15
+ </div>
16
+ {%- for image in page.carousel %}
17
+ <div class="carousel-item" data-bs-interval="20000">
18
+ <img src="{{ image }}" class="d-block w-100" aria-hidden="true">
19
+ </div>
20
+ {% endfor -%}
21
+ </div>
22
+ <button class="carousel-control-prev" type="button" data-bs-target="#carouselRide" data-bs-slide="prev">
23
+ <span class="carousel-control-prev-icon" aria-hidden="true"></span>
24
+ <span class="visually-hidden">Previous</span>
25
+ </button>
26
+ <button class="carousel-control-next" type="button" data-bs-target="#carouselRide" data-bs-slide="next">
27
+ <span class="carousel-control-next-icon" aria-hidden="true"></span>
28
+ <span class="visually-hidden">Next</span>
29
+ </button>
30
+ </div>
31
+ </div>
32
+ <script type="text/javascript">
33
+ document.addEventListener('DOMContentLoaded', (event) => {
34
+ var carouselInner = document.getElementsByClassName('carousel-item');
35
+ var carouselItem = carouselInner[0];
36
+ carouselItem.className += ' active';
37
+ });
38
+ </script>
39
+ </section>
@@ -0,0 +1,3 @@
1
+ <div class="language-{{ include.lang }} highlighter-rouge"><pre class="highlight"><button type="button" class="btn-clipboard float-end tooltip" type="button" aria-label="Copy to clipboard" data-bs-original-title="Copy to clipboard"><span class="tooltiptext">Copy to clipboard</span><span class="clipboard filter-white"></span></button>
2
+ <code>{{ include.content }}</code>
3
+ </pre></div>
@@ -0,0 +1,16 @@
1
+ {% if page.comments != false and jekyll.environment == "production" %}
2
+ <div id="disqus_thread"></div>
3
+ <script type="text/javascript">
4
+ var disqus_config = function () {
5
+ this.page.url = '{{ page.url | absolute_url }}';
6
+ this.page.identifier = '{{ page.url | absolute_url }}';
7
+ };
8
+ (function() {
9
+ var d = document, s = d.createElement('script');
10
+ s.src = 'https://{{ site.disqus_shortname }}.disqus.com/embed.js';
11
+ s.setAttribute('data-timestamp', +new Date());
12
+ (d.head || d.body).appendChild(s);
13
+ })();
14
+ </script>
15
+ <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
16
+ {% endif %}
@@ -0,0 +1,18 @@
1
+
2
+ <div id="icon-grid" class="container px-4 py-5">
3
+ <h2 class="pb-2 border-bottom">Key Features</h2>
4
+ <div class="row g-4 py-5 row-cols-2 row-cols-lg-3">
5
+ {% for feature in features -%}
6
+ <div class="col d-flex align-items-start">
7
+ <div class="features-icon features-icon-gradient text-body-emphasis d-inline-flex align-items-center justify-content-center fs-4 flex-shrink-0 me-3">
8
+ <img role="img" class="filter-white" alt="Free software" aria-label="Free Software" src="{{ feature.background }}" width="45em" height="45em">
9
+ </div>
10
+ <div>
11
+ <h3 class="fs-2 text-body-emphasis">{{ feature.background }}</h3>
12
+ {{ feature.content }}
13
+ </div>
14
+ </div>
15
+ {% endfor -%}
16
+ </div>
17
+ </div>
18
+ <div class="home-divider"></div>
@@ -0,0 +1,55 @@
1
+
2
+ <!-- Footer -->
3
+ <footer class="footer mt-auto">
4
+ <div class="container">
5
+ <ul class="list-inline text-center">
6
+ {%- if site.email %}
7
+ <li class="list-inline-item rounded-circle">
8
+ <a href="mailto:{{ site.email | encode_email }}" hreflang="{{ site.lang }}" aria-label="{{ site.email }} address">
9
+ <img class="filter-white" src="{{ '/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/envelope-at-fill.svg' | relative_url }}" width="32px" height="32px" aria-hidden="true">
10
+ </a>
11
+ </li>
12
+ {%- endif -%}
13
+ {% if site.twitter_username %}
14
+ <li class="list-inline-item rounded-circle">
15
+ <a href="https://twitter.com/{{ site.twitter_username }}" hreflang="{{ site.lang }}" target="_blank" rel="noopener noreferrer" aria-label="{{ site.twitter_username }} Twitter">
16
+ <img class="filter-white" src="{{ '/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/twitter-x.svg' | relative_url }}" width="32px" height="32px" aria-hidden="true">
17
+ </a>
18
+ </li>
19
+ {%- endif -%}
20
+ {% if site.facebook_username %}
21
+ <li class="list-inline-item rounded-circle">
22
+ <a href="https://www.facebook.com/{{ site.facebook_username }}" hreflang="{{ site.lang }}" target="_blank" rel="noopener noreferrer" aria-label="{{ site.facebook_username }} Facebook">
23
+ <img class="filter-white" src="{{ '/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/facebook.svg' | relative_url }}" width="32px" height="32px" aria-hidden="true">
24
+ </a>
25
+ </li>
26
+ {%- endif -%}
27
+ {% if site.linkedin_username %}
28
+ <li class="list-inline-item rounded-circle">
29
+ <a href="https://www.linkedin.com/in/{{ site.linkedin_username }}" hreflang="{{ site.lang }}" target="_blank" rel="noopener noreferrer" aria-label="{{ site.linkedin_username }} Linkedin">
30
+ <img class="filter-white" src="{{ '/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/linkedin.svg' | relative_url }}" width="32px" height="32px" aria-hidden="true">
31
+ </a>
32
+ </li>
33
+ {%- endif -%}
34
+ {% if site.github_username %}
35
+ <li class="list-inline-item rounded-circle">
36
+ <a href="https://github.com/{{ site.github_username }}" hreflang="{{ site.lang }}" target="_blank" rel="noopener noreferrer" aria-label="{{ site.github_username }} GitHub">
37
+ <img class="filter-white" src="{{ '/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/github.svg' | relative_url }}" width="32px" height="32px" aria-hidden="true">
38
+ </a>
39
+ </li>
40
+ {%- endif -%}
41
+ {% if site.instagram_username %}
42
+ <li class="list-inline-item rounded-circle">
43
+ <a href="https://instagram.com/{{ site.instagram_username }}" hreflang="{{ site.lang }}" target="_blank" rel="noopener noreferrer" aria-label="{{ site.instagram_username }} Instagram">
44
+ <img class="filter-white" src="{{ '/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/instagram.svg' | relative_url }}" width="32px" height="32px" aria-hidden="true">
45
+ </a>
46
+ </li>
47
+ {%- endif %}
48
+ </ul>
49
+ <p class="copyright text-copyright">Copyright &copy; <a href="{{ site.author_url }}" hreflang="{{ site.lang }}" aria-label="{{ site.title }} author">{{ site.author }}</a> {{ 'now' | date: "%Y" }}<br />
50
+ <a href="{{ site.theme_repo }}" hreflang="{{ site.lang }}" target="_blank" rel="noopener noreferrer" aria-label="{{ site.theme_name }}">{{ site.theme_name }}</a> {{ site.theme_version }} created by <a href="{{ site.theme_author_url }}" hreflang="{{ site.lang }}" target="_blank" rel="noopener noreferrer" aria-label="Autor website {{ site.theme_author_url }}">{{ site.theme_author }}</a><br />
51
+ Build with <a href="https://jekyllrb.com" hreflang="{{ site.lang }}" target="_blank" rel="noopener noreferrer" aria-label="Jekyll">Jekyll</a><br />
52
+ Proudly hosted by <a href="https://github.com" hreflang="{{ site.lang }}" target="_blank" rel="noopener noreferrer" aria-label="Github"><strong>GitHub</strong></a>
53
+ </p>
54
+ </div>
55
+ </footer>
@@ -0,0 +1,8 @@
1
+ <!-- Global site tag (gtag.js) - Google Analytics -->
2
+ <script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}" ></script>
3
+ <script type="text/javascript">
4
+ window.dataLayer = window.dataLayer || [];
5
+ function gtag(){dataLayer.push(arguments);}
6
+ gtag('js', new Date());
7
+ gtag('config', '{{ site.google_analytics }}', {cookie_flags: 'SameSite=None;Secure'});
8
+ </script>
@@ -0,0 +1,33 @@
1
+ <meta charset="utf-8">
2
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
3
+ <title>{% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %}</title>
4
+ <meta name="description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | normalize_whitespace | truncate: 160 | escape | page.title }}{% elsif page.description %}{{ page.description | strip_html | normalize_whitespace | truncate: 160 | escape | page.title }}{% else %}{{ site.description | strip_html | normalize_whitespace | truncate: 160 | escape | page.title }}{% endif %}">
5
+ <meta name="google-site-verification" content="{{ site.google_site_verification }}">
6
+ <meta name="author" content="{{ site.author }}">
7
+ {%- if site.twitter_username %}
8
+ <meta name="twitter:site" content="{{ site.twitter_username }}">
9
+ <meta name="twitter:creator" content="{{ site.twitter_username }}">
10
+ {% endif -%}
11
+ <meta name="twitter:card" content="summary_large_image">
12
+ <meta property="twitter:domain" content='{{ site.url | split: "//" | last | split: "/" | first }}'>
13
+ <meta property="twitter:url" content="{{ page.url | absolute_url }}">
14
+ <meta name="twitter:title" content="{{ page.title | escape }}">
15
+ <meta name="twitter:description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | normalize_whitespace | truncate: 160 | escape | page.title }}{% elsif page.description %}{{ page.description | strip_html | normalize_whitespace | truncate: 160 | escape | page.title }}{% else %}{{ site.description | strip_html | normalize_whitespace | truncate: 160 | escape | page.title }}{% endif %}">
16
+ <meta name="twitter:image" content="{{ page.background | absolute_url }}">
17
+ <meta property="og:url" content="{{ page.url | absolute_url }}">
18
+ <meta property="og:site_name" content="{{ site.title }}">
19
+ <meta property="og:type" content="article">
20
+ <meta property="og:title" content="{{ page.title | escape }}">
21
+ <meta property="og:locale" content="{{ site.locale }}">
22
+ <meta property="og:published_time" content="{% if page.date %}{{ page.date }}{% else %}{{ site.date }}{% endif %}">
23
+ <meta property="og:description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | normalize_whitespace | truncate: 160 | escape | page.title }}{% elsif page.description %}{{ page.description | strip_html | normalize_whitespace | truncate: 160 | escape | page.title }}{% else %}{{ site.description | strip_html | normalize_whitespace | truncate: 160 | escape | page.title }}{% endif %}">
24
+ <meta property="og:image" content="{{ page.background | absolute_url }}">
25
+ <link rel="stylesheet" href="{{ '/assets/vendor/nocc-bootstrap-theme/css/nocc-theme.min.css' | relative_url }}" type="text/css">
26
+ <link rel="stylesheet" href="{{ '/assets/css/styles.css' | relative_url }}" type="text/css">
27
+ <link rel="canonical" href="{{ page.url | replace:'index.html','' | absolute_url }}">
28
+ <link rel="alternate" type="application/rss+xml" title="{{ site.title | escape }}" href="{{ 'feed.xml' | relative_url }}">
29
+ <link rel="shortcut icon" href="{{ '/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon.ico' | relative_url }}">
30
+ <link rel="icon" href="{{ '/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon.ico' | relative_url }}" sizes="any">
31
+ <link rel="icon" href="{{ '/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon.svg' | relative_url }}" type="image/svg+xml">
32
+ <link rel="apple-touch-icon" href="{{ '/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon.png' | relative_url }}" type="image/png">
33
+ <link rel="manifest" href="/manifest.webmanifest">
@@ -0,0 +1,20 @@
1
+ {%- for file in site.static_files -%}
2
+ {%- if file.path contains include.folder -%}
3
+ {%- if file.extname == '.jpg' or
4
+ file.extname == '.jpeg' or
5
+ file.extname == '.JPG' or
6
+ file.extname == '.webp' or
7
+ file.extname == '.png' or
8
+ file.extname == '.JPEG' -%}
9
+ {% assign filenameparts = file.path | split: "/" %}
10
+ {% assign filename = filenameparts | last | replace: file.extname,"" -%}
11
+ <button class="thumbnail ratio ratio-4x3" id="{{ filename }}" data-bs-toggle="modal" data-bs-title="{{ filename }}" aria-label="{{ filename }}"
12
+ data-bs-image="{{ file.path }}"
13
+ data-bs-target="#image-gallery">
14
+ <img class="img-thumbnail"
15
+ src="{{ file.path }}"
16
+ alt="{{ filename }}">
17
+ </button>
18
+ {%- endif -%}
19
+ {%- endif -%}
20
+ {%- endfor - %}
@@ -0,0 +1,48 @@
1
+ <div class="position-fixed bottom-0 end-0 mb-3 me-3">
2
+ <button class="btn-toggle py-2 d-flex align-items-center" id="bd-toggle" data-bs-toggle="button" type="button" aria-expanded="false" aria-label="Toggle theme color">
3
+ <span class="daylight filter-white"></span>
4
+ </button>
5
+ </div>
6
+ <script type="text/javascript" src="{{ '/assets/vendor/nocc-bootstrap-theme/js/theme-toggler.min.js' | relative_url }}"></script>
7
+ <!-- Navigation -->
8
+ <nav class="navbar navbar-expand-lg fixed-top" id="mainNav">
9
+ <div class="container">
10
+ <a class="navbar-brand" hreflang="{{ site.lang }}" href="{{ site.baseurl }}">{{ site.title | escape }}</a>
11
+ <button class="navbar-toggler navbar-toggler-right" type="button" data-bs-toggle="collapse" data-bs-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
12
+ Menu
13
+ <i class="fa fa-bars"></i>
14
+ </button>
15
+ <div class="collapse navbar-collapse justify-content-end" id="navbarResponsive">
16
+ <ul class="navbar-nav">
17
+ <li class="nav-item">
18
+ <a class="nav-link" hreflang="{{ site.lang }}" href="{{ site.baseurl }}" aria-label="{{ site.title }} Home">Home</a>
19
+ </li>
20
+ <li class="nav-item">
21
+ <a class="nav-link" hreflang="{{ site.lang }}" href="{{ 'about/' | relative_url }}" aria-label="{{ site.title }} About">About</a>
22
+ </li>
23
+ <li class="nav-item">
24
+ <a class="nav-link" hreflang="{{ site.lang }}" href="{{ 'posts/' | relative_url }}" aria-label="{{ site.title }} Posts">Posts</a>
25
+ </li>
26
+ <li class="nav-item">
27
+ <a class="nav-link" hreflang="{{ site.lang }}" href="{{ site.tags_dir | append: '/' | relative_url }}" aria-label="{{ site.title }} Tags">Tags</a>
28
+ </li>
29
+ <li class="nav-item">
30
+ <a class="nav-link" hreflang="{{ site.lang }}" href="{{ 'gallery/' | relative_url }}" aria-label="{{ site.title }} Gallery of images">Gallery</a>
31
+ </li>
32
+ <li class="nav-item">
33
+ <a class="nav-link" hreflang="{{ site.lang }}" href="{{ 'contact/' | relative_url }}" aria-label="{{ site.title }} Contact form">Contact</a>
34
+ </li>
35
+ {%- if site.gh_repository %}
36
+ <li class="nav-item">
37
+ <a href="{{ site.gh_repository }}" hreflang="{{ site.lang }}" target="_blank" rel="noreferrer" aria-label="{{ site.title }} repo" title="{{ site.title }} repo"><img class="filter-white" src="/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/github.svg" width="24px" height="24px" aria-hidden="true" /></a>
38
+ </li>
39
+ {%- endif %}
40
+ {%- if site.kofi %}
41
+ <li class="nav-item">
42
+ <a href="https://ko-fi.com/{{ site.kofi }}" hreflang="{{ site.lang }}" target="_blank" rel="noreferrer" aria-label="Support me on ko-fi.com" title="Support me on ko-fi.com"><img class="nav-kofi" src="/assets/vendor/nocc-bootstrap-theme/images/nocc/kofi_s_logo_nolabel.webp" border="0" alt="Buy Me a Coffee at ko-fi.com" /></a>
43
+ </li>
44
+ {% endif -%}
45
+ </ul>
46
+ </div>
47
+ </div>
48
+ </nav>
@@ -0,0 +1,3 @@
1
+ <span class="reading-time" title="Estimated read time">
2
+ {%- assign words = include.content | number_of_words -%}
3
+ {% if words < 270 %} 1 min {% else %} {{ words | divided_by:135 }} mins {% endif %} read</span>
@@ -0,0 +1,88 @@
1
+
2
+ {% unless page.tagsindex -%}
3
+ <script type="text/javascript" rel="preload" src="{{ '/assets/vendor/nocc-bootstrap-theme/js/jquery/3.7.1/jquery.min.js' | relative_url }}"></script>
4
+ {% endunless -%}
5
+ <script type="text/javascript" src="{{ '/assets/vendor/nocc-bootstrap-theme/js/clipboardjs/clipboard.min.js' | relative_url }}"></script>
6
+ <script type="text/javascript" src="{{ '/assets/vendor/nocc-bootstrap-theme/js/copy-clipboard.js' | relative_url }}"></script>
7
+ <script type="text/javascript" src="{{ '/assets/vendor/nocc-bootstrap-theme/js/bootstrap/5.3.3/bootstrap.bundle.min.js' | relative_url }}"></script>
8
+ {%- if jekyll.environment != "development" %}
9
+ <script type="text/javascript" src="https://notes-on-cloud-infrastructure.disqus.com/count.js" async id="dsq-count-scr"></script>
10
+ {%- endif %}
11
+ {%- if page.url contains 'contact' -%}
12
+ <!-- Form Validation -->
13
+ <script type="text/javascript" src="{{ '/assets/vendor/nocc-bootstrap-theme/js/jq-bootstrap-validation.min.js' | relative_url }}"></script>
14
+ <!-- Send Form -->
15
+ <script>
16
+ $(function () {
17
+ $("#contactForm input,#contactForm textarea").jqBootstrapValidation({
18
+ preventSubmit: true,
19
+ submitError: function ($form, event, errors) {
20
+ // additional error messages or events
21
+ },
22
+ submitSuccess: function ($form, event) {
23
+ event.preventDefault(); // prevent default submit behaviour
24
+ // get values from FORM
25
+ var name = $("input#name").val();
26
+ var email = $("input#email").val();
27
+ var message = $("textarea#message").val();
28
+ var firstName = name; // For Success/Failure Message
29
+ // Check for white space in name for Success/Fail message
30
+ if (firstName.indexOf(' ') >= 0) {
31
+ firstName = name.split(' ').slice(0, -1).join(' ');
32
+ }
33
+ $this = $("#sendMessageButton");
34
+ $this.prop("disabled", true); // Disable submit button until AJAX call is complete to prevent duplicate messages
35
+ $.ajax({
36
+ url: "//formspree.io/f/{{ site.formemail }}",
37
+ type: "POST",
38
+ data: {
39
+ name: name,
40
+ email: email,
41
+ message: message
42
+ },
43
+ cache: false,
44
+ success: function () {
45
+ // Success message
46
+ $('#success').html("<div class='alert alert-success'>");
47
+ $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;").append("</button>");
48
+ $('#success > .alert-success').append("<strong>Your message has been sent. </strong>");
49
+ $('#success > .alert-success').append('</div>');
50
+ //clear all fields
51
+ $('#contactForm').trigger("reset");
52
+ },
53
+ error: function () {
54
+ // Fail message
55
+ $('#success').html("<div class='alert alert-success'>");
56
+ $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;").append("</button>");
57
+ $('#success > .alert-success').append("<strong>Your message has been sent. </strong>");
58
+ $('#success > .alert-success').append('</div>');
59
+ //$('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;").append("</button>");
60
+ //$('#success > .alert-danger').append($("<strong>").text("Sorry " + firstName + ", it seems that my mail server is not responding. Please try again later!"));
61
+ //$('#success > .alert-danger').append('</div>');
62
+ //clear all fields
63
+ $('#contactForm').trigger("reset");
64
+ },
65
+ complete: function () {
66
+ setTimeout(function () {
67
+ $this.prop("disabled", false); // Re-enable submit button when AJAX call is complete
68
+ }, 1000);
69
+ }
70
+ });
71
+ },
72
+ filter: function () {
73
+ return $(this).is(":visible");
74
+ }
75
+ });
76
+
77
+ $("a[data-toggle=\"tab\"]").click(function (e) {
78
+ e.preventDefault();
79
+ $(this).tab("show");
80
+ });
81
+ });
82
+
83
+ /*When clicking on Full hide fail/success boxes */
84
+ $('#name').focus(function () {
85
+ $('#success').html('');
86
+ });
87
+ </script>
88
+ {%- endif -%}
@@ -0,0 +1,39 @@
1
+ <section class="homehead">
2
+ <div class="mx-auto">
3
+ <div id="carouselRide" class="carousel slide carousel-fade" data-bs-ride="true">
4
+ <div class="carousel-inner">
5
+ <div class="overlay"></div>
6
+ <div class="page-heading">
7
+ {%- if page.title %}
8
+ <h1>{{ page.title }}</h1>
9
+ {% else -%}
10
+ <h1>{{ site.title }}</h1>
11
+ {% endif -%}
12
+ {%- if site.description %}
13
+ <h2 class="subheading">{{ site.description }}</h2>
14
+ {% endif -%}
15
+ </div>
16
+ {%- for image in page.carousel %}
17
+ <div class="carousel-item" data-bs-interval="20000">
18
+ <img src="{{ image }}" class="d-block w-100" aria-hidden="true">
19
+ </div>
20
+ {% endfor -%}
21
+ </div>
22
+ <button class="carousel-control-prev" type="button" data-bs-target="#carouselRide" data-bs-slide="prev">
23
+ <span class="carousel-control-prev-icon" aria-hidden="true"></span>
24
+ <span class="visually-hidden">Previous</span>
25
+ </button>
26
+ <button class="carousel-control-next" type="button" data-bs-target="#carouselRide" data-bs-slide="next">
27
+ <span class="carousel-control-next-icon" aria-hidden="true"></span>
28
+ <span class="visually-hidden">Next</span>
29
+ </button>
30
+ </div>
31
+ </div>
32
+ <script type="text/javascript">
33
+ document.addEventListener('DOMContentLoaded', (event) => {
34
+ var carouselInner = document.getElementsByClassName('carousel-item');
35
+ var carouselItem = carouselInner[0];
36
+ carouselItem.className += ' active';
37
+ });
38
+ </script>
39
+ </section>
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html class="h-100" lang="{{ site.lang }}" data-bs-theme="light">
3
+ <head>
4
+ {% include head.html %}
5
+ {%- if jekyll.environment != "development" -%}
6
+ {% include google_analytics.html %}
7
+ {%- endif -%}
8
+ </head>
9
+ <body class="d-flex flex-column h-100" style="overflow-x: hidden;">
10
+ <header>
11
+ {% include navbar.html %}
12
+ </header>
13
+ {{ content }}
14
+ {% include footer.html %}
15
+ {% include scripts.html %}
16
+ </body>
17
+ </html>