jekyll-theme-zer0 0.1.8 → 0.2.1

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +144 -0
  3. data/README.md +504 -316
  4. data/_data/navigation/main.yml +15 -11
  5. data/_data/navigation/quickstart.yml +12 -0
  6. data/_includes/README.md +97 -0
  7. data/_includes/{info-section.html → components/info-section.html} +4 -4
  8. data/_includes/content/giscus.html +60 -0
  9. data/_includes/content/intro.html +66 -0
  10. data/_includes/{sitemap.html → content/sitemap.html} +1 -1
  11. data/_includes/{toc.html → content/toc.html} +1 -1
  12. data/_includes/{branding.html → core/branding.html} +2 -2
  13. data/_includes/core/footer.html +167 -0
  14. data/_includes/core/head.html +158 -0
  15. data/_includes/core/header.html +125 -0
  16. data/_includes/landing/landing-install-cards.html +52 -0
  17. data/_includes/landing/landing-quick-links.html +28 -0
  18. data/_includes/navigation/navbar.html +96 -0
  19. data/_includes/navigation/sidebar-left.html +83 -0
  20. data/_includes/{sidebar-right.html → navigation/sidebar-right.html} +3 -10
  21. data/_layouts/README.md +198 -0
  22. data/_layouts/blog.html +252 -143
  23. data/_layouts/collection.html +108 -27
  24. data/_layouts/default.html +74 -26
  25. data/_layouts/home.html +59 -9
  26. data/_layouts/index.html +47 -1
  27. data/_layouts/journals.html +11 -19
  28. data/_layouts/landing.html +148 -12
  29. data/_layouts/root.html +65 -30
  30. data/assets/js/back-to-top.js +16 -19
  31. metadata +65 -41
  32. data/_includes/footer.html +0 -57
  33. data/_includes/giscus.html +0 -16
  34. data/_includes/head.html +0 -95
  35. data/_includes/header.html +0 -79
  36. data/_includes/intro.html +0 -68
  37. data/_includes/navbar.html +0 -34
  38. data/_includes/sidebar-left.html +0 -41
  39. data/_includes/toc +0 -7
  40. data/_layouts/javascript.html +0 -8
  41. /data/_includes/{google-analytics.html → analytics/google-analytics.html} +0 -0
  42. /data/_includes/{google-tag-manager-body.html → analytics/google-tag-manager-body.html} +0 -0
  43. /data/_includes/{google-tag-manager-head.html → analytics/google-tag-manager-head.html} +0 -0
  44. /data/_includes/{dev-shortcuts.html → components/dev-shortcuts.html} +0 -0
  45. /data/_includes/{halfmoon.html → components/halfmoon.html} +0 -0
  46. /data/_includes/{js-cdn.html → components/js-cdn.html} +0 -0
  47. /data/_includes/{powered-by.html → components/powered-by.html} +0 -0
  48. /data/_includes/{quick-index.html → components/quick-index.html} +0 -0
  49. /data/_includes/{searchbar.html → components/searchbar.html} +0 -0
  50. /data/_includes/{svg.html → components/svg.html} +0 -0
  51. /data/_includes/{zer0-env-var.html → components/zer0-env-var.html} +0 -0
  52. /data/_includes/{seo.html → content/seo.html} +0 -0
  53. /data/_includes/{style.html → docs/bootstrap-docs.html} +0 -0
  54. /data/_includes/{breadcrumbs.html → navigation/breadcrumbs.html} +0 -0
  55. /data/_includes/{nav_list.html → navigation/nav_list.html} +0 -0
  56. /data/_includes/{sidebar-categories.html → navigation/sidebar-categories.html} +0 -0
  57. /data/_includes/{sidebar-folders.html → navigation/sidebar-folders.html} +0 -0
@@ -1,37 +1,85 @@
1
1
  ---
2
2
  layout: root
3
3
  ---
4
- <!-- _
5
- file: default.html
6
- path: _layouts/default.html
7
- includes: sidebar-left.html, sidebar-right.html
4
+ <!--
5
+ ===================================================================
6
+ DEFAULT LAYOUT - Standard content layout with sidebars
7
+ ===================================================================
8
+
9
+ File: default.html
10
+ Path: _layouts/default.html
11
+ Inherits: root.html
12
+ Purpose: Primary content layout with sidebar navigation and table of contents
13
+
14
+ Template Logic:
15
+ - Creates a responsive three-column layout using Bootstrap grid
16
+ - Left sidebar: Site navigation and content outline (collapsible on mobile)
17
+ - Center: Main content area with page title and body content
18
+ - Right sidebar: Table of contents and page shortcuts (hidden on mobile)
19
+ - Implements scroll spy for navigation highlighting
20
+ - Responsive design that stacks vertically on mobile devices
21
+
22
+ Layout Structure:
23
+ 1. Container wrapper with Bootstrap responsive classes
24
+ 2. Left sidebar (bd-sidebar) - Navigation and outline
25
+ 3. Main content area (bd-main) with:
26
+ - Intro section (page title, metadata)
27
+ - Right sidebar (bd-toc) - Table of contents
28
+ - Content area (bd-content) - Main page content
29
+
30
+ Dependencies:
31
+ - sidebar-left.html: Site navigation and content outline
32
+ - intro.html: Page title, breadcrumbs, and metadata
33
+ - sidebar-right.html: Table of contents and page shortcuts
34
+
35
+ Bootstrap Classes Used:
36
+ - container-xxl: Extra large responsive container
37
+ - bd-gutter: Custom Bootstrap spacing
38
+ - bd-layout: Custom layout utility class
39
+ - bd-sidebar: Custom sidebar styling
40
+ - bd-main: Main content area
41
+ - bd-toc: Table of contents styling
42
+ - bd-content: Content area styling
43
+ ===================================================================
8
44
  -->
9
45
 
10
- <!-- Default Layout - Docs -->
11
-
12
- <!-- Main body including sidebars -->
46
+ <!-- ================================================ -->
47
+ <!-- MAIN LAYOUT CONTAINER -->
48
+ <!-- Bootstrap responsive container with custom grid -->
49
+ <!-- ================================================ -->
13
50
  <div class="container-xxl bd-gutter mt-3 my-md-4 bd-layout">
14
51
 
15
- <!-- Left Sidebar for Outline - Offcanvas -->
16
- <!-- _includes/sidebar-left.html -->
17
- <aside class=" bd-sidebar ">
18
- {% include sidebar-left.html %}
19
- </aside>
52
+ <!-- ================================ -->
53
+ <!-- LEFT SIDEBAR - Navigation -->
54
+ <!-- ================================ -->
55
+ <!-- Site navigation, content outline, and offcanvas menu for mobile -->
56
+ <aside class="bd-sidebar">
57
+ {% include navigation/sidebar-left.html %}
58
+ </aside>
20
59
 
21
- <!-- Main Body -->
22
- <main class="bd-main order-1" data-spy="scroll" data-bs-target="toc-content" data-offset="0">
60
+ <!-- ================================ -->
61
+ <!-- MAIN CONTENT AREA -->
62
+ <!-- ================================ -->
63
+ <!-- Primary content section with scroll spy for table of contents navigation -->
64
+ <main class="bd-main order-1" data-spy="scroll" data-bs-target="toc-content" data-offset="0">
23
65
 
24
- <!-- intro -->
25
- {% include intro.html %}
66
+ <!-- Page introduction: title, breadcrumbs, metadata -->
67
+ {% include content/intro.html %}
26
68
 
27
- <!-- Right Sidebar - Page Contents and Shortcuts-->
28
- <!-- _includes/sidebar-right.html -->
29
- <div class="bd-toc text-body-secondary" >
30
- {% include sidebar-right.html %}
31
- </div>
32
- <!-- Main Content -->
33
- <div id="main-content" class="bd-content ps-lg-2">
34
- {{ content }}
35
- </div>
36
- </main>
69
+ <!-- =============================== -->
70
+ <!-- RIGHT SIDEBAR - Table of Contents -->
71
+ <!-- =============================== -->
72
+ <!-- Page outline, shortcuts, and related links (hidden on mobile) -->
73
+ <div class="bd-toc text-body-secondary">
74
+ {% include navigation/sidebar-right.html %}
75
+ </div>
76
+
77
+ <!-- =============================== -->
78
+ <!-- MAIN CONTENT BODY -->
79
+ <!-- =============================== -->
80
+ <!-- Where the actual page content is rendered -->
81
+ <div id="main-content" class="bd-content ps-lg-2">
82
+ {{ content }}
83
+ </div>
84
+ </main>
37
85
  </div>
data/_layouts/home.html CHANGED
@@ -1,16 +1,66 @@
1
1
  ---
2
2
  layout: root
3
3
  ---
4
-
5
- <!-- Home Layout -->
6
-
7
- <div class="home">
8
- {%- if page.title -%}
9
- <h1 class="page-heading">{{ page.title }}</h1>
10
- {%- endif -%}
4
+ <!--
5
+ ===================================================================
6
+ HOME LAYOUT - Homepage template with minimal structure
7
+ ===================================================================
8
+
9
+ File: home.html
10
+ Path: _layouts/home.html
11
+ Inherits: root.html
12
+ Purpose: Clean, minimal layout for the site homepage
11
13
 
12
- {{ content }}
14
+ Template Logic:
15
+ - Provides a simple container for homepage content
16
+ - Conditionally displays page title if specified in frontmatter
17
+ - Includes RSS feed subscription link for blog functionality
18
+ - Bypasses the sidebar navigation system for a cleaner look
19
+ - Focuses on content presentation without distractions
20
+
21
+ Layout Structure:
22
+ 1. Main home container wrapper
23
+ 2. Optional page title (controlled by frontmatter)
24
+ 3. Main content area (from Markdown or HTML)
25
+ 4. RSS subscription link for blog updates
26
+
27
+ Usage:
28
+ - Set layout: home in page frontmatter
29
+ - Optionally include title: "Page Title" for display
30
+ - Content can include hero sections, feature highlights, etc.
31
+
32
+ Design Philosophy:
33
+ - Minimal structure allows for maximum content flexibility
34
+ - RSS link maintains blog connectivity
35
+ - Clean presentation suitable for landing pages
36
+ ===================================================================
37
+ -->
13
38
 
14
- <p class="rss-subscribe">subscribe <a href="{{ "/feed.xml" | relative_url }}">via RSS</a></p>
39
+ <!-- ================================ -->
40
+ <!-- HOME PAGE CONTAINER -->
41
+ <!-- ================================ -->
42
+ <div class="home">
43
+ <!-- ========================== -->
44
+ <!-- OPTIONAL PAGE TITLE -->
45
+ <!-- ========================== -->
46
+ <!-- Display title only if specified in page frontmatter -->
47
+ <!-- Usage: Add 'title: "Homepage Title"' to page frontmatter -->
48
+ {%- if page.title -%}
49
+ <h1 class="page-heading">{{ page.title }}</h1>
50
+ {%- endif -%}
51
+
52
+ <!-- ========================== -->
53
+ <!-- MAIN CONTENT AREA -->
54
+ <!-- ========================== -->
55
+ <!-- Homepage content rendered from Markdown or HTML -->
56
+ <!-- Can include hero sections, feature cards, etc. -->
57
+ {{ content }}
15
58
 
59
+ <!-- ========================== -->
60
+ <!-- RSS SUBSCRIPTION LINK -->
61
+ <!-- ========================== -->
62
+ <!-- Provides easy access to RSS feed for blog updates -->
63
+ <p class="rss-subscribe">
64
+ subscribe <a href="{{ "/feed.xml" | relative_url }}">via RSS</a>
65
+ </p>
16
66
  </div>
data/_layouts/index.html CHANGED
@@ -1,8 +1,54 @@
1
1
  ---
2
2
  layout: root
3
3
  ---
4
- <!-- Site Indexing template for search functionality -->
4
+ <!--
5
+ ===================================================================
6
+ INDEX LAYOUT - Search indexing template
7
+ ===================================================================
8
+
9
+ File: index.html
10
+ Path: _layouts/index.html
11
+ Inherits: root.html
12
+ Purpose: Specialized layout for search functionality and site indexing
13
+
14
+ Template Logic:
15
+ - Provides a clean container for search-related content
16
+ - Uses fluid container for full-width search interfaces
17
+ - Implements proper spacing with Bootstrap padding classes
18
+ - Bypasses sidebar navigation for focused search experience
19
+
20
+ Layout Features:
21
+ - Full-width fluid container for search components
22
+ - Responsive padding that adapts to screen size
23
+ - Clean, minimal structure to highlight search functionality
24
+ - Semantic HTML5 structure with proper search context
25
+
26
+ Usage:
27
+ - Typically used for search result pages
28
+ - Site indexing and content discovery pages
29
+ - Archive pages with search functionality
30
+ - Any page requiring full-width content presentation
31
+
32
+ Search Integration:
33
+ - Can be integrated with Algolia, Lunr.js, or other search engines
34
+ - Provides container for search forms, filters, and results
35
+ - Supports dynamic content loading and filtering
36
+
37
+ Accessibility:
38
+ - Uses semantic search-index ID for screen readers
39
+ - Provides proper container context for search tools
40
+ - Maintains consistent navigation patterns
41
+ ===================================================================
42
+ -->
5
43
 
44
+ <!-- ================================ -->
45
+ <!-- SEARCH INDEX CONTAINER -->
46
+ <!-- ================================ -->
47
+ <!-- Full-width container optimized for search interfaces and content discovery -->
6
48
  <div id="search-index" class="container-fluid pt-5 py-5">
49
+ <!-- ========================== -->
50
+ <!-- SEARCH CONTENT AREA -->
51
+ <!-- ========================== -->
52
+ <!-- Main content area for search forms, results, filters, and indexing -->
7
53
  {{ content }}
8
54
  </div>
@@ -1,41 +1,33 @@
1
1
  ---
2
2
  layout: default
3
3
  ---
4
-
5
- <!-- Journals Layout -->
4
+ <!--
5
+ Simple journals layout for debugging stack overflow issue
6
+ -->
6
7
 
7
8
  <div id="main" role="main">
8
9
  <div class="archive">
9
- {% unless page.header.overlay_color or page.header.overlay_image %}
10
- <h1 id="page-title" class="">{{ page.title }}</h1>
11
- {% endunless %}
10
+ <h1 id="page-title">{{ page.title }}</h1>
12
11
  {{ content }}
13
12
  </div>
14
-
13
+
14
+ <!-- Simple navigation without complex logic -->
15
15
  <nav aria-label="Page navigation">
16
16
  <ul class="pagination pagination-lg justify-content-center">
17
17
  <li class="page-item">
18
18
  {% if page.previous %}
19
- <a class="page-link" href="{{ page.previous.url | prepend: site.baseurl }}">
20
- Previous: {{ page.previous.title }}
21
- </a>
19
+ <a class="page-link" href="{{ page.previous.url }}">Previous</a>
22
20
  {% else %}
23
- <a class="page-link" href="#" aria-disabled="true">Previous</a>
21
+ <span class="page-link disabled">Previous</span>
24
22
  {% endif %}
25
23
  </li>
26
24
  <li class="page-item">
27
25
  {% if page.next %}
28
- <a class="page-link" href="{{ page.next.url | prepend: site.baseurl }}">
29
- Next: {{ page.next.title }}
30
- </a>
26
+ <a class="page-link" href="{{ page.next.url }}">Next</a>
31
27
  {% else %}
32
- <a class="page-link" href="#" aria-disabled="true">Next</a>
28
+ <span class="page-link disabled">Next</span>
33
29
  {% endif %}
34
30
  </li>
35
31
  </ul>
36
32
  </nav>
37
- </div>
38
-
39
- {% if page.comments %}
40
- {% include giscus.html %}
41
- {% endif %}
33
+ </div>
@@ -1,18 +1,154 @@
1
1
  ---
2
2
  layout: root
3
3
  ---
4
-
5
- <!-- Left Sidebar for Outline - Offcanvas -->
6
- <!-- _includes/sidebar-left.html -->
7
- <div class="offcanvas">
8
- {% include sidebar-left.html %}
9
- </div>
10
- <div class="container-xl pt-5">
4
+ <!--
5
+ ===================================================================
6
+ LANDING LAYOUT - Welcome page for first-time visitors
7
+ ===================================================================
8
+
9
+ File: landing.html
10
+ Path: _layouts/landing.html
11
+ Inherits: root.html
12
+ Purpose: Create an engaging first impression for visitors discovering the site
13
+
14
+ Template Logic:
15
+ - Hero section with clear value proposition
16
+ - Feature highlights with visual appeal
17
+ - Quick navigation to key areas
18
+ - Professional presentation with Bootstrap components
19
+ - Mobile-responsive design for all devices
20
+
21
+ Layout Features:
22
+ - Hero banner with call-to-action
23
+ - Feature cards with icons and descriptions
24
+ - Quick start guide and navigation
25
+ - Social proof and credibility indicators
26
+ - Clean, professional aesthetic
27
+
28
+ Target Audience:
29
+ - First-time visitors exploring the repository
30
+ - Developers looking for Jekyll themes
31
+ - Users seeking Docker-optimized solutions
32
+ - People interested in error-free development
33
+
34
+ Conversion Goals:
35
+ - Encourage exploration of documentation
36
+ - Drive adoption of the theme
37
+ - Build trust through professional presentation
38
+ - Guide users to relevant resources
11
39
 
12
- {{ content }}
40
+ Dependencies:
41
+ - Bootstrap 5 components and utilities
42
+ - Custom CSS for enhanced styling
43
+ - Responsive images and icons
44
+ ===================================================================
45
+ -->
46
+
47
+ <!-- ================================ -->
48
+ <!-- HERO SECTION -->
49
+ <!-- ================================ -->
50
+ <div class="bg-primary text-white">
51
+ <div class="container-xl py-5 px-4 px-md-5">
52
+ <div class="row align-items-center min-vh-50 g-4 g-lg-5">
53
+ <div class="col-lg-6">
54
+ <h1 class="display-4 fw-bold mb-3">{{ page.title }}</h1>
55
+ <p class="lead mb-4">{{ page.description }}</p>
56
+ <div class="d-flex flex-column flex-md-row gap-3">
57
+ <a href="#get-started" class="btn btn-light btn-lg">
58
+ <i class="bi bi-rocket-takeoff me-2"></i>Get Started
59
+ </a>
60
+ <a href="#features" class="btn btn-outline-light btn-lg">
61
+ <i class="bi bi-list-check me-2"></i>Features
62
+ </a>
63
+ <a href="{{ site.resources.github_repo }}" class="btn btn-outline-light btn-lg">
64
+ <i class="bi bi-github me-2"></i>GitHub
65
+ </a>
66
+ </div>
67
+ </div>
68
+ <div class="col-lg-6 text-center">
69
+ {% if page.hero_image %}
70
+ <img src="{{ page.hero_image }}" alt="{{ page.title }}" class="img-fluid rounded shadow-lg">
71
+ {% else %}
72
+ <div class="bg-light rounded p-5 text-dark">
73
+ <i class="bi bi-code-square display-1"></i>
74
+ <p class="mt-3 mb-0">Jekyll Theme</p>
75
+ </div>
76
+ {% endif %}
77
+ </div>
78
+ </div>
79
+ </div>
80
+ </div>
81
+
82
+ <!-- ================================ -->
83
+ <!-- MAIN CONTENT AREA -->
84
+ <!-- ================================ -->
85
+ {% include landing/landing-quick-links.html %}
86
+
87
+ <div class="container-xl py-5 px-4 px-md-5">
88
+ {{ content }}
89
+ </div>
90
+
91
+ <!-- ================================ -->
92
+ <!-- FEATURES SECTION -->
93
+ <!-- ================================ -->
94
+ <div class="py-5 bg-body-tertiary" id="features">
95
+ <div class="container-xl px-4 px-md-5">
96
+ <div class="row text-center mb-5">
97
+ <div class="col-lg-8 mx-auto">
98
+ <h2 class="display-5 fw-bold text-body-emphasis">Why Choose zer0-mistakes?</h2>
99
+ <p class="lead text-body-secondary">Built for developers who value reliability, simplicity, and modern workflows</p>
100
+ </div>
101
+ </div>
102
+
103
+ <div class="row g-4">
104
+ <div class="col-md-4">
105
+ <div class="card h-100 border-0 shadow-sm">
106
+ <div class="card-body text-center p-4">
107
+ <div class="bg-primary text-white rounded-circle d-inline-flex align-items-center justify-content-center mb-3" style="width: 60px; height: 60px;">
108
+ <i class="bi bi-shield-check fs-4"></i>
109
+ </div>
110
+ <h5 class="card-title text-body-emphasis">Error-Free Development</h5>
111
+ <p class="card-text text-body-secondary">Built-in error handling and self-healing installation process ensures a smooth development experience.</p>
112
+ </div>
113
+ </div>
114
+ </div>
115
+
116
+ <div class="col-md-4">
117
+ <div class="card h-100 border-0 shadow-sm">
118
+ <div class="card-body text-center p-4">
119
+ <div class="bg-success text-white rounded-circle d-inline-flex align-items-center justify-content-center mb-3" style="width: 60px; height: 60px;">
120
+ <i class="bi bi-boxes fs-4"></i>
121
+ </div>
122
+ <h5 class="card-title text-body-emphasis">Docker-First Approach</h5>
123
+ <p class="card-text text-body-secondary">Cross-platform compatibility with zero local configuration. Works on Apple Silicon, Intel, and Linux.</p>
124
+ </div>
125
+ </div>
126
+ </div>
127
+
128
+ <div class="col-md-4">
129
+ <div class="card h-100 border-0 shadow-sm">
130
+ <div class="card-body text-center p-4">
131
+ <div class="bg-info text-white rounded-circle d-inline-flex align-items-center justify-content-center mb-3" style="width: 60px; height: 60px;">
132
+ <i class="bi bi-lightning-charge fs-4"></i>
133
+ </div>
134
+ <h5 class="card-title text-body-emphasis">AI-Powered Setup</h5>
135
+ <p class="card-text text-body-secondary">Intelligent installation automation that detects and fixes common issues automatically.</p>
136
+ </div>
137
+ </div>
138
+ </div>
139
+ </div>
140
+ </div>
13
141
  </div>
14
142
 
15
- <!-- Features -->
16
- <!-- particles.js -->
17
- <script src="/assets/js/particles-source.js"></script>
18
- <script src="/assets/js/particles.js"></script>
143
+ <!-- ================================ -->
144
+ <!-- QUICK START SECTION -->
145
+ <!-- ================================ -->
146
+ <div class="container-xl py-5 px-4 px-md-5" id="get-started">
147
+ <div class="row">
148
+ <div class="col-12 col-xl-10 mx-auto text-center">
149
+ <h2 class="display-5 fw-bold mb-4">Ready to Get Started?</h2>
150
+ <p class="lead mb-4">Choose your preferred installation method and be up and running in minutes</p>
151
+ {% include landing/landing-install-cards.html %}
152
+ </div>
153
+ </div>
154
+ </div>
data/_layouts/root.html CHANGED
@@ -1,54 +1,89 @@
1
1
  ---
2
2
  ---
3
3
  <!--
4
- Zer0 Mistakes Jekyll Theme version 0.1 by Amr Abdel-Motaleb
5
- Copyright 2024 Amr Abdel-Motaleb - it-journey.com | @bamr87
6
- -->
7
-
8
- <!--
9
- file: root.html
10
- path:_layouts/root.html
11
- includes: head.html, google-tag-mgr.html, header.html, footer.html, algolia.html
4
+ ===================================================================
5
+ ROOT LAYOUT - Base template for the Zer0 Mistakes Jekyll Theme
6
+ ===================================================================
7
+
8
+ File: root.html
9
+ Path: _layouts/root.html
10
+ Purpose: Base HTML structure that all other layouts inherit from
11
+
12
+ Template Logic:
13
+ - Sets up the HTML document structure with Bootstrap 5 dark theme
14
+ - Includes essential meta tags and SEO optimization
15
+ - Loads external dependencies (CSS, JS, fonts)
16
+ - Provides the main content wrapper for child layouts
17
+ - Implements scroll spy for table of contents navigation
18
+
19
+ Dependencies:
20
+ - head.html: Meta tags, stylesheets, and external resources
21
+ - svg.html: Inline SVG symbols for icons
22
+ - header.html: Main navigation and site branding
23
+ - info-section.html: Site-wide announcements or notices
24
+ - footer.html: Site footer with links and copyright
25
+ - js-cdn.html: JavaScript dependencies and custom scripts
26
+
27
+ Theme: Zer0 Mistakes Jekyll Theme v0.1
28
+ Author: Amr Abdel-Motaleb
29
+ Copyright: 2024 - it-journey.com | @bamr87
30
+ ===================================================================
12
31
  -->
13
32
 
14
33
  <!doctype html>
15
- <html lang="{{ site.locale | slice: 0,2 | default: en }}" class="no-js" data-bs-theme="dark">
34
+ <html lang="{{ site.locale | slice: 0,2 | default: 'en' }}" class="no-js" data-bs-theme="dark">
16
35
  <head>
17
- <!-- _includes/head.html -->
18
- {% include head.html %}
36
+ <!-- =============================================== -->
37
+ <!-- HEAD SECTION: Meta tags, styles, and SEO setup -->
38
+ <!-- =============================================== -->
39
+
40
+ <!-- Core site metadata, stylesheets, and external dependencies -->
41
+ {% include core/head.html %}
19
42
 
20
- <!-- Jekyll-SEO Plugin https://github.com/jekyll/jekyll-seo-tag-->
43
+ <!-- Jekyll SEO plugin for enhanced search engine optimization -->
44
+ <!-- Documentation: https://github.com/jekyll/jekyll-seo-tag -->
21
45
  {% seo %}
22
-
23
46
  </head>
47
+
24
48
  <body data-bs-spy="scroll" data-bs-target="#TableOfContents">
49
+ <!-- ============================================== -->
50
+ <!-- BODY SECTION: Site structure and content area -->
51
+ <!-- ============================================== -->
52
+
53
+ <!-- Inline SVG symbols for consistent iconography throughout the site -->
54
+ {% include components/svg.html %}
25
55
 
26
- <!-- _includes/svg.html -->
27
- {% include svg.html %}
28
-
29
- <!-- _includes/google-tag-manager-body.html - SEO -->
30
-
56
+ <!-- Google Tag Manager body code for analytics (if configured) -->
57
+ <!-- Note: Currently commented out - uncomment when GTM is needed -->
31
58
 
32
- <!-- _includes/header.html - Header section with main Navigation and Search engine -->
33
- {% include header.html %}
59
+ <!-- Main site header with navigation, branding, and search functionality -->
60
+ {% include core/header.html %}
34
61
 
35
- {% include info-section.html %}
62
+ <!-- Site-wide information banner or announcement section -->
63
+ {% include components/info-section.html %}
36
64
 
37
- <!-- Content -->
65
+ <!-- ======================== -->
66
+ <!-- MAIN CONTENT AREA -->
67
+ <!-- ======================== -->
68
+ <!-- This is where child layouts inject their specific content -->
38
69
  <div>
39
70
  {{ content }}
40
71
  </div>
41
72
 
42
- <!-- _include/footer.html -->
43
- {%- include footer.html -%}
73
+ <!-- ======================== -->
74
+ <!-- FOOTER AND SCRIPTS -->
75
+ <!-- ======================== -->
76
+
77
+ <!-- Site footer with links, copyright, and additional navigation -->
78
+ {%- include core/footer.html -%}
44
79
 
45
- <!-- Javascript scripts -->
80
+ <!-- JavaScript dependencies and custom scripts -->
46
81
  <div>
47
- <!-- Search Engine -->
48
- <!-- _include/algolia.html -->
82
+ <!-- Search functionality (Algolia or similar) -->
83
+ <!-- Note: Currently commented out - uncomment when search is implemented -->
49
84
 
50
- <!-- Javascript CDN -->
51
- {% include js-cdn.html %}
85
+ <!-- External JavaScript libraries and custom scripts -->
86
+ {% include components/js-cdn.html %}
52
87
  </div>
53
88
  </body>
54
- </html>
89
+ </html>
@@ -1,24 +1,21 @@
1
- document.addEventListener('DOMContentLoaded', (event) => {
2
- let mybutton = document.getElementById("backToTopBtn");
1
+ document.addEventListener('DOMContentLoaded', () => {
2
+ const btn = document.getElementById('backToTopBtn');
3
+ if (!btn) return;
3
4
 
4
- function topFunction() {
5
- document.body.scrollTop = 0; // For Safari
6
- document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
7
- mybutton.style.opacity = "75%";
8
- }
5
+ // Smooth scroll to top and keep accessible
6
+ const scrollToTop = (e) => {
7
+ if (e) e.preventDefault();
8
+ window.scrollTo({ top: 0, behavior: 'smooth' });
9
+ };
9
10
 
10
- if (mybutton) {
11
- mybutton.onclick = topFunction;
12
- }
11
+ btn.addEventListener('click', scrollToTop);
13
12
 
14
- // When the user scrolls down 20px from the top of the document, show the button
15
- window.onscroll = function() {scrollFunction()};
13
+ const toggle = () => {
14
+ const y = window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0;
15
+ btn.style.display = y > 200 ? 'block' : 'none';
16
+ };
16
17
 
17
- function scrollFunction() {
18
- if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
19
- mybutton.style.display = "block";
20
- } else {
21
- mybutton.style.display = "none";
22
- }
23
- }
18
+ // Initialize state and bind listener without clobbering
19
+ toggle();
20
+ window.addEventListener('scroll', toggle, { passive: true });
24
21
  });