minecraft-datapack-language 17.0.10__py3-none-any.whl → 17.0.12__py3-none-any.whl

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 (43) hide show
  1. minecraft_datapack_language/_embedded/docs/404.html +42 -0
  2. minecraft_datapack_language/_embedded/docs/Gemfile +26 -0
  3. minecraft_datapack_language/_embedded/docs/README.md +84 -0
  4. minecraft_datapack_language/_embedded/docs/_config.yml +74 -0
  5. minecraft_datapack_language/_embedded/docs/_data/version.yml +3 -0
  6. minecraft_datapack_language/_embedded/docs/_docs/cli-reference.md +506 -0
  7. minecraft_datapack_language/_embedded/docs/_docs/contributing.md +352 -0
  8. minecraft_datapack_language/_embedded/docs/_docs/docs-hub.md +266 -0
  9. minecraft_datapack_language/_embedded/docs/_docs/documentation.md +135 -0
  10. minecraft_datapack_language/_embedded/docs/_docs/examples.md +194 -0
  11. minecraft_datapack_language/_embedded/docs/_docs/getting-started.md +230 -0
  12. minecraft_datapack_language/_embedded/docs/_docs/language-reference.md +1637 -0
  13. minecraft_datapack_language/_embedded/docs/_docs/multi-file-projects.md +221 -0
  14. minecraft_datapack_language/_embedded/docs/_docs/python-bindings.md +446 -0
  15. minecraft_datapack_language/_embedded/docs/_docs/vscode-extension.md +381 -0
  16. minecraft_datapack_language/_embedded/docs/_includes/head-custom.html +983 -0
  17. minecraft_datapack_language/_embedded/docs/_includes/navigation.html +362 -0
  18. minecraft_datapack_language/_embedded/docs/_layouts/default.html +27 -0
  19. minecraft_datapack_language/_embedded/docs/_layouts/page.html +281 -0
  20. minecraft_datapack_language/_embedded/docs/_plugins/test_version.rb +13 -0
  21. minecraft_datapack_language/_embedded/docs/_plugins/version_reader.rb +37 -0
  22. minecraft_datapack_language/_embedded/docs/assets/css/style.css +211 -0
  23. minecraft_datapack_language/_embedded/docs/docs.md +134 -0
  24. minecraft_datapack_language/_embedded/docs/downloads.md +444 -0
  25. minecraft_datapack_language/_embedded/docs/icons/favicon-16.png +0 -0
  26. minecraft_datapack_language/_embedded/docs/icons/favicon-32.png +0 -0
  27. minecraft_datapack_language/_embedded/docs/icons/favicon-48.png +0 -0
  28. minecraft_datapack_language/_embedded/docs/icons/favicon-64.png +0 -0
  29. minecraft_datapack_language/_embedded/docs/icons/icon-1024.png +0 -0
  30. minecraft_datapack_language/_embedded/docs/icons/icon-128.png +0 -0
  31. minecraft_datapack_language/_embedded/docs/icons/icon-256.png +0 -0
  32. minecraft_datapack_language/_embedded/docs/icons/icon-512.png +0 -0
  33. minecraft_datapack_language/_embedded/docs/icons/icon-64.png +0 -0
  34. minecraft_datapack_language/_embedded/docs/index.md +378 -0
  35. minecraft_datapack_language/_version.py +2 -2
  36. minecraft_datapack_language/cli.py +5 -1
  37. {minecraft_datapack_language-17.0.10.dist-info → minecraft_datapack_language-17.0.12.dist-info}/METADATA +1 -1
  38. minecraft_datapack_language-17.0.12.dist-info/RECORD +56 -0
  39. minecraft_datapack_language-17.0.10.dist-info/RECORD +0 -22
  40. {minecraft_datapack_language-17.0.10.dist-info → minecraft_datapack_language-17.0.12.dist-info}/WHEEL +0 -0
  41. {minecraft_datapack_language-17.0.10.dist-info → minecraft_datapack_language-17.0.12.dist-info}/entry_points.txt +0 -0
  42. {minecraft_datapack_language-17.0.10.dist-info → minecraft_datapack_language-17.0.12.dist-info}/licenses/LICENSE +0 -0
  43. {minecraft_datapack_language-17.0.10.dist-info → minecraft_datapack_language-17.0.12.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,362 @@
1
+ <!-- Main Navigation -->
2
+ <nav class="nav-menu" role="navigation" aria-label="Main Navigation">
3
+ <div class="nav-container">
4
+ <div class="nav-brand">
5
+ <a href="{{ "/" | relative_url }}" class="nav-logo">
6
+ <img src="{{ site.baseurl }}/icons/icon-64.png" alt="MDL" width="24" height="24">
7
+ <span>MDL</span>
8
+ </a>
9
+ </div>
10
+ <ul class="nav-list">
11
+ {%- assign top_level_items = site.nav | slice: 0, 4 -%}
12
+ {%- assign doc_items = site.nav | slice: 4, 5 -%}
13
+
14
+ {%- for item in top_level_items -%}
15
+ <li class="nav-item">
16
+ <a href="{{ item.url | relative_url }}" class="nav-link{% if page.url == item.url or page.url contains item.url %} active{% endif %}">{{ item.title }}</a>
17
+ </li>
18
+ {%- endfor -%}
19
+
20
+ <!-- Docs Hub -->
21
+ <li class="nav-item">
22
+ <a href="{{ "/docs/docs-hub/" | relative_url }}" class="nav-link{% if page.url contains '/docs/docs-hub/' %} active{% endif %}">Docs</a>
23
+ </li>
24
+
25
+ </ul>
26
+ <div class="nav-actions">
27
+ <button class="nav-icon-link theme-toggle" aria-label="Toggle dark mode" id="themeToggle">
28
+ <svg class="theme-icon sun-icon" width="48" height="48" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
29
+ <circle cx="12" cy="12" r="5"/>
30
+ <path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l-1.42-1.42"/>
31
+ </svg>
32
+ <svg class="theme-icon moon-icon" width="28" height="28" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
33
+ <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/>
34
+ </svg>
35
+ </button>
36
+ <a href="https://github.com/{{ site.github_username }}/{{ site.github_repo }}" class="nav-icon-link" aria-label="GitHub Repository" target="_blank" rel="noopener noreferrer">
37
+ <svg width="20" height="20" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true">
38
+ <path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>
39
+ </svg>
40
+ </a>
41
+ </div>
42
+ <button class="nav-toggle" aria-label="Toggle navigation menu">
43
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor">
44
+ <path d="M2 4h16v2H2V4zm0 5h16v2H2V9zm0 5h16v2H2v-2z"/>
45
+ </svg>
46
+ </button>
47
+ </div>
48
+ </nav>
49
+
50
+ <!-- Breadcrumb Navigation -->
51
+ {% if page.url != "/" %}
52
+ <nav class="breadcrumb-nav" aria-label="Breadcrumb">
53
+ <ol class="breadcrumb">
54
+ <li class="breadcrumb-item">
55
+ <a href="{{ "/" | relative_url }}" class="breadcrumb-link">
56
+ <svg class="breadcrumb-icon" width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
57
+ <path d="M8 0L0 6v10h6v-6h4v6h6V6L8 0z"/>
58
+ </svg>
59
+ Home
60
+ </a>
61
+ </li>
62
+ {% if page.url contains "/docs/" and page.url != "/docs/docs-hub/" %}
63
+ <li class="breadcrumb-item">
64
+ <a href="{{ "/docs/docs-hub/" | relative_url }}" class="breadcrumb-link">Docs</a>
65
+ </li>
66
+ {% endif %}
67
+ <li class="breadcrumb-item active" aria-current="page">
68
+ {{ page.title }}
69
+ </li>
70
+ </ol>
71
+ </nav>
72
+ {% endif %}
73
+
74
+ <style>
75
+ /* Main Navigation Styles */
76
+ .nav-menu {
77
+ background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
78
+ color: #ffffff;
79
+ padding: 0;
80
+ margin-bottom: 2rem;
81
+ box-shadow: 0 8px 20px rgba(2, 6, 23, 0.35);
82
+ position: sticky;
83
+ top: 0;
84
+ z-index: 1000;
85
+ }
86
+
87
+ .nav-container {
88
+ max-width: 1200px;
89
+ margin: 0 auto;
90
+ padding: 0 1rem;
91
+ display: flex;
92
+ align-items: center;
93
+ justify-content: space-between;
94
+ height: 60px;
95
+ position: relative;
96
+ }
97
+
98
+ .nav-brand {
99
+ display: flex;
100
+ align-items: center;
101
+ }
102
+
103
+ .nav-logo {
104
+ display: flex;
105
+ align-items: center;
106
+ gap: 0.5rem;
107
+ color: #ffffff;
108
+ text-decoration: none;
109
+ font-weight: 700;
110
+ font-size: 1.2rem;
111
+ letter-spacing: 0.2px;
112
+ }
113
+
114
+ .nav-logo:hover {
115
+ text-decoration: none;
116
+ color: #e2e8f0;
117
+ }
118
+
119
+ .nav-list {
120
+ display: flex;
121
+ list-style: none;
122
+ margin: 0;
123
+ padding: 0;
124
+ gap: 1rem;
125
+ align-items: center;
126
+ }
127
+
128
+ .nav-item {
129
+ margin: 0;
130
+ }
131
+
132
+ .nav-link {
133
+ color: rgba(255, 255, 255, 0.85);
134
+ text-decoration: none;
135
+ padding: 0.5rem 0.85rem;
136
+ border-radius: 999px;
137
+ transition: background-color 0.2s, color 0.2s;
138
+ font-weight: 500;
139
+ }
140
+
141
+ .nav-link:hover {
142
+ background: rgba(255, 255, 255, 0.12);
143
+ color: #ffffff;
144
+ text-decoration: none;
145
+ }
146
+
147
+ .nav-link.active {
148
+ background: rgba(255, 255, 255, 0.18);
149
+ color: #ffffff;
150
+ }
151
+
152
+ .nav-actions {
153
+ display: flex;
154
+ align-items: center;
155
+ gap: 0.5rem;
156
+ margin-left: 1rem;
157
+ }
158
+
159
+ .nav-icon-link {
160
+ display: inline-flex;
161
+ align-items: center;
162
+ justify-content: center;
163
+ color: #ffffff;
164
+ text-decoration: none;
165
+ padding: 0.35rem;
166
+ border-radius: 8px;
167
+ transition: background-color 0.2s;
168
+ }
169
+
170
+ .nav-icon-link:hover {
171
+ background: rgba(255, 255, 255, 0.12);
172
+ color: #ffffff;
173
+ }
174
+
175
+ /* Theme Toggle Button */
176
+ .theme-toggle {
177
+ background: none;
178
+ border: none;
179
+ cursor: pointer;
180
+ padding: 0.35rem;
181
+ border-radius: 8px;
182
+ transition: background-color 0.2s;
183
+ position: relative;
184
+ color: #ffffff;
185
+ width: 40px;
186
+ height: 40px;
187
+ }
188
+
189
+ .theme-toggle:hover {
190
+ background: rgba(255, 255, 255, 0.12);
191
+ }
192
+
193
+ .theme-icon {
194
+ transition: opacity 0.3s ease, transform 0.3s ease;
195
+ position: absolute;
196
+ top: 50%;
197
+ left: 50%;
198
+ transform: translate(-50%, -50%);
199
+ }
200
+
201
+ .theme-icon.sun-icon {
202
+ opacity: 1;
203
+ transform: translate(-50%, -50%) rotate(0deg);
204
+ }
205
+
206
+ .theme-icon.moon-icon {
207
+ opacity: 0;
208
+ transform: translate(-50%, -50%) rotate(-90deg);
209
+ }
210
+
211
+ /* Dark mode styles for theme toggle */
212
+ [data-theme="dark"] .theme-icon.sun-icon {
213
+ opacity: 0;
214
+ transform: translate(-50%, -50%) rotate(90deg);
215
+ }
216
+
217
+ [data-theme="dark"] .theme-icon.moon-icon {
218
+ opacity: 1;
219
+ transform: translate(-50%, -50%) rotate(0deg);
220
+ }
221
+
222
+ .nav-toggle {
223
+ display: none;
224
+ background: none;
225
+ border: none;
226
+ color: #ffffff;
227
+ cursor: pointer;
228
+ padding: 0.5rem;
229
+ border-radius: 8px;
230
+ transition: background-color 0.2s;
231
+ }
232
+
233
+ .nav-toggle:hover {
234
+ background: rgba(255, 255, 255, 0.12);
235
+ }
236
+
237
+ /* Responsive Design */
238
+ @media (max-width: 768px) {
239
+ .nav-menu {
240
+ position: static;
241
+ margin-bottom: 1rem;
242
+ }
243
+
244
+ .nav-list {
245
+ display: none;
246
+ position: absolute;
247
+ top: 60px;
248
+ left: 0;
249
+ right: 0;
250
+ background: linear-gradient(135deg, #0b1220 0%, #131c2b 100%);
251
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
252
+ flex-direction: column;
253
+ padding: 1rem;
254
+ box-shadow: 0 10px 20px rgba(2,6,23,0.35);
255
+ max-height: 60vh;
256
+ overflow-y: auto;
257
+ -webkit-overflow-scrolling: touch;
258
+ }
259
+
260
+ .nav-list.show {
261
+ display: flex;
262
+ }
263
+
264
+ .nav-toggle {
265
+ display: block;
266
+ }
267
+
268
+ .nav-actions {
269
+ margin-left: 0.5rem;
270
+ }
271
+ }
272
+ </style>
273
+
274
+ <script>
275
+ // Theme Toggle Functionality
276
+ document.addEventListener('DOMContentLoaded', function() {
277
+ const themeToggle = document.getElementById('themeToggle');
278
+ const html = document.documentElement;
279
+
280
+ // Get saved theme or default to system preference
281
+ const savedTheme = localStorage.getItem('theme');
282
+ const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
283
+
284
+ // Set initial theme
285
+ if (savedTheme) {
286
+ html.setAttribute('data-theme', savedTheme);
287
+ } else if (systemPrefersDark) {
288
+ html.setAttribute('data-theme', 'dark');
289
+ } else {
290
+ html.setAttribute('data-theme', 'light');
291
+ }
292
+
293
+ // Theme toggle click handler
294
+ if (themeToggle) {
295
+ themeToggle.addEventListener('click', function() {
296
+ const currentTheme = html.getAttribute('data-theme');
297
+ const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
298
+
299
+ html.setAttribute('data-theme', newTheme);
300
+ localStorage.setItem('theme', newTheme);
301
+
302
+ // Update aria-label
303
+ themeToggle.setAttribute('aria-label', newTheme === 'dark' ? 'Switch to light mode' : 'Switch to dark mode');
304
+
305
+ // Dispatch custom event for other scripts to listen to
306
+ document.dispatchEvent(new CustomEvent('themeChanged', { detail: { theme: newTheme } }));
307
+
308
+ // Force re-highlight code blocks with new theme
309
+ if (typeof Prism !== 'undefined') {
310
+ setTimeout(() => {
311
+ Prism.highlightAll();
312
+ }, 100);
313
+ }
314
+ });
315
+ }
316
+
317
+ // Listen for system theme changes
318
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function(e) {
319
+ if (!localStorage.getItem('theme')) {
320
+ html.setAttribute('data-theme', e.matches ? 'dark' : 'light');
321
+ document.dispatchEvent(new CustomEvent('themeChanged', { detail: { theme: e.matches ? 'dark' : 'light' } }));
322
+ }
323
+ });
324
+ });
325
+
326
+ // Mobile Navigation Toggle
327
+ document.addEventListener('DOMContentLoaded', function() {
328
+ const toggle = document.querySelector('.nav-toggle');
329
+ const navList = document.querySelector('.nav-list');
330
+
331
+ if (toggle && navList) {
332
+ toggle.addEventListener('click', function() {
333
+ navList.classList.toggle('show');
334
+ toggle.setAttribute('aria-expanded', navList.classList.contains('show') ? 'true' : 'false');
335
+ });
336
+
337
+ // Close mobile menu when clicking outside
338
+ document.addEventListener('click', function(event) {
339
+ if (!toggle.contains(event.target) && !navList.contains(event.target)) {
340
+ navList.classList.remove('show');
341
+ toggle.setAttribute('aria-expanded', 'false');
342
+ }
343
+ });
344
+
345
+ // Close on link click to free screen space on mobile
346
+ navList.querySelectorAll('a.nav-link').forEach(function(link) {
347
+ link.addEventListener('click', function() {
348
+ navList.classList.remove('show');
349
+ toggle.setAttribute('aria-expanded', 'false');
350
+ });
351
+ });
352
+
353
+ // Close on Escape key
354
+ document.addEventListener('keydown', function(event) {
355
+ if (event.key === 'Escape') {
356
+ navList.classList.remove('show');
357
+ toggle.setAttribute('aria-expanded', 'false');
358
+ }
359
+ });
360
+ }
361
+ });
362
+ </script>
@@ -0,0 +1,27 @@
1
+ <!DOCTYPE html>
2
+ <html lang="{{ site.lang | default: "en" }}" data-theme="light">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+
8
+ {% seo %}
9
+ <link rel="stylesheet" href="{{ "/assets/css/style.css?v=" | append: site.github.build_revision | relative_url }}">
10
+ {% include head-custom.html %}
11
+ </head>
12
+ <body>
13
+ <!-- Include Enhanced Navigation -->
14
+ {% include navigation.html %}
15
+
16
+ <main id="content" class="main-content" role="main">
17
+ {{ content }}
18
+
19
+ <footer class="site-footer">
20
+ {% if site.github.is_project_page %}
21
+ <span class="site-footer-owner"><a href="{{ site.github.repository_url }}">{{ site.github.repository_name }}</a> is maintained by <a href="{{ site.github.owner_url }}">{{ site.github.owner_name }}</a>.</span>
22
+ {% endif %}
23
+ <span class="site-footer-credits">This page was generated by <a href="https://pages.github.com">GitHub Pages</a>.</span>
24
+ </footer>
25
+ </main>
26
+ </body>
27
+ </html>
@@ -0,0 +1,281 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <div class="page-content">
6
+ <div class="wrapper">
7
+ <article class="post">
8
+ <header class="post-header">
9
+ <h1 class="post-title">{{ page.title | escape }}</h1>
10
+ {% if page.description %}
11
+ <p class="post-description">{{ page.description }}</p>
12
+ {% endif %}
13
+ </header>
14
+
15
+ <div class="post-content">
16
+ {{ content }}
17
+ </div>
18
+
19
+ <!-- Page Navigation Footer -->
20
+ <footer class="post-footer">
21
+ <div class="post-navigation">
22
+ <a href="{{ "/" | relative_url }}" class="btn btn-primary">
23
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" style="margin-right: 0.5rem;">
24
+ <path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z"/>
25
+ <path d="M7 4h2v6H7z"/>
26
+ <path d="M4 7h6v2H4z"/>
27
+ </svg>
28
+ Back to Home
29
+ </a>
30
+ </div>
31
+ </footer>
32
+ </article>
33
+ </div>
34
+ </div>
35
+
36
+ <!-- Back to Top Button -->
37
+ <button id="back-to-top" class="back-to-top" aria-label="Back to top">
38
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor">
39
+ <path d="M10 0L3 7h4v13h6V7h4L10 0z"/>
40
+ </svg>
41
+ </button>
42
+
43
+ <style>
44
+ .page-content {
45
+ padding: 2rem 0;
46
+ }
47
+
48
+ .wrapper {
49
+ max-width: 1200px;
50
+ margin: 0 auto;
51
+ padding: 0 1rem;
52
+ }
53
+
54
+ .post {
55
+ background: white;
56
+ border-radius: 8px;
57
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
58
+ padding: 2rem;
59
+ }
60
+
61
+ .post-header {
62
+ margin-bottom: 2rem;
63
+ border-bottom: 2px solid #e1e4e8;
64
+ padding-bottom: 1rem;
65
+ }
66
+
67
+ .post-title {
68
+ color: #24292e;
69
+ font-size: 2rem;
70
+ margin: 0;
71
+ }
72
+
73
+ .post-description {
74
+ color: #586069;
75
+ font-size: 1.1rem;
76
+ margin: 0.5rem 0 0 0;
77
+ }
78
+
79
+ .post-content {
80
+ line-height: 1.6;
81
+ color: #24292e;
82
+ }
83
+
84
+ .post-content h1,
85
+ .post-content h2,
86
+ .post-content h3,
87
+ .post-content h4,
88
+ .post-content h5,
89
+ .post-content h6 {
90
+ color: #24292e;
91
+ margin-top: 2rem;
92
+ margin-bottom: 1rem;
93
+ }
94
+
95
+ .post-content h1 {
96
+ font-size: 1.8rem;
97
+ border-bottom: 2px solid #e1e4e8;
98
+ padding-bottom: 0.5rem;
99
+ }
100
+
101
+ .post-content h2 {
102
+ font-size: 1.5rem;
103
+ border-bottom: 1px solid #e1e4e8;
104
+ padding-bottom: 0.3rem;
105
+ }
106
+
107
+ .post-content h3 {
108
+ font-size: 1.3rem;
109
+ }
110
+
111
+ .post-content code {
112
+ background: #f6f8fa;
113
+ padding: 0.2rem 0.4rem;
114
+ border-radius: 3px;
115
+ font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
116
+ }
117
+
118
+ .post-content pre {
119
+ background: #f6f8fa;
120
+ padding: 1rem;
121
+ border-radius: 6px;
122
+ overflow-x: auto;
123
+ border: 1px solid #e1e4e8;
124
+ }
125
+
126
+ .post-content pre code {
127
+ background: none;
128
+ padding: 0;
129
+ }
130
+
131
+ .post-content blockquote {
132
+ border-left: 4px solid #0366d6;
133
+ padding-left: 1rem;
134
+ margin: 1rem 0;
135
+ color: #586069;
136
+ }
137
+
138
+ .post-content table {
139
+ border-collapse: collapse;
140
+ width: 100%;
141
+ margin: 1rem 0;
142
+ }
143
+
144
+ .post-content th,
145
+ .post-content td {
146
+ border: 1px solid #e1e4e8;
147
+ padding: 0.5rem;
148
+ text-align: left;
149
+ }
150
+
151
+ .post-content th {
152
+ background: #f6f8fa;
153
+ font-weight: 600;
154
+ }
155
+
156
+ .post-content ul,
157
+ .post-content ol {
158
+ padding-left: 2rem;
159
+ }
160
+
161
+ .post-content li {
162
+ margin: 0.5rem 0;
163
+ }
164
+
165
+ /* Post Footer Navigation */
166
+ .post-footer {
167
+ margin-top: 3rem;
168
+ padding-top: 2rem;
169
+ border-top: 1px solid #e1e4e8;
170
+ }
171
+
172
+ .post-navigation {
173
+ display: flex;
174
+ justify-content: center;
175
+ }
176
+
177
+ .btn {
178
+ display: inline-flex;
179
+ align-items: center;
180
+ padding: 0.75rem 1.5rem;
181
+ font-size: 1rem;
182
+ font-weight: 500;
183
+ text-decoration: none;
184
+ border-radius: 6px;
185
+ transition: all 0.2s;
186
+ border: none;
187
+ cursor: pointer;
188
+ }
189
+
190
+ .btn-primary {
191
+ background: #0366d6;
192
+ color: white;
193
+ }
194
+
195
+ .btn-primary:hover {
196
+ background: #0256b3;
197
+ text-decoration: none;
198
+ transform: translateY(-1px);
199
+ box-shadow: 0 4px 8px rgba(0,0,0,0.1);
200
+ }
201
+
202
+ /* Back to Top Button */
203
+ .back-to-top {
204
+ position: fixed;
205
+ bottom: 2rem;
206
+ left: 2rem;
207
+ background: #0366d6;
208
+ color: white;
209
+ border: none;
210
+ border-radius: 50%;
211
+ width: 48px;
212
+ height: 48px;
213
+ cursor: pointer;
214
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
215
+ transition: all 0.2s;
216
+ opacity: 0;
217
+ visibility: hidden;
218
+ z-index: 999;
219
+ display: flex;
220
+ align-items: center;
221
+ justify-content: center;
222
+ }
223
+
224
+ .back-to-top.show {
225
+ opacity: 1;
226
+ visibility: visible;
227
+ }
228
+
229
+ .back-to-top:hover {
230
+ background: #0256b3;
231
+ transform: translateY(-2px);
232
+ box-shadow: 0 6px 16px rgba(0,0,0,0.2);
233
+ }
234
+
235
+ @media (max-width: 768px) {
236
+ .wrapper {
237
+ padding: 0 0.5rem;
238
+ }
239
+
240
+ .post {
241
+ padding: 1rem;
242
+ }
243
+
244
+ .post-title {
245
+ font-size: 1.5rem;
246
+ }
247
+
248
+ .back-to-top {
249
+ bottom: 1rem;
250
+ left: 1rem;
251
+ width: 40px;
252
+ height: 40px;
253
+ }
254
+ }
255
+ </style>
256
+
257
+ <script>
258
+ // Back to Top Button
259
+ document.addEventListener('DOMContentLoaded', function() {
260
+ const backToTop = document.getElementById('back-to-top');
261
+
262
+ if (backToTop) {
263
+ // Show/hide button based on scroll position
264
+ window.addEventListener('scroll', function() {
265
+ if (window.pageYOffset > 300) {
266
+ backToTop.classList.add('show');
267
+ } else {
268
+ backToTop.classList.remove('show');
269
+ }
270
+ });
271
+
272
+ // Smooth scroll to top when clicked
273
+ backToTop.addEventListener('click', function() {
274
+ window.scrollTo({
275
+ top: 0,
276
+ behavior: 'smooth'
277
+ });
278
+ });
279
+ }
280
+ });
281
+ </script>
@@ -0,0 +1,13 @@
1
+ module Jekyll
2
+ class TestVersion < Generator
3
+ safe true
4
+ priority :low
5
+
6
+ def generate(site)
7
+ puts "🔍 Version Reader Test:"
8
+ puts " Current version: #{site.config['current_version']}"
9
+ puts " GitHub latest release: #{site.config['github']['latest_release']['tag_name'] if site.config['github'] && site.config['github']['latest_release']}"
10
+ puts " GitHub releases count: #{site.config['github']['releases'].size if site.config['github'] && site.config['github']['releases']}"
11
+ end
12
+ end
13
+ end